Kamal
Deploy web apps anywhere from bare metal to cloud VMs with zero downtime and Docker.
Why consider Kamal?
Kamal is a lightweight deployment tool created by 37signals to deploy web applications anywhere from bare metal servers to cloud instances using Docker and SSH with zero-downtime rolling updates.
Learn Kamal by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide3 sections
Overview of Kamal
Kamal offers zero-downtime application deployments directly to bare-metal servers or cloud virtual machines without requiring complex Kubernetes clusters. By leveraging SSH connections, Docker containerization, and dynamic proxy routing, Kamal enables teams to push releases across multiple target hosts with ease.
Designed by Basecamp/37signals, Kamal uses Traefik or Kamal Proxy under the hood to coordinate blue-green traffic cutovers so active connections never drop during deployment.
Installation and Project Setup
Install Kamal as a Ruby gem or run it via containerized CLI tools:
gem install kamalInitialize a new deployment configuration in your project repository:
kamal initThis creates config/deploy.yml where you define target server IPs, container image names, and environment variables.
Deploying Your Application
Run the setup and deployment commands:
kamal setupkamal deployKamal connects to your target servers over SSH, builds or pulls your application container image, provisions accessory containers like PostgreSQL or Redis, and starts the container with automated healthchecks.
Kamal is distributed under the permissive MIT License.
Related tools
More options with a similar category or technology profile.
diskus
Minimal, fast alternative to du -sh written in Rust using multi-threaded directory traversal.
peco
Simplistic interactive filtering tool for Unix pipelines, process lists, and file trees.
Dapr CLI
Command-line tool for managing Dapr distributed application runtime environments and sidecars.
Freeze
Generate beautiful image screenshots and SVGs of code snippets and terminal outputs.