Dagu vs Windmill

Dagu vs Windmill: YAML declarativo frente a una plataforma de scripts y apps.

Ambos corren self-hosted y son rápidos. Windmill convierte scripts en workflows, webhooks y apps low-code, y usa PostgreSQL. Dagu es un único binario que ejecuta tus comandos con YAML declarativo, sin base de datos que operar.

Un workflow que llama a tus comandos
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]

Un binario único, sin PostgreSQL

Los workflows son YAML declarativo sobre comandos existentes

Executors para shell, Docker, HTTP, SSH, SQL, sub-workflows y agentes de IA

Corre en local, por cola o distribuido

Dos formas de definir el trabajo

Windmill es una plataforma code-first. Escribes scripts en Python, TypeScript, Go, Bash o SQL, y añade a cada uno un webhook y una UI generada. Dagu mantiene el workflow en YAML y trata tus scripts y binarios como pasos.

  • Windmill almacena y ejecuta scripts dentro de la plataforma con formularios de entrada generados.
  • Dagu define el grafo en YAML versionado y llama comandos.
  • Ambos ofrecen dependencias, retries, planificación e historial de ejecución.

Qué ejecutas para operarlo

Windmill necesita PostgreSQL para el estado y su cola de jobs, y el montaje típico corre contenedores server y worker sobre ella. Dagu es un binario único que guarda el estado en archivos, así que no hay base de datos que aprovisionar, respaldar o actualizar.

  • Dagu arranca como un proceso apoyado en archivos locales.
  • Añade cola y workers después, sin cambiar el modelo de workflow.
  • Windmill escala bien, pero asume PostgreSQL presente y gestionado.

Cuándo elegir Windmill

Windmill hace más que orquestación, y esa amplitud es el punto. Si quieres un lugar para alojar scripts como endpoints compartibles y construir apps internas y UIs alrededor, Windmill cubre terreno donde Dagu no entra.

  • Quieres un constructor de apps y UI low-code, no solo un ejecutor.
  • Quieres formularios generados, pasos de aprobación y muchas integraciones integradas.
  • Tu equipo prefiere escribir la lógica como scripts gestionados en vez de llamar comandos externos.

Windmill vs. Dagu en breve

Dimension
Dagu
Typical alternative
Autoría
YAML declarativo que llama a tus comandos.
Scripts en Python, TypeScript, Go, Bash o SQL alojados en la plataforma.
Runtime
Binario único, estado en archivos, sin base de datos.
Servicios Rust y workers apoyados en una cola PostgreSQL.
Alcance
Orquestación con pasos shell, Docker, HTTP, SSH, SQL y agentes de IA.
Workflows más un constructor de apps y UI low-code con flujos de aprobación.

FAQ

Practical questions before adopting Dagu

¿Dagu reemplaza a Windmill?

No del todo. Dagu reemplaza la parte de orquestación: planificación, dependencias, retries, logs y una UI para las ejecuciones. No ofrece el constructor de apps low-code de Windmill, sus UIs generadas ni su amplio catálogo de integraciones. Si solo necesitas planificar y observar comandos, Dagu es la opción más ligera.

¿Dagu necesita PostgreSQL?

No. Dagu guarda el estado en archivos locales y corre como un binario único, así que no hay base de datos que instalar o gestionar. Windmill depende de PostgreSQL para el estado y su cola de jobs.

¿Dagu puede ejecutar scripts de Python y TypeScript?

Sí. Un paso puede ejecutar cualquier comando, así que Python, TypeScript, Bash o un binario compilado funcionan. La diferencia es que Dagu llama scripts en el disco en lugar de alojarlos y gestionarlos como hace Windmill.

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.

Install Dagu