Language reference
StructurizrX reads standard Structurizr DSL (workspace/model/views,
person, softwareSystem, container, component, group, deployment,
styles, !docs, !adrs, !include) plus a set of extensions designed to
fit the same lexical style — braces, ident = type "name" declarations — so
an LLM’s priors about Structurizr DSL carry over.
Upstream interop is not a design goal: StructurizrX can always read upstream DSL (the parser is tested against the upstream fixture corpus), but its own extensions aren’t constrained to also be valid upstream DSL. Where upstream’s design is awkward (comma-joined tag strings, positional quoted arguments), StructurizrX extensions use explicit keywords instead.
This reference is organized as:
- Core structure —
workspace/model/views, the element hierarchy, groups - Sketch mode — files with no
workspaceblock - Element extras —
status,introduced/retired,perspective,port,tags/technology/url - Relationships and ports —
kind, named relationships,?uncertainty, port-attached relationships - Workspace-level blocks —
milestones,perspectives,specification(kind aliases),styles - Views — hand-authored views, selectors, and the
autogenerator family - Documentation and decisions —
!adrs/!decisions,!include - Multi-file workspaces — splitting large models
For the condensed, single-page version of everything below (the format
StructurizrX ships to LLM agents), see structurizrx docs or GET /llms.txt
on a running structurizrx serve instance. The full design rationale behind
each extension lives in
docs/SPEC.md.