v1.0 shipped · 2,800+ tests · 93% coverage
Give your AI assistant a map of your code.
BBM-Atlas turns a repository into a knowledge graph of what calls what, what imports what and what breaks when something changes, then serves it to any AI assistant over MCP, REST and a CLI. Local-first and LLM-agnostic.
Speaks MCP to Claude Code, Cursor and JetBrains · Python 3.11+
- languages parsed with tree-sitter
languages parsed with tree-sitter
plus 7 indexed as whole-file modules
- retrieval sources ranked together
retrieval sources ranked together
structure, memory, graph, semantic
- MCP tools for AI assistants
MCP tools for AI assistants
alongside 37 REST routes and 39 CLI commands
- automated tests
automated tests
93% line and branch coverage
Why BBM-Atlas
Similar text is not the same as how code connects
Most AI coding tools retrieve whatever text looks closest to the question. BBM-Atlas also knows the structure: who calls a function, what imports a module, and what a change will ripple into.
Similarity search alone
What breaks if I change invoice.total()?
- billing/README.mdsim 0.82
…the invoice total is computed from line items…
- tests/test_invoice.pysim 0.79
def test_total_includes_tax(invoice): …
- docs/pricing.mdsim 0.77
Totals are rounded to two decimals…
Plausible passages, but no callers, no ripple effects, and no way to tell a hunch from a fact.
BBM-Atlas impact analysis
What breaks if I change invoice.total()?
● billing.invoice.total
- ├─calls ←billing.invoice.finalizeextracted
- ├─calls ←api.checkout.submitextracted
- └─calls ←api.routes.post_checkoutinferred
- ├─imports ←reports.monthly.summaryextracted
Every caller and importer, hop by hop, each edge tagged with how certain it is. An answer your assistant can act on.
What it does
Everything an assistant needs to reason about code
One platform that parses, maps, remembers, retrieves and serves: built so an AI assistant can answer structural questions with evidence.
How it works
From source files to answers you can trust
Six stages, each deterministic where it can be. The same pipeline runs whether you index a side project or a monorepo.
01
Parse
Tree-sitter reads every file into a language-independent model.
02
Map
Calls, imports and inheritance are resolved across files.
03
Remember
Summaries, facts and lessons accumulate alongside the code.
04
Retrieve
Four sources are fused into one ranked answer.
05
Serve
The same engine behind MCP, REST, the CLI and the console.
06
Economise
Compression shrinks what reaches the model, reversibly.
Use it anywhere
One engine, four doors
The MCP server, the REST API and the CLI call the same code, and the web console runs on the REST API, so every client gets the same answer.
# Write a bbm-atlas entry into this project's .mcp.jsonbbm-atlas mcp install --host claude# Claude Code can now call, for example:# search(repository_id, "where are sessions refreshed?")# analyze_impact(repository_id, "auth.tokens.refresh", max_depth=3)# graph_path(repository_id, "api.login", "db.users.lookup")Web console
See your codebase the way your assistant does
The API serves a browser console: index repositories, search them, explore the graph and trace impact, each result one click from the next. No build step and no extra service.

Store health and indexed repositories at a glance, with background indexing and live progress.
Reads the languages your team writes
Twelve languages parsed symbol by symbol with tree-sitter · seven more (dashed) indexed as whole-file modules
- Python
- JavaScript
- TypeScript / TSX
- Go
- Rust
- Java
- C#
- Ruby
- PHP
- Kotlin
- C
- C++
- Swift
- Scala
- Dart
- Elixir
- Lua
- Shell
- SQL

Index your first repository in minutes
A fresh checkout runs entirely in memory, with no services to set up. Add Postgres, Neo4j, Qdrant and Redis when you are ready.