Kestra 284,108 (github.com/kestra-io/kestra (https://github.com/kestra-io/kestra 28,851 )) is a Java server in which a pipeline, a flow, is a YAML document: an id, a namespace, a list of tasks that run in order, and triggers. Every task type is a plugin (scripts in many languages, SQL databases, dbt 37,942 , cloud services), so most flows contain no code at all, and the web UI edits the YAML with autocompletion and shows topology, logs and executions. Version 2.0 shipped on 7 September 2026 (2.0.4 on 29 September); a paid Enterprise Edition adds access control and scaling. docker run ... kestra/kestra:latest-slim server local starts everything in one container with an embedded database; the UI asks you to create a user on first start. BookNest's mart check would look like this (a sketch from the plugin documentation, not run here):
id: booknest_mart_check
namespace: booknest
tasks:
- id: yesterday
type: io.kestra.plugin.jdbc.postgresql.Query
url: jdbc:postgresql://l2-pg:5432/booknest
username: "{{ secret('PG_USERNAME') }}"
password: "{{ secret('PG_PASSWORD') }}"
sql: SELECT genre, lines, gross FROM mart.daily_genre_sales
WHERE sale_date = current_date - 1
fetchType: FETCH
triggers:
- id: daily
type: io.kestra.plugin.core.trigger.Schedule
cron: "30 2 * * *"The Schedule trigger defaults to UTC and tracks its last date for backfills. Kestra suits teams that share pipelines without sharing a Python codebase; the cost is logic in scripts embedded in YAML, hard to unit-test.