GaugeMesh について
GaugeMeshは、明示されたID、ポリシー、予算、期限の制約下でMCP機能とモデルリクエストをルーティングする、ローカル優先のRustゲートウェイです。ソースごとの機能IDを保ち、決定的なルート選択の根拠を確認できます。
主な機能
- 01ポリシーと予算に基づく決定的なモデルルーティング
- 02IDに結び付いた機能リース
- 03MCP stdioとStreamable HTTP
- 04OpenAI互換モデルAPIの一部
- 05ルート判断のオフライン検証
活用シーン
- 01コストと期限の範囲内でモデルリクエストをルーティング
- 02複数のMCPソースを単一エンドポイントで公開
- 03候補ルートが拒否された理由を調査
MCP 対応
GaugeMeshはクライアント向けのMCPサーバーとして動作し、上流の設定済みサーバーにはMCPクライアントとして接続します。検出したツール、リソース、プロンプトを提供し、ソースに結び付いたIDを保ちながら、レビュー済みの機能スナップショットを適用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/aliengineering-byte/gaugemesh@sha256:69f3ccb7c2fdcd9b6897c99eba22d18be1384957bb2dbdf760f8273ee2e43189ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/aliengineering-byte/gaugemesh@sha256:69f3ccb7c2fdcd9b6897c99eba22d18be1384957bb2dbdf760f8273ee2e43189stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GaugeMesh
MCP 機能とモデルルートのための単一エンドポイントです。プロトコル間でアイデンティティ、権限、予算、期限、副作用のセマンティクス、因果関係の証拠が失われることはありません。
GaugeMesh は、ローカルファーストの Rust 開発者向けプレビューです。汎用 AI ゲートウェイよりも意図的に対象を絞っており、すべてのアダプターは宣言された不変条件を維持するか、副作用が発生する前に操作を拒否する必要があります。ルート選択は固定小数点方式で、決定論的かつ説明可能です。基本のデプロイはメモリまたは SQLite を使う単一バイナリで、ホスト型コントロールプレーン、Redis、PostgreSQL、Docker、Kubernetes は不要です。
Rust を使わずに、チェックサムとアテステーション付きの
GitHub Releaseからインストールするか、マルチアーキテクチャ対応の GHCR イメージを実行できます。Crates.io は GaugeMesh の配布チャネルではありません。実際の stdio MCP サーバーは gaugemesh mcp-stdio です。Official MCP Registry のメタデータは server.json としてリポジトリに含まれています。
ソースツリーには、オプトインの有界な永続 Runsも用意されています。既存の Tasks に対する呼び出し元作成の計画、検証済みのファイル結果、明示的な再開/キャンセル、オフラインでの証拠検証を提供します。ローカルの Unix 境界と、外部のインストール済みバイナリの適格性確認コマンドについては、この仕様を参照してください。
リリースソースから利用できる、初回利用向けの明示的な方法が 2 つあります。
- 観測可能なワーカーの副作用、再起動/拒否のケース、オフライン検証を含む、中立的な復旧可能 Run。
- 同じ公開インターフェイスを使う、任意の教育用セクションメカニクスレビュー。元の数式はバイナリの外部に置かれています。標準カタログのメタデータは、承認済みのルール実装や承認を意味するものではありません。
ローカルで検証を実行する
リリースアーカイブから実行する場合:
gaugemesh demo
Rust 1.88 以降を使ってソースから実行する場合:
cargo run --locked --release -- demo
アカウント、認証情報、プロバイダー、ネットワーク接続先、データベース、コンテナー、既存の MCP サーバーは使用しません。このコマンドは、呼び出し元のディレクトリにファイルを書き込みません。
0.1.0 リリースバイナリの実際の出力:
GaugeMesh demo
[ok] 2 MCP sources connected
[ok] 1 model route connected
[ok] colliding tool names isolated by capability identity: true
[ok] 2 capabilities leased
[ok] route selected under cost, deadline, and policy bounds
[ok] deterministic failure reproduced
[ok] recovery bounded to one attempt
[ok] duplicate effects: 0
[ok] invariants preserved or strengthened: 23/23
[ok] cleanup complete: no owned child or listener remains
Route: local-model -> docs-a__search
Decision: sha256:169a6315aa69eb7fa3e3b5aae70ede14d4c9ec71c0281d217fd84201414567f1
Evidence: sha256:9a9cdc8b673bab79ae96cf5aba5b7895d6e6e5f425407d1bd64da8701a1314e6
デモで検証できること
- 2 つのアップストリームが、認可アイデンティティを共有せずに、同じネイティブの
searchという名前を公開できます。 - リースは、特定のプリンシパル、テナント、タスク、スキーマ、機能セット、有効期限、スコープ、予算、副作用の許可、マニフェストダイジェストに結び付けられます。
- ハードルート制約は、整数のアクションスコアと安定したタイブレーカーより先に適用されます。
- 注入された 1 回の障害によって、1 回分のリトライ予算が消費されます。リトライが増幅することはありません。
- 検証済みの変換では、23 件の不変条件が維持または強化され、セマンティクスの損失はゼロでした。
- 読み取り専用のケースでは、重複する副作用がゼロであることを確認し、所有する子プロセスやリスナーがない状態で完了しました。
このデモは決定論的なフィクスチャの証拠であり、本番環境での長期負荷試験やセキュリティ認証ではありません。
ルートプランナーと、バージョン管理されたその判断仕様を個別に確認できます。最後のコマンドは、すべての候補がハード制約に違反する組み込みフィクスチャを使用するため、出力は安全でないフォールバックではなく、ダイジェストに結び付けられた denied 判定になります。
gaugemesh route explain
gaugemesh route explain --decision-contract
gaugemesh route explain --deny-all
gaugemesh route schema
gaugemesh route validate decision.json
アーキテクチャ
MCP clients --------------------+ /mcp
|
OpenAI-compatible clients ------+--> GaugeMesh --> invariant + policy boundary
| | before execution
MCP servers needing models -----+ /v1/* +--> MCP stdio / Streamable HTTP
+--> OpenAI-compatible providers
+--> official/private registries
ResiliReplay ---------------------- verification only; never a production hop
GaugeMesh は北向きに MCP サーバー、南向きに MCP クライアントとして動作します。北向きには OpenAI 互換サーバー、南向きには設定された互換モデルプロバイダーのクライアントとして動作します。レジストリレコードはディスカバリ用メタデータであり、実行権限を与えるものではありません。
MCP サーバーを1つ追加する
厳格なループバック設定を作成します:
gaugemesh init
ローカルの stdio サーバーを確認して追加します。--command は絶対パスの実行可能ファイルに解決される必要があり、シェル経由ではなく、引数の配列を使って起動されます:
gaugemesh add mcp docs \
--command "$(command -v gaugemesh)" \
--arg mcp-stdio \
--protocol-revision 2025-11-25
add はライブディスカバリーを実行し、ツール、リソース、テンプレート、プロンプト、サーバーの識別情報、リビジョンが読み取り可能な場合にのみ、ソースを書き込みます。serve は確認済みのソースを制限付きランタイムに読み込み、ケイパビリティのスナップショットを固定し、スキーマの不一致を拒否します。ツール、リソース、プロンプトは、読み取り可能なエイリアスが衝突しても、ソースに紐付いた不透明な識別情報を保持します。Streamable HTTP ソースには、確認済みの --url を指定して同じコマンドを使用します。Registry の検索/確認/承認は別の信頼経路であり、発見されたパッケージをインストールまたは実行することはありません。
モデルを1つ追加する
プロバイダーは、互換性のある /v1/models エンドポイントを公開している必要があります。キー不要のセットアップを一通り試すには、1つ目のターミナルで gaugemesh serve を実行したままにし、別のターミナルから組み込みのローカルモデルルートを追加します:
gaugemesh serve
gaugemesh add model local-provider \
--base-url http://127.0.0.1:8090/v1/ \
--provider-model-id local \
--context-limit 8192 \
--max-output-tokens 1024 \
--cost-table-version local-2026-08-30
認証情報が必要なプロバイダーの場合は、値ではなく環境変数名を渡します:
gaugemesh add model hosted \
--base-url https://provider.example.test/v1/ \
--provider-model-id reviewed-model \
--credential-env PROVIDER_API_KEY \
--cost-table-version contract-2026-08
設定済みのルートは、選択前にケイパビリティ、コンテキスト、期限、トークン、金額、再試行、データ、副作用の各制限に照らしてチェックされます。コストテーブルはバージョンに紐付いており、推定値をプロバイダーの請求額として提示することはありません。
MCP クライアントを接続する
データ用リスナーと、別途制限されたヘルス用リスナーを起動します:
gaugemesh doctor
gaugemesh list
gaugemesh serve
gaugemesh connect generic-mcp
ループバックのデフォルトは、Streamable HTTP が http://127.0.0.1:8090/mcp、モデル API が http://127.0.0.1:8090/v1、ヘルスが http://127.0.0.1:8092/healthz です。公式 MCP 適合性クライアントは、サポートされる両方のリビジョンについて、個別に /mcp に接続します。GaugeMesh には、stdio と Streamable HTTP を介した上流クライアントとしての、実際の RMCP 統合テストもあります。製品固有のクライアントインストーラーは、インストールの証拠がない限り出力されません。
OpenAI 互換クライアントを接続する
カスタムベース URL に対応するクライアントを GaugeMesh に向けます:
gaugemesh connect openai-compatible
curl http://127.0.0.1:8090/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"local","messages":[{"role":"user","content":"hello"}]}'
リリースゲートでは、このベース URL に対して openai-python==3.6.0 も実行し、モデル一覧、チャット補完、Responses をテストします。実装されている範囲は GET /models、POST /chat/completions、POST /responses で、JSON と SSE の動作には制限が設けられています。不明なリクエストフィールドは拒否されます。これは検証済みのサブセットであり、OpenAI API との完全な互換性を示すものではありません。
リクエストで GaugeMesh のモードと制限が明示的に指定されない限り、ツールの実行は無効です:
x-gaugemesh-tool-mode: lease
x-gaugemesh-max-tool-rounds: 1
x-gaugemesh-deadline-ms: 3000
これらの拡張ヘッダーは OpenAI のフィールドではありません。MCP サーバーは、モデルにアクセスするために /v1/* を直接呼び出せます。非推奨の MCP サンプリングが暗黙に変換されることはありません。サポートされていないサンプリングとエリシテーションの経路は、安定したエラーを返すか、明示的な承認バックエンドに送られます。
5 つの不変ルール
- ルートは型付けされた信頼グラフ上のパスです。表示用エイリアスでノードを識別することはありません。
- 主体、テナント、機能、スキーマ、因果ルート、来歴は、検証済みの委譲で遷移が明示的に許可されない限り維持されます。
- スコープ、委譲された権限、期限、金額、トークン、再試行は縮小するだけであり、データ保護の水準が下がることはありません。
- 任意の翻訳による損失には上限付きの整数スコアを設定します。必須の意味が失われる場合は、ターゲットの実行前に拒否します。
- キューの圧力、再試行の減衰、ブレーカーのヒステリシスには、一般的で反証可能なソフトウェア上の定義を用います。物理学の類推がコードの定義に優先することはありません。
gaugemesh route explain を実行すると、候補の採用・拒否、整数スコア項目、安定したタイブレーカー、ポリシー/メトリクスのスナップショットダイジェストを含む、元の 0.1.0 のベアプランが表示されます。既存の機械処理クライアントには、従来の形式が維持されます。--decision-contract を指定すると、バージョン管理された selected ラッパーを有効にできます。
gaugemesh route explain --deny-all を実行すると、新しいコントラクトが返されます。そこには status: "denied"、安定した GM_ROUTE_NO_ELIGIBLE_CANDIDATE、すべての制約による拒否理由、スナップショットダイジェストが含まれます。ルート ID は一意でなければならず、拒否された候補には空白でない理由を含める必要があります。また、候補と理由の順序は正規化されます。選択コントラクトと拒否コントラクトの両方に decision_digest が含まれます。これは、ダイジェスト自体を除く正規化された署名なし決定フィールドの SHA-256 ダイジェストです。
チェックイン済みのルート決定 JSON Schemaには、ワイヤーコントラクトが記載されています。決定を保存し、gaugemesh route validate <file> を実行すると、完全にオフラインでスキーマ、ダイジェスト、導出可能な選択/拒否の不変条件を検証できます。このダイジェストは署名なしの再計算可能な整合性検証であり、決定全体を書き換えられる第三者に対する認証ではありません。決定にはルート ID と制約による拒否理由が含まれます。検証時にこれらがアップロードされることはありませんが、共有前にサニタイズしてください。類推の境界については、物理モデルに記載されています。
安全性の境界
- 認証なしのモードはループバック限定です。リモートモードでは TLS、明示的な HTTPS 公開オリジン、OIDC 発行者/対象者/リソースの厳密な検証、必須スコープ、上限付き JWKS キャッシュ、信頼するプロキシの許可リスト、デフォルト拒否ポリシーが必要です。
- API キーのプリミティブでは、一度だけ表示されるランダムな値、Argon2id ハッシュ、テナント/スコープへの紐付け、失効を使用します。
0.1.0のリモートリスナーは OIDC ベアラートークンを認証し、API キー管理サービスを公開することはありません。 - 下流のベアラートークンは、デフォルトでは上流に渡されません。プロバイダーの認証情報は、環境変数またはアクセス制限されたファイルへの参照として保持され、通常の SQLite 値にはなりません。
- リモート URL では、安全でないスキームやアドレス種別を拒否し、承認済みの DNS 応答を固定し、正確なホスト/ポートとピア IP に紐付け、自動リダイレクトを無効にし、レスポンス本文のサイズに上限を設けます。
- Stdio では、正確な argv、
kill_on_drop、起動/フレーミング制限、再起動予算、セキュリティ分離されたプロセスキーを使用します。不明なサーバーは共有できません。 - アドミッションキュー、リクエスト本文、プロセス出力、SSE 出力、ツールのラウンド数、シャットダウン待機には上限が設けられています。キャンセルは所有するリソースを通じて伝播します。
SECURITY.md、THREAT_MODEL.md、敵対的状況に関する証拠を参照してください。上限付きの永続的 MCP Tasks ルートには、個別の障害境界と信頼境界が記載されています。GaugeMesh は、厳密に一度だけの実行、本番環境への対応、あらゆるクライアント/プロバイダーへの対応、公式 MCP ステータス、MCP 認証、セキュリティ認証を謳うものではありません。
検証済みの互換性
| 対象 | 根拠 | 結果 |
|---|---|---|
| MCP サーバー、Streamable HTTP、2025-11-25 | 公式適合性テスト 0.2.0-alpha.11 | 採点対象のチェック 70/70 |
| MCP サーバー、Streamable HTTP、2026-07-28 | 公式適合性テスト 0.2.0-alpha.11 | 採点対象のチェック 117/117 |
| MCP クライアント、stdio と HTTP、両方のリビジョン | RMCP 3.1.4 のプロセス間テスト/統合テスト | VERIFIED の範囲 |
| MCP Tasks ルート、2026-07-28 | RMCP のタスクライフサイクルに加え、ルーターのみで SQLite を再オープンし、バインド済みのアップストリームセッションを保持する、ニュートラルな子プロセス適格性確認 | 現行ソースで範囲を限定した VERIFIED の範囲 |
| OpenAI 互換 HTTP | raw HTTP、プロバイダーフィクスチャ、OpenAI Python SDK 3.6.0 | VERIFIED の範囲 |
| 製品固有のクライアントインストール | 実行されていません | DOCUMENTED_ONLY または UNSUPPORTED |
適合性テスト専用の合成機能は、通常の動作では利用できません。保留中または採点対象外の拡張チェックはカウントしていません。記録された 0.1.0 の適合性テストでは Tasks をアドバタイズしていませんでした。現行ソースでは、SQLite の永続ストレージと、レビュー済みの Tasks 対応アップストリームが少なくとも 1 つ利用可能な場合に限り、2026-07-28 で io.modelcontextprotocol/tasks をアドバタイズします。呼び出し元も Tasks のサポートを宣言する必要があります。タスクルートは旧バージョンの適合性テストの集計対象外である統合テストの根拠であり、これらの結果はいずれも公式認証ではありません。MCP マトリクス、永続 Tasks ガイド、クライアントレベル、適合性テストの一覧を参照してください。
Rust ツールチェーン、アカウント、プロバイダーなしで、ネイティブバイナリから永続ルートを明示的にテストできます。
gaugemesh verify --durable-tasks
この組み込み適格性確認では、合成 JSON プロバイダーを MCP stdio 経由で自ら起動します。このプロバイダーは、範囲を限定した JSON ワーカーを独立した実際の子プロセスとして起動します。一時的な SQLite ルーター状態を再オープンし、実行結果とアーティファクト検証結果を別々に報告します。これは出荷される汎用エグゼキューターではありません。GaugeMesh にはバックグラウンドのタスクスケジューラーがありません。アップストリームから確認応答を受け取った後、期限切れ時のキャンセルは、呼び出し元が次にポーリングしたときにのみ開始されます。キャンセル確認応答は、終了が確認されたことを意味しません。アップストリームセッションが変更されると、非終端のルートが照合のみの状態になる場合があります。また、永続ルートでは tasks/update が明示的にサポートされていません。
ResiliReplay の検証
ResiliReplay は任意の外部ツールです。
gaugemesh verify --resilireplay
GaugeMesh は、サニタイズ済みの一時状態から、公開済みの [email protected] 実行ファイルを引数配列で正確に呼び出します。実際の正常系コントロール 1 件と明示的な障害ケース 12 件の結果は、合格 3 件、明示的な不合格 10 件でした。合格した 2 件の復旧ケースは、ResiliReplay のトレースレベルで合成したタイムアウトおよび決定論的エラーの変異後に、実際に範囲を限定した再試行を行うものです。0.7.0 は、これらの障害を MCP ワイヤーまたはサーバーに注入しません。クリーンアップは完了し、障害実行で報告された重複効果は 0 件でした。正確な全体評価は PARTIAL です。ResiliReplay はこのコマンドに対する MCP-RES v0.2 プロファイル/証拠クラスを出力していないため、GaugeMesh は MCP-RES を主張しません。詳細と証拠ダイジェストは検証記録を参照してください。
開発
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-features
cargo test --doc --workspace
cargo deny check advisories bans licenses sources
cargo audit --deny warnings
Rust 1.88 が MSRV です。ホスト環境でのゲートでは、Ubuntu と Windows で現行の安定版および MSRV、macOS で安定版を対象としています。また、Linux x64/ARM64、Windows x64、macOS ARM64/x64 向けのネイティブリリースアーカイブに加え、ファジング、ミューテーション、Miri、AddressSanitizer、適合性テスト、ResiliReplay、SPDX SBOM、チェックサム、証明、コンテナーのスモークテスト、クリーンなアーカイブの実行も対象としています。
コントリビューションでは、型付き不変条件を維持し、変更を反証できるテストを含める必要があります。CONTRIBUTING.md を参照してください。問題を見つけた場合は、再現可能なバグをサニタイズして報告してください。または、課題の選択ページから、インテグレーションとユースケースを共有してください。脆弱性は公開課題ではなく、GitHub の非公開脆弱性報告機能から報告してください。
ライセンス
Apache-2.0 です。依存関係とソースの由来に関する説明は、docs/research/DEPENDENCIES.md にあります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。