Know what your agents actually did.
Claude Code, Codex, and pi leave a transcript on every machine they run on. akari is a self-hosted instrument that collects those sessions into one searchable history: every run readable end to end, every token priced, every project's spend on one screen.
the tests in internal/store are flaky under -race, find out why
Reproducing under -race, then bisecting the shared state.
The pool test shares a fixture across parallel runs; pinned it per test.
A session as akari shows it, from the prompt to the fix.
When a run goes sideways, read the evidence
Open any session and see what the agent did: the prompts, the thinking, and every tool call with its input and result, timed and in order. Errored tools are flagged on a timeline rail, so the turn where things went wrong is one glance away. Live sessions stream in as they run.
==================WARNING: DATA RACERead at 0x00c0002a4130 by goroutine 41:store.(*Pool).acquire()internal/store/pool.go:88 +0x64FAIL github.com/jssblck/akari/internal/store 2.104sEditinternal/store/pool.goin: 612 B diffok
fixture := sharedFixturefixture := newFixture(t)
See what it costs, per project and per model
Every session carries its token usage and what it cost. Usage rolls up by project, model, agent, and machine over a trailing window you choose, so the answer to where the month's spend went is a lookup, not a spreadsheet.
- In
- 24,000,000
- Out
- 9,200,000
- Cache read
- 58,800,000
- Cache write
- 4,400,000
| Project | Sessions | Tokens | Trend | Cost |
|---|---|---|---|---|
| jssblck/akari | 412 | 31.2M31,200,000 tokens
| $148.11 | |
| jssblck/tapestry | 188 | 12.9M12,900,000 tokens
| $61.40 | |
| hopper/subroutines | 97 | 8.3M8,300,000 tokens
| $37.92 | |
| all other projects | 587 | 44.0M44,000,000 tokens
| $165.44 |
Every machine, one history
A small client on each laptop and workstation uploads new sessions to one server. Projects are keyed by git remote, so the same repo across clones, worktrees, and machines collapses into one project. Full-text search across every transcript recovers the run you half remember.
Every settled run gets a grade
Once a run is over, akari grades it from the transcript itself, never from the agent's own report: an outcome with a confidence, an A to F grade from tool failures, retries, and edit churn, and measures of prompt hygiene and context health. Insights aggregates the signals across the fleet, so you can see which projects burn retries and which prompts set the agent up well.
- Share a run
- Publishing a session mints an unguessable link anyone can view without an account. Your usage overview can go public at a stable address too; both revoke instantly.
- Read it from your agent
- A read-only MCP endpoint exposes everything the UI shows: overview, projects, sessions, and full transcripts. One command connects Claude Code.
- Old sessions get better
- When akari's parsing improves, the server reprocesses what it already stored, and old sessions gain the new fields with nothing re-uploaded.
- Own every byte
- One server binary with an embedded UI, backed by Postgres. No telemetry, open source under the AGPL. Run it with the bundled Docker Compose file.
Start with the history you already have
Point a client at your server and the backlog starts uploading. Agents already left months of sessions on your disk; the first sync brings them in.
$ curl -fsSL https://raw.githubusercontent.com/jssblck/akari/main/scripts/install.sh | sh $ akari login --server https://akari.example.com --token YOUR_INGEST_TOKEN $ akari sync # or: akari daemon start, to keep uploading as you work
New to akari? Read the user guide.