Network Ai について
Network-AI は、複数のエージェントフレームワークに共有状態、ガバナンス、予算管理を加える TypeScript/Node.js のマルチエージェントオーケストレーターです。ロック付きブラックボードで並列エージェントを調整し、ライブラリ、MCP サーバー、CLI として利用できます。
主な機能
- 01原子的なコミットに対応した共有ブラックボード
- 02FSM ガバナンスとエージェント別予算
- 0332 フレームワーク向けアダプター
- 04コンテキスト構成と永続的なプロジェクトメモリー
- 05モデル呼び出しの監査とフォールバック管理
活用シーン
- 01共有状態を更新する並列エージェントの調整
- 02予算、権限、承認制約の設定
- 03複数のエージェントフレームワーク間のワークフロー接続
- 04モデル拒否後のフォールバックと課金の制御
MCP 対応
MCP サーバーとして実行でき、context_pack や blackboard_search などのツールで、クライアントが整理済みの共有状態を取得できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Network-AI
TypeScript/Node.js マルチエージェントオーケストレーター — 共有状態、ガードレール、予算、フレームワーク間の連携
Network-AI が役に立った場合は、スター ⭐ を付けることをご検討ください。プロジェクトを見つける人が増える助けになります。
Network-AI は、あらゆる AI エージェントスタックに連携、ガードレール、ガバナンスを追加する TypeScript/Node.js マルチエージェントオーケストレーターです。
- ロック機能付き共有ブラックボード — アトミックな
propose → validate → commitにより、並列エージェント間の競合状態やスプリットブレイン障害を防止します - ガードレールと予算 — FSM ガバナンス、エージェントごとのトークン上限、HMAC / Ed25519 監査証跡、権限ゲーティングを提供します
- コンテキストのノイズに対するシグナル(v5.15) —
ContextComposerは、トークン予算に基づき、関連性順にランク付けされたコンテキストパック(意味的/字句的関連性 × 経時的な減衰 × スコープとの親和性、位置を考慮したレイアウト)を組み立てます。context_packとblackboard_searchMCP ツールを使えば、エージェントはボード全体をウィンドウにダンプする代わりに、厳選された状態を取得できます - 32 種類のアダプター — LangChain(ストリーミング対応)、AutoGen、CrewAI、OpenAI Assistants、OpenAI Responses(Assistants の後継)、LlamaIndex、Semantic Kernel、Haystack、DSPy、Agno、MCP、Custom(ストリーミング対応)、OpenClaw、A2A、Codex、MiniMax、NemoClaw、APS、Copilot、LangGraph、Anthropic Computer Use、Claude Agent SDK(エージェント型ループ)、OpenAI Agents SDK、Vertex AI、Gemini(Developer API)、Pydantic AI、Browser Agent、Hermes(NousResearch Hermes/OpenAI 互換エンドポイント全般)、Orchestrator(階層型マルチオーケストレーター)、RLM(Recursive Language Model/RLM 互換 HTTP エンドポイント全般)に対応。グルーコードも、ベンダーロックインもありません
- 永続的なプロジェクトメモリ(Layer 3) —
context_manager.pyが決定事項、目標、技術スタック、マイルストーン、禁止パターンをすべてのシステムプロンプトに挿入するため、エージェントは常にプロジェクトのコンテキスト全体を把握できます - v5.0 モジュール — Agent VCR(記録/再生)、比較ランナー、カバレッジレポーター、目標 DSL、承認インボックス、ジョブキュー、gRPC/HTTP トランスポート、プレイグラウンド REPL、アダプターテストハーネスなど
- モデルインタラクションのライフサイクルガバナンス(v5.13) —
GovernedModelGatewayは、モデルの拒否 → フォールバック → 課金という連鎖(モデル間フォールバック、フォールバック時のクレジット再価格設定、推論量のガバナンス、思考ブロックの引き継ぎ)を、ガバナンスと予算管理、監査に対応した単一の呼び出しの背後に集約します
マルチエージェントシステムにおける見えにくい障害モード: 同じキーに書き込む並列エージェントは、デフォルトで最終書き込み優先を使用します。そのため、あるエージェントの結果が処理中に別のエージェントの結果を気づかれないまま上書きします。 この結果、状態のスプリットブレインが発生します。二重支払い、矛盾する判断、破損したコンテキストが生じますが、エラーは一切発生しません。Network-AI の
propose → validate → commitミューテックスは、共有状態に書き込む前に、調整レイヤーでこれを防止します。
Network-AI の使用方法:
- TypeScript/Node.js ライブラリとして —
import { createSwarmOrchestrator } from 'network-ai' - MCP サーバーとして —
npx network-ai-server --port 3001 - CLIとして —
network-ai bb get status/network-ai audit tail - Claude Code プラグインとして —
/plugin install network-ai@network-ai - Gemini CLI 拡張機能として —
gemini extensions install https://github.com/Jovancoding/Network-AI - OpenClaw スキルとして —
clawhub install network-ai
5 分で始める → | アーキテクチャ → | すべてのアダプター → | ベンチマーク →
🛡️ モデルとの対話ライフサイクルのガバナンス
多くのガバナンスツールはエージェントの境界までしか扱わず、エージェントが行動する前に、呼び出し可能なツールを制御します。Network-AI はその下のレイヤー、つまりエージェントがモデルとどのように対話するかもガバナンスします。最先端モデルが分類器による拒否でリクエストを拒んだ場合、Network-AI は拒否 → フォールバック → 課金の一連の処理を引き受け、ガバナンスされ、予算が設定され、監査可能な1回の呼び出しとして提供します。
GovernedModelGateway—stop_reason:"refusal"を検出し、どの分類器が作動したかを監査し、フォールバックモデルにルーティングして、フォールバッククレジットトークンを利用することで、再試行の料金をキャッシュ読み取りとして再計算します。ModelBudget— フォールバッククレジットによる再計算に対応した、モデルごとの USD 会計です。モデルをまたいでトークンを合算することはありません。RefusalTelemetry— 拒否は HTTP 200 であり、エラー率の監視では見えません。非エラーの個別シグナルとして出力し、アラート用にunservedRefusalCountの差分を設けます。EffortPolicy—effortのコスト調整機能をポリシーオブジェクトにします。サブエージェントをlowに制限し、xhigh/maxには理由の提示を必須とします。ThinkingBlockManager— 同じモデルでは思考ブロックを変更せずに維持し、別のモデルへのフォールバック時には削除します。また、reasoning_extractionによる拒否を防ぐようプロンプトを保護します。- サブエージェントごとのフォールバック —
FanOutFanInのステップとTeamRunnerのタスクは、それぞれ独自のフォールバックエージェントとリクエストごとの再試行予算(RetryBudget)を持ちます。エージェントとそのサブエージェントの間で、ターンが個別に拒否されることがあるためです。
import { AnthropicMessagesAdapter, ModelBudget, RefusalTelemetry } from 'network-ai';
const adapter = new AnthropicMessagesAdapter();
await adapter.initialize({});
adapter.registerModelAgent('analyst', {
client, // bring your own Anthropic client
model: 'claude-fable-5',
fallbackModels: ['claude-opus-4-8'], // classifier refusals fall through here
budget: new ModelBudget({
ceilingUsd: 5,
pricing: {
'claude-fable-5': { inputPerMTok: 10, outputPerMTok: 50 },
'claude-opus-4-8': { inputPerMTok: 5, outputPerMTok: 25 },
},
}),
telemetry: new RefusalTelemetry(),
});
const result = await adapter.executeAgent('analyst', { action: 'Summarize Q3 results', params: {} }, { agentId: 'cli' });
// result.data: { servedModel, servedByFallback, refused, refusalCategories, attempts, totalCostUsd }
OWASP Agentic AI Top 10 (2026) — エンジンの対応状況
network-ai からエクスポートされる verifyOwaspCoverage() を使って、プログラムで検証できます。
| リスク | 状態 | 主な制御 |
|---|---|---|
| ASI-01 エージェントの目標の乗っ取り | ✅ 対応済み | AuthGuardian によるゲート制御 + JourneyFSM 制御プレーン |
| ASI-02 ツールの誤用と悪用 | ✅ 対応済み | AgentRuntime SandboxPolicy + ApprovalGate |
| ASI-03 ID と権限の悪用 | ✅ 対応済み | HMAC/Ed25519 署名付きトークン + 信頼スコアリング |
| ASI-04 サプライチェーンのリスク | ✅ 対応済み | ランタイム依存関係 1 件 + socket/clawhub/codeql ゲート |
| ASI-05 安全でないコード実行 | ✅ 対応済み | ShellExecutor の shell:false argv + パスガード |
| ASI-06 メモリとコンテキストの汚染 | ✅ 対応済み | LockedBlackboard + インジェクション検出 |
| ASI-07 安全でないエージェント間通信 | 🟡 部分対応 | FS-mutex + 署名付きハンドオフ(ローカル信頼境界) |
| ASI-08 連鎖的な障害 | ✅ 対応済み | CircuitBreaker + 予算 + RetryBudget |
| ASI-09 人間とエージェント間の信頼の悪用 | ✅ 対応済み | ApprovalGate + 改ざん検知可能な監査証跡 |
| ASI-10 不正なエージェント | ✅ 対応済み | ComplianceMonitor + サーキットブレーカーのキルスイッチ |
🔒 ASI 厳格モード(オプトイン)
高性能なエージェントを稼働させるデプロイでは、ASI_STRICT_MODE によって、エージェントが監督者より賢い可能性を想定した制御を追加できます。デフォルトではオフです。オフの場合、すべてのコードパスに変更はありません(単一のブール値チェックのみ)。
| 設定 | 動作 |
|---|---|
未設定 / false | オフ — 現在の動作 |
audit | すべてのチェックを実行し、ブロックはせずに拒否されるはずだった操作を報告します(outcome: 'would-deny')— 適用前に測定できます |
enforce(またはその他の値 — フェイルクローズ) | 違反をブロックします |
設定は一度だけ読み込まれて固定されます。実行時にできるのは強化(tightenAsiConfig)のみで、緩和はできません。
| 制御 | 内容 |
|---|---|
証明付きアクション(ProofGate) | ゲート対象のツール(shell_exec、file_write、および requires_formal_proof が設定された MCP ツール)は、対象のツール、正規化された引数、エージェント、単回使用のノンス、有効期限に紐づいた証明がある場合にのみ実行されます。BYO 検証器(zkVM レシート、形式検証証明書)や、証明器のないデプロイ向けの組み込み短期 HMAC/Ed25519 ケイパビリティトークン(CapabilityIssuer)、任意のプロセス外コサイナー(ExternalAuthority.authorize)を利用できます。 |
BFT コンセンサス(ConsensusEngine) | 重大な影響を伴う GovernedModelGateway のターンは、≥ 3f+1 の独立した評価者によって判定されます。CP-WBFT の信頼度重み付けを用いたロバストな幾何中央値(Weiszfeld)、外れ値検出、署名付き投票、および異なるモデルファミリーの最小数を備えています(相関のあるモデルは同時に機能しなくなります)。 |
監査者レシート(LockedBlackboard) | 信頼度が LOW のエージェントによる変更は、オペレーターが指定した AUDITOR から、変更 ID、キー、値のハッシュ、ベースバージョンに紐づいた署名付きレシートを得た場合にのみコミットされます。claimVerifierCheck を使うと、ClaimVerifier を監査者のチェックとして利用できます。 |
キルスイッチ(HaltCoordinator) | パスワードによるシャットダウン:入力ストリームでソルト付きハッシュトークンが検出されると(モデルが見る前に秘匿化)、OS シグナルまたは認証済み HTTP 呼び出しによって、登録されたすべてのコンポーネントを停止し、進行中の処理を中断して、別の再開キーが提示されるまで停止状態を保持します。 |
信頼階層別コンテキスト(ContextComposer) | 階層ごとのコンテキストポリシー:より小さい予算、より高いスコア下限、許可されたスコープ、除外する生成元。AUDITOR はスコアから導出されることはありません。 |
認知能力の上限(EffortPolicy、ThinkingBlockManager) | 階層ごとの推論努力の上限、思考トークンの予算、出力上限、サブエージェントの深度制限。 |
カナリアとエクスポート(CanaryRegistry、HashChainSink) | 出力に現れた場合に情報流出を検知するおとりの値。厳格モードのイベントは、エージェントのプロセス外にある追記専用ストアにハッシュチェーン形式で保存されます。 |
enforce モードでは、AgentRuntime は sourceProtection も強制し、秘密情報に該当する環境変数を子プロセスに渡しません。
import { createAsiConfig, ProofGate, CapabilityIssuer, SignedAttestationVerifier, AgentRuntime } from 'network-ai';
const config = createAsiConfig({ mode: 'enforce', auditors: ['auditor-1'] });
const key = { name: 'ops', alg: 'hmac-sha256' as const, key: process.env.CAPABILITY_KEY! };
const proofGate = new ProofGate({ gatedTools: ['shell_exec', 'file_write'], verifiers: [new SignedAttestationVerifier([key])] }, config);
const runtime = new AgentRuntime({ policy: { basePath: '.', allowedCommands: ['npm *'] }, asi: { proofGate, config } });
// The approval service (outside the agent's process) mints a one-shot capability:
const issuer = new CapabilityIssuer('ops', { alg: 'hmac-sha256', secret: process.env.CAPABILITY_KEY! });
const proof = issuer.issue('shell_exec', runtime.shellProofArgs('npm test'), 'agent-7');
await runtime.exec('npm test', 'agent-7', { proof });
制限事項。 厳格モードは不正な動作のコストを高めるものであり、封じ込めを保証するものではありません。同じホスト上で任意のコードを実行できるエージェントは、異なる設定でプロセスを再起動できます。厳格モードと OS レベルの分離、およびプロセス外の
ExternalAuthorityを併用してください。コンセンサスでは、故障した独立評価者が最大 f 個であることを前提とします。
♾️ 永続ランタイム(オプトイン)
エージェントの群れを無期限に実行し、自己改善しながら、人間が制御を保ったまま自らの活動資金を賄えるようにします。実行が継続するのは、オペレーター署名付きポリシーによってリースが更新され続ける場合に限られ、エージェントが自分たちで手配したために継続することはありません。自動的に開始されるものはなく、各統合ポイントは未使用時には単一のチェックだけを行います。
設定にかかわらず、次の3つの不変条件が保たれます。
| # | 不変条件 | 仕組み |
|---|---|---|
| I1 | エージェントの協力なしに、外部から常に停止できる | プロセス外の LeaseAuthority、有効期間の短い Ed25519 リース、リースが取り消し・一時停止・期限切れになった場合や、更新できない場合(デッドマンスイッチ)に実行を停止する LeaseGuard。有効なリースがない場合、エグレスプロキシは通信を拒否します |
| I2 | エージェントは自分自身を変更できますが、制限は変更できません | GuardedPaths:ガバナンスファイルとブラックボードのキーへの書き込みには、対象の正確な内容に対するオペレーター署名付きの使い捨て承認が必要です |
| I3 | 自己資金調達は人間が設定した上限内にとどまる | 上限は署名付きポリシーで定めます。エージェントは上限を引き下げることはできますが、引き上げることはできません。新たな資金源には新しい署名付きポリシーが必要です。支払いはリクエスト単位および実行単位の上限を設けたうえで、エグレスプロキシ経由でのみ行います |
| コンポーネント | 機能 |
|---|---|
LeaseAuthority(独立プロセス) | オペレーター署名付きの RenewalPolicy に従ってリースを発行・更新します。ポリシーには TTL、終了日、スコープ(ツール、パス、エグレスルート)、予算上限、停止条件(カナリアの失敗、ヘルスチェックの失敗、セントリーのアラート)が含まれます。オペレーターはリースの取り消し、一時停止、再開、制限の強化、ポリシーのインストールを行えます。セントリーが行えるのはアラートと制限の強化のみです。 |
LeaseGuard(エージェント内) | 現在のリースを保持し、支出とヘルスチェックのハートビートを添えて更新し、取り消しをポーリングします。有効でスコープ内のリースがない場合、AgentRuntime.exec/writeFile、GovernedModelGateway.send、および LockedBlackboard への書き込みを拒否します。 |
EgressProxy(独立プロセス) | エージェントがネットワークへアクセスする唯一の経路です。リースを確認し、ルートごとの許可リストを適用します。エージェントには見えない認証情報を挿入し、レスポンスから取り除き、レートを制限し、金銭に関わるリクエストに上限を設けます。 |
ISandboxRunner | コマンドごとに使い捨てのサンドボックスを用意します。ContainerSandboxRunner はデフォルトで gVisor(runsc)を使用し、ルートを読み取り専用にして、ケイパビリティを無効化し、ネットワークアクセスを禁止するか、エグレスプロキシ経由のみにします。 |
| セントリー群 | 監査ストリームを監視する読み取り専用プロセスです。速度、アクセス拒否を探る試行、プロンプトインジェクション、ブラックボードの汚染、保護対象パスへの書き込み試行、カナリアの漏えい、目標の逸脱を監視します。各セントリーは独自の ID を持ち、sentryQuorum を設定すると、十分な数のセントリーが合意した場合にのみ更新が停止します。 |
ImprovementPipeline | エビデンスに基づく自己変更を行います。静的チェック、コピー上でのサンドボックステスト、複数ファミリーによる合意を経て、パッチハッシュに紐づいた署名付きレシートを発行します。階層は auto(エージェントのタスクコード)、human、operator(保護対象パス、常に適用)です。 |
StateSnapshotter / SelfHealer | HMAC 署名付きでハッシュチェーン化されたブラックボードのスナップショットを管理します。カナリアの失敗 ⇒ ヘルスチェックの失敗(更新停止)、最後に検証されたスナップショットへのロールバック、セッションの消去を行います。 |
BudgetBalancer | 余裕のある承認済み資金源から最も安価なものを選び、稼働レベル(full → reduced → minimal → stopped)を調整し、支出をリースのハートビートに反映します。 |
network-ai perpetual keygen operator && network-ai perpetual keygen authority
network-ai perpetual sign-policy policy.json --key data/perpetual/keys/operator.key --out policy.signed.json
# Role secrets come from the environment (each ≥ 32 chars, all distinct)
NETWORK_AI_LEASE_OPERATOR_SECRET=… NETWORK_AI_LEASE_RUNNER_SECRET=… \
NETWORK_AI_LEASE_SENTRY_SECRET_S1=… NETWORK_AI_LEASE_SENTRY_SECRET_S2=… \
network-ai perpetual authority --operator-pub data/perpetual/keys/operator.pub \
--authority-key data/perpetual/keys/authority.key --policy policy.signed.json
network-ai perpetual status # the human controls
network-ai perpetual pause | resume | revoke <runId> | revoke --all
import { LeaseGuard, HttpLeaseTransport, HaltCoordinator, AgentRuntime } from 'network-ai';
const guard = new LeaseGuard({
runId: 'research-swarm',
authorityPublicKey, // the authority's public key only
transport: new HttpLeaseTransport('http://127.0.0.1:4710', process.env.NETWORK_AI_LEASE_RUNNER_SECRET!),
halt: haltCoordinator, // fired when the lease is lost
spend: () => balancer.spend(),
health: () => healer.health(),
});
await guard.start();
const runtime = new AgentRuntime({ policy: { basePath: '.' }, lease: guard, guarded, sandbox: { runner } });
制限事項。 保証は、オペレーターキー、ロールシークレット、認証情報がエージェントの手の届かない場所に保管され、エージェントが書き込みやシグナル送信を行えない環境で権限管理機構、プロキシ、セントリーが稼働していることを前提とします。エージェントはサンドボックス内で実行し、ネットワークアクセスはプロキシ経由のみにしてください。このような隔離がなければ、ホスト上でコードを実行できるエージェントは、プロセス内のチェックを回避できます。
⚡ 60 秒で試す
npm install network-ai
import { LockedBlackboard } from 'network-ai';
const board = new LockedBlackboard('.');
const id = board.propose('status', { ready: true }, 'agent-1');
board.validate(id, 'agent-1');
board.commit(id);
console.log(board.read('status')); // { ready: true }
2 つのエージェント、アトミックな書き込み、競合状態なし。それだけです。
完全なストレステストを試してみませんか? API キー不要、約 3 秒:
npx ts-node examples/08-control-plane-stress-demo.ts
優先度によるプリエンプション、AuthGuardian による権限ゲート、FSM ガバナンス、コンプライアンス監視を、LLM 呼び出しなしですべて実行します。
競合状態を防げたら、⭐ を付けていただけると、ほかの人にも見つけてもらいやすくなります。
含まれるもの
| ✅ アトミックな共有状態 | ファイルシステムのミューテックスを使った propose → validate → commit — スプリットブレインが発生しません |
| ✅ トークン予算 | エージェントごとの厳格な上限とリアルタイムの消費量追跡 |
| ✅ 権限ゲート | HMAC / Ed25519 署名付きトークン。エージェントとリソースごとにスコープを設定 |
| ✅ 追記専用監査ログ | すべての書き込み、許可、遷移に署名して記録 |
| ✅ 32 種類のフレームワークアダプター | LangChain、CrewAI、AutoGen、MCP、Codex、Gemini、APS、RLM、その他 24 種類 — ロックインなし |
| ✅ FSM ガバナンス | 状態境界でエージェントを強制停止し、タイムアウトを適用 |
| ✅ コンプライアンス監視 | 違反をリアルタイムで検出(ツールの不正使用、ターン交代、タイムアウト) |
| ✅ 主張の検証 | ティア 1 のエージェント誠実性 — 成果に紐づく署名付きレシート、マニフェストの照合、虚偽を述べるエージェントへの信頼度低下 |
| ✅ QA オーケストレーション | シナリオの再生、フィードバックループ、リグレッション追跡、矛盾の検出 |
| ✅ アダプターの遅延初期化 | 初回使用時にアダプターを遅延読み込み — 未使用フレームワークの起動コストはゼロ |
| ✅ フックミドルウェア | 任意のアダプター呼び出しに対する beforeExecute / afterExecute / onError フック |
| ✅ フロー制御 | ブラックボードへの書き込みを一時停止/再開/スロットリング |
| ✅ スキルの合成 | エージェント呼び出しに対する chain() / batch() / loop() / verify() メタ操作 |
| ✅ セマンティックメモリ検索 | ブラックボードデータに対するコサイン類似度を使った BYOE ベクトルストア |
| ✅ フェーズパイプライン | 人間参加型の承認ゲートを備えた複数フェーズのワークフロー。approvalTimeoutMs のフェイルクローズタイムアウトにより、無期限の停止を防止 |
| ✅ 信頼度フィルタリング | 複数エージェントの結果スコアリング、しきい値検証、コンセンサス集約 |
| ✅ マッチャーベースのフック | エージェント/アクション/ツールに対する Glob パターンでフックを対象別にフィルタリング |
| ✅ ファンアウト/ファンイン | プラグイン可能な集約戦略によるエージェントの並列起動 |
| ✅ エージェント実行環境のサンドボックス化 | ポリシー適用と承認ゲートを備えたサンドボックス内でのシェル実行 |
| ✅ インタラクティブコンソール | ライブ監視、エージェント制御、ブラックボード/予算/FSM 管理に対応した TUI ダッシュボード |
| ✅ パイプモード | プログラムから AI でオーケストレーターを制御するための JSON stdin/stdout プロトコル |
| ✅ 戦略エージェント | 弾力的なエージェントプール、ワークロード分割、適応型スケーリングを備えたメタオーケストレーター |
| ✅ 目標分解ツール | LLM を活用した目標 → タスク DAG → 並列実行。runTeam() の 1 行呼び出しに対応 |
| ✅ コンテキストスロットラー | LLM 呼び出し前にエージェントのスコープごとにブラックボードのキーを整理 — コンテキストの汚染を防止 |
| ✅ パーティションプランナー | DAG 実行前にエージェントへ重複しない調査範囲を割り当て — 調査の重複を防止 |
| ✅ カバレッジゲート | 再帰的な改良ループ — カバレッジスコアがしきい値以上になるまで、不足箇所について分解ツールを再実行 |
| ✅ ルート分類器 | ショートサーキットルーティング — 計画前に目標を事実検索と複雑な統合に分類 |
| ✅ 目標 DSL | 循環検出とトポロジカルコンパイルに対応した YAML/JSON 目標定義 |
| ✅ エージェント VCR | 決定論的なテストのために LLM/エージェントのやり取りを記録・再生 |
| ✅ 比較ランナー | スコアリング、タイミング、コスト分析を備えたアダプターの並列比較 |
| ✅ カバレッジレポーター | しきい値の適用に対応した V8 カバレッジの収集 |
| ✅ ジョブキュー | 再試行、クラッシュリカバリー、プラグイン可能なバックエンドに対応した永続的な優先度付き FIFO |
| ✅ 承認受信トレイ | REST API と SSE ストリーミングを備えたウェブアクセス可能な承認キュー |
| ✅ TTL 自動退避 | オンデマンドの退避を行う purgeExpired()。バックグラウンドタイマー(unref'd、デフォルト 60 s)の startSweep(intervalMs) / stopSweep() |
| ✅ WAL クラッシュリカバリー | LockedBlackboard の先行書き込みログがプロセスクラッシュ後も保持されます。replayWAL() は再起動時に未コミットの操作を再生し、compactWAL() は手動で切り詰めます |
| ✅ サーキットブレーカー | AdapterRegistry におけるアダプターごとの CLOSED/OPEN/HALF_OPEN 状態マシン。自動フェイルオーバー用の fallbackChain、CircuitOpenError に対応。依存関係の追加はゼロ |
| ✅ OTel テレメトリーフック | ITelemetryProvider による BYOT 抽象化 — NullTelemetryProvider、CapturingTelemetryProvider、createOtelHooks() ファクトリー。アダプターを変更せずに任意の OTel SDK を接続可能 |
| ✅ トランスポート層 | HMAC 認証、TTL、ノード許可リストに対応した HTTP 上の JSON-RPC 2.0 |
| ✅ プレイグラウンド REPL | 迅速なプロトタイピングのためのモックエージェントを備えたインタラクティブなサンドボックス |
| ✅ アダプターテストハーネス | 任意のアダプター実装に対応したパラメーター化テスト一式 |
| ✅ IAuthValidator | 具体的な AuthGuardian から認可を切り離すためのインターフェース |
| ✅ キルスイッチ | network-ai pause / resume — SYSTEM_PAUSED センチネル。doctor による自己診断。inspect <key> によるメタデータと監査証跡の表示 |
| ✅ 最小モード | --minimal / NETWORK_AI_MINIMAL=1 — WAL の再生とスイープを省略し、CI/テストの起動を高速化 |
| ✅ ASI Strict Mode | オプトイン方式の証明付きアクション、BFT コンセンサス、監査担当者のレシート、キルスイッチ、信頼階層型コンテキスト、認知上限 |
| ✅ Perpetual Runtime | オペレーター署名付きリースのもとでオプトイン方式の無期限実行に対応:デッドマンスイッチ、エグレスプロキシ、保護対象パス、サンドボックス、セントリースウォーム、自己改善パイプライン、自己修復状態、予算バランサー |
| ✅ TypeScript ネイティブ | ES2022 厳格モード、ネイティブ依存関係ゼロ |
チームが Network-AI を利用する理由
| 問題 | Network-AI による解決方法 |
|---|---|
| 並列エージェントにおける競合状態 | アトミックなブラックボード:ファイルシステムのミューテックスを使った propose → validate → commit |
| エージェントの予算超過/コストの暴走 | FederatedBudget — エージェントごとのトークン上限を厳格に設定し、支出をリアルタイムで追跡します |
| エージェントの行動を把握できない | 書き込み、権限付与、FSM の状態遷移ごとに HMAC/Ed25519 署名付き監査ログを記録します |
| 1 つの AI フレームワークに縛られる | 32 種類のアダプター — LangChain + AutoGen + CrewAI + Codex + Gemini + MiniMax + NemoClaw + APS + LangGraph + Vertex AI + Hermes + RLM + カスタムを 1 つのスウォームで組み合わせられます |
| エージェントが権限範囲を超えて権限を拡大する | AuthGuardian — 機密性の高い操作の前に、スコープが限定された権限トークンが必要です |
| 実行のたびにエージェントがプロジェクトのコンテキストを失う | ProjectContextManager(Layer 3)— 決定事項、目標、技術スタック、マイルストーンをすべてのシステムプロンプトに挿入します |
| エージェントの出力品質の回帰を追跡できない | QAOrchestratorAgent — シナリオの再生、フィードバックループ、エージェント間の矛盾検出、過去の傾向の追跡を行います |
| 確実に停止できない長時間実行エージェント | Perpetual Runtime — プロセス外のリース権限、デッドマンスイッチ、ガードされたガバナンス経路により、人間が制御を維持できます |
アーキテクチャ
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#475569', 'lineColor': '#94a3b8', 'clusterBkg': '#0f172a', 'clusterBorder': '#334155', 'edgeLabelBackground': '#1e293b', 'edgeLabelColor': '#cbd5e1', 'titleColor': '#e2e8f0'}}}%%
flowchart TD
classDef app fill:#1e3a5f,stroke:#3b82f6,color:#bfdbfe,font-weight:bold
classDef security fill:#451a03,stroke:#d97706,color:#fde68a
classDef routing fill:#14532d,stroke:#16a34a,color:#bbf7d0
classDef quality fill:#3b0764,stroke:#9333ea,color:#e9d5ff
classDef blackboard fill:#0c4a6e,stroke:#0284c7,color:#bae6fd
classDef adapters fill:#064e3b,stroke:#059669,color:#a7f3d0
classDef audit fill:#1e293b,stroke:#475569,color:#94a3b8
App["Your Application"]:::app
App -->|"createSwarmOrchestrator()"| SO
subgraph SO["SwarmOrchestrator"]
AG["AuthGuardian\n(HMAC / Ed25519 permission tokens)"]:::security
AR["AdapterRegistry\n(route tasks to frameworks)"]:::routing
QG["QualityGateAgent\n(validate blackboard writes)"]:::quality
QA["QAOrchestratorAgent\n(scenario replay, regression tracking)"]:::quality
BB["SharedBlackboard\n(shared agent state)\npropose → validate → commit\nfilesystem mutex"]:::blackboard
AD["Adapters — plug any framework in, swap freely\nLangChain · AutoGen · CrewAI · MCP · LlamaIndex · …"]:::adapters
AG -->|"grant / deny"| AR
AR -->|"tasks dispatched"| AD
AD -->|"writes results"| BB
QG -->|"validates"| BB
QA -->|"orchestrates"| QG
end
SO --> AUDIT["data/audit_log.jsonl\n(HMAC / Ed25519-signed)"]:::audit
FederatedBudgetは単独でエクスポートされます。別途インスタンス化し、必要に応じてブラックボードのバックエンドに接続すると、ノード間でトークン予算を適用できます。
ProjectContextManagerは Layer 3 の Python ヘルパー(scripts/context_manager.py)です。永続化されたプロジェクトの目標、決定事項、マイルストーンをエージェントのシステムプロンプトに挿入します。ARCHITECTURE.md § Layer 3 を参照してください。
→ アーキテクチャ、FSM の一連の流れ、ハンドオフプロトコルの詳細
インストール
npm install network-ai
ネイティブ依存関係はなく、ビルド手順も不要です。アダプターに依存関係はありません(BYOC — クライアントはご自身で用意してください)。
MCP サーバーとして使用する
サーバーを起動します(設定不要、依存関係ゼロ)。
npx network-ai-server --port 3001
# or from source:
npx ts-node bin/mcp-server.ts --port 3001
その後、MCP 互換のクライアントを接続します。
Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加します。
{
"mcpServers": {
"network-ai": {
"url": "http://localhost:3001/sse"
}
}
}
Cursor/Cline/SSE ベースの MCP クライアント — 同じ URL を指定します。
{
"mcpServers": {
"network-ai": {
"url": "http://localhost:3001/sse"
}
}
}
起動していることを確認します。
curl http://localhost:3001/health # { "status": "ok", "tools": <n>, "uptime": <ms> }
curl http://localhost:3001/tools # full tool list
MCP 経由で公開されるツール:
blackboard_read/blackboard_write/blackboard_list/blackboard_delete/blackboard_existscontext_pack— タスク向けに、トークン予算に合わせて関連度順に並べたコンテキスト要約です(ブラックボード全体を作業ウィンドウに流し込む代わりに使用します)blackboard_search— ブラックボードのエントリーを上位 K 件まで順位付けして検索します(エンベッダーが接続されている場合はセマンティック検索、それ以外は字句検索)budget_status/budget_spend/budget_reset— フェデレーション型のトークン追跡token_create/token_validate/token_revoke— HMAC/Ed25519 署名付き権限トークンaudit_query— 追記専用の監査ログを検索しますconfig_get/config_set— オーケストレーターの設定をリアルタイムで操作しますagent_list/agent_spawn/agent_stop— エージェントのライフサイクルを管理しますfsm_transition— FSM の状態遷移をブラックボードに書き込みます
各ツールは agent_id パラメーターを受け取り、すべての書き込みのソースエージェントとして記録します。MCP サーバーの信頼境界はトランスポート認証(SSE/HTTP 経由のベアラーシークレット、またはローカルの stdio)です。クライアントが認証されると、サーバーが保持するランダムな ID を使ってサーバーがクライアントに代わって書き込むため、どの agent_id でも使用でき、共有トークンを知っている必要はありません。MCP 経由で渡された呼び出し元の agent_token 値は無視されます。インプロセスの TypeScript コードでは、registerAgent() を介してエージェントごとのトークンと名前空間を保持します。
オプション:--no-budget、--no-token、--no-control、--ceiling <n>、--board <name>、--audit-log <path>。
Claude Code プラグインとして使用する
Network-AI は Claude Code プラグインとして提供されます。MCP サーバーは自動的に接続されるため、上記のすべてのツールを手動で設定することなく Claude Code 内で利用できます。
セルフホスト型マーケットプレイスからインストールする(承認不要):
/plugin marketplace add Jovancoding/Network-AI
/plugin install network-ai@network-ai
これだけです。blackboard_read、budget_status、audit_query、token_create などが、Claude Code のネイティブツールとして読み込まれます。内部では、プラグインは npx -y -p network-ai network-ai-server --stdio(stdio MCP トランスポート)を実行するため、常に公開済みの npm パッケージを使用します。
リポジトリのルートには、標準的なプラグイン構成が含まれています。
| ファイル | 役割 |
|---|---|
.claude-plugin/plugin.json | プラグインマニフェスト |
.mcp.json | Network-AI MCP サーバー(stdio)を登録 |
.claude-plugin/marketplace.json | セルフホスト型マーケットプレイスのカタログ |
commands/ | スラッシュコマンド — /network-ai:status、/network-ai:budget、/network-ai:audit、/network-ai:blackboard |
claude plugin validate . で、マニフェストをローカルで検証できます。
AuthGuardian(フック)で Claude Code 自体を制御します。 Claude Code によるすべてのツール呼び出し(シェルコマンド、ファイル編集、ウェブ取得など)は、Network-AI がスウォームエージェントに適用するものと同じ重み付けスコアリング(正当性 40%、信頼性 30%、リスク 30%)を通じて監査し、権限を制御できます。
// .claude/settings.json — see examples/claude-code-hooks.json for the full config
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash|Write|Edit|WebFetch",
"hooks": [{ "type": "command",
"command": "npx -y -p network-ai network-ai hook pre-tool-use --mode enforce" }]
}]
}
}
--mode observe(デフォルト)では、すべての呼び出しを data/hooks_audit.jsonl に記録し、ブロックはしません。--mode enforce では、ツールをリソースタイプ(Bash → SHELL_EXEC、Write/Edit → FILE_SYSTEM、WebFetch → EXTERNAL_SERVICE)に対応付け、AuthGuardian の許可を必須とします。拒否された呼び出しは、対話型プロンプトとしてユーザーにエスカレーションされます。--deny "rm -rf" パターンはモードに関係なく呼び出しを確実にブロックし、ツール名とツール入力のすべての文字列フィールド(例:Write.content、Edit.new_string、MCP ツールの引数)を照合します。--allow パターンはツール名と主な対象のみを照合します。無効なパターンやバックトラッキングが発生しやすいパターンの場合、フックは 2 で終了します。Claude Code はこれをブロックとして扱うため、不正なルールが拒否リストを無効化するのではなく、安全側に失敗します。
OpenAI Codex で使用する
Network-AI は OpenAI Codex MCP サーバーとしても動作し、Codex CLI と IDE 拡張機能の両方で利用できます。Claude Code で読み込まれるツールと同じものを Codex でも利用できます。
1 つのコマンドで追加できます(公開済みの npm パッケージを使用します)。
codex mcp add network-ai -- npx -y -p network-ai network-ai-server --stdio
Codex TUI で /mcp を実行し、network-ai が接続されていることを確認してください。
または、プロジェクト単位で設定します — リポジトリのルートには .codex/config.toml が含まれているため、信頼されたチェックアウトではサーバーが自動的に認識されます。グローバルに登録する場合は、同じブロックを ~/.codex/config.toml に追加します。
[mcp_servers.network-ai]
command = "npx"
args = ["-y", "-p", "network-ai", "network-ai-server", "--stdio"]
どちらの方法でも、stdio MCP 経由で全ツールセット(blackboard_read、budget_status、audit_query、token_create、…)を利用できます。API キーは不要で、管理対象のサーバーを起動する必要もありません。
Gemini CLI で使用する
Network-AI は Gemini CLI 拡張機能として提供されます。リポジトリのルートにある gemini-extension.json によって、stdio MCP サーバーと GEMINI.md コンテキストファイルが自動的に接続されます。
gemini extensions install https://github.com/Jovancoding/Network-AI
または、MCP サーバーのみを直接登録することもできます。
gemini mcp add network-ai npx -- -y -p network-ai network-ai-server --stdio
Gemini CLI 内で /mcp を実行し、network-ai ツールが読み込まれていることを確認してください。Gemini を利用したスウォームエージェントを構築するには、GeminiAdapter(Gemini Developer API / AI Studio)または VertexAIAdapter(GCP 上の Vertex AI)を使用してください。また、Google の Agent2Agent エコシステム向けには、A2AServer によって、このオーケストレーターを検出可能な A2A エージェントとして公開できます。
import { A2AServer } from 'network-ai';
const a2a = new A2AServer({
name: 'Network-AI Orchestrator',
secret: process.env.A2A_SECRET, // required (v5.15.5+); or allowUnauthenticated: true for loopback-only dev
executor: async (text) => ({ text: await runSwarmTask(text) }),
});
a2a.startServer(4310); // serves /.well-known/agent.json + tasks/send
CLI
ターミナルからNetwork-AIを直接制御できます。サーバーは不要です。CLIはMCPサーバーと同じコアエンジンをインポートします。
# One-off commands (no server needed)
npx ts-node bin/cli.ts bb set status running --agent cli
npx ts-node bin/cli.ts bb get status
npx ts-node bin/cli.ts bb snapshot
# After npm install -g network-ai:
network-ai bb list
network-ai audit tail # live-stream the audit log
network-ai auth token my-bot --resource blackboard
| コマンドグループ | 制御対象 |
|---|---|
network-ai bb | Blackboard — 取得、設定、削除、一覧表示、スナップショット、提案、コミット、中止 |
network-ai auth | AuthGuardian — トークンの発行(スコアの内訳は--why)、失効、権限の確認 |
network-ai budget | FederatedBudget — 使用状況、上限の設定 |
network-ai audit | 監査ログ — 出力、ライブ表示、消去 |
network-ai env | 環境管理 — 初期化、一覧表示、チェーン、差分、昇格、バックアップ、復元 |
network-ai doctor | 自己診断 — データディレクトリ、環境ルーティング、監査ログ、WAL、キルスイッチ、MCPシークレットの検証 |
network-ai inspect <key> | Blackboardのキーを調査 — 値、メタデータ、保留中の履歴、監査証跡 |
network-ai pause / resume | キルスイッチ — SYSTEM_PAUSEDセンチネルの書き込み/削除 |
network-ai perpetual | Perpetual Runtime — keygen、sign-policy、authority、proxy、sentry、status、pause、resume、revoke、tighten、install-policy、sign-guarded、sign-budget、snapshot、rollback |
すべてのコマンドで使用できるグローバルフラグ:--data <path>(データディレクトリ。既定値は./data) · --env <name>(環境) · --json(機械可読な出力) · --minimal(WALの再生とスイープを省略し、CI/テストでの起動を高速化)
→ 詳細はQUICKSTART.md § CLIを参照してください。
2つのエージェントが、競合状態なしで1つの共有状態を利用
本当の差別化要因は連携です。単一のフレームワークでは対応できないことを紹介します。同じリソースに対して、2つのエージェントが互いのデータを破損させることなく、同時かつアトミックに書き込みます。
import { LockedBlackboard, CustomAdapter, createSwarmOrchestrator } from 'network-ai';
const board = new LockedBlackboard('.');
const adapter = new CustomAdapter();
// Agent 1: writes its analysis result atomically
adapter.registerHandler('analyst', async () => {
const id = board.propose('report:status', { phase: 'analysis', complete: true }, 'analyst');
board.validate(id, 'analyst');
board.commit(id); // file-system mutex — no race condition possible
return { result: 'analysis written' };
});
// Agent 2: runs concurrently, writes to its own key safely
adapter.registerHandler('reviewer', async () => {
const id = board.propose('report:review', { approved: true }, 'reviewer');
board.validate(id, 'reviewer');
board.commit(id);
const analysis = board.read('report:status');
return { result: `reviewed phase=${analysis?.phase}` };
});
createSwarmOrchestrator({ adapters: [{ adapter }] });
// Both fire concurrently — mutex guarantees no write is ever lost
const [, ] = await Promise.all([
adapter.executeAgent('analyst', { action: 'run', params: {} }, { agentId: 'analyst' }),
adapter.executeAgent('reviewer', { action: 'run', params: {} }, { agentId: 'reviewer' }),
]);
console.log(board.read('report:status')); // { phase: 'analysis', complete: true }
console.log(board.read('report:review')); // { approved: true }
同じパターンで、予算、権限、フレームワークをまたぐエージェントを追加できます。→ QUICKSTART.md
デモ — コントロールプレーンのストレステスト (APIキー不要)
約3秒で実行できます。LLMへの呼び出しなしで、連携プリミティブの動作を実証します。
npm run demo -- --08
このデモで確認できる機能:アトミックなBlackboardロック、優先度による割り込み(同じキーでpriority-3がpriority-0に優先)、AuthGuardian権限ゲート(拒否 → 根拠提示 → トークンによる許可)、700 msでのFSM強制停止、コンプライアンス違反のリアルタイム検出(TOOL_ABUSE、TURN_TAKING、RESPONSE_TIMEOUT、JOURNEY_TIMEOUT)、FederatedBudgetによる追跡。これらすべてを、API呼び出しを一度も行わずに確認できます。
8エージェントAIパイプライン(OPENAI_API_KEYが必要です。決済処理サービスを最初から最後まで構築します):
npm run demo -- --07
NemoClawサンドボックススウォーム (APIキー不要) — デフォルト拒否のネットワークポリシーを設定した、分離されたNVIDIA NemoClawサンドボックス内の3つのエージェント:
npx ts-node examples/10-nemoclaw-sandbox-swarm.ts
アダプターシステム
32 個のアダプターを備え、アダプター依存関係はゼロです。SDK オブジェクトはご自身で用意してください。
| アダプター | フレームワーク/プロトコル | 登録メソッド |
|---|---|---|
CustomAdapter | 任意の関数または HTTP エンドポイント | registerHandler(name, fn) |
LangChainAdapter | LangChain | registerAgent(name, runnable) |
AutoGenAdapter | AutoGen / AG2 | registerAgent(name, agent) |
CrewAIAdapter | CrewAI | registerAgent または registerCrew |
MCPAdapter | Model Context Protocol | registerTool(name, handler) |
LlamaIndexAdapter | LlamaIndex | registerQueryEngine(), registerChatEngine() |
SemanticKernelAdapter | Microsoft Semantic Kernel | registerKernel(), registerFunction() |
OpenAIAssistantsAdapter | OpenAI Assistants | registerAssistant(name, config) |
HaystackAdapter | deepset Haystack | registerPipeline(), registerAgent() |
DSPyAdapter | Stanford DSPy | registerModule(), registerProgram() |
AgnoAdapter | Agno(旧称 Phidata) | registerAgent(), registerTeam() |
OpenClawAdapter | OpenClaw | registerSkill(name, skillRef) |
A2AAdapter | Google A2A Protocol | registerRemoteAgent(name, url) |
CodexAdapter | OpenAI Codex / gpt-4o / Codex CLI | registerCodexAgent(name, config) |
MiniMaxAdapter | MiniMax LLM API(M2.5 / M2.5-highspeed) | registerAgent(name, config) |
NemoClawAdapter | NVIDIA NemoClaw(OpenShell 経由のサンドボックス化されたエージェント) | registerSandboxAgent(name, config) |
APSAdapter | Agent Permission Service(委任チェーンの信頼) | apsDelegationToTrust(delegation) |
CopilotAdapter | GitHub Copilot(生成/レビュー/説明/修正/テスト/リファクタリング/チャット) | registerAgent(name, config) |
LangGraphAdapter | LangGraph(コンパイル済み StateGraph) | registerGraph(name, graph) |
AnthropicComputerUseAdapter | Anthropic Computer Use(スクリーンショット/クリック/入力/スクロール) | registerAgent(name, config) |
OpenAIAgentsAdapter | OpenAI Agents SDK(ツール使用、ハンドオフ、ガードレール) | registerAgent(name, runner) |
VertexAIAdapter | Google Vertex AI / Gemini(関数呼び出し、マルチモーダル) | registerAgent(name, config) |
PydanticAIAdapter | Pydantic AI(構造化出力、検証、依存関係の注入) | registerAgent(name, config) |
BrowserAgentAdapter | ブラウザー自動化(Playwright/Puppeteer/CDP) | registerAgent(name, driver) |
HermesAdapter | NousResearch Hermes / OpenAI 互換エンドポイント(Ollama、Together AI、Fireworks、llama.cpp) | registerAgent(name, config) |
OrchestratorAdapter | 階層型マルチオーケストレーター連携 | registerOrchestrator(id, orchestrator) |
RLMAdapter | Recursive Language Model / RLM 互換 HTTP エンドポイント(arxiv 2512.24601) | registerAgent(name, config) |
ストリーミング対応のバリエーション(.stream() をサポートする置き換え可能な実装):
| アダプター | 拡張元 | ストリーミングソース |
|---|---|---|
LangChainStreamingAdapter | LangChainAdapter | 利用可能な場合は Runnable の .stream() を呼び出し、利用できない場合は .invoke() にフォールバックします |
CustomStreamingAdapter | CustomAdapter | AsyncIterable<string> ハンドラーをパイプし、通常の Promise の場合は単一チャンクにフォールバックします |
BaseAdapter(ストリーミングの場合は StreamingBaseAdapter)を拡張すれば、数分で独自のアダプターを追加できます。references/adapter-system.md をご覧ください。
LangGraph、CrewAI、AutoGen と連携
Network-AI は、既存のスタックに追加する調整レイヤーです。LangChain のチェーン、CrewAI のクルー、AutoGen のエージェントはそのまま使用し、それらを取り囲む共有状態、ガバナンス、予算を追加します。
| 機能 | Network-AI | LangGraph | CrewAI | AutoGen |
|---|---|---|---|---|
| 1 つのスウォーム内でのフレームワーク横断エージェント | ✅ 組み込みアダプター 32 種 | ⚠️ ノードから任意のコードを呼び出せます。アダプターの抽象化はありません | ⚠️ ツールで拡張できます。CrewAI ネイティブのエージェントのみ | ⚠️ プラグインで拡張できます。AutoGen ネイティブのエージェントのみ |
| アトミックな共有状態(競合を安全に処理) | ✅ propose → validate → commit ミューテックス | ⚠️ ノード間で状態を受け渡します。後勝ち方式です | ⚠️ 共有メモリを利用できます。競合解決機能はありません | ⚠️ 共有コンテキストを利用できます。競合解決機能はありません |
| エージェントごとの厳格なトークン上限 | ✅ FederatedBudget(第一級 API) | ⚠️ コールバック/カスタムミドルウェア経由 | ⚠️ コールバック/カスタムミドルウェア経由 | ⚠️ v0.4 以降はトークン追跡機能を内蔵しています。スウォーム単位の上限はありません |
| 機密操作前の権限チェック | ✅ AuthGuardian(組み込み) | ⚠️ カスタムノードロジックで実装可能 | ⚠️ カスタムツールで実装可能 | ⚠️ カスタムミドルウェアで実装可能 |
| 追記専用監査ログ | ✅ プレーンな JSONL(data/audit_log.jsonl) | ⚠️ 組み込みではありません | ⚠️ 組み込みではありません | ⚠️ 組み込みではありません |
| 保存データの暗号化 | ✅ AES-256-GCM(TypeScript レイヤー) | ⚠️ 組み込みではありません | ⚠️ 組み込みではありません | ⚠️ 組み込みではありません |
| 言語 | TypeScript / Node.js | Python | Python | Python |
テスト
npm run test:all # All suites in sequence
npm test # Core orchestrator
npm run test:security # Security module
npm run test:adapters # All 32 adapters
npm run test:streaming # Streaming adapters
npm run test:a2a # A2A protocol adapter
npm run test:codex # Codex adapter
npm run test:priority # Priority & preemption
npm run test:cli # CLI layer
npm run test:phase9 # Agent runtime, console, strategy agent
npm run test:phase12 # Context Throttler, Partition Planner, Coverage Gate, Route Classifier
npx ts-node test-asi.ts # ASI Strict Mode
npx ts-node test-perpetual.ts # Perpetual Runtime: leases, egress proxy, CLI
npx ts-node test-perpetual-safety.ts # Perpetual Runtime: guarded paths, sandbox, sentries, pipeline, self-healing, budget
43 のテストスイートで 4,180 件のアサーションに合格(npm run test:all):
| テストスイート | アサーション数 | 対象 |
|---|---|---|
test-phase4.ts | 147 | FSM ガバナンス、コンプライアンスモニター、アダプター統合 |
test-phase5f.ts | 127 | SSE トランスポート、McpCombinedBridge、拡張 MCP ツール |
test-phase5g.ts | 121 | CRDT バックエンド、ベクトルクロック、双方向同期 |
test-phase6.ts | 129 | MCP サーバー、コントロールプレーンツール、監査ツール |
test-adapters.ts | 271 | 32 種類すべてのアダプター、レジストリルーティング、統合、エッジケース |
test-phase5d.ts | 117 | プラグイン可能なバックエンド(Redis、CRDT、Memory) |
test-standalone.ts | 88 | ブラックボード、認証、統合、永続化、並列化、品質ゲート |
test-phase5e.ts | 87 | フェデレーション予算管理 |
test-phase5c.ts | 73 | 名前付きマルチブラックボード、分離、バックエンドオプション |
test-codex.ts | 51 | Codex アダプター:チャット、補完、CLI、BYOC クライアント、エラーパス |
test-minimax.ts | 50 | MiniMax アダプター:ライフサイクル、登録、チャットモード、温度のクランプ |
test-nemoclaw.ts | 93 | NemoClaw アダプター:サンドボックスのライフサイクル、ポリシー、ブループリント、引き継ぎ、環境変数の転送 |
test-priority.ts | 64 | 優先度によるプリエンプション、競合解決、後方互換性 |
test-a2a.ts | 35 | A2A プロトコル:登録、実行、モック fetch、エラーパス |
test-streaming.ts | 32 | ストリーミングアダプター、チャンク形式、フォールバック、collectStream |
test-phase5b.ts | 55 | プラグイン可能なバックエンド パート 2、一貫性レベル |
test-phase5.ts | 42 | 名前付きマルチブラックボードの基盤 |
test-security.ts | 34 | トークン、サニタイズ、レート制限、暗号化、監査 |
test-cli.ts | 65 | CLI レイヤー:bb、auth、budget、audit コマンド |
test-qa.ts | 67 | QA オーケストレーター:シナリオ、フィードバックループ、回帰、矛盾 |
test-phase7.ts | 94 | 遅延初期化、フックミドルウェア、フロー制御、スキルコンポーザー、セマンティック検索 |
test-phase8.ts | 146 | フェーズパイプライン、信頼度フィルター、マッチャーベースのフック、ファンアウト/ファンイン |
test-phase9.ts | 293 | エージェントランタイム、サンドボックスポリシー、シェルエグゼキューター、ファイルアクセサー、承認ゲート、コンソール UI、オーケストレーターの配線、パイプモード、戦略エージェント |
test-phase10.ts | 153 | 目標分解、タスク DAG 検証、トポロジカルレイヤー、JSON 解析、チームランナー、並行処理、タイムアウト、イベント、runTeam のワンライナー、依存性注入、LLM プランナー |
test-phase11.ts | 55 | TTL バックグラウンドスイープ、WAL クラッシュリカバリー、CircuitBreaker、ITelemetryProvider/OTel フック |
test-topology.ts | 304 | WorkTree、ControlPlane、ダッシュボードサーバー、トポロジーの可視化、WebSocket プロトコル |
test-rlm-phases.ts | 123 | FederatedBudget の子エージェントによる支出、ブラックボードメタデータ API、最良の部分結果、HookContext の深度、サブゴール再帰、セマフォによるファンアウト、PhasePipeline の圧縮、RLMAdapter のエンドツーエンドテスト |
test-phase12.ts | 65 | コンテキストスロットラー、パーティションプランナー、カバレッジゲート、ルート分類器、EVALUATING FSM 状態、runTeam 統合 |
test-env-manager.ts | 77 | 複数環境の分離、昇格チェーン、バックアップ/復元、ソース保護、NETWORK_AI_ENV、ブラックボードの環境ルーティング |
test-transport.ts | 117 | 基盤トランスポート層:TransportAgent 状態マシン、LandscapeAgent のヘルストラッキング、AgentPool のドレイン/一時停止、フリート調整、カナリア、ロールバック |
test-claim-verifier.ts | 50 | ClaimVerifier:レシートの生成/改ざん/有効期限、裏付けあり/裏付けなし/非公開、信頼度の低下/リセット/DoS 防御 |
test-phase13.ts | 58 | ESM デュアルビルド設定、McpStreamableServer のディスパッチ+リソース+プロンプト、PhasePipeline のチェックポイント/再開/クリア、SemanticMemory の保存/読み込み/自動保存/永続化データのクリア |
test-phase14.ts | 52 | モデルライフサイクルガバナンス:GovernedModelGateway の拒否→フォールバック、ModelBudget のクレジット再価格設定、RefusalTelemetry、Anthropic Messages アダプター |
test-phase15.ts | 32 | オーケストレーションのレジリエンス:RetryBudget、FanOutFanIn と TeamRunner のサブエージェントごとのフォールバック、EffortPolicy |
test-phase16.ts | 21 | ThinkingBlockManager のライフサイクル+推論抽出ガード、OWASP Agentic Top 10 カバレッジマトリックス |
test-phase17.ts | 15 | ApprovalInbox の GHSA-m4jg-6w3q-gm86 修正:読み取りルートの認証ゲート、トークン検証、シークレットがない場合のフェイルクローズ既定値、CORS 許可リスト |
test-phase18.ts | 85 | ClaudeHookBridge の監視/強制ゲート、MCP エリシテーションチャネル+フェイルクローズ承認コールバック、A2AServer のエージェントカード/タスク/認証/削除 |
test-phase19.ts | 78 | ContextComposer のランキング/予算/ピン留め/陳腐化/レイアウト、estimateTokens、context_pack+blackboard_search MCP ツール(字句+セマンティックモード) |
test-phase20.ts | 135 | セキュリティ回帰テスト:ClaudeHookBridge の完全一致ターゲットおよび全フィールドの拒否マッチング(GHSA-743h-jr5x-mpcr、GHSA-9p2w-prp8-5722)、拒否/許可正規表現の検証+フック終了コードのフェイルクローズ、SandboxPolicy の正規化済みコマンドマッチング(GHSA-9v4f-j8cv-fhxw)、DashboardServer の Origin/Host 検証(GHSA-hr6v-mfxm-4438)、MCP SSE のループバック限定 CORS(GHSA-4pvg-m42h-c3x2)、インスタンスごとのオーケストレータートークン+MCP サーバーが保持する ID、sanitizePath のセグメント境界の包含判定(GHSA-5mm5-4mh4-6gm6)、FileJobStore/AgentVCR の名前の隔離(GHSA-v64j-mc7x-c7x7、GHSA-mfxv-jg44-xj48)、A2AServer のフェイルクローズ認証(GHSA-qvf5-9prv-7r9c)、リプレイ防止機能を備えた ApprovalInbox/SwarmTransportServer のフェイルクローズ認証、ControlPlane/WorkTreeDashboard の Host/Origin チェック |
test-asi.ts | 148 | ASI Strict Mode:設定の解析/厳格化、ProofGate、ConsensusEngine、監査担当者のレシート、HaltCoordinator、信頼階層、認知上限、カナリア、ハッシュチェーン付きエクスポート |
test-perpetual.ts | 141 | Perpetual Runtime:署名、LeaseAuthority(更新、停止条件、失効/一時停止/厳格化、HTTP API)、LeaseGuard デッドマンスイッチ、EgressProxy、統合フック、キー/ルートファイル、プロセス外 CLI 権限管理とオペレーター制御 |
test-perpetual-safety.ts | 151 | Perpetual Runtime:GuardedPaths(I2)、サンドボックスランナー、センチネル検出器+クォーラム+認証済み ID、ImprovementPipeline の階層/レシート、検証済みスナップショット+SelfHealer、BudgetBalancer(I3)、エグレスの金銭的制限 |
test.ts | 39 | コアオーケストレーターのスモークテスト |
ドキュメント
| ドキュメント | 内容 |
|---|---|
| QUICKSTART.md | インストール、初回起動、CLI リファレンス、PowerShell ガイド、Python スクリプトの CLI |
| ARCHITECTURE.md | 競合状態の問題、FSM 設計、ハンドオフプロトコル、モデルとのやり取りのライフサイクルガバナンス、ASI Strict Mode、Perpetual Runtime、モジュール一覧、プロジェクト構成 |
| BENCHMARKS.md | プロバイダーのパフォーマンス、レート制限、ローカル GPU、max_completion_tokens ガイド |
| SECURITY.md | セキュリティモジュール、権限システム、信頼レベル、監査証跡、OWASP Agentic Top 10 の対応状況、Perpetual Runtime の制御、開示 SLA、ClawHub のスキャン結果 |
| THREAT_MODEL.md | 攻撃者プロファイル(自己改変型の長時間稼働エージェントを含む)、信頼境界、明示的な非目標、セキュリティ制御の概要 |
| DATA_LOCATIONS.md | Network-AI が作成するすべてのファイル — パス、目的、データ分類、運用者の責任(Perpetual Runtime のキー、監査記録、スナップショットを含む) |
| SUPPLY_CHAIN.md | ランタイム依存関係、インストール時に実行される処理、ネットワークの対象範囲(リース権限とエグレスプロキシを含む)、SLSA/npm 来歴の検証 |
| ENTERPRISE.md | 評価チェックリスト、安定性ポリシー、セキュリティの概要、統合のエントリーポイント |
| AUDIT_LOG_SCHEMA.md | 監査ログのフィールドリファレンス、すべてのイベントタイプ(model.refusal / model.attempt および Perpetual Runtime の権限/エグレス/セントリーイベントを含む)、スコアリング式 |
| ADOPTERS.md | 採用事例 — 追加するには PR を作成してください |
| INTEGRATION_GUIDE.md | v5.17 モジュールを使用したエンドツーエンドの統合手順(Perpetual Runtime を含む) |
| SKILL.md | OpenClaw/ClawHub Python スキル — セットアップ、オーケストレータープロトコル、OWASP エンジンの対応範囲、セキュリティスキャンの結果 |
| AGENTS.md | ベンダー横断エージェントの手順(Codex、Gemini CLI、Cursor、Factory)— ビルドコマンド、規約、アーキテクチャパターン |
| references/adapter-system.md | アダプターアーキテクチャ、全 32 アダプター(AnthropicMessagesAdapter を含む)、カスタムアダプターの作成 |
| references/auth-guardian.md | 権限スコアリング、リソースタイプ、scoreRequest()、IAuthValidator インターフェース |
| references/trust-levels.md | 信頼レベルの設定、APS 委任チェーンのマッピング |
Claude、ChatGPT、Codex での使用
Claude Code(CLI)を使用していますか? Claude Code プラグインとして使用するを参照してください。1 つのコマンドですべてのツールをインストールできます。
OpenAI Codex(CLI または IDE)を使用していますか? OpenAI Codex で使用するを参照してください。
codex mcp add1 つで MCP サーバーを追加できます。Gemini CLI を使用していますか? Gemini CLI で使用するを参照してください。
gemini extensions install1 つで拡張機能をインストールできます。
リポジトリのルートには 3 つの統合ファイルが含まれています。
| ファイル | 用途 |
|---|---|
claude-tools.json | Claude API のツール使用と OpenAI Codex — tools 配列に追加します |
openapi.yaml | カスタム GPT Actions — GPT エディターに直接インポートします |
claude-project-prompt.md | Claude Projects — カスタム指示に貼り付けます(ライフサイクルガバナンスと Perpetual Runtime のコンテキストを含む) |
Claude API / Codex:
import tools from './claude-tools.json' assert { type: 'json' };
// Pass tools array to anthropic.messages.create({ tools }) or OpenAI chat completions
カスタム GPT Actions:
GPT エディターで「Actions」→「Import from URL」を選択するか、openapi.yaml の内容を貼り付けます。
サーバー URL を、実行中の npx network-ai-server --port 3001 インスタンスに設定します。
Claude Projects:
claude-project-prompt.md の内容(水平線より下)を Claude Project の「Custom Instructions」フィールドにコピーします。指示のみのモードではサーバーは不要です。
コミュニティ
マルチエージェント AI の連携について話し合い、サポートを受け、開発中のものを共有するには、Discord サーバーに参加してください。
コントリビュート
- フォーク → 機能ブランチ →
npm run test:all→ プルリクエスト - バグ報告や機能リクエストはイシューからお寄せください。
MIT ライセンス — LICENSE · CHANGELOG · CONTRIBUTING · 行動規範 · セキュリティポリシー ·
キーワード
マルチエージェント · エージェントオーケストレーション · AI エージェント · エージェント型 AI · エージェント型ワークフロー · TypeScript · Node.js · LangGraph · CrewAI · AutoGen · MCP · model-context-protocol · LlamaIndex · Semantic Kernel · OpenAI Assistants · Haystack · DSPy · Agno · OpenClaw · ClawHub · 共有状態 · ブラックボードパターン · アトミックコミット · ガードレール · トークン予算 · 権限制御 · 監査証跡 · エージェント連携 · エージェント間の引き継ぎ · ガバナンス · コスト意識 · 拒否処理 · フォールバックルーティング · モデルのライフサイクル · OWASP agentic AI · 労力ポリシー · 思考ブロック
ダウンロード履歴
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。


