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.

From cron line to workflow
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

Dependencies
Dagu

First-class step graph.

Cron

Shell chains, lock files, and wrapper scripts.

Retries
Dagu

Per-step retry policies.

Cron

Custom loops or manual reruns.

Visibility
Dagu

Web UI, logs, status, and history.

Cron

System logs and hand-built conventions.

In depth

Where each tool fits

01

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.
02

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.
03

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.