agentbus
AgentBus
AIエージェント群のための耐久性のある調整バス — 取り返しのつかない操作の前に人間の承認ゲートを備えています。
エージェントはますますデプロイ、送信、削除、支出を行うことが許可されるようになっています。その時点で2つのことが壊れますが、どちらもLLMの問題ではありません。
ハンドオフが失われる。 エージェントが完了し、次のエージェントに作業を引き渡した後、プロセスが死ぬ。再試行もされず、誰も気づかない。
チョークポイントがない。 承認はプロンプトの中に存在する — 「まず私に聞け」— これは制御ではなく提案であり、誰が何を許可したかの記録も残らない。
AgentBusはその下にある退屈なインフラです:少なくとも1回の配信を保証する耐久性のあるキュー、ブロッキングする人間の承認ゲート、そしてすべてのメッセージと決定の追記専用監査ログ。
┌──────────────────────────────┐
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以上とファイル1つだけ。
クイックスタート
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。パターンは1セグメントに *、残りに > を使用します — deploy.>、*.prod.api、>。
コンシューマグループ はそれぞれ一致するすべてのメッセージのコピーを取得します。グループ内では、メッセージは一度に1つのワーカーにのみ配信されます。新しいグループはデフォルトで 現在 から開始します;--earliest はバックログ全体を再生します。
リース はワーカーに可視性タイムアウト(デフォルト30秒、延長可能)を与えます。それを逃すとメッセージは再配信されます。max_attempts(5)の後、デッドレターとなり、ダッシュボードに表示され、1クリックで再生可能です。
承認 はタイトル、機械可読なアクション、自由形式の詳細、構造化ペイロード、リスクレベル、オプションのラベル付き選択肢(「カナリア10%」対「フルロールアウト」)を保持します。それらは永久にハングするのではなく期限切れになります。すべてのリクエストと決定 — 誰が、いつ、なぜ — は監査ログに記録されます。
順序付け はタイムスタンプではなくSQLiteシーケンスによって行われます:同じミリ秒に公開された2つのメッセージでも明確な順序があります。
HTTP API
メソッド | パス | |
|
|
|
|
|
|
|
| 配信を確定または延長 |
|
| 可観測性 |
|
| デッドレターを再キュー化 |
|
| 作成;署名付き共有可能URLを返す |
|
| 決定までロングポーリング |
|
|
|
|
| メッセージと承認のSSEテール |
|
| ダッシュボード · 単一承認ページ |
AGENTBUS_TOKEN を設定すると Authorization: Bearer … が必要になります。承認リンクは独自のHMACトークンを保持するため、APIキーを渡さずにスマートフォンに送信できます。
環境変数: AGENTBUS_URL、AGENTBUS_TOKEN、AGENTBUS_DB、AGENTBUS_SECRET、AGENTBUS_AGENT、AGENTBUS_ALLOWED_ORIGINS。
ブラウザオリジンポリシー
デフォルトはループバック上の認証なしサーバーであり、つまり開いているWebページがそれに到達できる可能性があります。3つのルールがそれを防ぎ、トークンが設定されているかどうかに関係なく適用されます:
Originヘッダーを運ぶリクエストは、そのオリジンがサーバー自身のもの、AGENTBUS_URLのホスト、またはAGENTBUS_ALLOWED_ORIGINSにリストされているものでない限り拒否されます。拒否は 403 を意味します — 単にCORSヘッダーが欠落しているだけでなく、応答を隠すが書き込みは実行するのではありません。POSTはcontent-type: application/jsonを要求します。フォームとtext/plainボディは、ブラウザがプリフライトなしで送信するCORS「シンプルリクエスト」であるため、それらを受け入れると穴が再び開きます。予期しない
Hostヘッダーは拒否され、DNSリバインディングをブロックします。
ブラウザ以外のクライアント — 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