Kestra

Kestra: Declarative YAML Orchestration

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):

A Kestra flow that checks BookNest's mart at 02:30 UTC (not run here)YAML
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.