Levelrail vs Coolify, Dokploy and CapRover: An Honest Comparison
I build Levelrail, so you should discount anything I say about it. This comparison tries to earn trust a different way. Statements about other projects stay inside what their public docs and repositories say. I mark what I did not verify. And the section on what Levelrail cannot do yet is not hidden at the bottom.
Levelrail is also the youngest project here. It has no stable release. Everything below compares architecture and feature breadth, not maturity.
TL;DR
| Project | How it reaches servers | Orchestration | Ingress |
|---|---|---|---|
| Levelrail | Agent dials out over gRPC with mutual TLS | Level-triggered reconciler | Caddy, embedded |
| Coolify | SSH from the control plane | Docker and Compose per resource | Traefik (Caddy also offered) |
| Dokploy | Docker Swarm for multi-node | Swarm services and Compose | Traefik |
| CapRover | Docker Swarm | Swarm services | nginx |
What each one is good at
Coolify has the largest catalog of one-click services and a polished dashboard. It manages servers you already own over plain SSH, with nothing to install beyond Docker. If you want the broadest template list and you are fine with SSH-driven management, it is a strong pick.
Dokploy builds on Docker Swarm, so multi-node scheduling and rolling updates come from a mature, widely understood mechanism. Add a modern dashboard and Compose support, and it fits anyone who already thinks in Swarm terms.
CapRover is the veteran. It is simple, Swarm-based, with a one-click app store and a CLI. It has a big install base and a gentle learning curve.
Dokku and Kamal sit in the same space and deserve a mention. Dokku is the classic "Heroku on your box" with almost no idle footprint, and Kamal is a deliberately tiny SSH tool with no control plane at all. For one server, either can be hard to beat.
Where Levelrail makes different choices
The reasons are architectural, so I will explain each one.
An agent instead of SSH or Swarm. Each managed node runs an agent that dials out to the control plane with mutual TLS. The node opens no inbound ports. The agent talks to the Docker Engine API directly and never shells out to the docker CLI.
A reconciler instead of a script. Desired state lives in the database. A level-triggered loop diffs it against observed state and converges, then writes a status condition with a reason after every pass. A deploy counts as healthy only after the new container's readiness probe passes.
Observability in the core. Each node stores its own metrics at 15 second resolution and its own logs with full-text search. The control plane queries nodes on demand. Alerting, crashloop detection and a Prometheus remote-read endpoint come built in.
A small footprint. SQLite in WAL mode, an embedded Caddy and an embedded dashboard mean one binary on one node. The measured numbers come with caveats, so read on.
Rollback that survives cleanup. Prior images are pinned so garbage collection cannot remove the one you need.
One edition, nothing gated
Levelrail is Apache 2.0 with a single edition and no license key. Sign-in with Google, GitHub, Microsoft or any OIDC provider, TOTP and passkeys, IAM policies, an audit log with CSV export, verified backups, and deploy approvals all ship in the same binary.
I have not verified the current free-versus-paid split of the other projects. Some platforms in this space reserve features like SSO or audit logs for a paid plan or a hosted offering, and plans change. Check their pricing pages if it matters to you. This is a fact about Levelrail, not a claim about them.
About the performance numbers
The control plane's idle memory measured 67.7 MB with zero apps, 82.6 MB at 100 apps and 90.8 MB at 500 apps. Idle CPU was 0.03 percent, 0.30 percent and 1.60 percent.
Read the fine print before quoting that. I ran it once on an Apple M4 Max with a dev build, a loopback client and every app suspended, so no containers were running. Real apps add event, probe and metrics load that this test did not measure. Run-to-run variance was roughly 10 to 15 percent. I have not run the other platforms through the same harness, so this post makes no speed comparison against them.
What Levelrail does not do yet
- SAML single sign-on and SCIM provisioning. OAuth and OIDC work, those two do not.
- A big template catalog. Levelrail ships a curated set, and Coolify offers far more.
- Track record. It has fewer deployments and less community knowledge than projects that have existed for years.
- Proven public certificate issuance in every environment. TLS defaults to an internal issuer, and the public ACME path has had less field testing than the rest of the ingress.
- Windows or non-Linux nodes, and a Kubernetes compatibility layer. Those are deliberate non-goals.
How to choose
| Your situation | Look at |
|---|---|
| One server, simplest possible | Dokku or Kamal |
| Broadest template list, SSH-only management | Coolify |
| Docker Swarm is already your model | Dokploy or CapRover |
| Agent-based control plane with built-in metrics, IAM and audit on one binary | Levelrail |
To move an existing setup over, the platform importer reads a live Coolify, Dokploy or CapRover instance and shows a dry run before it creates anything. The migration guide in this series covers it.
If you have run two of these side by side, which one surprised you, and why?
Go deeper
- The full comparison with Coolify, Dokploy, CapRover, Dokku and Kamal
- Measured idle footprint and how to reproduce it
- The roadmap
- Feature status, with the evidence behind each claim
- New to Levelrail? Start with the five minute install
Try it, and tell me what breaks
Levelrail is open source under Apache 2.0. It is young, so every bug report changes what gets built next.
glincker
/
levelrail
Self-hosted deployment platform: push to git, get a running app with TLS, logs, metrics, and rollback.
Levelrail
Push to git, get a running app with TLS, logs, metrics, and rollback, on your own Linux boxes.
Table of contents
What is Levelrail?
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…
If this post saved you time, a star on the repo helps other self-hosters find it. Bugs and feature requests go in the issue tracker.
GDS K S · thegdsks.com · building Glincker · follow on X @thegdsks
A comparison is only useful if its author names the weak spots first.

Top comments (0)