Reading the log
Stats glossary.
Every term shown by captain-memo stats and the live captain-memo top dashboard, grouped by the panel it appears in. Each definition is what the code actually computes — not a paraphrase.
The hold
Corpus
The size of the searchable index, in chunks — embedding-sized pieces of text.
- memory
- Chunks from the
memorychannel — things you explicitlyremembered, plus promoted facts. - observation
- Chunks from observations — the summarizer-distilled summaries of past sessions (Claude Code + captured cross-AI tools).
- Total
- Total chunks in the vector index, across all channels.
Ship's economy
Efficiency
How economical the pipeline is — how much raw material is compressed, and how much re-work is avoided.
- Compression
raw session tokens ÷ stored observation tokens.7.7×means the stored memory is 7.7× smaller than the material it was distilled from.- distilled A → B tok
- The raw work tokens (
A) the summarizer read, versus the tokens (B) it actually stored. Thesaved %is1 − B/A. - Embedder
- Embedding-API activity since the worker started: number of calls, average latency, throughput (tokens/sec).
- Dedup
- Share of documents skipped on re-index because their content hash was unchanged — work avoided.
42% 8 / 19 unchanged= 8 of 19 re-seen docs needed no re-embed.
The fleet's hand
AI sources
One bar per originating tool, showing which AI authored each observation.
Who wrote it
claude-code, codex, agy, gemini, kimi, opencode — every tool whose finished sessions Captain Memo captured into the shared corpus.
Legacy rows
Observations from before cross-AI capture existed carry no recorded origin, so they are attributed to claude-code — the only tool that fed the pipeline back then.
The payoff
Recall — how memory actually gets used
Of everything stored, how much is actually being pulled back into sessions, and how strongly.
- Surfaced
- An observation was shown to the model by any path (see auto / search / drill). Counted per observation.
- Recalled
- Its full text was opened (a drill) — the strongest "this was actually useful" signal: a surfaced snippet that earned a full read.
- Drill-in rate
Recalled ÷ Surfaced— of what got shown, how often it was worth opening in full.- Last surfaced
- The single most-recently-surfaced observation (the live pulse), with the path that surfaced it.
- Top surfaced · Top recalled
- The observations with the highest surface / recall counts.
- Recently surfaced
- The most recent surfacing events, newest first.
- auto
- Surfaced automatically by the prompt hook (injected context).
- search
- Surfaced by an explicit
/search. - drill
- Opened in full via
get_full(or Enter intop). - (+N)
Nnear-duplicate observations were collapsed into this one row.
Rising and falling
Tide — memory lifecycle
Tide re-ranks retrieval by recency × stability, so memories that prove durable outrank one-off noise, and idle ones fade.
- Status
- Whether Tide re-ranking is
on. - floor
- Relevance floor — the minimum relevance a hit must clear to survive the re-rank (the one bounded knob).
- tiering
- Auto-tiering: whether idle memories are automatically demoted down tiers over time.
- Strengthened
- Observations whose stability has grown because a recall reinforced them — a memory earning permanence.
- max stability
- The highest stability any single observation has reached, in days.
- Tiers
- Lifecycle buckets: active (in play) · dormant (idle, deprioritised) · archived (aged out of normal retrieval).
What the ship dreams
Dream
A corpus that only ever grows eventually crowds out the memories you wanted. Dreaming is the offline pass that fixes that: it reads what has piled up while you were working, groups the observations that belong together, folds each group into one higher-level theme, and archives the originals rather than deleting them. Nothing is lost — the detail moves out of the way of the summary.
What makes it more than clustering is how it decides two observations belong together. It goes by what you actually recall in the same breath — the pairs that keep surfacing together in real retrievals — not by what shares vocabulary. Group on vocabulary and you get memories that use the same words; group on co-retrieval and you get memories about the same thing. It runs on your machine, on your schedule, with the model login you already have.
Preview stage. captain-memo dream --dry-run shows you the clusters it would build; the write path is deliberately not shipped until that output has been checked against real data. It never writes, never calls the summarizer, and is safe to run at any time.
The name is Anthropic's. In May 2026 they shipped Dreams in Claude Managed Agents — a pass that reads an agent's memory store alongside its past session transcripts and produces a new, reorganised store: duplicates merged, stale or contradicted entries replaced with the latest value, fresh insights surfaced. Their framing is the clean one: memory captures what an agent learns as it works; dreaming refines that memory between sessions.
Captain Memo takes the idea and moves it to your machine. Anthropic's dream runs in their cloud and has a model re-read your transcripts; Captain Memo's runs locally against your own SQLite files and infers structure from co-retrieval — which memories you pull up together — instead of re-reading the text. Both leave the input intact: theirs writes a separate store you can discard, ours archives the originals. Same intent, different mechanics: less corpus, more signal.
The Dream block in stats shows the inputs that pass would read — not its output.
Audit log
The recall-audit.jsonl write log — records each surfacing event. It feeds co-retrieval; off until you set CAPTAIN_MEMO_RECALL_AUDIT=1 in worker.env.
Co-retrieval
Count of observation pairs that co-occur in the same retrievals, plus how many observations that covers — the raw signal the Dreams pipeline mines for connections.
The bridge
Worker header
The status strip along the top of stats.
- Worker
- The background service state + uptime.
- Indexing
- Index build progress (
done / total). - Embedder
- The embedding model + endpoint in use.
- Disk
- On-disk footprint of the data directory.
- Summarizer
- The resolved summarizer provider + model. If this isn't running, no observations are created and cross-AI capture is disabled —
captain-memo doctorflags it in red.
Cast off
See it live.
Open the live dashboard and press ? for this glossary in-app.
- Open the dashboard. Run
captain-memo top— an htop-style live view of how memory is being used. - Press
afor the AI-sources chart,s/r/nfor the tables,?for help + this glossary. - Back to the docs. The full README and everything else lives on GitHub.
captain-memo topcaptain-memo stats