Dagu

automationdevops

Lightweight workflow orchestrator and cron replacement written in Go. Define task pipelines as YAML DAGs, run them on a schedule or on demand, and monitor execution through a web UI. No database required

#workflows#scheduling#dag#cron#yaml#go#self-hosted

Quick Start

docker run -d -p 8080:8080 -v dagu_data:/home/dagu/.config/dagu ghcr.io/dagucloud/dagu:latest

Overview

Dagu is a workflow orchestrator built around one idea: DAGs defined in YAML, with no database and no external dependencies. You write a YAML file that describes which commands to run, in what order, with what dependencies between them. Dagu handles the scheduling, execution, retry logic, and failure notifications. A single Go binary, a directory for YAML files, and a web server for the UI — that is the entire stack.

The YAML format makes workflows readable and version-controllable. A pipeline that fetches data, transforms it, and loads it somewhere is expressed as a list of steps with depends relationships between them. Dagu evaluates the dependency graph and runs steps in the correct order, running independent steps in parallel where the graph allows it. When a step fails, you configure whether to retry, continue, or halt the pipeline.

The web UI provides the operational visibility that raw cron lacks. Every DAG has a run history, step-level log output, a visual dependency graph, and controls for manual retries. There is no need to SSH into a server and dig through log files to understand why a pipeline failed at 3am.

The practical niche is the space between cron and Airflow. For teams running shell scripts, Docker containers, or Python files on a schedule with dependencies between steps, Dagu provides DAG orchestration without requiring a Python environment, PostgreSQL, Redis, and a Celery worker pool. The entire setup takes minutes rather than an afternoon.

The constraint is scale. Dagu runs on a single machine. Teams that need distributed execution across worker nodes, Python-native operators for cloud services, or the deep observability of Airflow’s enterprise features will outgrow it. For most self-hosted automation use cases, they will not reach that ceiling.

Dagu: Pros & Cons

Pros (The Wins)Cons (The Friction)
No database needed:
Single Go binary; state
stored in local files.
GPL-3.0 licence:
Proprietary embedding or
SaaS use needs review.
YAML DAGs:
Readable, version-controllable
pipeline definitions.
Single-machine only:
No distributed execution;
no built-in horizontal scale.
Web UI included:
Run history, live logs,
and retry controls built in.
Less mature than Airflow:
Fewer operators and
enterprise integrations.
Lightweight vs Airflow:
DAG orchestration without
Python, Redis, or PostgreSQL.
Smaller community:
Fewer examples and
extensions than major tools.

Use Cases

Specific ways to use Dagu for your workflow.

01
Replace a collection of interdependent shell scripts with a YAML pipeline that handles ordering, retries, and failure alerting
02
Run ETL workflows on a schedule without deploying a full Airflow stack — define tasks in YAML and let Dagu handle execution
03
Chain Docker container runs in a dependency graph where each step waits for the previous one to succeed
04
Monitor all scheduled jobs from a single web dashboard instead of scattered crontab files across servers

Deployment Strategy

Recommended ways to host Dagu in your own environment.

docker
self-hosted