Hesperus
A read-only map of a codebase for reviewing its architecture. Hesperus compiles the code "up" into a zoomable graph of packages, files, types, and functions, with the calls and data flow between them.
Every node and edge comes from static analysis (SCIP indexers plus tree-sitter). No model creates, removes, or reweights anything. Edges carry their certainty: resolved, may (dynamic dispatch), or unresolved, and unknowns are drawn, never dropped.
Use
Click the Hesperus icon in the activity bar. The first time, Hesperus:
- detects the languages in the workspace,
- downloads the pinned indexer for each into the extension's own storage,
- indexes the repo into an untracked
.hesperus/ cache (safe to delete),
- opens the graph in an editor tab.
The graph tab:
- Scroll to zoom, drag to pan. The view refits when the panel resizes.
- Click a box to expand it. Cmd/Ctrl-click or double-click opens its source.
- Hover a box to focus on its connections, or an edge to see the counts behind it.
The sidebar shows status and errors, finds nodes by name, toggles calls, data flow, and overrides, and re-indexes.
Languages
| Language |
Indexer |
Needs on your machine |
| Go |
scip-go 0.2.9 |
Go toolchain |
| JavaScript, TypeScript |
scip-typescript 0.5.2 |
Node.js 22.13+ with npm |
Files in other languages are counted in the sidebar and not analyzed.
Guarantees
- Read-only. Hesperus writes only its
.hesperus/ cache in the analyzed repo.
- Deterministic. Same commit and same indexer versions give byte-identical output.
- Stale caches fail loudly. A new commit, lockfile, or tool version re-indexes, and the sidebar says why.