Skip to content

Anandb71/arbor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

242 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Arbor

Arbor

Graph‑Native Intelligence for Codebases

Know what breaks before you break it.

CI Release channels Glama MCP Directory License

Status (March 2026)

  • Stable line: release/v1.5
  • Current feature line: release/v1.6
  • Main development trunk: main

Arbor is currently in final polish for the v1.6 release line.

Highlights

  • Accurate Token Counting β€” tiktoken (cl100k_base) replaces heuristic estimates for precise LLM context budgets
  • Fuzzy Symbol Suggestions β€” Typo tolerance with Jaro-Winkler matching: arbor refactor autth β†’ "Did you mean: auth?"
  • Enhanced MCP/AI Integration β€” Rich JSON output with confidence, roles, and edge explanations for Claude/Cursor
  • Git-Aware Risk Workflows β€” arbor diff, arbor check, and arbor open for refactor confidence
  • Incremental Refresh β€” arbor index --changed-only for faster re-index during active branches
  • Better Python UX β€” Empty __init__.py handled silently (no false warnings)

Arbor refactor demo

What is Arbor?

Arbor is a local‑first impact analysis engine for large codebases. Instead of treating code as text, Arbor parses your project into a semantic dependency graph. This lets you trace real execution pathsβ€”callers, callees, imports, inheritance, and cross‑file relationshipsβ€”so you can confidently understand the consequences of change.

Unlike keyword search or vector‑based RAG systems, Arbor answers questions like:

β€œIf I change this function, what actually breaks?”

with structural certainty, not probabilistic guesses.


Example: Blast Radius Detection

Before refactoring detect_language, inspect its true impact:

$ arbor refactor detect_language

Analyzing detect_language...

Confidence: High | Role: Core Logic
β€’ 15 callers, 3 dependencies
β€’ Well-connected with manageable impact

> 18 nodes affected (4 direct, 14 transitive)

Immediate Impact:
  β€’ parse_file (function)
  β€’ get_parser (function)

Recommendation: Proceed with caution. Verify affected callers.

This is execution‑aware analysis, not text matching.


Graphical Interface

Arbor ships with a native GUI for interactive impact analysis.

arbor gui

Arbor GUI

GUI Capabilities

  • Symbol Search – Instantly locate functions, classes, and methods
  • Impact Visualization – Explore direct and transitive dependencies
  • Privacy‑Safe – File paths are hidden by default for clean screenshots
  • Export – Copy results as Markdown for PRs and design docs

The CLI and GUI share the same analysis engineβ€”no feature gaps.


Quick Start

  1. Install Arbor (CLI + GUI):

    cargo install arbor-graph-cli

Or use one-command installers (no Rust toolchain required):

  • macOS/Linux: curl -fsSL https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.sh | bash
  • Windows (PowerShell): irm https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.ps1 | iex

See Installation Guide for version pinning and manual assets.

  1. One-shot setup + first index:
cd your-project
arbor setup
  1. Run Impact Analysis:

    arbor refactor <symbol-name>

For git-aware workflows:

arbor diff
arbor check --max-blast-radius 30
arbor open <symbol>
  1. Launch the GUI:

    arbor gui

You can run Arbor from any nested subdirectory; it automatically resolves to your project root.

πŸ“˜ See the Quickstart Guide for advanced workflows.


Release Channels & Branches

To keep maintenance and feature work clean:

  • main β†’ ongoing development
  • release/v1.5 β†’ maintenance-only fixes for 1.5.x
  • release/v1.6 β†’ 1.6 feature delivery and stabilization

This avoids shipping new features into older maintenance branches and keeps backports explicit.


MCP Directory Listing

Arbor is listed on Glama MCP Directory:


Documentation Hub


Why Arbor?

Most AI coding tools treat code as unstructured text, relying on vector similarity. This approach is fastβ€”but imprecise.

Arbor builds a graph.

Every function, class, and module is a node. Every call, import, and reference is an edge. When you ask a question, Arbor follows the graphβ€”the same way your program executes.

Traditional RAG:              Arbor Graph Analysis:

"auth" β†’ 47 results          AuthController
(keyword similarity)           β”œβ”€β”€ calls β†’ TokenMiddleware
                               β”œβ”€β”€ queries β†’ UserRepository
                               └── emits β†’ AuthEvent

The result: deterministic, explainable answers.


Core Features

Native GUI

A global symbol table resolves:

  • Imports and re‑exports
  • Inheritance and interfaces
  • Overloads and namespaces

User in auth.ts is never confused with User in types.ts.


Supported Languages

Language Status Parser Coverage
Rust βœ… Functions, Structs, Traits, Impls, Macros
TypeScript βœ… Classes, Interfaces, Types, Imports, JSX
JavaScript βœ… Functions, Classes, Vars, Imports
Python βœ… Classes, Functions, Imports, Decorators
Go βœ… Structs, Interfaces, Funcs, Methods
Java βœ… Classes, Interfaces, Methods, Fields
C βœ… Structs, Functions, Enums, Typedefs
C++ βœ… Classes, Namespaces, Templates
C# βœ… Classes, Methods, Properties, Interfaces
Dart βœ… Classes, Mixins, Widgets

Python note: Decorators, __init__.py, and @dataclass are statically analyzed. Dynamic dispatch is flagged with reduced confidence.


Build from Source

git clone https://github.com/Anandb71/arbor.git
cd arbor/crates
cargo build --release

Linux GUI Dependencies

sudo apt-get install -y pkg-config libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev \
  libxkbcommon-dev libgtk-3-dev libfontconfig1-dev libasound2-dev libssl-dev cmake

Troubleshooting

Symbol not found?

  • .gitignore – Arbor respects it (arbor status --files)
  • File type – Ensure the extension is supported
  • Empty files – Skipped (except __init__.py)
  • Dynamic calls – eval / runtime reflection may not resolve
  • Case sensitivity – Use arbor query <partial> to search

Empty graph?

Run arbor status to verify file detection and parser health.

Need environment diagnostics?

Run arbor doctor (or arbor check-health) to verify ports, project structure, and integration readiness.

Repo suddenly huge (multi-GB)?

Rust and Flutter build artifacts can grow quickly during iterative testing.

  • Windows PowerShell: ./scripts/clean.ps1
  • macOS/Linux: ./scripts/clean.sh
  • Deeper cleanup (also removes local Arbor/Flutter cache artifacts):
    • PowerShell: ./scripts/clean.ps1 -Deep
    • Bash: ./scripts/clean.sh --deep

This is safe for source code; it only removes generated artifacts that can be rebuilt.


Security Model

Arbor is Local‑First by design:

  • No data exfiltration
  • Fully offline
  • No API keys
  • Fully open source

Your code never leaves your machine.


License

MIT License. See LICENSE for details.

⭐ Star Arbor on GitHub


Contributors

Anandb71 holg cabinlab Karthiksenthilkumar1 sanjayy-j sathguru07

6 contributors | View all