The full tour · every feature, shown not told

How recall works.

The code itself becomes smart: the decision, the why and the links are stamped at write-time — the moment the AI already knows. Reading it back costs zero tokens, takes milliseconds, and can't drift, because the code is the memory.

01 — How it works

Intelligence at the
knowing moment.

Most tools try to be clever when you ask (read-time) — and guess. recall is clever when the AI writes (write-time) — when it actually knows. The reader can then be dead-dumb: zero tokens, sub-millisecond, and it returns what was actually written down — not a guess.

01.01 · Write-time

Stamped when the AI already knows.

The intelligence moves from the guessing moment (read-time) to the knowing moment (write-time). While the AI works, it stamps a tiny anchor onto the commit — the decision, the why, the links.

stamp() · 1 sentence · 1 SHAwrite-time
01.02 · Recall

Three levels, every query.

Ask a question and recall returns the hit, the meaning (the why), and the relation (what it links to) — via a recursive graph walk over the anchors. Not where a word appears: the decision itself.

hit · meaning · relationFTS5
01.03 · Pre-edit briefing

Before you touch a file, you’re briefed.

Ask recall about one file and — read-only, zero tokens — it bundles the open tasks wired to it (standing intent), why it is the way it is, what breaks if you change it (the blast radius), and what it leans on. So an AI never silently undoes a decision it never saw. The IDE hook injects it before every edit.

tasks · why · breaks · leans-onbriefing
01.04 · Contested spots

Where the team burns time.

recall ranks the files the team keeps rewriting — churn × entanglement (how often it changes, with how many other files at once). A load-bearing file written once is important; a tenth-rewrite is where the uncertainty lives. The places to touch with extra care.

churn × entanglementhotspots
01.05 · Zero tokens

A reader so dumb it’s free.

Recall is plain SQLite full-text search — no embedding model, no LLM in the read path. The intelligence was spent once, at write-time. Reading it back is free and instant, forever.

SQLite · FTS5 · stdlib0 tokens
01.06 · Bootstrap

Smart from minute one.

Point recall at an existing repo and it builds a base intelligence token-free — from your git history, a tree-sitter code map, and the docs you already wrote (CHANGELOG, ADRs, MEMORY). No cold start.

git · tree-sitter · docs 384 ms
01.07 · Freshness

It knows when it’s stale.

Every note is pinned to a SHA. When the code beneath it moves, recall marks the note 🟡 instead of silently serving an old answer — the exact failure mode that rots every doc.

SHA-pinned · 🟢 / 🟡freshness
01.08 · Self-sustaining

Smarter on every commit.

Each commit auto-wires new links into the graph. Human commits get wired retroactively. The system compounds: the more you ship, the sharper its memory of why you shipped it.

auto-wire · retroactivecompounds
02 — Smart code, dumb reader

Make the code smart.
Then read it for free.

Version control remembers what. Your code now remembers why. recall spends the intelligence once, at write-time, so reading it back can be dead-dumb — and a dumb reader is the fast, precise, cheap, traceable one. The ~1,400× token saving falls out of that — it isn’t the trick, it’s the receipt.

01
The move

Make the system smarter — once, at write-time.

While the AI works and already knows why, it stamps one sentence onto the commit: the decision, the why, the links. The thinking happens at the knowing moment, not the guessing moment. The codebase itself gets smarter.

02
The consequence

Now the reader can be dead-dumb.

Because the intelligence is already in the index, recall doesn’t reason at read-time at all — it’s plain SQLite full-text search. No model, no embeddings, no re-reading files. A reader so dumb it costs nothing to run.

03
The payoff

And a dumb reader is the fast, precise, cheap one.

It returns the exact decision (precise, not “where a word appears”), in sub-milliseconds (fast), for zero model tokens (cheap) — and the harder and more complex the question, the bigger the win, because a dumb lookup stays flat while grep-and-read explodes.

04
The proof

Every answer is traceable — and can’t go stale.

Each note is pinned to the commit it was written against, so you can follow any answer back to its source, and recall flags it the moment the code moves on. Nachvollziehbar by construction: the code is the memory, so the memory can’t lie.

recall “rls cut-over uploads gone”
WHAT
What changed?

The RLS cut-over — one commit touched the storage writer; every write now runs under row-level security.

WHY
Why is it like this?

The stamped decision: service-role writes bypass RLS — the writer itself must set workspace_id, or the row is invisible.

HOW
How is it wired?

Five files depend on the writer — uploads, sync, the importer. The blast radius lists every one before you touch it.

WHEN
When was this true?

Pinned to its commit. recall re-checks it against today's code: 🟢 still true — if the code moves on, the answer is flagged, never silently wrong.

— what · why · how · when — answered from the code itself · on every edit · passively —

grep-and-read · a smart reader, every time
“why do uploads vanish after the RLS cut-over?”
  • grep the codebase for the symbols
  • open + read 3 candidate files, top to bottom
  • re-derive the reasoning from scratch — every turn
~214,000 tokens
~147 ms · grows with the codebase · no trail to follow
recall · a dumb reader, same answer
recall “rls cut-over uploads gone”
  • one SQLite lookup over the stamped anchors
  • returns the decision + the why + the links
  • pinned to a commit — traceable, freshness-checked
152 tokens
~2.18 ms · 0 model tokens · flat as the repo grows

Measured cold-start on two live production repos (a 240-commit app, a 668-commit CMS) — three real questions, no recall trailers planted. ~1,400× fewer tokens, ~67× faster — and the harder the question, the wider the gap, because the dumb lookup stays flat while grep-and-read keeps re-reading.

03 — The cost of truth

The token bill is
the whole story.

For an AI, context space is the scarce resource. grep finds where a word sits — to learn why, it must read whole files back into context, tens of thousands of tokens per question. recall returns the decision in ~56. Measured cold-start on two live production repos (a 240-commit app, a 668-commit CMS), no recall trailers planted — that gap is the product.

~1,400×
fewer tokens than the grep-and-read path
152 vs ~214,000 tokens · 3 questions
~67×
faster to the answer that includes the why
2.18 ms vs 147 ms
0.25 ms
median recall at 108,627 anchors
scales flat — FTS5
10/10
real questions answered, 2/2 nonsense silenced
no hallucinated hits
Three knowledge questions, one production repomeasured · head_to_head.py
MethodTimeTokensThe why?
recall()2.18 ms~152✓ direct
git grep + read files147 ms~214,000✗ only where
code-index search~seconds✗ 0 hits · 2d stale
recall is ~1,400× more token-frugal and ~67× faster than the real standard path (grep → read). The code index's map was 2 days / ~15 commits stale — the silent-lie failure recall is built against.
Tokens per question · grep vs recalldemo
Questiongrep+readrecall
Why must RLS writers set workspace_id?48,20056
Why split the viewer from the editor?71,50061
Why render the search modal via createPortal?39,80052
Latency scales flatmeasured · FTS5
RepoAnchorsMedianMax
fixture1,2040.04 ms0.09 ms
production app43,7220.41 ms0.67 ms
production CMS108,6270.68 ms1.0 ms
04 — A real answer

Not where a word
sits. The decision.

One query, three levels: the hit, the meaning behind it, and what it's wired to. This is the exact shape recall returns — pinned to a commit, freshness-checked, in under a millisecond.

recall “rls cutover workspace_id uploads gone”0.41 ms · 0 tokens
Level 1The hit
lessonRLS cut-over: writers must set the new scope column.
🟢 fresh · pinned to commit a1f9c20 · src/app/api/panoramas/route.ts
Level 2The meaning
When RLS moves from user_id to workspace_id, every insert path (RPCs, edge functions, triggers) must stamp the new column — not just the backfill. Otherwise new rows are NULL and become invisible to the owner after the legacy policy is dropped (NULL is never in the set).
rlsworkspace_idcut-overinsert-pathdata-loss
Level 3The relation
decided_by → ADR-43 · Phase 2.4 RLS cut-over
guarded_by → drift test “writers-set-workspace-id”
recurs_with → “new assets column → recreate compat VIEW”
05 — See it, any time

Now you can trace
everything.

The local dashboard makes the whole memory visible — any time, read-only, zero tokens. Causal chains, plans & tasks, the drift light, the wiring in your code, and the decisions behind it. One running view of every capability. Nothing leaves your machine.

recall · Overview1/15
The live pulse — knowledge, freshness, recall. — the Overview view of the recall dashboard (screen 1 of 15)The decision chain — every why, in one view. — the Brain view of the recall dashboard (screen 2 of 15)What breaks if you touch it. — the Brain view of the recall dashboard (screen 3 of 15)The full file briefing — what, why, what breaks. — the Brain view of the recall dashboard (screen 4 of 15)The repo map, right next to the why. — the Brain view of the recall dashboard (screen 5 of 15)Read the code with its memory attached. — the Brain view of the recall dashboard (screen 6 of 15)The pre-edit briefing for any file. — the Brain view of the recall dashboard (screen 7 of 15)Onboard anyone — human or AI — in one view. — the Start here view of the recall dashboard (screen 8 of 15)Walk the chain back to the source. — the Brain view of the recall dashboard (screen 9 of 15)Plans & tasks, wired to the code. — the Tasks view of the recall dashboard (screen 10 of 15)Open a task, see the whole intent. — the Tasks view of the recall dashboard (screen 11 of 15)Branches & history, read as memory. — the Git view of the recall dashboard (screen 12 of 15)The drift traffic-light. — the Drift view of the recall dashboard (screen 13 of 15)The wiring in your code. — the Code view of the recall dashboard (screen 14 of 15)The living product map. — the Product view of the recall dashboard (screen 15 of 15)
01 / 15Overview

The live pulse — knowledge, freshness, recall.

Your wiki measured against the code: knowledge, a freshness score and recall at a glance, with the latest lessons, commits and open tasks streaming in. Derived from the repo, always current, zero tokens to read.

06 — For humans

Two views on the
same result.

The AI reads raw data — but you get a presentation. Both render from a single search result with zero tokens: dumb template code, never the model. Columns to scan, or a living map to explore. Every file path is clickable — open it and a pre-edit briefing sits above the code; a breadcrumb lets you step back through wherever you came from. Time and git make it move.

📋 Columnswhat · where · git history
What
Writers set workspace_id
RLS cut-over lesson
ADR-43
Phase 2.4 decision
Drift guard
test locks it
Where
api/panoramas/route.ts
migrations/032_rls.sql
tests/rls-writers.test.ts
Git history
a1f9c20 🟢
2 days ago · cut-over
7e02b14 🟢
4 days ago · ADR
d3c8a90 🟡
3 wks ago · check freshness
🕸 Mindmapboxes of code · typed edges · zoomable
route.tsinsert path · stamps workspace_id
RLS cut-overcore note · 🟢 a1f9c20
ADR-43decided_by
rls-writers.testguarded_by
032_rls.sqlmigration
07 — Three stages

Smart for free.
Brilliant on purpose.

You're never forced to spend a token. Bootstrap gives you a working memory for nothing. Power Mode is a deliberate upgrade — and every stamp it writes is reversible, tagged by origin (bootstrap · power · live · human). Undo anything, anytime.

1

Bootstrap

Point recall at your repo. It indexes git, code and existing docs token-free — instant base intelligence. Nothing to opt into, nothing to pay.

always free
2

Power Mode

A conscious choice. The AI reads the hotspots, understands them, and stamps richer nodes — the real why, synonyms, sharper links. Costs tokens once. Fully reversible.

opt-in · undoable
3

Living memory

From then on every commit auto-wires new links — even human commits, retroactively. The graph compounds: less effort over time, more precision. It only gets smarter.

self-sustaining
08 — Works with any AI

Even the AIs that
can't see your disk.

A browser-based AI can't read your local code or git history. So a tiny local bridge does — and only the finished 3-level answer ever leaves your machine, never the code. The website is the gatekeeper: it checks your plan and token, the bridge does the reading. Two doors, both live: a browser AI reads over the HTTP bridge, while a local AI (Claude Code, Cursor, any MCP client) gets recall natively through 14 MCP tools — no copy-paste.

1Web AIChatGPT · Gemini · Claudeasks a question
2recall.devchecks plan + tokenthe gatekeeper
3local bridgereads index.dbonly it sees your disk
43-level answerthe why, not the code← back to the AI
09 — It catches the drift

When you contradict
the record, it knows.

A memory rots because nobody notices when reality diverges from it. recall notices the instant you write. If your change contradicts a pinned note, it flags the drift and offers the fix — you approve, and the truth stays current. A sprint plan that's always up to date.

Drift detected alarm
⚠ This change contradicts ADR-43.
You're removing the workspace_id stamp from the upload path. The record says writers must set it or new rows go invisible. Proceed anyway?
- writers must set workspace_id on insert
+ uploads now scoped by team_id (ADR-43 → ADR-58)
How the fix worksyou decide · every time
1 · Detect

Your write's anchors are recalled against the record. High overlap + opposite meaning = drift. Caught at write-time, not in a review three weeks later.

2 · Offer

recall proposes the fix — update the note, or supersede it with a new one that links back (supersedes →). The old decision stays in history, never lost.

3 · Approve

Nothing changes without your OK. You approve, recall re-stamps to the new SHA, and the graph is true again. The plan is, by construction, always current.

10 — The trap, before you fall

“You've done this
before. It bit you.”

recall isn't a linter — it won't invent new bugs. But the moment you start repeating a mistake you already documented, it puts the old trap and its fix in front of you, in microseconds. The owner's first rule made mechanical: never make the same mistake twice.

Putting a modal inside a panel with overflow: hidden
Editor #38: the modal got clipped → render it with createPortal into .ed-root.
recalled in 460 µs
Changing the insert path of an RLS table
RLS cut-over: writers must set workspace_id, or new uploads go invisible to the owner.
recalled in 238 µs
Adding a new field to the assets table
The compat VIEW has a frozen column list — it must be recreated, or the column never surfaces.
recalled in 532 µs
Editing an RLS policy function
EXECUTE-grant trap: a policy-body function needs the caller's grant or the policy breaks hard.
recalled in 243 µs
— Stop briefing the AI. The code briefs itself. —

A smart AI greps a name it invented.
Smart, self-aware code knows it.

recall fixes the guess to your repo's real vocabulary before the search — because it's the only thing that recorded what you actually call things.

Install recall See it work

Self-hosted · hourly online seat check (short offline grace) · zero tokens to recall · 14-day free trial