Blocks · Kamal
Your deployment, live, beside the shell that ships it.
Servers, containers, deploys, logs and a map of the fleet for a Kamal project, read over SSH. Deploy from the shell and watch it land.
Recorded against a made-up fleet.
Deploy in the terminal. Roll back from the block.
Run kamal deploy beside the block and the new version arrives as LIVE. Rollback, with its confirmation, returns to any version whose container is still there.
Follow and search container logs.
Follow one container's output in the drawer, open the full view, and search for the lines you need.
Stop, start and restart.
Each action on a container asks first, then shows what kamal printed. Hide the deploys when you need the room.
Wherever you want it.
Beside the shell, filling the window with ⇧Esc, or in a tab of its own.
Everything running, one environment at a time.
- Opens where the project is
- ⇧⌘T → Kamal, or the lightbulb in a terminal's header when its project has config/deploy.yml. One block per tab.
- Every environment
- Production and each destination, with every config deployed there. A config it cannot read is named, with what was left out.
- Every host
- CPU, memory, disk and network for the fleet; Show hosts opens a card each, with a CPU sparkline, load, ports and its containers.
- Services and accessories
- As a list or as cards: health, version or image, address, uptime and restarts, CPU, and memory against its limit or its host's.
- Sort any column
- Name, version, host, uptime, CPU or memory, in either order. Cards follow the same order.
- Links to what it serves
- Each service's domain opens in the browser, https when the proxy terminates TLS.
Act on it, with a question first.
- Restart, stop, start, reboot
- Any container or accessory. Each action asks first, then runs kamal with that service's config.
- Roll back
- Any version whose container is still on the servers. The run's card shows how long it has taken and its last line.
- Release a deploy lock
- A held lock shows in the header with who holds it; the service's actions wait until it is released.
- Output where you can read it
- Every run's output, led by the kamal command it ran, goes to the drawer under the block.
When a server does not answer.
- Host by host
- Until a server answers, each host shows Connecting, Read, SSH failed or Docker failed, with a fix and a command to copy.
- The key it needs
- A refused key lists the keys offered, whether each needs a passphrase, and which one to fix.
- Read-only probes
- Plain POSIX sh over SSH as the deploy user, every three seconds, shared by every viewer of the host. No agent, no sudo.
- Reads never run kamal
- Configs are read as YAML, so no secret manager is called. ERB is not evaluated, and a warning says so.