Skip to content

Overview

llms.txtlists every page for an agent

plunge, a fork of pulumi/pulumi, runs the same programs, SDKs and providers, and changes where state lives and how a run decides ownership.

A stack is the same as in Pulumi: one program’s deployment, named <project>/<stack>.

A marker is a tag or label on the live object naming its stack and its URN: plunge-stack and plunge-urn (Identity).

A record is one resource’s state in a store with conditional writes, under stacks/<project>/<stack>/resources/<urn> (Records).

plunge adds both markers to each taggable resource’s inputs after every transform, so the create call writes them and any tool can list a stack’s objects. On AWS:

aws resourcegroupstaggingapi get-resources \
--tag-filters Key=plunge-stack,Values=myproject/dev

Before creating a type a lister covers, plunge lists live objects with the resource’s markers. If it finds one, it binds it instead of creating a second.

Stock Pulumi keeps one checkpoint file per stack and orders updates with its stack lock. With plunge+<store>, each row below works differently.

On plunge+<store>
Where state lives one record per resource, per root output, and one for the secrets configuration
Two updates at once both run; a conditional write per record decides any clash
A run that would delete an object checks the live marker first
An unnamed resource gets the same name on every run
A saved plan applied after the state moved refused by name, exit 40, when any record it read has moved
Stack history and backups not kept; the commands are refused by name

The DIY backend at the URL inside plunge+ keeps everything but state (the stack list, stack tags, the default secrets manager), as for stock Pulumi.

Source: pkg/backend/plunge/backend.go.

In chant, identity markers on the live object decide ownership. plunge carries that into Pulumi, as choudoufu does into OpenTofu. Both are chant engines (a chant workspace can run a plunge stack as a member), and plunge runs any Pulumi program without chant.

plunge forks pulumi/pulumi at 7e12743da8 (after the 3.272.0 release) under Apache-2.0, and merges upstream without rebasing. The scheduled merge of 2026-10-26 stopped on a conflict in sdk/go/auto/automation/commands.go and waits for a person (#24). Until a person resolves it, the fork stays on the upstream release it started from. The project has no tie to Pulumi Corporation, owner of the Pulumi trademark.

Optional: hand this page to your coding agentThe steps work by hand too.
Read https://intentius.io/plunge/how-it-works/ and explain the changes plunge would make for the Pulumi program in this repository. Change no files.
Never run `plunge up`, `plunge destroy` or `plunge stack adopt --yes`, approve or apply a saved plan, or merge; never edit or remove a plunge-stack or plunge-urn tag or label by hand.

plunge