# pulumi

Published articles for pulumi.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Cloud Sovereignty, Provider Risk, and Migration Options for EU Companies

DevFeed: [Cloud Sovereignty, Provider Risk, and Migration Options for EU Companies](<https://devfeed.tech/articles/beyond-the-hyperscalers-what-actually-protects-you-31468.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/beyond-the-hyperscalers-what-actually-protects-you/>)

Author: Adam Gordon Bell

Published: 2026-09-16T13:00:00Z

Content type: opinion

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Cloud](<https://devfeed.tech/topics/cloud.md>), [migration](<https://devfeed.tech/topics/migration.md>), [pulumi](<https://devfeed.tech/topics/pulumi.md>), [Security](<https://devfeed.tech/topics/security.md>), [scaleway](<https://devfeed.tech/topics/scaleway.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [azure](<https://devfeed.tech/tags/azure.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [customers](<https://devfeed.tech/tags/customers.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [migration](<https://devfeed.tech/tags/migration.md>), [platform-engineering](<https://devfeed.tech/tags/platform-engineering.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [scaleway](<https://devfeed.tech/tags/scaleway.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

This recorded discussion examines cloud sovereignty, legal and cost concerns for EU companies using major US cloud providers, and the practical tradeoffs of moving to European providers. Three guests discuss provider exposure, encryption and account shutdown risks, migration costs, and whether Pulumi and agentic infrastructure can make future moves easier.

### Source excerpt

Recorded September 3, 2026. Quotes are lightly edited for clarity. Maybe this sounds familiar. You run infrastructure at a company that isn't American. Your workloads are on AWS, Azure, or Google Cloud, probably more than one, because that is what everyone picked. Until recently nobody asked you where the data lives or who can reach it. Now you're getting questions. Legal wants to know what NIS2 means for where your systems run. Someone on the leadership team read that the US government locked the cloud accounts of judges at the International Criminal Court and wants to know if that could happen to you. Finance wants to know why the bill went up again. A customer's security review asked, in writing, which country your data sits in. So now you have questions of your own: If a US court or agency wants my data, can they get it from my provider without involving me? Does putting everything in an EU region change that? The big providers now sell "sovereign cloud" in Europe. Is that different, or a rename? If I encrypt everything and hold the keys myself, am I covered? Could my account be switched off one day? What would I do? Are Hetzner, OVH, and Scaleway usable for real workloads? How much cheaper are they once you count the migration? What should I be building on now so I can leave later if I need to? A migration like this used to be a multi-year project. Does Pulumi and agentic infrastructure change that? Is any of this worth the disruption, or should I leave what works alone? I put those questions to three people who have each dealt with this for real. One of them helps EU companies work out their exposure and builds the tooling to leave. Another has spent fifteen years sizing what cloud actually costs, and thinks most people should stay put. The third moved his company off AWS and onto a European provider. They don't agree on how big the risk is. The full hour is below. Don't just default to the hyperscalers Waldemar Kindler co-founded Think Ahead Technologies, whe

## Set Up Cloud OIDC From the Pulumi CLI

DevFeed: [Set Up Cloud OIDC From the Pulumi CLI](<https://devfeed.tech/articles/set-up-cloud-oidc-from-the-pulumi-cli-19001.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/esc-oidc-setup-cli/>)

Author: Sean Yeh

Published: 2026-09-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [OpenID connect (OIDC)](<https://devfeed.tech/topics/oidc.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [AWS IAM](<https://devfeed.tech/topics/aws-iam.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [AWS Identity and Access Management (IAM)](<https://devfeed.tech/topics/aws-identity-and-access-management-iam.md>), [Azure](<https://devfeed.tech/topics/azure.md>), [Google Cloud Platform (GCP)](<https://devfeed.tech/topics/google-cloud.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [aws](<https://devfeed.tech/tags/aws.md>), [azure](<https://devfeed.tech/tags/azure.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [docs](<https://devfeed.tech/tags/docs.md>), [esc](<https://devfeed.tech/tags/esc.md>), [google-cloud](<https://devfeed.tech/tags/google-cloud.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [iam](<https://devfeed.tech/tags/iam.md>), [identity](<https://devfeed.tech/tags/identity.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cli](<https://devfeed.tech/tags/pulumi-cli.md>), [security](<https://devfeed.tech/tags/security.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This tutorial explains how to use the Pulumi CLI command pulumi env setup to configure Pulumi ESC as an OIDC provider for AWS, Azure, and Google Cloud. It covers interactive onboarding, non-interactive flags for scripts and agents, cloud credentials, account selection, access policies, and automatic creation of identity providers, IAM roles, policy attachments, and ESC environments.

### Source excerpt

Pulumi ESC can act as an OpenID Connect (OIDC) provider for AWS, Azure, and Google Cloud, issuing short-lived, signed tokens that these clouds exchange for temporary credentials. This eliminates hard-coded credentials and improves your security posture. Last year, we introduced an onboarding flow in the Pulumi Cloud console that makes it super easy to configure OIDC for your cloud provider in a few guided steps. We're bringing Pulumi Cloud into the CLI so agents can use its capabilities directly from the terminal, without requiring a human to complete steps in the console. The new pulumi env setup command brings OIDC onboarding to that workflow, with interactive prompts for guided setup and non-interactive flags for scripts and agents. pulumi env setup - how it works Run the command with your desired cloud provider (aws, azure, gcp). For example: pulumi env setup aws The command then asks what it needs to configure your cloud, including your credentials, the accounts to configure, and the level of access. The questions differ per cloud. For AWS, it asks: How to authenticate to AWS. It uses the credentials you already have, or it signs you in with AWS SSO. Which accounts to configure. Which policy to attach to the OIDC role. Choose AdministratorAccess for Pulumi Deployments, ReadOnlyAccess for Pulumi Insights, or any other policy ARN. Then, it will print out the plan: About to configure OIDC for organization my-org: account 111111111111: create role pulumi-esc-oidc-622e86ea-319ba4c675bb3c00-role attach arn:aws:iam::aws:policy/AdministratorAccess create ESC environment my-org/aws-login/sandbox-account-env Proceed? [yes/no] After you confirm, the command creates the identity provider, the IAM role, and the policy attachment in each account. It then creates one ESC Environment per account, with the aws-login provider already configured. Non-interactive setup You can also run the command without interactive prompts by passing in the necessary flags. Each cloud has its ow

## Neo Security: Securing Infrastructure in the Agentic Era

DevFeed: [Neo Security: Securing Infrastructure in the Agentic Era](<https://devfeed.tech/articles/neo-security-securing-infrastructure-in-the-agentic-era-19024.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/pulumi-neo-security/>)

Author: Joe Duffy

Published: 2026-08-28T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [pulumi-neo](<https://devfeed.tech/topics/pulumi-neo.md>), [Security](<https://devfeed.tech/topics/security.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Static code analysis](<https://devfeed.tech/topics/static-code-analysis.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [ai](<https://devfeed.tech/tags/ai.md>), [aws](<https://devfeed.tech/tags/aws.md>), [azure](<https://devfeed.tech/tags/azure.md>), [cloud-infrastructure](<https://devfeed.tech/tags/cloud-infrastructure.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

Pulumi is opening a research preview of Neo Security, an agent that analyzes cloud infrastructure for exploitable flaws. It builds a threat model, maps attack paths, and produces an actionable security posture report, including for infrastructure provisioned across AWS, Azure, Google Cloud, and Kubernetes.

### Source excerpt

Recently, AI systems have started turning up exploitable flaws in code that survived decades of human review. The frontier labs have released useful tools to help uncover many of these flaws through agent-led static code analysis. This is a huge leap ahead, but cloud infrastructure has many exploitable flaws that code analysis alone cannot find. These flaws are often as severe as the ones in code, or worse, and they await discovery by malicious agents on offense. We realized recently we can uniquely help here. At Pulumi, we have complete visibility into your entire cloud estate: infrastructure resources, their semantics, connections and dependencies between them, runtime logs and information, and more -- and have built an entire context graph out of them that is accessible to agents. Thanks to large language models, the cost of analyzing that full context graph is no longer prohibitive. As a result, today we're opening a research preview of Pulumi Neo Security. Neo Security is an agent that can find exploitable flaws in your cloud infrastructure. It starts with a threat model of your cloud estate, and then works systematically through every potential point of attack. The result is a security posture report that is immediately actionable thanks to Pulumi's infrastructure as code technology. Neo Security works on your existing infrastructure regardless of how it was provisioned, across any of our thousands of cloud providers including AWS, Azure, Google Cloud, and Kubernetes. We're releasing it in research preview to begin, so we can work closely with customers to run and address any findings. If you'd like to give it a try, contact us. How it finds attack paths Neo Security's aim is to provide a high-confidence, actionable security posture report. It gets there in three passes. The first builds a threat model, before it looks for anything. It works out what your crown jewels are, which resources are accessible to outside actors, which accounts hold production data, wh

## Pulumi Context API: query your infrastructure as a graph

DevFeed: [Pulumi Context API: query your infrastructure as a graph](<https://devfeed.tech/articles/pulumi-context-api-query-your-infrastructure-as-a-graph-19022.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/pulumi-context-api/>)

Author: Levi Blackstone

Published: 2026-08-26T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Cloud APIs](<https://devfeed.tech/topics/cloud-apis.md>), [infrastructure as code (IAC)](<https://devfeed.tech/topics/infrastructure-as-code-iac.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [JSON](<https://devfeed.tech/topics/json.md>), [pulumi-neo](<https://devfeed.tech/topics/pulumi-neo.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [api](<https://devfeed.tech/tags/api.md>), [cli](<https://devfeed.tech/tags/cli.md>), [features](<https://devfeed.tech/tags/features.md>), [graph](<https://devfeed.tech/tags/graph.md>), [iac](<https://devfeed.tech/tags/iac.md>), [infrastructure-as-code-iac](<https://devfeed.tech/tags/infrastructure-as-code-iac.md>), [json](<https://devfeed.tech/tags/json.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>)

### AI overview

Pulumi is launching the Context API, a read-only API that connects Pulumi-managed and discovered resources, stacks, and their relationships into a graph. Available in public preview for Enterprise and Business Critical organizations, it supports infrastructure-impact, coverage, and cleanup queries through the Pulumi CLI or REST API. Pulumi Neo uses it out of the box, and other authenticated agents can access its schema and query guidance.

### Source excerpt

Every platform team fields the same questions: What is running? What breaks if we change this? What can we safely delete? The answers exist, but they're scattered across state files, cloud consoles, and the memories of whoever set things up. Today we're launching the Pulumi Context API, a read-only API that connects Pulumi-managed and discovered resources, stacks, and their relationships into a graph. It's designed agent-first: Pulumi Neo, our infrastructure agent, uses it out of the box, and other agents can fetch the current graph vocabulary and query guidance on demand. It's available in public preview for organizations on the Enterprise and Business Critical editions. Answers that follow infrastructure relationships Pulumi already records the resources your programs manage, their dependencies, how stacks consume each other's outputs, and the resources Pulumi Discovery finds outside infrastructure as code (IaC). The Context API connects this data so you can ask questions that depend on the relationships: Impact: Which stacks are affected if we upgrade this provider? If this stack changes, what consumes its outputs? Coverage: How much of our infrastructure lives outside IaC, and in which accounts? Cleanup: Which stacks have no dependents and are candidates for retirement? A query is a JSON document with a handful of clauses. anchor names the starting nodes, traverse follows relationships from there, and return chooses what comes back. You can run a query through the Pulumi CLI or REST API. Here's a selector that starts from AWS provider instances older than version 7.0.0 and follows incoming provided_by relationships back to the visible resources they manage: { "anchor": { "nodeType": "resource", "match": { "type": "pulumi:providers:aws", "fields": { "provider_version": { "op": "lt", "value": "7.0.0" } } } }, "traverse": [ { "edgeTypes": ["provided_by"], "direction": "in", "alias": "managed" } ], "return": { "select": ["anchor", "managed"] } } A response for one m

## Pulumi Introduces Notification Center for Pulumi Cloud

DevFeed: [Pulumi Introduces Notification Center for Pulumi Cloud](<https://devfeed.tech/articles/never-miss-what-your-infrastructure-is-telling-you-19017.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/notification-center/>)

Author: Tom King

Published: 2026-08-11T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [console](<https://devfeed.tech/tags/console.md>), [email](<https://devfeed.tech/tags/email.md>), [esc](<https://devfeed.tech/tags/esc.md>), [features](<https://devfeed.tech/tags/features.md>), [github](<https://devfeed.tech/tags/github.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [organization](<https://devfeed.tech/tags/organization.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [review](<https://devfeed.tech/tags/review.md>), [slack](<https://devfeed.tech/tags/slack.md>)

### AI overview

Pulumi introduces Notification Center, an inbox in the Pulumi Cloud console for task completions, approval requests, and billing alerts. Notifications appear in real time, link directly to the required action, and can be delivered in the console or by email with per-type preferences.

### Source excerpt

Plenty happens in a Pulumi organization while you're looking somewhere else. Neo finishes a task you kicked off just before taking lunch. A teammate submits an ESC change request that needs your approval before it can land. Until now, catching any of that meant either keeping the right tab open or hoping the right email reached you. Today we're introducing the Notification Center: a single inbox in the Pulumi Cloud console for the things that actually need you. It lives behind the bell in the sidebar, with a dot when something's waiting. Notifications arrive in real time -- no refresh -- and each one carries exactly one action: Review request, View task, Update billing. Click it and you land on the page where you can do the thing, not on a dashboard where you have to go find it. What you'll hear about We've started with the moments where being a few minutes late actually costs you something: a Neo task that's paused waiting on your approval, a Neo task that's finished, an ESC change request waiting on your sign-off, and billing conditions like a locked organization or a trial that's about to end. Relevant people in your organization will be notified when there's a pending approval, or billing alert. Nobody gets paged for someone else's work. Where you'll hear about it Every notification type can be delivered two ways -- in the console and over email -- and you choose per type, per channel. Organization admins set a sensible baseline for everyone; each person can override it for themselves on their account settings page. What's next The Notification Center is available today. We're starting with this set of notifications and expanding from there. If there's an event you'd rather hear about from the bell than from a colleague on Slack, we'd like to know which one. Join our Community Slack to connect with the Pulumi team and other users, or open an issue on our GitHub repository.

## Emulating Terraform on Pulumi's Engine

DevFeed: [Emulating Terraform on Pulumi's Engine](<https://devfeed.tech/articles/emulating-terraform-on-pulumi-s-engine-19032.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/terraforms-data-model-on-pulumis-engine/>)

Author: Ian Wahbe

Published: 2026-08-04T00:00:00Z

Content type: article

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Terraform](<https://devfeed.tech/topics/terraform.md>), [opentofu](<https://devfeed.tech/topics/opentofu.md>), [terraform provider](<https://devfeed.tech/topics/terraform-provider.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [hcl](<https://devfeed.tech/tags/hcl.md>), [modules](<https://devfeed.tech/tags/modules.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [providers](<https://devfeed.tech/tags/providers.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [terraform-provider](<https://devfeed.tech/tags/terraform-provider.md>), [translation](<https://devfeed.tech/tags/translation.md>)

### AI overview

This article explains how Pulumi's HCL interpreter maps Terraform configuration, resources, providers, and modules onto the Pulumi engine. It reports that the implementation works with 96% of Pulumi's top Terraform modules and describes how Pulumi's terraform-provider relays between Pulumi and Terraform provider protocols.

### Source excerpt

The core promise of Pulumi's HCL support is that you can bring your existing Terraform configuration and modules, and pulumi will run them. If it works in OpenTofu and doesn't work in Pulumi, we would like to fix that. Given that goal, our HCL interpreter needs to take HCL as input and emit instructions to the Pulumi engine that semantically match how tofu would interpret the same input. This is made harder by the fact that Pulumi and OpenTofu have fundamentally different engine semantics and provider ecosystems. This blog post will explore how we have implemented that mapping well enough to get 96%1 of our top Terraform modules working on Pulumi. We'll briefly walk through how Pulumi's HCL interpreter handles Terraform's resource semantics, providers, and modules. It will also call out where Pulumi's HCL support lets you do things that Terraform and OpenTofu will not allow. Providers Both Pulumi and Terraform have providers, but they don't have the same providers. While there are providers that Terraform does not have, Pulumi can always resolve a Terraform provider using Pulumi's confusingly named terraform-provider provider.2 This is the same provider that lets you consume Any Terraform Provider in another Pulumi program with pulumi package add terraform-provider .... The terraform-provider provider acts as a relay: it speaks Pulumi's protocol to the Pulumi engine, and speaks Terraform's provider protocol to the Terraform provider it stands up. Because Pulumi HCL needs to work with all Pulumi providers and because terraform-provider lets Pulumi HCL speak to Terraform providers via the Pulumi protocol, Pulumi HCL actually only speaks Pulumi protocols directly: flowchart LR subgraph n2Entry[" "] n2["terraform-provider"] end subgraph providerBox["Pulumi Provider"] direction TD n2Entry n3["Terraform Provider"] end n0["Pulumi HCL"] <--> n1["Pulumi Engine"] n1 <--> n2Entry n2 <--> n3 n2@{ shape: rect} n3@{ shape: rect} n0@{ shape: rect} n1@{ shape: rect} style n2Entry f

## Migrate CloudFormation to Pulumi with Discovered Stacks

DevFeed: [Migrate CloudFormation to Pulumi with Discovered Stacks](<https://devfeed.tech/articles/migrate-cloudformation-to-pulumi-with-discovered-stacks-18996.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/discovered-stacks-migrate-cloudformation-to-pulumi/>)

Author: Alejandro Cotroneo

Published: 2026-07-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [AWS CloudFormation](<https://devfeed.tech/topics/aws-cloudformation.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [VPC](<https://devfeed.tech/topics/vpc.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [DynamoDB](<https://devfeed.tech/topics/dynamodb.md>), [AWS IAM](<https://devfeed.tech/topics/aws-iam.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [cloudformation](<https://devfeed.tech/tags/cloudformation.md>), [dynamodb](<https://devfeed.tech/tags/dynamodb.md>), [git](<https://devfeed.tech/tags/git.md>), [iac](<https://devfeed.tech/tags/iac.md>), [iam](<https://devfeed.tech/tags/iam.md>), [import](<https://devfeed.tech/tags/import.md>), [insights](<https://devfeed.tech/tags/insights.md>), [kms](<https://devfeed.tech/tags/kms.md>), [migration](<https://devfeed.tech/tags/migration.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>), [s3](<https://devfeed.tech/tags/s3.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [vpc](<https://devfeed.tech/tags/vpc.md>)

### AI overview

A tutorial shows how to migrate a 61-resource AWS CloudFormation stack to Pulumi using Discovered Stacks in Pulumi Cloud. It explains how to find the stack, review migration status, start the migration, resolve unmatched resources, and verify the result with a zero-diff pulumi preview.

### Source excerpt

With Discovered Stacks, Pulumi Cloud does the bookkeeping for a CloudFormation migration: every resource in the stack gets an explicit migration status, and the migration is done when the code provably matches the cloud. In this tutorial, we take one real CloudFormation stack from discovered to migrated and managed by Pulumi IaC, end to end. What we're migrating Our example is payments-api, a CloudFormation stack with 61 resources: a VPC, an Aurora ledger database behind an RDS Proxy, an assets S3 bucket, a DynamoDB ledger table, a Kinesis payment-events pipeline, and the IAM roles, KMS keys, and secrets that wire them together. The plan has five steps: Find the stack in Pulumi Cloud. Review the migration breakdown at a glance. Start the migration. Resolve the stragglers, so every resource is accounted for. Confirm the quality gate: a zero-diff pulumi preview. We'll use Pulumi Neo to do the heavy lifting, but nothing here depends on it. The same flow works with your own coding agent or entirely by hand, because migration status is derived from actual stack state -- however the work gets done, the console shows the same progress. Step 1: Find your stack in Pulumi Cloud Discovered Stacks builds on Discovery, so the only prerequisite is a scanned cloud account -- the AWS account holding your CloudFormation stacks. Once a scan has run, open the Stacks page and turn on Show Discovered Stacks. Your CloudFormation stacks appear alongside your Pulumi stacks. The project name comes from the CloudFormation stack (payments-api), and the stack name encodes the account and region it came from, so the same template deployed to two regions shows up as two distinct discovered stacks. Step 2: Plan the migration at a glance Open the discovered stack's Migration tab. It lays out all 61 resources of payments-api by status, so you can visualize the migration before touching anything: 54 Ready: mapped to a Pulumi type and confirmed to exist -- importable right now. 2 Not found: mapped, but

## How to Run AI Agents on Kubernetes with Pulumi

DevFeed: [How to Run AI Agents on Kubernetes with Pulumi](<https://devfeed.tech/articles/how-to-run-ai-agents-on-kubernetes-with-pulumi-18986.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/ai-agents-on-kubernetes/>)

Author: Joe Duffy

Published: 2026-07-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Python](<https://devfeed.tech/topics/python.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [general](<https://devfeed.tech/tags/general.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [inference](<https://devfeed.tech/tags/inference.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [platform-engineering](<https://devfeed.tech/tags/platform-engineering.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>), [python](<https://devfeed.tech/tags/python.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This tutorial examines how Kubernetes infrastructure must be designed differently for AI agents, focusing on GPU scheduling, long-lived state, secrets, external tool access, and governance. It covers the agentic-Kubernetes ecosystem and provisioning with Pulumi using TypeScript and Python, including the role of Pulumi Neo.

### Source excerpt

Kubernetes has become the default place teams run agentic AI workloads: CNCF's 2026 annual survey found that 66% of organizations hosting generative AI models use Kubernetes to manage some or all of their inference workloads.1 An entire ecosystem has grown up around that fact -- agent runtimes, model servers, GPU schedulers -- and most of it assumes the infrastructure underneath is already handled. It usually isn't. An AI agent is not a stateless web service, and provisioning for one takes more than copying a Deployment YAML and swapping the image. I spend a lot of my time these days thinking about what changes when the thing consuming your infrastructure isn't a person or a fixed pipeline, but an agent making its own calls about what to do next -- and Kubernetes is where I keep seeing that question show up first, because it's already where most teams run everything else. This post is about that gap: what changes about Kubernetes infrastructure when the workload is an agent, what the current agentic-Kubernetes ecosystem actually looks like, and how to provision and govern that infrastructure with Pulumi using TypeScript and Python -- plus where Pulumi Neo fits once the infrastructure itself has to answer to an agent. If you haven't read our take on the broader shift toward agentic infrastructure, What Is Agentic Infrastructure? is a good companion piece; this post stays specific to the Kubernetes layer. What makes agentic AI workloads different from ordinary Kubernetes workloads? An agent's resource and governance profile looks nothing like a typical web service, largely because it schedules accelerators, holds state across long sessions, and reaches out to systems a normal Deployment never touches. Dimension Typical web service Agent workload Compute CPU, predictable Often GPU/accelerator, bursty Session shape Short-lived, stateless requests Long-lived sessions, conversational state Egress Internal services, one database Model provider APIs, arbitrary tools, other agen

## ITIL vs SRE: why the big clouds went their own way

DevFeed: [ITIL vs SRE: why the big clouds went their own way](<https://devfeed.tech/articles/itil-vs-sre-why-the-big-clouds-went-their-own-way-34015.md>)

Original publisher: [Read original article](<https://sridharrajarao.com/blog/itil-vs-sre/>)

Author: Sridhar Rajarao

Published: 2026-07-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Sridhar Rajarao](<https://devfeed.tech/sources/sridhar-rajarao.md>)

Topics: [SRE](<https://devfeed.tech/topics/sre.md>), [site-reliability-engineering](<https://devfeed.tech/topics/site-reliability-engineering.md>), [Development](<https://devfeed.tech/topics/development.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [pulumi](<https://devfeed.tech/topics/pulumi.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [incident](<https://devfeed.tech/topics/incident.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [aws](<https://devfeed.tech/tags/aws.md>), [azure](<https://devfeed.tech/tags/azure.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [gcp](<https://devfeed.tech/tags/gcp.md>), [human-review](<https://devfeed.tech/tags/human-review.md>), [hyperscaler](<https://devfeed.tech/tags/hyperscaler.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-management](<https://devfeed.tech/tags/incident-management.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [itil](<https://devfeed.tech/tags/itil.md>), [on-call](<https://devfeed.tech/tags/on-call.md>), [postmortems](<https://devfeed.tech/tags/postmortems.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [release](<https://devfeed.tech/tags/release.md>), [reliability](<https://devfeed.tech/tags/reliability.md>), [service-catalog](<https://devfeed.tech/tags/service-catalog.md>), [sre](<https://devfeed.tech/tags/sre.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

### AI overview

This opinion article compares ITIL practices with SRE operations at hyperscaler scale. It argues that human change boards, single production instances, developer-to-operations handoffs, documentation-first configuration management, and weekly release windows do not fit environments serving millions of external customers. It describes automated approvals, gradual deployments, service-team ownership, infrastructure as code, continuous release, error budgets, SLOs, and blameless postmortems as alternatives.

### Source excerpt

The big clouds don't run ITIL. Five assumptions ITIL makes that break at hyperscaler scale, and what AWS, Azure, GCP, and OCI use instead.

## Kubernetes Agent Sandbox: What It Is and How to Deploy It with Pulumi

DevFeed: [Kubernetes Agent Sandbox: What It Is and How to Deploy It with Pulumi](<https://devfeed.tech/articles/kubernetes-agent-sandbox-what-it-is-and-how-to-deploy-it-with-pulumi-19011.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/kubernetes-agent-sandbox/>)

Author: Adam Gordon Bell

Published: 2026-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [gcp](<https://devfeed.tech/tags/gcp.md>), [gke](<https://devfeed.tech/tags/gke.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [security](<https://devfeed.tech/tags/security.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

This tutorial explains Kubernetes Agent Sandbox, a Kubernetes resource for running coding agents in disposable, kernel-isolated environments using gVisor or Kata Containers. It describes common deployment patterns and shows how to deploy the sandbox on GKE with Pulumi.

### Source excerpt

When you use a coding agent, it can seem like there's a trade-off between autonomy and permissions. If you approve every command, it's safe but slow. Let it do whatever it likes and it works more autonomously, but as the nx supply-chain attack showed, that can go badly. The fix is to give the agent a sandbox: a box it's allowed to wreck, with limited permissions and scoped network access. The only files are the checkout you handed it, the only credentials are the task's own, and trashing the machine just means a disposable pod gets garbage-collected early. Pulumi Neo works this way, and if you want to scale that pattern up inside your own organization, the Kubernetes project Agent Sandbox is a great path to building your own. This post is what it is and how to deploy it on GKE with Pulumi. What is Agent Sandbox? Agent Sandbox is a Kubernetes SIGs project that gives AI agents isolated, disposable environments as Kubernetes resources: a Sandbox custom resource, backed by gVisor or Kata Containers for kernel-level isolation. You could build Agent Sandbox yourself. You'd need gVisor support, a userspace kernel that sits between the agent's code and your host. With that in place, you could approximate a sandbox for every agent by stringing together a StatefulSet of size one, a headless Service, and a PersistentVolumeClaim, plus some lifecycle machinery to keep warm pools of nodes around. Agent Sandbox wraps all of that up as a CRD, so you can run a Kubernetes cluster where each sandbox is a disposable, kernel-isolated environment a coding agent runs in. apiVersion: agents.x-k8s.io/v1beta1 kind: Sandbox metadata: name: demo-sandbox spec: podTemplate: spec: runtimeClassName: gvisor containers: - name: agent image: ubuntu:24.04 # swap in your coding-agent image command: ["sleep", "infinity"] The Sandbox CRD, the whole idea in one manifest. There are two common patterns for using it. In the first, every coding agent session in the organization maps to its own pod with a pers

## Incident Response as Code: Managing PagerDuty with Pulumi

DevFeed: [Incident Response as Code: Managing PagerDuty with Pulumi](<https://devfeed.tech/articles/incident-response-as-code-managing-pagerduty-with-pulumi-19006.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/incident-response-as-code-pagerduty-pulumi/>)

Author: Engin Diri

Published: 2026-07-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [pulumi](<https://devfeed.tech/topics/pulumi.md>), [Incident response](<https://devfeed.tech/topics/incident-response.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Amazon Simple Queue Service (SQS)](<https://devfeed.tech/topics/amazon-simple-queue-service-sqs.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [devops](<https://devfeed.tech/tags/devops.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [pagerduty](<https://devfeed.tech/tags/pagerduty.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [sqs](<https://devfeed.tech/tags/sqs.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

A tutorial for managing PagerDuty incident-response resources and AWS alarm wiring together in a Pulumi program. The demo uses TypeScript to define an on-call team, escalation policy, PagerDuty service, SQS dead-letter queue, CloudWatch alarm, and SNS forwarding.

### Source excerpt

You usually find out in the postmortem: the alarm fired, but it paged a schedule nobody was on anymore. Or the service had been running in production for three months before anyone created the matching PagerDuty service, so the first person to notice the outage was a customer. The infrastructure was code, reviewed and versioned. The incident response setup was forty clicks in a web UI, done once, by someone who has since changed teams. PagerDuty's own engineering team has been making the case for managing PagerDuty as code for years, and the OneUptime folks recently published a hands-on guide to the PagerDuty Terraform provider that walks the whole resource catalog. I liked both posts, and you probably know where this is going: I want the same thing in TypeScript, with the on-call setup and the infrastructure it protects living in the same Pulumi program. Teams, schedules, escalation policies, services, and the CloudWatch alarm that pages you: one pulumi up. What you are building The demo models a small platform team that owns a checkout service on AWS. On the PagerDuty side: a team with three members, a weekly on-call rotation, an escalation policy with two levels, and a service with a CloudWatch integration. On the AWS side: a dead-letter queue, an alarm that fires when a message lands in it, and an SNS topic that forwards the alarm to PagerDuty. The interesting part is where the two meet: the integration key PagerDuty mints flows straight into the SNS subscription without ever touching a clipboard. flowchart LR DLQ["SQS dead-letter queue"] --> Alarm["CloudWatch alarm"] Alarm --> SNS["SNS topic"] SNS -->|"HTTPS subscription
with integration key"| Int["CloudWatch integration"] Int --> Svc["PagerDuty service
Checkout API"] Svc --> EP["Escalation policy"] EP -->|"level 1"| Sched["Weekly rotation
Lena, Jonas, Mia"] EP -->|"level 2, after 15 min"| Lead["Team lead"] Everything on both sides of that diagram is one TypeScript program. If you would rather write

## Introducing Usage Limits for Pulumi Neo

DevFeed: [Introducing Usage Limits for Pulumi Neo](<https://devfeed.tech/articles/introducing-usage-limits-for-pulumi-neo-19016.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/neo-usage-limits/>)

Author: John Keiser

Published: 2026-07-14T15:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [pulumi-neo](<https://devfeed.tech/topics/pulumi-neo.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [billing](<https://devfeed.tech/tags/billing.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [features](<https://devfeed.tech/tags/features.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [organization](<https://devfeed.tech/tags/organization.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>), [token](<https://devfeed.tech/tags/token.md>)

### AI overview

Pulumi introduces usage limits for Pulumi Neo, allowing paid-plan organizations to set monthly organization and per-member dollar limits. Neo pauses when a limit is reached, resumes in the next billing period, and supports email alerts at specified thresholds.

### Source excerpt

Pulumi Neo is an AI agent that takes on real infrastructure work, and it's natural to want to hand it more and more. Usage limits give you control so you can do exactly that: set a monthly dollar limit, and Neo pauses when your organization reaches it. How usage limits work Your organization limit is a single monthly dollar amount covering all Neo usage across the org. To set one: In the Pulumi Cloud console, navigate to Settings -> Billing & usage -> Neo token usage. In the Manage token usage panel, enter an organization limit. Save your changes. When usage reaches the limit, Neo pauses for the rest of the billing period and resumes automatically at the start of the next one. An Admin or Billing Manager can raise the limit to resume before then. Enforcement happens at a natural boundary in Neo's work, so a task already in progress finishes its current step before pausing. As a result, usage can go a few dollars over the set limit. Per-member limits and alerts You can also set a separate limit for each member. A member is paused at whichever limit is smaller: their own or the organization's. For example, a member with a $200 limit under a $150 organization limit pauses at $150, because the organization limit is smaller. Turn on Enable email notifications to get a heads-up before you reach the limit. Billing admins are alerted at 50%, 80%, and 95% of the organization limit, with a final notice at 100% when Neo pauses. Get started Set your usage limits and stay in control as your organization hands Neo more and more work. Usage limits are available today for organizations on a paid plan, and an Admin or Billing Manager can set them. Sign in to Pulumi Cloud and set your first organization limit Read the Neo usage limits documentation for per-member limits, alerts, and enforcement details Join the Community Slack to share your feedback

## New: Versioned CLI and SDK Docs

DevFeed: [New: Versioned CLI and SDK Docs](<https://devfeed.tech/articles/new-versioned-cli-and-sdk-docs-19021.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/previous-cli-and-sdk-version-docs/>)

Author: Cam Soper

Published: 2026-07-07T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Documentation](<https://devfeed.tech/topics/documentation.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [announcements](<https://devfeed.tech/tags/announcements.md>), [api](<https://devfeed.tech/tags/api.md>), [cli](<https://devfeed.tech/tags/cli.md>), [community](<https://devfeed.tech/tags/community.md>), [docs](<https://devfeed.tech/tags/docs.md>), [features](<https://devfeed.tech/tags/features.md>), [github](<https://devfeed.tech/tags/github.md>), [issue](<https://devfeed.tech/tags/issue.md>), [java](<https://devfeed.tech/tags/java.md>), [net](<https://devfeed.tech/tags/net.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cli](<https://devfeed.tech/tags/pulumi-cli.md>), [python](<https://devfeed.tech/tags/python.md>), [release](<https://devfeed.tech/tags/release.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [snapshots](<https://devfeed.tech/tags/snapshots.md>)

### AI overview

Pulumi has added version selectors to its CLI command reference and SDK API documentation. Users can choose documentation matching the Pulumi release they are running, with immutable snapshots available from v3.150.0 onward for the CLI and Node.js, Python, .NET, and Java SDKs.

### Source excerpt

Pinned to an older Pulumi CLI or SDK version and finding that the docs describe a newer release? The Pulumi CLI command reference and the SDK API docs now include a version selector, so the documentation you're reading matches the version you're actually running. How it works When you open the CLI command reference, you'll see a version dropdown near the top of the page, below the title. The SDK API docs carry the same dropdown in the upper-right corner. Choose a release, and the page loads the documentation generated for that exact version. What's available Alongside the latest release, we keep immutable snapshots of previous versions going back to v3.150.0 (early 2025). The CLI command reference and the Node.js, Python, .NET, and Java SDK API docs are all covered, so the docs you need are only a dropdown away. (The Go SDK is versioned on pkg.go.dev, so its documentation lives there rather than in the Pulumi docs.) Get started Head to the CLI command reference or the SDK API docs and try the version dropdown. Selections are sticky, so when you navigate into a version, you'll be able to click around within that same version without having to choose it again. Have feedback? Let us know in the Pulumi Community Slack or by opening an issue on GitHub. Browse the CLI command reference

## Best Infrastructure as Code (IaC) Tools for 2026

DevFeed: [Best Infrastructure as Code (IaC) Tools for 2026](<https://devfeed.tech/articles/best-infrastructure-as-code-iac-tools-for-2026-19007.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/infrastructure-as-code-tools/>)

Author: Isaac Harris

Published: 2026-07-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [opentofu](<https://devfeed.tech/topics/opentofu.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [AWS CloudFormation](<https://devfeed.tech/topics/aws-cloudformation.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [aws](<https://devfeed.tech/tags/aws.md>), [aws-cloudformation](<https://devfeed.tech/tags/aws-cloudformation.md>), [azure](<https://devfeed.tech/tags/azure.md>), [devops](<https://devfeed.tech/tags/devops.md>), [general](<https://devfeed.tech/tags/general.md>), [google-cloud](<https://devfeed.tech/tags/google-cloud.md>), [iac](<https://devfeed.tech/tags/iac.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>), [programming](<https://devfeed.tech/tags/programming.md>), [provisioning](<https://devfeed.tech/tags/provisioning.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

### AI overview

A 2026 guide compares infrastructure as code tools including Pulumi, Terraform, OpenTofu, AWS CDK, AWS CloudFormation, Azure tools, Google Cloud Infrastructure Manager, Kubernetes YAML, and Crossplane. It discusses their approaches, licensing, pricing, AI-agent readiness, and tradeoffs, while explaining how IaC applies software engineering practices such as version control, testing, code review, and CI/CD to infrastructure management.

### Source excerpt

The best infrastructure as code (IaC) tools in 2026 are Pulumi, Terraform, OpenTofu, AWS CDK, AWS CloudFormation, Azure ARM, Azure Bicep, Google Cloud Infrastructure Manager, Kubernetes YAML, and Crossplane. Each takes a different approach to defining and provisioning infrastructure, from general-purpose programming languages to declarative templates, and each carries distinct licensing, pricing, and AI-agent readiness tradeoffs worth weighing before you commit. Pulumi's own package registry lists hundreds of packages -- first-party providers, bridged Terraform providers, and community components -- illustrating how far multi-cloud coverage has expanded across the ecosystem. Since this post was published, Pulumi has added first-class support for HashiCorp Configuration Language (HCL). You can now write Pulumi programs in HCL directly, alongside general-purpose languages like TypeScript, Python, Go, and C#. To see how it works, see Pulumi HCL. As infrastructure complexity grows, teams increasingly seek approaches that provide the same developer productivity tools they use for application development. While template-based and domain-specific language approaches serve many use cases effectively, teams with complex requirements or programming backgrounds often find that general-purpose programming languages offer advantages in testing, abstraction, and collaboration. This comprehensive guide examines the most effective infrastructure as code tools available today, providing detailed analysis of core IaC platforms, complementary tools, and related technologies through the lens of software engineering best practices. Whether you're starting fresh with IaC or evaluating alternatives to overcome limitations in your current toolchain, we'll help you navigate this complex landscape and choose solutions that truly bring software engineering to infrastructure. Ready to try one of these approaches yourself? Get started with Pulumi for free and provision your first resource in minu

## Pulumi ships a 238-policy ISO/IEC 27001:2022 pack for AWS

DevFeed: [Pulumi ships a 238-policy ISO/IEC 27001:2022 pack for AWS](<https://devfeed.tech/articles/enforce-iso-27001-across-your-aws-infrastructure-19009.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/iso-27001-policy-pack-for-aws/>)

Author: Dan Biwer

Published: 2026-06-30T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Security](<https://devfeed.tech/topics/security.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [audit](<https://devfeed.tech/tags/audit.md>), [aws](<https://devfeed.tech/tags/aws.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [crossguard](<https://devfeed.tech/tags/crossguard.md>), [features](<https://devfeed.tech/tags/features.md>), [governance](<https://devfeed.tech/tags/governance.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [iso](<https://devfeed.tech/tags/iso.md>), [iso-27001](<https://devfeed.tech/tags/iso-27001.md>), [policy](<https://devfeed.tech/tags/policy.md>), [policy-as-code](<https://devfeed.tech/tags/policy-as-code.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [security](<https://devfeed.tech/tags/security.md>), [standard](<https://devfeed.tech/tags/standard.md>)

### AI overview

Pulumi announces a pre-built ISO/IEC 27001:2022 policy pack for AWS, available in Pulumi Cloud as iso-27001-aws. The pack contains 238 policies mapped to relevant ISO 27001 controls and supports auditing existing AWS resources and preventing non-compliant resources during pulumi up.

### Source excerpt

ISO/IEC 27001 is the international standard for information security management. Proving you meet it usually means months of mapping abstract security controls to concrete cloud configuration, then authoring custom checks one resource at a time. We're changing that. Today we're shipping a pre-built ISO/IEC 27001:2022 policy pack for AWS, live now in Pulumi Cloud as iso-27001-aws. It encodes the standard's security expectations as 238 ready-to-run policies, so you can align your AWS estate to ISO 27001 in minutes, not months. Why ISO 27001 matters For many companies, ISO 27001 is what stands between them and a customer or a market. The sooner you can reach a certifiable state and prove you stay there, the less compliance slows the business down. The pack collapses months of policy work into something you run continuously, so security keeps pace with growth instead of blocking it. How the pack maps to ISO 27001 The hard part of ISO 27001 has always been translation: its controls are written in the language of governance and risk management, not in the language of AWS resources. Every team has had to interpret each control and decide what it means for an S3 bucket or an RDS instance. The pack does that interpretation for you. Its 238 policies are aligned to the relevant ISO 27001 controls, so each result connects back to the standard instead of leaving you to map it yourself. You can browse the full pack in the pack reference. Audit and prevent The same pack works two ways, so you can both reach compliance and stay there: Audit. Scan your existing AWS estate against the pack, including resources that Pulumi doesn't manage. You get an honest baseline of where you stand against ISO 27001 today, with every finding tied back to the control it affects. Prevent. Run the same pack as a preventative policy during pulumi up to block non-compliant resources before they're ever created. New infrastructure is born aligned to the standard. Audit gets you clean. Preventative policie

## Introducing ESC Secret Rotation Webhooks

DevFeed: [Introducing ESC Secret Rotation Webhooks](<https://devfeed.tech/articles/introducing-esc-secret-rotation-webhooks-19008.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/introducing-esc-secret-rotation-webhooks/>)

Author: Sean Yeh

Published: 2026-06-26T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [pulumi-esc](<https://devfeed.tech/topics/pulumi-esc.md>), [secret rotation](<https://devfeed.tech/topics/secret-rotation.md>), [notifications](<https://devfeed.tech/topics/notifications.md>), [pulumi-cloud](<https://devfeed.tech/topics/pulumi-cloud.md>), [pulumi-cli](<https://devfeed.tech/topics/pulumi-cli.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [esc](<https://devfeed.tech/tags/esc.md>), [github](<https://devfeed.tech/tags/github.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cli](<https://devfeed.tech/tags/pulumi-cli.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [rotation](<https://devfeed.tech/tags/rotation.md>), [secret-rotation](<https://devfeed.tech/tags/secret-rotation.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [slack](<https://devfeed.tech/tags/slack.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [webhooks](<https://devfeed.tech/tags/webhooks.md>)

### AI overview

Pulumi introduces ESC secret rotation webhooks, which trigger on successful or failed environment secret rotations. They can notify teams in Slack, refresh services using old credentials, and help detect failed rotations before outages.

### Source excerpt

Pulumi ESC centralizes your secrets and configuration, and it can automatically rotate secrets on a schedule so credentials never go stale. But a rotation is only useful if the systems that depend on it know it happened. ESC secret rotation webhooks close that gap by notifying you the moment a secret rotates. Introducing secret rotation webhooks With ESC webhooks, you can react to rotations automatically. When ESC rotates an environment's secrets, a webhook can be configured to trigger on either success or failure. Use it to notify your team in Slack, refresh services that hold the old credential, or catch a failed rotation before it causes an outage. How to configure Pulumi Cloud Console Using the Pulumi Cloud Console, you can now configure webhooks for "Environment rotation succeeded" and "Environment rotation failed" in your ESC Environment's Settings page (under Settings -> Notifications). Pulumi Service Provider You can use the Pulumi Service Provider in your Pulumi program to configure webhooks. Here is an example in TypeScript: const environmentWebhook = new service.Webhook("env-webhook", { active: true, displayName: "env-webhook", organizationName: "my-org", projectName: environment.project, environmentName: environment.name, payloadUrl: "https://example.com", filters: [WebhookFilters.EnvironmentRotationSucceeded, WebhookFilters.EnvironmentRotationFailed], }) Pulumi CLI You can also use the Pulumi CLI to configure the webhook: pulumi env webhook new my-org/project/env env-webhook \ --url https://example.com \ --event environment_rotation_succeeded \ --event environment_rotation_failed Get started Secret rotation webhooks are available now for all Pulumi ESC environments. See the webhooks documentation to get started, and share your feedback on our GitHub repository.

## Build a Governed Databricks Workspace with Pulumi

DevFeed: [Build a Governed Databricks Workspace with Pulumi](<https://devfeed.tech/articles/build-a-governed-databricks-workspace-with-pulumi-18999.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/end-to-end-databricks-with-pulumi/>)

Author: Pablo Seibelt

Published: 2026-06-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [databricks](<https://devfeed.tech/topics/databricks.md>), [data-platforms](<https://devfeed.tech/topics/data-platforms.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Security](<https://devfeed.tech/topics/security.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [databricks](<https://devfeed.tech/tags/databricks.md>), [governance](<https://devfeed.tech/tags/governance.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [security](<https://devfeed.tech/tags/security.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

A tutorial on using Pulumi to establish a governed Databricks workspace baseline. It covers cluster policies, notebooks, secret scopes, permissions, and automated jobs, while distinguishing account-level from workspace-level resources and showing credential management with Pulumi ESC.

### Source excerpt

Platform teams responsible for Databricks often find themselves manually configuring clusters and notebooks for every new data science team. This manual overhead leads to inconsistent cluster policies, runaway costs from oversized instances, and security gaps in workspace operations. Without a standardized way to provision workspace-local resources, data platforms become a fragmented collection of bespoke environments that are impossible to govern at scale. As Databricks usage grows across the enterprise, the lack of a governed workspace baseline becomes a major operational risk. Inconsistent policies lead to unpredictable billing and audit failures. Standardizing your Databricks environment with Pulumi ensures that every workspace starts with the correct cost controls, cluster policies, notebooks, and automated jobs, allowing your data teams to move faster without compromising governance. What you'll build In this post, you will learn how to provision a governed Databricks workspace baseline using Pulumi. You will build: Cluster policies to enforce instance types and cost controls. Workspace notebooks to standardize workload locations. Secret scopes and permissions to make access reviewable. Automated jobs that run on policy-constrained compute. By the end, you will have a reproducible workspace configuration that you can deploy to any new Databricks environment. The Databricks management boundary When managing Databricks with Pulumi, understand the boundary between account-level and workspace-level resources. Account-level: Creating cloud prerequisites such as VPCs, subnets, IAM roles, and Azure resource groups uses the cloud provider for your target platform. On AWS and GCP, Databricks workspace creation and account-level identity use the Databricks provider's account APIs, such as databricks.MwsWorkspaces; on Azure, the workspace itself is commonly managed with azure-native. Workspace-level: Managing clusters, jobs, notebooks, permissions, and secret scopes with

## Deploy a Private Hermes Agent on Render Securely with Pulumi, Modal, and Tailscale

DevFeed: [Deploy a Private Hermes Agent on Render Securely with Pulumi, Modal, and Tailscale](<https://devfeed.tech/articles/deploy-a-private-hermes-agent-on-render-securely-with-pulumi-modal-and-tailscale-18995.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/deploy-a-hermes-agent-with-pulumi/>)

Author: Engin Diri

Published: 2026-06-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Code](<https://devfeed.tech/topics/code.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [modal](<https://devfeed.tech/tags/modal.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-esc](<https://devfeed.tech/tags/pulumi-esc.md>), [python](<https://devfeed.tech/tags/python.md>), [render](<https://devfeed.tech/tags/render.md>), [security](<https://devfeed.tech/tags/security.md>), [self-hosting](<https://devfeed.tech/tags/self-hosting.md>), [server](<https://devfeed.tech/tags/server.md>), [services](<https://devfeed.tech/tags/services.md>), [tailscale](<https://devfeed.tech/tags/tailscale.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial for deploying a private Hermes AI agent with Pulumi across Render, Modal, and Tailscale. Render hosts private services, Tailscale provides tailnet access, and Modal runs agent-generated code in temporary sandboxes.

### Source excerpt

Personal AI agents had their breakout this year. OpenClaw crossed 100,000 GitHub stars within months of launching, and self-hosting your own assistant went from a hobbyist trick to something a lot of developers actually do. I wrote up how to deploy that lobster to AWS or Hetzner back when it was everywhere. The one people are switching to now is Hermes, the open-source runtime from Nous Research, and it caught on just as quickly. The reason shows up in every "I ditched OpenClaw for Hermes" thread: it actually learns, building up memory and writing its own skills as it goes instead of running off a static, human-written list. Here is the part the launch videos skip. Hermes writes and runs its own code, with no human approving the commands. A model that can write code will eventually write a bad one, and the only thing between that command and your credentials is the sandbox it runs in. That is the box you do not want on the public internet. Researchers found 175,000 exposed Ollama servers sitting open in early 2026, and attackers hijack the ones they find for compute. The fix is not a better lock on the front door. It is to have no front door at all. So this post deploys a private Hermes agent as one Pulumi program across Render, Modal, and Tailscale. The agent and its chat UI run as Render private services with no public URL, Tailscale puts the UI on your tailnet, and Modal runs the agent's code in throwaway sandboxes. One pulumi up to stand it up, one pulumi destroy to tear it down, around $50 a month. No Makefile, no CLI escape hatches, and an honest look at the few places "nothing on the public internet" still leaks. What is Hermes? Hermes is the open-source, MIT-licensed agent runtime from Nous Research. It runs continuously on a server rather than living in a browser tab, and you talk to it through a chat UI or a messaging platform like Telegram, Discord, Slack, or Signal. A few things make it more than a chatbot: It is model-agnostic. You point it at any provi

## Cloudflare-First Networking as Code with Pulumi

DevFeed: [Cloudflare-First Networking as Code with Pulumi](<https://devfeed.tech/articles/cloudflare-first-networking-as-code-with-pulumi-18992.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/cloudflare-first-networking-with-pulumi/>)

Author: Pablo Seibelt

Published: 2026-06-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Security](<https://devfeed.tech/topics/security.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [Cloudflare Access](<https://devfeed.tech/topics/cloudflare-access.md>)

Tags: [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [cloudflare-access](<https://devfeed.tech/tags/cloudflare-access.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [networking](<https://devfeed.tech/tags/networking.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [routing](<https://devfeed.tech/tags/routing.md>), [security](<https://devfeed.tech/tags/security.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [zero-trust](<https://devfeed.tech/tags/zero-trust.md>)

### AI overview

This tutorial shows how to define a standardized Cloudflare edge baseline with Pulumi and TypeScript for multi-cloud applications. It covers DNS records, WAF custom rules, a Worker canary, and Cloudflare Access policies, followed by validation steps for the deployed configuration.

### Source excerpt

Platform teams managing multi-cloud applications face a dangerous visibility gap. While origin infrastructure is tightly controlled, the edge configuration often drifts through manual console tweaks. DNS records point to stale origins, WAF rules are inconsistent across environments, and Zero Trust policies fail to keep pace with team changes. This edge drift leads to application exposure or routing failures that origin teams only notice after users report them. As applications span multiple clouds, the edge often becomes the most consistent layer for enforcing security and traffic policies. The cost of waiting for a unified edge strategy is high. Every manual change is a potential security hole or a performance bottleneck that bypasses your standard CI/CD rigor. What you'll build In this post, you will build a standardized Cloudflare edge baseline. You'll use Pulumi to define: DNS records to point to your multi-cloud origins. WAF custom rules to block malicious traffic before it hits your network. A Worker canary to handle edge logic and header validation. Zero Trust Access policies to secure internal tools and origin access. By the end, you will have a version-controlled edge that you can validate and deploy across any environment. The Pulumi program We'll build a Pulumi program that sets up a complete edge environment. This approach ensures that your edge security and routing are always in sync with your application code. Setting up the provider First, ensure you have the @pulumi/cloudflare package installed and your credentials configured. The examples below are checked against @pulumi/cloudflare@6.15.0, the current v6 Pulumi Registry API at the time of writing. npm install @pulumi/cloudflare@6.15.0 pulumi config set --secret cloudflare:apiToken "$CLOUDFLARE_API_TOKEN" Defining the infrastructure Here is the complete Pulumi program in TypeScript. If your zone already has a custom WAF ruleset for the same phase, import that ruleset or add the rule to your existing

## Build an EKS Environment Factory with Pulumi and vCluster

DevFeed: [Build an EKS Environment Factory with Pulumi and vCluster](<https://devfeed.tech/articles/build-an-eks-environment-factory-with-pulumi-and-vcluster-18998.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/eks-vcluster-ephemeral-environments-with-pulumi/>)

Author: Pablo Seibelt

Published: 2026-06-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Amazon EKS](<https://devfeed.tech/topics/amazon-eks.md>), [Multitenancy](<https://devfeed.tech/topics/multitenancy.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>)

Tags: [amazon-eks](<https://devfeed.tech/tags/amazon-eks.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [aws](<https://devfeed.tech/tags/aws.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [multi-tenancy](<https://devfeed.tech/tags/multi-tenancy.md>), [platform-engineering](<https://devfeed.tech/tags/platform-engineering.md>), [provisioning](<https://devfeed.tech/tags/provisioning.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

A tutorial shows how to build an ephemeral Kubernetes environment factory with Pulumi, Amazon EKS Auto Mode, and vCluster. It uses a shared host cluster with virtual tenant clusters to reduce environment sprawl, provisioning delays, and operational overhead while preserving tenant isolation controls.

### Source excerpt

AWS reports in an AWS Architecture Blog case study that Deloitte's move to a virtual cluster model on Amazon EKS resulted in 89% faster testing environment provisioning. By consolidating dozens of disparate clusters into a single host cluster with over 50 vCluster instances, the case study says Deloitte saved about 500 QA hours per year. This "Environment Factory" pattern allows platform teams to provide isolated, ephemeral Kubernetes environments on demand without the cost or lag of full cluster provisioning. This post adapts that general architecture with Pulumi to orchestrate Amazon EKS Auto Mode and vCluster. The problem: environment sprawl and provisioning lag Traditional development workflows often rely on one full EKS cluster per developer or feature branch. While this provides strong isolation, it introduces major pain points. Provisioning a full cluster can take 15 minutes or more, which slows down CI/CD pipelines. Managing dozens of clusters also leads to high costs and significant operational overhead. Platform teams need a "soft multi-tenancy" model. This model should feel like a dedicated cluster to the developer but run on shared infrastructure to keep costs low and startup times fast. Architecture overview: the host and the tenants The environment factory architecture consists of two main layers. Host cluster: A single, reliable EKS cluster managed with EKS Auto Mode. This cluster provides the underlying compute, networking, and storage. Tenant environments: Virtual clusters (vCluster) running as pods within host namespaces. According to the vCluster architecture, the virtual control plane handles API requests while a syncer maps virtual resources to the host cluster. This separation allows tenants to manage their own CRDs, namespaces, and RBAC while platform teams use quotas, NetworkPolicies, pod security, IAM boundaries, and node isolation controls to protect the host and other tenants. Implementation: the EKS Auto Mode host EKS Auto Mode simplifies

## Why Choose Pulumi Over Terraform?

DevFeed: [Why Choose Pulumi Over Terraform?](<https://devfeed.tech/articles/why-choose-pulumi-over-terraform-19034.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/why-choose-pulumi-over-terraform/>)

Author: Pablo Seibelt

Published: 2026-06-02T00:00:00Z

Content type: comparison

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [cloud-infrastructure](<https://devfeed.tech/tags/cloud-infrastructure.md>), [general](<https://devfeed.tech/tags/general.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [migration](<https://devfeed.tech/tags/migration.md>), [platform-engineering](<https://devfeed.tech/tags/platform-engineering.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

This comparison explains why teams may choose Pulumi over Terraform for infrastructure as code. It highlights Pulumi's use of general-purpose programming languages, package managers, IDEs, testing, refactoring workflows, encrypted secrets, reusable components, and safeguards for destructive changes, while noting that provider bugs, drift, eventual consistency, unknown values, and poor abstractions still require engineering discipline.

### Source excerpt

Terraform is a proven infrastructure as code tool with a large provider and module ecosystem. Many teams choose Pulumi when they want to keep that infrastructure as code model, but write and maintain infrastructure with general-purpose programming languages, familiar package managers, IDEs, testing, and software engineering patterns, while still understanding the refactoring tradeoffs in Terraform's own module refactoring guidance. Why choose Pulumi over Terraform? Pulumi's language SDKs let teams define cloud infrastructure in TypeScript, JavaScript, Python, Go, .NET, or Java -- with YAML and HCL also supported as authoring languages -- while adding first-class workflows for refactoring with Pulumi aliases, secrets, protect, retainOnDelete, deleteBeforeReplace, replaceOnChanges, provider resources, Pulumi stacks, testing, and incremental migration with pulumi import. Pulumi does not remove every hard problem in cloud infrastructure, but it gives teams stronger tools for many day-to-day pain points. Executive summary Pulumi is often a better fit when infrastructure code needs to behave like application code: reviewed, tested, packaged, refactored, and shared across teams. The biggest advantages show up when teams need safer refactors, encrypted secret values, reusable components, clearer provider resources, and guardrails around destructive changes. The tradeoff is important: Pulumi is still an infrastructure as code engine. Provider bugs, cloud API eventual consistency, drift, preview-time unknowns, and poorly designed abstractions still require engineering discipline. The advantage is not magic. The advantage is a stronger programming model and a more familiar developer workflow. Need Terraform pattern Pulumi advantage What still needs care Languages and tooling HCL plus Terraform-specific functions and expressions Pulumi supports general-purpose languages, YAML, and now HCL natively, with the normal IDE, test, and package workflows for each Teams still need code re

## Generating a Pulumi Provider from an OpenAPI Spec

DevFeed: [Generating a Pulumi Provider from an OpenAPI Spec](<https://devfeed.tech/articles/generating-a-pulumi-provider-from-an-openapi-spec-19003.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/generating-a-pulumi-provider-from-an-openapi-spec/>)

Author: Luke Ward

Published: 2026-05-28T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [API](<https://devfeed.tech/topics/api.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [iac](<https://devfeed.tech/tags/iac.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

Pulumi announces version 1.0 of the Pulumi Service Provider, generated from the Pulumi Cloud OpenAPI specification. The release expands the provider's resource surface and adds infrastructure-as-code support for fine-grained RBAC, Pulumi IDP catalogs, and audit-log export.

### Source excerpt

Today, we are announcing v1.0 of the Pulumi Service Provider: a major milestone in managing Pulumi Cloud with Pulumi itself. The provider is now generated directly from the Pulumi Cloud OpenAPI specification, unlocking a dramatically expanded pulumiservice:api/* resource surface and enabling Pulumi Cloud capabilities to become available in the provider faster than ever before. This release also brings several major new capabilities to infrastructure as code, including fine-grained RBAC as code, Pulumi IDP as code, and audit log export as IaC. Together, these changes make the Pulumi Service Provider the most powerful and extensible way yet to manage and automate your Pulumi Cloud infrastructure. Why this matters for users Historically, every new Pulumi Cloud feature implied a follow-up PR in the provider before that feature could be used from a Pulumi program. The provider was always slightly behind the API it wrapped, and entirely new capability areas could take months to land. The api/* surface changes both timelines. Because the schema is derived from the OpenAPI spec at runtime: Whole new resource families land in the provider the same release they reach Pulumi Cloud. New fields, features, and enum values on existing resources show up across all five language SDKs the soon after they appear in the spec. What's new in v1.0 v1.0 lifts whole capability areas of Pulumi Cloud into the api/* surface, not just incremental field additions. None of it required bespoke provider code. Fine-grained RBAC as code. Custom roles, organization membership, and team role assignments are now managed resources. For example, defining a read-only role and assigning it to a team: const readOnly = new ps.api.Role("readOnly", { orgName: "acme", name: "stack-reader", description: "Read-only access to stacks across the org.", uxPurpose: "role", details: { __type: "PermissionDescriptorAllow", permissions: ["stack:read", "stack:list"], }, }); new ps.api.teams.Role("readOnlyForPlatform", { org

## Introducing pulumi do: Direct Resource Operations for Any Cloud

DevFeed: [Introducing pulumi do: Direct Resource Operations for Any Cloud](<https://devfeed.tech/articles/introducing-pulumi-do-direct-resource-operations-for-any-cloud-19023.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/pulumi-do-direct-resource-operations/>)

Author: Christian Nunciato

Published: 2026-05-22T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [aws](<https://devfeed.tech/tags/aws.md>), [cli](<https://devfeed.tech/tags/cli.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [features](<https://devfeed.tech/tags/features.md>), [iac](<https://devfeed.tech/tags/iac.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [product](<https://devfeed.tech/tags/product.md>), [product-launches](<https://devfeed.tech/tags/product-launches.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-cli](<https://devfeed.tech/tags/pulumi-cli.md>), [s3](<https://devfeed.tech/tags/s3.md>)

### AI overview

Pulumi introduces pulumi do, a terminal command for direct cloud resource operations. It can create, read, update, delete, and query resources across Pulumi-supported providers without requiring a project, code, or state. The article also describes how pulumi do, Agent accounts, and Pulumi ESC can support ad-hoc infrastructure work and AI agent workflows.

### Source excerpt

Infrastructure as code is the right model for production systems. State tracking, drift detection, and repeatable deployments all matter when you're managing real workloads. But sometimes, you also need a quick, one-off interaction with the cloud: create a bucket or a database, look up a VPC, delete a stray resource. Today we're introducing pulumi do, a new command for direct resource operations. With pulumi do, you can create, read, update, delete, and query any cloud resource from the terminal with a single command, across thousands of Pulumi-supported providers -- no project, code, or state required. The problem: Sometimes IaC is more than you need When you're managing production workloads, IaC is the proven solution. Code lets you declare complex systems, state tracking catches drift before it becomes a problem, dependency graphs sequence changes safely, and policy keeps everything in bounds. That full lifecycle, especially with the backing of a platform like Pulumi Cloud, is exactly what you want to build systems that scale. But when you (or your coding agent) need an ad-hoc Postgres database, the simplest path with IaC still takes several steps: make a directory, create a project, configure your credentials, write the code, preview, deploy. It works, but it's not always necessary for what should be a simple operation. pulumi do collapses all of those steps into one, using the same Pulumi providers, resource model, and ecosystem that powers the core Pulumi platform. Resource creation is also only part of the problem. As Joe laid out in The Agentic Infrastructure Era, the real challenge for AI agents isn't with code or CLI commands, it's with everything else: getting a cloud account, resolving credentials, wiring configuration across multiple services. Agent accounts, also released this week, simplify this by letting an agent provision its own ephemeral Pulumi Cloud account, and Pulumi ESC takes care of consolidating credentials across providers. Together, with p

## Neo Automations: Scheduled Tasks Shipped as Pull Requests

DevFeed: [Neo Automations: Scheduled Tasks Shipped as Pull Requests](<https://devfeed.tech/articles/neo-automations-scheduled-tasks-shipped-as-pull-requests-19013.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/neo-automations/>)

Author: Pulumi Neo Team

Published: 2026-05-21T14:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [pulumi-neo](<https://devfeed.tech/topics/pulumi-neo.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [pulumi](<https://devfeed.tech/topics/pulumi.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [automation](<https://devfeed.tech/tags/automation.md>), [aws](<https://devfeed.tech/tags/aws.md>), [features](<https://devfeed.tech/tags/features.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [product](<https://devfeed.tech/tags/product.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-neo](<https://devfeed.tech/tags/pulumi-neo.md>)

### AI overview

Pulumi Neo now supports scheduled automations that run tasks on hourly, daily, weekday, or weekly cadences and open pull requests for proposed changes. The launch includes templates for provider freshness, encryption, backup, and activity audits, along with configurable prompts, permissions, and integrations.

### Source excerpt

Recurring platform work slips: provider versions fall behind, drift accumulates between checks, and the quarterly audit keeps getting pushed back another month. Pulumi Neo can now run any task on a cadence you set, opening a pull request for each run. Automations in action Your platform team runs stacks across staging and production, and the AWS, GCP, and Kubernetes providers keep shipping new versions. Nobody has time to bump them stack by stack. You write one automation: Every Monday at 8 AM, check the infra/ project for stacks where the AWS, GCP, or Kubernetes provider is more than two minor versions behind. For each one, bump the out-of-date provider, run pulumi preview, and open a PR if the preview is clean. Monday morning, Neo runs the prompt. It finds three stacks behind on the AWS provider, edits each program, runs preview, and opens a PR for each clean run. You review the PRs like you would any other dependency bump, merge them, and Neo runs again next Monday. What automations are for The launch includes four built-in templates: a provider freshness check, an encryption audit, a backup audit, and an activity digest. You can also skip the templates and write your own prompt. Pick from hourly, daily, weekdays, or weekly cadences. Each automation gets its own page in the Automations tab, where you can edit the prompt, change the schedule, run it once on demand, or pause it. Safe by default Automations default to two settings that fit recurring work. Approval mode is auto, so a run doesn't wait for human confirmation between steps. Permission mode is read-only, so a run can read state and propose changes through pull requests but can't apply changes directly. You can override either default per automation. How automations fit with the rest of Neo A scheduled task uses the same context as an interactive Neo task. Custom Instructions at the organization and project level apply, so a scheduled run respects the same naming conventions, tagging policies, and archite

[Next page](<https://devfeed.tech/tags/pulumi.md?cursor=WyIyMDI2LTA1LTIxVDE0OjAwOjAwKzAwOjAwIiwgIjIxZTEyNjJlLTkxMWEtNGNkZC1iMmY3LTVhNDY5YjExNWNmOCJd>)