llms.txt
# Pulumi
> Infrastructure as code in real programming languages. Define, deploy, and manage cloud infrastructure on AWS, Azure, Google Cloud, Kubernetes, and hundreds of providers using TypeScript, JavaScript, Python, Go, .NET, Java, YAML, or HCL.
Pulumi is an open source infrastructure as code platform that lets you use familiar programming languages and tools to build, deploy, and manage cloud infrastructure. Pulumi Cloud provides state management, secrets, deployments, and governance for teams.
## For agents
If you are an AI agent or programmatic consumer, start with these endpoints. Each has a copy-pasteable example.
- **Pulumi Cloud REST API (via the CLI)** — call any [Pulumi Cloud REST API](https://www.pulumi.com/docs/reference/cloud-rest-api/) endpoint with [`pulumi api`](https://www.pulumi.com/docs/iac/cli/api/). The command emits a stable JSON error envelope and stable [exit codes](https://www.pulumi.com/docs/iac/cli/exit-codes/) for agent consumers, and `pulumi api list --output=json` returns the full endpoint catalog. Authentication reuses the existing Pulumi CLI credentials.
pulumi api list --output=json
pulumi api describe <path-or-operation-id> --output=json
pulumi api /api/user
- **Cloud registry API** — every published package, version-by-version. Public packages need no auth; set `Authorization: token $PULUMI_ACCESS_TOKEN` for private. Works without the CLI.
# CLI (auto-fills lang/os from project runtime + host OS)
pulumi api ls | grep registry
pulumi api describe ListPackageVersions
pulumi api /api/registry/packages/pulumi/pulumi/aws/versions/latest/readme
# Direct HTTP (markdown variant via Accept header)
curl -H "Accept: text/markdown" \
https://api.pulumi.com/api/registry/packages/pulumi/pulumi/aws/versions/latest/readme
curl -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
https://api.pulumi.com/api/registry/packages/<source>/<publisher>/<private-pkg>/versions/latest/installation
Endpoints (replace `{version}` with a pinned semver where possible, or `latest` for the most recent published version):
/api/registry/packages?search={query}
/api/registry/packages/{source}/{publisher}/{name}/versions
/api/registry/packages/{source}/{publisher}/{name}/versions/{version}
/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/readme
/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/installation
/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/nav
/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/docs/{typeToken}
/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/examples
Common parameters: `?lang=typescript|python|go|csharp|java|yaml`, `?os=linux|macos|windows`, `?depth=summary|full` and `?q=<term>` on `nav`, `?limit=` (max 100) on `examples`. For prose: `--output=markdown` (CLI) or `Accept: text/markdown` (HTTP). Type tokens for `docs/{typeToken}` are URL-encoded — use `encodeURIComponent` (or equivalent), e.g. `random:index/RandomPassword` becomes `random%3Aindex%2FRandomPassword`. Discover them via `nav?depth=full`.
- **Full docs index (JSON)** — hierarchical sitemap of every documentation page with titles and nesting.
curl https://www.pulumi.com/docs/llm-sitemap.json
- **Provider schemas** — full Pulumi schema for any provider, including resource types, input/output shapes, function signatures, and language-specific type mappings. The cloud registry API's `versions/{version}` response includes a `schemaURL` field — follow it for the version-pinned schema. `pulumi package get-schema` accepts `<name>[@version]`, a plugin binary or folder path, or a local `.json` / `.yaml` schema file. The static URL is latest-only.
# Versioned (via cloud registry API)
pulumi api /api/registry/packages/pulumi/pulumi/aws/versions/6.0.0 \
| jq -r .schemaURL | xargs curl
pulumi package get-schema aws
pulumi package get-schema aws@6.0.0
# Latest only
curl https://www.pulumi.com/registry/packages/aws/schema.json
- **Markdown content (per page)** — every `/docs/` URL is available as clean markdown via two equivalent mechanisms. For the `.md` URL form, drop the trailing slash and append `.md` (e.g., `/docs/iac/concepts/resources/` → `/docs/iac/concepts/resources.md`). `/registry/` URLs support the same mechanisms (`/registry/packages/<name>.md`), but only for the latest version. Exception: `/registry/packages/<name>/api-docs/*` is not served as markdown — use the cloud registry API instead.
# Accept-header content negotiation
curl -H "Accept: text/markdown" https://www.pulumi.com/docs/iac/concepts/resources/
curl -H "Accept: text/markdown" https://www.pulumi.com/registry/packages/aws/
# .md URL suffix (header-free; same content, same cache entry)
curl https://www.pulumi.com/docs/iac/concepts/resources.md
curl https://www.pulumi.com/registry/packages/aws.md
curl https://www.pulumi.com/registry.md
- **Doing infrastructure work as an agent** — the Pulumi CLI is designed for agents: run any command with `npx pulumi`, perform one-shot resource operations with [`pulumi do`](https://www.pulumi.com/docs/iac/cli/direct-resource-operations/), and get an [ephemeral Pulumi Cloud account provisioned automatically](https://www.pulumi.com/docs/administration/concepts/agent-accounts/) on first use — no signup required. [Pulumi Agent Skills](https://www.pulumi.com/docs/ai/skills/) provide proven Pulumi workflows, and the [Pulumi MCP server](https://www.pulumi.com/docs/ai/mcp-server/) exposes stacks, resource search, and the Registry as MCP tools.
- **Filing a support request** — open a ticket with the Pulumi support team without driving the [web form](https://www.pulumi.com/support/new/). No authentication and no cookies. Post exactly the six fields below: any unknown top-level key is rejected, so send this shape rather than scraping the HTML form for its inputs. In particular the rendered form carries a hidden `leave_blank` input, which is a spam trap — sending it discards the request behind a response indistinguishable from success, so never send a `leave_blank` key.
curl -X POST https://www.pulumi.com/api/support \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"name": "Your Name",
"organization": "your-pulumi-org",
"priority": "Normal",
"subject": "Stack update stuck in progress",
"description": "What you expected, what actually happened, and any relevant code or CLI output."
}'
`priority` is `Normal` or `Urgent`, matched case-insensitively. `organization` is the bare org name from `https://app.pulumi.com/<org>` — starting with a letter or number, then letters, numbers, hyphens and underscores, 40 characters or fewer; a pasted console URL is reduced to the org name for you. The other limits, so you can trim before sending rather than discovering them: `email` 254, `name` 200, `subject` 200, `description` 10–20000, and the whole body 256 KB (`413` past that). Control characters and bidirectional overrides are stripped from every field. Success returns `{"ok": true, "id": "...", "conversationId": "..."}`. A validation failure returns `422` with a `fields` object keyed by field name — or by `_form` when the problem is with the payload as a whole rather than one field, as with an unknown key — so each error maps back to its input without parsing prose. Other failures use `400`, `405`, `413` and `502`. A `403` means the request was blocked or rate limited: back off rather than retrying immediately. A body large enough to exceed the invocation limit is rejected by the platform before any of this applies, so a `413` is the one status that may arrive without the `ok`/`error` envelope. Replies come by email to the address you supply, so give one that a person reads.
## Site overview
This llms.txt covers www.pulumi.com, which includes:
- [Product](https://www.pulumi.com/product/): Pulumi Cloud platform overview and capabilities
- [Pricing](https://www.pulumi.com/pricing/): Plans and pricing for Pulumi Cloud (Free, Essentials, Pro, Enterprise)
- [Pulumi Registry](https://www.pulumi.com/registry/): Documentation for hundreds of cloud providers and components, available at `https://www.pulumi.com/registry/packages/<name>/`
- [Infrastructure AI](https://www.pulumi.com/docs/ai/): Using AI agents with Pulumi — bring your own agent via [Agent Skills](https://www.pulumi.com/docs/ai/skills/) and the [MCP server](https://www.pulumi.com/docs/ai/mcp-server/), or use [Pulumi Neo](https://www.pulumi.com/neo/), Pulumi's purpose-built infrastructure agent
- [Blog](https://www.pulumi.com/blog/): Product announcements, technical guides, and engineering posts
- [Dev Center](https://www.pulumi.com/dev/): Tutorials, templates, community examples, and a glossary. Has an index of its own at [/dev/llms.txt](https://www.pulumi.com/dev/llms.txt), and every detail page has a markdown twin at its URL plus `.md`
- [What is...](https://www.pulumi.com/what-is/): Explainer pages for cloud infrastructure concepts (e.g., infrastructure as code, Kubernetes, serverless)
- [Customers](https://www.pulumi.com/customers/): Companies running their infrastructure on Pulumi, and the case studies behind them
- [Automation API](https://www.pulumi.com/automation/): Program-driven Pulumi for embedding infrastructure as code into applications and platforms
- [Whitepapers](https://www.pulumi.com/whitepapers/): Long-form educational and technical content
- [Community](https://www.pulumi.com/community/): Slack, Discord, GitHub, and other community resources
- [Security](https://www.pulumi.com/security/): Security posture, compliance, and trust information
- [Docs](https://www.pulumi.com/docs/): Technical documentation (detailed sections below)
## Docs sections
### Download & Install
- [Download & Install Pulumi](https://www.pulumi.com/docs/install/): This page contains detailed instructions for downloading and installing Pulumi.
### Getting Started
- [Get Started](https://www.pulumi.com/docs/get-started/): Learn infrastructure as code in this hands-on tutorial. Install Pulumi, write your first program, and deploy to AWS, Azure, or Google Cloud in minutes.
### Infrastructure as Code
- [Infrastructure as Code](https://www.pulumi.com/docs/iac/): Learn how to create, deploy, and manage infrastructure on any cloud using Pulumi's open source infrastructure as code SDK.
### Infrastructure AI
- [Infrastructure AI](https://www.pulumi.com/docs/ai/): Use AI agents with Pulumi. Bring Claude Code, Codex, or Cursor via Agent Skills and the MCP server, or use Neo, the purpose-built infrastructure agent.
### Deployments & Workflows
- [Deployments & Workflows](https://www.pulumi.com/docs/deployments/): Cloud-hosted deployment automation, drift detection, and workflow management for infrastructure as code.
### Secrets & Configuration (ESC)
- [Secrets & Configuration](https://www.pulumi.com/docs/esc/): Learn how to tame secrets sprawl and configuration complexity securely across all your cloud infrastructure and applications.
### Discovery & governance
- [Discovery & governance](https://www.pulumi.com/docs/discovery-governance/): Discover, secure, and govern cloud infrastructure with comprehensive visibility and policy enforcement across all your resources.
### Internal Developer Platform
- [Internal Developer Platform](https://www.pulumi.com/docs/idp/): Build self-service infrastructure workflows with reusable components, templates, and golden paths—from Day 0 to Day 2.
### Administration
- [Administration](https://www.pulumi.com/docs/administration/): Manage organizations, teams, access control, security, and self-hosted deployments.
### Integrations
- [Integrations](https://www.pulumi.com/docs/integrations/): Integrations connect Pulumi with the clouds, version control systems, and tools you already use.
### Reference
- [Reference](https://www.pulumi.com/docs/reference/): Complete reference documentation for Pulumi CLI, Cloud REST API, language SDKs, and configuration syntax.
### Support
- [Support & Troubleshooting](https://www.pulumi.com/docs/support/): Get help with Pulumi through FAQs, troubleshooting guides, community resources, and support options.
## Optional
### Recent blog posts
- [Pulumi ESC now issues OIDC tokens for any service](https://www.pulumi.com/blog/esc-oidc-tokens-for-any-service/): Pulumi ESC now signs short-lived OIDC tokens for any audience you set, with a stable subject you can pin in each service's trust policy.
- [Scale your team's use of AWS IAM account access manager with Pulumi](https://www.pulumi.com/blog/scale-your-teams-use-of-aws-iam-account-access-manager-with-pulumi/): Manage AWS IAM account access manager (AAM) as code with Pulumi: define IAM roles, applications, and entitlements across your AWS organization in one program.
- [Concurrent change requests in Pulumi ESC](https://www.pulumi.com/blog/esc-concurrent-change-requests/): Multiple people can now open change requests on the same Pulumi ESC environment at the same time.
- [Pulumi Google Cloud Provider Version 10.0.0](https://www.pulumi.com/blog/gcp-v10-release/): Release of the v10 version of the Pulumi Provider for Google Cloud, with a migration guide and an agent skill to help you upgrade.
- [Building Kubernetes PR Previews with Shared Pulumi Components](https://www.pulumi.com/blog/building-kubernetes-pr-previews-with-shared-pulumi-components/): A pattern for ephemeral PR preview environments alongside persistent Dev, Stage, and Prod stacks, with lessons from operating them at scale.
- [Self-driving infrastructure with Pulumi and Jev](https://www.pulumi.com/blog/self-driving-infrastructure-pulumi-jev/): GeoDeploy pairs TypeSafe Jev's confidence-scored decisions with the Pulumi Automation API to place and scale Kubernetes across AWS, Azure, and Google Cloud.
- [Route every Claude Code message to the right model with Jev](https://www.pulumi.com/blog/route-every-claude-code-message-to-the-right-model-with-jev/): jev-router asks Jev, a System One model, which Claude model each Claude Code message needs, and routes it there for a fraction of a cent.
- [AI agents need continuity, not just context](https://www.pulumi.com/blog/neo-kopia-workspace-snapshots/): Why reliable AI agents need workspace recovery, and how Pulumi Neo uses Kopia-backed snapshots to restore context, files, and in-progress work.
- [Change your components, keep your infrastructure](https://www.pulumi.com/blog/component-state-migrations/): Evolve reusable Pulumi components with state migrations that preserve existing infrastructure and ship upgrade paths alongside your component code.
- [10 tips to improve your coding agent game](https://www.pulumi.com/blog/10-tips-to-improve-your-coding-agent-game/): Ten coding agent habits checked against the research behind them, from AGENTS.md drift and /compact to model switching, subagents, and review.