Skip to main content
Glama

Levelrail is an open source, self-hosted deployment platform that turns one or more Linux servers into a private cloud: push to a git repo and get a running app with HTTPS, logs, metrics, and one-click rollback. It ships as a single Go binary for the control plane, uses Docker as the runtime, and is licensed under Apache 2.0.

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.

TIP

Every feature is labelled stable or beta, with the evidence behind it, on thefeature status page. New here? Start with Try it in two commands.

Why Levelrail

You want

Levelrail gives you

Heroku or Vercel style deploys on your own servers

Push to git, get HTTPS, previews and one-click rollback. Deploying apps

To know why an app was slow at 3am

Logs, traces, errors and metrics built in, with deploy markers. No Grafana stack to run. Observability

Small servers that stay cheap

Idle apps sleep and wake on the next request. Sleep when idle

More machines without opening ports

Agents dial out over mTLS. No SSH, no inbound ports. Multi-node

AI tools that can help safely

A CLI, an MCP server and an agent skill, all over one permissioned API. For AI agents

Related MCP server: Coolify MCP Server

Try it in two commands

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 walks you through a domain, a git provider, and your first app. Then deploy a repository from the CLI the installer put on the box:

levelrail-cli import https://github.com/your-org/your-app --deploy

Without --deploy it prints the deployment plan and stops. Prefer containers, a pinned version, or a source build? See Installing and Docker. Full walkthrough: Getting started.

What you get

Area

What it does

Docs

Deploys

Rolling, recreate, or blue-green, gated on real readiness probes. Import a repo URL, an image, a docker run command, or a compose file.

Deploying apps, Importing apps

Domains and TLS

Embedded Caddy ingress with automatic certificates and routing.

Domains and ingress

Databases

Postgres, Redis, MySQL, MongoDB, MariaDB, KeyDB, Dragonfly, and ClickHouse, with scheduled backups, restore, and an automatic re-download and checksum after every backup.

Managing databases, Backups

Observability

Node-local metrics and full-text log search with deploy markers, per-app log pipelines (multiline, redact, drop, parse), a Loki-compatible read API for Grafana, Prometheus remote write, OTLP traces with a waterfall, Sentry-compatible error tracking, and log exports to New Relic, Datadog, Axiom and Better Stack.

Observability, Loki API, Tracing, Error tracking

Safety

Prior images are pinned, so rollback is always one click and garbage collection cannot remove the target. Deploy approvals and freezes.

Deploy safety

Access

Allow and Deny IAM policies scoped to a single app or database, with an audit log and CSV export, in the free Apache 2.0 core.

Access control

Automation

One HTTP API behind the dashboard, a CLI, and an MCP server. AI never sits in the reconciliation path.

CLI reference, AI control

  • Sleep when idle. An app with no requests for a time you choose stops and uses no memory or CPU, then starts on the next request. See Sleep when idle.

  • Many servers, no open ports. Add nodes with a one-time token. Agents dial out over mTLS, with WireGuard mesh networking, internal DNS, cordon, and drain. See Multi-node.

  • Git-native. GitHub, GitLab, Bitbucket, and Gitea webhooks and preview environments per pull request.

  • A large catalog of one-click templates for self-hosted services, each a compose file the platform deploys and manages. See Template catalog.

  • Alerting. Threshold, crashloop, and certificate expiry rules delivered over many notification channels, including Slack, Discord, email, Telegram, PagerDuty, ntfy, and a generic webhook.

  • Pipelines. CI/CD runs on your own nodes, defined in a YAML file. See Pipelines.

A tour of the dashboard

Every image is captured from a real, running control plane by scripts/screenshots/capture.sh. Click one to open the guide for that screen.

How it works

flowchart LR
  Git["Git push<br/>or import"] --> API
  subgraph CP["Control plane (one Go binary)"]
    API["HTTP API<br/>+ dashboard"] --> DB[("SQLite")]
    API --> REC["Level-triggered<br/>reconciler"]
    API --> ING["Caddy ingress<br/>(automatic TLS)"]
    API --> BLD["BuildKit"]
  end
  REC <-->|"gRPC, mTLS<br/>(agent dials out)"| AG1["Node agent"]
  REC <-->|"in-process on<br/>a single node"| AG0["Local agent"]
  AG1 --> D1["Docker Engine API"]
  AG0 --> D0["Docker Engine API"]
  CLI["levelrail-cli<br/>and MCP server"] --> API
  • Control plane (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.

  • Node agent (cmd/levelrail-agent): dials out to the control plane and streams Docker events up. In single-node mode it runs in-process, so one node and ten nodes share one code path.

  • Ingress: Caddy embedded as a library. Builds: BuildKit as a library, with Railpack detection for apps without a Dockerfile. State: SQLite in WAL mode, pure Go.

  • CLI and MCP: levelrail-cli and levelrail-mcp are thin clients over the same HTTP API under /api/v1.

Details: Architecture.

How it compares

Most self-hosted platforms in this category manage servers by SSHing in and shelling out to the docker CLI, then parsing text, which tends to force polling loops. Levelrail uses a reverse-dialed agent and a level-triggered reconciler instead.

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, and all of them are worth using. The one area where Levelrail trails is breadth of templates: a smaller curated catalog than Coolify's, an intentional bet on curation (see ADR 015). The full, sourced comparison is in Comparison.

Footprint. Measured on an Apple M4 Max with a dev build and a loopback client, the idle control plane used 67.7 MB RSS and 0.03% CPU with 0 apps, and 90.8 MB RSS and 1.60% CPU with 500 suspended apps. No containers were running in that benchmark, so real apps add load it does not measure. Method and caveats: Performance.

Status

Releases are listed on the releases page, and every feature is labelled stable or beta, with the evidence behind it, on Feature status. Single node is the best-tested path. Anything marked beta works but has less real-world mileage, and a few areas stay off by default behind APP_EXPERIMENTAL. The roadmap lists what is done and what is next.

Guides

Step by step walkthroughs, each tested against a real install:

Guide

What you learn

What is Levelrail and who is it for

The overview, with an FAQ

Deploy a Next.js app with Postgres

Repo to HTTPS in about ten minutes

Deploy a Django app with Postgres

Plus the four errors everyone hits

Push to deploy with GitHub

Webhooks, previews and the delivery log

How deploys stay safe

Health gates, blue-green cutover, rollback

Logs, traces and errors without a stack

Observability and Grafana

Scale to zero on a small VPS

Run many projects on one box

Levelrail Pages

Static sites from git

Levelrail vs Coolify, Dokploy, CapRover, Dokku and Kamal

Where each one fits

For AI agents and crawlers

Documentation

Community and support

Build from source

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. 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.

Contributors

Star the repo

If Levelrail saves you a weekend, a star on GitHub helps other self-hosters find it. Bug reports and honest feedback help more.

Star History Chart

License

Apache 2.0, see LICENSE.

Founding partners

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.

Powered by GLINR STUDIOS · icon from theSVG

Related MCP Connectors

Related MCP Servers