Arch Reactor

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.

Next steps

On this page