Dagu exists to solve a problem familiar to anyone managing legacy infrastructure: hundreds of cron jobs with implicit dependencies, scattered across servers, with no visibility into what ran, what failed, or what depends on what. Instead of replacing your existing scripts with a framework-specific SDK, Dagu orchestrates whatever you already have — shell commands, Python scripts, Docker containers, SSH commands, HTTP calls — in declarative YAML files without requiring any code changes. The single Go binary ships with a web UI, scheduler, and execution engine all in one, consuming under 128MB of memory. File-based storage means no PostgreSQL, Redis, or message broker to manage.
Despite its lightweight footprint, Dagu packs production-grade features: 19+ executor types including Docker, SSH, postgres, and sqlite step types; DAG composition where workflows can nest sub-workflows with parameters; a distributed mode with coordinator/worker architecture and label-based task routing for GPU, region, or compliance requirements; exponential backoff retries with lifecycle hooks for success, failure, and exit events; RBAC for team environments; Prometheus metrics and OpenTelemetry tracing; and email notifications. The web UI provides live log tailing, execution history with full lineage, and drill-down into nested sub-workflows. Git-based version management tracks changes to DAG definitions.
A recent addition is the built-in AI agent that can create, edit, and debug workflows from natural language — either through the web UI or as a persistent Workflow Operator bot on Slack and Telegram. This lets teams ask the bot to check logs, retry failed steps, or scaffold new workflows in plain English. Dagu is installable via Homebrew, npm, Docker, Helm for Kubernetes, or the guided script installer that sets up Dagu as a background service. It runs on macOS, Linux, and Windows, and is fully air-gapped ready — no internet required after installation. The name comes from DAG (Directed Acyclic Graph) and the Mandarin word for big drum.