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.