Blog

News & engineering notes

Product releases, monitoring know-how and behind-the-scenes notes from the Sentrinel team.

NEW September 11, 2026 · 5 min read

Monitoring Django without adding a dependency

A Django SDK with no runtime dependencies, tested from Django 3.1 to 5.2 — and the two bugs that only appeared once we pointed it at a real API.

SR Sentrinel Team Read article →
$ sentrinel issues --status unresolved
1. TypeError: cannot read 'total' of undefined
orders.ts:createOrder · 41× · 12 users · HTTP 500
$ sentrinel issue 5f3a2c…
# stack trace, request body, trace id →
September 7, 2026 · 4 min read

The install instruction that only worked for us

Our setup command pointed at a checkout of a private repo. Fixing it turned out to be less about packaging than about where the API key lives.

September 6, 2026 · 4 min read

Your coding agent can read production now

An MCP server and a CLI that hand Claude Code, Codex and friends your issues, logs and traces — on a key that can see one app and do nothing else.

September 5, 2026 · 4 min read

One key, one integration

A key inside a phone, on a database host and in an agent's config each leak differently. Now each can only do its own job — and existing keys keep working.

September 4, 2026 · 3 min read

Five days without a broker

Our durable ingest log was deleted out from under us and the fallback made things slower, not safer. Ingest now fails over in both directions — and skips what it just watched fail.

September 3, 2026 · 3 min read

The CORS error that wasn't

A 502 carries no CORS headers, so the browser blames the wrong layer. What we found underneath, and why any origin may now call the API without weakening the session.

September 2, 2026 · 3 min read

The health check that lied

/health said ok while every ClickHouse query failed to authenticate. Where the user went, why 'degraded' is not 'down', and what /health reports now.

August 30, 2026 · 3 min read

Every signal knows whose it is

Requests, logs, errors, traces and replays each store the user they belonged to, instead of finding out by joining back later — because the join gets shorter as data ages out.

August 28, 2026 · 3 min read

"facade" is not an id

Fifty user ids on one route must be one endpoint, and a six-letter English word must not become a wildcard. The rule that keeps the endpoint list countable.

August 26, 2026 · 4 min read

What your Postgres is waiting for

Wait events sampled every second, blocking chains, the queries that own your CPU, and bloat — from a collector you run next to the database, on a key that can send nothing else.

August 24, 2026 · 3 min read

Is this release crashing? Release health for Flutter

Crash-free sessions and users per release, crashes that survive the crash, app start and frozen frames, and events on the phone that line up with the backend.

August 22, 2026 · 3 min read

Two questions about one LLM call

'Why was it slow?' is a trace. 'What did it cost?' is a metric. Priced GenAI spans answer the first per call; counters answer the second per model, per customer, per month.

August 20, 2026 · 3 min read

The property read that drained the request

Reading one header inside an afterResponse hook made every typed route lose its telemetry. Elysia's lazy context, and the fix that had to be by identity, not by value.

August 19, 2026 · 5 min read

"What did we spend?" — custom metrics in Sentrinel

Tracing says why a call was slow. It cannot say what it cost. Counters, gauges and histograms that fold in-process, so recording a metric per token is a normal thing to do.

August 19, 2026 · 4 min read

Session replay that records almost nothing

A rolling buffer that uploads only when something breaks, masked by default — and the two silent bugs we hit building it.

August 9, 2026 · 8 min read

Monitoring Flutter apps end-to-end with Sentrinel

Real-time monitoring, crash reporting and a trace that starts on the phone and continues into your backend.

August 2, 2026 · 9 min read

Monitoring your API with Sentrinel: Elysia, Express, and beyond

Adding production-ready monitoring to any JavaScript or TypeScript backend, in about five minutes.