CLI
202 commands. Install the CLI with the quickstart, then sign in with pando login.
Top level
pando
Host your apps without setting up a deployment pipeline
Flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando adapterpando adminpando aipando apppando approvalspando auditpando backuppando clusterpando configpando deploypando eventspando execpando exportpando grantpando grouppando host-agentpando identity-providerpando instructionspando joinpando loginpando logspando mcppando migratepando notificationspando notifypando planpando policypando restartpando rolepando rollbackpando secretpando sectionpando self-updatepando servepando slotpando sourcepando subscriptionspando tokenpando two-factorpando updatespando upgradepando userpando version
pando config
Show the server's startup configuration and where each setting came from
Lists every setting the server started with, its value, and where it was set: an environment variable, the config file, or the default. Host policy fields set there are listed separately; they cannot be changed with pando policy set while they are set. Secrets are never shown.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando deploy
Deploy an app, or a directory on this machine
With an app ID, deploys that app. With a path, packs the directory, uploads it as the app's source, and deploys that.
The second form is for an agent: something that has just generated an app cannot commit and push, but it can run a command.
Flags
| Flag | Default | Description |
|---|---|---|
--app string | deploy a directory as an existing app, instead of creating one | |
--env stringArray | KEY=VALUE, set when a new directory's setup is accepted; repeat for more (e.g. --env API_URL=https://api) | |
--revision int | 0 | the spec revision to deploy (defaults to the pinned one) |
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando events
List the events a subscription can name, or an app's recent events with --app
Flags
| Flag | Default | Description |
|---|---|---|
--app string | Show this app's recent events (its ID) instead of the catalog | |
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando exec
Run a command inside a running app
Opens a terminal inside a running workload.
This is the most privileged thing you can do to an app: what runs here can read the app's database directly and read its injected environment, including secrets. The command is recorded in the audit log; what happens inside the session is not.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) | |
--workload string | which part of the app to open a terminal in (default: the one its URL points at) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando export
Print an app's spec
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando join
Join a new Pando to a cluster with a join token
Joins the Pando at --server, which must be new, with no account or app, to the cluster that minted the join token (pando cluster tokens create). The Pando checks the cluster's certificate authority against the token, joins, and restarts into the cluster. It also needs the setup_token that Pando printed to its log at startup.
Each token is read from PANDO_JOIN_TOKEN and PANDO_SETUP_TOKEN, or asked for without echoing, or read from standard input one per line, join token first.
Flags
| Flag | Default | Description |
|---|---|---|
--name string | this host's name in the cluster (default: the machine's hostname) | |
--server string | Pando server URL (defaults to the one you logged in to) | |
--setup-token string | the setup token from the joining Pando's log (setup_token); prefer PANDO_SETUP_TOKEN or the prompt |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando login
Sign in and store a token for this machine
Opens Pando in your browser, where you sign in however your account signs in — a password, two-factor authentication, or your organization's identity provider — and approve this CLI. The CLI then stores a token that acts as you and holds nothing you do not. pando mcp uses the same token.
On a machine with no browser, such as over SSH, --no-browser prints the address to open on another computer and asks for the code shown there.
--username signs in with a username and password in the terminal instead.
Flags
| Flag | Default | Description |
|---|---|---|
--no-browser | print the address to open on another computer, and paste the code it shows | |
--server string | Pando server URL (defaults to the one you logged in to) | |
--username string | sign in with this username and a password instead of a browser |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando logs
Read an app's logs
Read an app's logs.
An app made of several parts — a web service, a worker, a database it brought with it — has a log per part. Without --workload this is the primary one, which is the part the app's address resolves to. pando app status <app> lists the names.
Flags
| Flag | Default | Description |
|---|---|---|
-f, --follow | keep the connection open and print new lines | |
--server string | Pando server URL (defaults to the one you logged in to) | |
-n, --tail int | 0 | how many of the most recent lines to print, at most 5000 (default 200; with --follow, the recent lines Pando holds) |
-w, --workload string | which part of the app to read (default: the primary one) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando mcp
Run an MCP server over stdio, for agents
Exposes Pando's API as MCP tools, using the token from pando login.
An agent is a principal like any other: nothing here bypasses authorization, and every action lands in the audit log under the token's owner. The most dangerous actions — running commands in apps, reading secret values, changing who has access — are refused by host policy for tokens by default, and are not offered as tools.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando migrate
Apply pending database migrations and exit
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando plan
Show what a deploy would do, without doing it
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando restart
Restart Pando, loading its adapters and configuration file again
Restart Pando. Requests in flight finish first, and apps behind Pando are unreachable for the seconds it takes. Adapters and the configuration file are read again; environment variables are not.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) | |
--wait duration | 1m30s | how long to wait for Pando to come back; 0 returns at once |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando rollback
Roll an app back to an earlier spec
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) | |
--to int | 0 | spec revision to roll back to (defaults to the previous one) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando self-update
Replace this pando CLI with the latest release, after checking its signature
Downloads the release for this platform, checks the release's checksums.txt against its signature from Pando's release workflow and the archive against checksums.txt, and replaces this binary. A CLI installed with Homebrew or a Linux package is upgraded by that package manager instead, and this prints its command.
Flags
| Flag | Default | Description |
|---|---|---|
--prerelease | consider release candidates when choosing the latest |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando serve
Run the Pando server
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando updates
Show whether a newer Pando is released, what changed, and how to upgrade
Shows the version the server runs, the latest release on the update channel, and the changelog of every version in between, with security fixes and breaking changes marked. Then the command that upgrades the server. The check is host policy: disable_update_check turns it off and update_channel chooses stable or prerelease (pando policy set). Pando checks at startup and every six hours; --check asks GitHub now.
Flags
| Flag | Default | Description |
|---|---|---|
--check | Ask GitHub now rather than showing the last check | |
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando version
Print the version
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando adapter
pando adapter
See and configure this installation's adapters
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando adapter add
Add an adapter, or change one, by kind
Adds an adapter of a kind from pando adapter kinds. Ordinary settings go in --set KEY=VALUE; a secret setting such as an API key is asked for without echoing it, so it never lands in your shell history (piped in when stdin is not a terminal). Adding with an existing --id changes that adapter. Pando loads adapters at startup: restart it afterwards, except after a source connection or an image registry, which are used from the moment they are saved.
With a kind named, --help lists its settings and their defaults, the advanced ones under their own heading. Advanced settings take --set like any other.
pando adapter add ai/anthropic --set model=claude-sonnet-5
Flags
| Flag | Default | Description |
|---|---|---|
--default | make it the default adapter of its category, in place of the current one (default: only when the category has none) | |
--disabled | save it turned off: Pando keeps its settings and does not use it. A secret left empty keeps the stored one | |
--id string | the adapter's ID (default: the kind's usual prefix and name, e.g. ai_anthropic) | |
--name string | what the console calls it (default: the kind's name) | |
--preset string | a known provider's settings to start from, by ID, as pando adapter kinds lists them; at a terminal, asked when not given | |
--set stringArray | a setting, KEY=VALUE; repeat for more |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando adapter kinds
Show the kinds of adapter this build can run, and their settings
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando adapter list
Show the adapters configured here
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando admin
pando admin
Administer this installation from the host
Commands that work against the database directly, for when nobody can sign in.
Running these needs shell access on the host and the configuration that names the database. That is the whole of the authorization, and it is the same access that could change the row by hand.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando admin enable-password-sign-in
Turn password sign-in back on when no identity provider works
Clears disable_password_sign_in in host policy, so local accounts can sign in with a password again.
For when password sign-in is off and nobody can sign in through an identity provider. Follow it with pando admin reset-password if you also need a password for an account.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando admin reset-password
Set a local account's password when nobody can sign in
Sets a new password for a local account, ends every session it has, revokes its API tokens, and lifts any limit its wrong passwords put on signing in.
The account must change the password again at its next sign-in: this hands a way back in to somebody, which is not the same as choosing their credential.
Accounts that sign in through an external identity provider are changed where they live, not here.
Flags
| Flag | Default | Description |
|---|---|---|
--password string | the new password; prompts on a terminal, and generates one otherwise |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando admin reset-two-factor
Remove a local account's two-factor authentication when nobody can sign in
Removes a local account's authenticator and recovery codes, ends every session it has, revokes its API tokens, and lifts any limit its wrong codes put on signing in. It then signs in with its password alone, and sets two-factor authentication up again there if host policy requires it.
Accounts that sign in through an external identity provider get their second factor from the provider, not here.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando admin setup-token
Make a new setup token for an installation that is not set up yet
Prints a new one-time setup token and retires the one Pando printed to its log at startup.
A new installation is set up in the console, and the setup form asks for this token, so that reaching the console first is not enough to become its administrator. Refused once the installation has an account.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
pando ai
pando ai
Assign AI functions to adapters, and ask the AI functions
Each AI function is handled by at most one AI adapter, optionally on a model of its own. A function with no adapter is off. The draft commands propose and never apply: create what they draft with pando group and pando policy, or in the console.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando ai ask
Ask how to do something, answered from the API, CLI and MCP reference
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando ai assign
Have an AI adapter handle a function, optionally on its own model
Refused while another adapter handles the function: unassign it there first. --model needs an adapter that can choose its model.
Flags
| Flag | Default | Description |
|---|---|---|
--model string | a model for this function only; empty uses the adapter's own |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando ai audit
Search the audit log with a question, and summarize what matched
Prints the summary and the filters it used. Run pando audit with those filters to see the records.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando ai draft-access
Draft a custom role and a group from a description
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando ai draft-policy
Propose host policy from a description
Prints the proposed document; save it with pando policy set.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando ai functions
List each AI function, the adapter that handles it, and on which model
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando ai unassign
Turn an AI function off
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app
pando app
Work with apps
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando app addpando app addresspando app auto-deploypando app deletepando app detectionpando app favoritepando app iconpando app idlepando app image-updatepando app listpando app noticespando app registry-credentialpando app renamepando app restartpando app showpando app specpando app startpando app statuspando app stoppando app unfavoritepando app usagepando app webhook-route
pando app add
Create an app from a repository, or from an image that is already built
Flags
| Flag | Default | Description |
|---|---|---|
--connection string | read a private repository with this source connection (default: the one covering its address, from pando source list) | |
--ecr-access-key-id string | pull from AWS ECR with this access key; the secret access key is read from the terminal | |
--ecr-region string | with --ecr-access-key-id, the region (default: read from the registry host) | |
--image string | run this prebuilt image instead of building a repository, such as ghcr.io/acme/web:1.4 | |
--name string | name for the app (defaults to the repository or image name) | |
--registry-username string | pull a private image as this user; the password or token is read from the terminal | |
--timeout duration | 10m0s | with --wait, how long to wait before giving up |
--wait | wait for detection to finish, as pando app detection --wait does |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app address
Show or change where an app is reached
With no flags, shows the app's routing and address, where it moves at the next deploy if a change is saved, and the routing adapters it could use with the domains each serves.
With flags, changes it. A flag left out keeps what the app has, or takes the adapter's default when moving to another adapter. --domain puts the app in another of the adapter's domains, such as a second Cloudflare zone: alone it makes <app>.<domain>, and with --hostname docs it makes docs.<domain>.
A change is saved as a spec revision and takes effect at the next deploy, when the old address stops working. Without --confirm nothing is changed and Pando says what would move.
Examples
Flags
| Flag | Default | Description |
|---|---|---|
--adapter string | the routing adapter, such as rte_cloudflare | |
--confirm | make the change; without it Pando only says what would move | |
--domain string | with subdomain mode: which of the adapter's domains, such as trypando.ai | |
--hostname string | with subdomain mode: the hostname, or with --domain a single name such as docs | |
--mode string | subdomain, path or port | |
--path string | with path mode: the path, such as /team/notes |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app auto-deploy
Deploy an app automatically when its branch or releases change
Pando checks the app's repository every few minutes and deploys what it finds. Off by default. A change here is saved as a new configuration revision and takes effect at the app's next deploy.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app auto-deploy off
Turn automatic deploys off
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app auto-deploy set
Turn automatic deploys on, following a branch or new releases
With --trigger branch (the default), each new commit on the branch deploys. Without --branch, that is the branch the app was deployed from.
With --trigger release, each new release tag deploys. A release is a tag such as v1.2.3, or one matching --tag-pattern, a pattern such as release-* where * matches any characters.
Flags
| Flag | Default | Description |
|---|---|---|
--branch string | the branch to follow; empty follows the branch the app was deployed from | |
--tag-pattern string | which tags are releases, such as release-*; empty means tags like v1.2.3 | |
--trigger string | branch | what deploys: branch (each new commit) or release (each new release tag) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app auto-deploy show
Show the settings, the last check and the webhook
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app auto-deploy webhook-secret
Make the app a new webhook secret, and print it with the webhook URL
A webhook lets the git host tell Pando about a push or a release as it happens, instead of Pando finding out at its next check. It needs Pando to be reachable from the git host. Paste the URL and secret into the repository's webhook settings, with content type application/json. The secret is printed this once; making a new one replaces it.
Flags
| Flag | Default | Description |
|---|---|---|
--remove | remove the secret instead, which turns the webhook off |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app delete
Delete an app, keeping a final backup of its data
Deletes an app. Its storage is backed up first and the backup is kept until you discard it — not aged out.
If the backup fails the app is not deleted, because a failed backup means the data is not safe. Pass --discard-data to delete without one.
Flags
| Flag | Default | Description |
|---|---|---|
--discard-data | delete without keeping a backup of the app's storage |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app detection
Show how far detection has got, and what to do next
Shows where an app's detection stands: running and at which stage, or how it finished — ready, waiting on answers, blocked or failed — and what to do next. Questions are printed exactly as Pando wrote them, to paste into whatever wrote the app.
With --wait, waits for detection to finish, printing each stage as it is reached. It then exits 0 when the app is ready to accept, 2 when there are questions to answer, and 1 when detection failed or was blocked.
Flags
| Flag | Default | Description |
|---|---|---|
--timeout duration | 10m0s | with --wait, how long to wait before giving up |
--wait | wait for detection to finish, and exit non-zero unless it is ready |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app detection accept
Accept detection's proposal as the app's configuration
Accepts what detection worked out and pins it as the app's configuration. This does not deploy: pando deploy <app> does that.
--env and --secret set variables in the same step; a secret is stored by the install's secrets adapter. --optional names a dependency the app runs without.
Accepting over an app that is already configured replaces how it is built and what it runs, and needs --confirm. Variables you set, how each dependency is filled, and storage you added are carried over. pando app detection diff <app> shows what would change.
Flags
| Flag | Default | Description |
|---|---|---|
--confirm | replace the configuration of an app that is already configured | |
--env stringArray | set a variable, KEY=VALUE (repeatable) | |
--hostname string | the address to serve the app at, where its routing gives it a hostname of its own | |
--optional stringArray | a dependency the app runs without, by its key (repeatable) | |
--secret stringArray | set a secret variable, KEY=VALUE (repeatable) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app detection answer
Answer one of detection's questions
Answers a question detection asked. The key is the one printed with the question by pando app detection <app>.
An answer that changes what is built, such as a build argument, has Pando build and scan the image again, so the plan shows the score of what will run. This waits for that, printing each stage, then exits as pando app detection --wait does: 0 when the app is ready to accept, 2 when there are questions left, and 1 when detection failed or was blocked.
Flags
| Flag | Default | Description |
|---|---|---|
--timeout duration | 10m0s | how long to wait for a rebuild before giving up |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app detection diff
Show what accepting the proposal would change
Compares detection's proposal with the configuration the app is pinned to, and lists each change with what applying it takes: benign, restart, rebuild or destructive. A destructive change loses data, such as removing a volume.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app detection rerun
Run detection again, against the source as it is now
Works out again how to run an app, from its source as it is now: after the repository changed, after uploading new files, or after fixing what blocked it. Nothing about the app changes until the new proposal is accepted.
With --wait, waits for it and exits as pando app detection --wait does.
Flags
| Flag | Default | Description |
|---|---|---|
--timeout duration | 10m0s | with --wait, how long to wait before giving up |
--wait | wait for detection to finish, and exit non-zero unless it is ready |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app detection revise
Tell the AI adapter what is wrong with the plan
Tells the install's AI adapter what is wrong with the plan, in your own words, for example "The app serves on port 8080." It checks the repository, changes what it can show, and replies. Prints the reply, what it changed and what Pando refused, then where detection stands. Needs an AI adapter.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app favorite
Pin an app to the top of your launcher
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app icon
Set the image on an app's launcher tile
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app icon clear
Remove an app's image, so its tile shows the map generated for it
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app icon set
Set an app's image from a PNG, JPEG, WebP or GIF file
Sets the image shown on the app's tile in everyone's launcher.
PNG, JPEG, WebP or GIF, at most 256 KB. SVG is not accepted. A square image a few hundred pixels across is plenty.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app idle
Show or set when Pando stops or deletes an app nobody uses
With no flags, shows the app's idle settings: its own, the installation's, the ones in force, when it was last used, and when Pando would stop or delete it.
--stop-days and --delete-days take a number of days, never, or default for the installation's setting. A flag left out keeps what the app has. Both count from the app's last use, deploy or start, so deleting has to come later than stopping. These are app settings, not spec: nothing is deployed.
Flags
| Flag | Default | Description |
|---|---|---|
--delete-days string | days without use before Pando deletes the app: a number, never, or default | |
--stop-days string | days without use before Pando stops the app: a number, never, or default |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app image-update
Check whether an image app's tag names a newer build, and upgrade to it
Asks the registry which build the app's image tag names now and compares it with the build the app runs. Nothing changes unless --upgrade is given, which writes a revision running that build and deploys it.
Flags
| Flag | Default | Description |
|---|---|---|
--upgrade | deploy the newer build when there is one |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app list
List the apps you can manage
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app notices
See what an app asks of you, and ignore a notice until it changes
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app notices ignore
Ignore a notice until what it says changes
Hides a notice from you until what it says changes. Only you: everyone else still sees it. A deploy the notice warned about is still refused for the same reason.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app notices list
List an app's notices
Lists what the app's Overview asks of somebody: a configuration not yet deployed, variables with no value, a backup that was not taken, a security score below this installation's minimum, the spec's warnings. Notices you have ignored are left out unless --all is given.
Flags
| Flag | Default | Description |
|---|---|---|
--all | include notices you have ignored |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app notices restore
Show a notice you ignored again
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app registry-credential
Manage the credential an app's private image is pulled with
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app registry-credential remove
Remove the credential, so the image is pulled anonymously
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app registry-credential set
Set the credential, replacing any the app had
Flags
| Flag | Default | Description |
|---|---|---|
--ecr-access-key-id string | pull from AWS ECR with this access key; the secret access key is read from the terminal | |
--ecr-region string | with --ecr-access-key-id, the region (default: read from the registry host) | |
--registry-username string | pull a private image as this user; the password or token is read from the terminal |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app registry-credential show
Say whether the app has a credential, and of which kind, without its secret
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app rename
Change an app's display name
Changes the name shown for the app in the console and on everyone's launcher.
The app's ID and address do not change.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app restart
Restart an app's workloads, changing nothing
Restarts the workloads in place.
Nothing is rebuilt and nothing is re-read: this is the same version, started again. To ship a change, deploy.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app show
Show an app
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app spec
Read and write an app's spec revisions
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app spec create
Write a new spec revision from a JSON file
Writes a whole spec, read as JSON from --file or stdin, as a new revision. pando export <app> prints the pinned spec to start from. This does not pin or deploy: pando app spec pin <app> <revision> and pando deploy <app> do. --dry-run checks the spec and writes nothing.
Flags
| Flag | Default | Description |
|---|---|---|
--dry-run | check the spec without writing it | |
-f, --file string | the spec as a JSON file (default: read stdin) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app spec diff
Compare two spec revisions
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app spec list
List spec revisions, and which one is pinned
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app spec pin
Pin a spec revision as what the app runs
Pins a revision: what the app converges to, and what the next deploy ships. This does not deploy: pando deploy <app> does that.
On an app that has been deployed, pinning changes what it runs, so it needs app.deploy, and a revision whose deploy needs approval is refused: deploy it instead.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app spec show
Print one spec revision
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app start
Start an app that was stopped
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app status
What each part of an app is doing right now
What each part of an app is doing right now.
An app can be made of several parts, and "degraded" is the app's answer for all of them together. This is the per-part answer: which are running, which are restarting and how many times, and which health check is failing. The names are also what pando logs --workload takes.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app stop
Stop an app without deleting it
Stops an app.
Nothing is removed: its storage, its configuration and its address are kept, and pando app start brings back the version that was running. A stopped app stays stopped — it is the app's desired state, not a one-off act, so it survives Pando itself restarting.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app unfavorite
Unpin an app from your launcher
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app usage
What each part of an app is using right now: CPU, memory and disk
What each part of an app is using right now, beside its limits.
CPU is in cores; a part with no limit may use what the host has. A reading, not a history.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app webhook-route
Let verified webhook deliveries reach one path of an app
A route lets a delivery with no Pando credential through to one method and path, once it is verified. The rest of a private app stays private. A change is saved as a new configuration revision and takes effect at the app's next deploy.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando app webhook-route add
Add a route, and print its secret if Pando generated one
With --verify hmac_sha256 (the default), --header holds the hex HMAC-SHA256 of the body, after any --prefix. With --verify header, --header holds the secret itself.
Without --paste-secret, Pando generates one and prints it this once.
Flags
| Flag | Default | Description |
|---|---|---|
--allow-repeats | turn the replay check off, for a sender that repeats identical bodies | |
--header stringRequired | the header holding the signature or the secret | |
--method string | POST | POST, PUT or PATCH |
--paste-secret | ask for the secret the provider issued instead of generating one | |
--prefix string | what comes before the signature, such as sha256= | |
--verify string | hmac_sha256 | hmac_sha256 or header |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app webhook-route list
List an app's webhook routes
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app webhook-route remove
Remove a route
The route's secret goes at once, so deliveries are refused from now on.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando app webhook-route secret
Replace a route's secret, and print it if Pando generated it
The old secret stops working at once.
Flags
| Flag | Default | Description |
|---|---|---|
--paste-secret | ask for the secret the provider issued instead of generating one |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando approvals
pando approvals
See and decide deploys waiting for approval
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando approvals approve
Approve a deploy waiting for approval; the last approval it needs starts it
Flags
| Flag | Default | Description |
|---|---|---|
--comment string | a note recorded with the decision |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando approvals list
Deploys waiting for approval on the apps you can see
Flags
| Flag | Default | Description |
|---|---|---|
--decidable | Only the deploys you may approve or reject |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando approvals reject
Reject a deploy waiting for approval, which ends the request
Flags
| Flag | Default | Description |
|---|---|---|
--comment string | a note recorded with the decision |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando audit
pando audit
Read the audit log
Lists what was done on this installation, newest first. The filters combine.
--since and --until take a time (2026-09-21T09:00:00Z) or a duration back from now (24h, 30m), so --since 24h is the last day.
Flags
| Flag | Default | Description |
|---|---|---|
--action string | actions starting with this, e.g. app. or grant.delete | |
--actor string | who did it: a user or token ID, or system, reconciler or detection | |
--actor-kind string | what kind of actor: user, token, system or anonymous | |
--app string | events on this app | |
--before string | the page before this cursor, as printed after a full page | |
--involving string | events where this ID is the actor or the target, e.g. a user ID | |
--limit int | 0 | how many events (default 100, at most 500) |
--outcome string | how it ended: success, denied or failed | |
--search string | text in the action, the actor, the target or the app | |
--server string | Pando server URL (defaults to the one you logged in to) | |
--since string | from this time, or this long ago (24h) | |
--target string | the ID of the thing it was done to | |
--target-kind string | what kind of thing it was done to, e.g. user, role, app | |
--until string | up to this time, or this long ago |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando audit archives
List the months of the audit log archived past retention
Months older than host policy's audit_retention_months are archived, checked, and removed from the live log, so pando audit no longer finds them. This lists the archives; download one with pando audit archives download <id>.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando audit archives download
Download one archived month, checking it against its digest
Saves the archive — gzipped JSON lines, one audit event per line — to --output, or to audit-<month>.jsonl.gz in the current directory. The SHA-256 is checked against the archive's manifest as it arrives, and a file that does not match is removed rather than kept.
Flags
| Flag | Default | Description |
|---|---|---|
-o, --output string | where to save it; - writes to standard output |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando audit export
Export a range of the audit log as gzipped JSON lines
Writes the audit events between --since and --until, in commit order, as gzipped JSON lines: to --output, or to standard output when that is not a terminal. --since and --until take a time (2026-09-21T09:00:00Z) or a duration back from now (24h); left out, the range is open at that end.
The export covers the live log only. When the range reaches back before it, a note on standard error says where the live log starts; pando audit archives has the months before that.
Examples
Flags
| Flag | Default | Description |
|---|---|---|
--action stringArray | only actions starting with this, e.g. grant.; repeatable | |
--exclude stringArray | leave out actions starting with this; repeatable | |
--format string | native (the archive's line format, the default) or ocsf | |
-o, --output string | the file to write; - or left out writes to standard output | |
--since string | from this time, or this long ago (720h) | |
--until string | up to this time, or this long ago |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando audit sinks
List where the audit log is sent, and how far each destination has got
An audit sink is a destination, such as a SIEM's syslog or HTTPS collector, that Pando pushes the audit log to as it is written. This lists each one with what it sends where, the events waiting to go (BACKLOG), when it last delivered, and its last error. Below the table, each sink's line says exactly what leaves the installation, and any range of events it missed.
Audit sinks are adapters: add one with pando adapter add audit_sink/<kind>.
Examples
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando audit tail
Print the audit log in commit order, one JSON event per line
Prints audit events oldest first, one JSON object per line, from --after: a cursor a previous run printed, or now for only what happens from here on. Without --after it starts at the oldest event in the live log. Without --follow it stops once it has caught up; with --follow it keeps waiting for new events until interrupted.
When it stops, for any reason, it prints the last cursor to standard error as cursor: c1.…. Pass that back as --after to carry on where it left off. Delivery is at least once: an event can be printed again after a resume, and its id is the key to drop it by.
Examples
Flags
| Flag | Default | Description |
|---|---|---|
--action stringArray | only actions starting with this, e.g. grant.; repeatable | |
--after string | start after this cursor, as a previous run printed it, or now | |
--exclude stringArray | leave out actions starting with this; repeatable | |
-f, --follow | keep waiting for new events until interrupted | |
--format string | native (the archive's line format, the default) or ocsf | |
--limit int | 0 | events per request (default 500, at most 1000) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando backup
pando backup
Back up and restore this installation
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando backup create
Take a backup of the whole installation
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando backup list
List backups
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando backup restore
Replace this installation from a backup
Flags
| Flag | Default | Description |
|---|---|---|
--yes | skip the typed confirmation (for scripts that already have one) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando backup verify
Check a backup is complete, without restoring it
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando cluster
pando cluster
The hosts this installation runs on, and joining new ones
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando cluster hosts
The cluster's hosts
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando cluster hosts list
List the cluster's hosts
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando cluster hosts lost
Say a host is gone, and start its apps' standbys
Marks the host lost and starts the standby of each app homed on it. With three or more hosts Pando does this itself when most of them cannot reach the host; with fewer it never does. Refused while the host answers. A failed app is not failed over.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando cluster hosts remove
Remove a host from the cluster
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando cluster tokens
Tokens new hosts join with
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
Commands
pando cluster tokens create
Create a join token. It is shown once
Flags
| Flag | Default | Description |
|---|---|---|
--address string | The installation's address the joining host reaches (default this server's advertise address) | |
--expires-hours int | 0 | How many hours it lasts (default 24) |
--role stringSlice | control, app, or both (repeat or comma-separate). Default: both while the cluster has fewer than three hosts, then app | |
--uses int | 0 | How many hosts may join with it (default 1) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando cluster tokens list
List join tokens
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando cluster tokens revoke
Revoke a join token
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando grant
pando grant
Share an app, or stop sharing it
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando grant add
Give someone access to an app
Flags
| Flag | Default | Description |
|---|---|---|
--anyone | share with anyone on the internet, without signing in | |
--group string | group ID to share with | |
--passcode string | with --anyone: only those who enter this passcode | |
--plane string | data | data (use the app) or control (manage it) |
--role string | role ID, for control-plane grants | |
--user string | user ID to share with |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando grant list
Show who an app is shared with
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando grant passcode
Change the passcode on an app shared with everyone, or remove it
Sets a new passcode on the app's grant to everyone; everyone let in by the old one is asked again. With no passcode, removes it: the app is then open to anyone.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando grant remove
Take a grant away
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando grant role
Change the role a grant for managing an app carries
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group
pando group
Work with groups and what they hold
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando group add-member
Add an account to a group; it then holds what the group holds
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group app-limit
Show or set how many apps each person in a group may own
With only the group, shows its limit. With a number, sets it; 0 is unlimited. --clear removes it. Somebody in several groups gets the most generous, and a limit on their own account replaces every group's.
Flags
| Flag | Default | Description |
|---|---|---|
--clear | remove the group's own limit |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group apps
Show the apps a group has access to, and its role on each
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group list
Show every group, how many people are in it, and its installation role
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group remove-member
Remove an account from a group
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group rename
Rename a group made in Pando
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando group role
Give a group an installation role, or take it away with --clear
Flags
| Flag | Default | Description |
|---|---|---|
--clear | take the group's installation role away |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando host-agent
pando host-agent
The forwarding agent on each host of a multi-host Docker install
Each app host of a multi-host Docker install runs a forwarding agent, which carries connections from Pando's proxy, and only from it, to app containers on that host. The Docker hosts runtime starts and replaces the agents itself; the one command here an operator runs is new-authority.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando identity-provider
pando identity-provider
Connect identity providers: OpenID Connect, SAML and SCIM
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando identity-provider add
Add an identity provider
Adds an identity provider, turned off until you test it and turn it on. --preset fills in what a known provider needs (okta, entra, google, keycloak, authentik); --set KEY=VALUE sets the rest. A client secret is asked for without echoing it.
pando idp add oidc --preset okta --name Okta --set issuer=https://example.okta.com --set client_id=0oa… pando idp add saml --preset entra --name Entra --set idp_metadata_url=https://login.microsoftonline.com/…
Flags
| Flag | Default | Description |
|---|---|---|
--enable | turn it on now, without testing it first | |
--jit | create an account at someone's first sign-in | |
--link-by-email | link a first sign-in to an existing account by verified email | |
--name string | what the sign-in page calls it, such as Okta | |
--preset string | a known provider's settings: okta, entra, google, keycloak, authentik | |
--set stringArray | a setting, KEY=VALUE; repeat for more |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider check
Check that Pando can reach the provider
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider link
Link a provider's identity to an account
Whoever signs in with that identity signs in to that account. Nothing is merged: with --replace, an account the identity already reaches is kept, suspended, as an alias. When that account is the last active owner of an app, --confirm is needed too.
Flags
| Flag | Default | Description |
|---|---|---|
--confirm | go ahead when the account it moves from is the last active owner of an app | |
--replace | move the identity here if it already signs in to another account |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider link-group
Make a provider's group count as members of a Pando group
Flags
| Flag | Default | Description |
|---|---|---|
--remove | remove the link instead |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider list
Show the identity providers, what to register with each, and how soon each can revoke
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider remove
Remove an identity provider nobody has signed in through
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider scim-token
Turn SCIM on for a provider and print its token, or replace it
Prints the SCIM base URL and a new token. The token is shown once; running this again replaces it.
Flags
| Flag | Default | Description |
|---|---|---|
--off | turn SCIM off instead |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider set
Change an identity provider
Changes a provider. --set KEY=VALUE changes one setting and keeps the rest; --secret asks for a new client secret; --enable and --disable turn it on and off.
Flags
| Flag | Default | Description |
|---|---|---|
--disable | turn it off | |
--enable | turn it on | |
--jit string | true or false: create an account at first sign-in | |
--link-by-email string | true or false: link by verified email | |
--name string | a new name | |
--secret | ask for a new client secret | |
--set stringArray | a setting, KEY=VALUE; repeat for more |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider test
Print the address that starts a test sign-in in your browser
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando identity-provider unlink
Unlink a provider's identity from an account
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando instructions
pando instructions
Read and set the instructions every agent is given
Agents connecting over MCP are given Pando's guidance for building apps here, then the company's own instructions, which win where the two differ.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando instructions set
Replace the company's instructions with text read from stdin
Reads the company's instructions as text on stdin, at most 32 KB, and replaces the current ones. Empty input clears them. Needs install.policy.manage.
pando instructions set < instructions.md
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando instructions show
Print the instructions agents are given
Flags
| Flag | Default | Description |
|---|---|---|
--company | print only the company's instructions |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notifications
pando notifications
Choose which of Pando's notifications reach you, and where
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando notifications list
Your notifications, newest first
Flags
| Flag | Default | Description |
|---|---|---|
--unread | Only the ones you have not read |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notifications preferences
Show your notification preferences, or change them with --set
Show which of Pando's own notifications reach you on each channel.
--set kind:channel=on|off changes one, and may be repeated, for example:
pando notifications preferences --set app_shared:ntf_smtp=on --set deploy_approval:ntf_console=off
Flags
| Flag | Default | Description |
|---|---|---|
--set stringArray | kind:channel=on|off, repeatable |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notifications read
Mark a notification read, or every one with --all
Flags
| Flag | Default | Description |
|---|---|---|
--all | Mark every notification read |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notifications unread
How many of your notifications are unread
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notify
pando notify
Connect notification adapters such as Slack, and list their channels
A Slack adapter posts as Pando's own Slack app, which connecting creates. Add the adapter with pando adapter add notify/slack, connect it with pando notify connect, then subscribe with pando subscriptions create --adapter <id> --channel <channel>.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando notify channels
List the channels a subscription to the adapter can post to
Flags
| Flag | Default | Description |
|---|---|---|
--query string | Only channels whose names contain this |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notify connect
Connect a notification adapter, such as Slack, to its provider
Asks for a Slack configuration token: in Slack's app settings, under Your App Configuration Tokens, choose Generate Token. Pando uses it once to create its app, and prints Slack's approval page to open in a browser signed in to Pando. Slack returns only to an https address; without one, --manual prints a link that creates the app in Slack, and --bot-token asks for the bot token it shows once installed. A token is read from the terminal, never from the command line.
Flags
| Flag | Default | Description |
|---|---|---|
--bot-token | Ask for the bot token of an app created with --manual | |
--manual | Print a link that creates the app in Slack, for a Pando without an https address |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando notify list
Show the notification adapters and whether each can send
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando policy
pando policy
Read and set host policy
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando policy set
Replace the policy with a document read from stdin
Reads a whole policy document as JSON on stdin and replaces the current one. Replaces rather than merges: a merge would make it impossible to remove a rule.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando policy show
Print the installation's policy
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando role
pando role
Work with roles and who holds them
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando role edit
Rename a custom role, or replace its permissions
Flags
| Flag | Default | Description |
|---|---|---|
--name string | the role's new name | |
--verbs stringSlice | every permission the role carries, comma-separated |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando role holders
Show the groups and accounts holding a role, directly or through a group
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando secret
pando secret
Manage an app's secrets
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando secret delete
Remove a secret
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando secret list
List which secrets are set, without their values
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando secret set
Set a secret value, read from the terminal
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando section
pando section
Group the apps in your launcher into sections
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando section add
Move an app into a section
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando section create
Make a section
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando section delete
Delete a section. Its apps go back to Your apps
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando section list
The apps you can open, by section
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando section remove
Move an app out of a section, back to Your apps
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando section rename
Rename a section
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando slot
pando slot
Fill an app's service slots
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando slot set
Say how a slot is filled
Flags
| Flag | Default | Description |
|---|---|---|
--bind string | bind to an existing service | |
--literal string | use this value directly | |
--provision | let Pando create the service |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando source
pando source
See and authorize the connections private repositories are read with
A source connection is how Pando reads private repositories on GitHub, GitLab, Azure DevOps, Bitbucket, Gitea or any git host. Add one with pando adapter add source/<kind> — pando adapter kinds lists the kinds — and every app whose repository it covers is read with it.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando source branches
List a repository's branches through a connection
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando source list
Show the source connections and whether each is ready
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando source remove
Disconnect a source connection and delete its stored credential
Apps read with the connection keep running. Their next deploy fails, saying the connection is gone, until another connection covers their repository.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando source repos
List the repositories a connection can read
Flags
| Flag | Default | Description |
|---|---|---|
--limit int | 0 | at most this many (default 100) |
--query string | only repositories whose name contains this |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions
pando subscriptions
Send Pando's events to a webhook, Slack, Teams, Discord, email or ntfy
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando subscriptions create
Subscribe to events on one app, or install-wide
Subscribe to events and send them to a webhook (--url) or through a notification adapter (--adapter).
--events takes event names, prefixes such as deploy.*, or * for everything; pando events lists them. Without --app the subscription is install-wide, which needs install.events.manage.
A webhook's signing key is printed once. Keep it: Pando signs every delivery with it and cannot show it again.
Flags
| Flag | Default | Description |
|---|---|---|
--adapter string | Send each event through this notification adapter | |
--app string | The app's ID; omit for install-wide | |
--channel string | The channel it posts to, for an adapter such as Slack; pando notify channels lists them | |
--content-type string | The body's content type; application/json by default | |
--description string | What this subscription is for | |
--events stringSliceRequired | Events to send: names, prefixes such as deploy.*, or * | |
--header stringArray | A header to send, "Name: value", repeatable. Values are stored encrypted and never shown again | |
--method string | The webhook's HTTP method: POST (the default), PUT or PATCH | |
--template-file string | A file holding the body template, in Go template syntax; docs/events.md says what it is given | |
--url string | Post each event to this webhook URL |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions delete
Delete a subscription and its delivery log
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions deliveries
A subscription's recent deliveries
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions delivery
One delivery and every attempt at it
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions list
Your subscriptions, or everybody's with --everyone
Flags
| Flag | Default | Description |
|---|---|---|
--app string | Only subscriptions about this app (its ID) | |
--everyone | Every person's subscriptions (needs install.events.manage) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions redeliver
Send a delivery again now
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions rotate-key
Replace a webhook's signing key and print the new one, once
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions show
One subscription
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions test
Send a test event to one subscription
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando subscriptions update
Change a subscription, or turn it on or off
Flags
| Flag | Default | Description |
|---|---|---|
--adapter string | A new notification adapter | |
--channel string | A new channel, for an adapter such as Slack | |
--content-type string | The body's content type; application/json by default | |
--description string | A new description | |
--disable | Turn it off | |
--enable | Turn it on, clearing its record of failures | |
--events stringSlice | Replace the events it sends | |
--header stringArray | A header to send, "Name: value", repeatable. Values are stored encrypted and never shown again | |
--method string | The webhook's HTTP method: POST (the default), PUT or PATCH | |
--template-file string | A file holding the body template, in Go template syntax; docs/events.md says what it is given | |
--url string | A new webhook URL |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando token
pando token
Manage your API tokens
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando token list
List your tokens
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando token revoke
Revoke a token
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando two-factor
pando two-factor
Set up or change two-factor authentication on your own local account
Two-factor authentication asks for a code from an authenticator app after your password. Accounts from an identity provider set it up at the provider instead.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando two-factor disable
Turn off two-factor authentication
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando two-factor recovery-codes
Replace your recovery codes with new ones
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando two-factor setup
Set up an authenticator app, or replace the one in use
Shows a QR code to scan with an authenticator app, asks for the code it then shows, and prints recovery codes. An authenticator already in use keeps working until the new one is confirmed.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando two-factor status
Show whether two-factor authentication is on
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando upgrade
pando upgrade
Upgrade the Pando server in place to a newer release
Upgrades the server to the latest release, or to the version given. Pando verifies the image's signature, takes a full backup (or not, with --skip-backup), and starts a helper that replaces Pando's container and puts the previous version back if the new one does not start. Every app is unreachable while Pando restarts. Needs install.upgrade, and upgrade_in_place on in host policy. pando upgrade last shows how the last one went.
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) | |
--skip-backup | upgrade without taking a full backup first (recorded in the audit log) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando upgrade last
Show how the most recent in-place upgrade went
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user
pando user
Work with accounts
Flags
| Flag | Default | Description |
|---|---|---|
--server string | Pando server URL (defaults to the one you logged in to) |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file |
Commands
pando user app-limit
Show how many apps an account may own and where that comes from, or set the account's own limit
With only the account, shows the limit in force, where it comes from (the account, a group, or host policy) and how many apps the account owns.
With a number, sets the account's own limit, which applies whatever its groups say. 0 is unlimited. --clear removes it, so its groups' or the installation's applies.
Flags
| Flag | Default | Description |
|---|---|---|
--clear | remove the user's own limit |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user apps
Show the apps an account has access to, and its role on each
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user create
Create a local account with a generated password
Creates a local account and prints the password Pando generated for it, once. Give it to the account holder yourself; by default they choose their own at first sign-in.
Flags
| Flag | Default | Description |
|---|---|---|
--email string | the account's email address | |
--name string | the name shown in the console and the audit log | |
--no-change-required | do not require a new password at first sign-in |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user get
Show one account, and each installation role it holds, directly or through a group
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user list
Show every account, and each installation role it holds, directly or through a group
Flags
| Flag | Default | Description |
|---|---|---|
--q string | only accounts whose username, name or email contains this |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user reset-password
Give an account a new generated password
Sets a new generated password on a local account, ends every session it holds, and prints the password once. By default its holder chooses their own at the next sign-in.
Flags
| Flag | Default | Description |
|---|---|---|
--no-change-required | do not require a new password at the next sign-in |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user reset-two-factor
Remove an account's two-factor authentication
Removes a local account's authenticator and recovery codes and ends every session it holds, for someone who has lost both. They sign in with their password alone, and set it up again there if host policy requires it.
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |
pando user update
Change an account's username, name or email
Flags
| Flag | Default | Description |
|---|---|---|
--email string | the account's email address | |
--name string | the name shown in the console and the audit log | |
--username string | the name the account signs in with |
Global flags
| Flag | Default | Description |
|---|---|---|
--config string | path to a config file | |
--server string | Pando server URL (defaults to the one you logged in to) |