Skip to content

Pulumi — How It Works

Language SDK runtime, provider plugin architecture, and deployment engine internals.

Deployment Engine

sequenceDiagram
    participant User as User Code (TypeScript/Python/Go)
    participant SDK as Pulumi Language SDK
    participant Engine as Pulumi Engine
    participant Provider as Provider Plugin (gRPC)
    participant Cloud as Cloud API

    User->>SDK: Declare resources (new aws.s3.Bucket(...))
    SDK->>Engine: Register resource (gRPC)
    Engine->>Engine: Build dependency graph
    Engine->>Provider: Create/Update/Delete
    Provider->>Cloud: API calls
    Provider-->>Engine: Resource outputs
    Engine-->>SDK: Resolve outputs (Promises/Futures)
    SDK-->>User: Export outputs

Language Runtime Model

flowchart TB
    subgraph User["User Process"]
        Code["TypeScript / Python / Go\nInfra Code"]
        SDK_P["Pulumi SDK\n(resource registration)"]
    end

    subgraph Engine_P["Pulumi Engine Process"]
        Deployment["Deployment Engine\n(DAG, diffing, ordering)"]
        StateM["State Manager"]
    end

    subgraph Providers_P["Provider Processes"]
        AWS_P["AWS Provider"]
        K8s_PP["K8s Provider"]
        TF_Bridge["Terraform Bridge\n(use TF providers)"]
    end

    Code --> SDK_P
    SDK_P <-->|"gRPC"| Deployment
    Deployment <-->|"gRPC"| Providers_P
    Deployment --> StateM

    style User fill:#8b5cf6,color:#fff
    style Engine_P fill:#1565c0,color:#fff

Terraform Bridge

Pulumi can use any Terraform provider via the Terraform Bridge — a compatibility layer that translates Terraform provider schemas into Pulumi resource types. This gives Pulumi access to the same 4,800+ providers.

Sources