SkillAgentSearch skills...

dagu

Self-hostable workflow orchestrator for teams whose main work isn't orchestration. Declarative YAML over your scripts, SSH commands, containers, etc; keep workflows separate from business logic. One binary, no database, runs on limited H/W resources. Alternative to Airflow / Cron / Job Scheduler.

Install / Use

claude mcp add dagucloud -- npx -y github:dagucloud/dagu

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

86/100

Category

Automation

Supported Platforms

Claude Code
Claude Desktop
<div align="center"> <a href="https://dagu.sh"> <img src="./assets/images/hero-logo.png" width="720" alt="Dagu: built for teams whose main work is not orchestration"> </a> <p> <a href="https://docs.dagu.sh">Docs</a> · <a href="https://docs.dagu.sh/getting-started/cli">CLI</a> · <a href="https://petstore.swagger.io/?url=https://raw.githubusercontent.com/dagucloud/dagu/main/api/v1/api.yaml">API</a> · <a href="https://docs.dagu.sh/writing-workflows/examples">Examples</a> · <a href="https://dagu-demo-f5e33d0e.dagu.sh">Live demo</a> <code>(username/password: demouser)</code> · <a href="https://discord.gg/gpahPUjGRk">Discord</a> </p> </div> <h1>Dagu</h1>

Dagu is a local-first workflow engine for ops automation and AI-assisted operations. 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 / Mac / Windows. Define DAGs in a declarative YAML format. It natively supports shell commands, Docker containers, Kubernetes Jobs, remote commands via SSH, external coding-agent CLIs through harness.run, and more through Dagu Actions.

Dagu turns existing scripts, runbooks, and agent-driven jobs into production workflows with scheduling, retries, approvals, 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 distributed worker fleet.

Highlights:

  • Single binary file installation.
  • Declarative YAML format for defining DAGs.
  • Web UI for visually managing, retrying, and monitoring pipelines.
  • Use existing scripts or tools without any modifications.
  • Self-contained, with no need for a DBMS.
  • Built-in MCP support for AI agents to manage workflows.
  • Run external coding-agent CLIs through harness.run when workflows need AI assistance.

Quick Look

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

<div align="center"> <a href="./assets/images/dagu-demo.mp4?raw=1"> <img src="./assets/images/cockpit-demo-poster.jpg" width="720" alt="Dagu Cockpit showing queued, running, completed, and failed workflow runs"> </a> </div>

| 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 approvals 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 approvals 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: Distributed 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 complex jobs with interdependencies into maintainable DAGs with a UI, automatic logging, retries, and notifications instead of opaque cron jobs and bash scripts. | | Media conversion | Run ffmpeg for video transcoding and format conversion. Thanks to Dagu's file-backed nature, workers can 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. This is useful for running automation on private infrastructure without exposing your 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 | Run self-service support tools that non-engineering teams can use to run approved workflows for running diagnostics, querying databases, and performing common support tasks without escalating to engineering. | | IoT and edge workflows | Run sensor polling, local ML inference, data preprocessing, backups, offline sync, health checks, etc. Dagu keeps these jobs close to the data source while still providing 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

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 <your-rwx-storage-class> 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

Connect AI agents through MCP

Dagu exposes a built-in MCP server from the running HTTP server. Start Dagu, then configure MCP-capable chat or coding agents to use the Streamable HTTP endpoint:

http://localhost:8080/mcp

Use MCP when you want an AI agent to read Dagu state and Wiki pages, preview or apply workflow and Wiki page changes, and start, enqueue, retry, or stop runs through dagu_read, dagu_change, and dagu_execute. See the MCP setup guide.

For authoring-only help in Claude Code, Codex, Gemini CLI, and other AI coding tools, install the Dagu workflow authoring skill:

gh skill install dagucloud/dagu dagu

How You Run Dagu?

Run Dagu on one machine, or scale out with distributed workers. See the Deployment Models guide.

<table> <tr> <td width="50%" align="center" valign="top"> <strong>Single Server</strong><br> <img src="./assets/images/deployment-model-local.gif" width="100%" alt="Single-server deployment model with one Dagu server handling scheduling and execution."> </td> <td width="50%" align="center" valign="top"> <strong>Distributed Workers</strong><br> <img src="./assets/images/deployment-model-self-hosted.gif" width="100%" alt="Distributed-workers deployment model with the Dagu server dispatching to workers on separate machines."> </td> </tr> </table>

| Model | Server | Execution | Best for | |------|--------|-----------|----------| | Single server | dagu start-all on one machine. | Same machine. | Development, single-machine scheduled workloads, edge jobs, and internal automation. | | Distributed workers | Dagu server and coordinator on your infrastructure. | Workers on separate machines, routed by labels. | Heavier workloads, private networks, and multiple execution hosts. |

Licensing

  • Community self-host: No license key required. You operate the server, storage, upgrades, networking, and workers. Start with the installation guide.
  • Self-host license: Adds SSO, RBAC, audit logging, and incident SaaS integration to Dagu. See self-host licensing.

Key Features

  • Observability: Shared workflows and scheduling with clear visualizations, status tracking, and logs in the Web UI.
  • Language-agnostic: No framework required. Define workflow steps using shell commands, Docker containers, Kubernetes Jobs, SQL queries, HTTP requests, and any other tool via official and third-party Dagu Actions.
  • Build workflows: Reuse a step's result when its command and files have not changed. Dagu can also infer dependencies from matching file paths.
  • Reproducibility: Reproducible runs with pinned tools, plus automatic installation and caching on workers—eliminating the need to manually install dependencies on the server or workers.
  • Built-in Approvals: The Human-in-the-loop steps for manual approvals, review, and intervention in any workflow.
  • MCP Server: Built-in MCP server for authoring and running workflows via AI agents like Claude Code, Codex, Gemini CLI, Pi, OpenCode, and more.
  • External CLI Harness: You can run coding-agent CLIs (Claude Code, Codex, Gemini CLI, Pi, OpenCode, etc.) with a built-in harness action or custom harness definition.
  • Secret management: Built-in secret management with secure log masking, preventing credentials from leaking into logs or the Web UI.
  • Self-hosted: A single binary that runs on Linux, macOS, and Windows. Includes an optional distributed worker mode for scaling out execution across machines.
  • Permission Control: RBAC and SSO support for team environments, controlling who can view, run, and edit workflows through granular permissions and audit logging.

Architecture

Dagu can run in three configurations:

Standalone: A single dagu start-all process runs the HTTP server, scheduler, and executor. Suitable for single-machine deployments.

Coordinator/Worker: The scheduler enqueues jobs to a

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars4.0k
CategoryAutomation
Updated8h ago
Forks342

Languages

Go

Security Score

100/100

Audited on Sep 21, 2026

No findings