Windmill is a free, open source automation project written in Rust and released under a custom open-source licence. It has 17,957 GitHub stars, 1,096 forks and 852 open issues, and was last pushed 5 hours ago. On this registry it ranks #11 of 54 tracked projects in Automation, and is listed as an open source replacement for 1 paid product, with 5 head-to-head comparisons available. It gained 49 stars over the last 6 tracked days.

What is Windmill?

What it is

Windmill is an open-source developer platform for internal code, including APIs, background jobs, workflows, and UIs. It lives in the self-hostable low-code automation ecosystem and supports Python, TypeScript, Go, Bash, SQL, GraphQL, PowerShell, Rust, and more. The project is positioned as an open-source alternative to Zapier and, in the README, to Retool, Pipedream, Superblocks, and a simplified Temporal.

The concrete problem it solves is the gap between small scripts and usable internal tools. Developers can write a script, have its parameters parsed automatically into a frontend, and then compose scripts into flows or richer low-code apps. This turns isolated code into shareable internal applications that users can run through UIs, webhooks, schedules, or HTTP routes.

Key capabilities

  • Scripts can be created in a Web IDE or synchronized with a GitHub repository through CLI or VS Code tooling.
  • Script parameters are parsed automatically to generate a frontend, turning a plain function into a runnable internal tool.
  • Scripts can be chained into flows, including community scripts shared on WindmillHub.
  • Flows and scripts can be triggered by schedules, webhooks, HTTP routes, Kafka, WebSockets, and email.
  • Users can build complex UIs with an app editor on top of scripts and flows.

Who uses it and how

  • Teams use Windmill to turn scripts into internal apps, APIs, background jobs, workflows, and UIs.
  • Developers convert scripts into webhooks or HTTP routes, making them callable by other systems.
  • Automation users compose scripts into scheduled, email-triggered, Kafka-triggered, or WebSocket-triggered flows for recurring and event-driven work.
  • Self-hosters use it when they need control over data, deployment, and integration with PostgreSQL, OAuth, SSO, and SMTP.

Getting started

Typical deployment methods mentioned in the README are Docker Compose, Kubernetes Helm charts, and cloud provider setups. Local development can be run as frontend-only or as backend plus frontend.

When to use it — and when not to

Windmill is useful when a team wants an open-source, self-hostable alternative to tools such as Zapier, Retool, Pipedream, Superblocks, or a simplified Temporal for internal scripts, flows, and UIs. It fits teams that can operate the required platform components, including PostgreSQL, SMTP, OAuth or SSO, and a deployment target such as Docker Compose or Kubernetes. It is less suitable when an organization wants to avoid operating PostgreSQL, SMTP, OAuth or SSO, and deployment infrastructure, or when the open issue count of 852 and the AGPLv3 license require closer evaluation before adoption.

project readme (upstream, from github) — read inline

Open-source developer platform for internal code: APIs, background jobs, workflows and UIs. Self-hostable alternative to Retool, Pipedream, Superblocks and a simplified Temporal with autogenerated UIs and custom UIs to trigger workflows and scripts as internal apps.

Scripts are turned into sharable UIs automatically, and can be composed together into flows or used into richer apps built with low-code. Supported languages: Python, TypeScript, Go, Bash, SQL, GraphQL, PowerShell, Rust, and more.

Package version Docker Image CI Package version

Commit activity Discord Shield

Try it - Website - Docs - Discord - Hub - Contributing

Windmill - Developer platform for APIs, background jobs, workflows and UIs

Windmill is fully open-sourced (AGPLv3) and Windmill Labs offers dedicated instances and commercial support and licenses.

Windmill Diagram

https://github.com/user-attachments/assets/d80de1d9-64de-4d89-aacd-6df23fa81fc4

Main Concepts

  1. Define a minimal and generic script in Python, TypeScript, Go or Bash that solves a specific task. The code can be defined in the provided Web IDE or synchronized with your own GitHub repo (e.g. through VS Code extension): provided Web IDE or synchronized with your own GitHub repo (e.g. through VS Code extension):

Step 1

  1. Your scripts parameters are automatically parsed and generate a frontend.

Step 2

Step 3

  1. Make it flow! You can chain your scripts or scripts made by the community shared on WindmillHub.

Step 3

  1. Build complex UIs on top of your scripts and flows.

Step 4

Scripts and flows can be triggered by schedules, webhooks, HTTP routes, Kafka, WebSockets, emails, and more.

Build your entire infra on top of Windmill!

Show me some actual script code

//import any dependency  from npm
import * as wmill from "windmill-client";
import * as cowsay from "[email protected]";

// fill the type, or use the +Resource type to get a type-safe reference to a resource
type Postgresql = {
  host: string;
  port: number;
  user: string;
  dbname: string;
  sslmode: string;
  password: string;
};

export async function main(
  a: number,
  b: "my" | "enum",
  c: Postgresql,
  d = "inferred type string from default arg",
  e = { nested: "object" }
  //f: wmill.Base64
) {
  const email = process.env["WM_EMAIL"];
  // variables are permissioned and by path
  let variable = await wmill.getVariable("f/company-folder/my_secret");
  const lastTimeRun = await wmill.getState();
  // logs are printed and always inspectable
  console.log(cowsay.say({ text: "hello " + email + " " + lastTimeRun }));
  await wmill.setState(Date.now());

  // return is serialized as JSON
  return { foo: d, variable };
}

Local Development

Windmill supports multiple ways to develop locally and sync with your instance:

Tool Description
CLI Sync scripts from local files or GitHub, run scripts/flows from the command line
VS Code Extension Edit and test scripts & flows directly from VS Code / Cursor with full IDE support
Git Sync Two-way sync between Windmill and your Git repository
Claude Code AI-assisted development with Claude for scripts, flows, and apps

https://github.com/user-attachments/assets/c541c326-e9ae-4602-a09a-1989aaded1e9

You can run scripts locally by passing the right environment variables for the wmill client library to fetch resources and variables from your instance. See local development docs.

Stack

  • Database: Postgres (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:
    • TypeScript/ Bun (default) and Deno
    • Python: python3 with uv for dependency management
    • Go, Bash, PowerShell, PHP, Rust, C#, Java, Ansible

Fastest Self-Hostable Workflow Engine

We have compared Windmill to other self-hostable workflow engines (Airflow, Prefect & Temporal) and Windmill is the most performant solution for both benchmarks: one flow composed of 40 lightweight tasks & one flow composed of 10 long-running tasks.

All methodology & results on our Benchmarks page.

Fastest workflow engine

Security

  • Sandboxing: nsjail for filesystem/resource isolation, and PID namespace isolation (enabled by default) to prevent jobs from accessing worker process memory
  • Secrets: One encryption key per workspace for credentials stored in Windmill's K/V store. We recommend encrypting the Postgres database as well.

See Security documentation for details.

Performance

Once a job started, there is no overhead compared to running the same script on the node with its corresponding runner (Deno/Go/Python/Bash). The added latency from a job being pulled from the queue, started, and then having its result sent back to the database is ~50ms. A typical lightweight deno job will take around 100ms total.

Architecture

How to self-host

For detailed setup options, see [Self-Host do

readme truncated — read the full docs on github

Frequently asked questions

Is Windmill free to use?

Windmill is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Windmill do?

Open-source workflow automation for developers

What is Windmill written in?

Windmill is primarily written in Rust. Its source is publicly available at https://github.com/windmill-labs/windmill, and it has 17,957 GitHub stars.

What is a good open source alternative to Zapier?

Windmill is one of the open source options listed as an alternative to Zapier. Compare licences, stars and activity side by side on the Windmill profile.