Windmill Labs
Windmill

Triggers

Every way to start a script or flow

Schedules, webhooks, Kafka, Postgres CDC, WebSockets, emails, and more. No extra configuration needed.

Triggers for scripts and flows

Every trigger type works with both scripts and flows. Attach one or many triggers to any runnable. A single script can be scheduled on a cron, exposed via webhook, and listening on a Kafka topic at the same time.

Scripts

Single functions in TypeScript, Python, Go, SQL, Bash, and other languages. Attach any trigger to run them on events, schedules, or API calls.

Flows

Multi-step workflows that chain scripts into DAGs with branching, loops, retries, and approval steps. Triggered the same way as scripts.

Schedules

Run any script or flow on a cron schedule. Use the visual cron builder to set intervals from every minute to custom expressions. Schedules can be toggled on or off, have error handlers, and support recovery flows for missed runs.

Read the docs

Webhooks and HTTP routes

Every script and flow automatically gets a webhook endpoint (sync and async). For more control, HTTP routes let you define custom REST endpoints with path parameters, method routing, and preprocessors to transform incoming requests before execution.

Read the docs

Database triggers

Postgres triggers let you run a script or flow whenever a row is inserted, updated, or deleted. Windmill uses logical replication (CDC) to capture changes in real time without polling. Configure which tables and operations to watch from the UI.

Read the docs

Frequently asked questions

Build your internal platform on Windmill

Scripts, flows, apps, and infrastructure in one place.