Sandbox
@kunal12203/GrapeRoot

Context launcher for Claude Code, Cursor, and Codex

GrapeRoot sits between you and your coding assistant. It builds a local semantic graph of your project and uses it to load the most relevant context into each turn, so the assistant starts with the right files instead of exploring blindly.

1,035 stars123 forksPowerShellUpdated 14d ago
Who it's for

Builders who want Claude Code, Codex, Cursor, Gemini CLI, or Copilot to answer from a project graph instead of re-reading the whole codebase.

What it delivers

You can cut down on back-and-forth by giving your assistant the right code context on the first turn.

What it does

Semantic project scan

Scans a codebase into a graph of files, symbols, imports, and call chains.

Pre-loaded prompt context

Selects relevant files automatically and packs them into the prompt before the assistant responds.

Session memory

Tracks what was read, edited, and queried so later turns use the same project memory.

MCP support

Works with MCP tools like `graph_read`, `graph_retrieve`, and `graph_neighbors` for deeper exploration.

Multi-tool launchers

Provides commands for Claude Code, Codex, OpenCode, Cursor, Gemini CLI, Copilot, and others.

Local processing

Keeps graph building and retrieval on your machine rather than sending code out.

How to get it

  1. 1macOS / Linux
    curl -sSL https://raw.githubusercontent.com/kunal12203/Codex-CLI-Compact/main/install.sh | bash
    source ~/.zshrc   # or ~/.bashrc / ~/.profile
  2. 2Windows (PowerShell)
    irm https://raw.githubusercontent.com/kunal12203/Codex-CLI-Compact/main/install.ps1 | iex
  3. 3Windows (Scoop)
    scoop bucket add dual-graph https://github.com/kunal12203/scoop-dual-graph
    scoop install dual-graph
  4. 4Run
    dgc                                      # scan current directory, launch Claude
    dgc /path/to/project                     # scan a specific project
    dgc /path/to/project "fix the login bug" # start with a prompt
  5. 5Run
    dg                              # scan current directory
    dg /path/to/project             # scan a specific project
    dg /path/to/project "add tests" # start with a prompt
  6. 6Set MINIMAX_API_KEY, then select either supported model: MiniMax-M3 or MiniMax-M2.7. The…
    export MINIMAX_API_KEY="your-api-key"
    dg --model=minimax /path/to/project
    dg --model=minimax-m3 /path/to/project
    dg --model=minimax-m2.7 /path/to/project

README


GrapeRoot   GRAPEROOTGRAPEROOT



Compounding Context for AI Coding Assistants


PyPI License Platform Discord Stars


Website · Docs · Benchmarks · Discord



🌐 Read this in your language: English · 中文 · Español · हिंदी · Français · Deutsch · 日本語 · 한국어 · Português · Русский · العربية · Türkçe · Bahasa Indonesia


What is GrapeRoot?

GrapeRoot is an open-source launcher that sits between you and your AI coding assistant. It builds a semantic graph of your codebase — files, symbols, imports, call chains — and pre-loads exactly the right code into every prompt before your AI sees it.

The launcher scripts in this repo are Apache 2.0. The graph engine (graperoot pip package) is proprietary.

The result: your AI spends tokens reasoning, not exploring.

You run: dgc /path/to/project
              ↓
1. Project scanned → semantic graph built (files, symbols, imports)
2. You ask a question
3. Graph identifies the relevant files → packs them into context
4. AI gets your question + the right code already loaded
5. Fewer turns, fewer tokens, better answers

Token savings compound across a session. The graph remembers which files were read, edited, and queried — each turn gets cheaper.


Other Tools vs GrapeRoot

Other tools (CodeGraph, code-graph-mcp, and similar) give your AI a graph and let it explore:

You ask a question
  → AI calls search_symbol / get_callers / trace_route
  → AI reads results, decides what else to look up
  → AI calls more tools
  → AI finally has enough context to answer

Your AI spends turns exploring before it can reason.


GrapeRoot pre-loads the right context before your AI sees your question:

You ask a question
  → Graph identifies relevant files automatically
  → Files packed into the prompt
  → AI answers immediately

No exploration. No extra tool calls. Your AI starts reasoning from turn one.


Other toolsGrapeRoot
How context is deliveredAI pulls on demand via tool callsPre-loaded before every turn
Session memoryNoYes — compounds across turns
Token budget controlAI decidesHard-capped per turn
Turns spent exploringMultipleZero
Savings compoundNoYes — each turn gets cheaper

Results

Benchmarked across multiple real-world codebases (7,700+ files) and 50+ engineering prompts:

MetricWithout GrapeRootWith GrapeRoot
Cost per prompt$0.49$0.27
Avg turns per task11.73.5
Avg response time172s124s
Quality (scored)76.6 / 10086.6 / 100
Cost win rate10 out of 10 prompts

Cost reduction by task type

Task typeCost reduction
Migration & architecture designup to 81%
Performance analysisup to 80%
Testing & test generationup to 76%
Full-stack debuggingup to 73%
Feature developmentup to 71%
Code explanation & auditup to 55%
Large codebase (7k+ files, avg)43% average

Savings compound across a session — a token avoided on turn 3 also skips cache re-billing on every subsequent turn. Quality stays equal or improves on every task type above.

Full benchmark methodology and results: graperoot.dev/benchmarks


Supported AI Tools

ToolCommandStatus
Claude Codedgc✅ Full support
OpenAI Codex CLIdg✅ Full support
Cursorgraperoot . --cursor✅ Full support
Gemini CLIgraperoot . --gemini✅ Full support
OpenCodegraperoot . --opencode / dgo✅ Full support
GitHub Copilotgraperoot . --copilot✅ Full support
OpenClawgraperoot . --openclaw✅ Full support
Kilocodegraperoot . --kilocode✅ Full support
MiMo Codegraperoot . --mimocode✅ Full support
Antigravitygraperoot . --antigravity✅ Full support
Kiro CLIgraperoot . --kiro✅ Full support
Command Codegraperoot . --command-code✅ Full support

Supported Languages

TypeScript · JavaScript · Python · Go · Swift · Rust · Java · Kotlin · Scala · C# · Ruby · PHP


Install

macOS / Linux:

curl -sSL https://raw.githubusercontent.com/kunal12203/Codex-CLI-Compact/main/install.sh | bash
source ~/.zshrc   # or ~/.bashrc / ~/.profile

Windows (PowerShell):

irm https://raw.githubusercontent.com/kunal12203/Codex-CLI-Compact/main/install.ps1 | iex

Windows (Scoop):

scoop bucket add dual-graph https://github.com/kunal12203/scoop-dual-graph
scoop install dual-graph

Prerequisites: Python 3.10+, Node.js 18+, and one of the supported AI tools. The installer detects missing tools and offers to install them automatically.


Usage

Important: Always use dgc (not claude directly) to ensure the MCP server is running.

Claude Code

dgc                                      # scan current directory, launch Claude
dgc /path/to/project                     # scan a specific project
dgc /path/to/project "fix the login bug" # start with a prompt

OpenAI Codex CLI

dg                              # scan current directory
dg /path/to/project             # scan a specific project
dg /path/to/project "add tests" # start with a prompt

MiniMax

Set MINIMAX_API_KEY, then select either supported model: MiniMax-M3 or MiniMax-M2.7. The minimax alias uses MiniMax-M3.

export MINIMAX_API_KEY="your-api-key"
dg --model=minimax /path/to/project
dg --model=minimax-m3 /path/to/project
dg --model=minimax-m2.7 /path/to/project

MINIMAX_REGION selects the endpoint region and defaults to global_en. MINIMAX_API_MODE selects the compatible API mode and defaults to openai; set it to anthropic to use the Anthropic-compatible endpoint. The launcher uses a 1,000,000-token context window for MiniMax-M3 and a 204,800-token context window for MiniMax-M2.7.

RegionOpenAI-compatible base URLAnthropic-compatible base URL
global_enhttps://api.minimax.io/v1https://api.minimax.io/anthropic
cn_zhhttps://api.minimaxi.com/v1https://api.minimaxi.com/anthropic
MINIMAX_REGION=cn_zh dg --model=minimax-m3 /path/to/project
MINIMAX_API_MODE=anthropic dgc --model=minimax-m2.7 /path/to/project

Interactive Picker (new in v3.9.99)

graperoot          # shows directory confirm + arrow-key tool picker
graperoot .        # same, picks from current directory
graperoot --version   # print current version
graperoot --update    # force self-update

OpenCode

dgo                             # scan current directory
dgo /path/to/project            # scan a specific project
dgo /path/to/project "refactor" # start with a prompt

All Tools via graperoot

graperoot . --cursor          # Cursor
graperoot . --gemini          # Gemini CLI
graperoot . --opencode        # OpenCode
graperoot . --copilot         # GitHub Copilot
graperoot . --openclaw        # OpenClaw
graperoot . --kilocode        # Kilocode
graperoot . --mimocode        # MiMo Code
graperoot . --kiro            # Kiro CLI
graperoot . --command-code    # Command Code
graperoot /path --gemini "add tests"   # specific project + prompt

Windows

dgc .                          # from inside the project directory
dgc "D:\projects\my-app"       # any drive, any path
dg "C:\work\backend"           # Codex CLI
dgc --gemini "D:\projects\app" # Gemini CLI on Windows

How It Works

  1. Graph scan — on first run, GrapeRoot extracts files, functions, classes, and import relationships into a local graph stored in .dual-graph/.
  2. Context retrieval — each time you ask a question, the graph ranks the most relevant files and packs them into the prompt before your AI sees it.
  3. Session memory — files you've read, edited, or queried are weighted higher in future turns. Context compounds.
  4. MCP tools — your AI can still drill deeper via graph-aware tools (graph_read, graph_retrieve, graph_neighbors) when it needs to explore.

All processing is local. No code leaves your machine.


Data & Files

All data lives in <project>/.dual-graph/ (auto-added to .gitignore):

FileDescription
info_graph.jsonSemantic graph: files, symbols, edges
chat_action_graph.jsonSession memory: reads, edits, queries
context-store.jsonPersistent decisions/tasks/facts across sessions

Global install at ~/.dual-graph/:

FileDescription
dgc.ps1 / dg.ps1Launcher scripts (auto-updated)
venv/Python virtual environment
version.txtInstalled version

Configuration

All optional, via environment variables:

VariableDefaultDescription
DG_HARD_MAX_READ_CHARS4000Max characters per file read
DG_TURN_READ_BUDGET_CHARS18000Total read budget per turn
DG_FALLBACK_MAX_CALLS_PER_TURN1Max fallback grep calls per turn
DG_RETRIEVE_CACHE_TTL_SEC900Retrieval cache TTL (15 min)
DG_MCP_PORTauto (8080–8099)Force a specific MCP server port

Self-Update

The launcher checks for updates on every run and auto-updates silently. To force an update:

graperoot --update

To disable auto-update (shows a notice instead):

graperoot --no-auto-update

To re-enable:

graperoot --auto-update

Current version: 3.10.19


Telemetry

GrapeRoot collects anonymous crash reports to help us fix bugs. What's sent:

  • Error type and which step failed (e.g. "scan", "mcp start")
  • OS and Python version
  • GrapeRoot version

What's never sent: your code, file paths, project names, prompts, or any personal data.

Telemetry is on by default. To opt out:

graperoot --no-telemetry    # disable
graperoot --telemetry       # re-enable

Troubleshooting

"MCP Server Connection Failed"

Always use dgc instead of claude directly. dgc starts the MCP server automatically.

# Fix:
claude mcp remove dual-graph
dgc   # re-registers everything

Full troubleshooting guide

See TROUBLESHOOTING.md or graperoot.dev/docs.


Contributing

The launcher scripts (bin/) are open source under Apache 2.0. PRs welcome — bug fixes, new AI assistant support, install improvements, docs.

Note: The graph engine (graperoot pip package) is proprietary. The launchers and tooling in this repo are fully open source.


Community

Have a question, found a bug, or want to share feedback?

Join the Discord →


Star History

Star History ChartStar History Chart

License

Launcher scripts and tooling in this repository: Apache License 2.0

The graperoot graph engine (PyPI): proprietary. See graperoot.dev.


Made with ❤️ · graperoot.dev · Discord

Files in the repo

Repository payload16 top-level entries
  • .github
  • assets
  • benchmark
  • bin
  • dashboard
  • data
  • docs
  • examples
  • .gitattributes
  • .gitignore
  • Dockerfile
  • install.ps1
  • install.sh
  • LICENSE
  • README.md
  • requirements.txt

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k