Helmsman is a local, view-only browser UI for a Kamal project. It shows containers, logs, proxy traffic, the audit log, and deploy.yml. It does not deploy, roll back, reboot, or edit the config.
Download the binary from here and run the binary from the root of the project you want to manage. For example, for a Rails app that deploys with Kamal:
From the Helmsman source directory:
cargo build --releaseThe compiled binary will be created at:
target/release/helmsmanYou can run it directly from that path, or copy it somewhere on your PATH.
Optional local install:
mkdir -p ~/.local/bin
cp target/release/helmsman ~/.local/bin/helmsmanMake sure ~/.local/bin is on your shell PATH if you use the optional install.
Run the binary from the root of the project you want to manage. For example, for a Rails app that deploys with Kamal:
cd /path/to/my-rails-app
/path/to/helmsman/target/release/helmsmanIf you copied the binary to your PATH:
cd /path/to/my-rails-app
helmsmanHelmsman uses the current working directory as the active project. On startup it searches that project for:
deploy.ymlIt checks the project root first, then the conventional Kamal path:
config/deploy.ymlIf neither exists, it searches subdirectories for the first deploy.yml it can find. Kamal commands still run from the project root where you started Helmsman.
Then open:
http://127.0.0.1:3000
Helmsman only runs these Kamal commands. Each one ends with --skip-hooks:
kamal app details --skip-hookskamal proxy details --skip-hookskamal accessory details <name> --skip-hookskamal app logs --lines N --skip-hookskamal proxy logs --lines N --skip-hookskamal audit --skip-hooks
Kamal 2.12 still runs hooks when that flag is set on a subcommand, so Helmsman also loads a small Ruby file into those processes that makes hook lookup miss. A hook in the project cannot run.
It does not run kamal deploy, kamal rollback, kamal server exec, or any boot, start, stop, reboot, or remove command. Accessory names are checked before they are passed through, and log line counts are capped.
- Commands run from the project directory where you started Helmsman.
deploy.ymlis displayed and is not written.- Older deploy runs, if any, stay in
helmsman.sqlitein that project directory. - Helmsman passes through
HOMEandSSH_AUTH_SOCKto Kamal. - Helmsman runs Kamal with the current shell
PATHfirst, then appends/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin. - If the project has
.ruby-versionand the matching Ruby exists in RVM, Helmsman adds the matching RVM Ruby and gem paths before running Kamal.