mrkeyoor.com_
Mon 26 Oct 20:43 UTC
Automationevaluationupdated 25 Oct 2026

dagu review

Dagu is a self-hosted workflow engine for operations and internal automation. Its README describes a single binary that adds YAML-defined dependencies, schedules, retries, human tasks, logs and a Web UI around existing commands, without an external database or message broker. Our recorded run establishes command outcomes, not production readiness.

+43stars / 7d
Verdict

Dagu is worth evaluating when the work already lives in scripts and the missing layer is scheduling, dependencies and visibility. Our September 11, 2026 run at commit 55b5c71 recorded successful install-labelled and build-labelled commands, followed by a capped Go test run with failed package results. It did not establish CLI installation, a runnable compiled binary, complete test coverage or production capacity. Start with a noncritical workflow, verify the binary and execution path directly, then test recovery, storage and concurrency under your own workload. The recorded failures need investigation; they do not establish that Dagu is broken.

We ran it

Install✓ · 116s1066 packages
Build✓ · 370s
Tests✗ timed out · 900s36 passed · 2 failed of 38 (go test)
Repo3237 files~745,443 lines of source · 39.4 MB · 12 CI workflows · Dockerfile

Answers from our run

Does dagu build from source?

Dependencies installed in 116 seconds (1066 packages), and the build succeeded in 370 seconds. We cloned commit 55b5c71 into a clean Debian container with 3 CPUs and no project-specific setup.

Do dagu's tests pass?

No. The project's own test command finished in 900 seconds and reported 36 passed, 2 failed (go test).

Who should not use dagu?

Teams seeking application workflows authored through a durable-execution SDK

What are the alternatives to dagu?

Apache Airflow, Temporal. Dagu is worth evaluating when the work already lives in scripts and the missing layer is scheduling, dependencies and visibility.

Setup2/5The recorded install-labelled and build-labelled commands exited 0, but retained output does not establish an installed CLI or runnable compiled binary. This is an evidence limitation, not proof of difficult setup.
Docs3/5The supplied README explains installation routes, deployment models, workflow capabilities and Docker access cautions. Those paths were not verified end to end, and licensing entitlements require confirmation.
Community2/5The supplied evidence does not establish support response times, contributor continuity or sustained maintenance. Attention counts cannot substitute for those observations.
Maturity2/5The README documents operational controls, but our capped run has failed package results and supplies no production capacity, recovery or failover measurements. The score reflects unresolved evaluation evidence.

Who it’s for

Operations teams evaluating a replacement for interdependent cron jobs
Teams that want workflow structure in YAML while keeping existing scripts and containers
Operators prepared to manage the server, file-backed state, upgrades and execution permissions
Teams considering shell, Docker, Kubernetes Jobs or SSH steps within one workflow

Who it’s NOT for

Teams seeking application workflows authored through a durable-execution SDK
Organizations that cannot operate their own workflow server and storage
Buyers who need a completed verification suite or production workload measurements from this review
Teams that need confirmed licensing and feature entitlements before evaluation; the recorded license signal is GPL-3.0, and the README separately describes licensed self-host features

Setup reality

In our recorded run on September 11, 2026, at commit 55b5c71, the harness-labelled install step exited successfully after 116 seconds. Its retained output shows a Go toolchain download, not an installed Dagu CLI check. The dependency metric is 1,066; it does not establish that 1,066 packages were installed. The harness-labelled build step exited successfully after 370 seconds, but its retained tail is only vet-exit:0, so compilation and a runnable binary are not independently demonstrated. The Go test command timed out after 900 seconds with exit 124. The parser recorded 36 successful and 2 failed package results, not individual test counts or verified exhaustive coverage. The tail explicitly includes a failure for internal/intg/embed, but does not establish its assertion failure or the second failed package's cause.

Dagu review: should existing scripts move beyond cron?

Dagu puts workflow structure in YAML while the work stays in your commands and containers. That makes it relevant when cron jobs need dependencies, retries, run history or an operator interface. The decision is whether that separation fits your automation and whether you can operate the server and its state.

The repository README describes a self-hostable single binary with a built-in Web UI and no external database or message broker. It lists shell commands, Docker containers, Kubernetes Jobs and SSH execution, plus schedules, parallel sub-workflows and human tasks. These are documented capabilities, not features independently exercised by our recorded run.

The existing page identifies v2.16.4. Our measurements belong to commit 55b5c71fabe82de12afbbca949615ed6835cf44e on September 11, 2026. They do not establish the installed binary's version, and this review does not present v2.16.4 as the current latest release. Current documentation and the commit-specific README are separate evidence snapshots.

What our recorded run establishes

The recorded configuration was 3 CPUs, 8 GB of memory and image golang:1.24-bookworm. The image name does not establish the actual Go runtime: the install-step tail reports downloading go1.27.0 for linux/amd64.

Recorded step Observation Limit
Install-labelled command Exit 0 after 116 seconds; retained tail shows a Go toolchain download No retained installed-Dagu CLI check
Build-labelled command Exit 0 after 370 seconds; retained tail is vet-exit:0 No independent confirmation of compilation or a runnable binary
Go test command Exit 124 after the 900-second cap The suite did not complete

The dependency metric was 1,066. It is not a verified count of packages installed by the first command. The repository metrics were 3,237 files, approximately 745,443 source lines and 39.4 MB, with 12 detected CI workflow files. These describe the recorded checkout, not runtime resource needs or test quality.

The test parser recorded 36 successful package results and 2 failed package results, with a summary total of 38, plus 5 package results marked as having no test files. These are package-level parser observations. They are not individual test counts, an exhaustive package inventory or a pass rate: unique and exhaustive counts were not verified, and no complete-log reconciliation was performed.

The retained tail explicitly marks github.com/dagucloud/dagu/v2/internal/intg/embed as failed after 21.819 seconds. It also contains successful package results, including the file-backed wiki package at 120.078 seconds and service registry at 43.105 seconds. Those durations are package execution times, not workflow throughput benchmarks. The tail does not reveal the failing assertion or identify the cause of the second parser-recorded failed package. Nearby cancellation messages do not establish causation.

No new execution was performed for this correction. The record contains no audit result, standalone installed-binary check or measured production workload. It supports a limited command-level evaluation, not a clean installation or production-readiness claim.

What to evaluate beyond cron

The commit-specific README documents cron syntax, time zones, overlap policies, catch-up windows, retries, queues and concurrency controls. For an operations team, the useful distinction is that these rules sit beside existing scripts rather than being embedded in them. That can make the orchestration boundary easier to inspect, although migration effort depends on the scripts and environment.

The README describes single-server, temporary-worker and persistent distributed-worker deployments. These have different operating requirements. Temporary workers write state to a shared volume that the server reads; distributed workers poll a coordinator over gRPC and report status, logs and artifacts. The Helm example requests a StorageClass supporting ReadWriteMany. Avoiding an external database does not remove storage, backup or recovery work.

Treat the README's throughput and fleet-scaling statements as project claims. Our run did not measure scheduling capacity, failover, backup restoration or sustained concurrent execution. A useful pilot should include a restart during execution, overlapping schedules, a failed step and restoration of saved state, with outcomes checked against your requirements.

Access and licensing need an explicit check

The README says MCP clients can inspect workflows and runs, apply changes and control executions through the authenticated server boundary. It also warns that mounting the Docker socket gives workflows control of the host daemon. These are documented execution capabilities and deployment cautions, not security findings from our run.

Before a shared deployment, decide who may edit workflows, start runs and access execution credentials. Follow the project's authentication, network and worker-transport guidance for your topology. Our record contains no security audit establishing that a deployment is safe.

The recorded repository license signal is GPL-3.0. Separately, the README says community self-hosting requires no license key and lists SSO, RBAC, audit logging and incident SaaS integration under a self-host license. Its later access-control section describes capabilities without resolving every entitlement detail. Confirm the terms and available features for the exact version and deployment you intend to use.

When to consider Airflow or Temporal

Apache Airflow describes workflows authored as code and says it works best when their structure is mostly static and slowly changing. Consider it if that authoring model fits your team. Dagu's README comparison should not be treated as proof that every Airflow task requires rewriting the underlying business logic.

Temporal describes application Workflows executed resiliently, with automatic handling of intermittent failures and retries. Its README directs developers to supported languages to implement Workflows, Activities and Workers. Consider that model when durable application execution is the requirement. Our run provides no comparative reliability or performance result for either alternative.

How to read the scores

These are editorial assessments of the evidence available for evaluation, not benchmark results. The rubric is 1 for a documented blocking limitation, 2 for a relevant area with substantial unresolved evidence, 3 for a documented evaluation path with material verification gaps, 4 for strong documentation plus direct verification of the relevant behavior, and 5 for broad verification across representative conditions. An unknown does not prove poor product quality and cannot justify a high score.

Setup receives 2 because successful command exits do not establish a working installed binary. Documentation receives 3 because the supplied material explains setup and deployment choices, but we did not verify those paths end to end. Community receives 2 because the supplied evidence does not establish support responsiveness or sustained maintenance. Maturity receives 2 because documented operational features are not backed here by recovery or workload measurements, and the recorded suite remains incomplete.

For a first evaluation, choose one noncritical job with a dependency and a recoverable failure. Verify Dagu's binary and version, run the job, inspect its logs, and check restart and retry behavior before expanding its responsibilities.

Alternatives

ProjectWhat it isPick it when
Apache Airflow gh↗A platform for authoring, scheduling and monitoring workflows defined as code.Consider Airflow when you want code-defined DAGs and your workflow structure is mostly static or changes slowly, the focus described in its README.
Temporal gh↗A durable execution platform for application workflows implemented with supported languages.Consider Temporal when you want to implement Workflows, Activities and Workers in application code, with the server handling intermittent failures and retrying failed operations.

What people are saying

  1. [github-trending] dagucloud/dagu

Sources

  1. Dagu GitHub repository
  2. Dagu homepage
  3. Dagu documentation

More automation reviews

BPB-Wizard · wenzi-xiaohongshu-workflow · open-dot · Obtainium · microduck · artemis · the whole board →