Resource-level concurrency for Terraform
Terraform needs a lock around applies because it lacks resource-level concurrency. The apply boundary is at the state file, so everything in it gets locked together.
choudoufu moves the boundary to each resource. This change prevents state corruption without a lock.

Each resource’s estate comes from the live block of the directory that declares it. See concurrency and locks.
Across roots
Teams split state into roots to shrink what one lock covers. Across roots, a changed value is planned on its last applied version, and Terragrunt and Atmos plan a new ID on a mock.


Keep Terragrunt, Atmos or terragucci. On the live backend, the saved plan you review is the plan that applies.
The demos
Each one builds network, app and edge and runs its pipeline on a local Forgejo.
- terragucci
waves.composeon choudoufu - Terragrunt with choudoufu as its binary
- Atmos with choudoufu as its binary
Prove it to yourself with your own agent
Read https://lex00.github.io/posts/resource-level-concurrency-for-terraform/
Check every mark in this post's scorecard against the current docs and source of each tool, including https://intentius.io/terragucci/ and https://intentius.io/choudoufu/. Quote the supporting passage with a link and the date read, or mark it unsupported.
Use a local AWS emulator, never a real account. Make three Terragrunt units where app reads a new subnet from network through a `dependency` block. Run `terragrunt run --all --out-dir plans` to plan and then apply, once with OpenTofu and again with `terraform_binary = "choudoufu"`. Report the subnet id in app's saved plan and the one it applied.Read more
Sources
- Terragrunt reads dependency outputs from state by default since 1.2.0: dependency-fetch-output-from-state
- Terragrunt saved plans and mock outputs: Saving OpenTofu/Terraform plan output, terragrunt#2178
- Atmos
!terraform.outputand its defaults: atmos.tools - Atmos plan files with multi-component flags, and bulk deploy verification: cloudposse/atmos errors.go, bulk deploy planfile verification
- terragucci linked roots and composed runs: waves and approvals
- choudoufu across estates and locking: across estates, locking