windmill-labs/windmill
Code-first platform for workflows, apps and AI agents, on the fastest self-hostable orchestrator (benchmarked against Airflow, Prefect and Temporal). Business teams build with AI, engineers control what ships. Open-source alternative to Lovable, Retool and n8n.
What is Windmill?
Windmill is an open-source platform you host yourself that lets you build workflows, web apps, and AI agents by writing code. It's described as a self-hostable alternative to tools like Retool, n8n, and a simplified Temporal.
Core idea: scripts become everything
You write a small, focused script (a plain function) in a language like Python, TypeScript, Go, or Bash. Windmill then automatically turns that script into:
- A shareable UI (a web form generated from the script's parameters)
- An API endpoint
- A cron job (scheduled task)
- A CLI command
You can chain scripts together into flows (workflows), build full-code React or Svelte apps on top, or compose them into AI agents and data pipelines.
How it works
- Write a script — in the browser-based editor or locally with the CLI/VS Code extension, synced with Git.
- Windmill generates the frontend — your script's typed arguments become a form, an HTTP endpoint, and a CLI command automatically.
- Chain scripts into flows — visually or as code, with each step running as its own job with its own logs.
- Build UIs — on top of your scripts and flows.
AI with guardrails
Business teams and engineers work on the same instance. AI sessions let non-engineers build scripts, flows, and apps in a workspace fork with a live preview and a diff to review before deploying. Protection rulesets can block direct deployment, so changes reach production only after an engineer reviews them. AI-built code runs on its own worker groups or a separate instance.
Data handling
- Data tables — each workspace gets managed Postgres tables, queried with type-checked SQL without exposing connection strings.
- DuckDB — scripts can query S3/Azure files (CSV, Parquet, JSON), data tables, Postgres, MySQL, and BigQuery in SQL.
- DuckLake — stores large datasets as lakehouse tables in workspace object storage, queried in plain SQL.
- Pipelines (alpha) — wire scripts by the data they read/write instead of hand-drawing a DAG.
Technical stack
- Database: PostgreSQL (compatible with Aurora, Cloud SQL, Neon, Azure PostgreSQL)
- Backend: Rust — stateless API servers and workers pulling jobs from a Postgres queue
- Frontend: Svelte 5
- Sandboxing: nsjail and PID namespace isolation
- Runtimes: Bun (TypeScript/JavaScript), Python with uv, plus Go, Bash, PowerShell, Rust, C#, Java, Ansible, and more
Performance
Windmill claims to be the fastest self-hostable workflow engine, beating Airflow, Prefect, and Temporal in benchmarks (both 40 lightweight tasks and 10 long-running tasks). Once a job starts, there's no overhead vs. running the script directly; the added latency for queueing and result reporting is ~50ms.
Security
- Sandboxing via nsjail for filesystem/resource isolation, plus PID namespace isolation to prevent jobs from accessing worker process memory.
- Secrets: one encryption key per workspace for stored credentials.
Self-hosting
- Docker compose — three files, one command:
docker compose up -d - Kubernetes — Helm charts available
- Cloud providers — works on AWS, GCP, Azure, Fly.io, Render.com, Hetzner, Digital Ocean, etc. Rule of thumb: 1 worker per 1vCPU and 1–2 GB RAM.
- OAuth/SSO — configure Google Workspace, Microsoft/Azure, Okta from the superadmin UI.
License
- Community Edition is free to use internally or via APIs, within set limits.
- Selling/reselling it as a managed service, modifying/wrapping it, or re-exposing it as a feature of your product requires a commercial license.
- The binary built without the
enterpriseflag is AGPLv3; API clients and OpenAPI spec are Apache 2.0.
Contributing
The project is not seeking outside contribution at this time, though bug reports, feature requests, and small trivially-verified PRs are welcome.
Key facts
- 20+ languages supported for scripts
- Scripts can be triggered by schedules, webhooks, HTTP routes, Kafka, WebSockets, emails, and more
- Existing dbt projects run unmodified as scripts
- Default Docker credentials:
admin@windmill.dev/changeme - Active project: high commit activity, Discord community, and a Hub for sharing community scripts
In short: write a function, get a UI, an API, a schedule, and a workflow — all self-hosted, with AI assistance and human review built in.
Related
- Project
- Project
- Project
- Project