Thermite

The error tracker your agent works in.

Drop-in for any Sentry SDK, self-hosted on your Postgres. A coding agent picks up each new issue over MCP and leaves its diagnosis and a pull request on the issue page.

# the only change
SENTRY_DSN=https://<key>@thermite.rs/1

The crash, the agent's diagnosis, and the pull request that fixes it.

Thermite's issue page: a TypeError from checkout/pricing.py, an analysis posted by claude-code with high confidence against release 1.1.0, a Review the fix button linking to a pull request, and tag distributions for environment, release and server.

Open this in the live demo

From crash to diagnosis

Thermite never calls a model. It hands the work to your own coding agent — leased, so two agents never triage the same bug twice.

1

An exception lands

Any Sentry SDK reports it. Grouping folds an error storm into one issue and queues exactly one unit of triage work — in the same transaction, so nothing slips through.

2

Your agent claims it

Over MCP it gets the exception chain, every stack frame, breadcrumbs — and the release that crashed, so it diagnoses against the revision that actually broke. Claude Code, Cursor, Codex, or anything that speaks MCP.

3

The diagnosis comes back

Root cause and suggested fix land on the issue page, next to the alert that told you. You read the answer, not the stack trace.

And the rest of an error tracker

The parts you would leave Sentry for, not just the part that is new.

Triage over MCP

An MCP server serves issues, stack traces and tags to coding agents, which write their findings back onto the issue.

Drop-in for Sentry SDKs

Point your existing DSN at Thermite. Same envelope and store endpoints, same SDKs, no code change.

Grouping that holds

Fingerprints normalize ids, IPs and durations, so one bug stays one issue instead of a thousand.

Alerts per project

Email and webhook routing, per project. Delivery is at-least-once from an outbox, so no alert is dropped in silence.

Cron monitoring

Jobs check in on their schedule. A missed or overrunning run becomes an ordinary error event, grouped and alerted like any other.

Release health

Crash-free rate per release, counted from SDK sessions, so a busy release does not read as a broken one.

Questions before you switch

Do I have to change code?

No. Point the DSN in your existing SDK config at Thermite. Same envelope and store endpoints, so the SDK cannot tell the difference.

Which SDKs work?

Any Sentry SDK, unmodified: sentry-python, @sentry/browser, sentry-rust, and the rest. Services already on OpenTelemetry can send OTLP logs instead — ERROR and above become events.

Which agents can triage?

Anything that speaks MCP: Claude Code, Cursor, Codex, or a script of your own. Claude Code connects with an API key; claude.ai connects over OAuth.

Does Thermite send my errors to a model?

Never. It calls no model at all. It queues each new issue, and your own agent — running on your machine under your key — claims it over MCP and writes the diagnosis back.

What if I don't use agents yet?

It is a complete error tracker on its own: grouping, alerts by email and webhook, cron monitoring, release health. The triage queue just waits.

What do I need to self-host?

One binary and a Postgres. No Kafka, no ClickHouse, no dozen containers. AGPL-3.0, free for any use including inside your company.

Point a DSN at it.

Free for 1,000 errors a month, self-hosted for nothing.