A Compose control plane that does not own your containers.

Windlass gives you projects, Git deployments, HTTPS domains, logs, terminals and backups on your own server. It shells out to the real docker compose rather than replacing it, so removing the panel leaves everything running.

curl -fsSL https://get.windlass.run | sudo sh

Ubuntu or Debian with Docker · Apache-2.0 · one Go binary and an embedded UI

< 40 MiBidle footprint, enforced by CI
0extra services: no Redis, no Kubernetes, no job runner
compose.yamlis the source of truth, on disk, yours

It does not own your containers

Compose files on disk are the source of truth, and Windlass runs the real docker compose in that directory. Stop the panel, remove it, or hand-edit a compose.yaml: your applications keep serving, and the panel picks the change up.

Deployments that survive a restart

Manual, Git, webhook, template and rollback deployments, as crash-resumable jobs with replayable events. A deploy interrupted halfway does not leave a half-built stack behind.

HTTPS without a certificate chore

Caddy owns routing and certificates. Windlass touches only its own tagged route objects, so a route you added by hand is still there afterwards.

Small enough to forget about

One Go process serving the API and the frontend, with CI enforcing an idle footprint under 40 MiB. No Redis, no Kubernetes, no Swarm, no separate job runner.

The things you actually open a panel for

Container logs, a browser terminal, host and container metrics, image cleanup, file and environment editing, and Compose-native CPU and memory limits.

Backups and accounts

Local and S3-compatible backups with optional schedules. Local users, roles, TOTP, and optional OAuth.

Try deleting it

That is the test most panels fail. Windlass writes ordinary Compose projects to a directory you choose, so docker compose up in that directory does what you expect with or without the panel installed. The documentation has a page devoted to it.

Life without the panel