Self-hosted deployment platform: push to git, get a running app with TLS, logs, metrics, and rollback.
See the codePush to git, get a running app with TLS, logs, metrics, and rollback, on your own Linux boxes.
Docs · Install · Features · Screenshots · Compare · Roadmap · Security · Discord
Levelrail is a self-hosted, open-source deployment platform: an alternative to Heroku, Vercel, and Railway that runs on your own Linux servers. Push to a git repo and get a running app with HTTPS, logs, metrics, and one-click rollback.
It is built for people running 3 to 50 services on 1 to 10 machines who do not want to learn Kubernetes. Each server runs a small agent that talks to Docker's Engine API directly, so there is no SSH and no shelling out to the docker CLI. Metrics and logs are part of the core, not a Grafana you install afterwards.
You need a Linux server (amd64 or arm64) with systemd, root access, and ports 80 and 443 open. Docker is installed for you if it is missing.
curl -fsSL https://levelrail.com/install.sh | sudo sh
The installer checks the host, starts Levelrail as a systemd service, and prints a dashboard URL with a one-time setup token. Open it, choose a password, and the setup wizard takes you through a domain, a git provider, and your first app. About ten minutes, start to finish.
Prefer containers?
docker run -d -p 127.0.0.1:8080:8080 -v /var/run/docker.sock:/var/run/docker.sock \
-v levelrail-data:/var/lib/levelrail-data ghcr.io/glincker/levelrail:beta
Images for linux/amd64 and linux/arm64 are published as :beta (use this until a stable release ships) and :edge. Upgrade and uninstall commands, pinning a version, the compose file, and the node agent image are in Installing and Docker. Walkthrough: Getting started.
docker run command, or a compose file.Every image below is captured from a real, running control plane by
scripts/screenshots/capture.sh, with real
containers, metrics, and logs. Click one to open the guide for that screen.
Levelrail is in active development and has no stable release yet. APIs, the app spec format, and the on-disk layout can change between betas, so do not run production workloads on it yet.
Maturity is uneven, and we label it feature by feature in Feature status. Single node is the well-tested path. Deploy approvals, database backups with point-in-time recovery, and GitHub previews are marked stable, each with a live end-to-end test. Multi-node enrollment, drain, and placement have run against two real Docker daemons, but the WireGuard mesh across hosts is still unverified. Most other areas are beta, and a few (in-app AI chat, GPU models, the load balancer, platform as code, Cloudflare tunnel) are off by default behind APP_EXPERIMENTAL. The roadmap has the current list of what is done and what is next.
Most self-hosted platforms in this category manage servers by SSHing in and shelling out to the docker CLI, then parsing text. That is a common source of flakiness, and it forces polling loops. Levelrail does it differently:
| Levelrail | Coolify | Dokploy | CapRover | Dokku | Kamal | |
|---|---|---|---|---|---|---|
| Node control | Reverse-dialed agent | SSH + CLI | SSH + Engine API | Swarm API | Local bash | SSH, one-shot |
| Orchestration | Level-triggered reconciler | Compose | Swarm | Swarm | Bash scheduler | None |
| Built-in metrics and logs | Yes | Opt-in add-on | Separate binary | No | No | No |
| Rollback | Pinned images, readiness-gated | Health check off by default | Swarm rollback | Manual | Default scheduler: none | Proxy health gate |
| Backup verification | Automatic, all 8 engines | Non-empty check | None | None | No backups | No backups |
This is positioning, not a ranking. All of them are worth using. The one area where Levelrail trails is breadth of templates: 311 curated entries against Coolify's roughly 370, an intentional bet on curation (see ADR 015). The full, sourced comparison is in Comparison.
cmd/levelrail): one Go binary with the dashboard embedded. It reconciles declarative desired state against observed Docker state, the Kubernetes controller pattern without the rest of Kubernetes.cmd/levelrail-agent): dials out to the control plane. In single-node mode it runs in-process, so one node and ten nodes share one code path.modernc.org/sqlite, pure Go.levelrail-cli and levelrail-mcp are thin clients over the same HTTP API under /api/v1.Details: Architecture.
Shared kit: generic, stdlib-only Go packages (SSRF-safe HTTP client, cron parsing, health probes, and more) live in a separate module, kit/, usable without the platform.
Needs Go 1.26 or newer and Docker.
go build ./cmd/levelrail
go build ./cmd/levelrail-agent
go build ./cmd/levelrail-cli
The frontend is a Vite project in web/ that is embedded into the control plane at build time. See Installing and CONTRIBUTING.md for the dev loop, tests, and commit conventions.
#levelrail forum channel for questions and supportIf Levelrail saves you a weekend, a star on GitHub helps other self-hosters find it. Bug reports and honest feedback help more.
Apache 2.0, see LICENSE.
Founding partner sites and libraries, from the same studio:
| theSVG | A searchable library of brand SVG icons for developers and designers. |
| theauth | Open-source auth for AI agents and humans, with MCP OAuth 2.1 and audit. |
| AskVerdict AI | Structured multi-agent decisions for teams, with verdicts and action items. |
Levelrail is built by Gagan Deep Singh, founder of GLINR STUDIOS and theSVG. Say hello at thegdsks.com.
Self-hosted deployment platform: push to git, get a running app with TLS, logs, metrics, and rollback.
See the codePush to git, get a running app with TLS, logs, metrics, and rollback, on your own Linux boxes.
Docs · Install · Features · Screenshots · Compare · Roadmap · Security · Discord
Levelrail is a self-hosted, open-source deployment platform: an alternative to Heroku, Vercel, and Railway that runs on your own Linux servers. Push to a git repo and get a running app with HTTPS, logs, metrics, and one-click rollback.
It is built for people running 3 to 50 services on 1 to 10 machines who do not want to learn Kubernetes. Each server runs a small agent that talks to Docker's Engine API directly, so there is no SSH and no shelling out to the docker CLI. Metrics and logs are part of the core, not a Grafana you install afterwards.
You need a Linux server (amd64 or arm64) with systemd, root access, and ports 80 and 443 open. Docker is installed for you if it is missing.
curl -fsSL https://levelrail.com/install.sh | sudo sh
The installer checks the host, starts Levelrail as a systemd service, and prints a dashboard URL with a one-time setup token. Open it, choose a password, and the setup wizard takes you through a domain, a git provider, and your first app. About ten minutes, start to finish.
Prefer containers?
docker run -d -p 127.0.0.1:8080:8080 -v /var/run/docker.sock:/var/run/docker.sock \
-v levelrail-data:/var/lib/levelrail-data ghcr.io/glincker/levelrail:beta
Images for linux/amd64 and linux/arm64 are published as :beta (use this until a stable release ships) and :edge. Upgrade and uninstall commands, pinning a version, the compose file, and the node agent image are in Installing and Docker. Walkthrough: Getting started.
docker run command, or a compose file.Every image below is captured from a real, running control plane by
scripts/screenshots/capture.sh, with real
containers, metrics, and logs. Click one to open the guide for that screen.
Levelrail is in active development and has no stable release yet. APIs, the app spec format, and the on-disk layout can change between betas, so do not run production workloads on it yet.
Maturity is uneven, and we label it feature by feature in Feature status. Single node is the well-tested path. Deploy approvals, database backups with point-in-time recovery, and GitHub previews are marked stable, each with a live end-to-end test. Multi-node enrollment, drain, and placement have run against two real Docker daemons, but the WireGuard mesh across hosts is still unverified. Most other areas are beta, and a few (in-app AI chat, GPU models, the load balancer, platform as code, Cloudflare tunnel) are off by default behind APP_EXPERIMENTAL. The roadmap has the current list of what is done and what is next.
Most self-hosted platforms in this category manage servers by SSHing in and shelling out to the docker CLI, then parsing text. That is a common source of flakiness, and it forces polling loops. Levelrail does it differently:
| Levelrail | Coolify | Dokploy | CapRover | Dokku | Kamal | |
|---|---|---|---|---|---|---|
| Node control | Reverse-dialed agent | SSH + CLI | SSH + Engine API | Swarm API | Local bash | SSH, one-shot |
| Orchestration | Level-triggered reconciler | Compose | Swarm | Swarm | Bash scheduler | None |
| Built-in metrics and logs | Yes | Opt-in add-on | Separate binary | No | No | No |
| Rollback | Pinned images, readiness-gated | Health check off by default | Swarm rollback | Manual | Default scheduler: none | Proxy health gate |
| Backup verification | Automatic, all 8 engines | Non-empty check | None | None | No backups | No backups |
This is positioning, not a ranking. All of them are worth using. The one area where Levelrail trails is breadth of templates: 311 curated entries against Coolify's roughly 370, an intentional bet on curation (see ADR 015). The full, sourced comparison is in Comparison.
cmd/levelrail): one Go binary with the dashboard embedded. It reconciles declarative desired state against observed Docker state, the Kubernetes controller pattern without the rest of Kubernetes.cmd/levelrail-agent): dials out to the control plane. In single-node mode it runs in-process, so one node and ten nodes share one code path.modernc.org/sqlite, pure Go.levelrail-cli and levelrail-mcp are thin clients over the same HTTP API under /api/v1.Details: Architecture.
Shared kit: generic, stdlib-only Go packages (SSRF-safe HTTP client, cron parsing, health probes, and more) live in a separate module, kit/, usable without the platform.
Needs Go 1.26 or newer and Docker.
go build ./cmd/levelrail
go build ./cmd/levelrail-agent
go build ./cmd/levelrail-cli
The frontend is a Vite project in web/ that is embedded into the control plane at build time. See Installing and CONTRIBUTING.md for the dev loop, tests, and commit conventions.
#levelrail forum channel for questions and supportIf Levelrail saves you a weekend, a star on GitHub helps other self-hosters find it. Bug reports and honest feedback help more.
Apache 2.0, see LICENSE.
Founding partner sites and libraries, from the same studio:
| theSVG | A searchable library of brand SVG icons for developers and designers. |
| theauth | Open-source auth for AI agents and humans, with MCP OAuth 2.1 and audit. |
| AskVerdict AI | Structured multi-agent decisions for teams, with verdicts and action items. |
Levelrail is built by Gagan Deep Singh, founder of GLINR STUDIOS and theSVG. Say hello at thegdsks.com.