Skip to content

Get your first preview note

llms.txtlists every page for an agent

This takes about ten minutes on GitHub, GitLab or Forgejo. You need a repository with a Pulumi program and at least one stack.

Terminal window
npm i -D @intentius/plywood
npx plywood init

init finds each Pulumi.yaml and its stacks and writes plywood.yml. It renders the pipeline for the forge your origin remote points at, and prints the secrets and settings left for you to add.

With pulumi_cloud.org and the identity.preview.pulumi and identity.up.pulumi keys in plywood.yml, each job trades its OIDC token for its own Pulumi Cloud token. Your Pulumi Cloud organization then needs an OIDC issuer for the repository. The other way is two access tokens in your forge’s secrets: PULUMI_ACCESS_TOKEN_PREVIEW for the preview job and PULUMI_ACCESS_TOKEN_UP for the update job.

Commit plywood.yml and the pipeline on a branch, then open a pull request. The preview job runs pulumi preview on each stack and posts one note:

plywood preview: 2 stacks, 3 to update, 1 to create
infra/dev ~ aws:sqs/queue:Queue events messageRetentionSeconds 3600 => 7200
+ aws:sns/topic:Topic alerts
infra/prod ~ aws:sqs/queue:Queue events messageRetentionSeconds 3600 => 7200
Approve: plywood approve up --plan sha256:4be1...

The plywood/preview status stays waiting for an approval of that digest.

Your first pull request walks the same loop on a local bench, and Approve a wave covers the update.

Optional: hand this page to your coding agentThe steps work by hand too.
Set up plywood in this repository.
Read https://intentius.io/plywood/llms.txt first, then
https://intentius.io/plywood/getting-started/agents/ and follow it.
Ask me which stacks should wait for an approval before they update.
Open a pull request with the result.
Never run `pulumi up`, `plunge up`, `pulumi destroy` or `plywood approve`, override a policy denial, use `--mode up`, or merge; never touch `.chant/allowed_signers` or `chant/lifecycle`.

plywood