Start / What KamalCloud is
What KamalCloud is
A control plane for Kamal. Your cloud accounts, your servers, your Kamal config -- driven from one place.
KamalCloud is a control plane for Kamal. You connect a cloud
provider and a git host, KamalCloud builds servers in your provider account, prepares a
machine to run Kamal on, and runs kamal there against your repositories.
Everything KamalCloud creates is ordinary. The servers are ordinary Linux machines in your own project. The config is ordinary Kamal config. The containers are the ones Kamal boots. Nothing is wrapped in a proprietary runtime and nothing depends on KamalCloud being reachable for your apps to keep serving traffic.
What it does
- Builds and keeps servers at Hetzner, DigitalOcean and AWS, or adopts machines you already have. It knows what each one costs, what it is running and whether it is secured.
- Runs Kamal for you on a runner machine, from the official Kamal image, against a checkout of your repository at the branch you named.
- Writes the destination config:
config/deploy.<environment>.ymland.kamal/secrets.<environment>, placed next to your repository’s owndeploy.yml. - Handles the things around a deploy: databases and caches, volumes, backups to S3, scheduled tasks, domains, certificates, published ports, maintenance mode and rollbacks.
- Tells you when something breaks, on email, Slack, Discord or a webhook of your own.
- Answers questions without a browser, through a read-only API and a CLI. Anything that would change something is proposed and waits for a person to approve it.
What it does not do
- It does not run your traffic. Requests go to your servers, through
kamal-proxy, and never through KamalCloud. - It does not write DNS. It checks whether a record resolves where it should and tells you if it does not.
- It does not replace your
deploy.yml. It reads the one in your repository for the shape of the app – roles, service name, proxy settings – and writes a destination file beside it. - It does not hold a root password. Machines are reached with SSH keys the account owns.
The shape of it
Account
├─ Provider connection ── Servers machines at one provider project
├─ Git connection GitHub, GitLab, Gitea or Bitbucket
├─ Runner the box Kamal runs on
└─ App ── Environment an environment is a Kamal destination
├─ Hosts servers, each placed in a Kamal role
├─ Variables plain and secret
├─ Domains what kamal-proxy answers for
├─ Accessories databases and caches, with backups
├─ Volumes data the containers mount, with backups
├─ Tasks commands on a schedule
└─ Deployments one run of Kamal each
Read Concepts for what each of those means, or go straight to the Quickstart.