What Is Leoflow?
Leoflow is a GitOps-first, container-native workflow orchestrator written by the neochaotic/leoflow project for data engineers and platform teams that want Airflow-compatible operations without Airflow's runtime drag. Leoflow is one of the best Workflow Orchestrators tools for Data Engineers. The project is Apache 2.0 licensed, runs a Go control plane, and claims sub-200 ms scheduling decisions with pod-per-task execution in its current pre-alpha design.
Quick Overview
| Attribute | Details |
|---|---|
| Type | Workflow Orchestrators |
| Best For | Data Engineers |
| Language/Stack | Go, Kubernetes, Python, Postgres, Redis, gRPC, Docker |
| License | Apache 2.0 |
| GitHub Stars | N/A (star count not exposed in scraped page) as of Feb 2026 |
| Pricing | Open-Source |
| Last Release | Pre-alpha build — 90-day expiry as of Feb 2026 |
Who Should Use Leoflow?
- Data engineering teams replacing Airflow DAGs that suffer from scheduler lag, triggerer saturation, or per-task dependency conflicts.
- Platform teams that already standardize on Kubernetes and want each workflow task isolated in its own ephemeral pod.
- CI/CD owners who prefer versioned artifacts, registry-backed images, and GitOps-style promotion instead of mutable server-side DAG state.
- Teams with mixed Python dependencies that need one workflow to run
pandas==1.0and another to runpandas==2.0without image shims.
Not ideal for:
- Production systems that need long-term stability today; the project is explicitly pre-alpha and the binaries expire after about 90 days.
- Simple cron replacement jobs where a full control plane, registry flow, and UI are unnecessary overhead.
- Teams without Kubernetes or container registry access; Leoflow's execution model assumes both are available.
Key Features of Leoflow
- Immutable DAG compilation — Leoflow compiles a DAG into
dag.jsonplus a container image, which removes runtime parsing from the scheduler loop. That design avoids the repeated.pyfile scanning that makes Airflow schedulers burn CPU for no useful work. - Ephemeral pod-per-task execution — Every task runs in its own Kubernetes pod, so the worker lifecycle is short and predictable. That eliminates the leak-prone long-lived worker pattern that causes OOMKills, file descriptor buildup, and connection churn.
- Native dependency isolation — Each DAG ships with its own Python version and package set from
leoflow.yaml, so incompatible libraries do not fight inside one shared runtime. This is the cleanest way to run divergent data pipelines on the same cluster. - Go-based control plane — The scheduler and API are implemented in Go, which means no GIL and much lower orchestration latency than Python control planes. The project claims sub-200 ms scheduling decisions and 100,000+ concurrent sensors via goroutines.
- Airflow UI compatibility — The MVP uses the unmodified Apache Airflow 3.2.x UI, so migration risk is lower for operators who already know the Airflow vocabulary. That matters because the UI is usually where incident response happens at 3 a.m.
- GitOps-friendly workflow — CI compiles, pushes, and registers the DAG as a versioned artifact. Rollback becomes a registry tag change instead of a live server-side edit.
- Native observability hooks — The architecture exposes Prometheus metrics, OpenTelemetry, structured logs, Postgres metadata, and Redis-backed XCom/log fan-out. That gives platform teams a sane place to attach OpenTrace or their own tracing pipeline.
Leoflow vs Alternatives
| Tool | Best For | Key Differentiator | Pricing |
|---|---|---|---|
| Leoflow | Airflow-style orchestration on Kubernetes | Go control plane, immutable DAG artifacts, ephemeral pod-per-task model | Open-Source |
| Apache Airflow | Mature workflow orchestration with broad ecosystem support | Largest ecosystem and established operator library | Open-Source |
| Dagster | Typed data assets and software-defined pipelines | Strong asset model and developer ergonomics | Open-Source + Cloud |
| Prefect | Flexible workflow automation with lighter setup | Fast onboarding and managed cloud path | Open-Source + Cloud |
Pick Apache Airflow if your team needs the most battle-tested ecosystem and can tolerate Python scheduler overhead. Airflow is still the default reference point for workflow orchestration, but it keeps the Python control plane and shared-worker trade-offs that Leoflow is trying to remove.
Pick Dagster if your primary problem is asset lineage, typed pipeline modeling, and developer feedback loops rather than raw execution isolation. Pick Prefect if you want a friendlier entry path and are okay with a more managed workflow posture than Leoflow's infrastructure-first design.
If your real pain is deployment automation, CI glue, or environment rollout rather than DAG orchestration, djevops is the better internal fit. If your priority is tracing the behavior of distributed jobs after they launch, OpenTrace pairs well with Leoflow without replacing the scheduler.
How Leoflow Works
Leoflow is built around an immutable artifact model. You author a DAG in Python, declare dependencies in leoflow.yaml, and then compile that project into a container image plus dag.json, which becomes the unit the control plane schedules and stores.
The control plane is a Go service that owns scheduling, state transitions, retries, and API access. Metadata lives in Postgres, while Redis handles XCom payloads and live log fan-out; task execution happens in an ephemeral worker pod that runs leoflow-agent and reports state over gRPC.
This architecture keeps the scheduler lean and lets each workflow carry its own runtime, which is why Leoflow can support a much wider dependency surface than a shared-Airflow-worker model. It also makes rollbacks deterministic because the deployment artifact is versioned before it ever reaches the cluster.
# getting started example
curl -fsSL https://raw.githubusercontent.com/neochaotic/leoflow/main/install.sh | sh
leoflow compile .
leoflow push ./dag.json
The first command installs the binaries and runs leoflow setup, which checks Python, provisions the parser, and creates the workspace without requiring sudo or a package manager. The second command compiles the project into an image and DAG spec, and the third registers the workflow with the control plane so it shows up in the UI on refresh.
Pros and Cons of Leoflow
Pros:
- Fast scheduler path because the control plane is native Go instead of Python.
- Per-task isolation through ephemeral Kubernetes pods, which reduces cross-DAG dependency conflicts.
- Immutable deployment units that make rollback and promotion look like artifact management instead of live mutation.
- Lower worker drift because each task starts clean and exits, rather than accumulating state in a long-lived process.
- Airflow UI familiarity that reduces operator retraining during migration.
- Built-in observability primitives with metrics, logs, XCom, and API surfaces exposed from day one.
Cons:
- Pre-alpha status means the project is not ready to be treated like a hardened production dependency.
- 90-day build expiry forces you to refresh binaries, which is unusual for infrastructure software.
- Kubernetes dependence makes it a bad fit for teams that are not already operating clusters.
- Smaller ecosystem than Apache Airflow, so you will not find the same breadth of community plugins and battle-tested operators yet.
- Higher platform complexity than a simple scheduler because the workflow unit is a compiled artifact plus container image.
Getting Started with Leoflow
curl -fsSL https://raw.githubusercontent.com/neochaotic/leoflow/main/install.sh | sh
# create or open a project with leoflow.yaml and dag.py
leoflow setup
leoflow compile .
leoflow push ./dag.json
After the install script runs, Leoflow validates Python availability, installs the parser, and prepares a workspace so you can author a DAG without hand-writing Docker plumbing. If you need different runtime dependencies per pipeline, declare them in leoflow.yaml before compiling so the generated image matches the workflow.
For a first test, use a small DAG with one fetch task and one transform task, then confirm the control plane shows the versioned artifact and the Airflow-compatible UI renders the DAG graph. If you are migrating from Airflow, start with a non-critical pipeline and compare task latency, log retrieval, and retry behavior before moving production traffic.
Verdict
Leoflow is the strongest option for Airflow migration teams when you want container-per-task isolation and a Go control plane instead of Python scheduler overhead. Its biggest strength is architectural: immutable DAG artifacts plus ephemeral pods remove whole classes of Airflow pain. The caveat is equally clear: it is still pre-alpha, so use it for evaluation and constrained rollouts, not as a blind production swap.


