AI agent
Asks for an approved operation without seeing private credentials.
Dagu is a lightweight alternative to Airflow or Cron with a Web UI. Define DAGs in a simple declarative YAML format. It supports shell commands, docker containers, k8s jobs, remote commands via SSH, and more. It was designed to be easy to use, self-contained, and require no coding, making it ideal for small teams.
Dagu is built for developers who want powerful workflow orchestration without the operational overhead.
One binary, no external database or broker. Workflows run from files, so it works in air-gapped environments too.
Shell scripts, Python jobs, SQL, dbt, DuckDB, containers, and data runbooks all run as pipeline steps unchanged. You don't need a new framework.
Define workflows in simple, declarative YAML format. You can use any existing script or tools without any modification.
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 →Trusted by developers at
AI agent gateway
A built-in MCP server lets any AI agent manage your DAGs out of the box. Private systems sit behind a security boundary that requires secrets, and Dagu masks them automatically — so the agent never sees them.
Asks for an approved operation without seeing private credentials.
Enforces granular access control before any workflow can run.
Runs the exact script, container, SQL, HTTP, SSH, or sub-workflow you already trust.
Production tools and data stay behind Dagu, not inside the agent context.
Agents request a named workflow action through Dagu MCP instead of receiving shell, database, or API credentials.
Dagu checks access, injects secrets only at runtime, and can pause sensitive workflows for human approval.
Every run keeps logs, outputs, status, history, and audit evidence for humans and agents to inspect.
Expose only the actions each agent is allowed to run.
Inject credentials at runtime without revealing them to the agent.
Track who or what ran each workflow and with which inputs.
Pause high-risk operations for human review.
Return status and outputs without opening raw system access.
The agent gets a bounded tool. Your private systems keep the secrets, logs, permissions, and operational history in Dagu.
Dagu gives teams the missing operational layer for scripts, tools, runbooks, and AI agents.
Track workflows, schedules, live status, logs, run history, outputs, artifacts, and approvals in the Web UI.
Run shell commands, Python scripts, containers, Kubernetes Jobs, SQL queries, HTTP requests, SSH commands, and more.
Pin tools in workflow YAML so workers install and cache the expected binaries before execution.
Run shared AI agents inside workflows and expose workflows to agents as bounded, observable tools.
Pause sensitive steps for human review, confirmation, or intervention before execution continues.
Let MCP-capable agents inspect Dagu state, preview changes, edit workflows, and control runs.
Run coding agents and agent CLIs from workflows while keeping logs, approvals, secrets, and audit history in Dagu.
Inject secrets into workflow runs and mask sensitive values in logs for users, agents, and chat tools.
Run a single binary, deploy with containers or Kubernetes, or use managed and hybrid deployment models.
Use RBAC, SSO, API keys, workspace controls, and audit logs to govern workflow access.
Deployment models
Run a self-hosted instance, use the Dagu managed server, or combine the cloud control plane with private workers in your infrastructure.
Local
Run `dagu start-all` on one machine with local file-backed state. No database, broker, or platform stack required.
Self-hosted
Keep the Dagu server, workers, secrets, logs, and execution inside your own environment.
Dagu
Use a dedicated Dagu server operated by Dagu in an isolated gVisor instance on GKE.
Hybrid
Let Dagu operate the server while private workers run Docker, private-network, or data-local steps.
Hybrid execution
Hybrid keeps the Dagu server managed while execution that needs your network, runtime, or data stays under your control.
Battle-tested workflow engine features let you focus on the core value without worrying about orchestration.
Run thousands of workflow runs per day on one machine, depending on hardware, workflow shape, step duration, and queue settings.
Use queues, concurrency limits, and distributed workers to control load and spread jobs across machines.
Recurring schedules, catchup, durable executions, timeouts, reruns, notification, and incidents routing to responders.
User management, RBAC, workspaces, approval steps, built-in secret management, API Keys, and webhooks.
Turn repetitive engineering requests into self-service workflows. Business teams run them independently. Engineers stay out of the loop.
Bring existing shell scripts, Python scripts, HTTP calls, and scheduled jobs into Dagu without rewriting them.
Coordinate SSH backups, cleanup jobs, deploy scripts, patch windows, precondition checks, and lifecycle hooks.
Run PostgreSQL or SQLite queries, S3 transfers, jq transforms, validation steps, and reusable sub-workflows.
Trigger Dagu runs from GitHub events from issues and PRs via managed Dagu GitHub App.
Compose workflows where each step can run a Docker image, Kubernetes Job, shell command, or validation step.
Run ffmpeg, thumbnail extraction, audio normalization, image processing, and other compute-heavy jobs across workers.
Run sensor polling, local cleanup, offline sync, health checks, and device maintenance jobs on small devices.
Run any harness to automate certain development workflow with clean context and automatic retry & failover.
Turn private scripts, internal CLIs, reusable actions, pinned tools, and artifacts into workflows other teams can safely request or run.
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]
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.
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.
Declare CLI tools and versions in YAML. Dagu prepares them before host-command steps run.
Learn moreUse official Dagu Actions such as Python or NodeJS, or build your own action package to run your workflow with necessary tools and dependencies.
Learn moreManage artifacts in DAG runs and preview / download in the Web UI.
Learn moreConfigure notifications for each workflow so necessary events reach the right channel.
Learn moreAI agent in Slack helps you to manage your workflows,
debug failures, and recover incidents.
Dagu is equipped with production-grade workflow engine features.
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
Dagu is really a gem in the open source world! ❤️ What a release — with GitHub Actions as well. Thanks guys.
@borestad
Elk Studios
Dagu is an amazing tool!! It works perfectly now, thank you so much! 💖
@jarnik
Freelance developer
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
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
I've recently played around with Dagu for private stuff and think it could also be worth introducing at work.
@DarkWiiPlayer
Developer
Awesome, it works like a charm! I second the update of the doc on this one.
@thibmart1
Developer
That's very impressive. The exit code dictionary will make these DAGs even further sophisticated. Once again, very good features. 🫡
@ghansham
Developer
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
Dagu is really a gem in the open source world! ❤️ What a release — with GitHub Actions as well. Thanks guys.
@borestad
Elk Studios
Dagu is an amazing tool!! It works perfectly now, thank you so much! 💖
@jarnik
Freelance developer
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
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
I've recently played around with Dagu for private stuff and think it could also be worth introducing at work.
@DarkWiiPlayer
Developer
Awesome, it works like a charm! I second the update of the doc on this one.
@thibmart1
Developer
That's very impressive. The exit code dictionary will make these DAGs even further sophisticated. Once again, very good features. 🫡
@ghansham
Developer
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
Dagu is really a gem in the open source world! ❤️ What a release — with GitHub Actions as well. Thanks guys.
@borestad
Elk Studios
Dagu is an amazing tool!! It works perfectly now, thank you so much! 💖
@jarnik
Freelance developer
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
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
I've recently played around with Dagu for private stuff and think it could also be worth introducing at work.
@DarkWiiPlayer
Developer
Awesome, it works like a charm! I second the update of the doc on this one.
@thibmart1
Developer
That's very impressive. The exit code dictionary will make these DAGs even further sophisticated. Once again, very good features. 🫡
@ghansham
Developer
I love how simple this is now.
@n3storm
Estudio Nexos
Fantastic! Thanks for the quick reply — keep up the great project!
@mitchplze
Developer
Amazing support! Thank you!
@kacamific
Developer
It works perfectly with v2.6.1. Thank you very much for the correction.
@napnap75
Developer
Thanks for the fix. Works great now.
@triole
Developer
As always, appreciate the great work — just sharing feedback to help shape the roadmap.
@jonnochoo
Developer
it's awesome you keep working on it 👍
@fishnux
Developer
Thank you so much for the quick fix! I tested it, and it now correctly stores the files where it should.
@IngwiePhoenix
Developer
I love how simple this is now.
@n3storm
Estudio Nexos
Fantastic! Thanks for the quick reply — keep up the great project!
@mitchplze
Developer
Amazing support! Thank you!
@kacamific
Developer
It works perfectly with v2.6.1. Thank you very much for the correction.
@napnap75
Developer
Thanks for the fix. Works great now.
@triole
Developer
As always, appreciate the great work — just sharing feedback to help shape the roadmap.
@jonnochoo
Developer
it's awesome you keep working on it 👍
@fishnux
Developer
Thank you so much for the quick fix! I tested it, and it now correctly stores the files where it should.
@IngwiePhoenix
Developer
I love how simple this is now.
@n3storm
Estudio Nexos
Fantastic! Thanks for the quick reply — keep up the great project!
@mitchplze
Developer
Amazing support! Thank you!
@kacamific
Developer
It works perfectly with v2.6.1. Thank you very much for the correction.
@napnap75
Developer
Thanks for the fix. Works great now.
@triole
Developer
As always, appreciate the great work — just sharing feedback to help shape the roadmap.
@jonnochoo
Developer
it's awesome you keep working on it 👍
@fishnux
Developer
Thank you so much for the quick fix! I tested it, and it now correctly stores the files where it should.
@IngwiePhoenix
Developer
Install Dagu with the guided wizard, then continue in the full installation guide or quickstart docs.
The script installers are the recommended path. Homebrew, npm, and Docker remain available for binary-only or container installs.
Install the Dagu skill for workflow authoring, or connect an MCP client to a running Dagu server.
Helps Claude Code, Codex, Gemini CLI, and other AI coding tools write Dagu YAML.
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.
The guided installer can finish the first-run setup for you.
Discuss usage, report issues, and follow development.
Solution partner
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.