Terraform
Terraform is where SchematIaC started, and it is still the fullest experience. Open your .tf and .tfvars files on a canvas and every block becomes a node, every attribute a row, and every reference a wire — with the value each row actually resolves to shown in place. It works with OpenTofu too; it is the same HCL, and no terraform binary is required.
What becomes what
| Terraform | On the canvas |
|---|---|
resource, data, module | one node each, attributes as rows |
variable blocks | one node per file, one row per variable |
.tfvars entries | one node per file, one row per assignment |
locals, output blocks | one node per file, one row per name |
var.x, local.y, aws_vpc.main | a wire into the consuming row |
| a tfvars key matching a variable | a dashed bind wire (not editable) |
| nested blocks | flattened to dotted rows (root_block_device.volume_size) |
See The canvas for what every value mark means, and Editing for how re-pointing and value edits are written back.
Resolved values, honest about apply
The canvas evaluates your HCL locally and shows the computed value, not the expression: "${var.env}-acme" reads "dev-acme". Anything that genuinely cannot be known before terraform apply reads (known after apply) rather than a guess. try() and can() evaluate; a few other functions still do not — see Limits.
Simulated workspaces
One canvas is one definition — the same model as Terraform itself. To see what that definition becomes in dev, test or prod, a Terraform canvas holds simulated workspaces: named sets of variable values, applied over defaults and tfvars exactly as a real workspace would inject them at plan time. Switch between them from the toolbar, or compare them all at once. Full detail in Simulated workspaces.
Modules
Local module sources (./, ../) load automatically when their caller is added; each appears as a box with input and output ports. Registry and git modules load from what terraform init vendored under .terraform/modules. An unvendored registry module is a warning on its own box — not an error that blocks the canvas. You cannot drill into a module’s internals yet.
Upgrade Preview
Upgrade on the toolbar — or Preview upgrade… on a registry module, or Preview provider upgrade… on a resource. Pick a newer version and the canvas paints what that bump would do here: inputs you set that vanish, arguments the target docs no longer list, required inputs you lack. Worded as what the docs say, never “this will break.” Full walk-through in Upgrade Preview.
Folder Overview
For the shape of a whole tree rather than the wiring of one root, the Folder Overview reads every .tf and .tfvars beneath a folder into a read-only picture of directories, counts, and which directories compose which. It is Terraform-only for now.
Copy between canvases
Select resource, data or module nodes and press Ctrl+C, then Ctrl+V on another canvas. The block arrives byte for byte, comments included. Terraform only — see Editing.
What is not evaluated yet
- A few Terraform-only functions (
templatefile,cidrsubnet) are not evaluated; those rows read unresolved, with the reason, rather than a guess. countandfor_eachare not expanded: a resource with three instances is one node, andeach.*references draw no wire.
The full list lives in Limits.
Bring your AI agent
The same Terraform engine is available to AI agents over the MCP server — where a value comes from, what it resolves to, an upgrade’s blast radius, and a validated diff for a proposed change, all local. SchematIaC does not compete with your agent. It is the tool that agent uses.
SchematIaC Docs