Windmill
Developer platform for scripts, flows and apps
Windmill is a developer platform that turns scripts into workflows, APIs, and internal apps with scheduling and approvals. It targets engineers automating internal tooling. It is deployed via Docker with PostgreSQL.
Key features
- Scripts in Python, TypeScript and more
- Auto-generated UIs for scripts
- Flows with branching and retries
- Fast Rust execution engine
Pros & cons
Strengths
- Great for developer automation
- Fast and scalable
- Code-first approach
Trade-offs
- More technical than no-code tools
- Requires Postgres
Windmill replaces
Last reviewed Aug 26, 2026 · 879 words
Pick Windmill when the automation you want to build is easier to write than to draw. n8n, Node-RED and Zapier all start from a canvas and make you fit your logic into nodes; Windmill starts from a script file in Python, TypeScript, Go, Bash or SQL, generates a form and an API for it automatically, and then lets you chain scripts into flows and expose them as internal apps. For a developer who already knows how to write the thing, that ordering removes the most annoying part of every no-code tool: the moment your logic outgrows the boxes and you end up writing code inside a node anyway.
What you get for one Postgres and 1 GB of RAM
Windmill is a Rust server with a PostgreSQL database, and the database is not optional: it is the job queue, the state store and the audit log. The quickest honest way to run it is the project's own docker-compose.yml, which brings up the server, one or more workers, a Postgres container and a Caddy proxy. Trimmed to the essentials:
services:
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: changeme
POSTGRES_DB: windmill
volumes:
- ./db:/var/lib/postgresql/data
windmill_server:
image: ghcr.io/windmill-labs/windmill:main
environment:
DATABASE_URL: postgres://postgres:changeme@db/windmill?sslmode=disable
MODE: server
ports:
- "8000:8000"
depends_on: [db]
windmill_worker:
image: ghcr.io/windmill-labs/windmill:main
environment:
DATABASE_URL: postgres://postgres:changeme@db/windmill?sslmode=disable
MODE: worker
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on: [db]
The first login on port 8000 is [email protected] with password changeme; change both before anything else. The catalogue's 1 GB minimum is right for the server plus one worker on a quiet instance. Workers are where the CPU goes, because a Python script with heavy dependencies gets a fresh virtual environment cached per dependency set, and the first run of a new set can take a minute. The Docker Compose patterns guide covers the Postgres backup half; here the database is the entire state, so back it up like it matters.
Scripts become forms, APIs and cron jobs without extra work
Write a Python function with typed arguments in the built-in editor and Windmill infers a form from the signature: a str becomes a text box, an int a number field, a datetime a date picker. The same script is immediately callable over HTTP with a token, runnable on a cron schedule, and triggerable by a webhook. Secrets and connection strings live in a resource store and are injected as arguments, so a script that posts to Slack or queries Postgres carries no credentials in its body. That is the 80 percent case for homelab automation: "run this every night and tell me if it fails", with retries, timeouts and a run history that shows the exact inputs and logs of every execution.
Flows add branching, loops, parallel steps and approval gates, and the flow editor is a canvas but every node is a script you can open and read. Apps are a drag-and-drop UI builder on top, competing with Retool for the "internal dashboard that calls three scripts" use case. Windmill is also the more credible Retool replacement in the directory precisely because the app layer sits on real code.
Where n8n and Node-RED still win
For hooking two SaaS APIs together with no code, n8n has hundreds of prebuilt integration nodes and Windmill has a smaller hub of community scripts. If the task is "when a form is submitted, add a row to a sheet and send an email", n8n gets there faster and non-developers can maintain it. Node-RED remains the right pick for home automation flows tied to MQTT and Home Assistant, where the message-passing model fits and latency matters. Windmill's sweet spot is the layer above: operational scripts, data jobs, and internal tools for people who would rather read Python than a diagram. The automation category lays the three out side by side, and Zapier refugees usually land on n8n first and move to Windmill when they hit the wall.
Licensing and the enterprise line
The core is AGPL-3.0 and fully featured for self-hosting: unlimited users, scripts, flows and workers. The enterprise edition adds SSO beyond the basics, audit log retention controls, dedicated worker features and support, priced per seat and aimed at companies. For a homelab or a small team the open edition is not a trial; it is the product. The catalogue's "more technical than no-code tools" is the accurate warning, and it is also the reason to choose it.
What I'd do
Run the compose stack with Postgres 16 on a box with 2 GB of RAM to spare, one server and two workers, behind Caddy with HTTPS and the default admin credentials changed on minute one. Move every cron job and shell script on your servers into it over a month so they gain retries, logs and a history. Keep n8n if you already run it for SaaS glue; use Windmill for everything that starts as a script. Nightly pg_dump of the database, because that file is your entire automation estate.
Compare Windmill
17 head-to-head comparisons.
- Windmill vs n8n
- Windmill vs Huginn
- Windmill vs ToolJet
- Windmill vs Appsmith
- Windmill vs Kestra
- Windmill vs Budibase
- Windmill vs Activepieces
- Windmill vs Node-RED
- Windmill vs Skyvern
- Windmill vs Automa
- Windmill vs Trigger.dev
- Windmill vs Automatisch
- Windmill vs StackStorm
- Windmill vs Apache NiFi
- Windmill vs Inngest
- Windmill vs Cronicle
- Windmill vs autobrr
Similar automation & workflows apps
n8n
Automation & WorkflowsWorkflow automation with a node-based editor
Replaces Zapier, Make
Firecrawl
Automation & WorkflowsTurn websites into clean data for AI applications
Replaces Apify
Crawl4AI
Automation & WorkflowsOpen-source web crawler built for LLM data pipelines
Replaces Firecrawl
Huginn
Automation & WorkflowsAgents that monitor and act on your behalf
Replaces IFTTT, Zapier
Apache Airflow
Automation & WorkflowsProgrammatically author, schedule and monitor workflows
Replaces AWS Step Functions, Azure Data Factory
ToolJet
Automation & WorkflowsLow-code platform for building and automating business tools
Replaces Retool, Microsoft Power Apps