MCP-native · private beta

The deterministic
context layer for
agentic engineering

CodeCompass resolves your whole repo into a call graph and code-tuned search, and serves it to your agent as ~20 tools over MCP, structure it can query and prove, not text it has to grep.

$ curl -fsSL codecompass.run/install | bash
then ccx login, or join waitlist →
Live

Watch it in action.

Where your code runs

Indexed in the cloud, isolated to you.

CodeCompass syncs your repo to a container only your account can reach - one per repo, token-gated. It builds your analysis graph there, and that is the only thing your source is ever used for.

Engine
An isolated container in our cloud - one per repo, token-gated. A random per-account tenant, so no other customer can address it.
Your repo
Synced to that container to build your analysis index. Used only to build the index - never to train models. Destroyed when you stop it; the index lives only while it is active.
Access
Only your token reaches your container. Every account is isolated - your source is never shared across customers.
Any device
Index on our hardware, query from anywhere with your token - thin laptops and huge monorepos alike.
01 The engine

It maps your whole repo.

CodeCompass reads every file and builds one resolved graph of your codebase: the files, the symbols, and the calls between them. An edge is only drawn when a call resolves to exactly one target; anything ambiguous stays unknown, never guessed. So the map is something you can actually trust.

Every answer, whether it's search, callers, impact or audit, comes from this same graph, so they never disagree. Rebuilds are incremental, and a cross-language linker even recovers Rust→GPU-kernel calls that no compiler or language server can see.

requireAuthcallsrotateToken
language-server1.0
static import-map0.9
heuristic0.7
ambiguous → unknownn/a
context src/api/gateway.ts
roleHTTP entry · auth, routing, rate-limit
importsrequireAuth · rateLimit · db/pool · logger
used by4 routes · 2 middlewares · 1 test
complexityhandleRequest 12 · authGate 4
02 Understand

The context your agent is missing.

Ask what any file is for and CodeCompass answers from the graph: its role, what it imports, and everything that depends on it. Your agent reasons from resolved structure instead of guessing from the handful of lines it managed to grep.

Zoom out to the dependency graph between modules, or down to a single function's control flow and cyclomatic complexity. It's the same map at every altitude, and it fits in a context window.

03 Impact

Trace the blast radius. Hover any symbol.

Point it at a change and it walks the graph in reverse: everything that transitively depends on what was touched, ranked by risk from fan-in and complexity rather than distance alone. Lined up with the live git diff, it surfaces what an edit will reach before the change ships, not after CI goes red. Change a leaf utility, watch it light up half the service.

db/pool.acquire

0 downstream · 0 high-risk
changedhighmedlow
ccx search
$ ccx search "where do we verify the license key" license/verify.ts:42 validateKey() semantic · 0.94 api/gate.ts:88 requireLicense() calls it billing/seat.ts:15 keyGuard() symbol + grep
04 Search

Find code by what it does.

Search blends a semantic model with a symbol index and ripgrep into one ranked answer, so a question in plain words lands on the exact code, and every hit shows how it was found.

The model is our own: a 0.5B-parameter code embedding model, trained on 86B tokens of code, and state-of-the-art on code retrieval. Weights and evals on Hugging Face →

05 Precision

No hallucinations, by design.

The structural side runs no model: parsing, the graph, callers, impact and audit are all deterministic. Dead code is confirmed by the actual compiler, clang -Wunused and cargo check. When it can't resolve something it says so, so the facts your agent builds on are verified, not generated.

That pass ran clean, zero false positives, across ~30,000 files, the Linux kernel included.

ccx audit
$ ccx audit cargo check · clang -Wunused cache.c:88 staticHelper() unused format.rs:12 fn pad() dead_code gateway.ts:4 import { Foo } unused 3 findings · 0 false positives ambiguous symbols left unresolved, not flagged
06 Agents

Give your agent the graph, not grep.

The whole engine is one MCP server: around 20 tools that all answer from the same graph, with honest provenance and results paginated to fit a context window. It even keeps a memory across sessions and a task-scoped workset, so your agent picks up where it left off instead of re-reading the repo each time.

search "…"

Hybrid retrieval, semantic + symbol + grep.

callers <fn>

Resolved callers repo-wide, confidence-scored.

impact

Reverse-dependency blast radius over your diff.

context <file>

Role, imports, and consumers of any file.

dependency-graph

The module and file dependency map.

arg/flow <fn>

Control-flow graph and cyclomatic complexity.

audit

Compiler-checked dead code and unused symbols.

memory

Notes that persist across sessions.

workset

A task-scoped view of what you're changing.

+

arg/query · structure · graph/refs · detect-projects, all over the same server.

Full structural analysis for JavaScriptTypeScriptPythonRustCC++ plus kernels CUDAMetal

Index your repo. Then let your agents read the map.

$ curl -fsSL codecompass.run/install | bash
private beta · join waitlist →
Dormant ccx 0.1.22 client reporting a release-signature failure? Re-run the HTTPS installer to refresh its trusted release keys.