Tool Alternatives

TerraVision alternative: same source parse, but the diagram keeps itself current

By the engineer who builds Datadef, from client work on data platforms · Reviewed August 21, 2026

TerraVision is one of the better answers to the Terraform diagram problem. It runs client side, it never sends your code anywhere, and it turns a repository into a cloud architecture picture rather than a dependency hairball. The limits are not about parsing quality. They are about what happens to the output after the command exits, and about who on the team can run the command at all.

7 min readFor engineers who liked TerraVision and got tired of re-running it

See it as a diagram

Everything below, as a diagram you can edit. Describe yours and see it in seconds.

167/20003 credits left
Try:

No account needed · Editable canvas, not a picture

What TerraVision gets right

The security posture is the strongest part. TerraVision runs entirely on your machine, your .tf code never leaves it, and no cloud credentials are needed to produce a diagram. For a client engagement or a regulated environment, that removes the conversation that kills most diagramming tools before the trial starts.

The output is also better than the category norm. AWS coverage is broad, with Google Cloud and Azure supported for core services, and multi-cloud stacks land on a single diagram. Relationships are found by scanning resource attributes for references to other resources, so count, for_each, and module variables are handled rather than flattened. The interactive HTML output gives clickable nodes, search, pan and zoom, and there is a draw.io export for anyone who wants to take the result into an mxGraph editor.

It was designed as a docs-as-code tool, so it slots into a pipeline stage after build and test, and it is free and open source under AGPL-3.0. Worth reading that licence before the output goes into a client deliverable, but none of the above is in dispute here.

The three costs of a CLI-shaped tool

The first is the toolchain. The project lists four prerequisites, Python 3.10 or newer, Terraform 1.x, Graphviz, and Git, and all four have to exist on every machine that wants a picture, CI runner included. That is a fine ask for the platform team and an impossible one for the product manager who wants to see how the environment is wired.

The second is artifact lifetime. The command produces a file. A file is stale the moment infrastructure merges, and it only stops being stale when a human or a pipeline regenerates it and re-commits it in the right place. Teams that set that pipeline up discover the second job: keeping the generated file from producing a noisy diff on every unrelated commit.

The third is audience. The people who need an architecture diagram most, a new joiner in week one, a security reviewer, an auditor, whoever is on call at 2am, are exactly the people who will not clone the repo and install Graphviz to look at it. A diagram that requires a toolchain to view has a small readership by construction.

What a hosted parse changes

Datadef parses the same thing, the source, and moves everything after the parse. You connect the repository once on GitHub, GitLab, or Azure DevOps with a read-only token (public repositories need none), pick the branch or tag that represents reality, and the diagram is generated server side. No init, no plan, no state file, no cloud credentials, nothing installed locally.

The parse resolves the same kind of structure TerraVision does, and it is worth being precise about how. A directory of .tf files is a module unit; a unit nobody references as a module source is a stack. References inside expressions resolve to the resources they reach, and variables and locals are followed rather than evaluated, so a var.subnet_id bound at a call site resolves to the subnet it points at without anything being computed. count and for_each become a real number: a literal map is counted directly, and a for_each driven by a variable is read out of the per-environment tfvars, which is where a node annotated per lakebase_projects (DEV 2, QUAL 1) comes from. A registry or git module cannot be expanded, so the call becomes one node labelled with its source and version, and its input wiring becomes the edges.

From there the diagram behaves like a service rather than a file. A daily sync re-reads the ref and regenerates the diagram and an architecture.md; commits that change nothing structural are skipped; node identity derives from Terraform addresses so a re-sync updates the picture instead of reshuffling it. You can also refresh on demand from the app or from a coding agent over MCP.

Distribution is the part a CLI cannot offer. The diagram embeds in a README, a Confluence page, or a Notion doc as a live image that follows the canvas, and viewers need no account and no toolchain. Curation happens before drawing: modules become zones, major resources keep their provider icons, and repeated minor types roll up into one node carrying the count and the member names. Role assignments, grants, IAM policies, secrets and everything from the random, null, tls and time providers are classified as wiring and never become boxes. They are counted instead, in a line that reads like 27 wiring resources not worth boxes: 14 role assignments, 8 grants, 5 secrets.

Nothing is executed

The analysis is a parse of .tf and .tfvars files, so there is no terraform init, no plan, and no access to your cloud account. Details in the repository sync docs.

When TerraVision is still the right call

Air-gapped work, or any policy where source must not reach a third party, ends the discussion in favour of the local CLI, and rightly so. The same is true for a throwaway picture during a code review, where connecting anything is slower than typing a command.

The switch point is lifetime and audience. When the diagram has to still be true next quarter, and has to be readable by people who do not run CLIs, generation has to move off the laptop and onto a schedule.

FAQ

Does Datadef need Terraform, Python, or Graphviz installed?

No. TerraVision lists Python 3.10 or newer, Terraform 1.x, Graphviz and Git as prerequisites on every machine that renders. Datadef parses the .tf and .tfvars files server side after a read-only repository connection, so nothing is installed locally and nothing runs against your cloud: no terraform init, no plan, no state access.

TerraVision produces an interactive HTML file. What is the equivalent?

A hosted canvas plus a live embed image. The canvas is editable and zoomable in the browser, and the embed is a single markdown image line that renders the current diagram in a README, wiki, or doc for viewers who have no account.

Can I still get an image file out?

Yes, the canvas exports as PNG or JPEG, and an agent can request the same export over MCP. For documentation the live embed URL is usually the better choice, because the embedded image follows the canvas through every sync instead of needing a regenerate and re-commit cycle each time infrastructure changes.

Which clouds are covered?

AWS, Azure, and Google Cloud resources are drawn with real provider icons: 438 AWS marks, 624 Azure, 226 Google Cloud, inside a catalog of more than 2000 that also covers Kubernetes and data tooling. A resource type the catalog does not recognise renders with the Terraform mark rather than a wrong guess at a service.

Can CI or an agent trigger a regeneration?

Yes. Beyond the daily sync and the manual refresh in the app, the MCP server exposes repository status and refresh tools, so a coding agent or a pipeline step can check freshness and trigger a re-sync after infrastructure changes merge.