Main features
- Scripts in Python, TypeScript, Go, Bash, SQL, PHP, Rust and other languages
- Input forms generated from script parameters
- Flow editor that chains scripts, branches and loops
- Low-code app builder on top of scripts and flows
- Schedules, webhooks, HTTP routes, email, WebSocket, Postgres and MQTT triggers
- Shared scripts and resource types from WindmillHub
- Web IDE, CLI, VS Code extension and Git sync
- nsjail sandboxing and PID namespace isolation for jobs
- Per-workspace encryption key for stored credentials
What Windmill does
Windmill is built for developers who already solve tasks with small scripts and want somewhere to run, schedule and share them. You write a script in Python, TypeScript, Go, Bash, SQL or one of several other languages, and Windmill reads its parameters and generates a form so colleagues can run it without touching the code. Scripts can then be chained into flows with branches, loops and retries, and wrapped in internal apps built with a low-code UI editor. The README describes it as a self-hostable alternative to Retool, Pipedream and a simplified Temporal.
Flows and scripts start from schedules, webhooks, custom HTTP routes, incoming emails, WebSocket messages, Postgres changes or MQTT messages. Connections to outside services are stored as typed “resources”, and WindmillHub offers shared scripts and resource types for common APIs. Developers can work in the browser IDE or keep everything in a Git repository and deploy with the CLI or the VS Code extension.
Editions and license
Windmill’s licensing needs a careful read. The repository is AGPLv3, except for code behind an enterprise compile flag or a license check, which is proprietary. The official Docker images and binary releases, called the Community Edition, include that non-public code. They are free to use inside your organization, but you may not resell them, offer them as a managed service, or modify or wrap them without an agreement. Only a binary you compile yourself without the enterprise flag is purely open source.
The Community Edition also has limits set in the software. According to the pricing page it allows 3 workspaces, 50 users, 4 groups and single sign-on for up to 10 users. Job run details are kept for at most 30 days, and Git sync works for up to 2 users. Audit logs, approval steps with forms, external secret stores, and Kafka, NATS, SQS and Google Cloud triggers are Enterprise features. Executions are unlimited in every edition.
Self-hosting Windmill
The only required dependency is PostgreSQL, which also serves as the job queue. Managed services such as Amazon Aurora, Cloud SQL and Neon work too. The backend is written in Rust as stateless API servers plus workers, and you scale by adding workers. The README’s rule of thumb is one worker per vCPU with 1 to 2 GB of RAM. The repository ships a Docker Compose file with Caddy as the reverse proxy, and there is a Helm chart for Kubernetes. A new instance starts with a default admin account and password, which you should change straight away.
Jobs run inside nsjail with PID namespace isolation, so a script cannot read the worker’s memory. Each workspace has its own key for encrypting stored credentials, and the project recommends encrypting the database as well.
Hosted version
Windmill Labs runs a hosted cloud and also offers dedicated instances. Commercial licenses and support are sold for self-hosted Enterprise deployments.
Limitations
Windmill expects you to write code. It has a flow editor, but most steps are scripts, so it is not a drop-in replacement for a no-code tool like Zapier for non-technical staff. The fully open source build means compiling it yourself. The official images carry extra license terms and the Community Edition limits listed above, which larger teams will reach.
Who it suits
Windmill fits engineering and operations teams that want to turn scripts into scheduled jobs, webhooks, internal tools and multi-step workflows with little infrastructure beyond PostgreSQL. If your automations are mainly app-to-app recipes built by non-developers, Activepieces is the closer match. For data pipelines driven by YAML, compare it with Kestra. The workflow automation guide covers the trade-offs.
License details
AGPL-3.0. Code behind the enterprise compile flag or a license check is proprietary; client libraries and the OpenFlow spec are Apache-2.0. The official Community Edition images and binaries include non-public code; only a build from source without the enterprise flag is purely AGPL.
Technical details
Self-hosting needs
- PostgreSQL
Built with
- Rust
- Svelte
- TypeScript
GitHub topics
- low-code
- open-source
- platform
- postgresql
- python
- self-hostable
- typescript
Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.