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

  1. Write a script — in the browser-based editor or locally with the CLI/VS Code extension, synced with Git.
  2. Windmill generates the frontend — your script's typed arguments become a form, an HTTP endpoint, and a CLI command automatically.
  3. Chain scripts into flows — visually or as code, with each step running as its own job with its own logs.
  4. 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 enterprise flag 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