Arch Reactor

Roadmap

What's shipped and what's planned across the Arch Reactor suite.

Arch Reactor is two tools on one engine: archview (visualize) and arch-diff (structural diff). Roadmap for each below.

archview — shipped

  • Frameworks — generic router extractor (gin, echo, fiber, chi, httprouter, …), net/http, gorilla/mux, gRPC, GraphQL (gqlgen), ConnectRPC, WebSocket entry.
  • Auto-layer — chain-based, naming-agnostic layer inference (AutoLayer, on by default).
  • Outbound ports (ShowPorts) and bus / mediator detection (DetectBuses).
  • Layer-violation linter (LintLayers).
  • Layout persistence — dragged positions and collapsed modules survive a reload (with a Reset button).
  • Microservice view (SystemView) — a multi-service repo reads as one connected system: services as swimlanes, with cross-service gRPC calls stitched across the wire as rpc edges.
  • Quality: trivial-helper filtering, route group-prefix joining, generated-file skipping (.pb.go, sqlc, …), layer-first module grouping.

archview — planned

  • More cross-service transports — extend SystemView stitching beyond gRPC to HTTP clients, Kafka / NATS (publish ↔ subscribe by topic), keyed the same way.
  • Topology sources — read Kubernetes / docker-compose manifests to enumerate services and resolve HTTP targets to a service.
  • Outbound / external detection — surface what a repository actually talks to (Postgres, an HTTP API, Redis, a queue) as its own node.
  • Search & filter — find a node; toggle layers / modules.
  • Trace a path — click an endpoint to highlight its full downstream chain.
  • Live reload — re-analyze on source change.
  • Reach — GraphQL nested resolvers, WebSocket per-message routing, more routers.
  • Prod-baked mode (go:generate + go:embed) to run inside a deployed binary; export to PNG / SVG / Mermaid / DOT; JetBrains editor links.

arch-diff — shipped (v0.1.0)

  • Structural diff across two git refs: new / removed layer-crossing edges, changed (body hash), added / removed nodes — keyed by location-independent IDs, so moving lines produces no diff.
  • Dead-code, tied to the changenewly dead (orphaned by the PR) and revived (dead → reachable); plus a --dead full audit grouped by layer.
  • Roots from config: routes, main, exported_api (library mode), and a keep allowlist for reflective entrypoints; ignore globs for test/mock/vendor.
  • Mermaid subgraph of the changed region, dead nodes styled distinctly.
  • GitHub Action — one PR comment, edited in place on each push.
  • SHA cache — the base branch graph is built once and reused.

arch-diff — planned

  • Rename / move detection — surface a moved symbol as one node instead of an add + a remove (similarity matching).
  • Path-to-sink — flag a new path from an entrypoint to a sensitive sink (not just boolean reachability).
  • Policy gating — an opt-in arch-lint mode that can fail a build (arch-diff itself stays report-only).

Beyond Go

  • archview-hono — a TypeScript / Hono port (ts-morph based) at parity with the Go engine: Hono / Express / Fastify / Elysia / NestJS / tRPC, ports, CQRS mediators, auto-layer, linter. Shares this UI and graph schema.
  • archview-net — a .NET port (Roslyn-based) sharing this UI, graph schema, and docs. Planned as a separate library.

This page reflects the current plan and shifts as things ship.

On this page