Kamal is a deployment tool created by 37signals (formerly Basecamp) that uses Docker and an integrated reverse proxy to deploy web applications to any server with zero-downtime. It follows the convention-over-configuration philosophy, allowing developers to boot a fresh Ubuntu server, add it to their configuration, and have it automatically provisioned with Docker and ready to run applications. Kamal ships as the default deployment tool in Rails 8, though it works with any web application that can be containerized.
Kamal 2.0 introduces multi-application support on a single server, built-in health checks, automatic rollbacks, and seamless integration with the Traefik reverse proxy for traffic management. The tool provides an intuitive CLI with clear feedback during deployments, manages the complete lifecycle from Docker image building to container orchestration, and handles asset bridging between old and new deployments. Configuration is defined in a single YAML file, keeping infrastructure decisions version-controlled and transparent.
Kamal is particularly appealing to Ruby on Rails developers and teams who want to deploy directly to their own servers or VPS instances without relying on managed PaaS platforms. It bridges the gap between the simplicity of Heroku-style deployments and the control of managing your own infrastructure, eliminating monthly platform fees while maintaining a polished deployment experience. Kamal works well with any cloud provider that offers bare servers, including Hetzner, DigitalOcean, and AWS EC2.