Open source · Runs locally · MIT

31% fewer tool calls. 23% less cost. 17% lower latency.

That's what your agent gets from reading the repo's context graph before it works. The graph is a folder of plain markdown files, built from your code in one command and kept fresh as you work — no server, no database, no keys.

View source

No database, no server, no embeddings — just files, built locally. Set it up in about a minute.

graft/ — 41 entities local · git-ignored
graft/
  auth-service.md
  billing.md
  webhooks.md · +38 more
# auth-service.md
Rotates tokens every 15 min. Fronts all login
traffic; validated by [[api-gateway]].
depends on → [[token-store]], [[user-db]]
used by   → [[billing]], [[webhooks]]
the files are nodes, the links are edges billing.md rebuilt when the code changed

How it works

Build it. It rides along. Your agent reads it.

No pipelines, no server to run. The graph is a local cache that rebuilds itself; commit the .claude/ wiring and every teammate's agent picks it up.

01

Point it at your repo

It builds graft/ — one markdown file per system, API, or concept, linked to each other. The files are the nodes, the links are the edges.

$ graft build --deep
344 files41 entities · written to graft/

02

It rides along

The graph is a local, git-ignored cache — graft build adds it to .gitignore for you. Commit the .claude/ wiring instead; every teammate runs graft build for their own, and it rebuilds in the background as the code changes.

$ git add .claude
graft/ git-ignored · rebuilt locally

03

Your agent reads it

Before doing work, from the CLI or any agent over MCP — so it starts knowing the codebase instead of rediscovering it from scratch.

? how does auth work
reads auth-service.md → api-gateway

The proof

Same model, same tools. The graph is the only difference.

On a real 344-file repo: agents that read the graph first, vs. agents that went in cold.

−31%
tool calls
−23%
cost
−17%
latency

The graph isn't magic — it's just that reading a few linked files beats rediscovering the codebase from scratch every single time.

Quickstart

Set it up in about a minute.

# in your repo
graft build --deep  # builds graft/ (git-ignored, local)
git add .claude && git commit  # share the wiring; teammates build their own

# keep it fresh — reports drift since your last build
graft check

Everything runs on your machine — no accounts, no cloud calls, no keys. Building the graph uses a local model (Ollama); set OPENROUTER_API_KEY to use a cloud model for better summaries instead. Local stays the default.