Local-first Control Plane for Existing Ops Automation and AI Agent Workflows

Most teams end up with cron jobs nobody can fully explain. When one breaks, figuring out what failed and what order to re-run things in takes longer than it should. Dagu turns that implicit dependency graph into an explicit DAG. Status, logs, and re-runs live in a web UI. One binary, local files, existing scripts untouched.

Dagu is built for developers who want powerful workflow orchestration without the operational overhead.

Linux
macOS
Windows
Docker
Kubernetes
View Examples
Try Live Demo
Login withdemouser / demouser
dagu start-all --port 8080
Install dagu command
$curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash

Self-host and local-first

One binary, no external database or broker. Workflows run from files, so it works in air-gapped environments too.

CLI-oriented

Shell scripts, Python jobs, SQL, dbt, DuckDB, containers, and data runbooks all run as pipeline steps unchanged. You don't need a new framework.

Secure AI-agent integration

Use your favorite AI agent to create, improve, debug, and run workflows. Built-in secret management keeps credentials out of logs and away from agents, while still letting them preview and run tasks. Every action is logged for compliance.

Set up via MCP β†’
workflow.yaml
# Controlled production runbook with typed inputs and review
name: "repair-customer-account"

params:
- name: customer_id
type: string
- name: change_scope
type: string
enum: ["metadata_only", "permissions"]
default: metadata_only
- name: dry_run
type: boolean
default: true

steps:
- id: inspect_account
run: ./scripts/inspect-account.sh --customer $${customer_id}
stdout:
artifact: reports/inspection.md

- id: review
action: noop
depends: [inspect_account]
approval:
prompt: "Review the inspection report before repair."

- id: repair_account
run: ./scripts/repair-account.sh --customer $${customer_id} --scope $${change_scope} --dry-run $${dry_run}
depends: [review]
stdout:
artifact: reports/repair.log

Trusted by developers at

1Password
Intel
MongoDB
Baidu
ByteDance
Canonical
Grab
Douban
Debian
NASA / JPL
Gitee
Plaid
Geodis
Aleno
Mambu
Audibene
NINAnor
RUBIX GmbH
cynkra
DataLad
dandi
QNIB Solutions
modoolar
TTT Studios
vital-software
m3dev
Build On Technologies
Dalibo
InfoInnova
infront-quant
gfx-labs
t54-labs
sajo
ANZX
1Password
Intel
MongoDB
Baidu
ByteDance
Canonical
Grab
Douban
Debian
NASA / JPL
Gitee
Plaid
Geodis
Aleno
Mambu
Audibene
NINAnor
RUBIX GmbH
cynkra
DataLad
dandi
QNIB Solutions
modoolar
TTT Studios
vital-software
m3dev
Build On Technologies
Dalibo
InfoInnova
infront-quant
gfx-labs
t54-labs
sajo
ANZX
1Password
Intel
MongoDB
Baidu
ByteDance
Canonical
Grab
Douban
Debian
NASA / JPL
Gitee
Plaid
Geodis
Aleno
Mambu
Audibene
NINAnor
RUBIX GmbH
cynkra
DataLad
dandi
QNIB Solutions
modoolar
TTT Studios
vital-software
m3dev
Build On Technologies
Dalibo
InfoInnova
infront-quant
gfx-labs
t54-labs
sajo
ANZX

Deployment models

Run a self-hosted instance, use the Dagu managed server, or combine the cloud control plane with private workers in your infrastructure.

Start on one machine. Scale to self-hosted, managed, or hybrid.

Local

Single server

Run `dagu start-all` on one machine with local file-backed state. No database, broker, or platform stack required.

Self-hosted

Your infrastructure

Keep the Dagu server, workers, secrets, logs, and execution inside your own environment.

Dagu

Full managed server

Use a dedicated Dagu server operated by Dagu in an isolated gVisor instance on GKE.

Hybrid

Managed server, private execution

Let Dagu operate the server while private workers run Docker, private-network, or data-local steps.

Hybrid execution

Managed Dagu server
Private worker over mTLS
Docker, private APIs, secrets, and data-local work

Hybrid keeps the Dagu server managed while execution that needs your network, runtime, or data stays under your control.

Production-grade workflow engine features

Battle-tested workflow engine features let you focus on the core value without worrying about orchestration.

Performance

Run thousands of workflow runs per day on one machine, depending on hardware, workflow shape, step duration, and queue settings.

Distributed executions

Use queues, concurrency limits, and distributed workers to control load and spread jobs across machines.

Notifications

Recurring schedules, catchup, durable executions, timeouts, reruns, notification, and incidents routing to responders.

Auth & RBAC

User management, RBAC, workspaces, approval steps, built-in secret management, API Keys, and webhooks.

Real-world use cases

01

Customer Support Automation

Turn repetitive engineering requests into self-service workflows. Business teams run them independently. Engineers stay out of the loop.

02

Cron and Legacy Script Management

Bring existing shell scripts, Python scripts, HTTP calls, and scheduled jobs into Dagu without rewriting them.

03

Infrastructure and Server Automation

Coordinate SSH backups, cleanup jobs, deploy scripts, patch windows, precondition checks, and lifecycle hooks.

04

ETL and Data Operations

Run PostgreSQL or SQLite queries, S3 transfers, jq transforms, validation steps, and reusable sub-workflows.

05

GitHub as the interface. Your infrastructure as the runtime.

Trigger Dagu runs from GitHub events from issues and PRs via managed Dagu GitHub App.

06

Container and Kubernetes Workflows

Compose workflows where each step can run a Docker image, Kubernetes Job, shell command, or validation step.

07

Media Conversion

Run ffmpeg, thumbnail extraction, audio normalization, image processing, and other compute-heavy jobs across workers.

08

IoT and Edge Workflows

Run sensor polling, local cleanup, offline sync, health checks, and device maintenance jobs on small devices.

09

AI Agent Workflows

Run any harness to automate certain development workflow with clean context and automatic retry & failover.

Common patterns

Health Check
SSH Backup
Notify

Private Script Workflows

Turn private scripts, internal CLIs, reusable actions, pinned tools, and artifacts into workflows other teams can safely request or run.

  • 1Keep existing scripts and commands intact
  • 2Expose narrow parameters instead of broad production access
  • 3Call versioned Dagu Actions with typed outputs
  • 4Store reports and logs as first-class artifacts
workflow.yaml
tools:
  - jqlang/jq@jq-1.7.1

steps:
  - id: collect
    action: acme/dagu-action-export@v1.4.2
    with:
      dataset: customers

  - id: transform
    run: jq '.items[] | {id, email}' ${collect.outputs.path}
    stdout:
      artifact: reports/customers.json
    depends: [collect]

  - id: publish
    action: outputs.write
    with:
      values:
        report: reports/customers.json
        rows: ${collect.outputs.rows}
    depends: [transform]

Typed parameters

Dagu automatically renders them as a typed parameter input form in the Web UI, useful for making self-service workflows or operation by non-engineers.

workflow.yaml
tools:
  - jqlang/jq@jq-1.7.1

steps:
  - id: inspect
    run: jq --version

  - id: summarize
    action: python-script@v1
    with:
      input:
        rows: [42, 8]
      script: |
        return {"total": sum(input["rows"])}

Tool provisioning uses aqua as the default provider.

Multiplayer AI agent in Slack

AI agent in Slack helps you to manage your workflows,debug failures, and recover incidents.

DaguDagu
Message...

Full-fledged Workflow features

Dagu is equipped with production-grade workflow engine features.

Loved by developers

Real comments from the Dagu GitHub community.

This is literally my dream project. I have set up GitLab at some point just to run some commands and this project is perfect for all my use case. Thank you very much!

@vnghia

Developer

#827

Dagu is really a gem in the open source world! ❀️ What a release β€” with GitHub Actions as well. Thanks guys.

@borestad

Elk Studios

#1313

Dagu is an amazing tool!! It works perfectly now, thank you so much! πŸ’–

@jarnik

Freelance developer

#1294

I've been exploring Dagu for a few weeks and really love the Zero-Ops philosophy. The declarative YAML approach is exactly what the workflow orchestration space needs.

@vincent067

Developer

#1814

Amazing! I did not expect this to be delivered that fast! Multiple schedulers do not compete and the locking mechanism works as expected. Good job!

@jonasban

Developer

#1130

I've recently played around with Dagu for private stuff and think it could also be worth introducing at work.

@DarkWiiPlayer

Developer

#924

Awesome, it works like a charm! I second the update of the doc on this one.

@thibmart1

Developer

#1320

That's very impressive. The exit code dictionary will make these DAGs even further sophisticated. Once again, very good features. 🫑

@ghansham

Developer

#1076

This is literally my dream project. I have set up GitLab at some point just to run some commands and this project is perfect for all my use case. Thank you very much!

@vnghia

Developer

#827

Dagu is really a gem in the open source world! ❀️ What a release β€” with GitHub Actions as well. Thanks guys.

@borestad

Elk Studios

#1313

Dagu is an amazing tool!! It works perfectly now, thank you so much! πŸ’–

@jarnik

Freelance developer

#1294

I've been exploring Dagu for a few weeks and really love the Zero-Ops philosophy. The declarative YAML approach is exactly what the workflow orchestration space needs.

@vincent067

Developer

#1814

Amazing! I did not expect this to be delivered that fast! Multiple schedulers do not compete and the locking mechanism works as expected. Good job!

@jonasban

Developer

#1130

I've recently played around with Dagu for private stuff and think it could also be worth introducing at work.

@DarkWiiPlayer

Developer

#924

Awesome, it works like a charm! I second the update of the doc on this one.

@thibmart1

Developer

#1320

That's very impressive. The exit code dictionary will make these DAGs even further sophisticated. Once again, very good features. 🫑

@ghansham

Developer

#1076

This is literally my dream project. I have set up GitLab at some point just to run some commands and this project is perfect for all my use case. Thank you very much!

@vnghia

Developer

#827

Dagu is really a gem in the open source world! ❀️ What a release β€” with GitHub Actions as well. Thanks guys.

@borestad

Elk Studios

#1313

Dagu is an amazing tool!! It works perfectly now, thank you so much! πŸ’–

@jarnik

Freelance developer

#1294

I've been exploring Dagu for a few weeks and really love the Zero-Ops philosophy. The declarative YAML approach is exactly what the workflow orchestration space needs.

@vincent067

Developer

#1814

Amazing! I did not expect this to be delivered that fast! Multiple schedulers do not compete and the locking mechanism works as expected. Good job!

@jonasban

Developer

#1130

I've recently played around with Dagu for private stuff and think it could also be worth introducing at work.

@DarkWiiPlayer

Developer

#924

Awesome, it works like a charm! I second the update of the doc on this one.

@thibmart1

Developer

#1320

That's very impressive. The exit code dictionary will make these DAGs even further sophisticated. Once again, very good features. 🫑

@ghansham

Developer

#1076

I love how simple this is now.

@n3storm

Estudio Nexos

#1593

Fantastic! Thanks for the quick reply β€” keep up the great project!

@mitchplze

Developer

#1359

Amazing support! Thank you!

@kacamific

Developer

#760

It works perfectly with v2.6.1. Thank you very much for the correction.

@napnap75

Developer

#1638

Thanks for the fix. Works great now.

@triole

Developer

#831

As always, appreciate the great work β€” just sharing feedback to help shape the roadmap.

@jonnochoo

Developer

#770

it's awesome you keep working on it πŸ‘

@fishnux

Developer

#328

Thank you so much for the quick fix! I tested it, and it now correctly stores the files where it should.

@IngwiePhoenix

Developer

#423

I love how simple this is now.

@n3storm

Estudio Nexos

#1593

Fantastic! Thanks for the quick reply β€” keep up the great project!

@mitchplze

Developer

#1359

Amazing support! Thank you!

@kacamific

Developer

#760

It works perfectly with v2.6.1. Thank you very much for the correction.

@napnap75

Developer

#1638

Thanks for the fix. Works great now.

@triole

Developer

#831

As always, appreciate the great work β€” just sharing feedback to help shape the roadmap.

@jonnochoo

Developer

#770

it's awesome you keep working on it πŸ‘

@fishnux

Developer

#328

Thank you so much for the quick fix! I tested it, and it now correctly stores the files where it should.

@IngwiePhoenix

Developer

#423

I love how simple this is now.

@n3storm

Estudio Nexos

#1593

Fantastic! Thanks for the quick reply β€” keep up the great project!

@mitchplze

Developer

#1359

Amazing support! Thank you!

@kacamific

Developer

#760

It works perfectly with v2.6.1. Thank you very much for the correction.

@napnap75

Developer

#1638

Thanks for the fix. Works great now.

@triole

Developer

#831

As always, appreciate the great work β€” just sharing feedback to help shape the roadmap.

@jonnochoo

Developer

#770

it's awesome you keep working on it πŸ‘

@fishnux

Developer

#328

Thank you so much for the quick fix! I tested it, and it now correctly stores the files where it should.

@IngwiePhoenix

Developer

#423

Quickstart

Install Dagu with the guided wizard, then continue in the full installation guide or quickstart docs.

1

Install dagu command

The script installers are the recommended path. Homebrew, npm, and Docker remain available for binary-only or container installs.

Mac/Linux Terminal
$curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash
βœ“ Guided installer ready
Optional

Connect AI tools

Install the Dagu skill for workflow authoring, or connect an MCP client to a running Dagu server.

Dagu skill
$gh skill install dagucloud/dagu dagu

Helps Claude Code, Codex, Gemini CLI, and other AI coding tools write Dagu YAML.

Dagu MCP endpoint
URLhttp://localhost:8080/mcp

Lets MCP-capable clients read Dagu state, preview changes, and control DAG runs.

OIDC/SSO-backed MCP access is available for enterprise deployments. Contact us to discuss setup.

2

Next steps

The guided installer can finish the first-run setup for you.

# What the installer can do
Add Dagu to your PATH
Set up a background service
Create and verify the first admin

Project Community

Discuss usage, report issues, and follow development.

Solution partner

Solution partner support for customer projects

For teams embedding Dagu into customer-facing products, internal platforms, or managed services, we provide enterprise features and hands-on integration support.

We help partners design the security model, integration path, and operating plan so Dagu can fit cleanly into customer projects without handing out broad production access.

Contact us

Enterprise OIDC/SSO and access control

MCP support for agent and customer workflows

Architecture review for self-hosted, managed, or hybrid deployments

Private worker, secrets, and network-bound execution setup

Migration of scripts and runbooks into customer-facing workflows

Dedicated support through project delivery and production launch