# Pulumi Architecture Overview Broadly speaking, Pulumi is composed of five components: 1. [The deployment engine](#the-deployment-engine) 2. [State storage backends](#state-storage-backends) 3. [Language SDKs](#language-sdks) 4. [Resource providers](#resource-providers) 5. [Package schemas and code generators](#package-schemas-and-code-generators) These components interact to provide the feature set exposed by the Pulumi CLI and SDKs, including desired-state deployments using standard programming languages, remote state storage and secret encryption, and the ability to bridge the gap between existing and Pulumi-managed infrastructure. These components are composed like so: ![Pulumi CLI](./pulumi-cli.svg) In most cases, the language plugin, CLI, and resource providers will all live in separate processes, and each instance of a resource provider will live in its own process. ## The Deployment Engine ## State Storage Backends ## Language SDKs ## Resource Providers ## Package Schemas and Code Generators