Loading...
Incident Intelligence · v2.9

Every incidentleaves a trail.

BlameTrail correlates production incidents to the recent deploys most likely to have caused them, scores each candidate commit against the failing service, and drafts a fix PR — reviewer tagged, tests green — through your own GitHub token.

Correlation in seconds
PRs through your own token
Free tier · no card
incident · INC-2087
07:42:13ALERTNullPointerException in checkout.service:L147
07:42:14TRACEdeploy 9f3b21a · shipped 42m ago
07:42:15BLAMEcommit by @s.chen cart/checkout.ts
07:42:18FIXPR #284 opened with proposed patch
07:43:02SHIPresolved · human-reviewed, merged
001 · Thesis

Alerting is the easy part. Resolving is the work.

Most incident tools wake you up and hand you a runbook. We wake you up and hand you the guilty commit.

When a production error fires at 3 a.m., the question is never "did something break?" — the dashboard already told you that. The question is: what changed, who shipped it, and how do we undo the damage?

BlameTrail is the answer layer. It correlates alerts with deploys, diffs the releases, pinpoints the offending commit, and drafts a fix — with a PR opened against your repo before an on-call engineer has finished their coffee.

No more bisecting. No more git log archaeology. No more "who touched the checkout service last week?"

002 · How it works

Three steps, built into the workflow.

01 · CORRELATE

Match the alert to the deploy.

The moment Sentry, Grafana, or a custom webhook fires, BlameTrail cross-references your deploy history. Stack trace in. Candidate releases out.

sentry.event release v2.14.3
deploy.time T-42m ✓ in window
02 · BLAME

Isolate the guilty commit.

Our commit analysis pipeline diffs the release, scores each change against the failing stack frame, and returns the file, line, and author with a confidence weight.

candidates 7 commits
winner 9f3b21a 0.94 conf
03 · RESOLVE

Ship the fix, not a ticket.

The patch pipeline drafts a revert or a small fix via an OpenAI model (default gpt-5-mini; configurable). A PR lands in your repo with the commit author auto-requested as reviewer — all before the Slack thread hits ten replies.

patch.generated +14 / −6
PR #284 ✓ opened
003 · Under the hood

Five services. One paper trail.

trail.pipeline · typed, BullMQ-backed, at-least-onceruntime · varies
node · 01

Event ingest

sentrygrafanadatadogcloudwatchprometheusgeneric
Normalizes inbound alerts into a typed incident envelope. Dedup + fingerprint grouping + auto-resolve after 24h.
node · 02

Deploy correlator

deploy webhookgithub enrichment
Generic deploy webhook tracks every release by SHA, branch, and author. GitHub commit + PR + file enrichment on top.
node · 03

Suspect scoring

proximitylocalityblast radius
Every candidate deploy scored by time proximity, touched files, and changed-line count. Commit analysis reads the diff hunks themselves.
node · 04

Patch pipeline

openaiguardrailsdedupe
OpenAI model (default gpt-5-mini, configurable) drafts a revert or a small fix. Rate-limit atomicity + duplicate-notification dedup.
node · 05

Delivery

prslackpaging
Opens a PR through your GitHub token with the commit author requested as reviewer. Fans out to Slack + SMS/voice paging. Every action audit-logged.
queue · BullMQ on Redisdeployment · single-region, self-hostdelivery · at-least-oncebuild · v2.9 — 2026.04.20
004 · The Fix

We don't just point. We patch.

cart/checkout.ts · before9f3b21a
function getTotal(cart) {
  return cart.items.reduce((a, b) => a + b.price);
}
× crashes on empty cart
cart/checkout.ts · afterPR #284
function getTotal(cart) {
  if (!cart?.items?.length) return 0;
  return cart.items.reduce((a, b) => a + b.price, 0);
}
✓ drafted by BlameTrail · 2.1s
005 · A worked example

What a minute looks like.

Hypothetical · checkout total crashes on empty cart

Scenario · illustrative
Data · fabricated
Pipeline · real
  1. T+0Sentry fires — checkout 5xx spike
  2. T+1sDeploy 9f3b21a flagged as a candidate
  3. T+2sSuspect score → cart/checkout.ts
  4. T+5sPatch drafted · OpenAI model
  5. T+8sPR opened · commit author tagged as reviewer
  6. T+33sYour CI runs · reviewer approves
  7. T+49sMerged through your own merge path

This is not a real customer incident— we're a new product. It's the shape of the pipeline, with the real steps and the real order.

A hypothetical refactor strips the accumulator seed from a reduce call in the cart service. An empty-cart session hits production and checkout starts returning 500s.

BlameTrail correlates the Sentry event with the recent release, scores every commit in the range, and returns a ranked candidate with a confidence. The patch pipeline drafts a fix, opens a PR through your GitHub token, and requests the commit author as reviewer. The merge path is yours — BlameTrail does not auto-merge.

What's real
The pipeline
ingest → correlate → score → draft → PR
What's illustrative
The timing
depends on your CI + model
What you own
The merge
no auto-merge, ever

NOTE · we're early-stage and don't yet have customer testimonials. When we do, they'll go here — attributed and opt-in.

006 · Stack

Plugs into the tools your team already runs.

GitHub/Sentry/Grafana/Jira/Datadog/Twelve more

Alerts ingest from Prometheus, Datadog, Grafana, CloudWatch, Sentry, and the generic webhook. Traces pulled from Tempo, Jaeger, Honeycomb, New Relic, Elastic, X-Ray, and Lightstep. SAML + SCIM via WorkOS on Enterprise. Full list (with honest "planned" flags) on the integrations page →

007 · The Field

The incumbents alert. We resolve.

Auto-correlate to commitAI-drafted fixPR opened automaticallyStarts at
BlameTrail● yes● yes● yes$0 · free tier
PagerDuty○ no○ no○ no$21/user/mo
Incident.io◐ partial○ no○ no$20/responder/mo
FireHydrant◐ partial○ no○ no$20/user/mo

Pricing reflects publicly listed tiers. BlameTrail is a fraction of the cost — and resolves, not just notifies.

008 · Trust

Controls that run on every request.

Encrypted secrets

AES-256-GCM for observability credentials, webhook signing secrets, and alert ingest tokens. Tokens returned once, stored as SHA-256 hashes.

key · per deployment, not per tenant

SSO & SAML

GitHub and Google OAuth on every plan. SAML + SCIM via WorkOS on Enterprise — Okta, Azure AD, Google Workspace, JumpCloud, OneLogin.

identity · WorkOS

Tenant RBAC

Owner / Admin / Member / Viewer roles at the tenant level. Per-repo and per-environment granularity is on the roadmap, not shipped.

scope · per-tenant today

Hash-chained audit log

Every mutation lands in audit_events with a SHA-256 link to the prior event. Export to CSV/NDJSON on demand; verify integrity via /audit-log/verify.

retention · configurable, 12mo default

SSRF guard

Every outbound URL validated: RFC1918, loopback, link-local, cloud metadata endpoints blocked. DNS re-checked at query time, not just at write.

checks · URL + DNS, twice

Honest posture

No SOC 2, no ISO 27001, no HIPAA BAA yet. No executed DPA template. We're early-stage and we're not going to pretend. Email [email protected] if procurement needs to hear it from us directly.

status · pre-certification
009 · Pricing

Priced like a runbook, not a sales quota.

Free

Free

$0/month · forever
1 service · 2 monitors
  • 60-second check intervals
  • 7-day incident history
  • 3 commit analyses / month
  • Slack notifications · 1 webhook endpoint
  • AI summaries & postmortems
  • On-call paging · SSO
Team

Pro.

$99/month · flat
100 monitors · no per-seat
  • AI-drafted fix + revert PRs · 200 / mo
  • 200 AI summaries + commit analyses / mo
  • 15-second intervals · 90-day history
  • 25 alert ingest tokens · 2,000 pages / mo
  • Trace correlation — Tempo, Jaeger, X-Ray, and more
  • Auto-drafted postmortems · diff-aware summaries
Enterprise

Fleet

Custom
Unlimited · self-host ready
  • Self-host via Docker Compose
  • BYO LLM keys · pick your provider
  • Custom audit retention + export cadence
  • Direct support · named contact
  • Custom contract terms on request

Flat pricing · no per-responder fees · no usage cliff. See the full schedule →

010 · Questions

Things on-call engineers always ask.

Do you actually read our source code?+

When a commit is a suspect, we fetch its diff through your GitHub access token. We persist the patch excerpts(not whole files) for the suspect-scoring window and commit analysis; retention follows your plan's data-retention schedule. We do not clone your repo and we never train on your data.

Today we install with a github_access_token stored encrypted on the tenant record. It needs contents:write and pull_requests:write (required to open PRs from a branch). A proper GitHub App with scoped permissions is on the roadmap.

What's the false-positive rate on the blame?+

We don't have customer benchmarks to cite yet — we are an early-stage product. The blame output is always a ranked list of candidate commits with a confidence score, and it is framed as evidence, not an accusation. The human reviewing the PR makes the call.

Does a patch auto-merge?+

No. BlameTrail opens a PR through your token with the commit author auto-requested as reviewer. The merge is always human. We do not bypass branch protection.

What happens if the guilty commit is mine?+

The PR body is structured and factual: which file, which hunk, which confidence score, which incident. It cites the diff, not the author. You're simply the person auto-requested as reviewer because you wrote the suspect commit.

Which LLMs do you use and can I bring my own keys?+

Default model is gpt-5-mini, configurable via OPENAI_MODEL. The whole pipeline is OpenAI-only today — we do not yet call Anthropic, AWS Bedrock, Azure OpenAI, or on-prem vLLM. Per-tenant LLM keys and alternative providers are on the roadmap, not shipped.

Stop chasing incidents.
Start catching them.

Free tier includes 2 monitors, 7-day incident history, and Slack notifications. Add a GitHub token, wire a deploy webhook, point Sentry or your Alertmanager at the ingest endpoint. No credit card, no sales call — click through the demo first if you want to see the shape of it.