Memory + navigation for coding agents

Your agent relearns your codebase from scratch — every session.

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.

Install → View on GitHub MIT · Node 18+ · runs offline
The notebook · written and kept by the agent

The second time a question comes up,
the answer is already written down.

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.

1Written after a real task

By the agent that just figured it out.

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.

File notefresh
src/models.py · Tile

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.

Anchors — the files this note rests on
src/models.py · Tile src/models.py · save
2Kept honest by a content hash

Freshness is checked, not hoped for.

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.

File noteevidence changed
src/models.py · Tile

Persists a map tile and its geometry. save() is the single write path…

⚠ evidence changed: src/models.py — re-verify before relying on this note.
Anchors
src/models.py · Tile src/models.py · save
3Recalled when it's relevant

It comes to the next agent — unprompted.

A matching prompt pulls the note in automatically, and a fresh summary rides along on every find. So the next agent starts a step ahead instead of re-deriving from scratch.

And when a human wants to see what the agents have been keeping, coldstart kb view opens the whole notebook as one HTML file — no server.

Shared, it compounds

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.

Bring your own semantics

No embeddings. On purpose.

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.

Embedding-based code search

  • Freezes one interpretation of a file at index time, blind to the task.
  • A stale vector fails silently — a wrong answer that looks confident.
  • Returns a cosine score the agent has to trust or re-verify.
  • Needs an API key, a GPU, inference on every query.

coldstart

  • The agent judges relevance in context, against the actual goal.
  • A background keeper patches facts in milliseconds — the index never lies about the tree.
  • Returns checkable evidence — this term is defined here, imported there.
  • Runs on the agent you already pay for — deterministic, offline, no key.
No second bill

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.

Supported languages

Parses 20+ languages. The notebook works on all of them.

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.

TypeScriptJavaScriptJSX / TSX VueSvelteAstroAngularJS PythonRuby (Rails)GoRust JavaKotlinC#PHP (Laravel)C++ Groovy / GradleGraphQLYAMLTOMLXML.env
Get started

Two commands to warm the repo.

Works best with Claude Code, Codex, and Cursor — all get the fast CLI path and the notebook capture/recall hooks, wired automatically by init.

your-project
$ npm install -g @cstart/coldstart $ cd your-project $ coldstart init # coldstart.md + client wiring + notebook + hooks index warming in the background — your first lookup is instant.