Introduction
Arch Reactor — structural tooling for Go backends. Visualize your architecture, and diff it across commits.
Arch Reactor is a suite of structural tooling for Go backends. It reads your source with a static call graph and reasons about your architecture — not your text. Two tools share one engine:
- archview renders a live, interactive architecture flow graph: your endpoints flowing through controller → service → repository, generated automatically from source, with no annotations. Click any node to jump to its definition.
- arch-diff shows how that structure changes between two git refs: new layer-crossing calls, and the code a change orphaned (newly dead) or revived — the regressions a text diff cannot show.
One engine, two questions
archview answers "what does my architecture look like right now?" arch-diff answers "what did this PR do to it?" Both build on the same call graph, so the layers, modules, and node identities mean the same thing in each.
archview — see the flow
- Endpoints detected from your route registrations (net/http, gin, echo, gRPC, GraphQL, ConnectRPC, gorilla/mux, WebSocket).
- Layers — each function classified as controller / service / repository.
- Call edges — resolved through interfaces via a CHA call graph.
- Modules — grouped into swimlanes (e.g.
user,product,catalog).
arch-diff — see the change
- Newly dead — code your PR orphaned: reachable before, unreachable after.
- Layer-crossing edges — a handler that now calls a repo directly, a service hop that disappeared.
- Revived / changed / added / removed nodes, keyed by location-independent identity so moving lines around produces no diff.