dump & round-trip

pngr dump exports the active org as a stack file. It's how you adopt stack as code for an org you built in the UI — dump it, commit the result, and manage it from git going forward.

pngr dump > stack.yaml

the round-trip guarantee

The output of dump is guaranteed to be valid input to apply against the same org with zero changes — applying a fresh dump is always a no-op. That property is tested in CI, so a dump never produces a file that apply would then "fix".

partial exports

pngr dump --filter monitors,rules    # only the listed kinds

comment-preserving merges

A bare dump produces a clean, fully-expanded file. If you hand-maintain the YAML and want to keep your comments and key ordering, merge into the existing file instead:

pngr dump --merge stack.yaml         # re-emit in stack.yaml's structure

This re-emits the file in the input's shape — comments preserved, key order preserved — updating only the values that actually changed.

secrets are never dumped in plaintext

A dump never writes a credential in clear. Channel configs that hold secrets dump as ${SECRET_NAME} placeholders, where the name is derived from the channel name and field — e.g. an ops-alerts Slack channel's webhook becomes webhook_url: "${ops_alerts_webhook_url}". You wire the real values into your secret store; CI injects them at apply time.

note

This is what makes a dumped file safe to commit straight to a public repo: the structure and non-secret config are all there, and every credential is a named placeholder pointing at your secret store rather than the value itself.

in the browser

The /stack page shows the same dump output as a read-only generated file with download and copy affordances, next to an editor where you can paste, iterate, and apply without leaving the browser.