coldstart gives a coding agent a notebook it writes itself, so what one session figures out, the next already knows — plus a fast index to find the right file without three wrong reads. No embeddings, no API key: it runs on the model you already pay for.
Most knowledge bases rot because a human has to feed them. This one is written by the agent that just did the work, kept honest by the index, and recalled when a later task matches. You never touch it — and that's what keeps it from going stale.
The reasoner that solved something writes down what it learned — a file's purpose, a cross-file flow, a trap — with concrete citations, while the full context is still in hand. A write gate dedupes by concept, and concurrent agents never silently merge or lose a note.
Persists a map tile and its geometry. save() is the single write path — it stamps bbox from the geometry before insert, so callers must never set bbox by hand.
Part of the [[tile-save-lifecycle]] flow.
Every anchor is stamped with a content hash. The background keeper re-checks it as the code moves — no one has to remember to. When the evidence drifts, the note flips to [evidence changed] automatically and is served as a labeled hypothesis to re-verify, never as fact.
Persists a map tile and its geometry. save() is the single write path…
This is the part that isn't obvious: the next agent doesn't decide to go look. When a prompt touches something a note covers, a recall hook (Claude Code, Cursor, and Codex all fire one on prompt submit) matches it against the notebook and injects the note straight into the context — so the agent opens the task already holding what the last one learned.
Nothing matches? Nothing is injected — it stays silent. And mid-task, a fresh summary still rides along on every find, so the note surfaces even when the prompt didn't name it.
Persists a map tile and its geometry. save() is the single write path — it stamps bbox from the geometry before insert, so callers must never set bbox by hand.
coldstart kb viewWant to read what the agents have been keeping? One self-contained HTML file — no server.Persists a map tile and its geometry. save() is the single write path — it stamps bbox from the geometry before insert.
Commit the notebook to your repo and the whole team feeds one corpus. The append-only logs union-merge across branches and machines — no conflicts — so every teammate's agent both reads from and adds to the same notebook. Private by default; opt in with coldstart init --commit-notebook.
A knowledge base that grows as the repo gets worked — more context for the next agent, less effort re-deriving what's already known.
Every note stays anchored to the code, so the codebase remains the single source of truth — the notebook only remembers what was learned about it, and the index keeps the two in sync.
Every consumer is already a frontier model — the best semantic reasoner in the loop. Pre-computing meaning at index time just duplicates that, worse and stale. So coldstart keeps what's cheap to keep exact, and leaves meaning to the reasoner holding the task.
coldstart adds no inference of its own. The semantic layer is your Claude Code, Codex, or Cursor subscription — so there's no separate API key, no metered embeddings, nothing new to provision. Most code-search tools bill you twice: once for the agent, again for their own model. This one doesn't.
Tree-sitter for the parsed set; content-hash freshness for the notebook, which means notes on a Swift repo are as trustworthy as notes on a TypeScript one.
Longer pieces about the problem coldstart is built around: agents starting cold, repository orientation, and notes that stay tied to the code instead of becoming another stale document.
Most of what a session bills for is not the answer it produced. It is the same context, re-sent on every turn.
Codebase memoryA graph makes each hop cheaper. It does not reduce the number of hops, and it is regenerated identical every time.
Works best with Claude Code, Codex, and Cursor — all get the fast CLI path and the notebook capture/recall hooks, wired automatically by init.