Windmill is an open source developer platform for turning scripts into APIs, background jobs, workflows, and internal UIs, positioned as a self-hostable alternative to Retool, Pipedream, and a simplified Temporal. Scripts written in Python, TypeScript, Go, Bash, SQL, or several other languages get an auto-generated UI, and can be chained into flows or composed into richer low-code apps that other scripts and community contributions on WindmillHub can plug into.
Development follows a simple progression: write a minimal, generic script in the Web IDE or sync it from a GitHub repo, let Windmill auto-generate a UI from the script's parameters, chain scripts, including ones shared on WindmillHub, into a flow, then optionally wrap flows and scripts into a richer internal app built with low-code components. Any script, flow, or app can then be triggered by a schedule, webhook, HTTP route, or one of Windmill's other trigger types, turning it into production infrastructure rather than a one-off tool. Once a job starts, the added latency from being pulled off the queue, run, and having its result written back is about 50ms, so a typical lightweight Deno job completes in around 100ms total.
Windmill's backend is written in Rust, with stateless API servers and workers pulling jobs from a Postgres-backed queue. The frontend is built with Svelte 5, and job sandboxing uses nsjail alongside PID namespace isolation. It's fully open source under AGPLv3 and self-hostable via Docker Compose or Kubernetes Helm charts, with Windmill Labs offering dedicated instances and commercial support separately. Published benchmarks against Airflow, Prefect, and Temporal show it handling both many lightweight tasks and long-running tasks with lower overhead. OAuth, SSO, and SMTP integrations are documented separately for teams that need to wire Windmill into existing identity and email infrastructure, and the Postgres database itself is compatible with managed offerings like Aurora, Cloud SQL, Neon, and Azure PostgreSQL, so teams can point Windmill at infrastructure they already run instead of standing up a dedicated database.