/dev/push is a free, open source build & deployment project written in Python and released under MIT. It has 4,747 GitHub stars, 184 forks and 17 open issues, and was last pushed 7 months ago. On this registry it ranks #32 of 59 tracked projects in Build & Deployment, with 5 head-to-head comparisons available. It gained 3 stars over the last 6 tracked days.

What is /dev/push?

What it is

/dev/push is open-source, self-hostable deployment platform. It lives in developer tools and build-and-deployment ecosystem. Project uses Python and MIT license. It acts as alternative to Vercel, Render, Netlify, and similar services. Self-hosting requires server with SSH access, sudo privileges, DNS, GitHub account, and email provider.

It solves problem of deploying apps from repository without managed platform. User pushes code to GitHub, then /dev/push builds and deploys app. It supports Python, Node.js, PHP, and other apps that can run on Docker. Deployment targets are Docker-based, so language support depends on container runtime. It handles zero-downtime updates, instant rollback, logs, environments, domains, and team access.

Key capabilities

  • Git-based deployments use GitHub App integration for login and repository access, then trigger build and deployment from GitHub push, with zero-downtime rollouts.
  • Multi-language support covers Python, Node.js, PHP, and other runtimes that can run on Docker.
  • Environment management supports multiple environments, branch mapping, and encrypted environment variables.
  • Real-time monitoring provides live and searchable build logs and runtime logs.
  • Team collaboration includes role-based access control, team invitations, and permissions.
  • Custom domains support user-defined domains and automatic Let's Encrypt SSL certificates.
  • Self-hosting lets teams run platform on own servers under MIT license.

Who uses it and how

  • Development teams deploy applications from GitHub repositories into self-managed environments.
  • Python teams deploy Django, FastAPI, and Flask projects that run on Docker.
  • Node.js teams deploy JavaScript or Next.js applications from GitHub branches.
  • PHP teams deploy PHP applications without managed deployment provider.
  • Operators map branches to environments, invite team members by email, inspect logs, and roll back after failed deployments.

Getting started

Install on fresh Ubuntu 20.04+ or Debian 11+ server with curl -fsSL https://install.devpu.sh | sudo bash, configure /var/lib/devpush/.env with APP_HOSTNAME, DEPLOY_DOMAIN, LE_EMAIL, EMAIL_SENDER_ADDRESS, RESEND_API_KEY or SMTP settings, and GitHub App credentials, set DNS A records for example.com and *.example.com to server IP, then start service with sudo systemctl start devpush.service. Development uses Docker and Docker Compose v2+, with git clone, data/.env file, and ./scripts/start.sh.

When to use it — and when not to

Use it when teams want Vercel-like push-to-deploy workflows while keeping deployment control on own infrastructure. It replaces managed services only for users willing to operate server, DNS, GitHub App, email provider, configuration, and service lifecycle. Avoid it if broad OS support is needed, since Ubuntu and Debian are only officially supported, or if mature project is needed, since repository age is 0 years and contributor count is 0.

project readme (upstream, from github) — read inline

/dev/push

An open-source and self-hostable alternative to Vercel, Render, Netlify and the likes. It allows you to build and deploy any app (Python, Node.js, PHP, ...) with zero-downtime updates, real-time logs, team management, customizable environments and domains, etc.

A screenshot of a deployment in /dev/push.

Key features

  • Git-based deployments: Push to deploy from GitHub with zero-downtime rollouts and instant rollback.
  • Multi-language support: Python, Node.js, PHP... basically anything that can run on Docker.
  • Environment management: Multiple environments with branch mapping and encrypted environment variables.
  • Real-time monitoring: Live and searchable build and runtime logs.
  • Team collaboration: Role-based access control with team invitations and permissions.
  • Custom domains: Support for custom domain and automatic Let's Encrypt SSL certificates.
  • Self-hosted and open source: Run on your own servers, MIT licensed.

Documentation

See devpu.sh/docs for installation, configuration, and usage. For technical details, see ARCHITECTURE.md.

Prerequisites

  • Server: Ubuntu 20.04+ or Debian 11+ with SSH access and sudo privileges. A Hetzner CPX31 works well.
  • DNS: We recommend Cloudflare.
  • GitHub account: You'll create a GitHub App for login and repository access.
  • Email provider: A Resend account or SMTP credentials for login emails and invitations.

Quickstart

⚠️ Supported on Ubuntu/Debian. Other distros may work but aren't officially supported (yet).

  1. Install on a fresh server:
curl -fsSL https://install.devpu.sh | sudo bash
  1. Create a GitHub App at devpu.sh/docs/guides/create-github-app

  2. Configure by editing /var/lib/devpush/.env with: APP_HOSTNAME, DEPLOY_DOMAIN, LE_EMAIL, EMAIL_SENDER_ADDRESS, RESEND_API_KEY (or SMTP settings), and your GitHub App credentials.

  3. Set DNS:

    • A example.com → server IP (app hostname)
    • A *.example.com → server IP (deployments)
  4. Start the service:

sudo systemctl start devpush.service

For more information, including manual installation or updates, refer to the documentation.

Development

Prerequisites: Docker and Docker Compose v2+. On macOS, Colima works well as an alternative to Docker Desktop.

git clone https://github.com/hunvreus/devpush.git
cd devpush
mkdir -p data
cp .env.dev.example data/.env
# Edit data/.env with your GitHub App credentials

Start the stack:

./scripts/start.sh

The stack auto-detects development mode on macOS and enables hot reloading. Data is stored in ./data/.

Registry catalog

Default runner/preset definitions ship in registry/ and are copied to DATA_DIR/registry/ during install/update. See registry/README.md for the catalog format and override rules.

Key scripts:

  • ./scripts/start.sh / stop.sh / restart.sh — manage the full stack or selected components (--components )
  • ./scripts/compose.sh logs -f app — view logs
  • ./scripts/db-generate.sh — create database migration
  • ./scripts/clean.sh — remove all Docker resources and data
  • ./scripts/update.sh — update by ref (defaults to app only; use --all / --components / --full to expand scope)

See ARCHITECTURE.md for codebase structure.

Scripts

Script What it does
scripts/backup.sh Create backup of data directory, database, and code metadata (--output , --verbose)
scripts/clean.sh Stop stack and remove all Docker resources and data (--keep-docker, --keep-data, --yes)
scripts/compose.sh Docker compose wrapper with correct files/env (--)
scripts/db-generate.sh Generate Alembic migration (prompts for message)
scripts/db-migrate.sh Apply Alembic migrations (--timeout )
scripts/install.sh Server setup: Docker, user, clone repo, .env, systemd (--repo , --ref , --yes, --no-telemetry, --verbose)
scripts/restart.sh Restart services (--components , --no-migrate)
scripts/restore.sh Restore from backup archive (--archive , --no-db, --no-data, --no-code, --no-restart, --no-backup, --remove-runners, --timeout , --yes, --verbose)
scripts/start.sh Start stack (--components , --no-migrate, --timeout , --verbose)
scripts/status.sh Show stack status
scripts/stop.sh Stop services (--components , --hard)
scripts/uninstall.sh Uninstall from server (--yes, --skip-backup, --no-telemetry, --verbose)
scripts/update.sh Update by tag (default updates app only; use --all, --full, or --components to expand scope) (--ref , --all, --full, --components , --no-migrate, --no-telemetry, --yes, --verbose)

Environment variables

Variable Description
SECRET_KEY App secret for sessions/CSRF. Auto-generated by install.sh.
ENCRYPTION_KEY Fernet key for encrypting secrets. Auto-generated by install.sh.
POSTGRES_PASSWORD PostgreSQL password. Auto-generated by install.sh.
SERVICE_UID Container user UID. Auto-set to match host user.
SERVICE_GID Container user GID. Auto-set to match host user.
SERVER_IP Public IP of the server. Auto-detected by install.sh.
CERT_CHALLENGE_PROVIDER ACME challenge provider: default (HTTP-01) or cloudflare, route53, gcloud, digitalocean, azure (DNS-01). Default: default.
GITHUB_APP_ID GitHub App ID.
GITHUB_APP_NAME Gi

readme truncated — read the full docs on github

Frequently asked questions

Is /dev/push free to use?

/dev/push is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does /dev/push do?

Deploy apps instantly with git push - open source alternative

What is /dev/push written in?

/dev/push is primarily written in Python. Its source is publicly available at https://github.com/hunvreus/devpush, and it has 4,747 GitHub stars.