zook

deploy controller

Hold your
deployments.

A tiny deploy controller for Docker Compose and native systemd apps. One static Go binary. Health-gated deploys, automatic rollback, and you understand every layer.

$ zook deploy saas-staging v1.4.2
 pulling image...
 health check passed  (3/3)
 committed  saas-staging@v1.4.2

$ zook status
stack            version   health
saas-staging     v1.4.2     healthy
$ 

Two runtimes, one interface

Deploy Docker Compose stacks or native binaries under systemd — the same deploy, rollback, status commands for both.

Fail-closed by default

A deploy only counts as success if health checks pass. If they don't, zook rolls back automatically — and halts for you if the rollback also fails.

No hidden state

Per-stack release history and logs live next to your stack on disk. SSH in and read a JSON file. No database, no daemon, no central registry.

Sits alongside your tools

Not a replacement for Docker or Dockge — zook is the release controller on top. Keep what you have.

Why "zook"?

In Ghanaian pidgin, to zook means to hold — to hold right, to manage. That's the whole idea: zook holds your deployments. It manages the release lifecycle of your stacks so a bad version never becomes a bad night.

It's deliberately small. One binary, no framework, no magic. You can read the whole thing, understand every layer, and trust what it does to your server.

Three commands you'll use every day

zook deploy saas-staging v1.4.2   # pull, health-gate, commit or auto-rollback
zook status                       # what's running, and is it healthy
zook rollback saas-staging        # back to the previous good version

See the full documentation →