Перейти к содержимому
Caldyr
Оркестрация

Превратите разовые запуски агентов в повторяемые и проверяемые рабочие процессы.

Опишите рабочий процесс как DAG из типизированных узлов: сегодня их шестнадцать, среди них claude (сессия Claude Code), http_request, assert и wait_for_approval. Проверьте граф, затем запустите. Каждый прогон создаёт запись, за которой можно следить в реальном времени и просматривать позже. Начните с шаблона или соберите процесс на холсте. Всё изолировано по тенантам через row-level security.

trigger
manual / cron
claude · plan
claude-code
http_request · ci
POST /builds
assert · green
ctx.ci.status
wait_for_approval
human · gate

Как это работает

1
Опишите DAG
Разложите узлы и связи между ними: узел claude несёт промпт, http_request — вызов, assert — условие, wait_for_approval — ожидание решения человека.
2
Проверка
Сервер проверяет граф (нет циклов, все зависимости разрешимы) прежде чем что-либо запустится.
3
Запуск
Запустите рабочий процесс вручную или по расписанию. Каждый узел выполняется по порядку, с учётом зависимостей.
4
Наблюдайте за прогоном
Следите за записью прогона в реальном времени на холсте и в просмотрщике прогонов, а позже просматривайте завершённый прогон.

Подробнее

Шестнадцать типов узлов
Раннер обрабатывает шестнадцать типов узлов. claude запускает сессию Claude Code по промпту; http_request вызывает эндпоинт; assert проверяет условие и валит прогон; wait_for_approval останавливает прогон до подтверждения человеком. Остальные отвечают за поток управления и данные: branch, retry, for_each, fan_out, aggregate, transform, set_variable, delay, log, notify, sub_workflow, wait_for_event. Соберите их в DAG, чтобы связать планирование, изменения кода, проверки и гейты в один прогон.
Таймауты по типам узлов
Узлу claude можно задать таймаут (по умолчанию 600 с); при превышении раннер отправляет сессии SIGTERM, поэтому зависшая сессия Claude Code не держит прогон открытым. Остальные типы ограничивают себя по-своему: http_request прерывает свой вызов (по умолчанию 30 с, не больше 120 с), wait_for_approval и wait_for_event сдаются по истечении своего timeout_s (по умолчанию 24 ч). У sub_workflow собственного дедлайна нет.
Шаблоны и визуальный холст
Начните со встроенного стартового шаблона, затем правьте его на визуальном холсте. Просмотрщик прогонов показывает статус каждого узла по мере выполнения.

Опишите и запустите рабочий процесс

api · define and run a workflow
# A workflow is a JSON definition — start, nodes, edges. $ curl -X POST https://app.acme.internal/api/fleet/workflows \ -H "authorization: Bearer $TOKEN" \ -d '{"name": "ci-triage", "definition": { "start": "plan", "nodes": [{"id": "plan", "type": "claude", "prompt": "triage the failing build", "timeout_s": 900}, {"id": "check", "type": "assert", "expr": "ctx.plan.output"}], "edges": [{"from": "plan", "to": "check"}]}}' ✓ graph validated on write — cycles and edges to unknown nodes rejected $ curl -X POST https://app.acme.internal/api/fleet/workflows/WF_ID/run \ -H "authorization: Bearer $TOKEN" {"run_id": "3c8a…"} # Same two steps in the UI: the canvas at #/workflows, # then the live run at #/workflow-runs/3c8a…

Оркестрация, которая проверяема, а не непрозрачна.

Рабочий процесс, это просто DAG, который можно прочитать, версионировать и проверить. Каждый прогон записывается, поэтому видно, какой именно узел что сделал: никакой автоматизации в виде чёрного ящика.

Сравнение

CaldyrShell-скриптыОбычный CI
Узлы под агентовданетнет
Проверка DAG до запускациклы и зависимостинетчастично
Живая запись прогонахолст и просмотрщиктолько логитолько логи
Таймаут узла claude → SIGTERMна каждый узелвручнуютолько на уровне джоба
Изоляция тенантовчерез RLSнетобщие раннеры

Частые вопросы

Сегодня шестнадцать типов узлов. claude запускает сессию Claude Code по промпту; http_request вызывает эндпоинт; assert проверяет условие; wait_for_approval ждёт человека. Остальные — поток управления и передача данных: branch, retry, for_each, fan_out, aggregate, transform, set_variable, delay, log, notify, sub_workflow, wait_for_event. Вы связываете их в DAG и передаёте вывод одного узла следующему через зависимости.
Узлу claude можно задать таймаут — по умолчанию 600 с, — и при превышении раннер отправляет сессии SIGTERM, поэтому зависшая сессия Claude Code останавливается, а не держит весь прогон открытым. Остальные типы ограничивают себя иначе: http_request прерывает свой вызов (по умолчанию 30 с, не больше 120 с), wait_for_approval и wait_for_event сдаются по истечении своего timeout_s (по умолчанию 24 ч), а у sub_workflow собственного дедлайна нет.
Нет. Есть стартовые шаблоны для клонирования и визуальный холст-редактор для правки графа. Можно также описать рабочий процесс как definition и запустить его через API.
Нет. Рабочие процессы и их прогоны изолированы по тенантам и защищены row-level security в Postgres, поэтому видны только внутри компании-владельца.

Готовы оркестрировать своих агентов?

Запросите доступ за пару минут, или обсудите с нами ваши сценарии рабочих процессов.

Начать