It's the storage layer, not the syntax
Every Terraform scaling problem — slow plans, lock contention, fragile cross-state wiring, no queryability — traces back to one decision: state is a file. Put it in a database and the problems dissolve.
One plan, every state it touches
Change a producer module and watch the change ripple into its consumer — in the same plan. This is the demo Terraform can't reproduce.
# change the producer (rm1) only; one plan spans both states ❯ stategraph plan State 0 · rm1 (producer) ~ output.http_proxy_port: 8080 → 9090 State 1 · rm2 (consumer: reads the pending output) ~ terraform_data.firewall_rule_port_min: 8070 → 9080 Plan: 0 to add, 2 to change, 0 to destroy # across 2 states
One plan updates rm1 and rm2 together · see how cross-state plans work →
The game-changers
Nine capabilities Terraform's file-and-lock model can't offer. Each one has its own page with a worked example.
One plan, every state it touches
Change a producer module and consumers update in the same plan. No apply-first ordering, no stale outputs.
Explore →Plan the slice, not the whole state
Terraform walks your entire state on every plan. Stategraph sizes each plan to the slice your change touches, so minutes become seconds.
Explore →One state, any size
Keep all your infrastructure in one logical state. 8,680 resources, two-second plans, no fragmentation.
Explore →No more global state lock
Two engineers on the same state, touching different resources, never block each other. Conflicts detect only on real overlap.
Explore →Atomic across modules
Plan and apply changes spanning many root modules as a single transaction. All-or-nothing, no partial applies.
Explore →SELECT your infrastructure
Your state is a database. Query every resource across every state with SQL — no export pipeline, no second source of truth.
Explore →Know what breaks first
See every resource a change touches, with dependency distance, before you apply. Risk assessment built into the graph.
Explore →Refactor without the terror
Restructure your HCL; Stategraph computes the exact state moves and emits the moved blocks for you. No accidental rebuilds.
Every change, attributed
An immutable, queryable log of who changed what and when. Real audit history, not an ephemeral lock file.
Explore →terraform_remote_state and provider config at it and keep writing the HCL you already write. Terraform compatibility →
See it on your own state
Import an existing Terraform state and watch plans get faster, locks get smaller, and your infrastructure become queryable.