Code Maps

Everything on the map, and what it means

Code Maps has one idea: put every number you already collect about a codebase into a place you can point at. Here is what that gives you.

The city

One repository, drawn once. Every folder that contains code becomes a building; the first meaningful segment of its path becomes a district with its own plate, colour and name. Nothing is randomly placed: the same repository always produces the same city, so you learn its skyline.

Hover each element and watch it in the city. It is the same city the app draws.

Building
A folder with code in it. Click for its card; double-click to enter and explore it alone.
District
A layer or top-level folder, with its plate, colour and label. Click the label to explore it.
Height
Complexity — branches of logic, summed over the folder. Tall towers step in like skyscrapers.
Façade
The colour of the active lens. Warmer means worse.
Roof
The district colour, so you can orient yourself from directly above.
Badges
A dot with a count for vulnerabilities and insecure configuration; a diamond for possible secrets.
Red mast
A hotspot: lots of change and lots of complexity in the same folder.
Arcs
On hover or selection: orange for what this module imports, blue for who imports it. Connected buildings tint to match.

Three themes

Día reads like a topographic survey sheet. Noche keeps the ground dark and lights only the windows. Neón turns on bloom, which is useless for work and very good in a demo room.

The openclaw/openclaw repository in the Neon theme: a dark city with glowing windows and red towers.

openclaw/openclaw in the Neón theme: 578 buildings, grade C. The diamonds are possible secrets; the repository was truncated at 15.000 files.

Four lenses

The façade colour answers one question at a time. Switching lens keeps every building exactly where it was, which is the whole point: you are comparing four answers about the same place.

Try it here

Hover each element and watch it in the city. It is the same city the app draws.

  • RiskVulnerabilities, insecure configuration, secrets and hotspots, weighted.Decide what to fix first.
  • DebtEstimated cleanup hours: TODOs, huge files, deeply branched logic, hotspots.Plan refactors and see which district is rotting.
  • PulseHow long ago anyone touched the module, from git history.Tell living code from sleeping code. Asleep and risky is the worst combination.
  • TrafficHow many commits pass through the module.Find the corridors the whole team walks down.

The heat layer

Each building radiates its value onto the ground, and each district plate is tinted by the average and the peak of the buildings standing on it. Risk stops being a number in a list and becomes a stain you can see spreading.

2D: the thermal map

Press 2D and the camera goes straight overhead. The skyline disappears and the heat reads as a clean thermal map of the repository — the fastest view for a slide or a screenshot.

Top-down 2D view of the same city, read as a thermal map: districts tinted from pale yellow to deep red.

The same repository from directly overhead. With the skyline gone, the heat layer reads as a thermal map of where risk collects.

Real findings, not estimates

Everything on the buildings comes from a tool that actually ran, or from a heuristic that is written down. There is no model guessing at severity.

  • Vulnerabilities and misconfiguration

    Trivy over manifests and lockfiles (npm, yarn, pnpm, pip, poetry, go.mod, Cargo, pom, gradle) and over Dockerfiles, compose, Kubernetes and Terraform. For Java without a lockfile it also scans the jars in build/libs.

  • Leaked secrets

    gitleaks with its default rules, skipping build, logs, node_modules, target, dist, .gradle and .git. Only the rule name and the file:line are kept. The matched value never leaves the scanner.

  • Technical debt, tool-free

    TODO FIXME HACK XXX as low; files over 500 lines as medium; more than 0,25 branches per line in files longer than 50 lines as medium. Hours: 1 per medium, 4 per high.

  • Hotspots

    Commits × complexity in the top 5% of the repository, counted as high. This is the single measurement most worth acting on: it is where change and difficulty meet.

The building card

Every finding with its file and line, the module's lines, files, complexity and commit count, its imports and importers as clickable chips, and buttons to open the folder on GitHub, in Finder, or in your editor at the exact line.

packages/react-reconciler/src: 47,019 lines, complexity 7,473, a hotspot, with every finding linked to its file and line.

Bring the findings you already have

Code Maps does not compete with your scanners: it gives them a map. Besides what it runs on its own, it reads the reports of the tools you already use and puts every finding on its building.

Built in

Runs by itself, locally, with nothing to configure.

  • Trivyfree
  • gitleaksfree
  • gitfree

Through a SARIF report

Available today. Drop your tool's .sarif into .codemap/ and analyse again. With a security-severity it counts as security; without one, as debt.

  • Snykfree and paid
  • Semgrepfree and paid
  • CodeQLfree and paid
  • ESLintfree
  • Checkovfree
  • Banditfree
  • gosecfree
  • SARIF 2.1.0free
snyk code test --sarif-file-output=.codemap/snyk.sarif
semgrep scan --sarif -o .codemap/semgrep.sarif

On the roadmap

A direct connection, no files in between. It does not exist yet.

  • SonarQube and SonarCloud API
  • Strix pentest results
  • GitHub App: on every push, and PR comments
  • Slack, Jira and Linear: alerts and tickets

Tested end to end with a sample SARIF 2.1.0 report. Secret values are never read: from a secret scanner only the rule and file:line come through.

Rules: the ones that exist, your team's and your own

Available today

Rules you already know

Trivy's and gitleaks' as they ship, plus the debt heuristics. And any other tool's, through its SARIF report.

Coming soon

Import your team's*

Your .gitleaks.toml, your Semgrep rule packs and your suppressions, applied to all your repositories from one place.

Coming soon

Write your own*

Custom rules over what the map already measures: "no building above 40 complexity without tests", "nothing in billing/ imports from web/".

* Requires a paid Code Maps Cloud plan, which does not exist yet. Pricing →

Constellation: the same city as a graph

One node per module, one edge per import resolved inside the repository — external packages do not count. Nodes are grouped into regions by district. Hover shows the direction of every relationship with arrows; node size can follow complexity, lines or risk; edges can be all, between districts only, or hidden. Click a district name to zoom, double-click to enter.

Constellation view: modules as dots grouped in district regions, connected by directed import edges.

langchain-ai/langchain as a constellation: hovering runnables shows the 13 modules it imports in orange and the 99 that import it in blue.

The inspection report

One panel that grades the whole repository, or whatever slice of it you are currently looking at. Counts by severity, estimated debt hours, the district list with findings per district, and the hotspot list. Click a severity row to isolate those buildings; export every finding to CSV.

How the score is computed

Start at 100. Subtract up to 50 for 4 × critical + 1.5 × high + 0.3 × medium, up to 20 for 0.2 × secrets, and up to 30 for 3 × debt hours per 1,000 lines. The caps exist so one catastrophic category cannot hide everything else. It is a heuristic for comparing repositories at a glance, not a compliance standard.

  • A90+
  • B75+
  • C60+
  • D40+
  • E<40

How we measure →

The inspection report for react/react: 47 out of 100, grade D, driven by 215 unpatched critical vulnerabilities.

The AI as the guide

The chat runs against the Anthropic API with five tools: get_findings, get_module, read_file, search_code and highlight_buildings. The AI reads the real code and the real findings before it claims anything.

  • Auto picks Sonnet for quick questions and Opus when the question needs judgement — architecture, priorities, security, refactors. You can pin the model instead.
  • Every answer shows which model replied, how long it took and how many tool steps it used.
  • The building card has two shortcuts: Explain this building and How do I fix it?
  • Secret values are never included in what the model receives.

The AI explaining the layers of react/react, naming the real packages and line counts it read on the way.

Getting around

The URL is the state
?repo=…&view=…&lens=…&scope=…&sel=…&cam=…&theme=… — reload or share the link and you get exactly the same view back.
Cached clones and analyses
Clones live in .repos/, one folder per repository, with the analysis and findings beside them. A repo you have seen before loads instantly; Re-analyse rebuilds it from scratch.
Search
Press / to search buildings by name or path. Results carry their risk colour; Enter opens the first one.
Inspection round
One button flies the camera through the five most urgent buildings in order, so a demo needs no driving.
Clear the panels
H hides every panel for a clean screenshot. Esc steps back out: close the card, leave the layer, clear the selection.
Three themes
Día reads like a topographic map, Noche lights only the windows, and Neón turns on bloom for a demo room.

See it on a repository you know

react/react, langchain-ai/langchain or your own path. Nothing is uploaded and no account is needed.

Open the map Pricing