flowgo and the C4 model
C4 describes itself as a set of hierarchical diagrams — context, container, component, code. arc42's Building Block View is the same shape: level 2 zooms into a block of level 1, level 3 into a block of that. Both are drill-down specifications, and most tools in the category draw their levels as pictures — one file per level, no link between them. flowgo keeps the levels as one structure you go on editing: a box opens into the level below it, in a single plain-text file you can diff in a pull request.
The problem with levels as separate pictures
Nothing links level 2 back to the box on level 1 it belongs to. Nothing notices when they stop agreeing. So the container diagram gets updated in March, the component diagram does not, and by autumn the two describe different systems — and the person who would have to reconcile them is the person who stopped opening them.
In flowgo a map lives inside a box. Double-click the box and you are on the next level down; a breadcrumb walks you back out. One file, one artefact, one thing to keep current.
See it working → an arc42 Building
Block View three levels deep, with its .flowgo source
on the page.
Be clear about what flowgo is not
flowgo is not a C4 tool in the sense that
Structurizr or Likec4 are. There are no C4 element types, no
softwareSystem or container keywords, no
model from which several views are derived, and no validation that
your diagram obeys C4's rules. It will not stop you drawing
something C4 would call wrong.
What it gives you is the hierarchy itself, in a text file, with a canvas on top. If you want the notation enforced, use a tool that enforces it. If what you actually want is levels that stay attached to each other and a file your team can edit without learning a DSL, keep reading.
How the levels map
| C4 | arc42 | In flowgo |
|---|---|---|
| System context | Building Block View level 1 | The root map, / |
| Container | Level 2 | Inside a box: /oms |
| Component | Level 3 | Inside a box of that: /oms/checkout |
| Code | — | Keep going, or stop. The nesting has no fixed depth |
In the file those are literally map /,
map /oms and map /oms/checkout — three
sections of one plain-text document, diffable line by line in a
pull request.
Why an agent changes this
Asking an agent for a C4 diagram usually gets you Mermaid or PlantUML: a picture that is roughly right and that you cannot correct without editing the source by hand, one level at a time.
With flowgo the agent writes the file, you open it and drag the boxes it placed badly, and the file it wrote is the file you corrected. Same artefact, both directions. That is the whole difference between a diagram you keep and a diagram you regenerate and never trust.
Try it
No account, nothing to install.
Coming from Structurizr's hosted service, which reaches end of life on 30 September 2026? There is a page for that, including what flowgo does not replace.