id = "dagu"
name = "Dagu"
homepage = "https://dagu.sh"
description = "Lightweight and powerful workflow engine."
executables = ["dagu"]
[dotfiles]
paths = [
"[configHome]/dagu/config.yaml",
"[configHome]/dagu/base.yaml",
"[configHome]/dagu/dags/",
]
secret = []
[[dotfiles.secret_paths]]
file = "[configHome]/dagu/config.yaml"
format = "yaml"
match = { key_path = ["auth.basic.password"] }
[commands]
format = 1
label = "Dagu CLI"
description = "Run, retry and stop DAG workflows, or start the web UI server. Modelled subcommands: start, retry, stop, server. Parameters after -- and other subcommands are not covered."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["start"]
label = "Run a DAG"
[[commands.subcommand.source]]
id = "doc"
kind = "manual"
url = "https://docs.dagu.sh/overview/cli"
revision = "docs.dagu.sh CLI reference 2026-10-27"
evidence = """
dagu start [options] DAG_NAME_OR_FILE [-- PARAMS...]
--name, -N - Override the DAG name (default: name from DAG definition or filename)
--run-id, -r - Custom run ID
--profile - Runtime profile to apply to this run
--no-reuse - Recompute eligible build steps instead of reusing prior materializations
--only - Run only this step (name or ID); repeatable. Every other step is recorded as skipped
dagu start my-workflow.yaml
dagu start --run-id batch-001 etl.yaml
dagu start --only scrape example-dag.yaml
"""
[[commands.subcommand.field]]
id = "dag"
label = "DAG name or file"
type = "path"
position = 0
path = { kind = "file", role = "input", must_exist = false }
sources = ["doc"]
[[commands.subcommand.field]]
id = "name"
label = "Override DAG name"
type = "string"
option = ["--name", "-N"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "run_id"
label = "Run ID"
type = "string"
option = ["--run-id", "-r"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "profile"
label = "Runtime profile"
type = "string"
option = ["--profile"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "no_reuse"
label = "Recompute build steps"
type = "boolean"
option = ["--no-reuse"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "only"
label = "Run only these steps"
type = "string"
option = ["--only"]
multiple = true
sources = ["doc"]
[[commands.subcommand.task]]
id = "run"
label = "Run a DAG"
fields = ["dag", "run_id", "profile", "no_reuse"]
required = ["dag"]
[[commands.subcommand.task]]
id = "one-step"
label = "Run selected steps only"
fields = ["dag", "only", "run_id"]
required = ["dag", "only"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["dag", "run_id", "profile"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["name", "no_reuse", "only"]
[[commands.subcommand]]
path = ["retry"]
label = "Retry a run"
[[commands.subcommand.source]]
id = "doc"
kind = "manual"
url = "https://docs.dagu.sh/overview/cli"
revision = "docs.dagu.sh CLI reference 2026-10-27"
evidence = """
dagu retry [options] DAG_NAME_OR_FILE
--run-id, -r - Run to retry (required)
--step - Retry only the named step
--downstream - Also retry reachable descendants of --step; requires --step
dagu retry --run-id=20240101_120000 my-workflow
"""
[[commands.subcommand.field]]
id = "dag"
label = "DAG name or file"
type = "path"
position = 0
path = { kind = "file", role = "input", must_exist = false }
sources = ["doc"]
[[commands.subcommand.field]]
id = "run_id"
label = "Run ID"
type = "string"
option = ["--run-id", "-r"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "step"
label = "Only this step"
type = "string"
option = ["--step"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "downstream"
label = "Include downstream steps"
type = "boolean"
option = ["--downstream"]
sources = ["doc"]
[[commands.subcommand.task]]
id = "retry"
label = "Retry a run"
fields = ["dag", "run_id", "step", "downstream"]
required = ["dag", "run_id"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["dag", "run_id", "step", "downstream"]
[[commands.subcommand]]
path = ["stop"]
label = "Stop a running DAG"
[[commands.subcommand.source]]
id = "doc"
kind = "manual"
url = "https://docs.dagu.sh/overview/cli"
revision = "docs.dagu.sh CLI reference 2026-10-27"
evidence = """
dagu stop [options] DAG_NAME_OR_FILE
--run-id, -r - Specific run ID (optional)
"""
[[commands.subcommand.field]]
id = "dag"
label = "DAG name or file"
type = "path"
position = 0
path = { kind = "file", role = "input", must_exist = false }
sources = ["doc"]
[[commands.subcommand.field]]
id = "run_id"
label = "Run ID"
type = "string"
option = ["--run-id", "-r"]
sources = ["doc"]
[[commands.subcommand.task]]
id = "stop"
label = "Stop a DAG"
fields = ["dag", "run_id"]
required = ["dag"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["dag", "run_id"]
[[commands.subcommand]]
path = ["server"]
label = "Start the web UI server"
[[commands.subcommand.source]]
id = "doc"
kind = "manual"
url = "https://docs.dagu.sh/overview/cli"
revision = "docs.dagu.sh CLI reference 2026-10-27"
evidence = """
dagu server [options]
--host, -s - Host (default: localhost)
--port, -p - Port (default: 8080)
--dags, -d - DAGs directory
dagu server --host=0.0.0.0 --port=9000 # Custom host/port
"""
[[commands.subcommand.field]]
id = "host"
label = "Host"
type = "string"
option = ["--host", "-s"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "port"
label = "Port"
type = "integer"
option = ["--port", "-p"]
sources = ["doc"]
[[commands.subcommand.field]]
id = "dags"
label = "DAGs directory"
type = "path"
option = ["--dags", "-d"]
path = { kind = "directory", role = "input", must_exist = false }
sources = ["doc"]
[[commands.subcommand.task]]
id = "serve"
label = "Start the server"
fields = ["host", "port", "dags"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["host", "port", "dags"]