v2.5.0 — The Last Excuse · PageRank 23x faster (149.8ms → 6.6ms on a 10k-node graph). Indexing goes parallel across every core. A 178k-LOC codebase cold-indexes in 1.6s. "Indexing is slow" was the last argument for letting your agent navigate with
grep -r— it's gone. Every number reproducible: BENCHMARKS.md · Release notes →
Why Arbor
Most AI coding tools treat code as text. Arbor builds a semantic dependency graph — functions, classes, and modules as nodes; calls, imports, and inheritance as edges — then answers execution-aware questions with deterministic precision:
| Question | Arbor answer |
|---|---|
| If I change this symbol, what breaks? | Blast radius with depth, confidence, and risk level |
| Who calls this — directly and transitively? | Caller/callee traversal on the call graph |
| What's the shortest path between A and B? | A* path through real dependencies |
| Is this PR too risky to merge? | CI gate on blast-radius thresholds |
No keyword guessing. No embedding hallucinations. One graph, every interface.
What's new in v2.5.0
| Change | Measured |
|---|---|
| PageRank rewrite — flat call-graph adjacency replaces per-iteration traversal | 149.8ms → 6.6ms on a 10k-node graph (23x), verified side-by-side vs the old implementation |
| Parallel indexing — parse fans out across all cores, deterministic assembly | Arbor: 253ms → 95ms · tokio (178k LOC): 2.7s → 1.6s |
| Warm-start centrality — watcher recomputes seed from previous scores | Converges in ~2 rounds after a one-file patch instead of the full 20-iteration budget |
| Convergence early-exit | Iteration stops at 1e-9 max delta — the budget is a ceiling, not a sentence |
Zero breaking changes — cargo install arbor-graph-cli --force and everything is just faster. Think a number is wrong? cargo bench -p arbor-graph and prove it: BENCHMARKS.md.
| Feature | What it does |
|---|---|
MCP 2026-07-28 |
Stateless server/discover, response caching (ttlMs/cacheScope), dual-version fallback for 2025-03-26 clients |
| Tasks extension | tasks/get · tasks/update · tasks/cancel — cold-start indexing returns task handles, not errors |
| MCP Apps | Interactive blast-radius graph (ui://arbor/blast-radius) and architecture map (ui://arbor/architecture-map) inside agent hosts |
| HTTP transport | arbor bridge --http --port 3333 — stateless MCP behind load balancers |
Real get_blast_radius |
Git-diff-aware impact analysis via shared arbor-graph::compute_blast_radius |
| Pagination | offset / limit / hasMore on search_symbols and get_map |
| Benchmarks | Criterion suite + CI regression gate — see BENCHMARKS.md |
Quickstart
# Install
cargo install arbor-graph-cli
# Index your project (one command)
cd your-project && arbor setup
# Explore before you edit
arbor map . --exclude-test # ranked project skeleton (~1k tokens)
arbor refactor parse_file # blast radius of changing a symbol
arbor diff # impact of uncommitted git changes
# Wire up your AI agent
claude mcp add --transport stdio --scope project arbor -- arbor bridge
Agent workflow: call get_map first → search_symbols / get_file_graph to locate code → Read only the target file. Full MCP guide →
For AI agents (MCP)
Arbor ships a production MCP server via arbor bridge. Stdio is the default; HTTP is opt-in for remote/enterprise.
# Stdio (Claude, Cursor, VS Code)
arbor bridge
# HTTP (MCP 2026-07-28)
arbor bridge --http --port 3333
Cursor / VS Code
{
"mcpServers": {
"arbor": {
"type": "stdio",
"command": "arbor",
"args": ["bridge"]
}
}
}
Templates: templates/mcp/ · Setup scripts: scripts/setup-mcp.sh · scripts/setup-mcp.ps1
16 MCP tools
| Tier | Tools | Use when |
|---|---|---|
| Orientation | get_map |
First call — token-budgeted project skeleton ranked by PageRank |
| Surgical | list_entry_points · get_callers · get_callees · search_symbols · get_file_graph · get_node_detail |
Navigate to a specific symbol or file |
| Broad | get_logic_path · analyze_impact · find_path · get_knowledge_path |
Trace dependencies, blast radius, paths |
| Agent-native | get_blast_radius · explain_symbol · audit_security · get_architecture_overview · batch_query |
PR impact, onboarding, security audit, bulk lookup |
Every tool returns { ok, tool, data, meta: { suggested_next_tool, suggested_next_args } } so agents chain calls without re-prompting.
Registry: io.github.Anandb71/arbor · Official API lookup · Glama listing
CLI reference
| Command | Description |
|---|---|
arbor setup |
One-shot init + index |
arbor map |
Ranked, token-budgeted project skeleton |
arbor query <term> |
Fuzzy symbol search (supports | OR) |
arbor callers / callees <sym> |
One-hop graph traversal |
arbor entry-points |
HTTP handlers, main, jobs, webhooks |
arbor file-graph <path> |
Symbols + edges in one file |
arbor inspect <sym> |
Full symbol detail |
arbor path <a> <b> |
Shortest call-graph path |
arbor refactor <sym> |
Blast radius before refactoring |
arbor diff |
Git-change impact report |
arbor check |
CI safety gate (--max-blast-radius N) |
arbor summary |
Auto-generate PR description |
arbor agent review |
Autonomous PR architecture review |
arbor agent onboard |
Codebase onboarding guide |
arbor agent guard |
Real-time architectural safety gate |
arbor bridge |
MCP server (add --http for HTTP transport) |
arbor watch |
Live re-index on file changes |
arbor gui |
Native desktop UI |
All query commands support --json. map additionally supports --tokens N, --focus "pattern", --focus-changed.
Visual tour
Full recording: media/recording-2026-01-13.mp4
Installation
# Rust / Cargo
cargo install arbor-graph-cli
# Homebrew (macOS/Linux)
brew install Anandb71/tap/arbor
# Scoop (Windows)
scoop bucket add arbor https://github.com/Anandb71/arbor && scoop install arbor
# npm wrapper (cross-platform)
npx @anandb71/arbor-cli
# Docker
docker pull ghcr.io/anandb71/arbor:latest
No-Rust installers:
- macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.sh | bash - Windows:
irm https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.ps1 | iex
Pinned installs: docs/INSTALL.md
Language support
Production parsers: Rust · TypeScript / JavaScript · Python · Go · Java · C / C++ · C# · Dart
Fallback parsers: Kotlin · Swift · Ruby · PHP · Shell
CI & pull requests
arbor diff --markdown
arbor check --max-blast-radius 30 --markdown
arbor summary
GitHub Action (pre-built binary, ~5s vs ~3–5min compile):
name: Arbor Check
on: [pull_request]
jobs:
arbor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: Anandb71/[email protected]
with:
command: check . --max-blast-radius 30 --markdown
comment-on-pr: true
github-token: ${{ secrets.GITHUB_TOKEN }}
Architecture
arbor-core (Tree-sitter parsing)
└── arbor-graph (petgraph + PageRank + impact analysis)
├── arbor-cli — CLI + MCP bridge
├── arbor-mcp — MCP protocol server
├── arbor-server — WebSocket JSON-RPC
├── arbor-watcher — incremental file watcher
└── arbor-gui — desktop UI
Docs: Quickstart · Architecture · Graph schema · MCP integration · Benchmarks · Roadmap · Philosophy
Release channels: GitHub Releases · crates.io · GHCR · npm · VS Code / Open VSX · Homebrew · Scoop — Releasing guide
Philosophy
- Consumer first — beautiful, intuitive, instantly useful
- Accessibility second — works across ecosystems, runs anywhere
- Affordability next — minimal overhead, from laptops to monoliths
Arbor is local-first: no mandatory data exfiltration, offline-capable, open source. Security policy →
Contributing
cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets --all-features
CONTRIBUTING.md · Good first issues · Code of conduct
Contributors
License
MIT — see LICENSE.
No comments yet
Be the first to share your take.