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