choudoufu #

OpenTofu with one permission model.

Each resource carries its own ownership record as ordinary cloud tags. AWS can tell you what an estate contains, and your IAM already decides who may read or change it. Nothing else to permission, and no lock to manage. Experimental, AWS only.

A fork of OpenTofu.

a plate of choudoufu

Three things have to survive between runs#

Identity as two tags on the resource written by the apply, values in a record store written by choudoufu, effects as a receipt you declare, all three governed by your IAM

Identity. Pure IAM. Who may change which resource is a policy you already know how to write.

Values. Resources AWS has no object for. null_resource, random_pet, time_static.

Effects. A database migration that ran. The plan shows it coming before anything fires.

Why they are separate, and what it changes.

The policies that do these, and where AWS honours the condition they rest on.

How far it goes#

Core is a fixed, representative set — the terraform-aws-modules examples most people actually deploy, plus real OpenTofu-native projects, plus one plain reference estate — pinned by tag, meant to reach 100%. All adds every other real estate as it’s crossed, with no pin and no target.

Core estates
25 of 25 estates behave like OpenTofu
  • Cold deploy: 25 pass, 0 fail, 0 not run
  • Migrate: 25 pass, 0 fail, 0 not run
  • Replan from nothing: 25 pass, 0 fail, 0 not run
  • No-op apply: 25 pass, 0 fail, 0 not run
  • Drift and reconverge: 25 pass, 0 fail, 0 not run
  • Rename: 25 pass, 0 fail, 0 not run
  • Remove a block: 25 pass, 0 fail, 0 not run
  • Greenfield apply: 25 pass, 0 fail, 0 not run
All estates
26 of 26 estates behave like OpenTofu
  • Cold deploy: 26 pass, 0 fail, 0 not run
  • Migrate: 26 pass, 0 fail, 0 not run
  • Replan from nothing: 26 pass, 0 fail, 0 not run
  • No-op apply: 26 pass, 0 fail, 0 not run
  • Drift and reconverge: 26 pass, 0 fail, 0 not run
  • Rename: 26 pass, 0 fail, 0 not run
  • Remove a block: 26 pass, 0 fail, 0 not run
  • Greenfield apply: 26 pass, 0 fail, 0 not run

As of commit 9c1ec36174336dbe6145fd15ce3d7d530e740d86, generated 2026-08-25T17:04:49Z.

Check yours#

choudoufu live-check

In your config directory. No credentials.

Docs#

The model, governance, and using it — or start at the full docs index.

Experimental. AWS only. Built on OpenTofu 1.13.0 from fork point 03743ce6e8. Plain OpenTofu is documented at opentofu.org.

choudoufu is an independent fork. It is not affiliated with or endorsed by OpenTofu or the Linux Foundation. OpenTofu is a registered trademark of the Linux Foundation. Code is licensed MPL-2.0. Upstream source lives at github.com/opentofu/opentofu and all stock docs at opentofu.org/docs.