{
  "id": "windmill-vs-kestra",
  "ids": [
    "windmill",
    "kestra"
  ],
  "title": "Windmill vs Kestra: internal applications, declarative jobs and governance scope",
  "kicker": "SOFTWARE BUYING DECISIONS",
  "heading": "Windmill vs Kestra:<br>internal applications, declarative jobs and governance scope.",
  "deck": "Compare Windmill and Kestra for internal operational tools, scheduled pipelines, self-hosting and the Enterprise controls a production rollout needs.",
  "description": "Compare Windmill and Kestra for internal operational tools, scheduled pipelines, self-hosting and the Enterprise controls a production rollout needs.",
  "answerHeading": "Start with the operator.<br>Prove the recovery path.",
  "answer": "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.",
  "researchTag": "Windmill / Kestra",
  "researchLimit": "Official-document research and hypothetical evaluation briefs; no hands-on performance, answer-quality or usability ranking.",
  "checkedAt": "2026-10-15",
  "type": "workflow-buying",
  "rows": [
    [
      "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"
    ]
  ],
  "scenarios": [
    {
      "name": "Finance staff must run a controlled reconciliation",
      "question": "What does the non-developer operator see?",
      "left": "Build a form or app around the reconciliation script.",
      "right": "Demonstrate the execution interface or quote the required app scope.",
      "note": "Use read-only sample records first. The operator should recognise the selected period and output before any production write is allowed."
    },
    {
      "name": "A data pipeline fails halfway through",
      "question": "Can the team recover without duplicating writes?",
      "left": "Exercise the flow’s retry and script behaviour with a controlled failure.",
      "right": "Exercise task retries and the chosen recovery path on the same data.",
      "note": "Make the sink record a unique batch identifier and verify rerun behaviour. Neither product makes arbitrary business code idempotent by default."
    },
    {
      "name": "Two teams need separated credentials",
      "question": "Which edition contains the needed controls?",
      "left": "Map group, secret and audit requirements to Community or Enterprise.",
      "right": "Map namespace, permissions and secret requirements to Open Source or Enterprise.",
      "note": "Request a demonstrable separation: one team must not read or alter the other team’s credentials or job configuration."
    },
    {
      "name": "A daily process gains a seasonal burst",
      "question": "What needs to scale and what is billed?",
      "left": "Quote the actual developers, operators and worker layout.",
      "right": "Quote the instance or Cloud workload with the burst assumptions.",
      "note": "Separate licence amounts from infrastructure consumption and downstream API charges; unlimited executions do not imply unlimited compute."
    }
  ],
  "exampleTable": {
    "caption": "Four hypothetical evaluation briefs; these tasks have not been performed",
    "headers": [
      "Buying brief",
      "Windmill",
      "Kestra"
    ],
    "rows": [
      [
        "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."
      ]
    ]
  },
  "sections": [
    {
      "id": "operator-handover",
      "navLabel": "Design the human handover as carefully as the job",
      "title": "Design the human handover as carefully as the job",
      "paragraphs": [
        "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."
      ]
    },
    {
      "id": "recovery-and-cost",
      "navLabel": "Compare recovery controls and a complete operating bill",
      "title": "Compare recovery controls and a complete operating bill",
      "paragraphs": [
        "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."
      ]
    }
  ],
  "faqs": [
    {
      "question": "Do unlimited executions make self-hosting cost-free?",
      "answer": "No. They describe software allowance, not the database, workers, storage, network, maintenance or downstream service bill."
    },
    {
      "question": "Are all production access controls included in the free editions?",
      "answer": "No. Both publish edition boundaries. Compare the exact identity, audit, secrets and isolation requirements with the current feature matrix."
    },
    {
      "question": "Is one product always better for non-developers?",
      "answer": "No such usability finding is established here. Evaluate the actual form, app or execution workflow with its intended operator on the proposed edition."
    },
    {
      "question": "Can a retry safely repeat every task?",
      "answer": "Not automatically. The task code and connected system must handle repeat execution correctly. Define unique identifiers and an authorised replay process in the pilot."
    }
  ],
  "sources": [
    {
      "url": "https://www.windmill.dev/",
      "facts": "Script, flow and internal-app positioning; APIs, workers and multi-language development."
    },
    {
      "url": "https://www.windmill.dev/pricing",
      "facts": "Community limits, paid identity and observability controls, seat and compute arrangement."
    },
    {
      "url": "https://kestra.io/",
      "facts": "Declarative orchestration, language-independent tasks and deployment options."
    },
    {
      "url": "https://kestra.io/pricing",
      "facts": "Open Source allowance, Enterprise governance, per-instance pricing and Cloud scope."
    }
  ],
  "relatedLinks": [
    {
      "path": "/categories/automation/",
      "title": "Explore automation software"
    },
    {
      "path": "/guides/software-total-cost/",
      "title": "Build the complete software budget"
    },
    {
      "path": "/guides/software-buying-checklist/",
      "title": "Prepare an evaluation checklist"
    }
  ],
  "datasetDescription": "Compare Windmill and Kestra for internal operational tools, scheduled pipelines, self-hosting and the Enterprise controls a production rollout needs. Seven workflow differences and four illustrative evaluation briefs with operating assumptions."
}
