mrkeyoor.com_
Tue 01 Sept 17:44 UTC
Automationevaluationupdated 26 Aug 2026

pulumi review

Pulumi is an infrastructure-as-code system that lets teams define cloud resources with TypeScript, JavaScript, Python, Go, .NET, Java, or YAML. Its CLI evaluates that program, compares the desired resources with stored stack state, and asks cloud providers to create, update, or delete infrastructure.

+31stars / 7d
Verdict

Our npm/ run passed 15 of 15 tests in 14 seconds and found 0 known vulnerabilities, but it covered only a tiny corner of Pulumi's 1.7-million-line repository. Pulumi is a strong choice when developers will genuinely benefit from normal language features and the organization can govern state, credentials, plugins, and previews. Stay with OpenTofu or Terraform when shared declarative plans and an existing module estate matter more than language freedom.

We ran it

Lab card: what happened when we ran pulumiScreenshot of pulumi (www.pulumi.com)
Install✓ · 16s2 packages · 25 MB
Buildn/ano build script
Tests✓ · 14s15 passed · 0 failed of 15 (node:test)
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo44132 files~1,737,765 lines of source · 114.1 MB · 30 CI workflows · tests dir

Answers from our run

Does pulumi build from source?

Dependencies installed in 16 seconds (2 packages), and the project has no separate build step. We cloned commit 1b59498 into a clean Debian container with 3 CPUs and no project-specific setup.

Do pulumi's tests pass?

Yes: 15 of 15 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Does pulumi have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use pulumi?

Teams that want infrastructure changes readable without knowing a general-purpose language: Pulumi programs can contain normal control flow, functions, classes, and packages.

What are the alternatives to pulumi?

OpenTofu, Terraform, AWS CDK. Our npm/ run passed 15 of 15 tests in 14 seconds and found 0 known vulnerabilities, but it covered only a tiny corner of Pulumi's 1.

Setup3/5Quick CLI path, but real use needs state, providers, and cloud access
Docs5/5Clear start guides, concepts, language support, registry, and examples
Community5/525,610 stars and same-day August 2026 development activity
Maturity5/5Established engine, seven language choices, and frequent releases

Discussed on

  1. hnPulumi – Modern Infrastructure as Code380 points
  2. hnPulumi 3.0321 points
  3. hnPulumi – A new open-source cloud development platform317 points
  4. hnForget CDK and AWS's insane costs. Pulumi and DigitalOcean to the rescue174 points
  5. hnShow HN: Kubespy, a CLI tool for observing Kubernetes resources in real time99 points

Who it’s for

Software teams that want loops, functions, packages, and tests in infrastructure definitions.
Platform groups supporting several clouds or Kubernetes through one programming model.
Developers embedding infrastructure operations inside an application through Pulumi's Automation API.
Organizations willing to choose and govern a state backend, provider credentials, secrets, and deployment approvals.

Who it’s NOT for

Teams that want infrastructure changes readable without knowing a general-purpose language: Pulumi programs can contain normal control flow, functions, classes, and packages.
Operators seeking a credential-free local trial that proves deployment: the README's first project creates AWS resources and therefore needs an account, permissions, and a state backend.
Organizations unwilling to manage plugin and SDK upgrades: v3.259.0 changed CLI, engine, code generation, Automation API, and package behavior in one release.
Small teams that only need a few static resources and already have accepted Terraform or OpenTofu modules: adopting another state and provider workflow may add more process than it removes.
Contributors expecting the measured npm/ result to cover the entire repository: our run exercised 15 Node tests inside a 44,132-file multi-language checkout.

Setup reality

Our sandbox installed the npm/ project in 16 seconds, adding 2 packages and using 25 MB. No build target was available. The Node test step completed in 14 seconds with 15 passed and 0 failed, and npm audit reported 0 known vulnerabilities.

Using Pulumi for real requires the CLI, a supported language runtime, provider packages, cloud credentials, and a stack state backend. The quick start creates AWS resources, so it also creates billable external state. Pulumi Cloud is one backend option; self-managed backends change the operating responsibility.

The full checkout had 44,132 files, about 1,737,765 source lines, and 114.1 MB before installation. Its 30 CI workflow files and separate provider repositories reflect a much larger contributor path than the small npm/ check we ran.

Pulumi turns infrastructure into an ordinary program

A Pulumi project declares cloud resources with a supported language and provider package. The engine evaluates the program, builds a resource graph, compares it with the selected stack, and shows a preview before applying changes. TypeScript and JavaScript are common choices, but Python, Go, .NET, Java, and YAML are also documented as stable. The same repository contains the CLI, language SDKs, and the core engine; provider packages live in separate repositories.

That model is useful when infrastructure has repeated structures, computed configuration, reusable classes, or a close relationship with application code. Developers get familiar editors, package managers, functions, and test tools. The cost is that a resource definition can now hide behavior inside normal code. Reviewers need conventions that keep previews understandable and prevent a clever abstraction from obscuring which resources will exist.

The first deployment needs credentials and persistent state

The README's quick start installs the CLI, creates a TypeScript AWS project, runs pulumi up, reads a stack output, and later destroys the resources. It is a coherent path, but it is not a harmless offline example. The deployment needs AWS credentials and permissions, creates billable resources, and records stack state. A team must also decide whether that state belongs in Pulumi Cloud or another supported backend.

Secrets and configuration sit beside that state decision. Provider credentials should come from an approved identity path rather than source files, while protected stack values need a secrets provider and recovery procedure. CI also needs non-interactive authentication and policy around who can approve an update. Pulumi makes the resource code approachable; it cannot decide the organization's access model.

What happened when we ran it

Our sandbox cloned commit 1b59498 into a fresh unprivileged Debian container with 3 CPUs and 8 GB of RAM. The repository contained 44,132 files, about 1,737,765 lines of source, and occupied 114.1 MB. The measured Node project lived under npm/, where npm installed 2 packages in 16 seconds and used 25 MB on disk.

No build script or target was available in that measured project, so the build step was skipped. The test command completed in 14 seconds: Node's test runner reported 15 passed and 0 failed out of 15. Npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severities. The checkout also had 30 CI workflow files, no Dockerfile, and a tests directory.

Those 15 passing tests are good evidence for the small npm surface we executed. They are not a verdict on a multi-language engine with more than 1.7 million source lines. Our run did not compile the Go CLI, contact a cloud provider, create a stack, exercise a provider plugin, preview a change, or test state recovery. An adoption trial should do all of those with a disposable account and cost limits.

Language freedom does not remove provider behavior

Pulumi can target AWS, Azure, Google Cloud, Kubernetes, and hundreds of registry providers. The language layer does not make those APIs uniform. Each provider still has its own permissions, eventual-consistency cases, quotas, replacement rules, and version changes. A preview is valuable, but it cannot guarantee that an outside API will accept every operation or that a resource replacement will finish cleanly.

Provider packages also become application dependencies. Teams should pin versions, review release notes, and update in controlled batches. Generated SDK types improve authoring, yet a provider schema change can still alter accepted inputs or returned outputs. The safest Pulumi codebase treats provider upgrades like production library upgrades and tests the resulting preview against a representative stack.

Automation API is useful when infrastructure is part of a product

Automation API embeds Pulumi operations inside another program. That can power an internal platform, a self-service environment creator, or a product that provisions isolated customer infrastructure. It avoids wrapping the CLI with fragile shell parsing and gives the host application structured control over previews, updates, logs, and outputs. This is a real advantage over a workflow designed only for humans at terminals.

Embedding deployments raises the stakes. The host service now holds cloud authority, manages concurrent updates, stores logs, handles cancellation, and reports partial failures. Release v3.259.0 removed an Automation API output buffer limit and changed cancellation, package, code-generation, engine, and state-backend behavior. A service built on the API needs version tests and a queue that prevents two operations from racing on one stack.

Daily activity supports a mature but fast-moving tool

GitHub recorded 25,610 stars, a push on August 26, 2026, and 2,450 combined open issues and pull requests. Release v3.259.0 arrived August 19. Current pull requests covered Python generation, state migrations, retry behavior, SDK types, and CLI work. The large combined queue reflects both user reports and active development across a broad engine; it should not be described as 2,450 defects.

Pulumi deserves a trial when its programming model solves a specific pain, such as repeated environments, shared components, or infrastructure inside a product workflow. Run that trial against a disposable cloud account, inspect the preview with someone who knows the provider, and test stack backup and recovery. If existing Terraform or OpenTofu modules already work and the team values a constrained declarative format, switching for syntax alone is weak justification.

Alternatives

ProjectWhat it isPick it when
OpenTofu gh↗A community-led infrastructure-as-code engine compatible with Terraform's configuration language and workflow.pick this instead when declarative HCL, existing modules, and Terraform-compatible state matter more than writing infrastructure in an application language.
Terraform gh↗The established infrastructure-as-code CLI with a large provider and module ecosystem.pick this instead when your team already has Terraform skills, modules, and state operations that solve the job.
AWS CDKA programming-language toolkit that synthesizes AWS CloudFormation templates.pick this instead when AWS is the fixed target and CloudFormation is the desired deployment and state layer.

What people are saying

  1. [github-trending] pulumi/pulumi

Sources

  1. Pulumi README
  2. Pulumi v3.259.0 release
  3. Pulumi documentation

More automation reviews

rclone · lego · OpenCLI · web-access · Karabiner-Elements · WiiUDownloader · the whole board →