Culprit
Culprit / Alert Intelligence

Your alert firehose, collapsed into incidents
and explained.

Culprit ingests your alert firehose, correlates noise into a handful of real incidents, writes the probable root cause, and routes it where your team already lives. Customer hostnames, emails, and API keys are tokenized at the edge before any of that touches an LLM — so you get the AI without the breach-disclosure risk.

100 alerts → 5 incidentsProbable RCA in 60s0 PII to the LLM

Alerts · live

firehose
  • 13:47:02checkout-apiHTTP 500 — connection refused (×4)
  • 13:47:02postgrespgbouncer: <HOST_a3> exhausted — no_connections (max=512)
  • 13:47:03cart-apiHTTP 503 — upstream timeout
  • 13:47:03checkout-apip95 latency 4200ms (SLO 800ms)
  • 13:47:04shipping-apidependent service cart-api returning 503
  • 13:47:04deploy<SVC_b1> rolled out — git@<COMMIT_d2>
  • 13:47:05rediseviction storm — 15k keys/s
  • 13:47:05cdn-edgep99 latency 1.2s (SLO 200ms)
  • 13:47:06auth-apitoken refresh storm — 412 retries/s
  • 13:47:06auth-api<USER_e8> failed login (×9)
  • 13:47:07inventoryHTTP 502 — backend unreachable
  • 13:47:07checkout-apiHTTP 500 — connection refused (×2)
  • 13:47:02checkout-apiHTTP 500 — connection refused (×4)
  • 13:47:02postgrespgbouncer: <HOST_a3> exhausted — no_connections (max=512)
  • 13:47:03cart-apiHTTP 503 — upstream timeout
  • 13:47:03checkout-apip95 latency 4200ms (SLO 800ms)
  • 13:47:04shipping-apidependent service cart-api returning 503
  • 13:47:04deploy<SVC_b1> rolled out — git@<COMMIT_d2>
  • 13:47:05rediseviction storm — 15k keys/s
  • 13:47:05cdn-edgep99 latency 1.2s (SLO 200ms)
  • 13:47:06auth-apitoken refresh storm — 412 retries/s
  • 13:47:06auth-api<USER_e8> failed login (×9)
  • 13:47:07inventoryHTTP 502 — backend unreachable
  • 13:47:07checkout-apiHTTP 500 — connection refused (×2)

Incidents · 5

from 84+ events
  • Database connection pool exhausted — db-primary-west-2.prod.internal

    CRITICALdb-primary23 events2m

  • Deploy regressed checkout flow

    HIGHshipping-api14 events5m

  • Cache eviction storm

    MEDIUMredis8 events3m

  • Auth token refresh storm

    MEDIUMauth-api5 events5m

  • CDN edge p99 latency drift

    LOWcdn-edge3 events8m

Fig 01 — A noisy minute, correlated
Memory / Adaptive Root Cause Analysis

Memory across incidents.

Most AI ops tools analyze each incident in isolation. Culprit cites the most similar resolved incidents on the same service, so each analysis builds on your team's own operational history. Mark an analysis wrong and it stops showing up next time.

Cites prior fixes on this serviceRecurring patterns surface as you goWrong analyses opt out of future context

Incident · live

Database connection pool exhausted — db-primary-west-2.prod.internal

CRITICALdb-primary23 events2m

Root cause (RCA): Connection pool exhaustion on db-primary-west-2.prod.internal. Commit a3f7b92 (config/db.ts, 18 minutes before first event) reduced pool.max from 100 to 20. 23/23 events occurred after deploy.
Reused from prior analysis

Probably the same root cause as Connection pool exhausted — db-primary-west-2.prod.internal (post-deploy) — resolved 2026-04-25.

Fig 02 — Memory in practice

01 / 03 — Tokenization

Built to never see your data.

Your 3am database alert contains a real hostname, a real IP, maybe a real username in a stack trace. Forwarded to an LLM provider as-is, that text becomes training-accessible context you no longer control. Culprit encrypts payloads at the edge and tokenizes them before any downstream system — log lines, notifications, LLM prompts see placeholders only. Rehydration is scoped to authenticated users with matching tenant scope.

How tokenization works

What Culprit sends

alert: auth_failure
host:  <HOST_a3f9>
email: <EMAIL_c44b>
ip:    <IP_b217>
auth:  Bearer <APIKEY_d8e9>
Same pattern, zero identity. AI correlates without ever seeing the real values.

02 / 03 — Correlation

AI clusters noise into incidents.

Correlation happens on tokenized events, so the model never sees raw customer names, IP addresses, or ticket contents. You see a single incident with a ranked root-cause summary — not a page of alert notifications.

03 / 03 — Aligned incentives

$49 per service, flat.

Usage-based pricing creates an incentive to send less data — the wrong incentive when correlation quality depends on seeing the full picture. Culprit charges a flat rate per service, not per event: an outage week costs the same as a quiet one.

per service · per month

$49

Flat · No overage · No caps

04 — Frequently asked

Questions we answer on every call.

build d9b5312updated 2026-06-09no trackersno analyticsno third-party scripts