coldstart gives it persistent memory of your codebase — a notebook it writes itself, so what one session figures out, the next already knows — plus an exact index to find the right file without three wrong reads. No embeddings, no API key: it runs on the model you already pay for.
An agent writes down what it learns while it works. The next one starts where that one finished instead of searching for it again, checked against the code so a stale note never passes as fact.
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.
Commit the notebook to your repo and the whole team feeds one corpus — union-merged across branches, no conflicts. Private by default; opt in with coldstart init --commit-notebook.
Every consumer is already a frontier model — the best semantic reasoner available. coldstart keeps what's cheap to keep exact — names, imports, calls — and leaves meaning to the reasoner holding the task. No vector store to go stale, no API key, no second bill.
No. coldstart is a fast static index over file paths, symbol names, exports, and the import/call graph, plus a ripgrep-backed reference scan. There is no vector database and no semantic embedding step — results are ranked from concrete lexical and structural evidence, so the index is small, instant to query, and never goes stale against your code.
No API key. coldstart calls no external service and runs fully offline. It adds a navigation and memory layer for whatever coding agent you already use, so it runs on the model you already pay for rather than billing any tokens of its own.
Yes. Running coldstart init wires Claude Code, Cursor, and Codex with the right guidance plus navigation and notebook hooks. Shell-capable agents use the CLI (coldstart find / coldstart gs); no-shell clients like Claude Desktop use the identical operations exposed as MCP tools.
coldstart parses TypeScript, JavaScript, JSX, TSX, Java, Ruby, Python, Go, Rust, C#, PHP, Kotlin, and C++ via vendored Tree-sitter (WebAssembly) grammars, plus Vue, Svelte, and Astro script blocks and YAML, TOML, XML, and GraphQL. Because the grammars are WASM, a plain npm install works with no native build step.
The notebook is a durable set of notes the agent writes itself while it works, so what one session figures out about your codebase the next session already knows. Notes are anchored to real files and symbols and kept honest by the index, so they are flagged when the code they describe changes.
Every note records a fingerprint of the exact files it describes, and that fingerprint is re-checked against the live file every time the note is read. If nothing changed, the note reads [fresh] and can be used without re-opening the file. If the file changed, it is labelled [evidence changed] and the agent is told to re-verify before relying on it. If the file was renamed or moved, the note follows it as long as the content still matches. If the file is gone — deleted, or simply not on the branch you are on — the note goes quiet, and comes back by itself if the files do. None of this is a judgement call, so it runs on every read, in any language, with no model call.
20+ languages via Tree-sitter — TypeScript, Python, Go, Rust, Java, Ruby, PHP, C#, C++, and more.