pier_
Reference

All commands

The complete pier reference on one page, for search and for agents

Every command with its arguments and flags. Per-command pages: CLI reference.

Global flags

FlagValueDefaultDescription
-v, --versionPrint version
-j, --jsonOutput as JSON
--no-colorDisable colored output (env NO_COLOR)
-w, --workspaceSTRINGOverride default workspace (name or ID)
-p, --projectSTRINGOverride default project (name, slug, or ID) (env PIER_PROJECT)
-e, --envSTRINGTarget this environment for this command only (slug); use 'pier use' to switch
--profileSTRINGUse a named session profile for this invocation (e.g. local, dev) (env PIER_PROFILE)
--no-stateIgnore saved selections, always prompt

Inspect the environment

pier status

pier status

Project state, resource counts, config drift.

pier logs

pier logs [<ref>] [flags]

Read or follow logs for an app, a Postgres, or the whole environment.

ArgumentRequiredDescription
<ref>noApp or Postgres to read (name, name/target, or name/target/instance); omit to pick
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app or pg
--allEvery app in the environment (skips the picker)
--tail100100Max lines
--since1hLookback: a duration (30m, 6h, 7d) or an RFC3339 time
--querySTRINGSearch filter (Quickwit syntax; a bare word matches the message; substring-only with --follow)
--levelLEVEL,...Only these levels (repeatable). Apps: INFO WARN ERROR FATAL DEBUG TRACE; Postgres: LOG INFO NOTICE WARNING ERROR FATAL DEBUG
--instanceSTRINGApps: one instance (name or pod suffix) — the same as a third ref segment
-f, --followKeep streaming new lines until Ctrl-C (apps and environments)
--utcTimestamps in UTC instead of local time

pier events

pier events [<ref>] [flags]

Show or watch events for a resource, the environment, the project or the workspace.

ArgumentRequiredDescription
<ref>noResource (name, or name/target for one target); omit to pick
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app, site, pg, bucket or volume
--all-envsEvery environment of the project (skips the picker)
--all-projectsThe whole workspace (skips the picker)
--kindKIND,...intent | milestone | activity (repeatable)
--actionACTION,...Exact action match e.g. app.created (repeatable)
--action-prefixSTRINGAction prefix e.g. app. matches every app.* event
--severitySEVERITY,...info | warn | error | critical (repeatable)
--actorSTRINGFilter by actor user ID
--intentSTRINGAll events for one intent ID
--operationSTRINGAll events for one operation (op_...)
--sinceSTRINGLower bound: a duration (30m, 6h, 7d) or an RFC3339 time
--untilSTRINGUpper bound: a duration ago or an RFC3339 time
--limit5050Max events (server caps at 200)
--afterSTRINGContinue from a previous page's next_cursor (--json)
--payloadInclude each event's payload (--json)
--watchKeep printing new events until Ctrl-C
--utcAbsolute UTC timestamps instead of relative

pier monitor

pier monitor [<ref>] [flags]

Monitor a resource or the whole environment: live snapshot, --range summary, --metric drill-down.

ArgumentRequiredDescription
<ref>noResource to show (name, or name/target); omit to pick
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app, site, pg, bucket or volume
--allShow every resource in the environment (the overview) without the picker
--range24hSummarise a window instead of the live snapshot (1h, 6h, 24h, 7d, 30d)
--metricSTRINGShow one measure's series over the window (e.g. cpu_pct, latency_p95_ms); implies --range
--by-instanceWith --metric on an app: one column per instance for cpu_pct/memory_pct

pier deploys

pier deploys <command>

Deploy history (apps + sites), incl. build logs.

pier deploys ls

pier deploys ls [<ref>] [flags]

List deploys (apps + sites).

ArgumentRequiredDescription
<ref>noNarrow to one app or site (slug, or slug/target)
FlagValueDefaultDescription
--typeSTRINGFilter by resource type: app or site
--limitINTMax rows (server default 50, max 200)
--systemInclude platform-initiated rollouts (drift repair, resume, relocation)
--all-envsEvery environment (default: the current one only)

pier deploys info

pier deploys info [<id>]

Show deploy details.

ArgumentRequiredDescription
<id>noDeploy ID (build_…); picked from recent deploys when omitted

pier deploys logs

pier deploys logs [<id>] [flags]

Show build logs for a deploy.

ArgumentRequiredDescription
<id>noDeploy ID (build_…); picked from recent deploys when omitted
FlagValueDefaultDescription
--tail20002000Max log lines
--querySTRINGFull-text search filter
-f, --followFollow the live log stream until the build completes

pier ls

pier ls [<kind>]

What's in the environment; a kind (apps, sites, pg, buckets, volumes, domains) narrows it.

ArgumentRequiredDescription
<kind>noNarrow to one kind: apps, sites, pg, buckets, volumes, domains

pier info

pier info [<ref>] [flags]

One resource in full: an app or site with its targets, one target, a Postgres, bucket, volume or domain.

ArgumentRequiredDescription
<ref>noResource to show (name, name/target, or a custom domain); omit to pick
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app, site, pg, bucket, volume or domain

Change the environment

pier apply

pier apply [<file>] [flags]

Converge pier.yaml: add, set and remove resources — never rolls a workload.

ArgumentRequiredDescription
<file>noPath to pier.yaml (default: auto-detect)
FlagValueDefaultDescription
--dry-runPreview changes without applying
-y, --yesSkip confirmation prompt
--pruneDelete resources not in pier.yaml
--all-envsApply all environments (default: current env only)
--purgeDeletes in this apply skip the 30-day recovery window (torn down immediately)
--renameKIND.OLD=NEW,...Apply a rename in place instead of delete+create (KIND.OLD=NEW, e.g. apps.api=gateway). Repeatable.

pier deploy

pier deploy [<ref>] [flags]

Build and roll changed apps and sites (implies apply).

ArgumentRequiredDescription
<ref>noDeploy one app or site only (name or name/target); default: everything changed
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
-f, --forceForce rebuild all apps
--taglatestImage tag
--no-resumeRefuse to resume suspended targets — fail fast (CI escape hatch)
--prune-externalAlso delete resources on the server that aren't in pier.yaml and were never applied from it (added via console/API)
--purgeDeletes in this deploy skip the 30-day recovery window (torn down immediately)
--renameKIND.OLD=NEW,...Apply a rename in place instead of delete+create (KIND.OLD=NEW, e.g. apps.api=gateway). Repeatable.
--pathSTRINGSite only: directory to build and upload (default: the site's build context)
--build-cmdSTRINGSite only: override the build command (build-time only)
--output-dirSTRINGSite only: override the output directory (build-time only)
--skip-buildSite only: skip install and build, upload the directory as is

pier add

pier add <command>

Add a resource.

pier add app

pier add app [flags]

Add an app.

FlagValueDefaultDescription
--nameSTRINGApp name
--planSTRINGApp plan (e.g. app-s, app-m)
--replicas00Number of replicas
--autoscaleSTRINGAutoscale range min-max (e.g. 1-4); XOR with --replicas
--triggerTRIGGER,...Autoscale trigger type:value (cpu:70, memory:80, rps:50, latency:250ms); repeatable
--idle-afterSTRINGZero-traffic window before scale-to-zero (with --autoscale 0-N)
--imageSTRINGContainer image (static-image flow, skips build)
--portINTContainer port (required with --image)
--templateSTRINGScaffold from a starter template (e.g. node_hono, python_fastapi, go_fiber, rust_axum, dockerfile_caddy)
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier add site

pier add site [flags]

Add a static site.

FlagValueDefaultDescription
--nameSTRINGSite name
--templateSTRINGScaffold from a starter template (e.g. site_nextjs, site_astro, site_vite, site_hugo, site_html)
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier add pg

pier add pg [flags]

Add a Postgres instance.

FlagValueDefaultDescription
--nameSTRINGPostgres cluster name (CNPG cluster / Pier resource name)
--default-dbSTRINGDefault Postgres database name created with the cluster (required)
--planSTRINGSizing plan (e.g. pg-s, pg-m, pg-l)
--replicas00Number of replicas
--pg-versionSTRINGPostgres major version
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier add bucket

pier add bucket [flags]

Add a bucket.

FlagValueDefaultDescription
--nameSTRINGBucket name
--access""Access level: public or private
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier add volume

pier add volume [flags]

Add a persistent volume.

FlagValueDefaultDescription
--nameSTRINGVolume name
--size""Size (e.g. 1GB, 5GB)
--durability""Durability tier: standard (node-local, default) or ha (replicated, survives node failure). Immutable after creation.
-a, --appSTRINGAttach to an app (slug or slug/target)
--mountSTRINGMount path inside the app (required with --app non-interactively)
-y, --yesSkip confirmation
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier add domain

pier add domain [<domain>] [flags]

Add a custom domain.

ArgumentRequiredDescription
<domain>noDomain to add (e.g. app.example.com)
FlagValueDefaultDescription
-a, --appSTRINGApp ref (slug or slug/target)
-s, --siteSTRINGSite ref (slug or slug/target)
-y, --yesSkip confirmation
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier add target

pier add target <app> <name> [flags]

Add a deployment target to an app or site.

ArgumentRequiredDescription
<app>yesApp or site (name)
<name>yesNew target name (slug-shaped, e.g. canary)
FlagValueDefaultDescription
--branchSTRINGGit branch that deploys this target
--planSTRINGSizing plan (e.g. app-s, app-m)
--dockerfileSTRINGDockerfile path override (relative to build context)
-y, --yesSkip confirmation prompt

pier set

pier set <command>

Change a resource's config.

pier set app

pier set app [<app>] [flags]

Change an app's config.

ArgumentRequiredDescription
<app>noApp ref (slug or slug/target)
FlagValueDefaultDescription
--planSTRINGNew plan
--replicasINTNew replica count (fixed scaling; XOR with --autoscale)
--autoscaleSTRINGAutoscale range min-max (e.g. 1-4), or 'off' to return to fixed
--triggerTRIGGER,...Autoscale trigger type:value (cpu:70, memory:80, rps:50, latency:250ms); repeatable
--idle-afterSTRINGZero-traffic window before scale-to-zero (with --autoscale 0-N)
--imageSTRINGDeploy from a static image (switches off build_context)
--portINTContainer port (image-sourced apps only)
--build-contextSTRINGDeploy by building a code path, relative to pier.yaml (switches off image)
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier set site

pier set site [<site>] [flags]

Change a site's config.

ArgumentRequiredDescription
<site>noSite ref (slug or slug/target)
FlagValueDefaultDescription
--frameworkSTRINGNew framework (e.g. static, nextjs-static, astro, vite, hugo)
--build-commandSTRINGNew build command
--output-dirSTRINGNew output directory
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier set pg

pier set pg [<postgres>] [flags]

Change a Postgres instance's config.

ArgumentRequiredDescription
<postgres>noPostgres name or slug
FlagValueDefaultDescription
--planSTRINGNew plan
--replicasINTNew replica count
--pg-versionSTRINGNew Postgres major version (e.g. 17)
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier set bucket

pier set bucket [<bucket>] [flags]

Change a bucket's config.

ArgumentRequiredDescription
<bucket>noBucket name or slug
FlagValueDefaultDescription
--access""Access level: public or private
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier set volume

pier set volume [<volume>] [flags]

Change a volume's config.

ArgumentRequiredDescription
<volume>noVolume name, slug, or ID
FlagValueDefaultDescription
--size""New size (e.g. 5GB, 10GB)
-a, --appSTRINGBind to an app (slug or slug/target), moving any existing binding
--mountSTRINGMount path inside the app (required with --app non-interactively)
--detachRemove the volume's app binding
-y, --yesSkip confirmation
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm

pier rm <command>

Remove a resource.

pier rm app

pier rm app [<app>] [flags]

Remove an app.

ArgumentRequiredDescription
<app>noApp name, slug, or ID
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm site

pier rm site [<site>] [flags]

Remove a site.

ArgumentRequiredDescription
<site>noSite name or slug
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm pg

pier rm pg [<postgres>] [flags]

Remove a Postgres instance.

ArgumentRequiredDescription
<postgres>noPostgres name or slug
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm bucket

pier rm bucket [<bucket>] [flags]

Remove a bucket.

ArgumentRequiredDescription
<bucket>noBucket name or slug
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm volume

pier rm volume [<volume>] [flags]

Remove a volume.

ArgumentRequiredDescription
<volume>noVolume name, slug, or ID
FlagValueDefaultDescription
-y, --yesSkip confirmation
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm domain

pier rm domain [<domain>] [flags]

Remove a custom domain.

ArgumentRequiredDescription
<domain>noDomain to delete (interactive if omitted)
FlagValueDefaultDescription
-a, --appSTRINGApp ref narrowing the --stage selection (slug or slug/target)
-s, --siteSTRINGSite ref narrowing the --stage selection (slug or slug/target)
-y, --yesSkip confirmation
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier rm target

pier rm target <ref> [flags]

Remove a deployment target from an app or site.

ArgumentRequiredDescription
<ref>yesTarget to remove (name/target of an app or site, e.g. web/feat-x)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier trash

pier trash <command>

Removed resources in their recovery window: list, restore, purge.

pier trash ls

pier trash ls

List removed resources still in their recovery window.

pier trash restore

pier trash restore <type> <name>

Restore a removed resource (its data comes back).

ArgumentRequiredDescription
<type>yesResource type: app | pg | site | bucket | volume
<name>yesResource name (slug)

pier trash purge

pier trash purge <type> <name> [flags]

Purge a removed resource now (forfeits recovery).

ArgumentRequiredDescription
<type>yesResource type: app | pg | site | bucket | volume
<name>yesResource name (slug)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier copy

pier copy <command>

Copy a resource to another environment.

pier copy app

pier copy app [<name>] [flags]

Copy an app to another environment.

ArgumentRequiredDescription
<name>noApp name or slug to copy
FlagValueDefaultDescription
--toSTRINGTarget environment slug

pier copy site

pier copy site [<name>] [flags]

Copy a site to another environment.

ArgumentRequiredDescription
<name>noSite name or slug to copy
FlagValueDefaultDescription
--toSTRINGTarget environment slug

pier rename

pier rename <kind> <old> <new> [flags]

Rename a resource in place (non-destructive).

ArgumentRequiredDescription
<kind>yesResource kind: app | postgres | site | bucket | volume | environment
<old>yesCurrent name
<new>yesNew name
FlagValueDefaultDescription
-y, --yesSkip confirmation

pier promote

pier promote <ref> [flags]

Make a target the primary of its app or site.

ArgumentRequiredDescription
<ref>yesTarget to make primary (name/target of an app or site)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier restart

pier restart [<ref>] [flags]

Restart an app or a Postgres instance.

ArgumentRequiredDescription
<ref>noApp (name or name/target) or Postgres to restart; omit to pick
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app or pg
-y, --yesSkip the resume confirmation prompt
--no-resumeFail instead of resuming a paused resource/ancestor

pier rollback

pier rollback [<ref>] [flags]

Roll an app or site back to a previous deploy.

ArgumentRequiredDescription
<ref>noApp or site to roll back (name or name/target); omit to pick
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app or site
--toSTRINGDeploy to roll back to (an id from 'pier deploys ls'); default: the previous one
-y, --yesSkip confirmation prompt
--no-resumeFail instead of resuming a paused app/ancestor

pier pause

pier pause [<ref>] [flags]

Pause a resource, environment, project or workspace (recoverable).

ArgumentRequiredDescription
<ref>noResource to pause (name, or name/target)
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app, site, pg, bucket or volume
-y, --yesSkip confirmation
--no-waitReturn immediately after submitting; don't wait for terminal status

pier resume

pier resume [<ref>] [flags]

Resume a paused resource, environment, project or workspace.

ArgumentRequiredDescription
<ref>noResource to resume (name, or name/target)
FlagValueDefaultDescription
--typeSTRINGDisambiguate a name shared by several kinds: app, site, pg, bucket or volume
--no-waitReturn immediately after submitting; don't wait for terminal status
-y, --yesAccepted for symmetry with pause (resume never prompts)

Connect & data

pier ssh

pier ssh [<app>] [<command>] [flags]

Open a shell in a running app.

ArgumentRequiredDescription
<app>noApp ref (slug, slug/target, or slug/target/instance; uses current app if omitted)
<command>noCommand to run (default: /bin/sh)
FlagValueDefaultDescription
--key~/.ssh/id_ed25519Path to SSH private key

pier psql

pier psql [<postgres>] [<args>] [flags]

Open a psql shell to a Postgres instance.

ArgumentRequiredDescription
<postgres>noPostgres name, slug, or ID
<args>noExtra args passed to psql after --
FlagValueDefaultDescription
--dbSTRINGOverride the Postgres database inside the cluster

pier vars

pier vars <command>

Environment variables.

pier vars ls

pier vars ls

List environment variables.

pier vars set

pier vars set [<key>] [<value>] [flags]

Set a variable (plain, secret or linked); KEY=VALUE or KEY VALUE.

ArgumentRequiredDescription
<key>noVariable name (or KEY=VALUE)
<value>noVariable value
FlagValueDefaultDescription
-s, --secretStore as secret
--secret-valueSTRINGSecret value (use '-' for stdin)
--fromSTRINGLink to resource reference (e.g. postgres.main.url)
--appSTRINGScope to an app (slug or slug/target)
--siteSTRINGScope to a site (slug or slug/target)
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier vars rm

pier vars rm [<key>] [flags]

Remove a variable.

ArgumentRequiredDescription
<key>noVariable name to remove
FlagValueDefaultDescription
--appSTRINGScope to an app (slug or slug/target)
--siteSTRINGScope to a site (slug or slug/target)
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'

pier vars import

pier vars import [flags]

Import variables from a .env file.

FlagValueDefaultDescription
--fileSTRINGPath to .env file (use '-' for stdin)
--secretTreat all imported vars as secrets
-y, --yesSkip confirmation prompt

pier vars reveal

pier vars reveal [<key>]

Reveal the value of a secret variable.

ArgumentRequiredDescription
<key>noVariable name to reveal

pier routes

pier routes <command>

Site routing rules.

pier routes ls

pier routes ls [<site>]

List a site's routing rules.

ArgumentRequiredDescription
<site>noSite ref (name or name/target)

pier routes add

pier routes add [<site>] [<route-type>] [flags]

Add a routing rule (redirect, rewrite, header).

ArgumentRequiredDescription
<site>noSite (name or name/target); omit to pick
<route-type>noRoute type (redirect, rewrite, header)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'
--sourceSTRINGSource path pattern
--destinationSTRINGDestination path or URL
--status308308Redirect status code (301/302/307/308)
--pathSTRINGHeader rule path pattern
--headersHEADERS,...Header key=value pairs

pier routes rm

pier routes rm [<site>] [<route-type>] [flags]

Remove a routing rule.

ArgumentRequiredDescription
<site>noSite (name or name/target); omit to pick
<route-type>noRoute type (redirect, rewrite, header)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt
--stageWrite the change to pier.yaml only — apply later with 'pier deploy'
--sourceSTRINGSource/path pattern to remove
--pathSTRINGHeader rule path to remove

pier routes fallback

pier routes fallback [<site>] [flags]

Configure the SPA fallback.

ArgumentRequiredDescription
<site>noSite (name or name/target); omit to pick
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier pg

pier pg <command>

Postgres tools.

pier pg credentials

pier pg credentials [<postgres>] [flags]

Show connection credentials.

ArgumentRequiredDescription
<postgres>noPostgres name, slug, or ID
FlagValueDefaultDescription
--uriPrint connection URI only (pipeable)

pier pg plans

pier pg plans

List available Postgres plans.

pier pg databases

pier pg databases [<postgres>]

List logical databases inside an instance.

ArgumentRequiredDescription
<postgres>noPostgres instance (name or name/target)

pier pg tables

pier pg tables [<postgres>] [<database>] [flags]

List tables in a logical database.

ArgumentRequiredDescription
<postgres>noPostgres instance (name or name/target)
<database>noLogical database inside the cluster (default: the instance's default)
FlagValueDefaultDescription
--schemaSTRINGFilter by schema (default: all non-system schemas)
--limit100100Limit number of rows returned
--csvOutput as CSV (no formatting)

pier pg query

pier pg query [<postgres>] [<database>] [<sql>] [flags]

Run a one-off SQL query.

ArgumentRequiredDescription
<postgres>noPostgres instance (name or name/target)
<database>noLogical database inside the cluster (default: the instance's default)
<sql>noSQL to execute (use --file to read from a file or stdin)
FlagValueDefaultDescription
--fileSTRINGRead SQL from a file (use - for stdin)
--limitINTMax rows returned before truncation
--csvOutput as CSV

pier objects

pier objects <command>

Bucket objects (data plane).

pier objects put

pier objects put [flags]

Upload a file to a bucket.

FlagValueDefaultDescription
-b, --bucketSTRINGBucket name, slug, or ID
-f, --fileSTRINGLocal file path to upload
--keySTRINGRemote object key (defaults to filename)

pier objects get

pier objects get [<key>] [flags]

Download an object from a bucket.

ArgumentRequiredDescription
<key>noObject key
FlagValueDefaultDescription
-b, --bucketSTRINGBucket name, slug, or ID
-o, --outputSTRINGLocal file path (defaults to key basename)
--prefixSTRINGFilter the interactive picker by key prefix

pier objects ls

pier objects ls [flags]

List objects in a bucket.

FlagValueDefaultDescription
-b, --bucketSTRINGBucket name, slug, or ID
--prefixSTRINGFilter objects by key prefix
--max-keys100100Max objects to return

pier objects rm

pier objects rm [<key>] [flags]

Remove an object from a bucket.

ArgumentRequiredDescription
<key>noObject key
FlagValueDefaultDescription
-b, --bucketSTRINGBucket name, slug, or ID
-y, --yesSkip confirmation prompt
--prefixSTRINGFilter the interactive picker by key prefix

pier objects presign

pier objects presign [<key>] [flags]

Generate a presigned URL for an object.

ArgumentRequiredDescription
<key>noObject key
FlagValueDefaultDescription
-b, --bucketSTRINGBucket name, slug, or ID
--methodSTRINGHTTP method: GET or PUT (defaults to GET in non-interactive mode)
--prefixSTRINGFilter the interactive picker by key prefix (GET only)

pier snapshots

pier snapshots <command>

Volume snapshots.

pier snapshots ls

pier snapshots ls [<volume>]

List snapshots.

ArgumentRequiredDescription
<volume>noVolume name, slug, or ID

pier snapshots create

pier snapshots create [<volume>]

Create an on-demand snapshot.

ArgumentRequiredDescription
<volume>noVolume name, slug, or ID

pier backups

pier backups <command>

Postgres backups.

pier backups ls

pier backups ls [<postgres>]

List backups.

ArgumentRequiredDescription
<postgres>noPostgres name, slug, or ID

pier backups create

pier backups create [<postgres>]

Trigger an on-demand backup.

ArgumentRequiredDescription
<postgres>noPostgres name, slug, or ID

pier github

pier github <command>

GitHub push-to-deploy.

pier github connect

pier github connect [flags]

Connect this project to a GitHub repository.

FlagValueDefaultDescription
--repoSTRINGGitHub repository (owner/repo)
-y, --yesSkip confirmation prompt

pier github set

pier github set [flags]

Configure deploy triggers for push-to-deploy.

FlagValueDefaultDescription
--appSTRINGApp slug to set the trigger on (flag mode — skips the interactive prompt)
--siteSTRINGSite slug to set the trigger on (flag mode — skips the interactive prompt)
--targetSTRINGTarget name (default: the resource's only target)
--branchSTRINGBranch or pattern to deploy on push (e.g. main, release-*)
--removeRemove the trigger instead of setting one

pier github disconnect

pier github disconnect [flags]

Disconnect GitHub from this project.

FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier github status

pier github status

Show GitHub connection status.

pier dev

pier dev <command>

Run the current environment locally (docker).

pier dev up

pier dev up [flags]

Run the current environment locally (default).

FlagValueDefaultDescription
--dry-runPrint the materialization plan and generated compose file; run nothing
--watchWatch build contexts and rebuild/restart apps on change
--onlyAPP,...Run only these apps
--pull-secretsReveal secret values from the server (required for protected environments)
--no-pull-secretsNever reveal secrets; missing ones error unless --allow-missing
--allow-missingRun even when required secrets have no value (vars are absent)
--buildRebuild app images even when the build context is unchanged
--no-buildNever build; fail if an app image is missing
--keep-othersLeave other environments' running dev stacks alone (default: their apps stop)

pier dev status

pier dev status

Show this project's local dev stacks across environments.

pier dev stop

pier dev stop

Stop the current environment's local stack (data kept).

pier dev reset

pier dev reset [flags]

Destroy local dev stack(s): containers, volumes, generated files.

FlagValueDefaultDescription
--allReset every environment's dev stack for this project
-y, --yesSkip confirmation prompt

pier dev logs

pier dev logs [<app>]

Follow the local stack's logs.

ArgumentRequiredDescription
<app>noLimit to one app

Project & scope

pier config

pier config <command>

pier.yaml lifecycle: init, sync, diff, validate.

pier config init

pier config init [flags]

Create a new project and write its pier.yaml.

FlagValueDefaultDescription
-o, --outputpier.yamlOutput file path
--nameSTRINGProject name for the new project (default: directory name). Required non-interactively — creating a server project should never be a silent side effect in CI.

pier config validate

pier config validate [<file>]

Validate pier.yaml syntax and references.

ArgumentRequiredDescription
<file>noPath to pier.yaml (default: auto-detect)

pier config diff

pier config diff [<file>]

Show differences between pier.yaml and platform state.

ArgumentRequiredDescription
<file>noPath to pier.yaml (default: auto-detect)

pier config sync

pier config sync [<file>] [flags]

Pull server state into pier.yaml (adopt an existing project, or update an existing file).

ArgumentRequiredDescription
<file>noPath to pier.yaml (default: auto-detect)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier use

pier use [<environment>]

Switch the active environment.

ArgumentRequiredDescription
<environment>noEnvironment slug to switch to; omit to pick

pier projects

pier projects <command>

Projects: list, add, inspect, remove, pause, switch.

pier projects ls

pier projects ls

List projects.

pier projects add

pier projects add <name> [flags]

Add a project.

ArgumentRequiredDescription
<name>yesProject name
FlagValueDefaultDescription
--slugSTRINGURL-safe identifier (auto-generated if omitted)

pier projects info

pier projects info <project>

Show project details.

ArgumentRequiredDescription
<project>yesProject name, slug, or ID

pier projects use

pier projects use [<ref>]

Switch the active project (picker when no name is given).

ArgumentRequiredDescription
<ref>noProject name, slug, or ID; omit to pick

pier projects rm

pier projects rm [<project>] [flags]

Remove a project.

ArgumentRequiredDescription
<project>noProject name, slug, or ID
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier projects pause

pier projects pause [flags]

Pause an entire project (recoverable).

FlagValueDefaultDescription
-y, --yesSkip confirmation
--no-waitReturn immediately after submitting; don't wait for terminal status

pier projects resume

pier projects resume [flags]

Resume a paused project.

FlagValueDefaultDescription
--no-waitReturn immediately after submitting; don't wait for terminal status

pier environments

pier environments <command>

Environments: list, add, pause (switch with 'pier use').

pier environments ls

pier environments ls

List environments.

pier environments add

pier environments add <name> [flags]

Add an environment.

ArgumentRequiredDescription
<name>yesEnvironment name (e.g. Staging)
FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier environments pause

pier environments pause [flags]

Pause an environment (recoverable).

FlagValueDefaultDescription
-y, --yesSkip confirmation
--no-waitReturn immediately after submitting; don't wait for terminal status

pier environments resume

pier environments resume [flags]

Resume a paused environment.

FlagValueDefaultDescription
--no-waitReturn immediately after submitting; don't wait for terminal status

pier workspaces

pier workspaces <command>

Workspaces: switch, pause, resume.

pier workspaces ls

pier workspaces ls

List your workspaces.

pier workspaces use

pier workspaces use [<workspace>]

Switch the active workspace.

ArgumentRequiredDescription
<workspace>noWorkspace name or ID; omit to pick

pier workspaces pause

pier workspaces pause [flags]

Pause an entire workspace (closes the active plan).

FlagValueDefaultDescription
-y, --yesSkip confirmation
--no-waitReturn immediately after submitting; don't wait for terminal status

pier workspaces resume

pier workspaces resume [flags]

Resume a paused workspace.

FlagValueDefaultDescription
--no-waitReturn immediately after submitting; don't wait for terminal status

CLI & account

pier login

pier login [<url>] [flags]

Authenticate with the controller.

ArgumentRequiredDescription
<url>noController URL (default: built-in or from config)
FlagValueDefaultDescription
--no-browserUse email/password prompt instead of browser login

pier logout

pier logout

Log out and clear session.

pier whoami

pier whoami

Show current user.

pier profiles

pier profiles <command>

Session profiles (one login per controller).

pier profiles ls

pier profiles ls

List stored profiles.

pier profiles use

pier profiles use [<name>]

Switch the default profile.

ArgumentRequiredDescription
<name>noProfile name; omit to pick

pier profiles rm

pier profiles rm <name>

Remove a stored profile.

ArgumentRequiredDescription
<name>yesProfile name

pier billing

pier billing <command>

Billing state and overage cap.

pier billing overview

pier billing overview

Show billing overview (plan, status, credits).

pier billing charges

pier billing charges

Show recent charges.

pier billing cap

pier billing cap <command>

Manage the workspace overage cap.

pier billing cap show
pier billing cap show

Show the current cap.

pier billing cap set
pier billing cap set [<amount>] [flags]

Set or update the cap.

ArgumentRequiredDescription
<amount>noCap amount in USD (e.g. 50.00). Prompts when omitted on TTY.
FlagValueDefaultDescription
--actionhard_suspendWhat happens at 100%
pier billing cap remove
pier billing cap remove [flags]

Remove the cap (= unlimited).

FlagValueDefaultDescription
-y, --yesSkip confirmation prompt

pier ssh-key

pier ssh-key [flags]

Generate SSH certificate for shell access.

FlagValueDefaultDescription
--key~/.ssh/id_ed25519.pubPath to SSH public key

pier upgrade

pier upgrade

Upgrade the CLI to the latest version.

pier uninstall

pier uninstall [flags]

Uninstall the Pier CLI and remove all data.

FlagValueDefaultDescription
-y, --yesSkip confirmation prompt