# Pulumi

> Infrastructure as real code. And it can use any Terraform provider, so nearly everything is provisionable from one codebase.

- Verdict: My default
- Vendor: Pulumi
- Layer: [Infrastructure as code](https://cloudlesslabs.com/stack/layers/iac.md). Job: Infrastructure as code
- Last reviewed: 18 October 2026, by Nicolas Dao (Cloudless Labs, Sydney)
- Web page: https://cloudlesslabs.com/stack/pulumi/. The whole stack in one file: https://cloudlesslabs.com/stack/brief.md

Pulumi pioneered infrastructure as real code instead of config files, and I've had no unsolved pain with it. I deploy everything with it, from my own machine, with state in S3.

The part people miss: Pulumi can use any Terraform provider. So the rule "if I can't provision it, it loses points" covers almost the whole market: AWS, Cloudflare, GitHub, Tailscale, Neon, Resend, PostHog, OpenRouter, Stripe.

## Use it when

- Always.

## Pricing

Free and open source with a self-managed S3 backend (no Pulumi Cloud fees).

## Gotchas, with fixes

- **Gotcha:** A vendor has no Pulumi package.
  **Fix:** Run `pulumi package add terraform-provider <namespace>/<name>`: Pulumi generates an SDK from any Terraform or OpenTofu provider.
- **Gotcha:** Community providers are often maintained by one person (Neon, Resend, Clerk).
  **Fix:** Pin provider versions and upgrade deliberately.
- **Gotcha:** New AWS services can land in @pulumi/aws-native before @pulumi/aws (Lambda Web Functions today).
  **Fix:** Use aws-native for those resources alongside the classic provider.
- **Gotcha:** Pulumi doesn't bundle Cloudflare Worker code.
  **Fix:** Build with Wrangler, deploy the output with Pulumi, and give each Worker one owner.

## Provisioning

Official Pulumi package

## Instead, consider

- [Terraform / OpenTofu](https://cloudlesslabs.com/stack/terraform/index.md): The client already runs it.

## Worked examples

- [Pulumi everywhere](https://cloudlesslabs.com/stack/guides/pulumi-everywhere/index.md): Can I provision every tool on this page from one codebase?

## Where it fits

- [Provisioning everything](https://cloudlesslabs.com/stack/use-cases/infra.md): pick 1. Real code, S3 backend, and any Terraform provider.
- [An AWS foundation for a client](https://cloudlesslabs.com/stack/use-cases/aws-foundation.md): pick 2. Everything as code.
- [Moving on-premises systems to AWS](https://cloudlesslabs.com/stack/use-cases/migration.md): pick 4. The target infrastructure, as code.

## Sources

- [Use any Terraform provider](https://www.pulumi.com/docs/iac/concepts/providers/any-terraform-provider/)

## Related

- [Infrastructure as code](https://cloudlesslabs.com/stack/layers/iac.md): every tool in this layer, with its verdict
- [The whole stack in one file](https://cloudlesslabs.com/stack/brief.md): every use case and tool, for questions that span many
- [Map of every Markdown file on cloudlesslabs.com, with what each one answers](https://ask.cloudlesslabs.com)
