All Plans

Push to deploy from any Git provider

Connect GitHub, GitLab, or Bitbucket. Every push triggers a build. Every PR gets a preview. Zero CI/CD configuration needed.

Built for every Git workflow

Webhooks, credentials, branch filtering, and deploy automation -- all handled natively.

GitHub, GitLab, Bitbucket
Native webhook integration with all major Git providers
HMAC verification
SHA-256 signature validation on every incoming webhook
Auto-deploy on push
Push to your configured branch and sh0 deploys automatically
Token & SSH key support
Deploy tokens, personal access tokens, PEM and OpenSSH keys
Encrypted credential storage
SSH key fingerprint extraction and AES-256-GCM encrypted storage
Per-app webhook secrets
Unique webhook secret per application for isolation
19 stack auto-detection
Node.js, Python, Go, Rust, PHP, Java, .NET, Next.js, Django, and 10 more -- detected automatically
15 Dockerfile templates
Production-ready multi-stage Dockerfiles generated for every detected stack

19 stacks detected automatically

Push your code. sh0 identifies the framework, generates a production-ready Dockerfile, and builds your app -- zero configuration.

Node.js
Bun
Deno
Python
PHP
Go
Rust
Ruby
Java
.NET
Next.js
Nuxt
SvelteKit
Astro
Django
FastAPI
Laravel
Static HTML
Dockerfile

How it works

01

Connect your repo

Paste your repository URL and add a deploy token or SSH key. sh0 supports public and private repos across all major Git providers.

02

Set up the webhook

sh0 generates a unique webhook URL and secret. Paste them into your Git provider's webhook settings -- takes 30 seconds.

03

Push code

Push to your configured branch. sh0 receives the webhook, clones the repo, detects the stack, builds, and deploys -- fully automatic.

04

Get notified

Deploy hooks send results to Slack, Discord, Telegram, email, or any webhook endpoint. Know instantly if a deploy succeeded or failed.

The deploy pipeline

Webhook Received
Verify Signature
Clone & Detect Stack
Health Check
Build Image
Blue-Green Deploy
Route & Notify

From git push to live URL -- fully automated, zero-downtime

Git Deploy
$ git push origin main
Webhook received from GitHub
Verifying HMAC-SHA256 signature... Valid
Cloning repository (depth=1)...
Detecting stack: Next.js 14
Running health check... 87/100 (2 warnings)
Generating Dockerfile (multi-stage, Alpine)...
Building image: sh0-myapp:a1b2c3d
Starting new container...
Health check: OK
Blue-green switch: routing traffic to new container
Old container stopped (30s grace period)
Deployed in 34s. Live at https://myapp.example.com

Everything you need

Blue-green deployments

Zero-downtime deploys. sh0 starts the new version alongside the old one, health-checks it, then switches traffic. Instant rollback if it fails.

Preview environments

Every pull request gets its own isolated environment with a unique URL. Review changes live before merging to production.

Real-time build logs

Watch your build and deploy in real time via WebSocket streaming. Every line, as it happens, directly in the dashboard.

Signature verification

Every webhook is verified with HMAC SHA-256. Forged or tampered payloads are rejected before any action is taken.

Encrypted credentials

Deploy tokens and SSH private keys are encrypted with AES-256-GCM at rest. Never stored in plaintext, never logged.

Branch filtering

Deploy only from specific branches. Push to main deploys to production. Push to staging deploys to your staging environment.

19 stack auto-detection

sh0 identifies your framework from package.json, requirements.txt, go.mod, Cargo.toml, or 15 other markers. No configuration needed -- push and deploy.

Code health scoring

34 security and configuration rules checked before every build. Hardcoded secrets, debug mode, missing .dockerignore, and 31 more issues caught automatically.

The old way

  • x Write CI/CD pipeline configuration files
  • x Create and maintain Dockerfiles manually
  • x Push images to a container registry
  • x SSH into server, docker pull, restart services
  • x Configure nginx and SSL certificates
  • x Downtime during every deploy

The sh0 way

  • Connect repo, push code, deployed
  • Auto-detected stack, auto-generated build
  • Built and deployed on your server directly
  • Blue-green deploys, zero downtime
  • SSL provisioned automatically by Caddy
  • Live in 60 seconds, every push

Questions & answers

Do private repositories work? +
Yes. Add a deploy token (GitHub, GitLab) or personal access token, or upload an SSH key. sh0 stores credentials encrypted and uses them only during clone operations.
Does sh0 support monorepos? +
Yes. You can configure the root directory for each app within the repository. sh0 only builds and deploys when files in that directory change.
Can I deploy from specific branches only? +
Yes. Each app has a configured deploy branch (e.g., main, production, staging). Pushes to other branches are ignored unless you enable preview environments for pull requests.
What happens if a webhook delivery fails? +
Git providers retry webhook deliveries automatically (GitHub retries for up to 3 days). sh0 also logs all received webhooks so you can manually trigger a redeploy from the dashboard.
Which stacks does sh0 detect automatically? +
sh0 detects 19 stacks: Node.js (npm, yarn, pnpm, bun), Deno, Python (Django, FastAPI, Flask), Go, Rust, Java (Maven, Gradle), PHP (Laravel), Ruby, .NET, Next.js, Nuxt, SvelteKit, Astro, and static HTML sites. If your stack isn't detected, you can provide your own Dockerfile.
Does sh0 generate Dockerfiles automatically? +
Yes. For each detected stack, sh0 generates a production-ready multi-stage Dockerfile with Alpine/slim base images, non-root user execution, HEALTHCHECK directives, and framework-specific optimizations. You can also use your own Dockerfile if you prefer.

Deploy on every push. Automatically.

Connect your repo, push code, get live URLs with SSL. No CI/CD pipelines to maintain. No servers to SSH into.