[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:graft":3},"\u003Cdiv align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FNanoNets\u002Fgraft\u002FHEAD\u002Fassets\u002Fgraft-hero.png\" alt=\"Graft — open-source context layer for large codebases\" width=\"100%\" \u002F>\u003Ch3>Turbocharge Claude Code, Cursor, Codex, Gemini &amp; every coding agent: faster, cheaper, with contextual understanding specific to your codebase.\u003C\u002Fh3>\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fgraft.nanonets.ai\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwebsite-graft.nanonets.ai-546FFF?style=for-the-badge\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@nanonets\u002Fgraft\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F%40nanonets%2Fgraft?style=for-the-badge&amp;logo=npm&amp;logoColor=white&amp;label=npm\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@nanonets\u002Fgraft\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F%40nanonets%2Fgraft?style=for-the-badge&amp;logo=npm&amp;logoColor=white&amp;label=downloads\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fnodejs.org\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnode\u002Fv\u002F%40nanonets%2Fgraft?style=for-the-badge&amp;logo=nodedotjs&amp;logoColor=white\" \u002F>\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-strict-3178C6?style=for-the-badge&amp;logo=typescript&amp;logoColor=white\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-20C997?style=for-the-badge\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftelemetry-none-546FFF?style=for-the-badge\" \u002F>\n  \u003Ca href=\"https:\u002F\u002Fscorecard.dev\u002Fviewer\u002F?uri=github.com\u002FNanoNets\u002FGraft\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fossf-scorecard\u002Fgithub.com\u002FNanoNets\u002FGraft?style=for-the-badge&amp;label=openssf%20scorecard\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\u003Ch3>Up to \u003Cstrong>4× cheaper\u003C\u002Fstrong> and \u003Cstrong>3× faster\u003C\u002Fstrong>, with better or no loss of correctness.\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>vs. a standard session, no Graft\u003C\u002Fth>\n\u003Cth>With Graft\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Tool calls\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>46% fewer\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Tokens\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>42% fewer\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Time\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>60% less\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Correctness\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>equal\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Csub>The table is a 162-run controlled benchmark (same agent, same file tools, only the context differs). The \"up to 4× cheaper \u002F 3× faster\" figures are the biggest single-task wins from a separate real-repo sweep (PocketBase, ollama, Excalidraw). \u003Ca href=\"#tested-on-your-popular-repos\" rel=\"nofollow ugc noopener\">Full method &amp; per-repo numbers ↓\u003C\u002Fa>\u003C\u002Fsub>\u003C\u002Fp>\n\u003C\u002Fdiv>\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FNanoNets\u002Fgraft\u002FHEAD\u002Fassets\u002Fgraft-terminal.png\" alt=\"Two commands — npm install and graft init — then Graft rides along in a Claude Code session, statusline synced\" width=\"820\" \u002F>\n\u003C\u002Fp>\u003Chr \u002F>\n\u003Ch2>Contents\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"#quick-start\" rel=\"nofollow ugc noopener\">Quick start\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#the-problem\" rel=\"nofollow ugc noopener\">The problem\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#what-graft-does\" rel=\"nofollow ugc noopener\">What Graft does\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#how-the-graph-gets-built\" rel=\"nofollow ugc noopener\">How the graph gets built\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#whats-in-a-node\" rel=\"nofollow ugc noopener\">What's in a node\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#what-runs-where\" rel=\"nofollow ugc noopener\">What runs where\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#agent-integration\" rel=\"nofollow ugc noopener\">Agent integration\u003C\u002Fa> — \u003Ca href=\"#mcp-server\" rel=\"nofollow ugc noopener\">MCP server\u003C\u002Fa> · \u003Ca href=\"#claude-code-deep-integration\" rel=\"nofollow ugc noopener\">Claude Code (deep integration)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#cli\" rel=\"nofollow ugc noopener\">CLI\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#search--orient-graft-grep--graft-map\" rel=\"nofollow ugc noopener\">Search &amp; orient\u003C\u002Fa> (\u003Ccode>graft grep\u003C\u002Fcode> \u002F \u003Ccode>graft map\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#monorepos--multi-repo-folders\" rel=\"nofollow ugc noopener\">Monorepos &amp; multi-repo folders\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#visualize-it-graft-viz\" rel=\"nofollow ugc noopener\">Visualize it\u003C\u002Fa> (\u003Ccode>graft viz\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#benchmark\" rel=\"nofollow ugc noopener\">Benchmark\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#tested-on-your-popular-repos\" rel=\"nofollow ugc noopener\">Tested on your popular repos\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#development\" rel=\"nofollow ugc noopener\">Development\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"#license\" rel=\"nofollow ugc noopener\">License\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>Quick start\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install -g @nanonets\u002Fgraft   # install the CLI, once\ngraft init                       # build the graph + wire it into Claude Code\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>That is the whole setup. \u003Ccode>graft init\u003C\u002Fcode> asks which of your coding agents to wire up, builds \u003Ccode>graft\u002F\u003C\u002Fcode> from your code, and drops a statusline and hooks into \u003Ccode>.claude\u002F\u003C\u002Fcode>, 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.\u003C\u002Fp>\n\u003Cp>Nothing is written until you pick. Run \u003Ccode>graft init --dry-run\u003C\u002Fcode> to see every file it would touch first, or \u003Ccode>graft init --agents claude\u003C\u002Fcode> to skip the prompt and wire Claude Code alone.\u003C\u002Fp>\n\u003Cp>\u003Ccode>graft build\u003C\u002Fcode> adds \u003Ccode>graft\u002F\u003C\u002Fcode> to your \u003Ccode>.gitignore\u003C\u002Fcode> automatically — the graph is a local, regenerable cache (like \u003Ccode>node_modules\u003C\u002Fcode>), not something you commit. What you share is the wiring \u003Ccode>init\u003C\u002Fcode> dropped into \u003Ccode>.claude\u002F\u003C\u002Fcode>; each teammate runs `graft bui\u003C\u002Fp>\n",1785430101656]