Dagu is a free, open source orchestration & scheduling project written in Go and released under GPL-3.0. It has 4,023 GitHub stars, 335 forks and 67 open issues, and was last pushed 16 hours ago. On this registry it ranks #35 of 64 tracked projects in Orchestration & Scheduling, with 5 head-to-head comparisons available. It gained 62 stars over the last 6 tracked days.

What is Dagu?

What it is

Dagu is local-first workflow engine. It targets operations and internal automation. It lives in Infrastructure & Operations / Orchestration & Scheduling. It is Go project under GPL-3.0. It provides single binary with built-in Web UI. It needs no external database or message broker. It runs on Linux, macOS, Windows. GitHub metadata lists 3982 stars, 332 forks, 0 contributors, 67 open issues, repo age 0 years, last push 2026-09-14.

Problem solved: teams have scripts, containers, runbooks. They need schedule, retries, dependencies, logs, history. cron lacks dependencies, retries, history. Airflow requires scheduler, metadata database, workers, Python environment, and framework code. Temporal moves business logic into SDK. Dagu keeps workflow structure as YAML configuration beside existing code. Scripts do not import orchestrator. Delete YAML, scripts run as before. Keep YAML, runs get dependency graph, retries, per-step logs, history, Web UI.

Key capabilities

  • Define DAGs in declarative YAML, with order, dependencies, retries, schedules, human tasks.
  • Run existing shell commands, Docker containers, Kubernetes Jobs, remote SSH commands without modification through Dagu Actions.
  • Compose reusable Sub-DAGs and run work in parallel with concurrency controls.
  • Schedule workflows with cron syntax, timezones, overlap policies, catch-up windows.
  • Keep logs, run history, retries, notifications, webhook triggers in one place.
  • Scale from single node to fleet of workers, using queues, concurrency limits, resource limits.
  • Inspect workflows and runs, maintain Wiki pages, apply changes, control runs through built-in MCP server.

Who uses it and how

  • Operations teams turn existing runbooks into scheduled workflows with human tasks and retry policies.
  • Data teams build ETL and data operations pipelines from extraction scripts, SQL queries, dbt commands, and processing runbooks.
  • DevOps teams replace cron jobs with observable DAGs that show dependencies, logs, and run history.
  • Air-gapped, edge, on-prem, and cloud teams run local-first automation where data and credentials live.
  • Teams with AI or agent workflows use Dagu for human-in-the-loop, durable execution, and job scheduling patterns indicated by topics.

Getting started

Install single binary, then run dagu start-all to start engine and Web UI. For quick look, use live demo https://dagu-demo-f5e33d0e.dagu.sh with username and password demouser.

When to use it — and when not to

Use Dagu when workflow structure should stay configuration, not code, and when small self-hosted binary can replace cron or heavy Airflow platform. Do not use it when you need Temporal-style SDK programming model; Dagu stores state in local files and needs no external database or message broker. Self-hoster must operate single binary, local file state, disk, CPU, memory, and workers; throughput depends on resources and workflow shape, and repo facts show 0 contributors and 67 open issues.

project readme (upstream, from github) — read inline

Docs · CLI · API · Examples · Live demo (username/password: demouser) · Discord

Dagu

Dagu is a local-first workflow engine for operations and internal automation. It is open source and self-hostable: a single binary with a built-in Web UI, no external database or message broker, running on Linux, macOS, and Windows. Define DAGs in a declarative YAML format. It natively supports shell commands, Docker containers, Kubernetes Jobs, remote commands via SSH, and more through Dagu Actions.

Dagu turns existing scripts and runbooks into production workflows with scheduling, retries, human tasks, and run history. It runs where your data and credentials live: on-prem, air-gapped, edge, or cloud, and scales from a single node to a fleet of workers.

Highlights:

  • Single binary installation.
  • Self-contained: no external DBMS or message broker required.
  • Runs on Linux, macOS, and Windows.
  • Declarative YAML format for defining DAGs.
  • Run existing shell commands, Docker containers, Kubernetes Jobs, and remote commands over SSH without modifications.
  • Compose reusable Sub-DAGs and run work in parallel with concurrency controls.
  • Schedule workflows with cron syntax, timezones, overlap policies, and catch-up windows.
  • Keep logs, run history, retries, notifications, and webhook triggers in one place.
  • Built-in MCP server for inspecting workflows and runs, maintaining Wiki pages, applying changes, and controlling runs.

Quick Look

For a quick look at how workflows are defined, see the examples.

Run Details Step Logs Wiki
Run details in dark mode Workflow logs in dark mode Workflow Wiki in dark mode

Try it live: Live Demo (credentials: demouser / demouser)

Why Dagu?

Orchestration is not your main work. You have scripts and containers that already work. You want a schedule, retries, dependencies, and a place to see logs. The usual options each have a cost:

  • cron runs commands, but gives you no dependencies, no retries, no history.
  • Airflow orchestrates, but you operate a platform for it (scheduler, metadata database, workers, a Python environment), and your jobs get rewritten as @dag/@task framework code.
  • Temporal gives durable execution, but your business logic moves into its SDK and programming model.

You wanted to schedule some jobs. Now you operate a second system, and the orchestrator lives inside the code it was supposed to serve.

Dagu treats workflow structure as configuration, not code. Order, dependencies, retries, schedules, and human tasks go in one YAML file next to your scripts; the engine that runs them is a single process:

  Traditional Orchestrator          Dagu
  ┌────────────────────────┐        ┌──────────────────┐
  │  Web Server            │        │                  │
  │  Scheduler             │        │  dagu start-all  │
  │  Worker(s)             │        │                  │
  │  PostgreSQL            │        └──────────────────┘
  │  Redis / RabbitMQ      │         Single binary.
  │  Python Runtime        │         Self-hosted.
  └────────────────────────┘         Adds scheduling, retries, and human tasks around existing automation.
    6+ services to manage

Your scripts never import the orchestrator. Delete the YAML and they run exactly as before. Keep it, and every run gets a dependency graph, retries, per-step logs, history, and a Web UI.

Performance

Dagu stores state in local files and reaches production throughput without external services.

  • Throughput: A single machine can run thousands of workflow runs per day. Actual capacity depends on CPU, memory, disk, and workflow shape.
  • Load control: Queues, concurrency limits, and resource limits control how many runs execute at once and where they run.
  • Scale out: Workers spread execution across machines when one node is not enough.

Real-World Use Cases

Use Case How Dagu Helps
ETL and data operations Turn data extraction scripts, SQL queries, dbt commands, and data-processing runbooks into observable pipelines with durable execution.
Legacy scripts and scheduled jobs Turn interdependent scripts into maintainable DAGs with a UI, automatic logging, retries, and notifications instead of opaque cron jobs.
Media conversion Run ffmpeg for video transcoding and format conversion. File-backed state allows workers to run heavy conversions in parallel without single-machine bottlenecks or external databases.
Infrastructure and server automation Run any command or script over SSH on remote servers, keeping logs, results, and notifications in one place.
GitHub-driven workflows Trigger workflows from GitHub events to run automation on private infrastructure without exposing servers to the public internet.
Container and Kubernetes workflows Run Docker containers and Kubernetes Jobs as steps in your workflows without building a custom control plane around containers.
Customer support automation Provide self-service workflows that non-engineering teams can run for diagnostics, database queries, and routine operations without escalating to engineering.
IoT and edge workflows Run sensor polling, local ML inference, data preprocessing, backups, offline sync, and health checks close to the data source with Web UI visibility.

Quick Start

Install

macOS/Linux:

curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash

Homebrew:

brew install dagu

npm:

npm install -g --ignore-scripts=false @dagucloud/dagu

Windows (PowerShell):

irm https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.ps1 | iex

Docker:

docker run --rm -v ~/.dagu:/var/lib/dagu -p 8080:8080 ghcr.io/dagucloud/dagu:latest dagu start-all

This command does not expose the host Docker daemon to Dagu. Workflows that use container: or action: docker.run need the container-step Docker setup. Mounting the Docker socket grants workflows control of the host daemon.

Kubernetes (Helm):

helm repo add dagu https://dagucloud.github.io/dagu
helm repo update
helm install dagu dagu/dagu --set persistence.storageClass=<your-rwx-storage-class>

Replace `` with a StorageClass that supports ReadWriteMany. See charts/dagu/README.md for chart configuration.

The script installers run a guided wizard that can add Dagu to your PATH, set it up as a background service, and create the initial admin account. Homebrew, npm, Docker, and Helm install without the wizard. See the Installation documentation for all options.

Create and run a workflow

Create hello.yaml:

steps:
  - id: hello
    run: echo "hello from Dagu"

Run the workflow with:

dagu start hello.yaml

Start the server

dagu start-all --dags .

Visit http://localhost:8080

How You Run Dagu

Dagu runs on one machine, on temporary workers your platform creates for each run, or on workers you keep running. All three are self-hosted, and the same workflow YAML runs on any of them. See the Deployment Models guide.

Single server
Temporary workers
Deployment model whe</article> </details> </section> <p class= readme truncated — read the full docs on github

Frequently asked questions

Is Dagu free to use?

Dagu is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Dagu do?

YAML-defined workflow orchestration, no database required

What is Dagu written in?

Dagu is primarily written in Go. Its source is publicly available at https://github.com/dagucloud/dagu, and it has 4,023 GitHub stars.