Alternativa a LangGraph

Un runtime para workflows de agentes, no una biblioteca dentro de tu aplicación.

LangGraph es una buena forma de expresar un grafo de agentes en código. Dagu es la capa que lo ejecuta: un único binario autoalojado donde el workflow es YAML, los agentes son pasos corrientes y las programaciones, colas, reintentos, pausas duraderas e historial vienen del motor en lugar de la aplicación que escribes alrededor.

Un workflow de agente programado, sin nada alrededor
# triage.yaml
schedule: "*/15 * * * *"
max_active_runs: 1

steps:
  - id: fetch
    run: ./scripts/fetch-new-issues.sh
    output: ISSUES

  - id: classify
    action: harness.run
    with:
      provider: claude
      prompt: Classify each issue in ${ISSUES}. Return JSON.
    output_schema: schemas/triage.json
    retry_policy:
      limit: 3
      interval_sec: 30
    depends: [fetch]

  - id: apply_labels
    run: ./scripts/apply-labels.sh
    depends: [classify]

Los workflows son YAML, no código de aplicación

Los pasos son procesos, así que sirve cualquier lenguaje o CLI

Programación, colas, reintentos e historial vienen en el binario

Las ejecuciones en espera liberan el proceso y se reanudan después

At a glance

LangGraph y Dagu desde el punto de vista de quien lo opera

Forma
Dagu

Un motor de workflows que ejecutas como binario.

LangGraph

Una biblioteca que integras en una aplicación de Python o JavaScript.

Definición
Dagu

YAML declarativo, versionado junto al código que ejecuta.

LangGraph

Construcción del grafo en el código de la aplicación.

Operación
Dagu

Programaciones, colas, reintentos, artefactos e historial vienen con el motor.

LangGraph

Los checkpointers persisten el estado del grafo; la programación y la exposición vienen de tu servicio o de LangGraph Platform.

Unidad de trabajo
Dagu

Un proceso: cualquier lenguaje, cualquier CLI, en contenedor si hace falta.

LangGraph

Una función dentro del proceso anfitrión.

In depth

Where each tool fits

01

Una biblioteca necesita una aplicación. Un motor no.

LangGraph construye el grafo. Aun así, algo tiene que programarlo, encolarlo, reintentarlo, persistir su estado y mostrar qué ocurrió. Ese algo es el servicio que escribes, o LangGraph Platform. Dagu ya es esa capa.

  • Ejecuta un binario. No hay servicio web que escribir ni pool de workers que diseñar
  • Programación, colas, reintentos e historial son funciones del motor, no integraciones
  • La misma definición corre en un portátil, en una VM o en un coordinator con workers
02

Los pasos son procesos, así que el workflow no queda atado a un lenguaje

Los nodos de LangGraph son funciones de Python o JavaScript dentro de tu proceso. Un paso de Dagu es un comando, así que la unidad de trabajo es lo que ya se ejecuta en tu entorno.

  • Llama a scripts de shell, binarios, contenedores, comandos SSH, endpoints HTTP y SQL desde un solo workflow
  • Ejecuta agentes de código con harness.run: Claude, Codex, Gemini, OpenCode o una CLI interna
  • Da a cualquier paso un sandbox de contenedor con montajes, toolchain y reglas de salida explícitas
03

Dibuja el grafo cuando puedas y cede el orden cuando no

LangGraph pide dibujar cada camino, lo cual es correcto hasta que el orden depende de lo que dijo un revisor. Dagu mantiene type: graph por defecto y añade type: controller para el trabajo que nunca cupo en un solo grafo.

  • Un workflow controller declara criterios de finalización y deja que el modelo elija la siguiente acción
  • El modelo elige solo entre los pasos que declaraste, así que el radio de impacto es el archivo
  • Los dos tipos producen la misma ejecución, con los mismos logs, reintentos, artefactos e historial

FAQ

Practical questions before adopting Dagu

¿Dagu sustituye a LangGraph tal cual?

No. Están en capas distintas. LangGraph encaja cuando quieres componer llamadas a modelos en Python o JavaScript con control fino del estado del grafo. Dagu encaja mejor cuando el trabajo es un conjunto de comandos y CLIs de agentes que necesitan programación, reintentos, aprobaciones y rastro de auditoría.

¿Puedo seguir usando LangGraph dentro de Dagu?

Sí. Mantén la aplicación de LangGraph como script o contenedor y ejecútala como un paso. Dagu aporta alrededor la programación, la política de reintentos, los logs, los artefactos y el historial.

¿Cómo trata Dagu el human-in-the-loop?

Las tareas humanas, y ask_user dentro de los workflows controller, suspenden la ejecución de forma duradera. El proceso termina, se libera la ranura del worker y la ejecución se reanuda en un proceso nuevo en cuanto alguien responde.

¿Dagu necesita base de datos?

No. Dagu es un binario único que guarda definiciones, historial de ejecuciones y logs como archivos, así que no hay base de metadatos ni broker de mensajes que operar antes de la primera ejecución.

Next step

Start with one workflow.

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