Atlas
Stop your AI from reading your codebase on every question.
Atlas is a local MCP server that indexes your codebase into a structured search database. Instead of opening files and grepping for context, your AI assistant asks Atlas once and gets the answer.
The problem
Every time you ask your AI assistant a question about your code, it reads files:
Tool: Read(src/auth/middleware.py)
Tool: Read(src/auth/tokens.py)
Tool: Grep(pattern="verify_token", path="src/")
Tool: Read(src/users/models.py)
Tool: Read(tests/test_auth.py)
...
That's 5–15 tool calls, thousands of tokens, and several seconds — for a single question.
The fix
Tool: atlas_query(project_id="my-app", question="what functions handle token verification")
→ Result in 2ms. 0 files read.
Benchmark
| Without Atlas | With Atlas | |
|---|---|---|
| Tool calls | 15 | 1 |
| Files opened | 5 | 0 |
| Grep operations | 7 | 0 |
| Time | ~8s | ~2ms |
| Tokens used | ~18,000 | ~2,300 |
Token cost saving: ~$30/month on a normal workload. The Pro subscription costs $19/month.
Install
pip install "hornsa-atlas[parsers]"
Python 3.11+ required.
Quick start
# Inside your project directory:
atlas init
# Reload your AI assistant (VS Code: Ctrl+Shift+P → Reload Window)
# Then ask your assistant anything about your codebase.
atlas init handles everything: downloads Meilisearch, indexes your project, writes the MCP config for your client automatically.
MCP Tools
| Tool | What it does |
|---|---|
atlas_ingest |
Index your codebase (AST parsing, 18 languages) |
atlas_query |
Natural language question → structured results |
atlas_impact |
Find all functions affected by a change |
atlas_edge_check |
Full impact analysis + edge case detection |
atlas_status |
Check index status for a project |
Supported languages
Python, JavaScript, TypeScript, Go, Rust, Java, C#, C, C++, Ruby, PHP, Swift, Kotlin, Scala, Lua, Elixir, Dart, Zig
Supported clients
Claude Code, Claude Desktop, Cursor, Continue (VS Code), Zed — any MCP-compatible client.
How it works
Atlas parses your codebase using tree-sitter and stores every function, class, method, and module in a local Meilisearch index. Re-ingesting prunes entities for files that have since been removed or moved. At query time, the project-trained BiLSTM extracts likely search terms and predicts result kinds; natural-language queries also retrieve lexical candidates expanded with identifier pieces and common aliases, then rerank those candidates locally with sentence-transformers/all-MiniLM-L6-v2. atlas init downloads and validates the pinned public model into the Hugging Face cache so the first query does not need to download it; query text and source code are not sent to the model host, and inference runs locally on CPU. If model setup is offline or unavailable, init reports a warning and Atlas uses lexical results until you rerun init successfully. If the model cannot be loaded at query time, Atlas returns lexical results and includes a ranking_warning in the response. The MiniLM encoder is a pretrained semantic retrieval model, not a substitute for a code-specific relevance benchmark. Training data combines project entities with varied natural-language templates, common software concepts, and multi-topic queries; generated-data validation scores do not guarantee real-world retrieval quality. Space-separated symbol lists are searched independently and merged with exact-name matches prioritized, while broad auth searches keep their dedicated account-flow expansion.
Run the atlas_ingest MCP tool after adding or changing code to refresh indexed identifier pieces and aliases. Run atlas retrain to regenerate project-specific training examples and update the query parser. Training uses CUDA when available and otherwise falls back to CPU. The parser has about 1.1M parameters; the MiniLM encoder is downloaded on first semantic use and remains suitable for CPU inference.
No code leaves your machine. Meilisearch runs locally. The model runs locally. The only data sent to Atlas servers is your licence key (once per day for validation) and your project ID (for free-tier limit enforcement). No source code. Ever.
Pricing
| Tier | Price | Projects | Languages | Query model |
|---|---|---|---|---|
| Free | $0 | 1 | Python | Keyword search |
| Pro | $19/month | Unlimited | All 18 | Trained BiLSTM |
| Team | $49/seat/month | Shared indexes | All 18 | Trained BiLSTM |
Pro activation
After purchase, you receive a licence key by email. Activate it once:
atlas activate ATLAS-xxxx.xxxx
The key is stored locally in ~/.atlas/config.json. No ongoing server call after activation.
Commands
atlas init # Set up Atlas for the current project
atlas status # Check index status
atlas activate <key> # Activate a Pro licence key
atlas guard on # Block Grep/Glob to enforce atlas_query usage
atlas guard off # Remove the guard
atlas retrain # Retrain the query model on updated codebase (Pro)
Architecture
- Ingest layer: tree-sitter AST parsing for 18 languages, stored in Meilisearch (
code_{project_id}index) - Query layer: BiLSTM token classifier extracts KEEP tokens from natural language, fires structured query at Meilisearch
- Edge layer: call graph walker for impact analysis, bridge resolver for cross-language detection (HTTP routes, env vars, config files, DB schemas, shared types)
- Transport: MCP stdio (works with all MCP clients on Windows, Mac, Linux)
- Local-only: Meilisearch runs at
127.0.0.1:7700, auto-started by Atlas
Licence
The ingest engine, server scaffolding, and MCP tool definitions are open source (Apache 2.0).
The trained query model weights, training pipeline, and bridge resolver are proprietary (see Commercial Licence).
Built by Horn Software Architects · hornsa.com/atlas
Metadata
Release files for hornsa-atlas 0.1.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hornsa_atlas-0.1.10.tar.gz | 57.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hornsa_atlas-0.1.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 119.3 kB
Release files / hornsa_atlas-0.1.10.tar.gz
| Download URL | hornsa_atlas-0.1.10.tar.gz |
|---|---|
| Size | 57.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cf60501c49f966a913aa8f6c2a1eae13772e9b818744e8362cf2e70868d65be1
|
|
BLAKE2b-256 checksum How to use checksums |
e8d26fdfa83a4c55e8bd397499a7e50e1d29181eece6b7c66d1fedfdc2359ad7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / hornsa_atlas-0.1.10-py3-none-any.whl
| Download URL | hornsa_atlas-0.1.10-py3-none-any.whl |
|---|---|
| Size | 61.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e1ab144a16751bb6adb5ead7525faf9a55943730cda881ff3e8b0faa1b9e4c4e
|
|
BLAKE2b-256 checksum How to use checksums |
36a044eb08a1a8225a432dcace370fc7413611545044193d0ef19d05afa1bb1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|