Structural
Topology Graph
Reveal every package and real usage relationship as a navigable directed graph. This is the default lens and the place to start when you need to understand structure.
The Topology Graph is the default lens and the place to start an architecture investigation. It can reveal every package in your project as a node and every real usage relationship as a directed edge. An arrow from A to B means code in A uses code from B.
Current Focus lets you take that complete model one area at a time. Inline expansion, filters, and view exclusions shape the working graph around the question you are asking without redefining the underlying dependency evidence.
Reading the graph
Cycles are analyzed findings, not an optional metric overlay. AtlasArc marks cycle participation in the structural graph, while the Cycles section lets you select a group, inspect its members and loop-forming edges, and move between groups. Heatmap is the separate optional overlay: it adds metric colour without changing the dependency structure.
Beyond cycles, you can:
- Select a package to highlight its direct dependencies and dependents while its evidence opens in the right sidebar; clear the selection on the canvas to return to the wider read
- Expand packages inline to reveal subpackages without leaving the graph
- Open one visible package or source folder into classes or files when you need the implementation evidence inside it
- Filter by coupling strength to cut visual noise on large projects and keep the tightly coupled pairs in view
- Apply Heatmap colouring so topology and a selected metric can answer one question together
- Right-click a package to Set as Root, pin it as a structural subject in Graph or Matrix, reveal it in Project View, or navigate to its source evidence in the IDE
Package Internals
Package internals stay contained. A Java or Kotlin package opens into classes; a TypeScript source folder opens into files. Same-owner edges can expose a local tangle, while external dependencies still connect the owning packages or source folders. Opening internals does not turn classes or files into peer architecture units in the other lenses.
Pinned Subject Controls
When a package is pinned, the graph becomes one subject-centred structural read. The toolbar adds Direction, Neighbour links, and Mute cycles controls so you can move between a local blast-radius picture and a cleaner ingress/egress interface without starting over. The structural breadcrumb above the graph moves the pin to an ancestor when the audit needs a wider subject.
Neighbourhood is shorthand for the local blast-radius read: what this package depends on, and what depends on it. Boundary is shorthand for the perimeter read: what crosses into and out of the selected package or subsystem. They are readings of the same pinned subject, not separate lenses or graph modes.
Read the pair below as one controlled comparison: keep the repository, Current Focus, subject, expansion, Neighbour links, and camera the same; change only Direction.
When the cycle layer overwhelms a boundary audit, Neighbour links and Mute cycles provide a deliberate declutter posture. This is not the Direction comparison above: it is a separate ingress/egress task that temporarily removes surrounding mesh and cycle emphasis without deleting the findings.
Cycle View and Cycles Only
Cycle View keeps one detected cycle group as the current structural subject. Use it when you have selected a group from the Cycles section and want the graph to hold that loop steady while you inspect the packages and edges keeping it alive.
Cycles Only is broader. It filters the working view to cycle-participating packages and dependencies, which is useful when you are triaging several groups or checking whether the visible area is tangled at all. Cycle View is one selected group; Cycles Only is a cycle-participant filter.
Heatmap Overlay
Heatmap colours visible packages by a selected metric without changing the dependency structure underneath. Use it for questions such as “which cycle participants are unstable?”, “which backbone packages are too concrete?”, or “which depended-on packages have weak coverage?”
The overlay belongs to the current working graph. Current Focus, filters, view exclusions, Cycles Only, and pinned-subject posture decide which packages and edges you are investigating; Heatmap adds a metric read to them.
What carries into other lenses
Current Focus and applicable filters and exclusions belong to the shared investigation. Topology and Matrix also share package expansion and structural posture, so you can move from spatial structure to exact directional cells without rebuilding the question. Subsystems consumes those visible boundaries as its candidate map.
Opened package internals, graph layout, theme, and pinned-Graph controls such as Neighbour links and Mute cycles stay local to Topology. Simplifying that pinned Graph does not erase model evidence or remove the corresponding relationship cells from Matrix. Shared filters and explicit view exclusions remain part of the wider investigation posture.
Take the graph with you
- Snapshot as PNG captures the graph as it appears on screen.
- View as DOT exports the renderer-resolved semantic topology you are actually investigating, including Current Focus, filtering, exclusions, opened internals, and a selected cycle-group posture where applicable.
The global Download → Model as DOT action is different. It exports the retained acquisition model before repository policy or view interpretation is applied, so it is not owned by whichever lens happens to be open.
An Architecture Report is different: it is a model-driven report assembled from selected sections, not a dump of the lens that happens to be open.
When the graph has nothing to draw
AtlasArc distinguishes an absent analysis model, a successful analysis with no architectural units, and a working view narrowed to nothing. Follow the offered Analysis Source and Analyze action for the first case; inspect the acquisition outcome for the second; reset the named focus, filter, or exclusion for the third. A cycle filter that finds no participants is a valid zero-finding result, not a failed analysis or an empty architecture.
Use Topology to map the connections. Switch to Matrix for exact traffic, Composition for mass, Subsystems for boundary pressure, or Hotspots for priority.