Claude Code writes a rich trace of every session, then exposes none of it.

Every session lands as line-delimited JSON, scattered one folder per project under ~/.claude/projects/: token spend, tool calls, file edits, costs, all there, none of it readable without a one-off script. ae-os is the desktop app that reads it: the questions every Claude user eventually asks, answered from one workspace.

One crate, headless or visual.

Anatomy ae-os
01 Runtime
Rust 2024 · GPU-rendered native UI
02 Form
One crate: headless, or visual behind a feature flag
03 Footprint
All local under ~/.ae-os/, no server
04 Surfaces
CLI · embedded MCP server · native dashboard
05 Drift guard
Schema scan catches Claude Code log-format changes
06 Licensing
Shared studio core; activation is the only call out

Index first, render late.

The JSONL is streamed once and split so a partial load touches one slice, not the whole session. Two paths read the same source: one for history, one for the live session.

JSONL → dashboard ae-os / DATA_FLOW
JSONL source ~/.claude/projects/ · session + agent-*.jsonl
Batch / historical
L1 Parse
ClaudeLogEntry · one struct per line
L2 Extract
orchestrator → messages · tokens · tools · agents
L3 Session
ProcessedSession · finalised stats
· Cache
~/.ae-os/ · six per-tab files
· Aggregate
project & global summaries
· ViewData
pre-formatted, ready to render
Live / real-time
Parse
incremental · only new lines past last_offset
State
IncrementalParseState → LiveSessionData
< 10ms
per update, in-memory only
Dashboard native views · no compute at frame time

One binary indexes. The dashboard, the CLI, and a query server all read the same cache.

Everything downstream of the cache is a reader, so the work is done once and consumed many ways: a native dashboard, a batch CLI, and a server other assistants can call.

What it gives you ae-os
Index
Scattered JSONL into structured sessions and totals.
Six views
Global, Project, Session, Live, Calendar, Symbol.
Schema guard
Catches log-format drift before it breaks.
Live + chat
Watch a live session, and message into it.
Charts
A dozen chart types, one design system.
MCP server
Other assistants query your analytics as tools.
All local
On disk under ~/.ae-os; licensed offline, device-bound.

The trace was always there. Nothing ever read it.

What it changes ae-os
Without it
Every session's record is written to disk, then discarded: read once, if ever.
With ae-os
The same scattered logs become one visual record, kept and returned to.
work