Peter Amiri
05/06/2026, 3:47 PMwheels deploy.
It's a port of Basecamp's Kamal into the Wheels CLI — zero-downtime Dockerized deploys to Linux servers over plain SSH. No Ruby runtime, no gem install, no second tool to learn.
<Deployment Guide>
What you get:
• One command from laptop to production: wheels deploy
• Full Kamal subcommand surface (50+ commands across 9 sub-command groups): app, proxy, accessory, build, registry, secrets, server, prune, lock, plus rollback/audit/details at the top level
• Zero-downtime rollover via kamal-proxy (the same Go binary Kamal uses)
• Secret adapters out of the box: 1Password, Bitwarden, AWS Secrets Manager, LastPass, Doppler
• --dry-run on every verb
Byte-compatible with Ruby Kamal on the server side — container names, labels, Docker network, lock paths, .kamal/secrets, .kamal/hooks/* all match exactly. A host managed by Ruby Kamal can be taken over by wheels deploy without cleanup.
One deliberate divergence: deploy.yml does not support ERB. Kamal's native ${VAR} env-var interpolation is preserved unchanged, so most ERB-using configs convert mechanically — <%= ENV["APP_NAME"] %> becomes ${APP_NAME}.