finds.dev

// 4 picks · reviewed October 2026

The best open source infrastructure as code tools in 2026

Infrastructure as code means your cloud setup lives in files you can diff, review, and version, instead of changes made by hand in a console. Terraform and OpenTofu describe resources in HCL and apply them from a CLI; Pulumi lets you do the same job in a language you already use; Crossplane turns your Kubernetes cluster itself into the thing that reconciles infrastructure continuously.

Which one fits depends less on scale than on what you're already running and who maintains the config. A team on AWS or GCP with no strong language preference is choosing mostly between Terraform's ecosystem and OpenTofu's license. A team that wants loops and real type-checking in its infra code goes to Pulumi. A platform team already living in Kubernetes, building an internal platform for other engineers, is the one case where Crossplane's extra complexity pays off.

  1. 01terraform
  2. 02opentofu
  3. 03pulumi
  4. 04crossplane

★ 49,995GoNOASSERTIONupdated Oct 2026

best for teams on AWS, GCP, or Azure who want the deepest provider ecosystem and don't mind HashiCorp's license

Terraform's provider ecosystem is deeper than OpenTofu's, Pulumi's, or Crossplane's — if a cloud or SaaS has an API, there's almost certainly a maintained provider for it already. The plan-before-apply workflow produces a diff clear enough that someone who didn't write the config can review it in a pull request, and the resource graph handles parallel execution across hundreds of resources without you having to think about ordering.

HashiCorp moved the license to the Business Source License in 2023, so this isn't open source in the strict sense — that's the entire reason OpenTofu exists, and it's worth knowing before a team commits to it. HCL shows its age once config needs real logic: for expressions and dynamic blocks do things that would be a few lines in any general-purpose language. State stays a single file that needs an external lock, such as DynamoDB or a blob container, to be safe with more than one person touching it, and Terraform only notices infrastructure drift when someone remembers to run a plan.

★ 30,560GoMPL-2.0updated Oct 2026

best for teams that want Terraform's workflow without committing to the BSL license

OpenTofu reads your existing .tf files, works with the same providers, and opens the same state files Terraform does, so moving over costs close to nothing. It's a CNCF project now, with a published charter and a technical steering committee, which gives it more protection against another relicensing than most forks have. Beyond parity it's shipped things Terraform hasn't: native state encryption, early variable evaluation, and OCI registry support for modules.

It still carries Terraform's internal complexity — the plugin protocol alone spans more than twenty versioned proto files — and hasn't had the years needed to clean that up. Its provider ecosystem is really Terraform's: OpenTofu mirrors the Terraform registry rather than building its own, so if HashiCorp ever restricted provider licensing to lock out forks, OpenTofu would feel it immediately. State management hasn't moved past Terraform's single-file model either, so the same external-locking requirement applies here too.

★ 25,799GoApache-2.0updated Oct 2026

best for teams that would rather write infrastructure in TypeScript, Python, Go, C#, or Java than HCL

Pulumi lets you write infrastructure in TypeScript, Python, Go, C#, or Java instead of wrestling with HCL, which matters the moment your config needs a loop, a class, or a package from your normal ecosystem rather than a for expression. Its Automation API goes further than anything Terraform or OpenTofu offer — you can drive Pulumi from your own process, which is how teams build self-service infra portals or automated test teardown. Its 300-plus providers exist because most are generated from Terraform's providers through a bridge, so coverage keeps pace with Terraform's without someone hand-writing each one.

That bridge is also the weak point: Pulumi inherits whatever bugs and quirks sit in the underlying Terraform provider, since it isn't designing its own resource model. Large stacks feel slower to apply than they do in Terraform or OpenTofu, because every operation round-trips through a gRPC connection between the CLI and your language runtime. State storage defaults toward Pulumi Cloud, their own SaaS, and teams that don't deliberately set up a self-hosted backend end up depending on it. Cross-stack references can also create ordering dependencies that aren't visible anywhere in the code, which turns into a hard circular-reference error to track down.

★ 12,186GoApache-2.0updated Oct 2026

best for platform teams building an internal developer platform on Kubernetes

Crossplane doesn't compete with Terraform, OpenTofu, or Pulumi so much as sit a layer above them — it turns cloud resources into Kubernetes CRDs so a platform team can expose a simplified, organization-defined API to the rest of engineering. The composition functions model is a real escape hatch from the old patch-and-transform system: you write actual logic, in any language, as a function in the pipeline instead of forking the core project. Providers, functions, and configurations all ship as versioned, signed OCI images, so dependency management looks like container image management rather than a bespoke registry.

The learning curve is steep before any of that pays off — XRDs, XRs, Claims, Compositions, Functions, and Providers all need to click before a new team member can do anything, and that takes days, not hours. A non-trivial AWS setup can mean ten or more provider pods, each with its own CRDs and RBAC, which puts real pressure on the API server at scale. When a composite resource gets stuck, the error usually isn't on the XR's status — it's buried in a provider pod's logs or a function runner's logs, so debugging means cross-referencing several objects instead of reading one clear message. Teams still on v1.x face a real migration gap, since the v2 composition and XRD changes are ahead of where the tooling and documentation currently are.

// questions people ask

Before you choose

Is OpenTofu a safe replacement for Terraform?

Yes for nearly all existing setups — it reads the same .tf files, works with the same providers, and opens the same state files without changes. The main reason to switch is licensing: OpenTofu stays under MPL while Terraform moved to the Business Source License in 2023.

Why would I pick Pulumi over Terraform or OpenTofu?

Pick Pulumi if your team already writes TypeScript, Python, Go, C#, or Java and would rather express infrastructure logic as real code than HCL expressions. You get loops, functions, and your usual package manager, though the gRPC-mediated engine gets noticeably slower on large stacks.

Does Crossplane replace Terraform?

No — most teams run Crossplane on top of or alongside a tool like Terraform rather than instead of it. It's built for platform teams exposing simplified, Kubernetes-native APIs to other engineers, not for provisioning infrastructure directly.

What's the biggest operational risk across these tools?

State management. Terraform, OpenTofu, and Pulumi all depend on a state file or backend that needs locking for concurrent use, and a corrupted or out-of-sync state file can block an entire team until someone fixes it by hand.

If you're not sure, default to Terraform or OpenTofu for anything resembling standard cloud infrastructure, and reach for Pulumi only when the team already codes in TypeScript or Python every day. Crossplane only makes sense once you're building a platform for other people to use, not just provisioning your own resources.

// how we picked these

Every repo here was read and assessed on its own before it was considered for this page: we pull the README, the directory layout and a key source file, and write the assessment from those rather than from the project's own marketing. Candidates for this list came from a full-text and topic search over the 276 reviewed repositories that matched this category. Anything with no commit in the last 12 months was cut, as were link collections, tutorials and boilerplates; the floor for inclusion was 3.000 stars. The ordering is a judgement call about who should pick what, not a ranking by stars. finds.dev is independent of every project listed here: nobody paid for a place on this page, there are no affiliate or referral links on it, and we have no commercial relationship with any of them. That is the point of writing down what each one is bad at as well as what it is good at.

Our criteria →