Moving from HCL to TypeScript-native Pulumi
Learn how to transition from Terraform to Pulumi using TypeScript for improved type safety and IDE integration. This guide covers the provider ecosystem, the pulumi-terraform-bridge, and pricing tiers ranging from free to $400 per month.
I choose Pulumi because it replaces Hashiorsk Configuration Language with general-purpose languages like TypeScript. While Terraform uses HCL to describe infrastructure, Pulumi lets you use loops, functions, and classes. Because Pulumi allows you to use general-purpose languages like TypeScript, you can integrate your existing IDE and linters to manage infrastructure just like you manage your application code without needing extra plugins. This approach works for teams that already write application code in Node.js or Bun. I find the TypeScript support provides type safety and IntelliSense that HCL lacks, as Pulumi supports versions from 3.8 up to 6. When you run Pulumi, the engine builds a resource graph and compares that graph against your state. This reconcile model mirrors how Terraform operates. To start, you can run pulumi new to use a TypeScript template. Pulumi executes your program by loading the entrypoint file as a Node module, which defaults to index.ts or index.js. If you use the Bun runtime, note that function serialization and dynamic providers do not work because Bun lacks certain Node.js v8 APIs. You can also use the Automation API to embed Pulumi deployments inside your application code. If your team lives in TypeScript, why would you adopt a separate, restrictive language?
The provider ecosystem
The provider ecosystem shows a measurable difference in scale. Terraform maintains over 4,800 providers, while Pulumi lists approximately 1,800. I note that Pulumi remains smaller in raw numbers, but the pulumi-terraform-bridge project allows you to use Terraform providers directly. This bridge lets you access the massive Terraform registry without leaving the Pulumi workflow. For major providers like AWS, Azure, and GCP, Pulumi provides native support that updates within 48 hours of a new service announcement. This speed helps teams move faster than the weekly release cadence seen in community-maintained Terraform providers. The 2.7x gap in the registry size is large, but Pulumi bridges this. In 2026, Pulumi shows a 45% year-over-year growth rate among developer-focused teams, even though Terraform still commands 76% of the market. While Pulumi is a strong choice, some developers might prefer the Encore framework for TypeScript or Go. Encore allows you to declare resources in the application code itself, which removes the need for separate Pulumi modules or state files.
Managing costs and state
Managing costs requires understanding the resource-under-management model. Pulumi bills you based on the number of resources you declare and the deployment minutes you consume. I find the individual tier attractive because it provides 500 deployment minutes and secret management at no cost.
| Pulumi Tier | Base Price | Included Resources |
|---|---|---|
| Individual | $0 | Unlimited |
| Team | $40/mo | 500 |
| Enterprise | $400/mo | 2,000 |
| Business Critical | Custom | Custom |
The Team tier costs $40 per month and supports up to 10 users with 500 resources. This tier includes 150,000 free credits each month. If you exceed those limits, the overage rate for additional resources is $0.1825 per resource per month, and additional deployment minutes cost $0.01 per minute. The Enterprise tier starts at $400 per month and includes up to 2,000 resources for unlimited users. The Enterprise tier is available on the AWS Marketplace for $32,850 yearly. For regulated industries, the Business Critical tier targets users needing 24/7 support and compliance packs for NIST or PCI, but you must contact the sales team for the exact pricing for your organization. I would tell you to check your specific resource count before committing to a tier, as every declared resource, including provider resources, component resources, and stacks, counts toward your bill.