Commands

Every management command.


Run a command with ssh cd.pico.sh <command>. help lists them, and help <command> shows one:

1ssh cd.pico.sh help
2ssh cd.pico.sh help vars

Projects #

Command
projects List your projects, then the ones shared with you
create <project> Create a project, ready for its first push
status [project] Show a project's branch, variables, and containers
endpoints List the URLs and published ports of your running apps, across your projects. Ports show on your public IPv6 address
logs [project] [service...] [-f] Show a project's logs; -f follows them
redeploy [project] [--force] Deploy a project again without a push. If you've changed its checkout by hand, it's skipped unless you pass --force, which discards those changes
branch [project] Show the branch a project deploys
branch set [project] <branch> Deploy another branch, now and on later pushes
compose [project] <args...> Run docker compose in a project
down [project] [--volumes] Remove a project's containers, and its volumes with --volumes. The repository, branch, and variables stay
delete [project] --confirm <project> Delete a project for good: its containers, volumes, repository, checkout, and variables

Environment variables #

Command
vars [project] List a project's variable names
vars set [project] KEY=VAL... Set variables, applied on the next deploy. Creates the project if it doesn't exist yet
vars unset [project] KEY... Unset variables, applied on the next deploy

See environment variables.

Upstreams #

Command
upstream [project] Show a project's upstream, deploy key, webhook, and last webhook deploy
upstream set <project> <url> Mirror a project from a git provider, deploying on its webhook. Creates the project if needed
upstream sync [project] Fetch a project's upstream and deploy it now
upstream unset [project] Stop mirroring a project. Its repository keeps what it fetched

See deploying from GitHub, GitLab, and Forgejo.

Sharing #

Command
share [project] [<user>... | --everyone] Let users clone a project and see its status, or show who can
unshare [project] <user>... | --everyone Stop sharing a project

See sharing projects.

Custom domains #

Command
domains List your custom domains
domains add <domain> Route a domain whose _picd TXT record names you
domains rm <domain> Stop routing a domain

See domains and HTTPS.

Account #

Command
whoami Show the account you're logged in as, whose projects you're acting on, and your role there
plan Show your plan's limits, and how many projects and custom domains you have
ipv6 Show your environment's public IPv6 address
restart Restart your environment when it's stuck, keeping your data. Ends your shells and restarts your apps
shutdown [--confirm [--delete]] Stop your environment and its apps until you next use them, keeping your data. Without --confirm it only says what it would do
home reset Reset your home directory to picd's latest default
help [command] Show the commands, or one command's

The project argument #

[project] defaults to the SSH user, so these are the same:

1ssh cd.pico.sh status web
2ssh web@cd.pico.sh status

Name another owner's project ~<owner>/<project>, quoted, such as status '~pico/pgs'. See sharing projects.

Shells #

Anything that isn't a command above runs in your environment. The SSH user picks where:

SSH user
<project> Run a command, or open a shell, in a project
c-<container> Run a command, or open a shell, in a container
l-<container> Follow a container's logs
a-<container> Attach to a container
Anything else Run a command, or open a shell, in your projects directory
~<owner>/<any of these> The same, in a team's environment

See shells and logs.