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

Adding languages →


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

  1. Consumer first — beautiful, intuitive, instantly useful
  2. Accessibility second — works across ecosystems, runs anywhere
  3. 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.