🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
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.
Builders who want Claude Code, Codex, Cursor, Gemini CLI, or Copilot to answer from a project graph instead of re-reading the whole codebase.
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
- 1macOS / Linux
curl -sSL https://raw.githubusercontent.com/kunal12203/Codex-CLI-Compact/main/install.sh | bash source ~/.zshrc # or ~/.bashrc / ~/.profile
- 2Windows (PowerShell)
irm https://raw.githubusercontent.com/kunal12203/Codex-CLI-Compact/main/install.ps1 | iex
- 3Windows (Scoop)
scoop bucket add dual-graph https://github.com/kunal12203/scoop-dual-graph scoop install dual-graph
- 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
- 5Run
dg # scan current directory dg /path/to/project # scan a specific project dg /path/to/project "add tests" # start with a prompt
- 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
Compounding Context for AI Coding Assistants
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 (
graperootpip 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 tools | GrapeRoot | |
|---|---|---|
| How context is delivered | AI pulls on demand via tool calls | Pre-loaded before every turn |
| Session memory | No | Yes — compounds across turns |
| Token budget control | AI decides | Hard-capped per turn |
| Turns spent exploring | Multiple | Zero |
| Savings compound | No | Yes — each turn gets cheaper |
Results
Benchmarked across multiple real-world codebases (7,700+ files) and 50+ engineering prompts:
| Metric | Without GrapeRoot | With GrapeRoot |
|---|---|---|
| Cost per prompt | $0.49 | $0.27 |
| Avg turns per task | 11.7 | 3.5 |
| Avg response time | 172s | 124s |
| Quality (scored) | 76.6 / 100 | 86.6 / 100 |
| Cost win rate | — | 10 out of 10 prompts |
Cost reduction by task type
| Task type | Cost reduction |
|---|---|
| Migration & architecture design | up to 81% |
| Performance analysis | up to 80% |
| Testing & test generation | up to 76% |
| Full-stack debugging | up to 73% |
| Feature development | up to 71% |
| Code explanation & audit | up 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
| Tool | Command | Status |
|---|---|---|
| Claude Code | dgc | ✅ Full support |
| OpenAI Codex CLI | dg | ✅ Full support |
| Cursor | graperoot . --cursor | ✅ Full support |
| Gemini CLI | graperoot . --gemini | ✅ Full support |
| OpenCode | graperoot . --opencode / dgo | ✅ Full support |
| GitHub Copilot | graperoot . --copilot | ✅ Full support |
| OpenClaw | graperoot . --openclaw | ✅ Full support |
| Kilocode | graperoot . --kilocode | ✅ Full support |
| MiMo Code | graperoot . --mimocode | ✅ Full support |
| Antigravity | graperoot . --antigravity | ✅ Full support |
| Kiro CLI | graperoot . --kiro | ✅ Full support |
| Command Code | graperoot . --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(notclaudedirectly) 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.
| Region | OpenAI-compatible base URL | Anthropic-compatible base URL |
|---|---|---|
global_en | https://api.minimax.io/v1 | https://api.minimax.io/anthropic |
cn_zh | https://api.minimaxi.com/v1 | https://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
- Graph scan — on first run, GrapeRoot extracts files, functions, classes, and import relationships into a local graph stored in
.dual-graph/. - 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.
- Session memory — files you've read, edited, or queried are weighted higher in future turns. Context compounds.
- 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):
| File | Description |
|---|---|
info_graph.json | Semantic graph: files, symbols, edges |
chat_action_graph.json | Session memory: reads, edits, queries |
context-store.json | Persistent decisions/tasks/facts across sessions |
Global install at ~/.dual-graph/:
| File | Description |
|---|---|
dgc.ps1 / dg.ps1 | Launcher scripts (auto-updated) |
venv/ | Python virtual environment |
version.txt | Installed version |
Configuration
All optional, via environment variables:
| Variable | Default | Description |
|---|---|---|
DG_HARD_MAX_READ_CHARS | 4000 | Max characters per file read |
DG_TURN_READ_BUDGET_CHARS | 18000 | Total read budget per turn |
DG_FALLBACK_MAX_CALLS_PER_TURN | 1 | Max fallback grep calls per turn |
DG_RETRIEVE_CACHE_TTL_SEC | 900 | Retrieval cache TTL (15 min) |
DG_MCP_PORT | auto (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?
Star History
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
- .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 itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More tools
The best-benchmarked open-source AI memory system. And it's free.
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.

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