Push to deploy from your terminal
One command to go from local code to a live URL. Auto-detects your stack, builds a container, streams logs in real time. Plus 30+ commands for everything else.
sh0 push in action
Auto-detects your stack
sh0 push scans your project files and picks the right base image, build command, and runtime. No Dockerfile needed.
Custom Dockerfiles are always supported. Stack detection is a convenience, not a constraint.
How it works
Install
curl -fsSL https://get.sh0.dev | bash Single binary, no dependencies. Works on Ubuntu, Debian, CentOS, and any Linux with Docker.
Authenticate
sh0 login --url https://your-server.com Interactive login stores a session token. Or set SH0_API_URL + SH0_API_TOKEN for CI/CD.
Initialize
sh0 init Detects your stack, generates .sh0ignore. Optional but recommended for new projects.
Push
sh0 push Packages files, uploads, builds container, returns a live URL. One command, zero config.
Watch
sh0 watch Auto-pushes on every file change with 2-second debounce. Your dev loop, automated.
Smart file handling
Control what gets uploaded and track your deployments automatically.
.sh0ignore
Same syntax as .gitignore. Falls back to .dockerignore, then .gitignore.
.sh0/link.json
Created after first push. Links your directory to the remote app.
Works in CI/CD
Set two environment variables and sh0 push works anywhere -- GitHub Actions, GitLab CI, or any runner.
GitHub Actions
Any CI runner
Command reference
One binary, 30+ commands. Everything you need to manage your deployments.
Deploy
App Lifecycle
Management
Infrastructure
Authentication & Admin
A typical session
All commands support --json for machine-readable output
Configuration
Config file for local work, environment variables for CI/CD.
~/.sh0/config.toml
Environment variables
Everything you need
Push deploy
Deploy from any local directory. Auto-detects 19+ stacks, uploads files, builds, and returns a live URL. No Git required.
Watch mode
Run sh0 watch to auto-push on every file change. Configurable debounce, respects .sh0ignore. Your dev loop, automated.
30+ commands
Deploy, scale, restart, stop, start, delete, manage env vars, domains, stream logs, SSH into containers -- all from one binary.
JSON output
Every command supports --json for machine-readable output. Pipe to jq, feed into scripts, integrate with any CI/CD pipeline.
Export anywhere
Export app configuration to Docker Compose, Vercel, AWS, GCP, Kubernetes, Railway, or Render. No vendor lock-in.
Local health checks
Run sh0 check on any project to get a Code Health report (34 rules) before deploying. Catch issues early.
Config file or env vars
Store settings in ~/.sh0/config.toml or use SH0_API_URL and SH0_API_TOKEN environment variables for CI/CD.
The old way
- x Set up a Git repo and webhook
- x Write a Dockerfile from scratch
- x SSH into server, run docker commands
- x Configure reverse proxy manually
- x Different tools for each task
- x No unified view of your infrastructure
The sh0 way
- sh0 push -- one command, zero config
- Auto-detects stack, no Dockerfile needed
- SSL and domains handled automatically
- Deploy, scale, and monitor in one flow
- JSON output for CI/CD integration
- Export to 7 platforms -- zero lock-in
Questions & answers
What is sh0 push? +
What authentication methods does the CLI support? +
Can I use the CLI in CI/CD pipelines? +
What files does sh0 push exclude? +
What is sh0 export? +
Can I manage a remote sh0 instance from my local machine? +
Your code, your server, one command.
Install in one command. Push to deploy. Monitor from the terminal. No middleman.