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: gotoHuman MCP Server
エージェントへのアクセス付与(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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenancePauses AI agent execution and routes approval requests to humans via Slack or email, with cryptographically signed proof of the human's decision.52MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to request human approvals with customizable forms, webhooks, and team features.69MIT
- AlicenseNot gradedqualityBmaintenanceGoverned, self-hosted memory for AI agents: writes queue until an authorized approver signs off.Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables structured role-to-role handoffs and merge gating for multi-agent collaboration. It persists evidence and computes approval gates without invoking LLMs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/selimam2/agentbus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server