Cron alternative
Keep cron's simplicity. Add the controls production jobs need.
Dagu keeps schedules close to your scripts while adding dependency graphs, retries, logs, history, manual reruns, and a web UI.
name: nightly-ops
schedule: "0 2 * * *"
steps:
- id: extract
run: python scripts/extract.py
- id: transform
run: ./bin/transform
retry_policy:
limit: 3
depends: [extract]
- id: notify
run: ./scripts/slack-success.sh
depends: [transform]Cron-style schedules in YAML
Step dependencies instead of shell chains
Retry failed steps without manual SSH sessions
Run history and logs in a web UI
At a glance
Cron vs. Dagu
First-class step graph.
Shell chains, lock files, and wrapper scripts.
Per-step retry policies.
Custom loops or manual reruns.
Web UI, logs, status, and history.
System logs and hand-built conventions.
In depth
Where each tool fits
Cron is simple until jobs depend on each other
Once a scheduled script needs retries, output capture, dependency order, or human-friendly history, cron becomes a pile of wrapper scripts.
- Model each command as a named step.
- Use dependencies instead of long shell chains.
- Inspect failed output and rerun from the web UI.
No platform migration required
Dagu runs the scripts you already have. The first migration can be one nightly job, not a platform rewrite.
- Keep existing Bash, Python, Go, Java, PHP, or Perl jobs.
- Move schedules into versioned YAML.
- Add timeouts and retry policies one workflow at a time.
Operational visibility by default
Dagu captures the run state that cron leaves scattered across syslog, custom files, and tribal knowledge.
- See current status, history, and logs.
- Trigger manual runs without logging into the host.
- Use notifications and downstream steps for failure handling.
FAQ
Practical questions before adopting Dagu
Can Dagu use cron syntax?
Yes. Dagu workflows can define schedules with familiar cron expressions while adding workflow-level execution state and step controls.
Do I have to rewrite cron scripts?
No. Put the existing command in a Dagu step, add a schedule, and then add dependencies, retries, and notifications as needed.
Does Dagu need Kubernetes?
No. Dagu can run as a single process on a normal machine. Distributed execution is available when you need it.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.