A batteries-included workflow engine that doesn't get in your way.

|

Define workflows in simple YAML, execute them anywhere with a single binary, compose complex pipelines from reusable sub-workflows, and distribute tasks across workers. All this without requiring databases, message brokers, or code changes to your existing scripts.

# Get started instantly
$curl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | sh
✓ dagu installed successfully
$dagustart-all
✓ Web UI ready at http://localhost:8080
Powerful
Enterprise ready
Portable
Run anywhere
Local-First
No vendor lock-in

Compose anything in YAML

Local scripts, remote commands, containers. All unified in simple, readable workflows.

workflow.yaml
schedule: "0 0 * * *" # Runs at 00:00 everyday

steps:
  - name: local script
    command: python data_extract.py

  - name: remote command
    executor: ssh
    command: backup_database.sh

  - name: docker container
    executor: docker
    command: python:3.11 python process.py

Air-Gapped Ready

Works offline and in isolated environments. No database, no external services, no internet required.

Universal Execution

Run anything: local scripts, remote SSH commands, Docker containers, HTTP calls, and more.

Instant Setup

Download, run, done. Start orchestrating workflows in minutes with sensible defaults.

A Powerful, Portable, Local-First Workflow Engine

Packed with production-ready features in a single binary.

NEW

User Management & RBAC

Built-in user management with role-based access control - Admin, Manager, Operator, and Viewer roles

Learn more

GitHub Actions

Run any GitHub Action locally without CI/CD platform - 20,000+ actions available

Learn more

Nested Workflows

Build complex workflows by composing smaller, reusable workflows

Learn more

Distributed Execution

Scale your workflows across multiple machines seamlessly

Learn more

Docker Integration

Run steps in isolated Docker containers with full control

Learn more

Shell Commands

Execute any command with pipes, redirects, or scripts

Learn more

Conditional Steps

Control workflow execution based on conditions and outputs

Learn more

Automatic Retries

Built-in retry logic based on exit codes, with exponential backoff

Learn more

Repeat Policy

Repeat steps with custom intervals and 'until' or 'while' conditions

Learn more

Environment Variables

Pass and manage environment variables throughout workflows

Learn more

Rich Web UI

DAG visualization, execution history, logs, and built-in editor

Learn more

Authentication

Secure your workflows with Basic Auth, OIDC, or built-in user management with JWT

Learn more

Email Notifications

Get notified about workflow status and failures via email

Learn more

Advanced Scheduler

Start, stop, retry schedules with cron expressions

Learn more

Timezone Support

Schedule workflows in any timezone with CRON_TZ

Learn more

Remote Command Execution

Execute commands on remote servers through SSH

Learn more

Queue Management

Control concurrent workflow runs with built-in queueing system

Learn more

Quickstart

1

Install Dagu

Binary
$ curl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | bash
✓ Installed to /usr/local/bin/dagu
2

Create a workflow

Terminal
$ cat > hello.yaml << EOF
# Your first workflow
steps:
- echo "Hello from dagu!"
- ls -la
EOF
✓ hello.yaml created
3

Run it

Terminal
$ dagu start hello.yaml
⏳ hello running...
✓ hello finished
Hello from dagu!
⏳ list running...
✓ list finished
total 16
-rw-r--r-- 1 user staff 123 Jul 30 10:15 hello.yaml
drwxr-xr-x 3 user staff 96 Jul 30 10:14 .dagu
✓ Workflow completed successfully
4

Explore the Web UI

dagu includes a modern web interface for monitoring and managing workflows.

Terminal
$ dagu start-all
✓ Server started at http://localhost:8080
⚡ Web UI: Real-time monitoring, visual DAG view, execution history

Architecture

Interfaces

CLI

dagu start workflow.yaml

Web UI

Real-time monitoring

REST API

Full programmatic control

Core Components

Scheduler

Cron expressions

Timezone aware

Agent, Worker

Separated process

Parallel, Distributed execution

Executor

Shell, Docker, SSH

HTTP, jq

File-Based Storage

Workflows

Simple YAML format

Logs

Structured output

Automatically cleaned-up

History

Execution history

Simple JSON format

Join our community! 👋

Share ideas, request features, showcase use cases, report bugs, or get help from the community