dagron

Why dagron?

How dagron compares to NetworkX, graphlib, Dask, Airflow, and Prefect — and when to use it.

dagron is an embeddable DAG library, not a deployment framework. It gives your application a Rust-fast graph engine with Python ergonomics — no scheduler daemon, no YAML configs, no cloud console.

You import dagron, build a graph, and execute it. Your process, your rules.


Comparison

dagronNetworkXgraphlibDaskAirflowPrefect
TypeLibraryLibraryStdlibFrameworkOrchestratorOrchestrator
LanguageRust + PythonPythonPythonPythonPythonPython
DAG executionBuilt-in (thread/async/distributed)NoNoYesYesYes
Incremental recomputationYesNoNoNoNoNo
CheckpointingYesNoNoPartialYesYes
Dynamic DAG expansionYes (runtime)N/AN/ALimitedYes (2.x)Yes
Approval gatesYesNoNoNoPluginPlugin
Resource-aware schedulingYes (CPU/GPU/memory slots)NoNoYes (workers)Yes (pools)Yes (work pools)
Distributed executionRay, Celery backendsNoNoYes (native)Yes (Celery)Yes (native)
Overhead~0 (library import)~0~0Scheduler processWeb server + DB + schedulerAPI server + DB
PerformanceRust core, 3-12x vs NetworkXPure PythonPure Python (minimal)Python + C extensionsPythonPython

When to use dagron

dagron is a great fit when you need a task graph inside your own process:

  • Build systems — model file targets as nodes, skip unchanged targets with incremental execution
  • Spreadsheet engines — cells as nodes, formula dependencies as edges, recalculate only dirty cells
  • CI/CD schedulers — lint/test/build/deploy with resource constraints and approval gates
  • ETL pipelines — multi-stage data pipelines with checkpointing and crash recovery
  • Game asset pipelines — texture/model/shader compilation with dependency tracking
  • Reactive UIs — propagate state changes through a dependency graph

The common thread: you want the graph engine embedded in your application, not running as a separate service.


When NOT to use dagron

  • Managed cloud orchestration — If you want a web UI, user management, scheduled triggers, and a managed service, use Airflow or Prefect.
  • General graph database — If you need property graphs, Cypher queries, or persistent graph storage, use Neo4j.
  • Undirected / cyclic graphs — dagron enforces acyclicity. For general graph algorithms on undirected graphs, use NetworkX.
  • Distributed-first data processing — If your primary need is data parallelism across a cluster, use Dask or Spark.

On this page