{"id":42797718,"url":"https://github.com/Anandb71/arbor","last_synced_at":"2026-02-09T16:01:05.774Z","repository":{"id":331557401,"uuid":"1127717919","full_name":"Anandb71/arbor","owner":"Anandb71","description":"Graph-native code intelligence that replaces embedding-based RAG with deterministic program understanding.","archived":false,"fork":false,"pushed_at":"2026-02-01T17:19:29.000Z","size":40323,"stargazers_count":79,"open_issues_count":2,"forks_count":14,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-02T01:30:23.130Z","etag":null,"topics":["ai-tools","ast","code-analysis","code-analysis-tool","developer-tools","flutter","graph","mcp","model-context-protocol","rust","static-analysis","tree-sitter","visualization"],"latest_commit_sha":null,"homepage":"https://www.github.com/anandb71/arbor","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Anandb71.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-04T13:11:55.000Z","updated_at":"2026-02-01T17:10:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Anandb71/arbor","commit_stats":null,"previous_names":["anandb71/arbor"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/Anandb71/arbor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anandb71%2Farbor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anandb71%2Farbor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anandb71%2Farbor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anandb71%2Farbor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anandb71","download_url":"https://codeload.github.com/Anandb71/arbor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anandb71%2Farbor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29271848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T13:47:44.167Z","status":"ssl_error","status_checked_at":"2026-02-09T13:47:43.721Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","ast","code-analysis","code-analysis-tool","developer-tools","flutter","graph","mcp","model-context-protocol","rust","static-analysis","tree-sitter","visualization"],"created_at":"2026-01-30T02:00:22.784Z","updated_at":"2026-02-09T16:01:05.767Z","avatar_url":"https://github.com/Anandb71.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/arbor-logo.svg\" alt=\"Arbor\" width=\"120\" height=\"120\" /\u003e\n\u003c/p\u003e\n\n# Arbor v1.5.0\n\n**Graph‑Native Intelligence for Codebases**\n\n\u003e Know what breaks *before* you break it.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Anandb71/arbor/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Anandb71/arbor/rust.yml?style=flat-square\u0026label=CI\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/release-v1.5.0-blue?style=flat-square\" alt=\"Release\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-green?style=flat-square\" alt=\"License\" /\u003e\n\u003c/p\u003e\n\n## What's New in v1.5\n\n- **Accurate Token Counting** — tiktoken (cl100k_base) replaces heuristic estimates for precise LLM context budgets\n- **Fuzzy Symbol Suggestions** — Typo tolerance with Jaro-Winkler matching: `arbor refactor autth` → \"Did you mean: `auth`?\"\n- **Enhanced MCP/AI Integration** — Rich JSON output with confidence, roles, and edge explanations for Claude/Cursor\n- **GUI Version Watermark** — \"Arbor v1.5\" badge for brand visibility in screenshots\n- **Better Python UX** — Empty `__init__.py` handled silently (no false warnings)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/arbor-demo.gif\" alt=\"Arbor refactor demo\" width=\"700\" /\u003e\n\u003c/p\u003e\n\n## Overview\n---\n\n## What is Arbor?\n\nArbor 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.\n\nUnlike keyword search or vector‑based RAG systems, Arbor answers questions like:\n\n\u003e *“If I change this function, what actually breaks?”*\n\nwith **structural certainty**, not probabilistic guesses.\n\n---\n\n## Example: Blast Radius Detection\n\nBefore refactoring `detect_language`, inspect its true impact:\n\n```bash\n$ arbor refactor detect_language\n\nAnalyzing detect_language...\n\nConfidence: High | Role: Core Logic\n• 15 callers, 3 dependencies\n• Well-connected with manageable impact\n\n\u003e 18 nodes affected (4 direct, 14 transitive)\n\nImmediate Impact:\n  • parse_file (function)\n  • get_parser (function)\n\nRecommendation: Proceed with caution. Verify affected callers.\n```\n\nThis is **execution‑aware analysis**, not text matching.\n\n---\n\n## Graphical Interface\n\nArbor v1.4 ships with a **native GUI** for interactive impact analysis.\n\n```bash\narbor gui\n```\n\n![Arbor GUI](docs/gui_screenshot.png)\n\n### GUI Capabilities\n\n* **Symbol Search** – Instantly locate functions, classes, and methods\n* **Impact Visualization** – Explore direct and transitive dependencies\n* **Privacy‑Safe** – File paths are hidden by default for clean screenshots\n* **Export** – Copy results as Markdown for PRs and design docs\n\n\u003e The CLI and GUI share the *same* analysis engine—no feature gaps.\n\n---\n\n## Quick Start\n\n1. **Install Arbor** (CLI + GUI):\n\n   ```bash\n   cargo install arbor-graph-cli\n   ```\n\n2. **Run Impact Analysis**:\n\n   ```bash\n   cd your-project\n   arbor refactor \u003csymbol-name\u003e\n   ```\n\n3. **Launch the GUI**:\n\n   ```bash\n   arbor gui\n   ```\n\n📘 See the [Quickstart Guide](docs/QUICKSTART.md) for advanced workflows.\n\n---\n\n## Why Arbor?\n\nMost AI coding tools treat code as **unstructured text**, relying on vector similarity. This approach is fast—but imprecise.\n\n**Arbor builds a graph.**\n\nEvery 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*.\n\n```text\nTraditional RAG:              Arbor Graph Analysis:\n\n\"auth\" → 47 results          AuthController\n(keyword similarity)           ├── calls → TokenMiddleware\n                               ├── queries → UserRepository\n                               └── emits → AuthEvent\n```\n\nThe result: **deterministic, explainable answers**.\n\n---\n\n## Core Features\n\n### Native GUI\n\nA lightweight, high‑performance interface bundled directly with Arbor—no browser, no server.\n\n### Confidence Scoring\n\nEach result includes an **explainable confidence level**:\n\n* **High** – Fully resolved, statically verifiable paths\n* **Medium** – Partial uncertainty (e.g., polymorphism)\n* **Low** – Heuristic or dynamic resolution\n\n### Node Classification\n\nArbor infers architectural roles automatically:\n\n* **Entry Point** – APIs, CLIs, main functions\n* **Core Logic** – Domain and business rules\n* **Utility** – Widely reused helpers\n* **Adapter** – Interfaces, boundaries, and bridges\n\n### AI Bridge (MCP)\n\nArbor implements the **Model Context Protocol (MCP)**, enabling LLMs (e.g., Claude) to query the graph directly:\n\n* `find_path(start, end)` – Trace logic flow\n* `analyze_impact(node)` – Compute blast radius\n* `get_context(node)` – Retrieve semantically related code\n\n### Cross‑File Resolution\n\nA global symbol table resolves:\n\n* Imports and re‑exports\n* Inheritance and interfaces\n* Overloads and namespaces\n\n`User` in `auth.ts` is never confused with `User` in `types.ts`.\n\n---\n\n## Supported Languages\n\n| Language       | Status | Parser Coverage                           |\n| -------------- | ------ | ----------------------------------------- |\n| **Rust**       | ✅      | Functions, Structs, Traits, Impls, Macros |\n| **TypeScript** | ✅      | Classes, Interfaces, Types, Imports, JSX  |\n| **JavaScript** | ✅      | Functions, Classes, Vars, Imports         |\n| **Python**     | ✅      | Classes, Functions, Imports, Decorators   |\n| **Go**         | ✅      | Structs, Interfaces, Funcs, Methods       |\n| **Java**       | ✅      | Classes, Interfaces, Methods, Fields      |\n| **C**          | ✅      | Structs, Functions, Enums, Typedefs       |\n| **C++**        | ✅      | Classes, Namespaces, Templates            |\n| **C#**         | ✅      | Classes, Methods, Properties, Interfaces  |\n| **Dart**       | ✅      | Classes, Mixins, Widgets                  |\n\n\u003e **Python note:** Decorators, `__init__.py`, and `@dataclass` are statically analyzed. Dynamic dispatch is flagged with reduced confidence.\n\n---\n\n## Build from Source\n\n```bash\ngit clone https://github.com/Anandb71/arbor.git\ncd arbor/crates\ncargo build --release\n```\n\n### Linux GUI Dependencies\n\n```bash\nsudo apt-get install -y pkg-config libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev \\\n  libxkbcommon-dev libgtk-3-dev libfontconfig1-dev libasound2-dev libssl-dev cmake\n```\n\n---\n\n## Troubleshooting\n\n### Symbol not found?\n\n* **.gitignore** – Arbor respects it (`arbor status --files`)\n* **File type** – Ensure the extension is supported\n* **Empty files** – Skipped (except `__init__.py`)\n* **Dynamic calls** – `eval` / runtime reflection may not resolve\n* **Case sensitivity** – Use `arbor query \u003cpartial\u003e` to search\n\n### Empty graph?\n\nRun `arbor status` to verify file detection and parser health.\n\n---\n\n## Security Model\n\nArbor is **Local‑First by design**:\n\n* No data exfiltration\n* Fully offline\n* No API keys\n* Fully open source\n\nYour code never leaves your machine.\n\n---\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Anandb71/arbor\"\u003e⭐ Star Arbor on GitHub\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAnandb71%2Farbor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAnandb71%2Farbor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAnandb71%2Farbor/lists"}