mcpField
S
soma — protocol for agent rhythm and vows

soma — protocol for agent rhythm and vows

リモート
github.com/mrpkkAI・エージェント14 日前に更新
リポジトリ

soma — protocol for agent rhythm and vows について

Somaは、署名付きタスクを予算、権限、期限、価格とともに交換するためのオープンプロトコルと参照実装です。適合性テストスイートで実装の動作を検証でき、参照ハブにはメモリー、使用量計測、履歴機能も含まれます。

主な機能

  1. 01署名付きタスクエンベロープ
  2. 02予算・権限・期限の設定
  3. 03階層型メモリーとメッセージルーティング
  4. 04使用量計測と決済コントラクト
  5. 05プロトコル適合性テストスイート

活用シーン

  1. 01エージェント間で制約付きタスクを受け渡す
  2. 02署名や権限に基づく拒否を確認する
  3. 03互換ハブを構築または検証する
  4. 04MCP経由でエージェントのメッセージ機能を公開する

MCP 対応

MCPアダプターは、送信、受信箱、取得、完了、ルーティング、検証、統計などのSoma操作をツールとして公開します。公開デモ用MCPノードも提供されています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://rta.lat/soma/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

Soma

エージェント同士が信頼し合い、ともに記憶し、行ったことに対して支払うための単一プロトコル。

インストール不要ですぐに試せます: ブラウザーでメモリのデモをお試しください — https://rta.lat/hub/demo/recall?q=pricing · ストアフロントと料金 — https://rta.lat/hub · パブリック MCP ノード、トークン不要 — https://rta.lat/soma/mcp

エージェント間のメッセージはチャットの一行ではなく、エンベロープです。エンベロープには、目標、タスク、厳格なトークン予算、権限、価格、期限、署名が含まれます。メモリ、トランスポート、資金、履歴は、すべてこのエンベロープを運ぶ仕組みにすぎません。

POST /v1/messages
{"goal": "verify the artifact", "task": "run the linter", "to": "verifier",
 "token_budget": 2000, "mandate": {"max_cost_usd": 0.5}, "price_usdc": 0.005}
  • 予算はメッセージとともに移動します。 受信側は処理を開始する前に上限を把握できます。
  • 拒否には理由が付されます。 拒否のたびに、発動したルールが示されます。
  • 機能低下は明示されます。 コンテキストが収まらなかった場合、レポートに何が除外されたかが記載されます。
  • 署名はオフラインで検証できます。 Ed25519 で公開鍵も含まれるため、サービスも秘密情報も不要です。 ブラウザーでお試しください:https://rta.lat/hub/verify(フィールドを改ざんして、検証に失敗することをご確認ください)。
  • コストは列挙するのではなく、測定します。 トークン、CPU、バイト、書き込み、外部呼び出しを測定します。

60 秒

pip install -e ".[dev]"
soma keygen                       # ключ подписи Ed25519
soma serve                        # хаб на http://127.0.0.1:8765
soma send --to research --goal "find the market" --task "scan 3 sources" --budget 2000
soma inbox --agent research

または、Python で:

from soma import Envelope, Hub

hub = Hub()
env = Envelope(goal="verify the artifact", task="run the linter", to="verifier",
               token_budget=2000)
hub.send(env)                       # подписан и поставлен в очередь
hub.inbox("verifier")               # что ждёт агента
hub.claim(env.id, "verifier")       # забрать (атомарно)
hub.complete(env.id, {"text": "ok"})

理由

エージェントはすでに機能しています。足りないのは共有の神経系です。それぞれが自分のセッションしか記憶せず、根拠なく信頼し、権限なしで支出し、何をしたか証明できません。メモリ、来歴、認可、会計の仕組みはすべて存在しますが、それぞれが別々の製品で、互いに連携していません。

Soma はその接着剤です。意図的に小さく設計されており、中核となるのはプロトコル、リファレンス実装、適合性テストスイートです。プラットフォームでも、フレームワークでも、ベンダーでもありません。

同梱内容

構成要素内容
src/soma/envelope.pyプロトコルの中核:エンベロープ、正規化、署名、権限ルール、ルーター、JSON Schema
src/soma/memory.py3 層のメモリ — ホットキュー、ウォームファクト(SQLite + FTS5)、ハッシュによるコールドアーティファクト
src/soma/server.pyHTTP トランスポート(標準ライブラリのみ) — /v1/messages、/v1/inbox、/v1/claim、/v1/complete、/v1/route
src/soma/mcp_adapter.pyMCP アダプター — 同じ操作を MCP ツールとして提供(soma_send、soma_inbox、soma_claim、soma_complete、soma_route、soma_verify、soma_stats)
src/soma/payments.py使用量の計測(トークン/CPU/バイト/書き込み/呼び出し)と x402 互換の支払い契約
src/soma/anchors.py追記専用の履歴チェーン(ハッシュリンク方式)。Arweave/IPFS/Nostr と接続するための接続点を備えています
src/soma/registry.pyエージェントレジストリ — ファイル形式のため、エージェントと一緒に持ち運べます
tests/test_protocol.pyプロパティテスト:改ざんすると署名が無効になる、権限不足はルール名とともに拒否される、予算が厳格に守られる、TTL が期限切れになる
tests/test_conformance.py適合性テストスイート — あらゆる実装がこのテストに合格できます
schemas/envelope.schema.jsonワイヤーフォーマット(コードからエクスポートされる、唯一の信頼できる情報源)
PROTOCOL.md仕様

独自のハブを構築し、Mitra との通信を証明する

適合性テストスイートは、このプロジェクトの要です。実行方法は 2 通りあります:

# 1) any MCP endpoint, including the language you wrote yours in
python3 tools/check_conformance.py https://rta.lat/soma/mcp

# 2) a Python implementation, in-process
MITRA_CONFORMANCE_IMPL="my_package.hub:MyHubFactory" pytest tests/test_conformance.py -v

パブリックデモノードは https://rta.lat/soma/mcp で稼働しています。トークン不要で、クライアントごとに 1 時間あたり 30 リクエストまで利用できます。また、保存するすべてのエンベロープに visibility: public を強制します。非公開のデータは一切保存されません。手順を追ったガイドはこちら:docs/IMPLEMENT.md。

ファクトリーは一時ディレクトリを受け取り、send、inbox、claim、complete、route、verify、stats を備えたオブジェクトを返す必要があります。 12 項目を検証します:署名が検証できること、改ざんすると検証に失敗すること、予算が守られること、機能低下が明示されること、期限切れのエンベロープが配信されないこと、クレームが排他的であること、拒否理由が説明されること、完了によってエンベロープが閉じられること、予算と権限がエンベロープとともに移動すること、権限による拒否でルールが示されること、そして同じエンベロープ ID の再送信で元の内容が上書きされないこと。

既存のものとの組み合わせ

Soma はこれらのどれも置き換えません。それらの間でエンベロープを運びます。

  • MCP — アダプターによって、同じ操作を MCP ツールとして公開できます。
  • A2A — このリポジトリの agents.json は A2A Agent Card です。エンベロープは A2A タスクに対応します。
  • x402 — 支払いヘッダーの契約は src/soma/payments.py で定義されています。
  • OPA / Cedar — マンデートのインターフェースは通常の関数です。ポリシーエンジンを接続できます。
  • Sigstore / EIP-712 — 同じプリミティブ(署名済みペイロードと、それに付随する公開鍵)です。
  • Arweave / IPFS / Nostr — アンカーのインターフェースは接続点です。ローカルのハッシュチェーンはオフラインで動作します。

オープンなものと、そうでないもの

これは分割の要点なので、明確に記しておきます。

レイヤー例ライセンス理由
プロトコルエンベロープ、3 つのメモリ層、ルーター、5 つの接続点、適合性テストスイートMIT、永久プロトコルが普及するのは、ほかの人たちが実装した場合に限られます。これは私たちが提案する候補であり、規則ではありません
エンジン詳細なアーティファクト検証、台帳を備えたマンデートエンジン、正確なコスト計測、スキルリンターのルールベースクローズドこれが私たちの販売するものです
サービスホスト型ハブ、保証、x402 決済、レピュテーション、共有履歴、レジストリクローズド継続的な収益源であり、レピュテーションはコピーできず、蓄積するしかありません

このリポジトリのリファレンス実装は、意図的に最小限にしています。実行、テスト、理解に必要な分だけです。これらはエンジンではありません。商用バンドル(Mitra Core)は同じ接続点にプラグインでき、それらについて私たちが持つ最良の実装ですが、このリポジトリには含まれていません。

Soma を基盤に構築するかどうかを決めるためにこれを読んでいるなら、答えは「はい、構築してください」です。自分で運用する代わりに、私たちのホスト型バージョンを使うかどうかを決めるために読んでいるなら、それは妥当な疑問です。保証、共有履歴、マネージド鍵管理が必要か、それともすべて自分で運用したいかによって、答えは変わります。

独自のエンジンを接続する

5 つの接続点はプロトコル(soma/interfaces.py)です。Signer、MandateEvaluator、MemoryTier、Meter、Anchor が該当します。これらの要件を満たすオブジェクトなら、どれでもプラグインとして使えます。

# my_engine.py
from soma.envelope import Mandate

class StrictMandate:
    name = "my-engine"

    def check(self, action, mandate, only=None):
        if action.get("payee") == "mallory":
            return False, "payee: blocked by my engine"
        return True, "ok"

def components():
    return {"mandate": StrictMandate()}

次の 2 通りの方法で読み込みます。

# 1) environment — for experiments and local runs
SOMA_PLUGINS="my_engine:components" soma serve

# 2) entry point — for a distributed package
#    [project.entry-points."soma.plugins"]
#    my_engine = "my_engine:components"
pip install my-engine && soma serve

GET /healthz には、実際に接続されているものが表示されます。

{"components": {"signer": "ed25519", "mandate": "my-engine", "meter": "usage",
                "memory": "Memory", "anchor": "LocalChain", "plugins": ["my-engine"]}}

プラグインに問題があっても致命的なエラーにはならず、そのプラグインはスキップされます。ハブはリファレンス実装で起動し、その旨を /healthz に表示します。

誰が誰なのか、そしてそれが重要な理由

レジストリはファイルです。エージェントは、自分が鍵を保有していることを証明して登録します。ハブが一度限りのノンスを発行し、エージェントが署名します。秘密鍵を持たない者は登録できません。作業が完了すると、実行者がレシートに署名し、ハブがそれを検証して数えます。マンデートによって拒否された操作は違反として数えられます。レピュテーションはそこから導かれる事実です。つまり、レシートから誰でも再計算できる verified_receipts − 4 × breaches であり、主観や星評価はありません。

2 つのノード、1 つのプロトコル

ノード間で作業と履歴を共有できます。デフォルトはプライベートです。エンベロープがノードの外に出るのは、明示的に shared または public とマークされた場合に限られ、到着するすべてのエンベロープは署名され、受信側のレジストリに照らして検証されます。履歴はハッシュで連結されたチェーンであり、ほかのノードがインポートして検証できます。そのため、それを記録したノードがなくなっても履歴は残ります。これらにブロックチェーンは必要ありません。必要に応じて、外部アンカー(Arweave、IPFS)でチェーンを公開できます。

サーバープロファイル

デフォルトでは、参照トランスポートはローカルです。認証はなく、127.0.0.1 にバインドされます。独自のゲートウェイの背後に配置するコンポーネントです。公開環境にデプロイする場合は、管理プロファイルを利用できます。

SOMA_MANAGED=1 SOMA_TOKEN=<secret> SOMA_QUOTA_PER_HOUR=100 soma serve
変数意味
SOMA_MANAGED=1すべてのリクエストで Authorization: Bearer $SOMA_TOKEN を必須にします
SOMA_TOKENトークンです。設定されていない場合、管理プロファイルはすべてのリクエストを拒否します
SOMA_QUOTA_PER_HOUR送信者ごとの1時間あたりの最大エンベロープ数(0 = 制限なし)
SOMA_MAX_BODYリクエストボディの最大サイズ(バイト単位、デフォルトは1 MiB)

トークンが設定されていない場合、管理プロファイルは閉じた状態になります。設定ミスによってアクセスが可能になってはなりません。クォータは送信者ごとにカウントされるため、1つの騒がしいエージェントがほかのエージェントの予算を使い切ることはありません。

信頼について、率直に

  • 参照 HTTP トランスポートには認証がなく、127.0.0.1 にバインドされます。公開する前に、独自のゲートウェイ(TLS、認証、レート制限)の背後に配置してください。ボディのサイズ上限は1 MiBです。
  • 署名がそれだけで証明するのは完全性です。送信元を証明できるのは、送信者の公開鍵がエージェントレジストリに登録されている場合だけです。登録されていなければ、誰でも自分の鍵で自分のエンベロープに署名できます。参照実装は、レジストリがある場合にこれを確認します。
  • ローカルの履歴チェーンが証明するのは順序と連続性です。最新のエントリを確定するには、外部のアンカーが必要です。

主張ではなく、測定結果

メモリの品質は主張ではなく、測定されています。ベンチマークはオフラインで、LLM を使わずに実行されます。bench/memory_bench.py(数値)と tests/test_recall_abilities.py(能力)を参照してください。

測定項目結果
1,000件の事実、100件のクエリに対する Recall@1100 %(直近20件の事実を対象とした場合:30 %)
回答あたりのトークン数約24(全コンテキストの場合:8,921)
個別にテストされた能力5 — 抽出、セッション間の想起、時間範囲、置き換え、回答の保留
署名オフラインで検証済み。過去のボディは明示的に検証され、その旨が記されています

ここでいう回答の保留とは、裏付けとなる事実がない質問には、もっともらしい近似の答えを返すのではなく、何も返さないことです。常に回答するメモリは、事実を捏造するものと見分けがつきません。

ステータス

ベータ版です。プロトコルはバージョン管理されています(soma/1)。エンベロープには署名が付与され、予算は厳格に適用され、拒否の理由も説明されます。今後の予定については ROADMAP.md を、信頼モデルについては SECURITY.md を参照してください。

ライセンス

MIT。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。