A map of your codebase that refuses to guess.
Cognithamus measures a repository and its Git history, then draws what it found, one view per question. Anything it could not observe is marked absent, never filled in.
A passkey on this device becomes your identity — no password, no email. Nothing is read until you connect a repository.
this repository · 279967bread 2026-09-03 · 618 files
One codebase, 40 ways
The same snapshot, read 40 ways.
The map above shows one reading at a time. Here they are together — one measured snapshot of this repository, 40 interpretations, each answering a different question and each drawn only from what was measured. These are live renders, not screenshots.
from repo/bytes · directory
from co-change links
from repo/commits-touching × repo/bytes
from repo/commits-touching · repo/bytes
from placed · refused · unobserved
from file extension · repo/bytes
from directory · repo/bytes
from co-change links · directory
from repo/bytes, sorted
from file-name suffix families discovered by a boundary radix tree · repo/bytes rank (thread height) · repo/commits-touching rank (thread brightness) · directory (colour)
from co-change degree
from repo/commits-touching rank (latitude) · directory (region) · repo/bytes density (terrain) · co-change links (chords)
from co-change communities found by modularity (clusters) · cluster-to-cluster coupling (placement) · partners inside the cluster (depth) · repo/bytes (node size) · repo/commits-touching (node brightness) · directory (node colour)
from src vs supporting code · directories · co-change links · repo/commits-touching
from directories · co-change coupling · repo/bytes · repo/commits-touching
from directory-ordered files · repo/bytes · repo/commits-touching · co-change links
from co-change shortest path from a chosen file (shell radius) · directory (sector and colour) · repo/bytes rank (node size)
from co-change rolled up to directory pairs (roads) · repo/commits-touching rank (speed) · repo/bytes rank (vehicle length) · directory (colour)
from co-change pairs of 3+ commits (bonds) · commits per pair (multiplicity and bond length) · repo/bytes rank (atom size) · directory (colour)
from repo/bytes rank minus repo/commits-touching rank (depth) · repo/bytes rank (size) · repo/commits-touching rank (light) · directory (column and colour)
from co-change betweenness (removal order) · largest connected piece under removal (the shoreline) · co-change degree (the control) · directory (colour)
from co-change pairs filtered by how many commits they repeat in · degree assortativity · clustering · same-directory share, each recomputed per threshold
from sum of repo/commits-touching and sum of shared commits over pairs, bounded against the commit count — the envelope of every commit-breadth distribution the evidence permits
from shared commits over repo/commits-touching — the conditional probability a partner also changed, in one direction · commits as evidence weight · directory (colour)
from the same files ranked five ways in turn — repo/bytes · repo/commits-touching · co-change degree · repo/commits-touching ÷ repo/bytes · path — with Spearman between each consecutive pair, and total travel per file · directory (colour)
from Horizon's envelope revolved around the rank axis — commit rank (radius) · the files a rank is proven to have touched (the bright disc) · the widest the evidence permits it (the corona) · the first rank whose lower bound is zero (the dark centre)
from repo/commits-touching as swings per cycle (rate) and as rank (position along the row) · repo/bytes rank (bob size) · directory (colour) — the row recombines because every count is a whole number
from for every source file, the test that has shared the most commits with it — shared commits over repo/commits-touching — and whether a test shares its name · directory (colour)
from repo/bytes and repo/commits-touching, each sorted ascending and summed — the Lorenz curve and Gini of both, and the share held by the top 10%, 20% and 50% of files
from connected components of the co-change graph (islands) · file count (area) · directory (colour) · the longest directory prefix an island's sources share (name)
from for each directory, couplings with both ends inside it over couplings with at least one end inside — cohesion(), ranked · files placed and refused per directory
from the fewest shared-commit steps between every pair of files, as a histogram · the pairs no chain joins, counted · the median and the diameter
from articulation points of the co-change graph, by depth-first low-links · for each, the files cut off from the largest piece without it, by a second exact search · directory (colour)
from k-core decomposition of the co-change graph — every file's coreness, by repeated peeling · the deepest shell checked pair by pair for completeness · directory (colour)
from for each test file, the source directories it has shared a commit with, and shared commits summed per directory · tests recognised by name and by top-level test directory
from repo/commits-touching (up, log) · distinct co-change partners (across, log) · the median of each as the cut · a count of files in each of the four quadrants · directory (colour)
from rank by distinct co-change partners against rank by betweenness — Keystone's betweennessOf, per file · the largest gaps between the two ranks, named · directory (colour)
from k-core decomposition of the co-change graph — every file's coreness, by repeated peeling — as shells flying out from one point to the radius their rank earns · the deepest shell checked pair by pair for completeness · repo/bytes rank (mote size) · directory (colour)
from history — every listed commit's author, moment and placed files — replayed on a clock · Containment's treemap as the ground (repo/bytes footprint) · repo/commits-touching rank (height) · directory (colour)
from paths · churn · bytes, as glyphs
Trace every number back to its measurement
Every mark in all five is one measured fact. Select a file in the map above and it names the figure behind its shape — repo/bytes of the total measured — and what that shape is therefore entitled to claim.
No number on this page is without a source. Where a subject could not be measured, the views count it and say so rather than drawing it.
Explore any of these in the map above →Every panel, dimension and number corresponds to a measurement. A dash means no source, never zero.
Every visualization obeys three constraints
Observational truth
Every visible feature represents an observed fact. A figure with no source behind it is drawn as a dash, never as a zero.
Traceability
Appearance traces back to the observations that produced it. Each derived item carries the literal measurement it came from.
Visible refusals
Facts the engine cannot place are counted and reported. The picture is never allowed to look more complete than the evidence is.
Why it exists
An estate of any size is normally read through scattered dashboards, each answering a question someone thought to ask months ago. None of them show the thing itself, and none of them agree. The status you get is assembled by hand, from what people remember to report, and it is out of date by the time it is assembled.
How it runs
XI runs as a single operator console.
- 01
Point it at a repository
Declare the repositories the instance may read. XI acquires a world from the checkout and reconstructs it at any revision.
- 02
Register a passkey
The first credential is registered once with a bootstrap token. A credential is the identity; there is no user table behind it.
- 03
Open the console
Sign in and the city is derived from what is measurable right now — git, the GitHub API, the database, and the process environment.
Access is passkey-only — there is no password to phish, reuse, or reset. Operator access to XI is granted separately from account creation.
Render your repository →