The knowledge graph for your codebase
Axon
The knowledge graph for your codebase — explore it visually, or let your AI agent query it.
Indexes any codebase into a structural knowledge graph — every dependency, call chain, cluster, and execution flow. Explore it through an interactive web dashboard with force-directed graph visualization, or expose it through MCP tools so AI agents get full structural understanding in every tool call.
$ axon analyze .
Walking files... 142 files found
Parsing code... 142/142
Tracing calls... 847 calls resolved
Analyzing types... 234 type relationships
Detecting communities... 8 clusters found
Detecting execution flows... 34 processes found
Finding dead code... 12 unreachable symbols
Analyzing git history... 18 coupled file pairs
Generating embeddings... 623 vectors stored
Done in 4.2s — 623 symbols, 1,847 edges, 8 clusters, 34 flows
Then explore your codebase visually:
axon ui # Opens interactive dashboard at localhost:8420
Three views, one command:
- Explorer — Interactive force-directed graph (Sigma.js + WebGL). Click any node to see its code, callers, callees, impact radius, and community. Community hull overlays show architectural clusters at a glance.
- Analysis — Health score, coupling heatmap, dead code report, inheritance tree, branch diff — your codebase health in one dashboard.
- Cypher Console — Write and run Cypher queries against the graph with syntax highlighting, presets, and history.
Plus: command palette (Cmd+K), keyboard shortcuts, flow trace animations, graph minimap, and SSE-powered live reload when watch mode is active.
The Problem
Your AI agent edits UserService.validate(). It doesn't know that 47 functions depend on that return type, 3 execution flows pass through it, and payment_handler.py changes alongside it 80% of the time.
Breaking changes ship.
This happens because AI agents work with flat text. They grep for callers, miss indirect ones, and have no understanding of how code is connected. Context windows are finite. LSPs don't expose call graphs. Grepping gives you strings, not structure.
The agent needs a knowledge graph — not more text.
How Axon Solves It
Most code intelligence tools give the agent raw files and hope it reads enough. Axon takes a different approach: precompute structure at index time so every tool call returns complete, actionable context.
A 12-phase pipeline runs once over your repo. After that:
axon_impact("validate")returns all 47 affected symbols, grouped by depth (will break / may break / review), with confidence scores — in a single callaxon_query("auth handler")returns hybrid-ranked results grouped by execution flow, not a flat list of name matchesaxon_context("UserService")returns callers, callees, type references, community membership, and dead code status — the full picture
Three benefits:
- Reliability — the context is already in the tool response. No multi-step exploration that can miss code.
- Token efficiency — one tool call instead of a 10-query search chain. Agents spend tokens on reasoning, not navigation.
- Model democratization — even smaller models get full architectural clarity because the tools do the heavy lifting.
Zero cloud dependencies. Everything runs locally — parsing, graph storage, embeddings, search. No API keys, no data leaving your machine.
TL;DR
pip install axoniq # 1. Install
cd your-project && axon analyze . # 2. Index (one command, ~5s for most repos)
axon ui # 3. Explore visually at localhost:8420
For AI agents — add to .mcp.json in your project root:
{
"mcpServers": {
"axon": {
"command": "axon",
"args": ["serve", "--watch"]
}
}
}
For developers — explore the graph yourself:
axon ui # Interactive dashboard (standalone or attaches to running host)
axon ui --watch # Live reload on file changes
axon host --watch # Shared host: UI + multi-session MCP
What You Get
Explore your codebase visually
Web UI
A full interactive dashboard — no terminal or extensions
Tools (3)
axon_impactReturns all symbols affected by a change, grouped by depth with confidence scores.axon_queryPerforms hybrid-ranked search results grouped by execution flow.axon_contextReturns callers, callees, type references, community membership, and dead code status for a symbol.Configuration
{"mcpServers": {"axon": {"command": "axon", "args": ["serve", "--watch"]}}}