Authors
Adam Schroeder
Developer Advocate

Kestra is an open source orchestration platform where you define workflows in YAML instead of Python, and its workers can run without holding a database connection. That second part is the detail worth understanding if you’re evaluating orchestrators against Airflow or Dagster and haven’t tried Kestra yet. This is what lets you place a worker in a separate cloud, an on-premises environment, or a network that only allows outbound traffic, with no inbound ports open at all.
Kestra ships with nearly 2000 plugins covering data pipelines, dbt, cloud infrastructure, and AI agents, and you can use Python, Go, Rust, SQL, or a shell script inside any task. If you have used Airflow, you’ll know that it requires you to write DAGs in Python. On the same token, Dagster asks you to model your pipeline as software-defined assets: you write Python functions that each declare what data they depend on, and running the pipeline means Dagster “materializes” those assets, computing and persisting each one in dependency order rather than just executing a list of steps. Kestra, on the other hand, treats the flow definition as configuration that sits on top of whatever code you already have.
Dagster gives you asset lineage and freshness tracking out of the box if you commit to writing your pipeline as Python assets; but Kestra skips that model entirely so you can orchestrate what you already have.
That distinction matters most for teams where not everyone codes in Python daily: analysts, ops, and platform engineers who need to schedule something without learning a new DSL. It also means changing a schedule or adding a trigger is a YAML edit from the UI, as opposed to a redeploy. In addition, Kestra doesn’t need you to rewrite your existing code to make it work. Just point the workflow at it and it can run it out of the box.
Most orchestrators run into the same structural problem eventually. Workers need to read and write execution state somewhere, so they end up with direct database credentials and a network path to the database. That’s true of Airflow’s Celery and Kubernetes executors in various configurations, and it was true of Kestra before the 2.0 release. It works fine until you need a worker somewhere that a database can’t reach such as a customer’s restricted network, another region, or a facility with no inbound ports at all.
Kestra 2.0 removes that dependency with a new component called the Controller, which sits between workers and the rest of the system (the queue and the repository). Workers talk only to the Controller, over a single outbound gRPC connection that can be secured with mutual TLS. No inbound ports and no database credentials sitting on the worker itself.
A few positive outcomes from this redesign:
Leroy Merlin runs 37 million workflow executions a month on Kestra. They started on Airflow, where flows reportedly ran 20x slower than expected, and a single bad task could take down the whole cluster. The constraint is that Airflow workers generally need some form of database or broker connectivity depending on the executor you run.
Dagster’s isolation looks similar but solves a different problem. Its gRPC code locations isolate Python dependencies, not database access, so self-hosted Dagster’s run workers still connect directly to Postgres, the same constraint Airflow has. Dagster does offer outbound-only workers with no direct database access, but only through the Agent in its paid Dagster+ Hybrid product. Kestra ships that model in open source.
None of this means Kestra now beats either tool on every axis. Airflow still has the largest plugin ecosystem. Dagster’s asset lineage and testing story is very attractive for teams fully bought into Python. What Kestra 2.0 changes is a specific, concrete operational limitation shared by most self-hosted orchestrators: needing your workers on the same network as your metadata store, which is something Airflow and self-hosted Dagster still require, but Kestra no longer does.
2.0 isn’t only infrastructure. Kestra now ships four AI-adjacent tools:
Open source Kestra runs on JDBC (Postgres or MySQL) for both queue and repository, with the full plugin catalog and no license required. Enterprise adds the additional queue backends (Redis, AMQP, Kafka), SSO and RBAC, multi-tenancy, worker groups, audit logs, and the Log Data Store’s non-JDBC destinations.
Try to spin up the open source edition and see whether YAML-first orchestration with a decoupled worker model fits how your team actually works.
If you have any questions along the way, feel free to reach out to me directly via LinkedIn, or even better, join our Slack to have access to Kestra’s awesome community.
Stay up to date with the latest features and changes to Kestra