OPEN SOURCE · MIT · PYTHON

Architectural context for your coding agents.

Coding agents don't lack intelligence — they lack bounded architectural context. arcade-agent is the map: components, dependencies, smells — recovered from your code, served over MCP, versioned in your repo.

pip install "arcade-agent[languages,mcp]"then add arcade-mcp to your agent — 19 MCP tools, no server, no account

This run is the tool analyzing its own repository at v0.3.0 — the same baseline its CI re-commits on every merge.

01

How it works

ingest →

Parse the code

Tree-sitter parsers extract entities and references. Java and Python out of the box; C, TypeScript, Go, Kotlin and Rust with the languages extra.

recover →

Recover the architecture

Clustering algorithms rebuild components, dependencies, cycles and coupling.

serve →

Serve it to agents

An MCP server exposes the model as budget-aware tools any coding agent can call mid-task.

02

Your agent, with a map

claude-code I'll check the blast radius before refactoring. → diff_impact(changed_files=["src/auth/session.py"])

arcade-agent { "affected_components": ["auth", "api-gateway"], "num_downstream": 14, "broken_contracts": [] }

claude-code Two components affected, no broken contracts — proceeding with the refactor.

Token cost: reading click/core.py raw vs. the context_for_task responseReading click/core.py raw costs 36,897 tokens; the context_for_task response for the same scoping task costs 16,169 tokens — a 56% reduction.Reading click/core.py in full — the independently-derived raw baseline: 147,586 characters ÷ 4 (len/4 estimator) ≈ 36,897 tokens.context_for_task response for the same task: 64,675 characters ÷ 4 (len/4 estimator) ≈ 16,169 tokens.reading click/core.py rawcontext_for_task response36,897 tokens16,169 tokens−56%fewer tokens
One measured example — methodology has the full numbers.
03

Drift, caught in CI

$ arcade-arch-diff --source .
- component "billing" depends on: [db]
+ component "billing" depends on: [db, auth]
new cross-component edge → posted as a PR comment
The baseline lives in your repo, versioned by git. arcade-arch-diff --update-baseline writes .arcade/baseline.json on every merge; the same command diffs against it on every PR. No SaaS, no account — a file and a markdown comment, informational by default, same as arcade-self-analysis.
04

What's in the box

Architecture recovery

Five clustering algorithms — pkg, wca, acdc, arc, limbo — tunable, deterministic output.

Smells & metrics

Cycles, hubs, coupling and instability metrics per component.

19 MCP tools

context_for_task, diff_impact, api_surface, dependency_cone — plus 15 more, all budget-aware.

Budget-aware output

Every tool respects a token budget — built for agent context windows.

Session store

Chain tools without re-serializing full graphs between calls.

CI drift gate

One GitHub Action, one committed baseline, a markdown diff on every PR.

05

Or just ask — the Claude Code skill

Prefer finished reports over raw tool calls? The arcade-analyze skill runs the whole pipeline from a natural-language request — "analyze the architecture of this repo" — and opens an interactive report: pan/zoom component diagram with drill-down, dependencies + DSM, ranked recommendations, and an animated flow simulation.

Live demo, no install — the animation links to the real interactive visualizer, generated from arcade-agent's own codebase. Setup: docs.