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.
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.