Skip to content
glinckerPublic

About

Free, self-hosted alternative to Vercel, Heroku, Railway, Coolify and Dokku. Push to git, get HTTPS, logs, metrics and one-click rollback on your own servers. One Go binary, no Kubernetes.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

72 stars

Watchers

1 watching

Forks

Latest commit

 

History

1,594 Commits

Folders and files

Levelrail logo

Levelrail

The lightweight, self-hosted alternative to Vercel, Netlify, Heroku, Railway, Coolify and Dokku.
Deploy on git push, with logs, metrics, HTTPS and one-click rollback, on your own servers. HTTPS is self-signed until you enable Let's Encrypt.
One Go binary · Docker runtime · agents instead of SSH · observability built in · no Kubernetes

Latest release License: Apache 2.0 GitHub stars CI Discord
Single server: production ready Multi-arch container image on GHCR Go version MCP server Documentation Last commit PRs welcome

Website · Docs · Install · Production ready · Compare · Guides · Roadmap · Changelog · Discussions · Discord

Levelrail: your own Vercel, on your server. The lightweight, self-hosted alternative to Vercel, Heroku and Coolify.

Levelrail is an open source (Apache 2.0) self-hosted PaaS: a Vercel and Heroku alternative that runs on any Linux server you own, from a small VPS to a rack (the one measured host is a 2 vCPU, 8 GB box). It turns plain servers into a private cloud with Git deploys (forge webhooks), HTTPS (self-signed by default, Let's Encrypt when enabled), databases with verified backups, metrics, logs and alerts, without Kubernetes and without the monitoring stack you would otherwise bolt on.

Quickstart

You need a Linux server (amd64 or arm64) with systemd and root. The installer adds Docker if it is missing.

1. Install the server

curl -fsSL https://levelrail.com/install.sh | sudo sh

The last lines of output include the dashboard address and a one-time setup link:

Levelrail vX.Y.Z installed and running.

Open the dashboard:
  http://203.0.113.10:8080/login?setup=<token>

2. Create the admin account

Open the setup link and choose a password. The first sign-in opens one screen that turns on a free certificate for <dashed-ip>.sslip.io with one click (no DNS needed) and deploys your first app.

3. Deploy an app

On the server, the installer already put levelrail-cli in /usr/local/bin. Sign in once, then import a repository (levelrail-cli apps create --interactive asks for everything step by step):

levelrail-cli login --api-url http://<server-ip>:8080 --code ABCD-EF23
levelrail-cli import https://github.com/your-org/your-app --deploy

Prefer containers, a pinned version or a source build? See Installing. Want it as light as Dokku, or everything on? install.sh --profile minimal|standard|suite, see Server profiles. Coming from another platform? See Migrate to Levelrail: Coolify, Dokploy, CapRover, Dokku and compose files each get a dry run first, and the old server keeps serving.

After setup, the dashboard home shows a Connect your CLI card. Press Show my command, paste the line into your terminal, and the CLI signs in with a single-use code that expires in minutes (no password, no approval step):

logged in as "you@example.com"
token tk_9fQ2x saved to ~/.config/levelrail-cli/credentials under profile "default", expires 2027-01-18

Signing in with your password from a new device needs approval: the CLI prints the dashboard page to approve it on and the number to type. login --device also still works.

Without --deploy, import only prints the deployment plan. To see the app's address, run levelrail-cli open your-app. It prints the custom domain first, then the automatic URL.

If something fails

Step Error you see Fix
Install control plane did not become healthy within 60s systemctl status levelrail and journalctl -u levelrail -n 100 --no-pager. A port already in use is a common cause.
Install could not list releases from GitHub. Set LEVELRAIL_VERSION=vX.Y.Z to pin one. The server cannot reach GitHub. Check outbound HTTPS, or pin a release.
Install checksum mismatch for ... Do not continue. Run the installer again. Do not set LEVELRAIL_SKIP_CHECKSUM=1 to get past it.
Login start device login: ... connection refused The CLI points at the wrong address. Run export APP_API_URL=http://127.0.0.1:<dashboard port> and try again.
Import plan import: ... connection refused The control plane is not running. Start it with systemctl start levelrail.

More fixes: Troubleshooting. Full install options (Docker image, pinned version, source build): Installing. Deploy from a local project with levelrail-cli up: One command quickstart. Server profiles (install.sh --profile minimal|standard|suite): Server profiles. Migrating from another platform? levelrail-cli import platform coolify|dokploy|caprover --dry-run shows what would be created first, and the old server keeps serving. Full guide: Migrate to Levelrail.

Terminal recording: install Levelrail, then deploy an app that goes live over HTTPS
Install, then deploy
Terminal recording: deploy with a readiness gate, then roll back to the previous image
Gated deploy, one-step rollback

Why people pick Levelrail

  • Lightweight. About 200 MB of RAM and roughly 1.5% of one CPU idle, measured on a 2 vCPU, 8 GB Linux test box with no apps under load and the default feature set (one run, 2026-10-19). Numbers and method.
  • Agents, not SSH. Each node runs a small agent that dials out over mTLS and talks to Docker's Engine API directly. No inbound ports, no shelling out to the docker CLI, no polling loops.
  • Observability included. Per-node metrics at 15 second resolution, searchable logs, deploy markers, traces, SLO burn, alert inbox and an idle-footprint health page. No Grafana stack to install.
  • Deploys that protect you. Readiness-gated rollouts, pinned images for rollback, canary releases that roll back on errors, deploy diffs, approvals and freezes.
  • Secure by default. Hash-chained audit log you can verify, SSRF-guarded outbound calls, envelope-encrypted secrets with key rotation, scoped tokens, passkeys and TOTP 2FA, OAuth and OIDC sign-in, IAM policies, signed releases. SAML single sign-on and SCIM provisioning are available as a beta feature, off by default.
  • Built for AI agents. An MCP server with over 240 tools in on-demand toolsets (small default list, about 2.4k tokens; see tool surface), a scoped-token permission model and an agent skill.

Production ready, with receipts

Single-server deployments are production ready today. Multi-node and a handful of newer features are labelled beta, and every label links to its evidence.

Claim Evidence
Every feature is labelled stable or beta Feature status: the tests, live e2e runs and docs behind each label
Survives failures Resilience: disk full, agent link loss, database damage with guided restore, safe-mode boot, reconcile storm protection
Safe upgrades and rollback Tested upgrade matrix, downgrade refusal, one-click rollback and clean shutdown
Measured, not promised Benchmarks: idle footprint, ingress throughput, limits, with the method next to every number
Verified backups Every backup is re-downloaded and checksummed, with scheduled restore drills
Tamper-evident security Verifiable audit chain, security policy, signed releases and SBOM scanning

Levelrail vs Coolify, Dokploy, CapRover and Dokku

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
Node control Reverse-dialed agent SSH + CLI SSH + Engine API Swarm API Local bash
Orchestration Level-triggered reconciler Compose Swarm Swarm Bash scheduler
Built-in metrics and logs Yes Opt-in add-on Separate binary No No
Rollback Pinned images, readiness-gated Health check off by default Swarm rollback Manual Default scheduler: none
Backup verification Automatic, all 8 engines Non-empty check None None No backups
SSO and provisioning OAuth (20 providers) and generic OIDC; SAML and SCIM (beta, off by default) See their docs See their docs See their docs See their docs
Audit log Hash-chained, verifiable, CSV export, forwarding to syslog, webhook or bucket See their docs See their docs See their docs See their docs
IAM Allow and Deny policies per app or database, scoped tokens See their docs See their docs See their docs See their docs

This is positioning, not a ranking, and every project here is worth using. Where Levelrail trails: it is the youngest project here, with fewer users and less production mileage, and its SAML single sign-on and SCIM provisioning are beta (details). Its template catalog (about 360 entries) is in the same range as Coolify's, but only a sample is deployed end to end (ADR 015). The full, sourced comparison is in Comparison.

What you get

  • Deploys: Push to your git host (GitHub, GitLab, Bitbucket, Gitea webhooks), deploys start from a forge webhook (a native git push remote is beta and off by default), preview environments per pull request (stable on GitHub, beta on GitLab and Bitbucket), framework presets (Next.js, Go, React, Spring Boot and more), Dockerfile, Compose or image deploys, canary and blue-green rollouts. Readiness-gated cutover is live-tested with zero failed requests on a single node; multi-node is beta. Deploying apps
  • Domains and TLS: Embedded Caddy ingress. The default certificate is internal (self-signed). Public Let's Encrypt is one toggle and was verified in one live run; renewal and DNS-01 wildcards are unverified. Custom certificates can be uploaded. Per-app abuse protection. Domains
  • Databases: Postgres, MySQL, MariaDB, MongoDB, Redis, KeyDB, Dragonfly and ClickHouse with scheduled backups, Postgres point-in-time recovery, restore, and password rotation. Databases
  • One search for everything: Cmd+K across apps, databases, nodes, templates and actions, filtered by what you may do. Search
  • Servers: Add nodes with a one-time token, WireGuard mesh, zones and failure-domain spreading, placement what-if. Multi-node
  • Templates: about 360 one-click services, with a smoke test that brings up the top 50 (48 pass today, status). Catalog
  • Identity and access: Password, passkeys, TOTP, OAuth with 20 providers plus generic OIDC, IAM policies, teams, a hash-chained audit log with CSV export. SAML single sign-on and SCIM provisioning are beta and off by default. Identity and access, SAML and SCIM
  • Plugins: A signed plugin marketplace with one-click install, dashboard panels and first-party alert channels. Plugins
  • Automation: One HTTP API behind the dashboard, a CLI and an MCP server. AI never sits in the reconciliation path. CLI, AI control
  • Pipelines, previews, cost budgets, sleep when idle, status pages and more. See Product tour.
Levelrail live deploy log
Live deploys
Levelrail command palette search
One search for everything
Levelrail control plane health page
Health and footprint
Levelrail database backups
Verified backups
Levelrail plugin marketplace
Plugin marketplace
Levelrail security center
Security center
More screenshots (50 screens, shown in your GitHub theme, dark or light)
Levelrail dashboard: Account activity feed
See every sign-in and change made to your account.
Levelrail dashboard: Account danger zone
Export your data or delete your account safely.
Levelrail dashboard: Passkey manager
Add, test and remove passkeys, synced or device-bound.
Levelrail dashboard: Deploy strategy and health settings
Deploy strategy, health checks, and rollout behavior.
Levelrail dashboard: Environment editor with masked secret values
Environment variables, with secrets masked.
Levelrail dashboard: App metrics: CPU, memory, network, disk charts with deploy markers
Per-app metrics, with deploy markers on every chart.
Levelrail dashboard: App overview: health, URLs, deploys, metrics summary
Each app's overview in one place.
Levelrail dashboard: CPU and memory limits for an app
Resource limits per app.
Levelrail dashboard: App source and repository connection
Where an app's code comes from.
Levelrail dashboard: All apps with status and last deploy
Every app, its health, and its last deploy.
Levelrail dashboard: Storage page showing the log archive and build cache sections
Archive logs to a bucket on a schedule.
Levelrail dashboard: Backups: targets and history
Backups with a history you can restore from.
Levelrail dashboard: Beta features list
Opt in to beta features one at a time.
Levelrail dashboard: Build cache panel for an app
Build cache: rebuilds reuse unchanged layers.
Levelrail dashboard: Build performance settings
Build speed: how long builds take and what they cost.
Levelrail dashboard: Deploys page with the GitHub Actions reporting card (tall capture)
Report deploys back to GitHub Actions.
Levelrail dashboard: CLI access: this server, tokens, pending logins
Sign in the CLI from your own machine, with tokens you can revoke.
Levelrail dashboard: Command palette (Cmd+K) open over the app overview
Jump to any app or action with Cmd+K.
Levelrail dashboard: Command palette search results
One search across apps, databases, nodes and actions.
Levelrail dashboard: Control plane health: goroutines, DB latency, reconcile pass
Live health of the control plane itself.
Levelrail dashboard: Dashboard home
The control plane at a glance.
Levelrail dashboard: Database access and credentials
Connection details and password rotation for a database.
Levelrail dashboard: Database overview scrolled to backups and placement
Database backups and placement, on the database's own page.
Levelrail dashboard: Database overview: connection, status, resources
One database, its connection details, and its state.
Levelrail dashboard: Managed databases list
Managed Postgres and friends, next to your apps.
Levelrail dashboard: Deploy history for one app (Current, Visit, Logs, Promote)
Deploy history, with promote and logs for each release.
Levelrail dashboard: One deploy, Roll out tab (live timeline)
Watch a deploy roll out, step by step, as it happens.
Levelrail dashboard: Deployments across all apps
Deployments across the whole control plane.
Levelrail dashboard: Domains with TLS status and routing
Domains, certificates, and where each one routes.
Levelrail dashboard: Encryption keys
Master and per-app encryption key status and rotation.
Levelrail dashboard: New app page with the framework preset picker
Pick a framework preset and the build settings fill in for you.
Levelrail dashboard: Get started checklist
A guided checklist from install to your first deploy.
Levelrail dashboard: Automatic cleanup (janitor) settings
Automatic cleanup of old images, containers, and logs.
Levelrail dashboard: Load balancer upstreams and health checks
Load balance an app across replicas with health checks.
Levelrail dashboard: App log viewer with search and filters
Search and tail container logs without installing anything.
Levelrail dashboard: Private networks: which apps may talk to each other
Private networks decide which apps can reach each other.
Levelrail dashboard: Node provider settings
Add a server from a cloud provider.
Levelrail dashboard: Node list: primary server, online, builds only
Nodes the control plane places apps and databases on.
Levelrail dashboard: Pipeline run: stages, jobs, live job log
A pipeline run with its stages, jobs, and live log.
Levelrail dashboard: Pipelines across apps
Pipelines: CI-style jobs that run on the control plane.
Levelrail dashboard: Installed plugins
Manage the plugins you have installed and their permissions.
Levelrail dashboard: Plugin marketplace
Install signed plugins in one click.
Levelrail dashboard: Security center: score, checklist, affected items
A security score with the checks that need attention.
Levelrail dashboard: Account settings: profile and password
Your account, your password, your sessions.
Levelrail dashboard: General settings
Instance name, dashboard URL and defaults.
Levelrail dashboard: Settings health
Spot misconfigured settings and fix them with one click.
Levelrail dashboard: First-run setup checklist
First-run setup, step by step.
Levelrail dashboard: Public status page settings
A public status page for your apps.
Levelrail dashboard: Storage destinations: empty state with next steps
Connect an S3-compatible bucket for backups and archives.
Levelrail dashboard: Template catalog
Install a known service from the template catalog.

All captured from a real running control plane. Walk through them in the Product tour.

Guides

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

Guide What you learn
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 vs Coolify, Dokploy, CapRover, Dokku and Kamal Where each one fits

For AI agents and crawlers

Community and support

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

Star History Chart

Levelrail contributors

License

Apache 2.0, see LICENSE.

Built by

Levelrail is built by Gagan Deep Singh, founder of GLINR STUDIOS and theSVG. Sister projects: theSVG (brand icon library), theauth (open-source auth for AI agents and humans) and AskVerdict AI. Say hello at thegdsks.com.

GLINR STUDIOS

Powered by GLINR STUDIOS · icon from theSVG

About

Free, self-hosted alternative to Vercel, Heroku, Railway, Coolify and Dokku. Push to git, get HTTPS, logs, metrics and one-click rollback on your own servers. One Go binary, no Kubernetes.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

72 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages