warrens

a map of your codebase

Your codebase already has a shape.

A Dwarf Fortress-style map of your codebase, folded out of its git history. Dwarf Fortress is famously dense. Its players see a whole fortress at a glance. warrens draws a repository the same way.

The whole warrens fortress at a glance: walled districts of rooms with roads between them, beside the map panel

the map

Directories are walled districts. Files are rooms, sized by what is in them. Dependency depth is the storey you stand on.

the blast radius

Pin a room and the map lights everything a change there would land on, hop by hop. Pins live in the URL, so a question is a link.

for agents

Point at the rooms and hand your agent exactly what you are looking at. warrens never calls a model, and nothing is uploaded.

$ npx warrens

the warren is still being dug—it opens soon

Districts, rooms, and the roads between them

Directories are walled districts. Files are rooms, sized by what's in them. Dependency depth is the storey you stand on. Every room has two doors: imports flow in at the top, importers draw from the bottom. Each door is as wide as the traffic through it. A door nothing crosses is sealed in the masonry, and the seal is the reading—nothing imports this file.

Wall colour is stone, and stone is age: five strata from loam to gneiss, graded in fifths of the repository's own life. Cobwebs gather on rooms nobody has come back to. Torchlight marks the rooms under work right now. Each hand in a file is a dwarf in its room, live as you type.

A close view of a warrens map: pinned rooms outlined in red, reached rooms lit purple, import ribbons threading between districts
a pinned room and its blast radius, in warrens' own repository

The questions it answers

Pin a room and the map lights the blast radius: everything a change there would land on, hop by hop. The panel says it plainly — a change here reaches 34 rooms: 9 one hop away · 12 two · 13 beyond. Each count is a control that cuts how deep the roads are lit. Pins live in the URL, so a question is a link you can send.

A barrel file is a gate in the district wall. An import that goes around it is a breach, drawn in the attention colour where it landed. Files that change together are clustered, and each cluster is named from the words its own commits use. Untested rooms, orphaned rooms, import cycles: standing findings, on by default, each one a setting.

Made for the age of agents

warrens selection prints what you've pinned in the open map as JSON: storey, churn, imports, reach, breaches, the lot. Point at the rooms, and hand your agent exactly what you are looking at. "Look at this" stops needing a paragraph.

warrens never calls a model. No key to configure, nothing uploaded—the map is served from your machine to your browser. Everything it derives is folded from git into .warrens/ and recomputable: deleting the cache is the reset button.