Git-Push Deploy.
Powered by Docker Compose.

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.

Deploying shouldn't need a cloud console.

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.

deploying without picd
# Provision a VM
# Install Docker
# Install docker-compose
# Set up Traefik or Caddy
# Configure ACME certificates
# Set up SSH keys
# rsync your compose file
# ssh in and run docker-compose up
# hope you didn't miss a step
# 47 steps to deploy a container

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/project
  • git push picd main and your containers are live
  • Roll back with git push picd <old-commit> main
  • Same compose file runs locally and remotely
git push deploy
$ git remote add picd ssh://cd.pico.sh/user/httpbin
$ git push picd main
 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), done.
remote: Creating user_httpbin_1 ... done
remote:
To ssh://cd.pico.sh/user/httpbin
95fae00..a34685d main -> main
 
# your service is now live

Docker Compose as a first-class service.

docker-compose.yml
--- docker-compose.yml ---
services:
  echo:
    build: .
    networks:
      - default
      - picd-ingress
    labels:
      traefik.enable: true
      traefik.http.routers.echo.rule: Host(`echo-<user>.apps.pico.sh`)
 
networks:
  picd-ingress:
    external: true
 
$ git remote add picd ssh://cd.pico.sh/user/project.git
$ git push picd main
 
→ containers deployed
→ echo-<user>.apps.pico.sh is live

Your docker-compose.yml is your infrastructure. picd respects every compose feature (volumes, networks, depends_on, restart policies) and adds two things on top:

  • Auto HTTPS via Traefik reverse proxy
  • Add a traefik.http.routers label and your service gets a public URL
  • Relative volume mounts preserve data across deploys
  • Compose networks are managed automatically

No custom buildpacks. No platform-specific Dockerfiles. No "it works locally but not in production" gap. The same file runs everywhere.

docker-compose.yml
git push picd
containers live
HTTPS via Traefik

Manage everything over SSH.

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.

ssh management
# Management commands
$ ssh picd status myapp
$ ssh picd set-env myapp DATABASE_URL=postgres://...
$ ssh picd redeploy myapp
$ ssh picd add-custom-domain myapp.example.com
$ ssh picd dc ps -a
 
# Run a command inside a container
$ ssh echo@cd.pico.sh env
 
# Follow container logs
$ ssh l-echo@cd.pico.sh
 
# Exec into a container
$ ssh c-echo@cd.pico.sh
 
# Attach to a container
$ ssh a-echo@cd.pico.sh

Management commands

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.

Run commands in containers

Execute any command directly inside a project container with ssh <project>@<host> <command>. No interactive shell needed.

Container exec, logs, attach

SSH directly into containers using their names. Prefix with l- for logs, c- for exec, a- for attach. Standard SSH, standard debugging workflow.

lazydocker pre-loaded

Every project shell comes with lazydocker ready to go. Spin up the TUI to inspect containers, check resource usage, and browse logs interactively.

  • No API keys or tokens to manage
  • SSH keys are your auth, that's it
  • IP whitelisting and country bans built in
  • Scriptable from CI, agents, or your terminal

Built for terminal workflows.

Git Push Deploy

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.

SSH-First Management

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.

Zero-Downtime Deploys

New containers start before old ones stop. Your app stays live during every deploy, no maintenance windows, no broken requests.

Auto HTTPS

Add traefik.http.routers labels in your compose file. Traefik handles routing and HTTPS certificates automatically. Zero config.

Custom Domains

Bring your own domain. Point a DNS record at picd and your app is live on your domain with HTTPS, no extra configuration needed.

The difference is simplicity.

Other platforms
deploying
# Provision cloud account
# Install cloud CLI
# Configure credentials
# Create cluster / app
# Write platform-specific config
# Configure CI/CD pipeline
# Deploy
# Debug via web console
 
# ← that's a lot of steps
# ← and you need their SDK
# ← and their YAML format
picd
deploying
$ git remote add picd ssh://cd.pico.sh/user/app
$ git push picd main
 
remote: Creating user_app_web_1 ... done
 
# ← that's it
# ← your compose file works
# ← ssh into containers to debug

For people who prefer SSH to web dashboards.

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.

Frequently asked questions.

Why create another SSH-to-VM service?

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.

Get early access to picd managed hosting.

Sign up for our managed beta at cd.pico.sh.