kaaroSessions
127.0.0.1 only github.com/karx/kaaroSessions ▸
Incident log · 2026-08-24
$ npx kaaro-sessions
▸ snapshot: 12 sessions · 2026-07-16 → 2026-08-23 (~5 weeks)
▸ expected: ~5 months of actual usage
ROOT CAUSE
Claude Code ships a background retention sweep — cleanupPeriodDays in ~/.claude/settings.json. Default 30 days, quietly on since v0.2.117. Any transcript untouched 30+ days: deleted. Not a bug — a shipped default nobody reads until they lose something.
RECOVERED
~5 months — by luck, a forgotten manual git backup
LOST
2026-05-07 → 07-16 — permanently. No evidence anywhere.
Raise cleanupPeriodDays if you want Claude Code to keep more. Other harnesses' retention is unverified. kaaroSessions reads what's still on disk — it does not archive.
▸ the surface

See the sessions while they still exist.

kaaroSessions is a live observability surface for your AI coding agents. It normalizes whatever transcripts are still on disk — seven harnesses, one record vocabulary, nothing leaves the machine. It does not outlive a retention sweep. The JSONL was never the tool. Now it isn't even permanent.

History, Live, and Sonic — seven harnesses, one picture, local only.
the hop · seven harnesses · one record vocabulary
↗ full system map
Every adapter normalizes into the same sixteen kind vocabulary. Raw JSONL never reaches History, Live, or Sonic.
walks the kinds of one turn · pipeline stays put
emit this adapter writes the kind · absent not in that harness format selected kind in the inspector
stream live pulse snapshot session bundle pulse what the stream emits, or —
cc claude-code pi ag antigravity gk grok oc opencode cp copilot cd command-code
api_error is in the contract; no adapter emits it yet. Eighth harness = one adapter · docs/harnesses.md
sonic · event registry
Pulse keys become notes. Silent until you enable audio — the first click creates an AudioContext on this machine, nothing is uploaded. Registry names without a synth (pad, click, chime, sweep, tick, woodblock) fall back to harp, matching the live engine.
opt-in · A to toggle · click a row to hear
SRC: experience/audio/event-registry.mjs EVENT_TYPES · oscillators from experience/client/14-pulse-audio.js INSTS
three views
01
History · Graph
npx kaaro-sessions
Sessions, projects, files — what was worked on, laid out in time.
02
Live · Mission Control
What's running right now — last actions, token burn, errors as they happen.
03
Sonic · DAW
Hear writes, tests, agents, failures — then shape the mix.
privacy is the claim, not a footnote
BIND 127.0.0.1 (default)
UPLOAD none
ACCOUNT none
DEPENDENCIES zero npm packages
LICENSE AGPL-3.0
HOSTING none — the app runs on your machine
install
# published
npx kaaro-sessions
# from a clone
npm start
Node 18+. Zero npm dependencies. Published on npm as kaaro-sessions.
Clone: git clone https://github.com/karx/kaaroSessions && cd kaaroSessions
Clone it. Run it on your own transcripts. Tell me what it got wrong.
▸ github.com/karx/kaaroSessions
AGPL-3.0 licensed · zero dependencies · kaaroSessions
? help · 1–7 jump · J/K kind · space play · A audio
ⓘ what you're looking at

This is the hop: raw harness transcripts become one sixteen-kind vocabulary, then a pulse, then History / Live / Sonic. Nothing in the views reads JSONL.

pipeline

Five stages, left to right. Click one (or [ ]) to see the selected kind at that stage in the inspector: raw transcript, adapter, NormalizedRecord, pulse, or the three views.

matrix

Rows are the sixteen kinds. Columns are harnesses. Green ● means that adapter emits the kind; · means the format has no such record. A cyan outline is the kind in the inspector. stream rows feed the live pulse; snapshot rows feed the session bundle.

inspector

The selected kind at the selected stage, for one harness. Chips with body-colored labels have a sample hop. H cycles harnesses. Empty hop = no sample for that pair, not a missing kind.

tape

A canned turn. Space or ▸ play a turn walks kinds only: user_turn → tool_use → tool_result → content_block → tokens → context_reset. The pipeline stage stays where you left it. Click a chip to jump. Audio is opt-in (A).