git push your docker-compose.yml and your containers are live.
Manage everything over SSH: shells, logs, exec, compose commands. No cloud console. No CLI SDK.
The Problem
You have a docker-compose.yml that works locally. To deploy it, you need an AWS
account, a k8s cluster, a Terraform config, or a platform that forces you into their buildpack
system.
The gap between "it runs on my machine" and "it's live" should be one command.
Deploy
git push deploy.
Add a git remote pointing to picd, push your docker-compose.yml, and
your containers are live. That's it. No buildpacks. No platform-specific config.
No YAML pipeline definitions.
picd receives your push, checks out the repo, reads your compose file,
and runs docker-compose up -d for you. Your existing compose files
work as-is.
git remote add picd ssh://cd.pico.sh/user/projectgit push picd main and your containers are livegit push picd <old-commit> mainCompose
Your docker-compose.yml is your infrastructure. picd respects
every compose feature (volumes, networks, depends_on, restart policies) and
adds two things on top:
traefik.http.routers label and your service gets a public URLNo custom buildpacks. No platform-specific Dockerfiles. No "it works locally but not in production" gap. The same file runs everywhere.
Management
No web dashboard. No REST API. No CLI SDK to install. If SSH works, you can manage your deployment. Every operation is a single SSH command.
picd gives you management commands, environment variables, custom domains,
container exec, logs, and attach, all through standard SSH.
Check project status, set environment variables, trigger redeployments,
and manage custom domains, all via ssh picd <command>.
Run ssh picd help for the full list.
Execute any command directly inside a project container with
ssh <project>@<host> <command>. No interactive shell needed.
SSH directly into containers using their names. Prefix with l- for logs,
c- for exec, a- for attach.
Standard SSH, standard debugging workflow.
Every project shell comes with lazydocker ready to go. Spin up the TUI to inspect containers, check resource usage, and browse logs interactively.
Features
Git-push deployments: add a remote, push your compose file, containers are live. Roll back by pushing an older commit. No buildpacks, no platform lock-in.
Every operation is an SSH command. Status checks, env vars, custom domains, container exec, logs, and attach. No APIs, no web dashboards, no tokens. SSH keys are your auth.
New containers start before old ones stop. Your app stays live during every deploy, no maintenance windows, no broken requests.
Add traefik.http.routers labels in your compose file.
Traefik handles routing and HTTPS certificates automatically. Zero config.
Bring your own domain. Point a DNS record at picd and your app is live on your domain with HTTPS, no extra configuration needed.
Comparison
picdWho It's For
picd is for developers and small teams who want to deploy fast without
cloud provider lock-in. You write a docker-compose file, you push it, your containers
are live, and if something breaks you SSH in and fix it. No platform-specific buildpacks,
no web console navigation, no API key management.
We're not building marketplace integrations, auto-scaling groups, or compliance reports. What you get is the deployment platform you'd write for yourself.
FAQ
We have been prototyping how to best provide a pico-paas for years. We love the ergonomics
of docker-compose and created
pcompose which is the
base for picd. While picd has diverged from this original project,
it's rooted in the same concepts and tech.
picd managed hosting.
Sign up for our managed beta at cd.pico.sh.
No spam. We'll email you when beta slots open.