Warmplane について
Warmplaneは、複数のMCPサーバーを使うワークフロー向けのローカル制御プレーン兼リバースプロキシです。上流接続を維持し、簡潔な機能探索、ポリシー管理、決定的な実行をまとめます。
主な機能
- 01複数の上流MCPサーバーとの接続維持
- 02簡潔なカタログとオンデマンド探索
- 03ツールの別名と説明のカスタマイズ
- 04冪等性による重複排除と再試行分類
- 05RBACと人間による承認ゲート
- 06稼働監視とプロセス復旧
活用シーン
- 01複数のMCPサーバーをエージェント向けに集約
- 02ツールカタログによるコンテキスト消費の削減
- 03ツール操作への承認とアクセス制御の適用
- 04デーモンとWeb画面によるサーバー管理
MCP 対応
WarmplaneはMCP stdioプロキシとして動作するほか、HTTP/SSEのMCP接続も提供できます。上流のMCPサーバーを集約し、ポリシーで管理された機能をクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Warmplane
コンパクトな機能ファサード、ポリシーガバナンス、決定論的な実行により、Model Context Protocol(MCP)セッションを常時接続状態に保つローカル制御プレーンです。
v0.32.0 — 変更履歴 · ユーザーガイド · エージェントスキル · パフォーマンス · ホワイトペーパー · OpenAPI
⚡ Warmplane とは?
Warmplane は、AI ツール呼び出し用のローカル制御プレーン兼リバースプロキシです。複数のアップストリーム MCP サーバーへの常時接続を維持し、それらを単一の統制されたインターフェースの背後で多重化します。
Warmplane が解決する問題
- コンテキストウィンドウのトークン膨張:数十個のツールの巨大な JSON スキーマを毎ターン送信すると、数万個ものプロンプトトークンが無駄になります。Warmplane は、コンパクトなカタログインデックス(ペイロードサイズを58~96%削減)、オンデマンドのスキーマ検出、SHA-256 ETag キャッシュを提供します。
- 不適切なツール説明と曖昧さ:多くのアップストリームツールには、簡素で誤解を招く、または表現の乏しいドキュメント文字列があり、LLM を混乱させます。Warmplane では、多態的なエイリアス(
AliasTarget)を使ってツールの要約や説明を上書きでき、コンパクトなパラメーターシグネチャ(tool(req, [opt]))も生成できます。これにより、アップストリームのコードを変更せずに、ゼロショットエージェントの精度を最適化します。 - 重複した呼び出しと再試行:ネットワークの一時的な障害が発生すると、単純なエージェントは変更操作を無条件に再試行します。Warmplane は、クラッシュに耐える厳密に1回限りの冪等性重複排除(
idk_<sha256>)と、明示的な再試行分類(safe、idempotent、unsafe)を提供します。 - 統制されていない実行とセキュリティ:エージェントを稼働中のインフラストラクチャに直接接続すると、許可されていない操作のリスクが生じます。Warmplane は、マルチテナント RBAC、プロファイルごとのサーバー構成、シークレットのマスキング、Human-in-the-Loop(HITL)承認ゲートを適用します。
- 連鎖的なハングと不安定さ:アップストリームプロセスの遅延やクラッシュは、エージェントのループを停止させます。Warmplane は、サブマイクロ秒のサーキットブレーカーと自己修復型のプロセス監視により、健全性を監視します。
🚀 クイックスタート
1. インストール
Homebrew(macOS および Linux):
brew tap warmplane/tap
brew install warmplane
Cargo(crates.io):
cargo install warmplane
# Optional: with local ONNX vector search (FastEmbed)
cargo install warmplane --features semantic-search
ソースからビルド:
git clone https://github.com/Warmplane/warmplane.git
cd warmplane
cargo install --path . --features semantic-search
2. アップストリームサーバーを設定
対話形式でサーバーを追加するか、既存の AI ツールからインポートします:
# Interactive setup wizard
warmplane server add
# Or non-interactively
warmplane server add filesystem --command npx --arg "-y" --arg "@modelcontextprotocol/server-filesystem" --arg "/tmp"
warmplane server add context7 --url "https://mcp.context7.ai/sse" --bearer-env "CONTEXT7_API_KEY"
# Or 1-click import from Claude Desktop, Cursor, OpenCode, Zed
warmplane config import
または、mcp_servers.json を設定します:
{
"port": 9090,
"toolTimeoutMs": 15000,
"capabilityAliases": {
"db.query": "sqlite.read_query",
"search": {
"target": "semble-rs.search",
"summary": "Search codebase using semantic or BM25 ranking. Pass absolute repo path."
}
},
"policy": {
"allow": ["db.*", "fs.*", "search"],
"deny": ["fs.delete*"],
"requireApproval": ["db.mutation*"],
"redactKeys": ["token", "password", "api_key"]
},
"profiles": {
"coding": {
"servers": ["filesystem", "sqlite"],
"description": "Local engineering and exploration tools"
}
},
"mcpServers": {
"sqlite": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sqlite", "./test.db"] },
"filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"] }
}
}
3. Warmplane に接続する、または起動する
ワークフローに合った実行モードを選択してください。
-
モード 1:MCP stdio による直接統合(バックグラウンドデーモンは不要): AI クライアント(Cursor、Claude Desktop、Antigravity)を
warmplane mcp-serverに接続します。AI クライアントが子プロセスとして Warmplane を直接起動します。{ "mcpServers": { "warmplane": { "command": "warmplane", "args": ["mcp-server", "--config", "mcp_servers.json", "--profile", "coding"] } } } -
モード 2:バックグラウンドデーモンと Web コントロールデッキ: REST API、インタラクティブな Web UI、監査ログを提供する、常時稼働の中央デーモンを実行します。
warmplane daemon --port 9090 -
モード 3:Streamable HTTP/SSE MCP 接続による常時稼働デーモン:
mcpHttpServerが設定されている場合、AI クライアントは HTTP/SSE(http://127.0.0.1:9191/sse)経由で、単一の共有デーモンインスタンスに接続できます。
🔌 クライアントインターフェース
Warmplane は、同じ統合コア状態、ポリシーゲート、テレメトリを共有する、3 つの主要なアクセスモデルを提供します。
1. ネイティブ MCP stdio プロキシ(warmplane mcp-server)
MCP ネイティブのデスクトップクライアント(Claude Desktop、Cursor、Zed、Windsurf)を Warmplane に直接接続します。
{
"mcpServers": {
"warmplane": {
"command": "warmplane",
"args": ["mcp-server", "--config", "mcp_servers.json", "--profile", "coding"]
}
}
}
2. HTTP REST コントロールプレーン(warmplane daemon)
ゲートウェイ、Web アプリ、バックエンドサービス向けの、フル機能の HTTP JSON API です。
GET /v1/capabilities:簡潔な機能カタログインデックスPOST /v1/capabilities/search:語彙的検索と意味的検索を組み合わせたハイブリッド機能検索POST /v1/tools/call:コンテキスト抽出(_jsonpath、_limit_lines)と冪等性キーに対応した正規化済み実行エンベロープPOST /v1/tools/batch_call:$step.fieldによるパラメーター補間に対応した、連鎖型の複数ステップ実行GET /v1/tasksおよびPOST /v1/tasks/:id/update:SEP-2663 非同期タスクのライフサイクルと HITL レビューGET /ui:埋め込み型のスタンドアロン Web コントロールデッキ
3. プロセス内組み込みエンジン(EmbeddedWarmplane)
HTTP 子プロセスやネットワーク経由のホップを介さずにエージェントを実行できる、オーバーヘッドゼロのプロセス内 Rust ライブラリです。
use warmplane::{EmbeddedWarmplane, engine::ExecutionOptions};
use serde_json::json;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let (cp, _token) = EmbeddedWarmplane::start_from_path("mcp_servers.json").await?;
let res = cp.call_capability(
"filesystem.read_file",
json!({ "path": "/tmp/test.txt" }),
ExecutionOptions::default().with_request_id("req-1"),
).await;
println!("Output: {:?}", res.data);
Ok(())
}
🤖 AI エージェントに Warmplane を教える(エージェントスキル)
Warmplane には、agentskills.io のオープン標準に準拠した公式のエージェントスキル(.skills/warmplane/)が含まれています。コーディングエージェント(Claude Code、Google Antigravity、Cursor、OpenCode、Codex)から、このリポジトリを直接指定してください。
# Install Warmplane Skill into Claude Code
claude skill install Warmplane/warmplane
# Or copy into your agent workspace
mkdir -p .agents/skills/warmplane && cp -r .skills/warmplane/* .agents/skills/warmplane/
- 📖
.skills/warmplane/SKILL.md— コアプロンプトのトリガーと標準的なエージェントワークフロー - 🔌
references/mcp_stdio_usage.md— ワンクリックのクライアント設定(17 の IDE)と MCP ファサードツール - ⚙️
references/configuration_schema.md—mcp_servers.jsonスキーマと動的シークレット - 🛠️
references/cli_cheatsheet.md— デーモン、同期、ボールト用のターミナルコマンド - 🚑
references/error_resolution.md— サーキットブレーカー、ポリシーによる拒否、復旧
📊 パフォーマンスのハイライト
Warmplane は、ゼロコスト抽象化を実現する純粋な Rust で開発されています。
- 50.4 ns:ETag キャッシュの検証(
If-None-Match$\rightarrow$304 Not Modified) - 159.8 ns:冪等性キャッシュヒットの重複排除
- 1.58 µs:SHA-256 による増分カタログバージョンのハッシュ計算($N=10$)
- 15.9 µs:フィルター付きハイブリッド機能検索($N=50$)
- 372.1 µs:1,000 個のツールを対象とした、割り当てゼロの語彙タグ検索
👉 ベンチマークと測定方法の詳細は、docs/PERFORMANCE.md をご覧ください。
🛡️ コア機能マトリックス
| 機能 | 対応開始 | 説明 |
| 認証情報の有効期間制限とタスクタイムアウトの正確性 | v0.31.0 | JWT の exp の必須適用、UTF-8 に安全な認証情報の処理、サブ秒単位のタスク TTL の修正、rustls 0.23.45 へのセキュリティ更新 |
| 認証情報、承認、ポリシー境界の適用 | v0.32.0 | RBAC トークンとサーバー環境変数のシークレットのマスキング、HITL 承認のフェイルクローズ、Webhook 署名の必須化、リソースおよびプロンプトのルートに対するテナントポリシー |
|---|---|---|
| デューデリジェンスのためのセキュリティ強化とレジリエンス | v0.30.0 | ベアラートークンの定時間比較、JWT の iss/aud/nbf 検証、安全なクライアント IP 抽出、fsync による監査ログの永続性、競合状態のない状態ストレージ |
| 設定可能な MCP プロトコルバージョンと HTTP クライアントの接続 | v0.29.0 | 設定可能な supportedProtocolVersions、ワンクリックのクライアントインストールにおける HTTP トランスポートの選択、SSRF に対する Webhook 許可リスト、パストラバーサル対策 |
リアルタイム MCP list_changed とパススルーツール | v0.28.0 | ツール/リソース/プロンプトのリスト変更をリアルタイムで通知、SEP-1319 の _meta による検出ヒント、トップレベルのネイティブツールのパススルー、WORM 変更監査ログ |
| カスタムエイリアスの説明とシグネチャ | v0.27.0 | 多相的な docstring のオーバーライド(AliasTarget)、コンパクトな LLM シグネチャ(tool(req, [opt]))、双方向のエイリアス解決 |
| ワンクリック AI クライアントインジェクターと同期 | v0.26.0 | Claude Desktop、OpenCode、Claude Code、Cursor、Zed、Windsurf、Cline 向けの双方向 MCP アダプターエンジン |
| ネイティブ OS キーチェーンボールト | v0.26.0 | OS キーチェーンへの安全な保存とシークレット URI の動的解決(keychain://、op://、env://) |
| 実用的な ChatOps Webhook | v0.26.0 | HMAC-SHA256 署名付きの双方向 Slack、Discord、Microsoft Teams 承認カード |
| プロファイル単位のガバナンスとコンステレーション | v0.26.0 | プロファイルごとのきめ細かなポリシールール、コンステレーション境界バッジ、ライブフィルターメトリクス |
| Control Deck のタスクと HITL UI | v0.25.0 | リアルタイムのタスクと承認のハブ、MRTR 入力解決フォーム、Playground の非同期切り替え、組み込みタスク API |
| SEP-2663 タスク拡張 | v0.24.0 | ノンブロッキングの io.modelcontextprotocol/tasks 機能、統合された HITL 状態マシン、REST と CLI のコマンド |
| プロセス内組み込み Rust エンジン | v0.23.0 | オーバーヘッドなしのライブラリ統合を実現する EmbeddedWarmplane と ControlPlaneHandle |
| ストリーム可能な HTTP/SSE MCP トランスポート | v0.22.0 | リモートエージェント接続用の、共存する /mcp/sse MCP トランスポート |
| 名前付きサーバーコンステレーション | v0.21.0 | スコープ付き ETag パーティショニングと stdio フィルタリングを備えたプロファイルのグループ化(profiles) |
| マルチテナント RBAC | v0.20.0 | ロールベースのトークンアクセス、決定的なカタログのパーティショニング、テナントコンテキストの伝播 |
| クライアント委任型 MCP サンプリング | v0.19.0 | チケット追跡とロングポーリングを備えたリバース RPC サンプリング(sampling/createMessage) |
| 永続状態サブシステム | v0.18.0 | 承認、冪等性、OAuth2 トークン向けの、再起動に耐えるアトミックなディスクストレージ(AtomicFile<T>) |
| シグナル処理とグレースフルな終了処理 | v0.18.0 | 堅牢な SIGINT/SIGTERM 処理、非同期ワーカーのフラッシュ、子プロセスの孤児化防止 |
| MCP リソースとプロンプトのスタジオ | v0.17.0 | 360° リソースエクスプローラー、動的フォームを備えたプロンプトテンプレートレンダラー、SSE 同期 |
| 複数ステップのバッチパイプライン | v0.17.0 | 参照パラメーターの補間に対応したビジュアルパイプラインエディター(POST /v1/tools/batch_call) |
| エンタープライズセキュリティと認証 | v0.16.0 | トークンベースのミドルウェア保護、WORM 監査 HMAC 検証、シークレットのマスキング |
| フォールトトレランスと監視 | v0.15.0 | 縮退状態での起動、サーバーごとのサーキットブレーカー、指数バックオフによる再起動の監視 |
| エージェント拡張スイート | v0.14.0 | ファサード検索、コンテキストの蒸留(_jsonpath/_limit_lines)、複数ステップのバッチ実行 |
| HITL 承認エンジン | v0.13.0 | オペレーターゲートによる承認エンジン、一時停止、引数編集、HMAC Webhook のディスパッチ |
| WORM 監査と SIEM | v0.12.0 | 追記専用の SHA-256 ハッシュチェーン監査ログ、検証 API、Splunk/Webhook への SIEM エクスポート |
| Control Deck Web UI | v0.11.0 | サーバー、テスト用 Playground、ポリシー、テレメトリー向けのスタンドアロン組み込み Web ダッシュボード |
| 動的ホットリロード | v0.11.0 | ダウンタイムなしのアップストリームのマウント/アンマウント、明示的な warmplane reload と /v1/config/reload |
変更履歴
v0.32.0 — 認証情報、承認、ポリシー境界の適用
- 静的 RBAC トークン、プロファイルのシークレット、サーバーの環境変数をマスキング(
src/config.rs):McpConfig::sanitize_secretsは、GET /v1/configとwarmplane config showで適用されるマスキング処理です。この処理では、実際の認証情報を含む 3 つのフィールドが対象外になっていました。静的 RBAC トークンは、マップのキー自体がシークレットであるため、最も深刻な漏えいにつながります。設定を読み取ると、権限の高いものも含め、デプロイ内のすべてのベアラートークンが返されていました。プロファイルごとのpolicy.webhookシークレットと認証ヘッダーも同様に対象外になっていました。また、環境ブロックにはフィルタリングに使える命名規則がないため、サーバーのenvブロックは全体がマスキングされるようになりました。 - HITL 承認を自分で付与できないように修正(
src/http_v1/tasks_api.rs):handle_update_taskは承認レジストリを照合せず、2 回にわたってフェイルオープンしていました。hitl_approvalキーを含まないタスク更新は、偽造された"security-operator"の識別情報でチケットを自動承認していたため、ツールを呼び出すエージェントが、自身のゲート付き実行を承認できていました。この経路では監査イベントも出力されません。また、ブール値以外のapprovedはunwrap_or(true)を通過するため、文字列の{"approved":"false"}が承認として扱われていました。現在、判定は明示的なブール値からのみ行われ、不正な値は400 INVALID_APPROVAL_DECISIONとして拒否されます。 - シークレット設定時に Webhook 署名を必須化(
src/http_v1/webhooks_api.rs): HMAC チェックは「署名が提供された場合に検証する」実装だったため、署名ヘッダーのないコールバックは検証を完全にスキップしてapproveまたはrejectに進んでいました。ChatOps の連携では設計上ベアラートークンを使わないため、このルートの唯一の認証情報は署名です。署名を省略すると、認証情報がまったくないまま保留中のチケットを確定できていました。 - テナントポリシーを
resources/readとprompts/getにも適用(src/http_v1/catalog.rs): どちらのハンドラーも、他のすべての兄弟ハンドラーとは異なり、ベースポリシーに対して認可を行い、テナントコンテキストを受け取っていませんでした。compute_effective_policyはロールの許可リストを完全に置き換えるため、ベースポリシーは利用可能な中で最も広範なポリシーです。そのため、これを確認すると、ロールで許可されていない操作も許可されていました。また、handle_get_promptはベースポリシーからredact_keysを取得しており、プロファイルのマスキングキーを無視していました。
v0.31.0 — 有効期間の制限、UTF-8 に安全な認証情報の処理、タスクタイムアウトの正確性
- JWT の有効期限チェックを必須化(
src/rbac/engine.rs): 対称 JWT 検証器は、expクレームを数値として解析できた場合にのみ有効期限を確認していたため、expがない、null、または数値以外のトークンは有効期限の検証を完全にスキップし、永久に認証されていました。現在はexpが必須です。クレームが存在していても使用できない場合は期限切れとして扱われ、有効期限の時刻は RFC 7519 に従い排他的に扱われます。nbfは引き続き任意ですが、存在していて形式が不正な場合は拒否されます。 - UTF-8 に安全な認証情報プレフィックス(
src/rbac/engine.rs):authenticateは、付与 ID の生成と拒否された認証情報のログ記録のために、指定されたトークンを固定バイト位置でスライスしていました。8 バイト目がマルチバイト文字の途中にあるトークンは、INVALID_CREDENTIALSを返す代わりにパニックを起こしていました。そのため、未認証の呼び出し元が不正なキーを使ってサービス拒否を引き起こせるほか、ASCII 以外の静的キーも使用できませんでした。現在は、最も近い文字境界まで戻って切り詰めます。 - 1 秒未満のタスク TTL がゼロにならないよう修正(
src/tasks.rs): 有効期限のチェックでは、ミリ秒単位の TTL に対して、秒単位の作成時刻を使いttl_ms / 1000で変換していました。整数除算により、1 秒未満の有効期間はすべて0に切り捨てられ、ttlMs: 500を指定したタスクは、すでにFailedとして返されていました。現在は変換時に切り上げが行われ、expires_at_epoch_secsが作成時刻と同じになることはありません。 - rustls 0.23.45 へのセキュリティ更新(
Cargo.lock): TLS 1.3 のハンドシェイクメッセージが暗号化レベルの境界を越えて誤って受け入れられる可能性がある RUSTSEC-2026-0285 に対応するため、ロックされているrustlsのバージョンを更新しました。reqwest経由で推移的に取り込まれていました。
v0.30.0 — セキュリティ強化、定数時間暗号処理、JWT の厳格な適用、本番環境向けデューデリジェンス
- 定数時間検証とタイミング攻撃への対策(
src/daemon/auth.rs、src/chatops/、src/vault.rs):subtleクレートを導入し、HTTP ベアラー認証トークン、Webhook HMAC 署名、Keychain シークレットのスライス比較に定数時間のConstantTimeEqを使用することで、サイドチャネルのタイミング攻撃経路を排除しました。 - JWT RBAC クレームの厳格な検証(
src/rbac/jwt.rs): 必須の暗号学的 JWT クレーム(exp、iat、sub/actor_id、role)を適用し、許容時間を検証することで、署名のないクレーム、期限切れのクレーム、不正なベアラークレームが受け入れられないようにしました。 - 安全なクライアント IP の解決(
src/http_v1/helpers.rs、src/daemon/server.rs): 転送ヘッダー(X-Forwarded-For、X-Real-IP)の IPv4/IPv6 構文を検証し、Axum のConnectInfo<SocketAddr>からリモートソケットのピアアドレスを直接取得することで、WORM 監査記録やレート制限における IP 偽装を防止しました。 - 状態ファイルの権限をアトミックに制限(
src/storage.rs): 一時ファイルおよび永続的な機密状態ファイル(oauth_tokens.json、シークレット)に POSIX0o600権限を適用し、状態ディレクトリには0o700を適用しました。 - スレッドセーフな監査ハッシュチェーン(
src/audit/store.rs): インメモリ WORM 監査シーケンスカウンターを、アトミックで単調増加する順序で強化し、高い並行性の下でのシーケンスの欠落や競合状態を排除しました。 - 本番環境向けデューデリジェンスの問題修正: 入力境界、メモリ割り当て、安全なシャットダウンシグナル、API エラーエンベロープに関する包括的なレビュー指摘事項 14 件(H1~H3、M1~M6、L1~L5)をすべて解決しました。
v0.29.0 — MCP プロトコルバージョンの設定、HTTP クライアント接続、セキュリティ強化
- ワンクリックのクライアントインストールで HTTP トランスポートを選択(
src/cli.rs、src/client_adapter.rs): クライアント接続時に--transport httpフラグと対話型のトランスポート選択を追加しました(warmplane client install <target> --transport http)。クライアントがデーモンのストリーミング可能な HTTP エンドポイントに直接接続するよう設定できます。 - MCP プロトコルバージョンの設定(
src/config.rs、src/http_v1/mcp_transport.rs): MCP のストリーミング可能な HTTP の初期化時に通知するプロトコルバージョン配列を運用者がカスタマイズできるsupportedProtocolVersions設定オプションを追加しました。 - Webhook の SSRF 許可リスト保護(
src/config.rs、src/http_v1/webhooks_api.rs): 外部向け Webhook テストの送信先に明示的な URL 許可リストを適用するため、policy.webhook.allowed_urlsの検証を追加しました。 - 設定インポート時のパストラバーサル対策(
src/config_import.rs): 相対パスによるパスの逸脱(../)を防ぐため、設定インポート操作に厳格なパス包含検証(validate_safe_import_path)を追加しました。 - 検索の割り当てと実行に上限を設定(
src/search/hybrid.rs): 信頼できない入力によるメモリ枯渇を防ぐため、検索リクエストの上限とベクターの割り当てに上限を設定しました。
v0.28.0 — リアルタイム MCP list_changed 通知、SEP-1319 ディスカバリーヒント、パススルーツール
- リアルタイム MCP
list_changed通知(src/mcp_server.rs、src/daemon/state.rs):tools、resources、promptsの各機能でlistChanged: trueを通知するようにしました(enable_tool_list_changed、enable_resources_list_changed、enable_resources_subscribe、enable_prompts_list_changed)。アクティブな MCP stdio セッションは、上流サーバーのマウント/アンマウント時や、設定/エイリアスの変更時にリアルタイムの JSON-RPC 通知を受け取ります。 - SEP-1319 メタデータディスカバリーヒント(
src/mcp_server.rs):notifications/tools/list_changedにio.warmplane/discovery_hintメタデータペイロードを挿入し、ツールスキーマのトークンコストを継続的に発生させずにバックエンド機能を検出できるよう、エージェントにcapabilities_listの実行を促します。 - トップレベルネイティブツールのパススルー(
src/config.rs、src/mcp_server.rs、src/cli_config.rs): 機能エイリアス(passthrough: true)を、tools/listで直接エクスポートされるトップレベルのネイティブツールに昇格させました。MCP の厳格な名前のサニタイズ(^[a-zA-Z0-9_-]{1,64}$)と直接ディスパッチ解決を使用します。 - 動的な変更に対する WORM 監査証跡(
src/daemon/lifecycle.rs、src/http_v1/config_api.rs): サーバーのマウント/アンマウント、エイリアスの変更、セキュリティポリシーの更新、プロファイル設定の変更を対象に、改ざんを検知できる SHA-256 ハッシュチェーン付きのAuditEventType::ConfigMutation監査レコードを追加しました。 - 対話型エイリアス管理 UI(
ui/src/components/aliases.ts、ui/src/main.ts): Control Deck の Web UI に、クリックして編集できるエイリアス行、パススルー切り替え用のピル型バッジ、入力のサニタイズを追加しました。
v0.27.0 — カスタムエイリアスの説明、コンパクトな LLM ツールシグネチャ、タスクインスペクター
- カスタムエイリアスの説明とドックストリングのオーバーライド(
src/config.rs、src/supervisor.rs): エイリアス設定モデルを拡張し、多相的な定義(AliasTarget)に対応しました。エイリアスには単純なターゲット文字列("alias": "server.tool")または詳細なオブジェクト("alias": { "target": "server.tool", "summary": "...", "description": "..." })を指定できます。これにより、プラットフォームエンジニアや開発者は、上流のソースコードを変更することなく、説明が不十分な上流ツールを修正または改善し、LLM でのゼロショット利用を容易にできます。 - コンパクトな LLM ツールシグネチャ(
src/supervisor.rs、src/daemon/types.rs、src/engine/types.rs): JSON Schema から決定的でコンパクトなパラメーターシグネチャ(tool_name(req1, [opt1], [opt2]))を導出します。必須フィールドと nullable/任意のプロパティを考慮します。MCP のcapabilities_list、カタログ検索、Web UI のインデックス概要に表示します。 - 双方向のエイリアス解決(
src/supervisor.rs): エイリアスキーに対してターゲットの一致を確認する監督側のディスカバリーチェックで発生していたマッピングの不一致を解消し、正規ターゲットをクライアントインターフェースにシームレスに昇格できるようにしました。 - 高機能なタスクインスペクターモーダルとデュアル操作(
ui/src/components/tasks.ts): タスクと承認の UI を強化し、専用のインスペクターモーダル、ライブ状態ビューアー、整形された JSON ペイロードの検査、検査/キャンセルのデュアル操作を追加しました。 - サーバーテンプレートの未設定シークレット警告(
ui/src/components/servers.ts、src/vault/): 必須のテンプレート環境変数または Keychain シークレットが未設定の場合に、サーバーカードと診断画面にライブの(Missing Keys)警告バッジとステータスインジケーターを表示するようにしました。 - ライブエイリアス設定 API と UI: Control Deck のエイリアスタブ(
ui/src/components/aliases.ts)と CLI(warmplane config alias set --summary ...)にカスタム概要の入力欄を追加し、ディスク上の変更時に自動でライブのホットリロード調整を行うようにしました。
v0.26.1 — MCP Stdio ストリームの分離とログ記録の修正
- MCP Stdio ストリームの分離(
src/telemetry.rs):tracing_subscriber::fmt::layer()がstderrに書き込むよう設定しました(.with_writer(std::io::stderr))。実行時の構造化 JSON ログとスパン診断情報がstdoutに混入するのを防ぎます。 - 上流プロセスの Stderr 継承(
src/supervisor.rs): 上流の stdio 子プロセスが Warmplane の標準エラーを明示的に継承するようになりました(cmd.stderr(std::process::Stdio::inherit()))。Memory サーバーや Filesystem サーバーなどの上流サーバーの起動バナーが、stdio JSON-RPC セッションに漏れ出すのを防ぎます。 - クライアントプロトコルの信頼性: AI エージェントや IDE から、Warmplane を stdio サーバーモード(
warmplane mcp-server)で実行した際の JSON-RPC 初期化エラー(invalid message version tag ""; expected "2.0")を解消しました。
v0.26.0 — AI クライアントのワンクリック同期、ネイティブのシークレット保管庫、ChatOps とプロファイルガバナンス
- AI クライアントのワンクリックインジェクターとエコシステム同期(
src/client_sync.rs): 設定不要の双方向 MCP アダプターエンジンです。Claude Desktop(macOS、Linux、Windows)、OpenCode、Claude Code CLI(CLAUDE_CONFIG_DIR)、Cursor(グローバルおよびワークスペース)、Zed Editor(context_servers)、Windsurf、Roo Code / Cline において、プロファイルに関連付けられた Warmplane プロキシ設定を検出、挿入、切り離しします。 - 100%のエージェント設定インポート互換性(
src/config_import.rs): 方言を認識するパーサー(StandardMcpServers、OpenCode のmcp、Zed のcontext_servers)とセルフプロキシ保護を備えた、統合外部設定検出機能です。 - ネイティブ OS キーチェーン保管庫と動的シークレット(
src/vault/): OS レベルの安全な認証情報管理(warmplane secret set/get/delete)と、環境変数内の動的な実行時シークレット展開(keychain://、op://、env://)を追加しました。ログでは値をマスキングします。 - 実用的な ChatOps と双方向 Webhook(
src/chatops/): HMAC-SHA256 署名検証を備えた、Slack(Block Kit)、Discord(Embeds)、Microsoft Teams(Adaptive Cards)向けのリッチな対話型承認カードです。 - プロファイルごとのガバナンスポリシー(
src/policy.rs、ui/src/components/policy.ts): グローバルポリシーを上書き、または適用範囲を限定する、プロファイルごとのきめ細かなallow、deny、requireApprovalルールです。 - コンステレーションの境界と動的な可視性(
ui/src/components/servers.ts): コンステレーションの状態を示す視覚的なバッジ(✔ IN CONSTELLATION、🚫 EXCLUDED FROM PROFILE)、自動導出される<server>.*の暗黙的なポリシー拒否、ワンクリックのメンバーシップ切り替え機能です。 - サーバー診断とワンクリック再起動: ライブエラー診断モーダル、サーバー再起動エンドポイント(
POST /v1/config/servers/:id/restart)、全25種類の MCP サーバーテンプレートを対象とした自動スモークテストスイート(scripts/test-templates.ts)を追加しました。 - 動的カタログの ETag フィンガープリントとレイアウトの安定化: プロファイルを考慮したフィンガープリントのハッシュ化(
sha256:...-p:<profile_id>:<hash>)により、ETag を即座に無効化し、プレイグラウンドのカタログを再設定できます。スクロールバー用の余白を常時確保し、ビューポートのレイアウトを安定化しました。
v0.25.2 — MCP レジストリ公式メタデータと MCPB パッケージ形式
- MCPB 配布形式(
packaging/mcpb/、.github/workflows/release-artifacts.yml): スタンドアロンバイナリ、ブートストラップ設定、標準化されたマニフェスト(manifest_version: "0.3")を含む、プラットフォーム固有の Model Context Protocol Bundle(.mcpb)を自動ビルドしてパッケージ化する機能を追加しました。 - MCP レジストリ公式メタデータ(
server.json): リリースワークフローで、公式のserver.schema.json仕様(io.github.warmplane/warmplane)に準拠した標準レジストリメタデータを、複数アーキテクチャの SHA-256 パッケージダイジェストとともに自動生成するようになりました。 - Homebrew Tap(
Warmplane/homebrew-tap): macOS および Linux 向けのビルド済み Formula を提供する公式 Tap 配布を設定しました(brew tap warmplane/tap && brew install warmplane)。
v0.25.1 — 非同期タスク完了ステートマシンの修正
- 非同期タスクの完了処理(
src/engine/mod.rs、src/http_v1/execute.rs): 非同期機能の実行(async_task: trueまたはPrefer: respond-async)や、Human-in-the-Loop(HITL)入力への応答後に再開されたタスクが、TaskStatus::Workingのまま無期限に残るリグレッションを解消しました。バックグラウンドワーカーが、終端状態(resultを伴うTaskStatus::Completed、または構造化エラーを伴うTaskStatus::Failed)をTaskRegistryに直接、確実に記録するようになりました。 - 埋め込みタスクのライフサイクルテスト(
tests/embedded_tests.rs、tests/tasks_tests.rs): 承認の送信後および非同期呼び出し後に、get_taskとlist_tasksで上流のペイロードを伴う終端状態completedを確認できることを検証する、包括的な自動統合テストを追加しました。
v0.25.0 — Control Deck のタスクと HITL UI、プロセス内の埋め込みタスク API
- Control Deck のタスクと承認ハブ(
ui/src/components/tasks.ts): レビューキューを、ライブステータス KPI(input_required、working、completed、cancelled/failed)、MRTR 入力解決フォーム(ブール値、JSON エディター、テキストフィールド)をインライン表示するインタラクティブなアクションカード、TTL カウントダウンタイマー、協調的キャンセル機能を備えた、統合型の Tasks & Approvals ダッシュボード(data-tab="tasks")にアップグレードしました。 - MCP Playground の非同期実行モード: ツールテスト用 Playground に 「⚡ Async Task Mode」 トグルを追加し、Tasks & Approvals のレビューデッキへワンクリックで移動できる、インタラクティブな
202 Acceptedタスクカードのプレビューを追加しました。 - 埋め込み Rust タスク管理 API(
ControlPlaneHandle): プロセス内のControlPlaneHandleにタスク管理メソッド(list_tasks、get_task、update_task、cancel_task)を直接公開し、埋め込みアプリケーションが HTTP や JSON-RPC のシリアライズによるオーバーヘッドなしで、非同期 SEP-2663 タスクを管理できるようにしました。 - 概要コックピットとバッジの連携: 概要コックピットに 「Tasks & HITL State」 テレメトリーカードを追加し、保留中の
input_requiredタスクにリアルタイムのサイドバッジを連携させました。
v0.24.0 — SEP-2663 タスク拡張、HITL 実行の統合、MCP ロードマップとの整合
- SEP-2663 タスク拡張の実装(
src/tasks.rs): 原子的な永続ストレージ(tasks.json)、安全な TTL 有効期限検出、oneshot 入力応答チャネル(TaskWaitSender/TaskWaitReceiver)を備えた、公式のio.modelcontextprotocol/tasks機能を実装しました。 - 統合された HITL 承認と非同期タスクのステートマシン: Human-in-the-Loop 承認ワークフローと非同期ツール実行を、SEP-2663 のライフサイクルに直接統合しました。オペレーターによるゲート承認が必要なツール実行、または
async_task: true/Prefer: respond-asyncが指定された実行は、202 AcceptedとresultType: "task"、status: "input_required"を返し、MRTRinputRequestsをインラインで含めます。 - HTTP REST タスク API(
/v1/tasks/*): タスクの確認と制御に対応する包括的な REST エンドポイントを追加しました。GET /v1/tasks(一覧表示)、GET /v1/tasks/:id(ステータス/結果のポーリング)、POST /v1/tasks/:id/update(ワーカーを再開するためのinputResponsesの送信)、POST /v1/tasks/:id/cancel(協調的キャンセル)。 - MCP ファサードサーバーとの統合: MCP ファサードサーバーに
task_get、task_update、task_cancelツールを公開し、エージェントが直接オーケストレーションできるようにしました。 - CLI のタスクサブコマンドと非同期実行フラグ:
warmplane tasks list、warmplane tasks get <id>、warmplane tasks update <id> -r '<json>'、warmplane tasks cancel <id>と、warmplane call-capabilityの--async-taskフラグを追加しました。 - MCP プロトコルのロードマップに関する戦略分析: 公式 MCP ロードマップを分析し、ステートレスなトランスポート、セッションレスなルーティング、段階的な機能検出における Warmplane のアーキテクチャとの整合性を評価した
docs/MCP_ROADMAP_REPORT.mdを公開しました。
v0.23.0 — 組み込み Rust エンジン、インプロセス制御プレーン、ファサードアダプターのリファクタリング
- インプロセス組み込み Rust ライブラリエンジン(
EmbeddedWarmplane、ControlPlaneHandle): HTTP、デーモンの子プロセス、JSON-RPC のシリアライズによるオーバーヘッドなしで、Warmplane を純粋なインプロセスライブラリとして公開しました。呼び出し元は、独自の Tokio ランタイム上でEmbeddedWarmplane::start(config)またはEmbeddedWarmplane::start_from_path(path)を使ってエンジンを直接起動し、型付きのControlPlaneHandleメソッド(list_capabilities、describe_capability、search_capabilities、call_capability、batch_call、read_resource、get_prompt、health_status)を通じて操作できます。 - 強い型付けを備えた汎用エンベロープとエラーモデル:
warmplane::engine::typesにEnvelope<T>、WarmplaneError、CapabilitySummary、CapabilityDetail、ExecutionOptions、ReadResourceOptions、GetPromptOptions、EngineHealthStatusを追加し、プログラムによるオーケストレーションのために構造化された診断情報(request_id、trace_id、retry、operator)を保持します。 - MCP Stdio サーバーファサードアダプターのリファクタリング:
mcp_server.rsをリファクタリングし、すべてのツール呼び出しの実行、検索、説明、バッチ実行、リソース/プロンプトのディスパッチをControlPlaneHandleに直接委譲することで、ロジックの重複を解消し、実行パイプラインを統一しました。 - 組み込みエンジンの統合テストスイート:
tests/embedded_tests.rsに専用の統合テストを追加し、組み込みエンジンのライフサイクル起動、縮退状態のサーバー処理、ヘルスステータスの確認、正常なキャンセルを対象としました。
v0.22.0 — ストリーミング可能な HTTP/SSE MCP トランスポート、対話型プレイグラウンド、UI の磨き上げ
- ストリーミング可能な HTTP/SSE MCP サーバートランスポート(
mcp-http-server): スタンドアロンおよびデーモンとの共ホストに対応した HTTP/SSE MCP サーバーエンドポイント(/mcp/sse、/mcp/messages)を構築しました。これにより、リモートの AI エージェントや IDE(Cursor、Windsurf、Claude Desktop)が、標準的な HTTP/SSE ネットワーク経由で、自動キープアライブとクライアント側の変更不要で接続できます。 - デーモンとの共ホストと設定(
mcpHttpServer):mcpHttpServerによる一級の設定サポートを追加し、コアの/v1HTTP デーモンと並行して HTTP/SSE MCP サーバーインスタンスを自動的にバックグラウンドで初期化できるようにしました。 - プロファイル制限と認証ゲートの適用: MCP サーバートランスポートにプロファイル制限(
profile)を統合し、リモートクライアントに公開するツールとリソースを厳密に分離しました。パブリックなループバック以外のネットワークインターフェース(0.0.0.0/外部 IP)にバインドする場合、ベアラートークン認証を自動的に適用します。 - 対話型 MCP プレイグラウンドの使いやすさ向上: Web Control Deck MCP Playground に、サンプルテンプレートの挿入、動的な形式の切り替え、スキーマに基づく引数の生成、リアルタイムのパラメーター検証を追加しました。
- UI のトランジション、衝突チェック、磨き上げ: ダッシュボードのタブ間でページヘッダーの重複を解消し、滑らかな CSS cubic-bezier トランジションを導入しました。また、
prefers-reduced-motionのアクセシビリティサポートを備えたモーダル背景のアニメーションを追加し、衝突を防ぐガードとサーバー ID の自動一意化も追加しました。
v0.21.0 — 名前付きサーバーコンステレーション(プロファイル)、シグナルのライフサイクル、インテグレーターエコシステム
- 名前付きサーバーコンステレーション(プロファイル): ファーストクラスのプロファイルサポート(
ProfileConfig)を追加し、タスクに関連する上流 MCP サーバーのサブセットを名前付きコンステレーション(例:coding、research、data_science)にグループ化できるようになりました。 - 動的なプロファイル選択とスコープ別 ETag パーティショニング:
X-Warmplane-Profileヘッダーと?profile=クエリパラメーターによる、リクエストごとのプロファイルスコープ指定をサポートしました。カタログエンドポイント(/v1/capabilities、/v1/resources、/v1/prompts)と検索(/v1/capabilities/search)では、アクティブなプロファイルの範囲外にある項目が動的に除外され、プロファイルごとに決定論的にパーティション化された ETag(sha256:...-p:<profile_id>)が維持されます。 - MCP Facade の Stdio プロファイルフィルタリング:
warmplane mcp-serverとwarmplane list-capabilitiesに--profile <name>CLI オプションを追加し、エージェントホストに厳密にスコープされた MCP ツールとリソースの一覧を提供できるようになりました。 - Web Control Deck のプロファイルハブ: Web UI ダッシュボードにインタラクティブなビジュアルプロファイルマネージャーを追加しました。ワンクリックでのアクティブなコンステレーションの切り替え、サーバーの切り替え、カタログのライブフィルタリングが可能です。
- シグナル処理とプロセス終了の堅牢化:
SIGINT(Ctrl-C)/SIGTERMでtokio_util::sync::CancellationTokenを即時にディスパッチする処理を統合し、SSE ストリームのドレインを妨げる問題を解消しました。また、kill_on_drop(true)による子プロセスの孤立防止を追加し、3 秒の上限付き安全シャットダウンタイムアウトを適用しました。 - 開発者およびインテグレーター向けガイド: 公式の Rust インテグレーターガイド、TypeScript インテグレーターガイド、冪等性アーキテクチャに関する記事を公開しました。
v0.20.0 — マルチテナント RBAC と決定論的なカタログパーティショニング
- マルチテナント RBAC エンジン(
src/rbac): 静的 API トークン、設定内のトークンとロールのマッピング(rbac.tokens)、および設定可能な秘密鍵(rbac.jwt_secret)を使った暗号学的な HMAC-SHA256 対称 JWT 署名検証をサポートする、ロールベースのアクセス制御エンジンを構築しました。 - 決定論的なカタログパーティショニングとスコープに基づく除外:
/v1/capabilities、/v1/resources、/v1/prompts、/v1/capabilities/searchを再構成し、呼び出し元のロールと有効なポリシーに基づいて項目を動的にフィルタリングするようにしました。権限のない項目は、カタログ一覧や検索クエリに一切表示されません。 - テナントコンテキストの注入と否認防止監査: RBAC ガードミドルウェア(
src/rbac/middleware.rs)を介して、解決済みのTenantContext(tenant_id、role、actor_id、grant_id、effective_policy)をリクエストのエクステンションに注入しました。検証済みのテナント/アクターメタデータは、WORM 監査イベントに自動的に紐付けられます。 - ロールポリシーのオーバーライドと HITL 委任: カスタムの
allow、deny、require_approval、redact_keysルールを備えたきめ細かなロール定義(RolePolicyConfig)をサポートし、基本システムポリシーをオーバーライドまたは組み合わせられるようにしました。 - 統合テストスイート: トークン認証、検索フィルタリング、カタログの分離、ポリシー境界の適用、マルチテナント監査の検証を網羅する、専用の RBAC 統合テスト(
tests/rbac_integration.rs)を追加しました。
v0.19.0 — クライアント委任型 MCP サンプリング、HTTP/SSE スーパーバイザーループ、堅牢性の強化
- クライアント委任型 MCP サンプリング(
sampling/createMessage): クライアント委任型の LLM 補完リバース RPC 処理(src/sampling.rs)を実装しました。上流サーバーまたはエージェントがサンプリングリクエストを送信すると、追跡対象のチケット(samp_<timestamp>_<seq>)が生成され、同期ロングポーリング、または非同期ライフサイクルエンドポイント(POST /v1/sampling/create_message、GET /v1/sampling/requests、GET /v1/sampling/requests/:id、POST /v1/sampling/requests/:id/respond)を利用できます。 - サンプリング状態の永続化:
AtomicFile<HashMap<String, PendingSamplingRequest>>を使用した、原子的で再起動に耐えるディスクストレージ(sampling.json)を追加し、自動有効期限切れ回収タスクを実装しました。 - 自己修復型 Streamable HTTP/SSE スーパーバイザー: リモート HTTP/SSE MCP サーバーをスーパーバイザーループに統合し、自動再接続バックオフ、カタログの調整、起動状態の劣化レポートを実装しました。
- セキュリティと DoS 対策の強化: セマンティックベクトル検索用の候補機能埋め込みを
MAX_VECTOR_SEARCH_CANDIDATES = 250に制限し、監査ログのエクスポートクエリをMAX_IN_MEMORY_AUDIT_EVENTS(20,000)に制限しました。また、OAuth プロキシリクエストに対して Host ヘッダーとループバック Origin のチェックを適用しました。 - CI ゲートと TypeScript 型チェック: Web UI の CI パイプラインに TypeScript の自動型チェック(
tsc --noEmit)を追加し、重複実行をなくすため、プッシュのトリガーをmainに限定しました。 - 実践的な Rust 準拠: 51 個すべてのソースファイルで、標準準拠ヘッダー(
// Rust guideline compliant YYYY-MM-DD)への準拠率 100% を達成しました。
v0.18.0 — 状態永続化サブシステム、グレースフルな終了処理、CI による UI 自動化、E2E テストスイート
- 状態永続化サブシステム: Human-in-the-Loop の保留中の承認(
approvals.json)、冪等な実行記録(idempotency.json)、OAuth2 トークン(oauth_tokens.json)、カタログ変更イベント(catalog_events.json)用に、原子的で再起動に耐えるディスクストレージ(AtomicFile<T>とStateDirectory)を追加しました。McpConfigにstateブロックを追加し、warmplane config state show/setCLI コマンドを実装しました。 - グレースフルなシグナル処理とサブシステムの終了処理: Unix および Windows で
SIGINT(Ctrl+C)とSIGTERMシグナルを堅牢に捕捉し、HTTP サーバーのグレースフルな処理終了、非同期監査ワーカーのフラッシュ(AuditWorkerMsg::FlushAndShutdown)、シャットダウン時の stdio サブプロセスの正常終了を実装しました。 - 実践的な Rust 準拠: 51 個すべてのソースファイルで、標準準拠ヘッダー(
// Rust guideline compliant YYYY-MM-DD)への準拠率 100% を達成しました。 - CI による Web UI ビルドの自動化と差分ゲート: GitHub Actions CI(
ci.yml)とリリースパイプライン(release-artifacts.yml)に Bun を統合し、自動ビルド手順と、厳密なgit diff --exit-code ui/dist/index.htmlによる差分検出を追加しました。 - 包括的なエンドツーエンド統合テストスイート: stdio MCP プロトコルのハンドシェイク、ライブ TCP SSE ストリーミング、設定のホットリロード、サイレントな 401 トークン更新を伴うモック OAuth2 RFC 8414 プロバイダーとの往復処理、スーパーバイザーの復旧を実行する専用 E2E テストハーネス(
tests/e2e_tests.rs)を実装しました。
v0.17.0 — 360° MCP エクスプローラー、ビジュアル一括パイプラインビルダー、WORM 監査ページネーション
- WORM 監査の複数フィールド検索とページネーション: 11 個のメタデータフィールドを対象とする大文字・小文字を区別しない部分文字列検索、結果ステータスとサーバーによるフィルタリング、オフセット/上限によるページネーションの切り出し(
/v1/audit/events)、コンテキストを考慮した CSV および JSONL のエクスポートダウンロード(/v1/audit/export)を追加しました。 - MCP リソースエクスプローラーとライブコンテンツリーダー: プロトコルスキームのバッジ(
file://、postgres://、github://、memory://、sqlite://など)、メタデータ/MIME ビューアー、コンテキストの蒸留に対応したライブコンテンツリーダー(_jsonpath、_limit_lines、_truncate_bytes)を備えた、360°のリソース探索ブラウザーを追加しました。 - MCP プロンプトテンプレートスタジオ:
REQUIRED検証バッジ付きの動的なプロンプトテンプレートの閲覧と引数フォームの生成、解決済みのシステム/ユーザープロンプトエンベロープのレンダリング(/v1/prompts/get)を追加しました。 - 実行中の操作のキャンセル: ライブ実行タイマーと即時の協調的な中断機能を備えた、対話型 UI の実行キャンセルコントロール(
POST /v1/operations/:id/cancel)を追加しました。 - ビジュアル複数ステップ一括パイプラインビルダー: パラメーターの変数補間(
${steps[0].result.id})とノードごとのフォールトトレランスを備え、ツールを連結する対話型モーダルパイプラインエディター(POST /v1/tools/batch_call)を追加しました。 - リアルタイム SSE 状態同期:
/v1/resources/updatesSSE ストリームを接続し、Control Deck 上のリソース、プロンプト、カタログフィードを自動的に更新するようにしました。
v0.16.0 — エンタープライズセキュリティの強化、監査の暗号学的完全性、ライフサイクルのレジリエンス
- API トークン認証とミドルウェアによる保護: デーモンのエンドポイントを Bearer/X-Warmplane-Key 認証で安全に保護するため、
--auth-tokenCLI パラメーター、McpConfig.auth_token設定フィールド、WARMPLANE_AUTH_TOKEN環境変数のサポートを追加しました。 - OAuth プロキシのセキュリティとシークレットのマスキング: Host 検証とクロスオリジンブラウザーのブロックにより OAuth プロキシリスナーを強化し、ログ出力内の
stateと PKCEcode_challengeのシークレットをマスキングしました。 - 暗号学的 WORM 監査の完全性と HMAC 署名: ハッシュチェーンのダイジェストに、永続化される 20 個すべてのメタデータフィールド(
work_item_id、client_ip、resource_uri、execution_latency_us、error_message)を含めました。また、外部での暗号学的アンカリングに使う HMAC-SHA256 キーダイジェストの計算とチェックポイント生成を追加しました。 - シークレットのサニタイズと秘匿化: 組み込みのデフォルト機密キーリスト(
token、secret、password、key、authorizationなど)を使用して、大文字・小文字を区別しない秘匿化マッチングを強化しました。外部 HITL Webhook イベントで送信するデータをsanitized_argsのみに制限し、CLI コマンドで出力する前にシークレットをサニタイズするようにしました。 - スーパーバイザーとサーキットブレーカーの連携: スーパーバイザーの再接続成功時にサーキットブレーカーを自動でリセットし、
HalfOpenサーキットブレーカー状態でのプローブを単一実行に制限しました。また、60 秒のスライディングウィンドウによる再起動バックオフを実装し、カタログの調整時に削除済みアイテムを整理し、サーバーのアンマウント時にサーキットブレーカーをクリーンアップするようにしました。 - リソース上限と安全制御:
MAX_BATCH_STEPS = 50およびDEFAULT_BATCH_TIMEOUT_MS = 60_000の実行予算を適用し、ワイルドカード JSONPath の出力展開を 10,000 件、検索結果を 100 件に制限しました。また、未知の操作のキャンセルに対してPOLICY_DENIED(HTTP 403)および 404 を返し、CSV 監査エクスポートを数式インジェクションから保護するためにサニタイズするようにしました。 - CI 品質ゲートと依存関係の監査: GitHub Actions CI にネイティブの
cargo-auditスキャンを統合し、報告されたすべての勧告に対処するよう依存関係を更新しました。 - CLI バージョンフラグ:
warmplaneバイナリパーサーで標準の--versionフラグと-Vフラグを有効にしました。
v0.15.0 — フォールトトレランス、起動時の耐障害性、Control Deck の機能同等性
- 起動時の耐障害性と縮退起動: 上流サーバー(Docker、リモート SSE エンドポイント、未設定のツールなど)の障害やタイムアウトが発生しても、デーモンを正常に起動できます。障害が発生したサーバーには
degradedのフラグが付けられ、デーモンがクラッシュしたり、他の正常な上流サーバーがブロックされたりすることはありません。 - プロセススーパーバイザーとサーキットブレーカー: サーバーごとおよびグローバルなサーキットブレーカー(
failureThreshold、cooldownMs、autoRestart、maxRestarts)に対応しました。状態(CLOSED、OPEN、HALF-OPEN)を追跡し、指数バックオフによる再起動を監視します。 - Web UI の全機能を同等化:
- サーバーハブ:サーバーカードの編集ワークフロー(
✏️ Edit)、サーキットブレーカーのリアルタイムテレメトリーバッジ、サーバーの耐障害性インジケーター。 - テンプレートウィザード:1クリックで設定できる厳選サーバーセットアップに、フォールトトレランスとスーパーバイザーの設定を直接行えるアコーディオンを追加しました。
- インタラクティブプレイグラウンド:コンテキスト蒸留コントロール(
_jsonpath、_limit_lines、_truncate_bytes)と実行レイテンシーの測定機能。 - レスポンシブな Bento グリッド概要カードに、リアルタイムのヘルスインジケーター(
connected🟢、degraded🟡、error🔴)を追加しました。
- サーバーハブ:サーバーカードの編集ワークフロー(
- CLI の耐障害性設定: ヘッドレス環境でサーキットブレーカーを管理するための
warmplane config resilience setとwarmplane config resilience showを追加しました。
v0.14.0 — エージェント拡張スイート:ファサード検索、コンテキスト蒸留、複数ステップのバッチ処理
- MCP ファサードのハイブリッド検索: キーワード、タグ、サーバー ID、実行モードによるフィルターに対応する
capability_searchツールを、MCP stdio ファサード経由で公開しました。 - コンテキストの蒸留と切り詰め: 大きすぎる出力によって LLM のコンテキストウィンドウが圧迫されるのを防ぐため、
/v1/tools/callとcapability_callに_jsonpath、_limit_lines、_truncate_bytes修飾子を追加しました。 - 複数ステップの連鎖バッチ呼び出し:
$step.field参照の補間を使用し、依存関係のあるツールを1回のラウンドトリップで実行するPOST /v1/tools/batch_callとcapabilities_batch_callを追加しました。
v0.13.0 — Human-in-the-Loop(HITL)承認エンジンと署名付き Webhook
- 承認インターセプター: ポリシーに基づいて、機微な機能呼び出し(
requireApproval)を一時停止します。 - オペレーター REST API: 承認の一覧表示(
/v1/approvals)、詳細確認、引数を変更したうえでの承認(/v1/approvals/:id/approve)、または却下(/v1/approvals/:id/reject)を行うエンドポイントを追加しました。 - HMAC 署名付き Webhook: 承認のライフサイクルイベント時に、SHA-256 HMAC 署名ヘッダーを含む Webhook をリアルタイムで送信します。
- 設定可能な TTL 有効期限: 自動タイムアウト(
approvalTimeoutSecs)により、有効期限が切れた承認に対して構造化されたキャンセルエンベロープを返します。
v0.12.0 — 暗号学的 WORM 監査ログと SIEM ストリーミング
- ツール実行イベントと HITL 判断イベントを対象に、追記専用の線形 SHA-256 ハッシュチェーンを実装しました。
- 監査の検証およびエクスポート用エンドポイント(
/v1/audit/...)、Splunk HEC、汎用 Webhook の取り込みに対応しました。
v0.11.0 — Control Deck Web UI と動的な上流サーバーのホットリロード
- Control Deck Web UI:
/uiと/で利用できる、依存関係のない組み込み Web ダッシュボードを追加しました。リアルタイムテレメトリー、サーバーマネージャー、インタラクティブなツールプレイグラウンド、ポリシー/リダクションマネージャー、エイリアスレジストリーを備えています。 - ダウンタイムなしの動的な上流サーバーのマウント: デーモンプロセスを再起動せずに、REST/UI/CLI 経由で stdio、HTTP、OAuth2 の上流ワーカーを動的にマウントおよびアンマウントできます。
- 動的カタログと ETag: サーバーの変更時に SHA256 ETag を自動的に再計算し、SSE リソース通知を送信する、並行処理に安全な状態管理を追加しました。
- 明示的な設定のホットリロード:
mcp_servers.jsonの手動編集内容をメモリー内のワーカーに適切に反映するwarmplane reloadCLI コマンドとPOST /v1/config/reloadエンドポイントを追加しました。
v0.10.0 — CLI 設定管理とエコシステムのインポーター
warmplane server(add、remove、list、get、test)コマンドを追加しました。対話型のinquireウィザードと、フラグによるヘッドレス自動化に対応しています。- 安全でトランザクション性のある設定変更を行う
warmplane config(init、show、import、alias、policy)を追加しました。 - Claude Desktop、Cursor、Zed の設定を自動検出してインポートする機能を追加しました。
- JSON の破損を防ぐ、アトミックな設定ファイル書き込み(
fs::rename)を追加しました。
v0.9.0 — MCP 2026-07-28 仕様への準拠、MRTR、サブスクリプション
- 公式の MCP Rust SDK
rmcp 3.1.2およびreqwest 0.13にアップグレードしました。 - デフォルトのプロトコルバージョンを
"2026-07-28"に設定し、"2025-11-25"との後方互換性を維持しました。 - HTTP REST、stdio ファサード、アップストリームワーカー全体で、Multi Round-Trip Requests(MRTR)への対応(
input_responsesとrequest_state)を追加しました。 - キャッシュヒント(
ttl_ms: 300000、cache_scope: "public")と、カタログ一覧の決定的なアルファベット順ソートを追加しました。 - stdio ファサードに
subscriptions_listenツールを、リアルタイム通知用に/v1/resources/updatesSSE ストリームを追加しました。 - OAuth 2.0 フローにおける RFC 9207 / SEP-2468
issコールバック検証を検証しました。
v0.8.0 — セマンティックベクトル埋め込みと FastEmbed ONNX パイプライン
- オプションの
--features semantic-searchのもとで、高密度コサインベクトル類似度を用いる FastEmbed ONNX 埋め込みパイプラインを統合しました。 - BM25 キーワードマッチングと高密度ベクトル検索を組み合わせる、ハイブリッド逆順位融合を追加しました。
v0.7.0 — 実用的な Rust のモダナイズとビルダーパターン
Microsoft の Pragmatic Rust Guidelines(AGENTS.md)を全面的に採用しました。コア状態(AppStateBuilder)、検索フィルター(SearchFilterBuilder)、リクエストコンテキスト(RequestContextBuilder)に Builder Pattern(M-INIT-BUILDER)を実装しました。エラー安全性(M-PANIC-IS-STOP)、構造化ログ(M-LOG-STRUCTURED)、標準ドキュメント(M-CANONICAL-DOCS)、柔軟なトレイト相互運用性(M-IMPL-ASREF)を強化しました。
v0.6.0 — 冪等性、キャンセル、再試行メタデータ
並行するツール呼び出しを重複排除するため、Idempotency-Key / X-Idempotency-Key を渡します。キャンセルエンドポイントまたは CLI を使って、進行中のリクエストを中止できます。すべてのレスポンスエンベロープに、オーケストレーターを考慮した再試行ロジック用の構造化された "retry" メタデータ(classification + state)が含まれるようになりました。
v0.5.0 — リクエストコンテキストと相関
構造化された RequestContext(operation_id、work_item_id、actor_id、grant_id)を、すべての実行エンベロープとトレーシングスパンに引き継ぐようにしました。HTTP ヘッダーによるフォールバック(X-Request-ID、X-Operation-ID、X-Actor-ID、X-Grant-ID)にも対応しています。
v0.4.0 — カタログのバージョン管理とキャッシュ検証
SHA-256 によるカタログバージョンを追加しました。すべてのカタログ読み取りに ETag ヘッダーを付与し、If-None-Match 条件付きリクエストでは 304 Not Modified を返します。カーソルベースのページネーションを使う変更フィード GET /v1/catalog/events を追加しました。
v0.3.0 — ハイブリッド検索
BM25 スコアリング、オプションの FastEmbed ベクトル埋め込み、タグ/サーバー ID フィルター、ランク付けされた結果を備えた POST /v1/capabilities/search。
BM25 スコアリング、オプションの FastEmbed ベクトル埋め込み、タグ/サーバー ID フィルター、ランク付けされた結果を備えた POST /v1/capabilities/search。
ドキュメント
| ドキュメント | 説明 |
|---|---|
| docs/USER-GUIDE.md | 完全な使用ガイド:設定、モード、すべての CLI コマンド、認証、ポリシー |
| docs/PERFORMANCE.md | ベンチマーク手法、レイテンシのパーセンタイル、プロファイリング結果 |
| docs/openapi.yaml | OpenAPI 3.1 仕様 |
| docs/config.schema.json | mcp_servers.json 用 JSON Schema |
| docs/OBSERVABILITY.md | 構造化ログ、OTLP 設定、トレース相関 |
| docs/INSTALL.md | ビルドのバリエーション、配布に関する注意事項 |
| docs/DEPLOYMENT.md | 本番環境へのデプロイ手順書 |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。