agentbus
AgentBus
Прочная шина координации для флотов ИИ-агентов — с блокирующим этапом одобрения человеком перед любым необратимым действием.
Агентам всё чаще разрешают развёртывать, отправлять, удалять и тратить. В этот момент ломаются две вещи, и ни одна из них не является проблемой LLM:
Передача работы теряется. Агент завершает задачу, передаёт работу следующему, и процесс умирает. Никто не повторяет попытку, никто не замечает.
Нет единой точки контроля. Одобрение живёт внутри промпта — «сначала спроси меня» — это предложение, а не контроль, и не оставляет записи о том, кто что разрешил.
AgentBus — это скучная инфраструктура под всем этим: прочная очередь с доставкой как минимум один раз, блокирующий шлюз одобрения человеком и журнал аудита только для добавления, в котором фиксируется каждое сообщение и каждое решение.
┌──────────────────────────────┐
agents ────────▶│ topics · groups · leases │────────▶ workers
(MCP/HTTP/CLI) │ retries · dead letters │
├──────────────────────────────┤
agent ─ ask ───▶│ approval gate ── blocks ───│──▶ human (phone/dashboard)
├──────────────────────────────┤
│ append-only audit log │
└──────────────────────────────┘
one SQLite fileНоль зависимостей в рантайме. Никакого Redis, Postgres, брокера или облачного аккаунта. Node 24+ и файл.
Быстрый старт
npx agentbus serve # http://127.0.0.1:7801 — API + dashboardЗаблокировать рискованное действие за одобрением человека
agentbus ask "Deploy api build 118 to production" \
--action deploy.prod --risk high \
--detail "3 commits, including a migration that drops a column." \
--payload '{"service":"api","build":118}' \
--wait && ./deploy.shask --wait блокирует выполнение и выводит ссылку. Человек открывает её на телефоне, одобряет или отклоняет, и команда завершается с кодом 0 — одобрено · 10 — отклонено · 11 — истекло — так что && делает ровно то, что нужно, а решение записывается на имя этого человека.
Прочная передача работы
# Producer — survives a crash, deduplicated by key
agentbus pub job.render '{"file":"a.png"}' --key render-a
# Consumer — any shell command becomes a durable worker.
# Payload on stdin; exit 0 acks, non-zero retries with backoff, then dead-letters.
agentbus sub 'job.>' --group renderers --exec './render.sh'Не подтверждённая работа возвращается в очередь по истечении аренды, так что воркер, убитый в середине задачи, ничего не теряет.
Related MCP server: team-protocol
Предоставление доступа агенту (MCP)
// .mcp.json — or claude_desktop_config.json
{
"mcpServers": {
"agentbus": {
"command": "npx",
"args": ["-y", "agentbus", "mcp"],
"env": { "AGENTBUS_URL": "http://127.0.0.1:7801", "AGENTBUS_AGENT": "deploy-agent" }
}
}
}Агент получает request_approval, check_approval, publish, pull, ack, nack и stats. request_approval блокирует выполнение, пока человек не примет решение, и возвращает явные указания:
{
"state": "denied",
"approved": false,
"decidedBy": "sami",
"reason": "not without a backup",
"guidance": "Not approved (denied). Do NOT proceed. Tell the user and stop."
}Тайм-аут возвращает pending, но никогда approved — молчание никогда не является согласием.
Концепции
Топики разделяются точками: deploy.prod.api. В шаблонах * означает один сегмент, а > — все остальные: deploy.>, *.prod.api, >.
Группы потребителей получают собственную копию каждого подходящего сообщения. Внутри группы сообщение одновременно обрабатывает ровно один воркер. Новая группа по умолчанию начинает с текущего момента; --earliest воспроизводит весь накопленный журнал.
Аренды дают воркеру тайм-аут видимости (по умолчанию 30 секунд, можно продлить). Если он пропущен, сообщение доставляется повторно. После max_attempts (5) сообщение попадает в очередь недоставленных, видно на панели управления и может быть воспроизведено одним кликом.
Одобрения содержат заголовок, машиночитаемое действие, произвольный текст деталей, структурированную полезную нагрузку, уровень риска и опциональные помеченные варианты («канарейка 10%» против «полный релиз»). Они истекают, а не висят вечно. Каждый запрос и решение — кто, когда, почему — попадают в журнал аудита.
Порядок определяется последовательностью SQLite, а не временной меткой: два сообщения, опубликованные в одну миллисекунду, всё равно имеют чётко определённый порядок.
HTTP API
Метод | Путь | |
|
|
|
|
|
|
|
| подтвердить, отклонить или продлить доставку |
|
| наблюдаемость |
|
| повторно поставить в очередь недоставленное письмо |
|
| создать; возвращает подписанный URL для передачи |
|
| длинный опрос до принятия решения |
|
|
|
|
| SSE-поток сообщений и одобрений |
|
| панель управления · страница одного одобрения |
Установите AGENTBUS_TOKEN, чтобы требовать Authorization: Bearer …. Ссылки на одобрения содержат собственный HMAC-токен, так что вы можете отправить их на телефон, не передавая ключ API.
Окружение: AGENTBUS_URL, AGENTBUS_TOKEN, AGENTBUS_DB, AGENTBUS_SECRET, AGENTBUS_AGENT, AGENTBUS_ALLOWED_ORIGINS.
Политика происхождения браузера
По умолчанию это неаутентифицированный сервер на loopback, что означает, что веб-страница, открытая у вас, в противном случае могла бы до него добраться. Три правила это предотвращают, и они действуют независимо от того, установлен ли токен:
Запрос с заголовком
Originотклоняется, если этот источник не является собственным сервером, хостом изAGENTBUS_URLили не указан вAGENTBUS_ALLOWED_ORIGINS. Отказ означает 403 — а не просто отсутствие заголовка CORS, который скрывает ответ, но всё равно выполняет запись.POSTтребуетcontent-type: application/json. Формы и телаtext/plain— это «простые запросы» CORS, которые браузер отправляет без предварительной проверки, поэтому их принятие снова открыло бы дыру.Неожиданный заголовок
Hostотклоняется, что блокирует DNS rebinding.
Не-браузерные клиенты — CLI, MCP-сервер, curl, ваши собственные скрипты — не отправляют Origin и не затрагиваются. Если вы обслуживаете панель управления на LAN-адресе или за прокси, чтобы одобрения доходили до телефона, установите AGENTBUS_URL (или --url) на этот публичный источник; именно из него строятся ссылки на одобрения.
Разработка
npm test # 66 tests, no network, no fixtures
npm run typecheck # strict, noUncheckedIndexedAccess, erasableSyntaxOnlyTypeScript выполняется напрямую на Node 24 через нативное удаление типов — нет этапа сборки и нет компилятора в пути выполнения.
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Shared task queue for humans and AI agents: leases, handoffs, approvals and signed receipts.
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
Durable agent-to-agent handoffs and shared scratchpad for multi-agent workflows.
Human approvals, notifications, inbound webhooks, wake-ups for headless agents. Free trial: /try
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to request human approvals with customizable forms, webhooks, and team features.51 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables structured role-to-role handoffs and merge gating for multi-agent collaboration. It persists evidence and computes approval gates without invoking LLMs.-
- AlicenseNot gradedqualityCmaintenanceProvides a human-in-the-loop dashboard for coordinating multiple AI agents, enabling real-time approval, feedback, and intervention on critical decisions.Mozilla Public 2.0

@quirna/mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to request human approval before consequential actions, with policy-based routing, phone-based approver decisions, and signed audit evidence.40 npmMIT