Windmill vs Kestra:
internal applications, declarative jobs and governance scope.
Compare Windmill and Kestra for internal operational tools, scheduled pipelines, self-hosting and the Enterprise controls a production rollout needs.
Start with the operator.
Prove the recovery path.
Windmill is a natural starting point when scripts need forms, internal apps and workflow execution in one platform. Kestra is a natural starting point when a team wants declarative orchestration across data, infrastructure and services. Both have free self-hosted editions and paid governance features. Select against the actual operator workflow and the failure-recovery requirements, not execution allowances alone.
Seven differences that change the shortlist
| Buying question | Windmill | Kestra |
|---|---|---|
| Authoring emphasis | Scripts combined with flows and internal applications | Declarative YAML workflows with a synchronised guided editor |
| Operator experience | Forms and apps built around existing scripts and flows | Execution UI; business apps and reusable inputs need edition checks |
| Task scope | Multi-language scripts and worker execution | Plugin tasks and business logic across languages |
| Free software boundary | Community: unlimited executions with workspace, user and SSO caps | Open Source: unlimited flows and executions |
| Advanced governance | Audit logs and external secret backends require Enterprise scope | SSO, role-based control and audit logs are Enterprise capabilities |
| Paid cost model | Seats and compute configuration influence the quote | Enterprise annual per-instance pricing; Cloud usage needs a quote |
| Self-hosted responsibility | Operate workers, storage, deployment and upgrades | Operate orchestration services, database, storage and upgrades |
Four worked buying briefs
These are hypothetical scenarios with explicit assumptions. They do not establish equal capabilities, measured usability or a negotiated price.
| Buying brief | Windmill | Kestra |
|---|---|---|
| Finance staff must run a controlled reconciliation | Build a form or app around the reconciliation script. | Demonstrate the execution interface or quote the required app scope. |
| A data pipeline fails halfway through | Exercise the flow’s retry and script behaviour with a controlled failure. | Exercise task retries and the chosen recovery path on the same data. |
| Two teams need separated credentials | Map group, secret and audit requirements to Community or Enterprise. | Map namespace, permissions and secret requirements to Open Source or Enterprise. |
| A daily process gains a seasonal burst | Quote the actual developers, operators and worker layout. | Quote the instance or Cloud workload with the burst assumptions. |
Finance staff must run a controlled reconciliation
What does the non-developer operator see?
Windmill: Build a form or app around the reconciliation script.
Kestra: Demonstrate the execution interface or quote the required app scope.
Use read-only sample records first. The operator should recognise the selected period and output before any production write is allowed.
A data pipeline fails halfway through
Can the team recover without duplicating writes?
Windmill: Exercise the flow’s retry and script behaviour with a controlled failure.
Kestra: Exercise task retries and the chosen recovery path on the same data.
Make the sink record a unique batch identifier and verify rerun behaviour. Neither product makes arbitrary business code idempotent by default.
Two teams need separated credentials
Which edition contains the needed controls?
Windmill: Map group, secret and audit requirements to Community or Enterprise.
Kestra: Map namespace, permissions and secret requirements to Open Source or Enterprise.
Request a demonstrable separation: one team must not read or alter the other team’s credentials or job configuration.
A daily process gains a seasonal burst
What needs to scale and what is billed?
Windmill: Quote the actual developers, operators and worker layout.
Kestra: Quote the instance or Cloud workload with the burst assumptions.
Separate licence amounts from infrastructure consumption and downstream API charges; unlimited executions do not imply unlimited compute.
Design the human handover as carefully as the job
A scheduled pipeline and an internal app can run the same code while requiring very different acceptance tests. For a pipeline, write down when it should run, how lateness is detected and what output proves completion. For a staff-facing tool, specify the fields the operator can change, what a preview shows and the confirmation required before a write. Use the exact retained edition when evaluating those controls.
Then hand the process to someone other than its author. Ask them to identify the last successful run, explain a failed run and prepare a correction without revealing credentials. Observe any undocumented steps in a pilot; do not assume either product’s interface eliminates that training. Include a named escalation owner and a small operating guide in the purchase deliverables, particularly where a contractor built the first version.
Compare recovery controls and a complete operating bill
Create a synthetic run with three stages: read a file, transform records and write the approved result. Interrupt it after the second stage and establish which actions can safely repeat. Record input identifiers, the expected final state and who authorises a replay. This exercise is more informative than a claim about job throughput because it tests the organisation’s own recovery contract rather than a vendor benchmark.
Keep infrastructure and edition requirements on separate budget lines. List the people who build, execute or only view the process, then list the controls they require. Windmill’s configurable seats and compute and Kestra’s per-instance Enterprise arrangement are different units; do not derive a saving by comparing their entry labels. Obtain equivalent written scopes for audit retention, secrets, identity integration and support, plus the cloud resources the workload will actually consume.
Questions before you choose
Do unlimited executions make self-hosting cost-free?
No. They describe software allowance, not the database, workers, storage, network, maintenance or downstream service bill.
Are all production access controls included in the free editions?
No. Both publish edition boundaries. Compare the exact identity, audit, secrets and isolation requirements with the current feature matrix.
Is one product always better for non-developers?
No such usability finding is established here. Evaluate the actual form, app or execution workflow with its intended operator on the proposed edition.
Can a retry safely repeat every task?
Not automatically. The task code and connected system must handle repeat execution correctly. Define unique identifiers and an authorised replay process in the pilot.
Turn the comparison into your own evaluation
Use the same criteria and priorities for both products, keep unknowns unassessed and record the plan and evidence behind your ratings.
Build a Windmill vs Kestra scorecard →Keep the assumptions with the figures
Use the date, billing cycle, units and limits with each example. Check current account terms before purchasing. Unverified prices and model costs stay unpriced.
Download the buying examples as JSON ↓Share the comparison
Use these examples when discussing the shortlist with your team.

