About this project

Levelrail is a self-hosted deployment platform written in Go. Its distinguishing design choice, as described in the README, is that a small agent runs on each node and talks to the local Docker Engine API directly, rather than the control plane SSHing into servers and shelling out docker commands. Pointed at one or more Linux machines, it is meant to act as a private cloud: push to a git repository and get a running application with TLS, logs, metrics and rollback. Core deployment features described: zero-downtime deploys using rolling, recreate or blue-green strategies, gated on readiness and liveness probes, with rollback to pinned prior images kept available. Observability is shipped in the core rather than installed separately, covering node-local metrics at 15-second resolution and full-text log search, with deploy markers overlaid on metric charts to connect a change to its effect. Database management spans eight engines through one registry: Postgres, Redis, MySQL, MongoDB, MariaDB, KeyDB, Dragonfly and ClickHouse, with scheduled backups, restore and automatic post-backup verification applied across all of them. Multi-node support includes a WireGuard mesh, internal DNS across nodes, cordon and drain, and no requirement for inbound ports on managed servers. Git integration covers GitHub, GitLab and Bitbucket webhooks plus per-pull-request preview environments with automatic teardown. Access control is modeled on AWS IAM with Allow/Deny policies scoped to a specific resource, alongside a full audit log with CSV export. Alerting offers threshold, crashloop, certificate-expiry and other rule kinds delivered to a long list of destinations including Slack, Discord, email, Telegram, Pushover, PagerDuty, Microsoft Teams, Resend, Gotify, Ntfy, Mattermost, Lark, Rocket.Chat, Opsgenie, Webex, Google Chat or a generic webhook. The same HTTP API that backs the dashboard also backs an MCP server, so AI tooling can list apps, read logs and help diagnose crashloops. Architecture, per the README: the control plane is a single Go binary that reconciles declarative resource records against observed Docker state, a controller-style pattern without the rest of Kubernetes; the node agent dials out to the control plane and uses the Docker socket via the Engine API; Caddy is embedded as a Go library for automatic TLS and domain routing; BuildKit is used as a Go library rather than docker build; state lives in embedded SQLite in WAL mode through modernc.org/sqlite; the HTTP API is versioned under /api/v1; the frontend is React, Vite, TypeScript, Tailwind and TanStack Router/Query, built to static assets and embedded into the control plane binary. Two binaries ship in total, and in single-node mode the agent transport runs in-process. Installation options documented are a curl-piped installer script for Linux that also installs Docker and a systemd unit, a docker run one-liner using published images for linux/amd64 and linux/arm64, and building from source with Go. Local development requires Go 1.26 or newer and Docker. Status is stated plainly as early, active development with no stable release; the project says it is not ready for production workloads and that APIs, the app spec format and on-disk data layout may change without notice. Beyond the deploy path, the README lists an IAM-style policy engine, audit logging, feature flags, alerting and the database engines as already shipped, and notes a 123-entry curated service template catalog. The README includes a detailed comparison against Coolify, Dokploy, CapRover, Dokku and Kamal, including an admitted gap on template catalog size; those competitive claims are the project's own positioning drawn from its comparison documentation. Licensing is Apache 2.0.