Windmill Labs
Windmill

Self-hosting

Your infrastructure, zero maintenance

Deploy Windmill with Docker Compose or Kubernetes in minutes. Updates, scaling, and configuration are handled for you.

Note of intent

Windmill is open source under the AGPLv3 license. We believe infrastructure software should be transparent: you should be able to read every line of code that runs your jobs, audit it, and fix it yourself if needed. Self-hosting is not a second-class option. There is no phone-home, no license server, no feature gating on the open-source edition. Your data stays on your machines, your secrets never leave your network. The Enterprise edition adds SAML/SCIM, audit logs, Git sync, and priority support on top of the same core engine.

One-command Docker deploy

A single docker compose up -d starts the full Windmill stack: server, workers, PostgreSQL, and LSP for language intelligence. Database migrations run automatically on startup. Caddy handles TLS termination out of the box. See the Docker guide for configuration options.

Dockerdocker compose
Caddy
Reverse proxy
Windmill
Windmill
Server + workers
PostgreSQL
Database

To get started, make sure Docker is running and execute the following commands:

bash
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env

docker compose up -d

Go to http://localhost and voila.

Kubernetes and Helm

The official Helm chart provisions server, worker, and LSP deployments. ConfigMaps manage environment variables. Guides are available for EKS, ECS, GCP, and Azure. Workers can be autoscaled based on job queue depth.

Kubernetes cluster
Helm
Windmill
windmill-server
Deployment
Windmill
windmill-workers
Deployment
×3
Windmill
windmill-lsp
Deployment

Works on any cloud

Windmill runs wherever Docker or Kubernetes runs. Deployment guides are available for AWS, GCP, Azure, Hetzner, Fly.io, Render, Digital Ocean, and others. It works with any PostgreSQL instance, including managed databases like RDS, Cloud SQL, or Azure Database.

Deploy Windmill on
AWS
GCP
Azure
Hetzner
Fly.io
Render
DigitalOcean
Same binary, any cloud

Simple architecture

Windmill has three components: the server (API + UI), workers (job execution), and PostgreSQL (state + queue). Everything is stateless except the database, so each layer scales independently.

Server
API + UI
PostgreSQL
State + queue
Workers
Job execution

Automatic upgrades

Upgrading Windmill means pulling a new Docker image and restarting containers. Database migrations run automatically on startup with no manual steps. A /api/health endpoint and built-in Prometheus metrics are available for monitoring. OpenTelemetry is also supported.

bash
$ docker compose pull
Pulling windmill-server ...done
Pulling windmill-worker ...done
$ docker compose up -d
Running migrations... 3 pending
Migration 0142 applied
Migration 0143 applied
Migration 0144 applied
Windmill v1.392.0 ready

Enterprise edition

The Enterprise edition includes SAML/SCIM authentication, S3 dependency caching, dedicated workers, multiplayer editing, and extended audit log retention. It is the same product as Windmill Cloud, running on your own infrastructure. Air-gapped deployments are supported with offline images and internal registries. Git sync is also included for version-controlled deployments.

WindmillOpen-source core

Scripts, flows, apps, scheduling, full API, workers, webhooks, CLI, and more.

Enterprise
SAML / SCIM
Audit logs
Git sync
Air-gapped

Frequently asked questions

Build your internal platform on Windmill

Scripts, flows, apps, and infrastructure in one place.