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.

Levelrail compared with Kamal, by capability
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.

Kamal alternative guide

Longer Kamal comparison in the docs

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.

Other comparisons