Network Graph

What actually connects to what.

Every file in this repo — code, docs, screenshots, roadmap sections — run through graphify, which extracted a real knowledge graph: AST analysis for code, an LLM read for docs and images, then community detection to find the clusters. Nothing here is hand-drawn.

Last rebuilt 2026-08-03 against 142 changed files. That pass re-extracted code structure only — every module, class and function is current, including the audio bridge, the hop/window analysis layer and the latency instrumentation. Document and image nodes are carried over from the previous full extraction and have not been re-read since, so prose-level relationships lag the code by a few rounds. Saying so is cheaper than letting you assume otherwise.

NON-LIVE DATA · generated once, not auto-refreshed
2,950nodes
4,844edges
240communities
93%extracted (not inferred)

Drag to pan, scroll to zoom, click a node for its details and neighbors, search the sidebar for anything by name. Best on a larger screen — use "Open fullscreen" on mobile.

God nodes (the real core abstractions)

Highest-degree nodes in the graph — the things everything else routes through:

  1. BulbController — 47 edges. Every device action in the backend funnels through this one class.
  2. get_controller_or_404() — 36 edges. The lookup guard every route handler calls before touching a bulb.
  3. make_bands() — 29 edges. The test-suite helper that fabricates band energies; nearly every audio test starts here.
  4. trust() — 29 edges. Reverse-proxy trust resolution, exercised across the whole security surface.
  5. make_ctx() — 28 edges. Builds the per-session audio context every mode reads and mutates.
  6. _load() — 26 edges. Auth state read on every request — which is why a half-written state file once bricked the dashboard.

Surprising connections

Edges the extractor found that weren't obvious from reading any single file:

All 240 communities

The 136 clusters with five or more members, largest first — search for any of them by name in the graph above. A further 104 clusters are smaller than that and are omitted here rather than padding the list.

This graph is a point-in-time snapshot — regenerating it (/graphify .) after major changes will pick up new files and refresh the clusters. It isn't wired to auto-rebuild on push.