Compare, self-hosted
Levelrail vs Kamal
Deliberately minimal: no control plane, database or agent, running over SSH from your machine or CI.
As of 2026-10. Statements about Kamal come from its own public documentation, linked on each row.
The short verdict
Kamal is good at: as few moving parts as possible; and pairs with kamal-proxy for zero-downtime cutover; and no dashboard needed, which suits some teams.
Choose Kamal when you want the fewest possible moving parts and do not need a dashboard.
Levelrail differs here: desired state lives in a database, with a reconciler recording a status reason after every pass; and agents dial out, so CI uses a scoped API token instead of holding SSH keys; and adds a dashboard, deploy history, rollback and built-in observability, and is heavier by design. Levelrail is pre-release, a single node is the well-tested path and multi-node is in beta, so its track record is much shorter than Kamal's.
Where Kamal is ahead
- Multi-node. Kamal: SSH to each server. Levelrail: partly, enrollment verified locally; WireGuard mesh still unverified.
Where Levelrail is ahead
- No SSH: agents dial out. Levelrail: Agents dial out over mTLS; no inbound ports. Kamal: no, sSH from your machine or CI to each server.
- Level-triggered reconciler with status reasons. Levelrail: Desired state converged, status condition with reason per pass. Kamal: no, none: it runs Docker commands per deploy.
- Metrics and log search built in. Levelrail: Node-local metrics at 15s and full-text log search. Kamal: no, bring your own.
- One-click rollback with pinned images. Levelrail: Prior images pinned so cleanup cannot remove them. Kamal: partly, rollback to chosen version; old containers pruned after 3 days.
- Encrypted secrets for env vars. Levelrail: Envelope-encrypted, masked in UI, injected at container create. Kamal: partly, secrets from files or password managers; host env file, no encryption documented.
- IAM, audit log and 2FA in the free edition. Levelrail: Allow/Deny policies, audit log and TOTP in one edition. Kamal: partly, audit log of commands per server; no users, roles or 2FA.
28 capabilities side by side
Yes, partly and no are what each project's own documentation states. "Not stated" means their docs do not say, which is not the same as no. Levelrail maturity tags (beta, stable) come from its feature status page.
| Capability | Levelrail | Kamal |
|---|---|---|
| Architecture | ||
| No SSH: agents dial out | Yesbeta Agents dial out over mTLS; no inbound portsSource for Levelrail, No SSH: agents dial out | No SSH from your machine or CI to each serverSource for Kamal, No SSH: agents dial out |
| Level-triggered reconciler with status reasons | Yes Desired state converged, status condition with reason per passSource for Levelrail, Level-triggered reconciler with status reasons | No None: it runs Docker commands per deploySource for Kamal, Level-triggered reconciler with status reasons |
| Single control plane binary | Yes One control plane binary, plus one agent per extra nodeSource for Levelrail, Single control plane binary | Not applicable |
| Observability | ||
| Metrics and log search built in | Yes Node-local metrics at 15s and full-text log searchSource for Levelrail, Metrics and log search built in | No Bring your ownSource for Kamal, Metrics and log search built in |
| Crashloop diagnosis with last log lines | Yes Crashloop detection surfaces the last log linesSource for Levelrail, Crashloop diagnosis with last log lines | Not stated in their docs |
| Deploys | ||
| One-click rollback with pinned images | Yes Prior images pinned so cleanup cannot remove themSource for Levelrail, One-click rollback with pinned images | Partly Rollback to chosen version; old containers pruned after 3 daysSource for Kamal, One-click rollback with pinned images |
| Readiness-gated deploys (zero-downtime on one node) | Yes Cutover only after the readiness probe passes. Live-tested on one node; multi-node is betaSource for Levelrail, Readiness-gated deploys (zero-downtime on one node) | Yes Zero-downtime cutover with kamal-proxySource for Kamal, Readiness-gated deploys (zero-downtime on one node) |
| Preview environments per pull request | Yesstable Stable on GitHub, beta on GitLab and BitbucketSource for Levelrail, Preview environments per pull request | Not stated in their docs |
| Docker Compose apps | Partly Pre-built images from the dashboard; git deploys can buildSource for Levelrail, Docker Compose apps | Not stated in their docs |
| Git push deploys from GitHub, GitLab, Bitbucket | Partly All four documented; GitLab and Bitbucket previews are beta, synthetic-webhook testedSource for Levelrail, Git push deploys from GitHub, GitLab, Bitbucket | Not stated in their docs |
| Builds from source without a Dockerfile | Partly Railpack detects Node, Python, Go and more; Ruby is rejectedSource for Levelrail, Builds from source without a Dockerfile | Partly Dockerfile required by default; buildpacks only when configured explicitlySource for Kamal, Builds from source without a Dockerfile |
| Scheduled jobs | Yes Per-app cron jobs with run history, logs, retries and alertsSource for Levelrail, Scheduled jobs | Not stated in their docs |
| Data | ||
| Managed databases with scheduled backups | Partly Many engines, scheduled S3 backups; Postgres restores tested liveSource for Levelrail, Managed databases with scheduled backups | Partly Accessories run containers such as MySQL; no backups documentedSource for Kamal, Managed databases with scheduled backups |
| Encrypted secrets for env vars | Yes Envelope-encrypted, masked in UI, injected at container createSource for Levelrail, Encrypted secrets for env vars | Partly Secrets from files or password managers; host env file, no encryption documentedSource for Kamal, Encrypted secrets for env vars |
| Networking | ||
| Private networking between apps or nodes | Partly Named networks and allow rules; cross-server mesh unverified on real hostsSource for Levelrail, Private networking between apps or nodes | Partly Containers share a custom Docker network per host, no cross server networkingSource for Kamal, Private networking between apps or nodes |
| Load balancing across replicas | Partly Experimental and flag gated; not tried across real hostsSource for Levelrail, Load balancing across replicas | Not stated in their docs |
| Request firewall, rate limits, bot protection | Yes Ordered rules, IP bans, bot handling, challenges and rate limitsSource for Levelrail, Request firewall, rate limits, bot protection | Not stated in their docs |
| Automatic TLS certificates | Partly Internal issuer by default; public ACME verified once liveSource for Levelrail, Automatic TLS certificates | Partly kamal-proxy Let's Encrypt HTTPS, only with one server and host setSource for Kamal, Automatic TLS certificates |
| Platform | ||
| Multi-node | Partlybeta Enrollment verified locally; WireGuard mesh still unverifiedSource for Levelrail, Multi-node | Yes SSH to each serverSource for Kamal, Multi-node |
| One-click service templates | Yesbeta About 360 templates; a sample is live-deployed in e2eSource for Levelrail, One-click service templates | Not stated in their docs |
| Autoscaling | Partly Beta: CPU, memory or request-rate scaling with cooldowns and reasonsSource for Levelrail, Autoscaling | Not stated in their docs |
| CLI and HTTP API | Yes CLI and REST API documented; MCP server is betaSource for Levelrail, CLI and HTTP API | Not applicable |
| Deploy and alert notifications | Partly 18 channel kinds in beta, tested only against mocksSource for Levelrail, Deploy and alert notifications | Partly Hooks run custom scripts; no built-in Slack, Discord or emailSource for Kamal, Deploy and alert notifications |
| MCP / AI assistant integration | Yesbeta MCP server with over 240 tools in on-demand toolsetsSource for Levelrail, MCP / AI assistant integration | Not stated in their docs |
| Runs on servers you own | Yes Runs on Linux servers you provideSource for Levelrail, Runs on servers you own | Yes Runs against servers you own over SSHSource for Kamal, Runs on servers you own |
| Open source license | Yes Apache 2.0, one edition, no paid tierSource for Levelrail, Open source license | Yes Released under the MIT LicenseSource for Kamal, Open source license |
| Security | ||
| IAM, audit log and 2FA in the free edition | Yesstable Allow/Deny policies, audit log and TOTP in one editionSource for Levelrail, IAM, audit log and 2FA in the free edition | Partly Audit log of commands per server; no users, roles or 2FASource for Kamal, IAM, audit log and 2FA in the free edition |
| SAML or SCIM single sign-on | Partly SAML and SCIM are experimental and off by defaultSource for Levelrail, SAML or SCIM single sign-on | Not applicable |
All ten projects are on the full matrix. Product names and logos belong to their owners and are used for identification only.
Migrating from Kamal
No importer for Kamal. Point Levelrail at the same images and recreate configuration.
Questions about Levelrail and Kamal
Is Levelrail a good alternative to Kamal?
Deliberately minimal: no control plane, database or agent, running over SSH from your machine or CI. How Levelrail differs: Desired state lives in a database, with a reconciler recording a status reason after every pass. Agents dial out, so CI uses a scoped API token instead of holding SSH keys. Adds a dashboard, deploy history, rollback and built-in observability, and is heavier by design. Choose Kamal instead when you want the fewest possible moving parts and do not need a dashboard. Levelrail is pre-release, so check the comparison for what it does not do yet.
When should I choose Kamal instead of Levelrail?
Choose Kamal when you want the fewest possible moving parts and do not need a dashboard.
Can I move from Kamal to Levelrail?
No importer for Kamal. Point Levelrail at the same images and recreate configuration.
Is Levelrail ready to replace Kamal in production?
Pre-release: no stable release; APIs, the app spec and the on-disk layout can change between betas. A single node is the well-tested path; multi-node is in beta and the WireGuard mesh is not battle-tested. Check the feature status page before moving anything you cannot afford to lose, and keep Kamal running alongside until you trust the result.