HeroCtl vs
Kamal

Brilliant for one VPS running Rails. The wall arrives at the second serious customer.

TL;DR

Kamal is 37signals' answer to legitimate frustration with Kubernetes complexity. Deploy via SSH + Docker, no control plane, no cluster, no agent. It works perfectly for 75% of cases: one VPS, monolithic app, 30s of downtime acceptable during deploy. The "you don't need orchestration" premise breaks exactly when: a customer demands an SLA, a second server enters the picture, or rolling deploys need to be genuinely safe. HeroCtl is "Kamal with a real cluster" — same conceptual simplicity, but a control plane replicated across 3+ servers and automatic failover.

Where Kamal shines

  • Minimalist philosophy — no control plane, no cluster
  • Deploy via SSH + Docker, easy to understand
  • DHH and 37signals lend credibility to the position
  • Excellent for one VPS running Rails or Node
  • No additional operational dependency

Where it falls short

  • No real orchestration — multi-server is parallel deploy to independent hosts
  • No high availability — VPS goes down = total downtime
  • No health check before promoting a new container
  • No safe rolling deploy with auto-revert
  • No service-to-service encryption
  • No dynamic router (kamal-proxy is a thin wrapper)

Side by side, no fluff

Criterion Kamal HeroCtl
PhilosophyNo orchestrationCluster with control plane
Control planeDoes not existReplicated
Real high availabilityNoYes
Automatic electionNoYes, in ~7s
Web panelNoBuilt in
Integrated routerkamal-proxyBuilt in
Health check before promoteLimitedYes
Auto-revert on failureNoYes
Service-to-service encryptionNoNative
Built-in metricsNoYes
Ideal range1 server1–500 servers
Stay on Kamal if

One server + no SLA pressure, small Rails/Node team without time to learn another tool, internal app where 5 minutes of monthly downtime does not hurt.

Switch to HeroCtl when

A customer demanded an SLA, your first server went down and you learned the hard way, service-to-service encryption matters, range 3+ servers.

Start with Community

Real HA cluster, free forever, no feature gates. Migrating from Kamal typically takes a small team 4–6 weeks.