Dagu vs Windmill

Dagu vs Windmill: YAML declarativo diante de uma plataforma de scripts e apps.

Os dois rodam self-hosted e são rápidos. O Windmill transforma scripts em workflows, webhooks e apps low-code e usa PostgreSQL. O Dagu é um único binário que executa seus comandos por YAML declarativo, sem banco para operar.

Um workflow que chama seus 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]

Um binário único, sem PostgreSQL

Workflows são YAML declarativo sobre comandos existentes

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

Roda local, por fila ou distribuído

Duas formas de definir o trabalho

O Windmill é uma plataforma code-first. Você escreve scripts em Python, TypeScript, Go, Bash ou SQL, e ele adiciona a cada um um webhook e uma UI gerada. O Dagu mantém o workflow em YAML e trata seus scripts e binários como etapas.

  • O Windmill armazena e executa scripts dentro da plataforma com formulários de entrada gerados.
  • O Dagu define o grafo em YAML versionado e chama comandos.
  • Os dois oferecem dependências, retries, agendamento e histórico de execução.

O que você roda para operá-lo

O Windmill precisa de PostgreSQL para o estado e sua fila de jobs, e o setup típico roda contêineres server e worker sobre ela. O Dagu é um binário único que guarda o estado em arquivos, então não há banco para provisionar, fazer backup ou atualizar.

  • O Dagu começa como um processo apoiado em arquivos locais.
  • Adicione fila e workers depois, sem mudar o modelo de workflow.
  • O Windmill escala bem, mas espera PostgreSQL presente e gerenciado.

Quando escolher o Windmill

O Windmill faz mais do que orquestração, e essa amplitude é o ponto. Se você quer um lugar para hospedar scripts como endpoints compartilháveis e montar apps internos e UIs ao redor, o Windmill cobre um terreno onde o Dagu não entra.

  • Você quer um construtor de apps e UI low-code, não só um executor.
  • Você quer formulários gerados, etapas de aprovação e muitas integrações nativas.
  • Seu time prefere escrever a lógica como scripts gerenciados em vez de chamar comandos externos.

Windmill vs. Dagu em resumo

Dimension
Dagu
Typical alternative
Autoria
YAML declarativo que chama seus comandos.
Scripts em Python, TypeScript, Go, Bash ou SQL hospedados na plataforma.
Runtime
Binário único, estado em arquivos, sem banco.
Serviços Rust e workers apoiados em uma fila PostgreSQL.
Escopo
Orquestração com etapas shell, Docker, HTTP, SSH, SQL e agentes de IA.
Workflows mais um construtor de apps e UI low-code com fluxos de aprovação.

FAQ

Practical questions before adopting Dagu

O Dagu substitui o Windmill?

Não por completo. O Dagu substitui a parte de orquestração: agendamento, dependências, retries, logs e UI das execuções. Ele não oferece o construtor de apps low-code do Windmill, as UIs geradas nem seu amplo catálogo de integrações. Se você só precisa agendar e observar comandos, o Dagu é a opção mais leve.

O Dagu precisa de PostgreSQL?

Não. O Dagu guarda o estado em arquivos locais e roda como um binário único, então não há banco para instalar ou gerenciar. O Windmill depende de PostgreSQL para o estado e sua fila de jobs.

O Dagu pode rodar scripts Python e TypeScript?

Sim. Uma etapa pode rodar qualquer comando, então Python, TypeScript, Bash ou um binário compilado funcionam. A diferença é que o Dagu chama scripts no disco em vez de hospedá-los e gerenciá-los como o Windmill faz.

Start with one workflow.

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

Install Dagu