incident intelligence for dev stacks

Every failurehas a trail.

Kestrel supervises your dev stack, pinpoints what broke first and proves the fix holds. Zero configuration, for developers and AI agents.

~/your-project
$
◆ inspect vite · express · postgres detected
◆ watch db → api → web, dependency order
◆ probe 3/3 ready
✗ incident db exited 137 · api ECONNREFUSED · web 502
◆ diagnose K002 dependency-down · db broke first
✓ verify stable across 30s window · 0 orphans
Type one command.
Kestrel watches the whole stack.
Root cause found. Fix proven.

Four commands. One trail.

Same stack, start to finish. Scroll to watch Kestrel work.

01Inspect
02Watch
03Diagnose
04Verify
01

Map the stack.

Reads your repo and finds every service, port, health route and dependency. No config, no README archaeology.

kestrel inspect
02

Run it in order.

Starts services by dependency, probes readiness, classifies logs live and redacts secrets before anything is stored.

kestrel watch
03

Follow it back.

When things fall over, Kestrel walks the dependency graph and ports to the first failure, and ranks causes with event IDs.

kestrel diagnose
04

Prove the fix.

A 30 second, multi-sample stability window across every service. Not one lucky health check.

kestrel verify
~/shop-appscanning
webvite · :5173
apiexpress · :4000
workernode · queue
root causedbpostgres · :5432
PASS
$ kestrel inspect ◆ 4 services · vite, express, node, postgres ◆ health GET /health src/server.ts:41 ◆ depends web → api → db ← worker
$ kestrel watch ✓ db ready 1.2s ✓ api ready 2.8s ✓ worker ready 1.9s ✓ web ready 0.9s ◆ redaction on · ring buffer bounded
$ kestrel diagnose 14:02:11.384 db exited 137 ← first signal 14:02:11.512 api, worker ECONNREFUSED :5432 K002 dependency-down confidence 0.94
$ kestrel verify window 30s · 6 samples per service ●●●●●● db api worker web PASS fix holds · 0 orphans
kestrel mcp

Your agent stops guessing.

01/03 You ask your agent what broke. 02/03 It asks Kestrel over MCP. 03/03 Kestrel answers with evidence.
shop-app/ compose.yaml⌘K agent
FILES
api
web
compose.yaml
kestrel.yaml
README.md
server.tscompose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
services:
  db:
    image: postgres:16
    mem_limit: 64m 512m
  api:
    build: ./api
    ports: ["4000:4000"]
    depends_on: [db]
  web:
    build: ./web
    ports: ["5173:5173"]
    depends_on: [api]
Agentkestrel mcp
Why is my app throwing 502s?
⚙ kestrel mcp · 5 tool callsrunning…done in 35ms
db was OOM-killed (exit 137) at 14:02:11. api and web failed after it. I raised mem_limit to 512m and Kestrel verified the fix.
↵
● kestrel mcp connectedread-onlyincident #3main
trace · tools/callsession #3
0102030
get_service_status
4ms

db down · api, web erroring

get_recent_errors
6ms

ECONNREFUSED 127.0.0.1:5432 ×214

get_failure_timeline
9ms

first signal db exited 137 · 14:02:11.384

get_diagnosis
11ms

K002 dependency-down · confidence 0.94

get_verification_results
5ms

PASS · 6/6 samples after the fix

✓ answered with evidence0 raw log lines in context

Logs tell you what happened.Kestrel tells you why.

KestrelShell / logsCompose logsLLM on raw logs
Zero-config executionYesYesNeeds composeYes
Causal root-cause attributionGraph + portsNoNoGuesses on timing
Clean process containmentZero orphansLeaves orphansContainers onlyNo
Multi-sample stability windowContinuousNoNoNo
Automatic secret redactionPre-storageNoNoNo
Bounded memory under floodsRing buffersHangs terminalFills diskToken overflow
Offline and private100% localYesYesNo
K001

Port conflict

Two things want the same port. Kestrel names both.

K002

Dependency down

A dependency died and took its dependents with it.

K003

Crash after start

Became ready, then fell over.

K004

Startup failure

Never reached ready. Here's the first fatal line.

K005

Dependency not running

Started before what it needs was up.

K006

Missing module

An import or package that isn't installed.

kestrel inspect

Speaks your stack.

Detected from the files already in your repo. Nothing to declare, nothing to configure.

stackreadssupport