mrkeyoor.com_
Tue 15 Sept 20:22 UTC
Automationevaluationupdated 26 Aug 2026

windmill review

Windmill is a self-hosted platform that turns scripts into APIs, scheduled jobs, workflows, and internal applications. It gives developers one place to write automation in several languages, connect credentials, compose steps, and put a generated or custom interface in front of the result.

+98stars / 7d
Verdict

Our Windmill CLI build finished in 22 seconds, but all 111 test files errored when the suite could not find cargo, so contributors should budget for the full multi-language toolchain. Windmill is a strong choice for developer-owned automation that also needs generated forms and internal apps. Use it when one platform can replace scripts, schedulers, and admin panels; choose a narrower orchestrator when durable application workflows or connector-led automation is the only job.

We ran it

Lab card: what happened when we ran windmillScreenshot of windmill (windmill.dev)
Install✓ · 58s125 packages · 103 MB
Build✓ · 22s
Tests✗ · 8s0 passed · 111 failed of 111 (bun test)
Repo9671 files~1,182,155 lines of source · 103.3 MB · 50 CI workflows · tests dir

Answers from our run

Does windmill build from source?

Dependencies installed in 58 seconds (125 packages), and the build succeeded in 22 seconds. We cloned commit 74af4ed into a clean Debian container with 3 CPUs and no project-specific setup.

Do windmill's tests pass?

Not all of them: 0 of 111 passed and 111 failed when we ran the project's own test command (bun test). Some failures need services or credentials a bare container does not have.

Who should not use windmill?

Companies embedding Windmill in a paid product without reviewing the license terms: the README says redistribution, managed service use, wrapping, and some customer-facing uses require AGPL compliance or a commercial license.

What are the alternatives to windmill?

n8n, Temporal, Kestra. Our Windmill CLI build finished in 22 seconds, but all 111 test files errored when the suite could not find cargo, so contributors should budget for the full multi-language toolchain.

Setup3/5Quick Compose path, much heavier source and production setup
Docs5/5Detailed concepts, hosting, security, CLI, and runtime guidance
Community5/5Fresh releases and active issue and pull-request traffic
Maturity4/5Broad production scope with current operational bug reports

Discussed on

  1. hnWindmill: Open-source developer platform to turn scripts into workflows and UIs428 points
  2. hnShow HN: Build a discord/Slack bot to answer questions with your docs and GPT4144 points
  3. hnWindmill.dev is not "fully open-sourced (AGPLv3)"9 points
  4. hnWindmill: Open-source developer platform to turn scripts into workflows and UIs3 points

Who it’s for

Engineering teams replacing a collection of cron jobs, webhook handlers, and one-off admin scripts.
Developers who want Python, TypeScript, Go, Bash, SQL, or Rust steps inside visual workflows.
Platform teams prepared to operate Postgres, workers, secrets, and execution isolation.
Internal-tools teams that want generated forms plus a low-code app builder without giving up source-controlled scripts.

Who it’s NOT for

Companies embedding Windmill in a paid product without reviewing the license terms: the README says redistribution, managed service use, wrapping, and some customer-facing uses require AGPL compliance or a commercial license.
Teams expecting a small contributor setup: the backend needs Rust, Postgres, migrations, and language runtimes, while the frontend has its own Node toolchain.
Operators who cannot inspect destructive sync plans: issue 10842 reports wmill sync push hard-deleting variables and resources absent from the repository.
Workloads that assume a cron expression guarantees actual cadence: issue 10844 reports longer jobs shifting effective schedule intervals while the configured expression stays unchanged.
Email-driven document workflows that cannot risk silent loss: issue 10839 reports self-hosted email triggers dropping messages above roughly 8 KiB without a job or log entry.

Setup reality

Our CLI run at commit 74af4ed installed 125 packages in 58 seconds and used 103 MB. The build passed in 22 seconds. Tests failed in 8 seconds: all 111 test files errored because the setup tried to start cargo, which was absent from PATH.

That CLI result is much narrower than a Windmill server. The README's self-host path uses Docker Compose with Postgres and Caddy, while production needs worker sizing, a public base URL, secret handling, backups, and any OAuth, SSO, SMTP, or integration credentials the team enables.

Source development adds Rust, database migrations, Bun, Deno, Python, and optional execution isolation through nsjail. The repository contained 9,671 files and about 1,182,155 source lines, so contributors are entering a large multi-runtime system rather than a small workflow library.

Windmill combines scripts, workflows, and internal apps

Our checkout contained about 1,182,155 source lines, fitting a platform that turns one function into several operational building blocks. A typed Python or TypeScript entry point can become a form, an API, a scheduled job, or one step in a larger flow. The same workspace can hold credentials, state, logs, approval steps, and a custom internal application. That suits engineering teams whose automation has spread across cron, serverless handlers, notebooks, and admin pages.

Language choice is unusually broad for one system. Workers can run TypeScript through Bun or Deno, Python through uv, and code in Go, Bash, PowerShell, PHP, Rust, C#, Java, SQL, and other supported runtimes. Our checkout at commit 74af4ed contained 9,671 files and about 1,182,155 source lines, which matches the product's wide surface. Windmill is closer to an internal developer platform than a visual wrapper around shell commands.

Generated interfaces reduce routine frontend work

Across 9,671 repository files, Windmill includes both script execution and an interface builder. It parses script parameters and generates a runnable form, then lets teams compose those scripts in a flow editor. The app builder is there when the generated form is too plain. This makes sense for invoice tools, data repair jobs, support consoles, and controlled operations where a developer owns the code but another employee needs a safe button.

The platform supports triggers through schedules, webhooks, HTTP routes, Kafka, WebSockets, and email. That breadth also increases the number of paths an operator must test. The repository carries 50 CI workflow files and a tests directory, yet current reports describe edge cases in email size handling, schedule cadence, and error handlers. A workflow that matters financially needs a failure path and monitoring outside the happy-path editor preview.

What happened when we ran it

We cloned commit 74af4ed into an unprivileged Node 22 Debian container with 3 CPUs, 8 GB of RAM, and no secrets. The 103.3 MB checkout held 9,671 files and roughly 1,182,155 source lines. Our harness targeted the Bun-based CLI under ./cli/, so this result covers contributor tooling rather than a complete Windmill server. No Dockerfile was present at the repository root.

Installation succeeded in 58 seconds. Bun installed 125 packages that occupied 103 MB, and the build completed in 22 seconds. Tests then failed in 8 seconds with 0 passing and 111 failing out of 111. Every test file reported an error because the setup attempted to launch cargo and the executable was not in PATH. The log establishes the missing executable and nothing more.

That failure is useful setup evidence. The README presents the CLI as one part of a system whose backend is written in Rust. A fresh Node 22 image was enough to install and build the measured CLI, but it was not enough to execute its test setup. Contributors should follow the repository's multi-language development instructions instead of assuming the CLI directory is isolated from Rust tooling.

Self-hosting starts with Postgres and workers

The README suggests roughly 1 worker per 1 vCPU and 1 to 2 GB of RAM for hosting. Its shortest server path downloads a Compose file, a Caddy configuration, and an environment file, then starts the stack. Windmill stores its queue and application state in Postgres. Stateless API servers and workers pull jobs from that queue, while optional nsjail and PID namespaces isolate execution.

Production work begins after that first login. Teams need database backups, worker capacity, a public base URL, TLS, secret governance, and credentials for enabled integrations. The README suggests roughly 1 worker per 1 vCPU and 1 to 2 GB of RAM as a hosting rule. Runtime images must also contain the languages used by actual jobs. A Python-only automation shop has a simpler worker estate than one accepting every advertised runtime.

Sync and scheduling deserve preproduction tests

All 111 CLI test files failed in our container, and deployment semantics need their own checks too. Windmill supports local files, a CLI, a VS Code extension, and Git synchronization. Issue 10842 says wmill sync push archived missing scripts while hard-deleting missing variables and resources. The reporter found the dangerous object types included by default and confirmed that skip flags protected them. Use dry runs and treat every deletion line as a deployment decision.

Scheduling also has semantics worth testing with real job durations. Issue 10844 describes a 20-second schedule running a 50-second job, with starts effectively landing 60 seconds apart while the original expression remained displayed. The report does not describe overlapping work or duplicate processing. It describes silent cadence drift, which can matter for polling, billing, and service-level expectations. Monitor actual starts and completions instead of inferring run counts from cron text.

The project is active, and the license needs reading

Release v1.796.0 was published on August 24, 2026, two days before GitHub recorded another push. Its notes cover AI evaluation data, token-cost tracking, database migration handling, and several fixes. The repository showed 830 open issues and pull requests combined. Fresh code and same-week reports show an active project, though the queue is large enough that buyers should search for their exact trigger and deployment model.

Windmill's source build is under AGPLv3, while the README describes separate terms for the distributed Community Edition and commercial use. Internal use is explicitly allowed. Redistribution, selling a managed service, wrapping Windmill, or exposing parts directly to customers can require AGPL compliance or an agreement with Windmill Labs. For an internal engineering platform, the feature mix is convincing. For an embedded product feature, license review belongs before implementation.

Alternatives

ProjectWhat it isPick it when
n8n gh↗A visual workflow automation system with a large catalog of packaged integrations.pick this instead when non-developers will assemble most workflows from existing connectors.
Temporal gh↗A durable execution platform for application workflows written against language SDKs.pick this instead when replayable, long-running application logic matters more than internal apps and generated forms.
Kestra gh↗A declarative orchestration platform centered on YAML workflows, plugins, and scheduled operations.pick this instead when declarative orchestration and packaged tasks fit better than script-first internal tooling.

What people are saying

  1. [github-trending] windmill-labs/windmill

Sources

  1. Windmill repository and README
  2. Windmill v1.796.0 release
  3. Issue 10842 on sync deletions
  4. Issue 10844 on schedule cadence
  5. Issue 10839 on email trigger size

More automation reviews

TikTokDownloader · goreleaser · obscura · ios_rule_script · background-agents · firstmate · the whole board →