Automate any workflow, visually or as code
For engineering and ops teams who need code-first workflow automation with enterprise controls. Build flows as DAGs with full code flexibility, not low-code limitations.
Full control flow primitives
Not just linear pipelines. Windmill flows support the control flow you need for real-world automation.
Branching
Conditional branches (if/else) or parallel branches (fan-out). Run multiple paths and collect all results.
Loops
For-loops over lists with configurable parallelism. While-loops for polling, pagination or convergence logic.
Approval steps
Suspend a flow until a human approves. Send approval links via Slack, email or any notification system.
Retries & timeouts
Per-step retry count with exponential backoff. Custom timeouts to prevent hung steps from blocking the flow.
Error handling that doesn't fail silently
Each step can be configured with its own error handling strategy — retries, custom error handlers, early stop, continue on error, or custom timeouts.
Error handlers
Run a custom script when a step fails — send a Slack notification, create a ticket, or trigger a rollback.
Early stop
Stop the entire flow based on a predicate, without marking it as failed.
Continue on error
Mark non-critical steps to continue even on failure — useful for notifications or logging.
Trigger from anywhere
Trigger flows from cron schedules, webhooks, Slack commands, emails, Postgres CDC, Kafka, SQS — or manually from the UI.
Cron schedules
Webhooks
Slack commands
Emails
Postgres CDC
Kafka & SQS
Manual UI
Trigger scripts
Visual editor or workflows as code
Build flows in the visual drag-and-drop editor, or define them programmatically with workflows as code in Python or TypeScript using decorators and the Windmill SDK. Both approaches produce the same OpenFlow JSON format.
More you can build on Windmill
Workflow automation is just one use case. The same platform powers internal tools, data pipelines, AI agents and scheduled tasks.

Build production-grade internal tools with backend scripts, data tables and React, Vue or Svelte frontends.

Orchestrate ETL jobs with parallel branches, DuckDB queries and connections to any database or S3 bucket.

Build AI agents with tool-calling, DAG orchestration, sandboxes and direct access to your scripts and resources.

Run scripts on cron schedules, webhooks or custom triggers with retries and error handlers built in.
Start automating workflows today
Get started for free on Windmill Cloud or self-host the open-source version.
