Captain Memo

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.

observations  your sessions, distilled recall  how they get used Tide  how they earn permanence

The hold

Corpus

The size of the searchable index, in chunks — embedding-sized pieces of text.

memory
Chunks from the memory channel — things you explicitly remembered, 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. The saved % is 1 − 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 in top).
(+N)
N near-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.

Why it's called dreaming

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 disabledcaptain-memo doctor flags it in red.

Cast off

See it live.

Open the live dashboard and press ? for this glossary in-app.

  1. Open the dashboard. Run captain-memo top — an htop-style live view of how memory is being used.
  2. Press a for the AI-sources chart, s/r/n for the tables, ? for help + this glossary.
  3. Back to the docs. The full README and everything else lives on GitHub.
 live dashboard
captain-memo top
captain-memo stats