Альтернатива LangGraph

Рантайм для агентских воркфлоу, а не библиотека внутри вашего приложения.

LangGraph — хороший способ выразить агентский граф в коде. Dagu представляет собой слой исполнения: один self-hosted бинарник, где workflow описан в YAML, агенты являются обычными шагами, а расписания, очереди, ретраи, надёжная приостановка и история запусков встроены в движок.

Агентский воркфлоу по расписанию, без обвязки вокруг
# triage.yaml
schedule: "*/15 * * * *"
 
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:
      type: object
      additionalProperties: false
      required: [labels]
      properties:
        labels:
          type: array
          items:
            type: string
    retry_policy:
      limit: 3
      interval_sec: 30
    depends: [fetch]
 
  - id: apply_labels
    run: ./scripts/apply-labels.sh
    depends: [classify]

Execution order

fetchclassifyclaudeapply_labels

Воркфлоу описаны в YAML, а не в коде приложения

Шаг является процессом, поэтому подходит любой язык и любой CLI

Расписания, очереди, ретраи и история идут внутри бинарника

Ожидающий запуск освобождает процесс и продолжается позже

At a glance

LangGraph и Dagu глазами тех, кто это эксплуатирует

Форма
Dagu

Движок воркфлоу, который вы запускаете как бинарник.

LangGraph

Библиотека, встраиваемая в приложение на Python или JavaScript.

Определение
Dagu

Декларативный YAML, версионируемый рядом с кодом, который он запускает.

LangGraph

Построение графа в коде приложения.

Эксплуатация
Dagu

Расписания, очереди, ретраи, артефакты и история запусков идут вместе с движком.

LangGraph

Checkpointer хранит состояние графа; расписание и обслуживание берут на себя ваш сервис или LangGraph Platform.

Единица работы
Dagu

Процесс: любой язык, любой CLI, при необходимости внутри контейнера.

LangGraph

Функция внутри хост-процесса.

In depth

Where each tool fits

01

Библиотеке нужно приложение, а движку нет

LangGraph строит граф. Но кто-то всё ещё должен ставить его в расписание и очередь, повторять при сбое, хранить состояние и показывать, что произошло. Этот кто-то — ваш сервис или LangGraph Platform. Dagu уже закрывает этот слой.

  • Запускается один бинарник. Не нужно писать веб-сервис и проектировать пул воркеров
  • Расписания, очереди, ретраи и история запусков являются возможностями движка, а не интеграциями
  • Одно и то же определение работает на ноутбуке, на одной VM и в связке coordinator с воркерами
02

Шаги как процессы: воркфлоу не привязан к языку

Узлы LangGraph — это функции на Python или JavaScript в вашем процессе. Шаг Dagu является командой, поэтому единицей работы становится то, что уже запускается в вашей среде.

  • Вызывайте shell-скрипты, бинарники, контейнеры, SSH-команды, HTTP-эндпоинты и SQL из одного воркфлоу
  • Запускайте кодовых агентов через harness.run: Claude, Codex, Gemini, OpenCode или внутренний CLI
  • Дайте любому шагу контейнерную песочницу с явными монтированиями, тулчейном и правилами egress
03

Рисуйте граф, когда можете, и отдавайте порядок, когда не можете

LangGraph просит нарисовать каждый путь. Это верно ровно до момента, когда порядок начинает зависеть от того, что сказал ревьюер. Dagu оставляет type: graph значением по умолчанию и добавляет type: agent для работы, которая никогда не помещалась в один граф.

  • Agent DAG-воркфлоу объявляет критерии завершения, а следующее действие выбирает модель
  • Модель выбирает только среди объявленных шагов, поэтому радиус поражения равен файлу
  • Оба типа дают один и тот же запуск: те же логи, ретраи, артефакты и история

FAQ

Practical questions before adopting Dagu

Является ли Dagu прямой заменой LangGraph?

Нет, это разные слои. LangGraph хорош, когда вы хотите собирать вызовы модели на Python или JavaScript с тонким контролем состояния графа. Dagu подходит лучше, когда работа — это набор команд и агентских CLI, которым нужны расписания, ретраи, approvals и аудит.

Можно ли продолжать использовать LangGraph внутри Dagu?

Да. Оставьте приложение на LangGraph скриптом или контейнером и запускайте его как шаг. Dagu добавит вокруг расписание, политику ретраев, логи, артефакты и историю запусков.

Как Dagu работает с human-in-the-loop?

Человеческие задачи и ask_user внутри Agent DAG-воркфлоу надёжно приостанавливают запуск. Процесс завершается, слот воркера освобождается, а после ответа человека запуск продолжается в новом процессе.

Нужна ли Dagu база данных?

Нет. Dagu — единый бинарник, который хранит определения воркфлоу, историю запусков и логи в файлах, поэтому до первого запуска не нужно поднимать ни базу метаданных, ни брокер сообщений.

Next step

Start with one workflow.

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