v0.56 Free & open source · AWS, Azure & Google Cloud

Not just boxes. Architecture.

Official AWS, Azure and Google Cloud icons and style, with every resource in its VPC, subnet and zone. Describe it to your AI assistant, or draw straight from your Terraform. Built from terraform plan, so what you see is exactly what deploys. It runs on your computer and needs no cloud access.

$ claude plugin marketplace add patrickchugh/terravision
Get started
Works with Claude DesktopClaude CodeChatGPTCodexGitHub CopilotCursorAntigravityany MCP client

See TerraVision draw four architectures in a chat

Claude · TerraVision extension

I'll draw this with TerraVision, using the official AWS icons.

terravision · render_graph ✓ done

Here it is: every resource sits in its VPC, availability zone and subnet. Saved as PNG, SVG and an editable draw.io file.

Show how a request flowsWrite the TerraformAdd a WAF
aws-eks-karpenter.pngPNG · SVG · draw.io · .tvg.json
rendering with Graphviz…
click to enlarge
01Both directions

Design to code. Code to diagram.

Sketch a new system by talking to your assistant, then have it write the Terraform. Or point TerraVision at Terraform you already have and see exactly what terraform plan says it deploys.

Idea → diagram → Terraform

Describe it, refine it in conversation, then ask for the code. Your assistant writes the Terraform and redraws it to check its own work.

chat · three-tier-web
three-tier-web.png
drawn from your prompt
Write the Terraform for this architecture
# main.tf · written from the diagram module "vpc" { source = "terraform-aws-modules/vpc/aws" cidr = "10.0.0.0/16" azs = ["us-east-1a", "us-east-1b"] public_subnets = ["10.0.1.0/24", "10.0.2.0/24"] private_subnets = ["10.0.11.0/24", "10.0.12.0/24"] database_subnets = ["10.0.21.0/24", "10.0.22.0/24"] enable_nat_gateway = true } resource "aws_lb" "web" { load_balancer_type = "application" subnets = module.vpc.public_subnets } resource "aws_autoscaling_group" "app" { vpc_zone_identifier = module.vpc.private_subnets min_size = 2 # one app server per zone
Terraform → diagram

Built from terraform plan, so the picture is what the code deploys: modules, count, for_each and variables resolved.

~/infra · zsh
$ terravision draw --source ./infra Preflight check.. # runs terraform init, plan and graph locally Decoding plan.. Analysing plan.. Rendering Architecture Image... Output file: architecture.dot.png Completed!
.png.svg.pdf.drawio.html
03No cloud access

Draw prod without prod access.

TerraVision draws what your Terraform will deploy, from the code alone. The infrastructure doesn't have to exist yet, and you need no access to any account it deploys to. Live cloud scanners can't do that.

  • Reviews and onboarding. Run an architecture or security review of prod, or get to know an unfamiliar repo, without asking anyone for cloud access.
  • One codebase, every environment. Swap the variables file to draw dev, staging or prod.
  • 100% client-side. Your code and plan never leave your machine.
  • Remote sources too. Draw a Git repository or a subfolder of one, and Terragrunt projects with one or many modules.

How it works →

~/platform · zsh
more ways to point it at code
# draw each environment from its variables file
terravision draw --source ./infra --varfile prod.tfvars --outfile prod-architecture

# a Git repository, a subfolder, or a branch
terravision draw --source https://github.com/user/terraform-repo.git//aws/vpc
terravision draw --source https://github.com/user/terraform-repo.git?ref=develop

# just the services, as a JSON graph
terravision graphdata --source ./infra --outfile architecture.tvg.json
04Graph in, diagram out

A few lines of JSON. No new language to learn.

Each key is <terraform_resource_type>.<name>; each value is what it connects to or contains. That is the whole format. Add titles, labels and numbered flows in a YAML file next to it.

{
  "tv_aws_users.users": ["aws_cloudfront_distribution.cdn"],
  "aws_cloudfront_distribution.cdn": ["aws_s3_bucket.static_site", "aws_alb.api"],
  "aws_vpc.main": ["aws_subnet.public~1", "aws_subnet.private~1"],
  "aws_subnet.public~1": ["aws_alb.api"],
  "aws_subnet.private~1": ["aws_lambda_function.orders"],
  "aws_alb.api": ["aws_lambda_function.orders"],
  "aws_lambda_function.orders": ["aws_dynamodb_table.orders", "aws_sqs_queue.events"]
}
Works for AWS (aws_*), Azure (azurerm_*) and Google Cloud (google_*)
architecture.dot.png
Diagram rendered from the AWS JSON graph
Render it:
$terravision draw --source aws.tvg.json --format svg
05CI/CD

Diagrams that redraw themselves.

Point the TerraVision GitHub Action at your Terraform, and the diagram updates on every change. A terravision.yml next to the code keeps the title, numbered flows and labels in every version.

.github/workflows/diagram.yml
- uses: hashicorp/setup-terraform@v3
- uses: patrickchugh/terravision-action@v2
  with:
    source: ./infrastructure
    outfile: docs/architecture
    format: both
Pull request #142 · Add read replica
OpenAdd an Aurora read replica in us-east-1b
terraform plan14s
terravision draw9s
docs/architecture.png updated1s
docs/architecture.png · redrawn from the plan
+ aws_rds_cluster_instance.replica− 0 removed

GitLab, Jenkins, Azure DevOps and others: CI/CD integration guide →

06What you get

Pictures for the review. Files for the work.

◎

Official icons, real grouping

The provider's own icon sets, with resources inside their VPC or VNet, availability zone, subnet and resource group: the conventions a cloud architect follows.

427AWS types
267Google Cloud
263Azure
✎

Editable draw.io

Open the export in draw.io, Lucidchart or any mxGraph editor and polish it by hand.

⇲

PNG, SVG, PDF

SVGs embed their icons and open in any browser or docs site.

</>

Interactive HTML

One file: click any resource to see its settings, search, pan, zoom and animated flows.

Try the live demo →
①②

Flows & labels

Titles, arrow labels and numbered flow steps with a legend, from YAML or your assistant.

⌘

MCP server & skill

Diagram tools for any MCP client, and a skill that teaches agents the graph format.

⛨

100% client-side

No cloud credentials, no uploads. Your code never leaves your machine.

✦

AI annotations

Suggested labels and flows from Bedrock, a local Ollama model or any OpenAI-compatible API.

⧉

Terragrunt ready

Single- and multi-module Terragrunt projects are detected automatically.

⎇

Git & remote modules

Draw a repository, a subfolder or a branch. Remote modules are fetched for you.

$0

Free & open source

AGPL-3.0, on PyPI, Docker and Nix. No diagramming licence to buy.

07How it compares

The only one that goes both ways.

Prefer to draw by hand? Generate the first version with TerraVision, then polish the export in draw.io or Lucidchart.

TerraVisionManual toolsdraw.io, Lucidchart, VisioAI workspacesEraserDiagram as codeMermaid, D2, DiagramsLive scannerse.g. Cloudcraft
Draw from a plain-English description✓In the assistant you already use◐If third-party models are approved✓✕✕
Draw from Terraform✓From terraform plan, client side✕◐AI reads files you paste✕✕
Draw an environment you can't access, or not built yet✓From code and a variables file◐By hand◐From pasted code◐Written by hand✕
Write the Terraform for a design✓Checked by redrawing it◐Paid add-on, AWS only✕✕✕
Official icons and VPC, subnet, zone grouping✓Built in◐Grouping is up to you◐Generic groups✕✕
Stays current automatically✓Redrawn in CI✕◐Repository sync✕✓Follows the live account
No cloud access, no code upload✓✓✕✓✕
PriceFree, open sourceFree to paidFree tier, paid plansFree, open sourcePaid

Full comparison →

08Quick start

Three steps. Then just ask.

STEP 1 · ONCE

Install the prerequisites

Graphviz draws and Git fetches modules. uv runs TerraVision for Claude Code, Codex and other MCP clients (Claude Desktop brings its own on Windows and macOS). Terraform is only needed to draw from Terraform code.

No admin rights? →

brew install graphviz git
brew install uv                        # not needed for Claude Desktop
brew install hashicorp/tap/terraform   # optional: to draw from Terraform code
STEP 2

Connect your assistant

Diagrams appear right in the chat in Claude Desktop and the ChatGPT desktop app. Everywhere else they are saved to a diagrams folder.

Setup guide for every client →

Download terravision-<version>.mcpb from the latest release and open it, or drag it into Settings → Extensions.

Download extension
STEP 3

Ask for a diagram, or code

The first diagram takes a little longer while TerraVision installs itself. To check at any time, ask: "Is TerraVision set up correctly?"

An ideaDraw an AWS three-tier app: React on CloudFront, ECS Fargate behind an ALB in two AZs, SQL Server on RDS Multi-AZ
A diagram you likeWrite the Terraform for this architecture
Terraform codeDraw the architecture of the Terraform in ./infra
A security reviewMake this diagram interactive
A repositoryKeep this diagram up to date in CI
?Questions

Good to know.

Does TerraVision need access to my cloud account?

No. It draws from a description or from your Terraform code and a variables file. The infrastructure doesn't have to exist, and no credentials for the accounts it deploys to are needed.

Is my code sent anywhere?

No. TerraVision runs on your computer. When you use it from an AI assistant, the assistant sees what you share in the chat, as usual; TerraVision itself uploads nothing.

Which AI assistants work with it?

Claude Desktop (extension), Claude Code and the ChatGPT desktop app or Codex CLI (plugins), Antigravity CLI, GitHub Copilot in VS Code, Cursor and any other MCP client. Agents that read skills can install the skill with npx skills add.

How good are diagrams drawn from a prompt?

That depends on the model behind your assistant. Larger models follow the prompt more closely and add more detail. Ask for what's missing in a follow-up, or use a gallery example's source graph to reproduce it exactly.

Can I edit the diagrams?

Yes. Every diagram comes as an editable draw.io file that opens in draw.io, Lucidchart or any mxGraph editor, alongside PNG and SVG.

Which Terraform setups are supported?

Terraform 1.x or OpenTofu, with modules, count, for_each, workspaces and multiple variables files, plus Terragrunt v0.50+ projects with one or many modules.

What does it cost?

Nothing. TerraVision is free and open source under the AGPL-3.0 licence.

Where's the full documentation?

At patrickchugh.github.io/terravision: installation, usage, the graph format, annotations, CI/CD and troubleshooting.

Your next architecture review starts with a sentence.

>Draw the architecture of the Terraform in ./infrareview