On-screen text
Graft
Turbocharge Claude Code, Cursor, Codex, Gemini & every coding agent: faster, cheaper, with contextual understanding specific to your codebase.
WEBSITE
GRAFT.NANONETS.AI
NPM
v0.8.1
DOWNLOADS
3.2K/MONTH
NODE
>20
TYPESCRIPT
STRICT
LICENSE
MIT
TELEMETRY
NONE
OPENSSF SCORECARD
6.7
Up to 4x cheaper and 3x faster, with better or no loss of correctness.
vs. a standard session, no Graft
With Graft
Tool calls
48% fewer
Tokens
42% fewer
Time
62% less
Correctness
equal
The table is a 102-run controlled benchmark (same agent, same file tools, only the context differs). The "Up to 4x cheaper / 3x faster" figures are the biggest single-task wins from a separate real-repo sweep (PocketBase, Ollama, Excalidraw).
Full method & per-repo numbers
npm install -g @nanonetshq/graft
graft init
# install the CLI, once
# build the graph & wire it into
# Claude
Welcome back.
# Graft is active.
# Build prompt: worst beta Claude code
# Graft prompt: worst beta Claude code
# Claude
# "Where does capture happen?"
# Graft
# 482 nodes / 857 edges. 79% enriched. - export
Contents
Quick start
The problem
What Graft does
How the graph gets built
What's in a node
What runs where
Agent integration - MCP server - Claude Code (deep integration)
CLI
Search & orient (graft grep / graft map)
Monorepos & multi-repo folders
Visualize it (graft viz)
Benchmark
Tested on your popular repos
Development
License
Quick start
npm install -g @nanonetshq/graft
graft init
# install the CLI, once
# build the graph & wire it into
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 that dropped into .claude/, each teammate runs graft build to generate their own graph.
git add --claude && git commit -m "wire in graft"
Prefer not to install globally? npx @nanonetshq/graft init works the same way.
The problem
Every task, your coding agent starts blind. Before it changes anything, it re-explores the repo: grep a term, open a file, follow an import, back out, try again. It is rebuilding a picture of a codebase it mapped an hour ago and threw away. That rediscovery burns most of a run's tool calls, tokens, and latency, and it is pure overhead.
Discarded. Whatever the agent figured out dies with the session.