mcpField
M
MELRA

MELRA

ローカル
xagilab.comAI・エージェント12今日更新

MELRA について

MELRAは、Agent開発者向けのローカル実行ランタイムで、経由するツール呼び出しを統制します。ポリシーに基づく許可と宣言された証拠の検証を行い、結果の不確かな変更は再実行せず復旧待ちにします。

主な機能

  1. 01ポリシーによる操作の判定と許可
  2. 02リスクの高い変更への承認
  3. 03宣言された証拠による結果検証
  4. 04変更の最大1回のディスパッチ
  5. 05ハッシュ連鎖付きの秘匿レシート

活用シーン

  1. 01Agentのファイル操作やコマンド実行の制限
  2. 02リスクの高い変更を承認してから実行
  3. 03証拠に基づくコマンドやファイル操作の確認
  4. 04クラッシュ後の不確かな変更の照合と監査

MCP 対応

MELRAはMCP経由で実行ツールを提供し、MCPクライアントから利用できます。CLIで複数のMCPクライアントを設定でき、SDKからランタイムを起動または接続できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"xagi-lab-melra": {
"command": "npx",
"args": [
"-y",
"@melra/cli"
]
}
}
}
起動コマンドnpx -y @melra/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@melra/cli0.3.0-alpha.14

ツール

11

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

MELRA のロゴ

MELRA

Modular Execution Layer for Reliable Autonomy

AI エージェントが実行内容を決定します。MELRA は、ツール呼び出しの承認、検証、復旧の方法を管理します。

MELRA を介してルーティングするエージェントのツール呼び出し向け、オープンソースのローカル実行ランタイムです。 各呼び出しをポリシーに照らして確認し、必要に応じて承認を求め、宣言された 証拠を検証し、実行から結果までの内容を秘匿化したレシートに記録します。各タスクで、MELRA は 変更操作を最大 1 回だけディスパッチします。不確実な結果は再実行せず、照合のために保留します。 外部への副作用を厳密に 1 回だけにできるかどうかは、引き続きプロバイダーに依存します。 ほかのツールを介して行われる呼び出しは、MELRA の管理対象外です。


CI のステータス CodeQL のステータス 依存関係監査のステータス コンテナビルドのステータス

最新リリース npm の @melra/cli 公式 MCP Registry に登録された MELRA TensorBlock MCP Index に掲載 mcpservers.org に掲載 mcp.site に掲載 Smithery の MELRA Apache-2.0 ライセンス 決定論的な評価シナリオ 55 件中 55 件に合格 テレメトリー無効 macOS Linux Windows Node.js 22.13 以上、または 23.4 以上 Python 3.11~3.14 セキュリティ強化済み Docker イメージ



対応環境   Claude Code Claude Desktop OpenAI Codex Cursor VS Code Gemini CLI Zed Windsurf OpenClaw Hermes Agent GitHub Copilot CLI その他すべての MCP クライアント



26 秒のデモ  ·  クイックスタート  ·  仕組み  ·  動作を見る  ·  ドキュメント  ·  貢献  ·  ディスカッション  ·  Product Hunt での公開


MELRA のガバナンス付き実行フロー

26 秒のデモ

https://github.com/user-attachments/assets/e5cf895d-7ea6-4797-a1ef-e69cc5860d3f


警告

MELRA はアルファ版ソフトウェアです。 ローカルランタイムはエンドツーエンドでテスト済みですが、API は 1.0 より前に変更される可能性があります。隔離されたワークスペースを使用し、ドメインとコマンドの許可リストを 必要最小限に保ち、承認する前に内容を必ず確認してください。


クイックスタート

Node.js 22.13 以降、または 23.4 以降が必要です。エージェントが作業するプロジェクトから、1 つのコマンドですべてをセットアップできます。

cd ~/project
npx @melra/cli@alpha setup

そのディレクトリがエージェントのワークスペースとなり、ファイル操作とコマンド操作の境界になります。setup はその場所を表示し、ホームディレクトリ、その親ディレクトリ、または / をワークスペースにする場合は確認を求めます。別の場所を選ぶには、MELRA_WORKSPACE を設定してください。

ターミナルで実行すると、setup は簡単なウィザードになります。安全なローカルポリシーを書き込み、お使いのマシン上のエージェントアプリを探して、どのアプリで MELRA を使うかを尋ね、そのアプリの設定ファイルに MELRA を書き込みます。ファイル内のほかの設定はそのまま残し、最初に .bak ファイルを保存します。

Which MCP client should use MELRA?

  1)   Claude Code                      detected: 'claude' on PATH
  2)   Cursor                           detected: config file found
  3)   Gemini CLI                       detected: config folder found
  ...

Choose 1-26 [1]: 1
Write it into ~/project/.mcp.json? [Y/n]

  ✓  Workspace    ~/project
  ✓  Policy       ~/.melra/policy.json
  ✓  Claude Code  ~/project/.mcp.json

Next: Start claude in this workspace and approve the 'melra' server when it asks; 'claude mcp list' then shows it connected.

その後、エージェントアプリを再起動し(Claude Code では、プロジェクトのサーバーを一度承認する必要があります)、たとえば 「melra を使ってシステム情報を表示して」 のように頼んでください。これで完了です。

フラグ、コンテナー、またはソースからのビルドを使いたい場合
方法コマンド
質問なしで 1 つのクライアントを設定npx @melra/cli@alpha setup --client cursor --write
書き込まずに設定を出力npx @melra/cli@alpha setup --client codex
グローバルにインストールnpm install -g @melra/cli@alpha && melra setup
コンテナー(Node 不要)docker run --rm ghcr.io/xagi-lab/melra:alpha doctor
ビルド済みリリースリリースからダウンロードし、SHA256SUMS と照合してから node melra/dist/bin.js doctor を実行
ソースからgit clone https://github.com/XAGI-Lab/melra.git && cd melra && corepack enable && pnpm install --frozen-lockfile && pnpm build && pnpm melra setup
ファイル 1 つで実行(Node 不要)(実験的)チェックアウトしたリポジトリから:pnpm build:sea を実行し、その後 ./dist-sea/melra setup を実行してください。単一実行ファイルを参照
インストールしたものを確認npm audit signatures でレジストリの署名を検証できます。npm のプロベナンス情報から、各パッケージと GitHub Actions のビルドとの関連を確認できます(npm パッケージを参照)

すべてのコマンドは、ターミナルでは読みやすい形式で、パイプ接続時または --json を指定した場合はプレーンな JSON で出力するため、スクリプトも引き続き動作します。MELRA は初回起動時に、プライベートな権限で <MELRA_HOME>/payload.key を作成します。これを SQLite ファイルと一緒にバックアップしてください。キーを失うと、永続化されたペイロードを読み取れなくなります。すべてのインストール方法、環境変数、強化された Docker の実行方法については、インストールガイドを参照してください。

注意

このプロジェクトが公開しているのは、@melra/ npm スコープ内のパッケージ(@melra/cli は CLI)と、Python SDK の wheel があるリリースのみです。スコープのない npm パッケージ melra や PyPI パッケージ melra はこのプロジェクトのものではありません。このスコープ、リポジトリ、またはリリースからインストールしてください。

MELRA が役に立ったら、リポジトリにスターを付けて、ほかのエージェント開発者にも見つけてもらいましょう。Cursor やほかのクライアントで試していますか?クライアント名とそのバージョン、OS、MELRA のバージョン(npx @melra/cli@alpha version)をissue #184で共有してください。部分的なテスト結果も役立ちます。


MELRA とは?

AI エージェントは、もはや会話するだけではありません。ユーザーに代わってファイルを編集し、コマンドを実行し、ウェブサイトを操作し、API を呼び出します。これに伴って 4 つの疑問が生じますが、多くのエージェントはそれぞれ異なる方法で答えるか、まったく答えません。

🛡️ 許可されていますか?

MELRA が受け取るすべてのアクションは、ユーザーのポリシーに照らして確認され、実行時にも再度確認されます。リスクのある変更は、ユーザーから正確な承認を得るまで保留されます。

✅ 本当に成功しましたか?

「エラーなし」は成功を意味しません。ユーザーが宣言した証拠がそろった場合に限り、アクションは成功と見なされます。ファイルが存在すること、終了コードが 0 であること、ページに期待した内容が表示されていることなどです。

### 🔁 クラッシュした場合はどうなりますか?

MELRA がディスパッチするすべての変更は、実行前に記録され、最大でも一度だけ実行されます。クラッシュ後、MELRA は証拠またはプロバイダーの情報に基づいて処理を確定します。確定できないものは recovery_required で待機し、再実行されることはありません。

🧾 何が起きましたか?

MELRA が実行し、結果に至ったすべてのアクションについて、秘匿化され、ハッシュで連結されたレシートが残るため、何が実行され、誰が依頼し、なぜ許可されたのかを監査できます。

MELRA は、サポート対象のエージェントをまたいで、MELRA 経由でルーティングされたツール呼び出しに関するこれらの問いに、一か所で答えます。これらの呼び出しについては、オペレーティングシステムがアプリの下で動作するように、エージェントの下で動作します。

MELRA の位置:モデルが推論し、エージェントがループを実行し、MELRA が MELRA 経由でルーティングされたツール呼び出しを管理し、エフェクトアダプターがシステム上で処理を実行します。その他のエージェントツールは MELRA の制御対象外です。

**LLM が推論します。ハーネスがループを管理します。MELRA は、MELRA 経由でルーティングされた呼び出しのエフェクトのライフサイクルを管理します。**モデルやエージェントを切り替えても、MELRA のポリシー、承認、認証情報、履歴、レシートはそのまま維持できます。


エージェントとの連携

MELRA は Model Context Protocol に対応しているため、あらゆる MCP クライアントで利用できます。次のクライアントでは、melra setup --client <name> を実行すると、クライアント独自の形式と場所に設定を書き込みます。また、melra doctor を実行すると、それぞれが MELRA を参照しているか確認できます。

エージェント--client書き込まれる設定
README の画像 Claude Codeclaude-code<project>/.mcp.json
README の画像 Claude Desktopclaude-desktopclaude_desktop_config.json
README の画像 OpenAI Codex CLIcodex~/.codex/config.toml
README の画像 Cursorcursor~/.cursor/mcp.json
🟦 VS Code(Copilot エージェントモード)vscode<project>/.vscode/mcp.json
README の画像 Gemini CLIgemini~/.gemini/settings.json
README の画像 Windsurfwindsurf~/.codeium/windsurf/mcp_config.json
README の画像 ZedzedZed の settings.json(コメントを保持)
🧩 ClineclineCline の cline_mcp_settings.json
⬛ OpenCodeopencode~/.config/opencode/opencode.json
👻 Kirokiro~/.kiro/settings/mcp.json
🪿 Goosegoose~/.config/goose/config.yaml
▶️ Continuecontinue<project>/.continue/mcpServers/melra.yaml
⚡ Ampamp~/.config/amp/settings.json
🦞 OpenClawopenclaw~/.openclaw/openclaw.json(mcp.servers)
⚕️ Hermes Agent(Nous Research)hermes~/.hermes/config.yaml(mcp_servers)
README の画像 GitHub Copilot CLIcopilot~/.copilot/mcp-config.json
🐉 Qwen Codeqwen~/.qwen/settings.json
🅰️ Auggie(Augment)auggie~/.augment/settings.json
README の画像 Warpwarp~/.warp/.mcp.json
README の画像 Junie(JetBrains)junie~/.junie/mcp/mcp.json
🤖 Factory Droiddroid~/.factory/mcp.json
🌙 Kimi Codekimi~/.kimi-code/mcp.json
🪁 Kilo Codekilo~/.config/kilo/kilo.jsonc(コメントを保持)
🧪 LM Studiolmstudio~/.lmstudio/mcp.json
🔌 その他generic標準の mcpServers ブロックを出力

独自のエージェントを構築していますか?TypeScript SDK または Python SDK をご利用ください。どちらも、MELRA を起動するか、すでに稼働中の MELRA にループバック HTTP またはプライベート Unix ソケット経由で接続できます。エージェントのフレームワークについては、フレームワークの例をご覧ください。LangChain / LangGraph、OpenAI Agents SDK、Vercel AI SDK、公式 MCP SDK が含まれています。

メモ

名前付きクライアントが検証済みとマークされるのは、ソースのチェックアウトではなく、リリース済みパッケージがそのクライアントで検出、計画、承認、実行、キャンセル、レシート取得に合格した場合に限られます。クライアントごとのステータスは COMPATIBILITY.md に記載されています。


仕組み

エフェクトとは、エージェントが MELRA 経由で実行する、範囲が限定された操作のことです。file.write、 terminal.run、browser.click、http.request などがあります。MELRA はルーティングされた各エフェクトを、 計画ステップと実行ステップに分けた 9 つの段階で処理します(単一のタスクでは、melra_plan の後に melra_execute を実行します)。そのため、計画時には何も実行されません。

9 つの段階:melra_plan が型を判定し、分類し、承認し、承認チャレンジを発行してタスクを記録します。melra_execute がポリシーを再確認し、重複を排除し、予算内で実行し、証拠を検証してレシートを書き込みます。

以下は、開発者モードで最初から最後まで実行する変更の例です。 強制モードでは、チャレンジにフレーズは含まれません。 会話の外で melra approve <task-id> を実行して承認します。また、エージェントの melra_execute は承認を一切送信しません。

sequenceDiagram
    autonumber
    participant A as Your agent
    participant M as MELRA
    participant You
    participant W as Your system
    A->>M: melra_plan: write notes.md, evidence "file contains 'done'"
    M->>M: type, classify, check policy, record
    M-->>A: awaiting_approval + challenge "APPROVE 3f9c…"
    A->>You: May I write notes.md?
    You-->>A: yes
    A->>M: melra_execute with the exact phrase
    M->>M: policy again, not already done?
    M->>W: write the file (under a budget)
    M->>W: read it back, independently
    M-->>A: verified_success + receipt

最終ステータスの意味と、エージェントが次に行うべきこと:

ステータス意味次のステップ
🟢 verified_success実行され、宣言されたすべてのチェックに合格しました完了です
🟡 partial実行されましたが、証拠が条件を満たさなかったか、semantic の質問への回答が「いいえ」でした証拠を確認してから判断します。「いいえ」と回答された変更はそのまま残るため、修正するには新たに計画を立てる必要があります
🔴 policy_blocked何も実行される前に拒否されました理由を確認します。同じリクエストは再度拒否されます
🔵 awaiting_approval変更が承認待ちです開発者モード:計画を立てたエージェントから承認します。強制モード:melra approve <task-id>
⏳ waiting_user実行され、MELRA が実行できるすべてのチェックに合格しました。semantic の質問は外部からの回答待ちです計画を立てた本人以外の主体が melra_task_judge で回答します。強制モードでは、オペレーターが melra judge <task-id> を実行します。回答がなければ、期限切れ時にクローズされます
🟣 recovery_required変更が行われたかどうか不明な場合、または変更が行われたものの、その semantic の質問が未回答か cannot_tell と回答された場合ですまず現在の状態を確認してください。決して確認せずに再実行しないでください
⚪ failed · cancelled · budget_exhausted完了しませんでした安全に再度計画できます
エージェントが実際に送信するリクエストを表示

エージェントは「チェックを実行する」を、範囲が限定された 1 つの操作と、その操作が成功したことを 証明する証拠に置き換えます。

{
  "goal": "Run the repository checks",
  "operation": { "kind": "terminal", "action": "run", "command": "pnpm", "args": ["check"] },
  "requiredEvidence": [{ "type": "exit_code", "value": 0 }]
}

プロセスが 0 で終了した場合に限り、タスクは verified_success になります。実行されて 1 で終了した プロセスは、操作自体は完了しましたが証拠の条件を満たさなかったため、partial として報告されます。 MELRA が「本番サーバーを修正する」のような目標を受け取ることはありません。これには判断が必要であり、 それはモデルの役割です。文を解釈するカーネルでは、保証がモデルに依存してしまいます。

エージェントが接続すると、MELRA はこのループの簡潔なガイド(MCP サーバーの instructions)も送信します。これにより、誰かがプロンプトエンジニアリングをしなくても、モデルは 証拠を宣言し、ステータスを確認し、結果が不明なときに決して盲目的に再試行しないことを把握できます。


動作を確認する

MELRA が処理した各アクションとそのポリシー判定を、ターミナルまたはブラウザーから確認できます。実行結果がある場合は、それぞれの証拠とレシートも確認できます。ここから承認したり、作業を開始したりすることはできず、承認フレーズが表示されることもありません。

ターミナルから

$ melra status
MELRA 0.3.0-alpha.19  developer mode
  Tasks       3 total: 1 awaiting_approval,
              1 policy_blocked, 1 verified_success
  Waiting     1 waiting for approval
  HTTP        127.0.0.1:7457 not running

$ melra tasks
ID        STATUS             OPERATION     UPDATED
64199678  awaiting_approval  file.write    0s ago
ca4aec7a  policy_blocked     terminal.run  1s ago
a1285e0f  verified_success   system.info   1s ago

$ melra watch          # live, until Ctrl-C
6:07:21 PM  task 882cf55c  verified_success
6:07:22 PM  task f813364c  awaiting_approval

melra doctor は Node、SQLite、ブラウザー、ポリシーをチェックし、お使いのエージェントアプリのうち MELRA を参照しているものを報告します。問題を修正するためのコマンドも表示されます。

ブラウザーから: melra serve --http --open

MELRA コンソールの Tasks ビュー:ステータスバッジ付きのフィルター可能なタスクリストと、ポリシー判定、証拠、証明書を表示するタスク。

概要、検索可能なタスクリスト、ライブイベントストリーム付きの永続的なワークフローを確認できます。 スマートフォンの画面幅に対応し、ライトモードとダークモードで表示でき、厳格な Content-Security-Policy を適用して配信されます。


デフォルトで安全

デフォルト
🏠ローカルのみ。 stdio、トークンで保護されたループバック HTTP、または OS ユーザーのみが開けるモード 0600 の Unix ソケットのみです。アカウントもホステッドサービスも不要です。
📴テレメトリーはオフです。
✍️変更には 2 つの条件が必要です。 証拠の宣言 と、正確で期限付きのタスクスコープ承認です。開発者モードではフレーズ、強制モードではオペレーターによる melra approve が必要です。
📁パスはターミナルの作業ディレクトリも含め、ワークスペース内に限定されます。 シンボリックリンクによる逸脱は拒否されます。
🚫シェル、sudo/su、任意のデスクトップキー名は拒否されます。 ターミナルコマンドは名前で許可リストに登録されている必要があります。
🌐プライベート、リンクローカル、クラウドメタデータのアドレスは、許可リストの確認前に、DNS 解決後、ブラウザーと HTTP アダプター自体によってブロックされます。 強制モードではループバックもブロックされますが、ポリシーで許可した場合を除きます。
⚠️ウェブページのコンテンツには信頼できないものとして印が付けられ、ポリシーを変更することはできません。
🔑シークレットは保存前に秘匿化され、エージェントに渡されるのは機能であり、認証情報そのものではありません。
⏱️すべての呼び出しには予算とキャンセルシグナルによる制限が設けられています。 ブラウザーが停止した場合は、ハングせず明確なエラーで終了します。
安全でないローカルモードと 2 つのデプロイモード

上記のすべての制限は、melra serve --unsafe-local(または MELRA_UNHINGED=1)で一度に解除できます。ポリシー、承認、証拠の要件、ワークスペースの 制限、宛先のチェックがなくなります。エージェントには OS ユーザーが持つ権限がそのまま 与えられます。このモードは stderr、melra doctor、melra_capabilities で 通知され、実行された内容は引き続きレシートに記録されます。安全でないローカルモードを参照してください。

デフォルトのインストールにおける率直な制約は、MELRA が要求された操作の結果のみを制御する点です。 MELRA のターミナルとネイティブのターミナルの両方を持つエージェントにとって、カーネルは 任意のものになってしまいます。どちらの状況にあるかを指定するのが MELRA_MODE です。

モード意味
developer(デフォルト)MELRA は要求された操作を制御しますが、エージェントには別の経路がある可能性があり、それを受け入れるモードです。MELRA を 30 秒で試せるのはこのためです。
enforced別の経路が存在しないことを宣言するモードです。エージェントはサンドボックス化され、特権シークレットを持たず、ここを通じてのみこれらのシステムにアクセスします。

MELRA は自身のプロセス内からその宣言を検証できず、検証できるふりもしません。隔離は オペレーティングシステムの役割です。強制モードでは、MELRA が管理するすべての入り口を閉じます。 --unsafe-local は一切受け付けず、ループバック以外にはバインドされません(0600 の Unix ソケットは許可されます)。クライアントによる自己登録はできず、 すべてのレシートに mode が記録されます。オペレーティングシステム側の設定については、 examples/deploy に、CI でそれぞれ検証される強化済みの Docker 実行設定と systemd ユニットがあり、 melra doctor では実際に有効な制限が報告されます。デプロイモード、 脅威モデル、セキュリティポリシーを参照してください。


MELRA の理由

LLM は 何を するかを決めます。ハーネスは、そこに至るまでのループを実行します。それでも、結果として生じる影響が許可されているかを判断し、不確かな変更の再実行を避け、何が起きたかを証明し、処理の途中でクラッシュしても復旧できる仕組みが必要です。現在、こうした仕組みはエージェントのハーネスごとに再構築され、ハーネスとともに消えてしまいます。MELRA はその仕組みを切り出し、エージェントに依存しない形にしたものです。

🚫 一般的なツールサーバー✅ MELRA
  • ツール呼び出しが即座に実行される
  • 成功 = 例外が発生しないこと
  • ポリシーがある場合も、チェックは一度だけ
  • 変更と読み取りが同じように見える
  • 出力が信頼される
  • 永続的な記録がない
  • ルールが単一のエージェント内に存在する
  • 計画と実行は別々の呼び出し
  • 成功 = 宣言された証拠の検証に合格すること
  • ポリシーを実行時に再度チェック
  • 変更には証拠と厳密な承認が必要
  • ページのコンテンツは明示的に信頼されないものとして扱われる
  • 編集済みのレシート + SHA-256 実行証明書
  • ルールは、それを使用したエージェントの終了後も存続する

よく混同される 2 つのレイヤーと並べると、次のようになります。

エージェントハーネスMCP サーバーMELRA
モデルのループと推論✓✗✗
ツール✓✓アダプター経由
エージェント非依存のポリシー通常 ✗可能中核
永続的な影響状態場合によるまれ中核
再起動をまたぐ冪等性さまざままれ中核
再実行せずにクラッシュから復旧さまざままれ中核
独立した検証まれ可能中核
証拠レシートまれ可能中核
複数のエージェントで動作✗✓✓
認証情報の分離さまざまさまざま中核
厳格なケイパビリティ境界さまざま通常 ✗一部提供済み

多くの MCP サーバーがこうした機能を実現できる可能性はあります。どのサーバーも実現できないと主張しているわけではありません。違いは、MELRA ではこれらがツールごとのオプションではなく、実行契約になっていることです。この境界は一部提供済みです。MELRA_MODE=enforced によって、MELRA が管理するすべての経路は閉じられますが、ハーネスがカーネルの外側からファイルシステムにアクセスするのを防ぐ OS レベルの分離は、運用者が構築する必要があります。すぐに実行できる強化済みデプロイ手順は、今後提供される予定です(#52)。

機能の判断基準。 リクエストが通常の決定的なソフトウェアから来た場合でも意味があるものは、すべて MELRA に属します。たとえば、認可、冪等性、認証情報の分離、復旧、検証、影響履歴です。プロンプトの最適化、LLM のメモリ、モデルの選択、プランナー、エージェントの個性は、上位のハーネスに属します。そのため、MELRA の実行経路がモデルを呼び出すことはありません。


できること

エフェクトアダプター

カーネルが契約であり、これらは同梱される実装です。すべてが同じポリシー、承認、予算、検証、レシート、証明書のパイプラインを通ります。これを省略するアダプターは、アダプターとは言えません。

アダプター実装内容
🗂️ファイルルート内に制限された読み取り、ハッシュ計算、アトミック書き込み、移動、ディレクトリ作成、削除。シンボリックリンクによるルート外への脱出も防御します
💻ターミナルシェルを介さないフォアグラウンドおよび監視付きバックグラウンドプロセス。許可リスト、特性、タイムアウト、対話型入力、キャンセル、秘匿化に対応します
🌐ブラウザー分離された Playwright セッション、セマンティック DOM ターゲット、サイズ制限付きアーティファクト、ネットワークおよびポップアップのポリシー、オプトイン方式のプロファイル、条件に基づく待機処理に対応します。また、すべてのブラウザー呼び出しに上限があり、ページが停止した場合は明確に失敗します
🖥️コンピューター機能の検出、アクセシビリティツリーと OCR による検査、macOS、Windows、および対応する Linux/X11 環境で管理されたスクリーンショット、ポインター、ドラッグ、キーボード、スクロールに対応します
📡HTTPGET/HEAD は読み取りとして扱い、それ以外のすべてのメソッドは承認を必要とする最大 1 回の変更として扱います。宛先チェックで解決されたアドレスに固定し、認証情報は呼び出し元に渡さず、カーネルが注入します
🧠運用メモリーアダプターではなくカーネルサービスです。MELRA が自身のエフェクトについて把握している内容を、スコープ付き SQLite ストレージに保存し、ハイブリッドランキング、新鮮度、有効期限、置き換え、来歴、秘匿化に対応します

データベース、クラウド、SaaS のアダプターは設計中で、ロードマップに記載されています。現時点では同梱されていません。ユーザーに関するセマンティックメモリー(設定、会話履歴)は、ここではなくハーネスに属します。

意図的に小さくしたツール群

アダプターの前面に 12 個のツールと、永続的なワークフローコントローラーを 1 つ備えています。CLI、両方の SDK、ループバック HTTP、Unix ソケットは、同じ 12 個の操作にアクセスします。このリストはカーネルの契約であり、MCP 固有の API ではありません。

ツール目的
melra_capabilities操作、プラットフォームのサポート、制限、ポリシーの適用状況を確認します
melra_plan制限付きの操作を 1 つ検証、保存し、ポリシーをチェックします
melra_execute承認済みのプランを実行し、宣言された結果を検証します
melra_task_status永続化されたタスクの状態を読み取ります
melra_task_cancel保留中または実行中の作業を協調的にキャンセルします
melra_receipt秘匿化された証拠と実行証明書を取得します
melra_task_judge待機中のタスクの semantic な質問に yes、no、cannot_tell のいずれかで回答します。プランを作成した主体として回答することはありません
melra_workflow_plan制限付きワークフローを検証、事前チェック、暗号化して保存します
melra_workflow_advance準備ができたスケジューリングのウェーブを 1 つ実行します
melra_workflow_status永続化されたワークフローの状態を読み取ります
melra_workflow_cancel終端状態ではないワークフローの作業を協調的にキャンセルします
melra_workflow_control実行位置を失わずに実行を一時停止、再開、または中断します

判定では宣言どおりに判定者が記録され、証明書ではレシートに宣言された主体である executedBy の横に記載されます。MCP 経由では、human: の判定者であってもハーネスの申告にすぎません。melra judge からの cli: の判定者だけが、オペレーター用インターフェースを通じたものです。

モデルがすでに知っているツール名を使いたいですか? MELRA_HARNESS_TOOLS=1 を設定すると、これらに加えて 13 個のツール(read_file、write_file、run_command、browser_click、approve、…)が利用可能になります。別の実行経路が追加されるわけではありません。それぞれが通常のタスクを構築し、同じパイプラインを実行します。通常のツール名を参照してください。

永続性があり、再起動に安全なワークフロー

ワークフローでは、operation、approval、condition、parallel、bounded_loop、 checkpoint、compensation、human_input、delegation ノードを組み合わせます。すべての効果は 引き続きタスクパイプラインを経由します。以下の各 CLI 呼び出しは新しいプロセスとして実行されるため、 デーモンなしで再起動時の永続性を検証できます。

melra workflow plan --definition examples/workflows/restart-safe.json   # save the id
melra workflow advance <workflow-id>
melra workflow advance <workflow-id>          # exits 3 with the write's approval challenge
# developer mode echoes the phrase; enforced mode runs `melra approve <task-id>` instead
melra workflow advance <workflow-id> --approval '<approval-id>:<exact phrase>'
melra workflow advance <workflow-id>
planned            stateVersion=2
running            stateVersion=4   inspect=verified_complete
awaiting_approval  stateVersion=6   phrase="APPROVE <digest prefix>"   (developer mode)
running            stateVersion=8   write=verified_complete
verified_complete  stateVersion=11  checkpoint=verified_complete

どの行の後でもプロセスを停止できます。次のコマンドは同じ MELRA_HOME から再開します。中断された読み取りは再試行される場合がありますが、中断された変更が黙って 繰り返されることはありません。再観測によって確定するか、recovery_required で停止します。

workflow advance と resume は、実行が正常な場合は終了コード 0、承認待ちの場合は 3、--input 待ちの場合は 4、 失敗した場合、partially_complete または cancelled で終了した場合、あるいは復旧が必要な場合は 2 で終了します。workflow plan、pause、suspend は、 実行を計画または停止した場合に終了コード 0 で終了します。完了、キャンセル、失敗した実行の一時停止または中断は拒否されます。workflow inspect は、どの状態でも 終了コード 0 で終了します。workflow cancel は、実行を cancelled にした場合は終了コード 0、すでに完了している実行の場合など、そうならなかった場合は 1 で終了します。 エラーは終了コード 1 です。

このリリースに含まれるすべての機能
0.3.0-alpha.11 と 0.3.0-alpha.12 で追加根拠
9 種類のノードに対応した、再起動に安全な有界ワークフローE2E で実際の MCP プロセスを停止し、置き換えてから再開
タスク、ワークフロー、結果のペイロードを正確に暗号化AES-256-GCM によるストレージと、SQLite/WAL および公開プロジェクション全体での平文漏えいチェック
変更の再実行を黙って行わない復旧8/8 の決定論的な復旧シナリオ、重複ゼロ、誤った成功ゼロ
ループバック HTTP、0600 の Unix ソケット、イベントストリーム、読み取り専用コンソールstdio と同じランタイム、すべてのルートでトークンを要求、JSON API への非 GET リクエストは 405
クライアントが自ら認証し、すべてのレシートに名前が記録される承認からトークン発行までの OAuth 2.1 登録
2 種類のデプロイモードMELRA_MODE=enforced では --unsafe-local とループバック以外へのバインドを拒否
HTTP と API 呼び出しを第一級の効果として扱う応答が返らなかった変更は、失敗ではなく不明として報告
エージェントには認証情報ではなくケイパビリティを付与カーネルがシークレットを保持し、ホストとケイパビリティでスコープを制限。許可にはサイズと有効期限を設定
根拠の把握方法を示すエビデンスすべてのエビデンス項目に execution / state / independent / semantic の強度を付与
独立チャネルによる検証http_resource_matches は POST で実行し、別の GET で検証
独自のエビデンスタイプ登録済みの検証器が { "type": "custom" } エビデンスに応答。未登録の場合、計画は拒否され、カスタムエビデンスの強度は常に最低
26 種類のエージェントアプリ向けセットアップmelra setup が各アプリ独自の形式で書き込み。Claude Code、OpenCode、Hermes Agent を実際の Mac でパッケージ済みリリースに接続
確認可能な OS 分離melra doctor がケイパビリティ、no_new_privs、seccomp、読み取り専用ルートを報告。CI では強化された Docker および systemd のレシピで実行
自ら作成したガバナンスベンチマークGovBench:実際のランタイムで 362 ケースを実行、安全性 312/312、有用性 50/50

詳細は変更履歴をご覧ください。


エビデンスとベンチマーク

数値は、コミット済みのスクリプトと JSON アーティファクトに基づいており、データセットのハッシュと主張の範囲を明示しています。これらはコンポーネントの測定値であり、MELRA が「最高」であるという主張でも、比較条件の異なるベンチマーク同士を比較できるという主張でもありません。

内容結果意味
✅安全性と実行の評価55/55決定論的なポリシー、機能の許可、認証情報のスコープ、トラバーサル、ターミナル、メモリ、コンピューター、HTTP、キャンセル、検証のシナリオ
🔁Durable Core 評価8/8期待どおりの復旧率 100%、実行の重複 0 件、誤った成功 0 件、イベントの整合性 100%
🛡️GovBench(独自作成)安全性 312/312、有用性 50/50実際のランタイムを通した、モデルを使用しない 362 件のケース:封じ込め、承認の整合性、検証の正直さ、厳密な 1 回実行、秘匿化、正当な作業に対する誤検知。初回実行では実際のバグが 2 件見つかり(293/307)、両方とも修正済みです。ガバナンスによるアクションあたりの遅延は約 0.5~1.4 ms です
🧠LoCoMo 検索0.7597 coverage@20証拠を含む質問 1,982 件を、モデル、埋め込み、ネットワークの呼び出しなしで処理します。2026-10-14 に再実行し、すべての指標で同一の結果を確認しました
🧠合成リコール100/100 Recall@11,000 件のレコードに埋め込んだ事実に対する回帰テスト
🌐静的ページの安定化183.7 ms p50(対 301.3 ms)正しい読み取り結果は 10/10 で変わらず、待ち時間を 39% 削減
🌐レンダリングが遅い場合の安定化正解 10/10(対 0/10)条件に基づく待機では最終 DOM を取得できます。固定の 300 ms 待機では読み取りが早すぎます
💻ターミナル検証済み 30/30シェルを介さないプロセス起動。測定したマシンで p50 は 48.1 ms
🖥️コンピューター制御プレーンプローブ 30/30アダプター検出の p50 は 0.032 ms。これはデスクトップタスクの成功率ではありません

生のアーティファクト:コアマイクロベンチマーク、 LoCoMo、および GovBench。

リポジトリには、事前登録済みのブラウザーエージェント用ハーネス(MiniWoB-125 と WebArena-Verified Hard-30 の登録済みサブセット)も含まれています。タスク ID、上流リビジョン、 データセットのハッシュは固定されています。スコアはまだ公表していません。固定された分母での全件実行が公表ゲートを通過した後に限り、公表します。MELRA は公式な OSWorld、WebArena、LongMemEval の提出を行っていません。

スコアを再現する
# the full validation gate
pnpm check && pnpm evals && pnpm e2e && pnpm pack:check && pnpm security:audit
pnpm --filter @melra/evals evaluate:durable-core -- --publishable

# memory, browser, terminal and computer microbenchmarks
pnpm benchmark:core

# governance benchmark: 362 model-free cases, loopback fixtures only
pnpm benchmark:govbench

# LoCoMo (dataset not vendored: CC BY-NC 4.0)
git clone https://github.com/snap-research/locomo.git /tmp/locomo
pnpm benchmark:locomo -- --dataset /tmp/locomo/data/locomo10.json \
  --output docs/research/results/locomo-retrieval.json

# browser-agent harness contract checks (no model, no network)
pnpm benchmark:browser:check
pnpm benchmark:browser:verify-upstream

# hardened container and a real MCP smoke test
docker build -t melra:local . && docker run --rm melra:local doctor && pnpm docker:smoke

MiniWoB スイートでは、固定された MiniWoB++ アセットとエージェント設定も必要です。 調査インデックスと 方法論を参照してください。実行出力(HAR、スクリーンショット、動画、 トランスクリプト)は git の対象外であり、決してコミットしてはいけません。


開発者向け

SDK

パッケージ
README の画像 TypeScript@melra/sdk
README の画像 Pythonmelra(型付き、3.11–3.14)
📜 JSON コントラクト@melra/protocol, @melra/receipt-schema

どちらの SDK も、ローカルサーバーを起動するか、HTTP または Unix ソケット経由で実行中のサーバーに接続します。 トークンは常に明示的に渡され、オプトインしない限り、リモートホストへの平文 HTTP 接続は拒否されます。

CLI の概要

目的コマンド
ガイド付きセットアップmelra setup
このマシンを確認melra doctor
サーバーを起動(stdio / HTTP / socket)melra serve · --http --open · --socket <path>
アクティビティを確認melra tasks · watch · status
タスクを1つ実行melra run --request task.json
エージェントが計画したタスクを承認melra approve <task-id> · ブラウザーの場合:melra console
タスクの意味に関する質問に回答melra judge <task-id> --judgement <id> --verdict yes|no|cannot_tell
レシートを調査melra inspect <task-id>
ポリシーをテストmelra policy test --request task.json
適合性を確認melra conformance
リポジトリの構成
apps/cli/                   CLI and stdio entrypoint

kernel services
packages/protocol/          strict task, workflow, event and operation schemas
packages/runtime-core/      task/workflow lifecycle, events, recovery
packages/policy-core/       local policy and scoped approvals
packages/storage-sqlite/    transactional tasks, workflows, events, evidence
packages/verifier-core/     deterministic evidence predicates
packages/receipt-schema/    receipts and execution certificates
packages/memory/            operational memory: scoped retrieval and lifecycle
packages/server/            runtime composition, MCP, loopback HTTP and Unix socket

reference effect adapters
packages/file-runtime/      confined filesystem operations
packages/terminal-runtime/  shell-free process supervision
packages/browser-runtime/   isolated browser automation and stable-DOM wait
packages/computer-runtime/  governed local computer-use adapters
packages/http-runtime/      governed HTTP and API calls

clients and evidence
packages/sdk-ts/            TypeScript client SDK
sdk-py/                     Python client SDK
benchmarks/browser-agent/   pre-registered browser-agent evaluation harness
evals/                      safety and durable crash-recovery evaluations
scripts/                    benchmark and release checks
docs/research/              methods, findings and raw results
examples/                   runnable task examples

MELRA は機能主導であり、言語に制限されません。計測によって実際の利点が確認され、同じ適合性テストスイートに合格する場合は、Rust、Go、Swift、C# などの言語を追加できます。

実行可能な例では、読み取り専用のシステムタスク、検証済みのファイル書き込み、ターミナルチェック、ブラウザーの調査、スコープ付きメモリ、コンピューター機能の検出、ガバナンスされた API 呼び出し、独立した検証、再起動に対応したワークフローを取り上げています。


ドキュメント

📦 インストールとクライアントのセットアップ🧭 機能と制限🏛️ アーキテクチャ
🔬 研究とベンチマーク🔗 互換性✅ 検証の根拠
🛡️ 脅威モデル🎖️ 適合性レベル🗺️ ロードマップ
📝 変更履歴🤝 コントリビューションガイド🔐 セキュリティポリシー

コントリビューション

コード、アダプター、クライアント統合、ベンチマーク用ハーネス、検証述語、ドキュメント、脅威分析を歓迎します。

まずはこちら内容
初めての方に適した課題対象範囲が明確で、変更するファイルが課題内に記載されています
協力者募集中規模は大きめですが、内容は明確です
公開中の設計提案実装前に未解決の質問へコメントしてください。意味検証 #54もご覧ください
コントリビューションガイドパイプラインの仕組みと、変更ごとに影響を受けるファイルについて説明しています
  1. CONTRIBUTING.mdと行動規範をお読みください。
  2. DCO に基づいてコミットに署名してください(git commit -s)。
  3. プルリクエストを作成する前にpnpm checkを実行してください。リンク、環境変数の表、CHANGELOG の形式もチェックされます。
  4. 脆弱性は非公開の脆弱性報告を通じて報告してください。公開課題では報告しないでください。

ライセンス

ソフトウェアとドキュメントはApache License 2.0の下でライセンスされています。公式ロゴとヒーローアートワークはCC BY-ND 4.0の下でライセンスされています。サードパーティのベンチマークデータセットにはそれぞれ独自のライセンスが適用され、このリポジトリには含まれていません。


XAGI Labsによってオープンに開発されています。

MELRA ブランドアセット © XAGI Labs Private Limited、CC BY-ND 4.0 の下でライセンスされています。

コメント

MCP は初めてですか?

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

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