Windmill Review 2026: Setup, Pricing, Verdict
This page may contain affiliate links. If you buy through them we may earn a commission at no extra cost to you.
Verdict: Windmill is the strongest self-hosted pick for an engineering team that wants to turn scripts into scheduled workflows, webhooks, and internal tools without standing up separate infrastructure for each. It's a weak fit if nobody on your team writes code regularly, since there's no drag-and-drop path around that requirement. We self-hosted it via Docker and built five real workflows over a week, from a nightly data sync to an internal refund tool, to see where it actually holds up.
What Windmill actually is
Windmill is an open-source developer platform built around a simple idea: you write a script in Python, TypeScript, Go, Bash, or SQL, and Windmill turns it into a versioned, runnable unit you can schedule, trigger via webhook, chain into a multi-step flow, or expose as an auto-generated UI form. It's less a workflow builder with an escape hatch into code and more a code-execution platform with workflow features layered on top, the inverse of how most automation tools are built.
The core is AGPLv3-licensed, with a separate enterprise edition adding SSO, audit logs, and high-availability worker configurations. That split matters less than it does for some tools, since the free self-hosted build has no artificial cap on scripts, flows, or executions; the enterprise tier is about operational features, not unlocking the product itself.
Setting it up
We deployed Windmill with a single docker-compose up, live in about five minutes. It defaults to Postgres out of the box, along with a worker model built to scale horizontally from day one; adding a second worker for a heavier script load was a one-line change to the compose file and a restart, not a migration project. That's a meaningfully lower-friction default than tools that ship with SQLite and expect you to migrate to Postgres later once you're serious about production use. Our step-by-step guide to self-hosting Windmill covers the full setup, including the BASE_URL configuration most tutorials skip, if you want the detailed walkthrough.
Key features
Every script becomes three things at once, whichever you need: a scheduled job via cron syntax, a webhook-triggered endpoint, or a form-based internal tool with an auto-generated UI pulled straight from the script's typed parameters. Chaining scripts into a multi-step flow is a separate builder that looks more like a traditional workflow canvas, useful when a job genuinely needs branching or parallel steps rather than being a single script end to end. Windmill also versions every script automatically, so rolling back a bad deploy is a dropdown, not a git archaeology exercise.
Where it held up
Our nightly data-sync job, pull rows from Postgres, transform them, and push to an external API, was a 25-line Python script plus a schedule trigger, done in about 15 minutes, most of which was writing the transform logic we'd have written in any language regardless of tool. The bigger win showed up on our internal refund tool: a 20-line script that took an order ID and called our billing API, which Windmill turned into a usable web form automatically. Building the equivalent as even a minimal internal app elsewhere would have taken an afternoon; here it took the time to write the script itself.
Where it fell short
Integrations that already exist as pre-built nodes elsewhere are code you write yourself in Windmill. Our webhook-triggered approval flow, which touches Slack and a CRM, took about 35 minutes because we wrote small API clients for both, versus roughly 20 minutes for the same flow in a node-based tool with pre-built connectors for both services. That tradeoff is predictable once you know it's coming, but it's a real time cost on any workflow that's mostly SaaS-to-SaaS plumbing rather than custom logic.
Pricing
Self-hosting costs only your server, and the AGPLv3 core has no seat limit built in; you're bounded by how many workers you run, not a license count. If you'd rather not run that infrastructure, Windmill Cloud starts around $10/month per author, with a free tier covering roughly 1,000 executions a month, useful for testing before committing. The enterprise self-hosted tier, with SAML SSO, audit logs, and high-availability workers, is quoted starting around $40/month per author; get a current number directly from Windmill before budgeting, since enterprise pricing shifts as the product evolves.
Windmill vs the alternatives
The table below summarizes the three-way split; our full Activepieces vs Windmill comparison goes deeper on that specific head-to-head if a guided builder and a code-first one are your real two finalists.
| Windmill | n8n | Activepieces | |
|---|---|---|---|
| Core model | Script-first (Python, TS, Go, Bash, SQL) | Node-based visual canvas | Guided, piece-based canvas |
| License | AGPLv3 + enterprise edition | Sustainable Use License (fair-code) | MIT |
| Self-hosted cost | Free | Free | Free |
| Auto-generated UI forms | Yes, from script parameters | No | No |
| Best for | Engineering teams, internal tools, data jobs | Broad business automation, mixed teams | Non-technical teams, fast rebuilds |
When NOT to use Windmill
Skip Windmill if nobody on your team is comfortable writing and debugging real scripts, or if most of your workflows are stitching together common SaaS tools that already have pre-built nodes elsewhere. Every connector you don't already have becomes code you write and maintain, and that adds up fast on integration-heavy automation rather than internal data jobs.
Final verdict
Windmill earns its place for a team that already ships code and wants automation, scheduled jobs, and lightweight internal tools built on the same platform instead of three separate ones. It's not the right choice if your team needs a no-code builder a non-developer can pick up unassisted; Activepieces or n8n serve that need better. For the direct head-to-head against the tool it's compared against most, see our Windmill vs n8n comparison, and if you're weighing the wider self-hosted field, our best self-hosted Zapier alternatives and best self-hosted alternatives to Make.com roundups both cover where Windmill sits against the rest. Our open source automation tools license breakdown is also worth reading before you commit to AGPLv3's terms for your specific use case.
Frequently asked questions
Is Windmill really free to self-host?
Yes. The core is AGPLv3-licensed and self-hosting via Docker Compose costs nothing but your own server, with unlimited script executions and no seat cap enforced by the open-source build. Windmill's paid tiers add enterprise features like SAML SSO, audit logs, and a high-availability worker setup rather than gating core functionality.
Do I need to know how to code to use Windmill?
Effectively, yes. Every workflow step is a real script, and while Windmill's UI helps with structure, scheduling, and chaining steps together, it won't write the script's logic for you. If your team doesn't already write Python, TypeScript, or a similar language, a node-based tool like n8n or Activepieces will get a non-technical builder to a working automation faster.
How does Windmill compare to n8n?
Windmill trades n8n's large pre-built integration library for a code-first model where any integration is whatever you can write against an API. It wins for internal tooling and data jobs with custom logic; n8n wins when the workflow is mostly connecting existing SaaS apps that already have a ready-made node. Our full [Windmill vs n8n](/self-hosted/windmill-vs-n8n/) comparison covers the head-to-head in more depth.
Can Windmill replace an internal admin panel, not just automations?
To a real degree, yes. Since Windmill auto-generates a form UI from any script's parameters, teams use it to build lightweight internal tools, a script that takes an order ID and issues a refund, for example, without a separate frontend. It's not a full app-building platform, but for a single-purpose internal action it often removes the need to build one.