Real Languages. No Resource Caps.
Migrate at Your Pace.
Looking for a Terraform alternative? HCP Terraform’s free tier caps you at 500 managed resources. Pulumi Cloud has no resource caps. Write infrastructure in Python, TypeScript, Go, or C# with full IDE support, testing, and 170+ cloud providers. Free tf2pulumi migration tool included.
Trusted by innovative companies

“What used to take a week and a half now, with Pulumi, took under a day.”
Raman Hariharan, Director of Cloud Platform Engineering, Snowflake
Switch from HCL to real languages
Pulumi Infrastructure as Code Engine
Stop writing HCL. Author infrastructure as code using programming languages you already know, including Python, TypeScript, Go, C#, Java, and YAML. Use the free tf2pulumi converter to migrate your existing Terraform files. Deploy to 170+ providers.
Code faster
Write infrastructure code in TypeScript, JavaScript, Python, Go, .NET, Java, and YAML using your IDE and any language ecosystem tools.
Build on any cloud
Access the full breadth of services in AWS, Azure, GCP, and 170+ providers through a complete and consistent SDK interface.
AI-powered infrastructure
Generate Pulumi code from natural language or convert existing Terraform with Pulumi AI and Neo.
Migrate from Terraform in minutes
Free Migration Tools
Use tf2pulumi to convert your existing Terraform HCL to Python, TypeScript, Go, or C#. Import existing state with pulumi import. Keep your current infrastructure running while you migrate at your own pace. No forced deadlines. No resource caps.

Convert HCL to real code
The tf2pulumi tool converts your .tf files to Pulumi programs in your language of choice. Try it at pulumi.com/tf2pulumi.
Import existing state
Already have infrastructure managed by Terraform? Import your state directly into Pulumi without re-provisioning. Zero downtime migration.
No 500 resource limit
Pulumi Cloud’s free tier has no managed resource caps. Manage as many resources as you need. Scale when you’re ready.
Build infrastructure faster with reusable components
Pulumi Packages
Build and reuse higher-level abstractions for cloud architectures with multi-language Pulumi Packages. Distribute the packages through repositories or package managers so your team members can reuse them.
import * as eks from "@pulumi/eks";
// Create an EKS cluster with the default configuration.
const cluster = new eks.Cluster("eks-cluster");
// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;
import pulumi
import pulumi_eks as eks
# Create an EKS cluster with the default configuration.
cluster = eks.Cluster("eks-cluster")
# Export the cluster's kubeconfig.
pulumi.export("kubeconfig", cluster.kubeconfig)
package main
import (
"github.com/pulumi/pulumi-eks/sdk/go/eks"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Create an EKS cluster with default settings.
cluster, err := eks.NewCluster(ctx, "eks-cluster", nil)
if err != nil {
return err
}
// Export the cluster's kubeconfig.
ctx.Export("kubeconfig", cluster.Kubeconfig)
return nil
})
}
using System.Collections.Generic;
using Pulumi;
using Pulumi.Eks;
await Deployment.RunAsync(() =>
{
// Create an EKS cluster with default settings.
var cluster = new Cluster("eks-cluster");
// Export the cluster's kubeconfig.
return new Dictionary<string, object?>
{
["kubeconfig"] = cluster.Kubeconfig
};
});
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.eks.Cluster;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
private static void stack(Context ctx) {
final var cluster = new Cluster("eks-cluster");
ctx.export("kubeconfig", cluster.kubeconfig());
}
}
resources:
eks-cluster:
type: eks:Cluster
outputs:
kubeconfig: ${cluster.kubeconfig}
Native cloud providers
Full API coverage for AWS, Azure, Google Cloud, and Kubernetes with same-day updates.
Crosswalk for AWS
Adopt well-architected best practices for your infrastructure easily with the Crosswalk library.
Cloud Native support
Use a single workflow to manage both Kubernetes resources and infrastructure.
Deliver infrastructure through software delivery pipelines
CI/CD Integrations
Version, review, test, and deploy infrastructure code through the same tools and processes used for your application code.

Version and review
Manage infrastructure code in Git and approve changes through pull requests.
Shift left
Get rapid feedback on your code with fast unit tests, and run integration tests against ephemeral infrastructure.
Continuous delivery
Integrate your CI/CD provider with Pulumi or use GitOps to manage Kubernetes clusters.
Trusted by thousands of companies
Pulumi’s Infrastructure as Code CLI and SDK is an open-source project that’s supported by an active community. We maintain a public roadmap and welcome feedback and contributions.
350,000+
Community members
4,000+
Companies in production
170+
Cloud and service integrations
Customers innovating with Pulumi Cloud
Snowflake
Switched from HCL to Go with Pulumi. Deployment time cut from 1.5 weeks to under a day.