Infrastructure as Code
in Any Language

Real Languages. Any Cloud. Open Source.

Stop wrestling with DSLs. Use the programming languages you already know to build infrastructure on AWS, Azure, Google Cloud, Kubernetes, and thousands of providers. Powered by Pulumi’s open source IaC engine with 20k+ GitHub stars. Get started in 5 minutes.

Write infrastructure code in your favorite language

Powered by Apache 2.0 Licensed Open Source

Pulumi lets you write infrastructure as code using standard programming languages – TypeScript/JavaScript, Python, Go, C#, Java, and YAML. Get autocomplete, type checking, and all your favorite IDE features. Build on AWS, Azure, Google Cloud, Kubernetes, and thousands of providers. Our open source engine is Apache 2.0 licensed and will always remain free.

Pulumi code being written in TypeScript showing autocomplete for creating a new S3 bucket Pulumi code being written in Python showing autocomplete for creating a new S3 bucket Pulumi code being written in GO showing autocomplete for creating a new S3 bucket Pulumi code being written in C# showing autocomplete for creating a new S3 bucket Pulumi code being written in Java showing autocomplete for creating a new S3 bucket Pulumi code being written in YAML showing autocomplete for creating a new S3 bucket
Use real code, not DSLs

Write infrastructure with loops, conditionals, functions, and classes. Reuse code, catch errors at compile time, and refactor with confidence.

Build on any cloud

Access AWS, Azure, Google Cloud, Kubernetes, and thousands of providers through a unified, consistent API. Same-day updates for new cloud features.

Test before you ship

Preview changes before deploying them. Write unit tests for your infrastructure. Run integration tests against ephemeral environments.

Open Source Core. Pulumi Cloud Built In.

Get started with Pulumi Cloud for free, state management and secrets included. Our open source engine powers everything underneath. Scale to enterprise features when you need them, or self-host if required.

350,000+

engineers building with Pulumi

3,700+

companies in production

1,000s

of cloud and service providers

“Our developers needed a fast, modular, and testable platform for managing cloud infrastructure. Nothing is better than having standard programming languages for building and managing infrastructure

Austin Byers, Principal Platform Engineer

Panther Labs

Ship faster with reusable components

Pulumi Packages - Infrastructure Building Blocks

Stop copy-pasting and create reusable infrastructure components that can be used in any language. Package common patterns once, use everywhere. Share via Pulumi’s registry, npm, PyPI, NuGet, or any package manager.

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}
Production-ready patterns

Ship EKS clusters, serverless apps, or entire platforms with one line of code using well-architected components.

Thousands of providers

Full API coverage for AWS, Azure, Google Cloud, Kubernetes, plus Cloudflare, Datadog, GitHub, and thousands more.

From VMs to Kubernetes

Manage traditional infrastructure, containers, serverless, and Kubernetes with one tool, one workflow.

Ship infrastructure like software

GitOps & CI/CD Native

Infrastructure as code means infrastructure in Git. Review changes in pull requests. Run tests in CI. Ship through GitHub Actions, GitLab, Jenkins, or any CI/CD system.

Pulumi infrastructure as code example
Git-native workflow

Every infrastructure change is a pull request. Review, comment, approve. Full audit trail built in.

Catch bugs before production

Run unit tests in milliseconds. Spin up ephemeral environments for integration tests. Fail fast, fix fast.

Works with your CI/CD

Integrates with any CI/CD system. GitHub Actions, GitLab, Jenkins, CircleCI - your choice. Or use the Kubernetes operator for GitOps.

Scale Confidently with Pulumi Cloud

Built for Teams from Day One

Start free with Pulumi Cloud - encrypted state storage, secrets management, and collaboration built in. When you scale, enterprise features like RBAC, policy enforcement, and SSO are ready. All powered by our open source engine.

Pulumi infrastructure as code example
Encrypted state management

Never lose state again. Automatic versioning and encryption at rest. Pulumi Cloud handles it all, or self-host with S3/Azure Blob.

Secrets that actually work

No more secrets in plaintext. Automatic encryption for sensitive values. Integrate with AWS Secrets Manager, Azure Key Vault, or use Pulumi ESC for centralized secrets.

Ship with confidence

Review every change before it ships. Full history and audit logs. Roll back to any previous state when needed.

See everything, everywhere

Single pane of glass for all your clouds. Search across AWS, Azure, and GCP. Find that rogue EC2 instance in seconds.

Automation API

Infrastructure as code as a library. Embed Pulumi in your app. Build custom CLIs, portals, or platforms. Full programmatic control.

Self-service infrastructure

Let engineers provision their own infrastructure safely. Templates, guardrails, and approval workflows. Works with Backstage or build your own.

Enterprise SSO & RBAC

SAML, SCIM, GitHub, GitLab, Atlassian. Fine-grained permissions. Temporary access tokens. SOC 2 Type II compliant.

Policy as code

Enforce security and compliance automatically. Hundreds of built-in policies or write your own. Block non-compliant infrastructure before it ships.

Complete audit trail

Every action logged. Who changed what, when, and why. Export to SIEM. Compliance reports at your fingertips.

Get started with Infrastructure as Code

Ship your first infrastructure today

Get started in just five minutes. Follow our tutorials for AWS, Azure, Google Cloud, Kubernetes, and more.

Migrating from other tools

Transition from existing infrastructure tools or continue using both. Pulumi has converter tools for Terraform, CloudFormation, ARM, and Kubernetes.