Leoflow

The orchestrator that ate Airflow's lunch

A Go control plane with an Airflow-compatible UI and REST API — zero of the Python pain. Native map-reduce for ML/AI: fan-out + reduce as a list comprehension.

Get started Why Leoflow GitHub

A DAG is a leoflow.yaml plus a dag.py (the real Airflow SDK) that compile to one immutable artifact — a dag.json and a container image. Parsed once, at compile time. No shared /dags filesystem, no dependency hell, no re-parsing on every tick.

Author

Write a dag.py on the Airflow Task SDK, declare packaging in leoflow.yaml, and compile it to an immutable image. Native map-reduce for ML/AI as a Python list comprehension.

Author a DAG

Run dbt as DAGs

Render a dbt project into native model-level tasks — pod-per-task against your warehouse, no Airflow and no Cosmos at runtime. One granularity knob trades pods for speed.

dbt projects as DAGs

Connect

54 documented connectors — Postgres, Snowflake, AWS, GCP, Kafka, Slack and more. Declare a provider, wire a Connection, and the control plane delivers it to your task pod.

Browse connectors

Automate with MCP

Point an AI agent at Leoflow over the Model Context Protocol: “diagnose the latest failed run of sales.” Read-only, scoped to the caller’s token — its blast radius is your own API rights.

The MCP server

Operate

Go from leoflow lite on one host to a Kubernetes control plane. CI/CD deploy, Helm, upgrades, backup/restore, scheduler resilience, and warm worker pools.

Deploy & operate

Contribute

GitOps-first and TDD-strict. A real from-source dev loop with leoflow lite — isolated cluster, hot reload — plus the make lite-redeploy inner loop for Go changes.

Start contributing

Start where you are

New here? Quickstart gets Leoflow Lite running in two commands. Evaluating? Why Leoflow and Editions & modes lay out the model and the Lite/Pro split. Building? The Reference has the HTTP API, CLI, Go packages, and every LEOFLOW_* config key.