Structural code quality metrics for agent-written programs.
Topos gives you structural code quality metrics your agents can act on. Passing unit tests proves your code works, but Topos proves it's built to last. It measures program structure — not just syntax — giving agents concrete metrics to optimize toward on every pass. You set the target; agents handle the iteration.
Topos evaluates code along three independent pillars:
- SIMPLE — Avoids unnecessary complexity (AST entropy & CFG cyclomatic complexity).
- COMPOSABLE — Cleanly decoupled from other modules (MDG Martin instability via GitNexus).
- SECURE — Free of dangerous API reachability and taint paths (CPG analysis).
Topos checks all three pillars and awards a Code Quality Medal based on how many pass:
| Medal | Criteria |
|---|---|
| 🥇 GOLD | Passes all 3 (SIMPLE + COMPOSABLE + SECURE) |
| 🥈 SILVER | Passes 2 of 3 |
| 🥉 BRONZE | Passes 1 of 3 |
| ❌ SLOP | Passes 0 (or fails to parse) |
Set your Preferences (e.g., simple,composable,secure) to tell your coding agent which pillars to prioritize when aiming for Gold under token and time budgets.
# Install CLI
curl -fsSL https://docs.krv.ai/topos/install.sh | sh# Preferences are how you prioritize the evaluation pillars
topos evaluate src/ -r --preferences simple,composable,secure # classify each file in a directoryGive any MCP-compatible agent — Claude Code, Cursor, Gemini CLI, Windsurf — a live feed of Topos verdicts so it can evaluate and iterate on its own output.
Set up topos mcp in your agent
⚠️ Recommended: Without a dependency graph, Topos cannot score COMPOSABLE — any verdict containing it (includingIDEAL) is unreachable.SIMPLEandSECUREalways run.npm install -g gitnexus # one-time per machine cd /path/to/your/repo topos depgraph generate # one-time per repo; writes .gitnexus/Re-run when imports change (new modules, renames, restructures). The cache keys on
.gitnexus/mtime and invalidates itself.
💡 Tip: Verify the binary before wiring it into editors:
topos mcp # prints the FastMCP banner and waits on stdin. Ctrl-C to exit.
Run from your project root — Topos auto-detects its file-access root by walking up for .git or pyproject.toml.
claude mcp add topos topos mcpgemini mcp add topos topos mcp➕ Install topos in Cursor
Or edit .cursor/mcp.json:
{ "mcpServers": { "topos": { "command": "topos mcp" } } }{ "mcpServers": { "topos": { "command": "topos mcp" } } }
⚠️ IMPORTANT Topos refuses to read files outside a trusted root. If you must launch from elsewhere, set it explicitly:{ "command": "topos mcp", "env": { "TOPOS_MCP_FILE_ROOT": "/absolute/path/to/repo" } }
💡 TIP On the agent's first turn, point it at the workflow doc:
"Fetch
topos://docs/workflowsand follow the Topos refactor loop."Or invoke the prompt directly:
topos_refactor_until_ideal(filepath="path/to/file.py").
"Use topos to find the worst-scoring file in
src/, propose a refactor, and verify withtopos_assess_improvement."
A healthy response shows {simple: 72%, composable: 65%, secure: 95%} when GitNexus is configured. If the response is missing composable, go back to Step 1.
Topos measures code along the three independent quality generators and maps them to an 8-element evaluation lattice:
- SIMPLE — Built from the abstract syntax tree (AST) and control-flow graph (CFG). We calculate cyclomatic complexity of the CFG and entropy of the AST to assess complexity.
- COMPOSABLE — Built from the module dependency graph (MDG) using GitNexus, to capture inter-module dependencies. This is slightly different than the usual program dependence graph (PDG) which is used to capture intra-function dependencies. We calculate Martin Instability and Fanning metrics for the MDG to assess coupling.
- SECURE — Built from the code property graph (CPG). We calculate dangerous-API reachability and taint paths from the CPG to assess security.
graph BT
SLOP["❌ SLOP<br/>No Medal"]
SIMPLE["🥉 BRONZE<br/>Simple"]
COMPOSABLE["🥉 BRONZE<br/>Composable"]
SECURE["🥉 BRONZE<br/>Secure"]
SC["🥈 SILVER<br/>S ∧ C"]
SSc["🥈 SILVER<br/>S ∧ Sc"]
CSc["🥈 SILVER<br/>C ∧ Sc"]
IDEAL["🥇 GOLD<br/>Quality Code"]
SLOP --> SIMPLE
SLOP --> COMPOSABLE
SLOP --> SECURE
SIMPLE --> SC
SIMPLE --> SSc
COMPOSABLE --> SC
COMPOSABLE --> CSc
SECURE --> SSc
SECURE --> CSc
SC --> IDEAL
SSc --> IDEAL
CSc --> IDEAL
style SLOP fill:#f8d7da,stroke:#842029,color:#000
style SIMPLE fill:#cd7f32,stroke:#5c3a1e,color:#fff
style COMPOSABLE fill:#cd7f32,stroke:#5c3a1e,color:#fff
style SECURE fill:#cd7f32,stroke:#5c3a1e,color:#fff
style SC fill:#c0c0c0,stroke:#4a4a4a,color:#000
style SSc fill:#c0c0c0,stroke:#4a4a4a,color:#000
style CSc fill:#c0c0c0,stroke:#4a4a4a,color:#000
style IDEAL fill:#ffd700,stroke:#856404,color:#000
Tip
Three Independent Pillars: SIMPLE, COMPOSABLE, and SECURE are pairwise incomparable. A file can achieve any subset of {S, C, Sc} independently. 🥇 GOLD is the intersection of all three.
In a perfect world, every file would earn a 🥇 GOLD medal. In reality, managers and developers have a finite budget of time and tokens.
Topos allows you to set Preferences — an ordering of these medals based on your immediate priorities. Coding agents use this ranking to aim for 🥇 GOLD. If achieving 🥇 GOLD isn't feasible within the budget, the preference ranking tells the agent exactly how to relax its goals, ensuring it still delivers the highest possible quality medal aligned with your priorities.
Topos is used internally at Krv Labs to manage AI agent code output. We welcome bugs, ideas, and contributions.
- Bug? Open an Issue
- Idea? Start a Discussion or open a PR
- Collaborate? team@krv.ai
Full Documentation · Measures & Metrics · Category Theory Concepts
Built with ❤️ by Krv Labs