Kestra

Workflow orchestration with synchronized visual and YAML editing, multi-language script tasks, event triggers, and configurable recovery.

Best for: Technical teams coordinating data, scripts, APIs and infrastructure across languages, with engineers responsible for workflow logic and recovery.

Editor’s note: This Kestra review assesses workflow design, recovery controls, AI features, and ownership costs for teams choosing an orchestrator.

Quick verdict: I recommend Kestra for technical teams that need to coordinate scripts, APIs, and infrastructure without making Python the center of every workflow. Its appeal is giving scattered automation a shared home. The catch is that easier authoring doesn’t remove the engineering work, and some important production controls require a paid edition.

Key Takeaways

  • Kestra is a strong fit for teams bringing scattered data and infrastructure jobs into one workflow.
  • You can keep existing scripts instead of rewriting their business logic.
  • The free, self-hosted core is a useful starting point for technical teams.
  • SSO, granular access controls, and audit logs can make paid governance a requirement early on.
  • Recovery needs careful configuration: retrying a subflow can repeat steps that already succeeded.

In this review, I’ll look at what Kestra makes easier, where I’d be careful, and when I’d choose Airflow, Prefect, or Dagster instead.

Kestra Pros and Cons

Pros

  • Visual task configuration stays synchronized with YAML.
  • Apache 2.0 core supports free self-hosting.
  • Scripts in different languages can share one orchestration layer.
  • Schedules, webhooks, and upstream flows can trigger work.
  • Selective replay can reuse outputs from earlier tasks.

Cons

  • Visual authoring still requires an understanding of dependencies and expressions.
  • Paid editions require a pricing conversation.
  • Self-hosting leaves upgrades and infrastructure with your team.
  • Open-source Copilot is limited to Gemini.

How Much Does Kestra Cost?

Open Source has a $0 license; Enterprise requires a quote, and Cloud is usage-based. I’d choose based on who will operate Kestra and who needs access.

  • Open Source ($0 license): for teams comfortable hosting the platform themselves. Flows and executions are unlimited.
  • Enterprise Edition (custom quote): for organizations needing governance controls. The annual subscription is priced per instance, with unlimited flows, tasks, and executions.
  • Kestra Cloud (usage-based, request access): for teams wanting a managed service. Confirm rates before committing.
EditionPricing basisPlatform operations
Open SourceFree software; infrastructure extraYour team
EnterpriseQuoted annual subscription per instanceDepends on deployment
CloudUsage-based; no public dollar rateManaged by Kestra

Cloud offers a 14-day free trial without a credit card, through an access request. Some inclusions are early-adopter benefits, so confirm which continue under the paid agreement.

Is Kestra Good Value for Money?

A free license is appealing, but I would budget for the person who answers when a workflow breaks.

  • Good value: you already maintain services and want to consolidate fragmented automation.
  • Get a quote early: company sign-in or an audit trail is a purchasing requirement.
  • Harder to justify: you have one scheduled job and nobody available to maintain another platform.

I recommend Open Source for a technical team’s evaluation. If hosting would stall the project, request Cloud access first. Compare the full ownership cost before migrating: a lower software bill means little if routine maintenance consumes the time you hoped to save.

Getting Started With Kestra

Kestra’s visual editor gives you task blocks and configuration forms alongside YAML. I like having both options for the same flow: the form provides a starting point, while the definition remains available to inspect.

The Docker quickstart opens at localhost:8080 and uses an embedded H2 database. The production-oriented Docker Compose setup moves to PostgreSQL. I’d use the quickstart to assess fit before planning a deployment.

For a first workflow, I’d choose a small data download and transformation:

  1. Define the flow. Give it an ID and namespace.
  2. Configure tasks. Set properties through forms or YAML.
  3. Connect inputs and outputs. Specify what passes between steps.
  4. Run and inspect. Review logs and outputs.
  5. Set recovery behavior. Decide what should retry.

The harder part is understanding the job. A form can’t tell you whether an empty file should count as success. Complex expressions also introduce Pebble, Kestra’s templating language.

I would shortlist Kestra for a mixed technical team, with an engineer responsible for the logic. If your team already works comfortably in Python, Prefect’s Python-first approach may be a better fit. Adding a separate workflow definition should solve a collaboration problem, not become another place to repeat the same logic.

Running Scripts and Services in One Workflow

Kestra makes most sense to me when a job crosses several tools. A Python extraction script, a shell command, and a database operation can belong to one process without being rewritten into a single language.

That is useful for teams with working code they don’t want to replace. I would keep transformation logic in the language its owner understands, and let Kestra handle the sequence around it. Moving every calculation into YAML would make that division less useful.

In self-hosted Kestra, script tasks run in Docker containers by default, and you can package dependencies in your own image. I like that as a way to make the environment reproducible instead of relying on whatever happens to be installed on a worker.

The execution location can change the edition you need. Process and Docker task runners are open source; the Kubernetes and cloud-specific runners require Enterprise. Running Kestra itself on Kubernetes is a separate question from using its Kubernetes task runner. I’d settle that distinction before choosing the free edition for an existing cluster.

Start Work When the Right Thing Happens

Kestra supports several ways to begin a flow:

  • Schedules: useful for recurring reporting or maintenance.
  • Webhooks: useful when another application should request work.
  • Upstream flow completion: useful when one process must wait for another.
  • Polling and realtime triggers: useful when activity in an external system should start a run.

I prefer connecting dependent work explicitly to leaving a hopeful gap between two cron schedules. If an extraction runs late, the next job should respond to its completion, rather than assume the data is ready.

One detail I’d pay attention to: a trigger failure doesn’t create an execution by default. You need to inspect trigger logs, or configure failOnTriggerError to produce a failed execution. An empty run history doesn’t always mean everything is healthy.

Retries and Replay: Useful, but Set Them Up Carefully

Recovery is a good reason to move beyond disconnected scripts. Kestra gives you several options, and I like being able to distinguish a temporary error from a deliberate rerun.

ControlWhat happensWhen I’d use it
RetryAutomatically attempts work again under a configured policyA temporary connection failure
RestartKeeps the execution ID and reruns failed tasksRecovering a failed run after fixing the cause
ReplayCreates a new execution from a selected taskRepeating part of a process while reusing earlier outputs

Be Careful Where You Put the Retry

A retry on a parent Subflow task starts a new child execution. Successful tasks inside that child run again too. If you want to resume at the child’s failed task, the child’s flow-level RETRY_FAILED_TASK behavior is the relevant option.

That distinction matters more than the number of retry settings. Imagine a child flow that creates an invoice and then sends a notification. Repeating the whole child after a notification failure could repeat the invoice operation unless your application prevents duplicates.

I would put recovery boundaries around the smallest useful unit of work and check what repeating it means outside Kestra. An orchestrator can’t make an unsafe write harmless simply by tracking its status.

Replay Has Limits After a Workflow Change

Replay can use the original flow revision or a different one, but reusing earlier outputs requires compatibility checks. Changes to upstream tasks, inputs, or variables can block selective replay on another revision; replaying the whole execution remains an alternative.

I think that restriction is sensible. Reusing an output after changing how it should have been produced could create a misleading result. Even a compatible definition doesn’t freeze external data or secrets, so I wouldn’t treat replay as a guarantee of identical results.

Are Kestra’s AI Features Worth Using?

I’d choose Kestra for its orchestration first and treat AI as an additional capability. You can build ordinary workflows without involving a language model at all.

Copilot helps author flows by proposing YAML changes for your approval. I like having a review step before accepting those changes, especially when a workflow can write data or launch infrastructure. Generated configuration still needs someone who understands the intended outcome.

There is an edition boundary here: Open Source Copilot supports Gemini with your configured API key. Enterprise supports other providers, including OpenAI, Anthropic, and Ollama. If your company has standardized on a different provider, that makes the free Copilot less useful. This restriction applies to Copilot, not every AI task you can run inside a flow.

Agents Inside a Workflow Serve a Different Purpose

AI Agent tasks can combine a model with tools and optional memory, then call other tasks or flows. Their outputs include token usage, while metrics track provider and tool calls.

I like that visibility for a process such as classifying incoming requests before routing them. It gives the team something concrete to inspect when model usage rises. It doesn’t establish whether the classification is correct.

My preference would be a narrow AI step with a clear output and a defined response when that output is unsuitable. I wouldn’t introduce an agent to replace a straightforward rule merely because both options are available.

When Would I Pay for Enterprise?

I’d pay when several teams need different permissions or execution environments. Enterprise adds controls such as SSO, role-based access, audit logs, and multi-tenancy. Those can be requirements for adoption, even when your workflow count is small.

Worker groups also let you direct tasks to particular workers. I like that for separating work with different access or capacity needs. A sensitive production job and an experimental script shouldn’t automatically inherit the same operating arrangements.

My concern is the jump from a capable free core to a sales conversation. Without a public starting price, a small team can’t quickly tell whether the governance package fits its budget. I’d settle that before migrating important jobs.

Reviewer’s Notes: Write down who can edit a flow, who can run it, and which systems it can reach. If those answers differ across your teams, evaluate the paid controls at the start. A successful single-user trial won’t answer the access-management question.

How Does Kestra Compare to Alternatives?

  • Apache Airflow: I’d keep Airflow when your Python DAGs work reliably and the team understands them. It supports event-triggered workflows too, so that feature alone isn’t a reason to migrate. Kestra is more appealing when visual and YAML authoring solve a specific collaboration problem.
  • Prefect: I’d favor Prefect when existing Python functions and dynamic Python logic are the starting point. Kestra is worth the extra workflow definition when the process spans several languages and services.
  • Dagster: I’d prioritize Dagster when tables, files, and models are the main things your team wants to organize and track. Kestra is a natural shortlist candidate when you also need general infrastructure automation.

How I Reviewed Kestra

I evaluated the documented workflow model, edition boundaries, recovery behavior, and AI controls against the needs of data and platform teams. My recommendations reflect those trade-offs; they aren’t performance benchmark results.

Pricing and edition details checked October 2026.

Should You Choose Kestra?

I’d choose Kestra when maintaining the connections between tools has become a job of its own. A flow can make the handoff between a data job and an infrastructure task explicit, while letting their owners keep useful scripts.

I’d skip it for a simple schedule that already works, or when nobody can own the underlying workflow logic. I’d also keep a healthy existing orchestrator unless Kestra solves a clear problem your current setup doesn’t.

Start with one process that crosses systems. Judge whether your team can understand it, diagnose a failure, and recover without repeating an unwanted action. That is a better adoption test than the size of the plugin catalog.

FAQ

Is Kestra free?

The Apache 2.0 core is free to self-host. You still pay for infrastructure and maintenance; Enterprise and Cloud are commercial options.

Do I need Python to use Kestra?

No. Script tasks support several languages, so you can keep Python where it suits the job and use another language elsewhere.

Is Kestra a no-code tool?

It has a no-code editor. I would still assign technical ownership before relying on it for important jobs.

Can Kestra replace Airflow?

It can be an alternative for suitable workflows, but migration means adapting your definitions and operations. I wouldn’t replace reliable Airflow jobs without a specific benefit.

Do I need AI to run Kestra?

No. AI assistance and agent tasks are optional. Ordinary scheduled and event-driven workflows can run without a language model.

Questions people ask

Is Kestra free?

The Apache 2.0 core is free to self-host. You still pay for infrastructure and maintenance; Enterprise and Cloud are commercial options.

Do I need Python to use Kestra?

No. Script tasks support several languages, so you can keep Python where it suits the job and use another language elsewhere.

Is Kestra a no-code tool?

It has a no-code editor. I would still assign technical ownership before relying on it for important jobs.

Can Kestra replace Airflow?

It can be an alternative for suitable workflows, but migration means adapting your definitions and operations. I wouldn't replace reliable Airflow jobs without a specific benefit.

Do I need AI to run Kestra?

No. AI assistance and agent tasks are optional. Ordinary scheduled and event-driven workflows can run without a language model.

Spotted a wrong price or a missing integration? Send a correction. A human reads every one.

Similar tools

Other tools in the same category, with the same card and the same honest pricing.

Free OSS; Cloud usage-based

Temporal

Open-source orchestrator

Durable workflow orchestration for developers coordinating application steps, retries, and approvals across service failures.

Visit site

Argo Workflows

Open-source orchestrator

Open-source workflow engine for coordinating containerized batch jobs and data pipelines on Kubernetes.

Visit site
Free OSS; infrastructure extra

Flyte

Open-source orchestrator

Open-source workflow runtime for data, machine learning, and AI workloads, with Python task authoring, recovery, caching, and resource configuration.

Visit site
Free OSS / paid managed cloud

Mage

Open-source orchestrator

Build and orchestrate custom data pipelines with reusable Python, SQL, and R blocks, dbt support, and optional Pro AI assistance.

Visit site
Free / paid Cloud

Prefect

Open-source orchestrator

Python workflow orchestration with scheduling, retries, caching, monitoring, and flexible execution through self-hosted infrastructure or Prefect Cloud.

Visit site
Open source

Apache Airflow

Open-source orchestrator

Panoply Score: 77/100

The default open-source orchestrator. Free to run yourself; managed versions from Astronomer (Astro deployments from $0.35 an hour), AWS and Google.

Visit site
From $10/mo

Dagster

Open-source orchestrator

Panoply Score: 72/100

Asset-based orchestrator with a hosted Dagster+ control plane. Open source is free; Dagster+ starts at $10 a month plus $0.040 per credit.

Visit site