StackMap
Subscribe
Explore / Graft
NanoNets

Graft

Context layer for large codebases: a graph of plain-English markdown nodes — no embeddings, no index — agents read like any repo file. Claude Code hooks + MCP; 42% fewer tokens in its bench.

437 35 TypeScript MITupdated today
Curator's take

The anti-embeddings bet is the story: the codebase map is prose files — senior-engineer explanations, linked and greppable — so agents consume it with the file tools they already have, and a stale map shows up as a diff in review instead of rotting in a vector store. The 162-run controlled benchmark holding correctness equal is more rigor than this category usually shows; still self-run. Claude Code gets the deep integration (hooks, statusline, background rebuild), everyone else gets MCP. When NOT: nodes are LLM-written prose — building them on a big repo costs real tokens, and prose can drift subtly wrong in ways a symbol graph can't; spot-check the nodes on your hot paths. ★437 and young, with NanoNets behind it.

Mapped by ShipWithAI editors · links verified
README.md
Graft — open-source context layer for large codebases

Turbocharge Claude Code, Cursor, Codex, Gemini & every coding agent: faster, cheaper, with contextual understanding specific to your codebase.

Up to 4× cheaper and 3× faster, with better or no loss of correctness.

vs. a standard session, no Graft With Graft
Tool calls 46% fewer
Tokens 42% fewer
Time 60% less
Correctness equal

The table is a 162-run controlled benchmark (same agent, same file tools, only the context differs). The "up to 4× cheaper / 3× faster" figures are the biggest single-task wins from a separate real-repo sweep (PocketBase, ollama, Excalidraw). Full method & per-repo numbers ↓

Two commands — npm install and graft init — then Graft rides along in a Claude Code session, statusline synced


Contents


Quick start

npm install -g @nanonets/graft   # install the CLI, once
graft init                       # build the graph + wire it into Claude Code

That is the whole setup. graft init asks which of your coding agents to wire up, builds graft/ from your code, and drops a statusline and hooks into .claude/, so from the next session on Graft rides along in Claude Code: it pulls the matching nodes into each prompt and rebuilds the graph in the background after every turn. No daemon, no re-indexing to remember, nothing to run or maintain by default — the graph is just files.

Nothing is written until you pick. Run graft init --dry-run to see every file it would touch first, or graft init --agents claude to skip the prompt and wire Claude Code alone.

graft build adds graft/ to your .gitignore automatically — the graph is a local, regenerable cache (like node_modules), not something you commit. What you share is the wiring init dropped into .claude/; each teammate runs `graft bui

Continue your stack

What teams reach for next — and why each earns a place beside Graft. Ranked by curator confidence.