See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Why state-based visualization is a non-starter for many teams
State files contain real resource ids, IP addresses, connection strings, and sometimes secrets that providers chose to store. Handing state to a third-party tool is a security review nobody wants to run. Plan-based tools are gentler but still need init, which means provider downloads, backend access, and a machine allowed to reach both.
Consultants and platform teams hit a second wall: on a client engagement you often have read access to the repository and nothing else. The tool that needs credentials is the tool you cannot use.
What source parsing can and cannot see
The source declares everything the architecture IS: resources and their types, modules and their boundaries, references between them, count and for_each shapes, per-environment values in tfvars. Datadef parses all of it, resolves variables through call sites and locals to literal values where they exist, and follows module outputs to build the real cross-resource graph.
What source cannot tell you is runtime state: whether the apply succeeded, actual instance ids, drift between code and cloud. That is a different question with different tools. For the architecture question, what exists and how it wires, the source is authoritative by definition: it is what terraform apply will make true.
What the connection needs: - repository read access (public repos: nothing) - a branch or tag name What it never touches: - terraform state - your cloud account - terraform init / plan / apply
The loop this enables
Because parsing needs nothing but read access, the diagram can regenerate on every sync without ceremony: daily, on demand from the UI, or from an MCP client when your coding agent finishes a change. The result lands on an editable canvas, exports as PNG or JPEG, and embeds in READMEs and wikis as a live image.
Multi-environment repos come out honest rather than tripled: tfvars are parsed per environment, so a resource created per environment is one node stating DEV, QUAL, and PROD counts, not three copies of the platform.
FAQ
Is the source really enough to draw the architecture?
How do variables get their values without running terraform?
What access does the repository connection use?
Can this run against a client repository I only have read access to?