MELRA について
MELRAは、Agent開発者向けのローカル実行ランタイムで、経由するツール呼び出しを統制します。ポリシーに基づく許可と宣言された証拠の検証を行い、結果の不確かな変更は再実行せず復旧待ちにします。
主な機能
- 01ポリシーによる操作の判定と許可
- 02リスクの高い変更への承認
- 03宣言された証拠による結果検証
- 04変更の最大1回のディスパッチ
- 05ハッシュ連鎖付きの秘匿レシート
活用シーン
- 01Agentのファイル操作やコマンド実行の制限
- 02リスクの高い変更を承認してから実行
- 03証拠に基づくコマンドやファイル操作の確認
- 04クラッシュ後の不確かな変更の照合と監査
MCP 対応
MELRAはMCP経由で実行ツールを提供し、MCPクライアントから利用できます。CLIで複数のMCPクライアントを設定でき、SDKからランタイムを起動または接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
MELRA
Modular Execution Layer for Reliable Autonomy
AI エージェントが実行内容を決定します。MELRA は、ツール呼び出しの承認、検証、復旧の方法を管理します。
MELRA を介してルーティングするエージェントのツール呼び出し向け、オープンソースのローカル実行ランタイムです。 各呼び出しをポリシーに照らして確認し、必要に応じて承認を求め、宣言された 証拠を検証し、実行から結果までの内容を秘匿化したレシートに記録します。各タスクで、MELRA は 変更操作を最大 1 回だけディスパッチします。不確実な結果は再実行せず、照合のために保留します。 外部への副作用を厳密に 1 回だけにできるかどうかは、引き続きプロバイダーに依存します。 ほかのツールを介して行われる呼び出しは、MELRA の管理対象外です。
対応環境
26 秒のデモ · クイックスタート · 仕組み · 動作を見る · ドキュメント · 貢献 · ディスカッション · Product Hunt での公開
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 は証拠またはプロバイダーの情報に基づいて処理を確定します。確定できないものは |
🧾 何が起きましたか?MELRA が実行し、結果に至ったすべてのアクションについて、秘匿化され、ハッシュで連結されたレシートが残るため、何が実行され、誰が依頼し、なぜ許可されたのかを監査できます。 |
MELRA は、サポート対象のエージェントをまたいで、MELRA 経由でルーティングされたツール呼び出しに関するこれらの問いに、一か所で答えます。これらの呼び出しについては、オペレーティングシステムがアプリの下で動作するように、エージェントの下で動作します。
**LLM が推論します。ハーネスがループを管理します。MELRA は、MELRA 経由でルーティングされた呼び出しのエフェクトのライフサイクルを管理します。**モデルやエージェントを切り替えても、MELRA のポリシー、承認、認証情報、履歴、レシートはそのまま維持できます。
エージェントとの連携
MELRA は Model Context Protocol に対応しているため、あらゆる MCP クライアントで利用できます。次のクライアントでは、melra setup --client <name> を実行すると、クライアント独自の形式と場所に設定を書き込みます。また、melra doctor を実行すると、それぞれが MELRA を参照しているか確認できます。
| エージェント | --client | 書き込まれる設定 |
|---|---|---|
claude-code | <project>/.mcp.json | |
claude-desktop | claude_desktop_config.json | |
codex | ~/.codex/config.toml | |
cursor | ~/.cursor/mcp.json | |
| 🟦 VS Code(Copilot エージェントモード) | vscode | <project>/.vscode/mcp.json |
gemini | ~/.gemini/settings.json | |
windsurf | ~/.codeium/windsurf/mcp_config.json | |
zed | Zed の settings.json(コメントを保持) | |
| 🧩 Cline | cline | Cline の cline_mcp_settings.json |
| ⬛ OpenCode | opencode | ~/.config/opencode/opencode.json |
| 👻 Kiro | kiro | ~/.kiro/settings/mcp.json |
| 🪿 Goose | goose | ~/.config/goose/config.yaml |
| ▶️ Continue | continue | <project>/.continue/mcpServers/melra.yaml |
| ⚡ Amp | amp | ~/.config/amp/settings.json |
| 🦞 OpenClaw | openclaw | ~/.openclaw/openclaw.json(mcp.servers) |
| ⚕️ Hermes Agent(Nous Research) | hermes | ~/.hermes/config.yaml(mcp_servers) |
copilot | ~/.copilot/mcp-config.json | |
| 🐉 Qwen Code | qwen | ~/.qwen/settings.json |
| 🅰️ Auggie(Augment) | auggie | ~/.augment/settings.json |
warp | ~/.warp/.mcp.json | |
junie | ~/.junie/mcp/mcp.json | |
| 🤖 Factory Droid | droid | ~/.factory/mcp.json |
| 🌙 Kimi Code | kimi | ~/.kimi-code/mcp.json |
| 🪁 Kilo Code | kilo | ~/.config/kilo/kilo.jsonc(コメントを保持) |
| 🧪 LM Studio | lmstudio | ~/.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 を実行します)。そのため、計画時には何も実行されません。
以下は、開発者モードで最初から最後まで実行する変更の例です。
強制モードでは、チャレンジにフレーズは含まれません。
会話の外で 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 が処理した各アクションとそのポリシー判定を、ターミナルまたはブラウザーから確認できます。実行結果がある場合は、それぞれの証拠とレシートも確認できます。ここから承認したり、作業を開始したりすることはできず、承認フレーズが表示されることもありません。
|
ターミナルから
|
ブラウザーから:
概要、検索可能なタスクリスト、ライブイベントストリーム付きの永続的なワークフローを確認できます。 スマートフォンの画面幅に対応し、ライトモードとダークモードで表示でき、厳格な 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 |
|---|---|
|
|
よく混同される 2 つのレイヤーと並べると、次のようになります。
| エージェントハーネス | MCP サーバー | MELRA | |
|---|---|---|---|
| モデルのループと推論 | ✓ | ✗ | ✗ |
| ツール | ✓ | ✓ | アダプター経由 |
| エージェント非依存のポリシー | 通常 ✗ | 可能 | 中核 |
| 永続的な影響状態 | 場合による | まれ | 中核 |
| 再起動をまたぐ冪等性 | さまざま | まれ | 中核 |
| 再実行せずにクラッシュから復旧 | さまざま | まれ | 中核 |
| 独立した検証 | まれ | 可能 | 中核 |
| 証拠レシート | まれ | 可能 | 中核 |
| 複数のエージェントで動作 | ✗ | ✓ | ✓ |
| 認証情報の分離 | さまざま | さまざま | 中核 |
| 厳格なケイパビリティ境界 | さまざま | 通常 ✗ | 一部提供済み |
多くの MCP サーバーがこうした機能を実現できる可能性はあります。どのサーバーも実現できないと主張しているわけではありません。違いは、MELRA ではこれらがツールごとのオプションではなく、実行契約になっていることです。この境界は一部提供済みです。MELRA_MODE=enforced によって、MELRA が管理するすべての経路は閉じられますが、ハーネスがカーネルの外側からファイルシステムにアクセスするのを防ぐ OS レベルの分離は、運用者が構築する必要があります。すぐに実行できる強化済みデプロイ手順は、今後提供される予定です(#52)。
機能の判断基準。 リクエストが通常の決定的なソフトウェアから来た場合でも意味があるものは、すべて MELRA に属します。たとえば、認可、冪等性、認証情報の分離、復旧、検証、影響履歴です。プロンプトの最適化、LLM のメモリ、モデルの選択、プランナー、エージェントの個性は、上位のハーネスに属します。そのため、MELRA の実行経路がモデルを呼び出すことはありません。
できること
エフェクトアダプター
カーネルが契約であり、これらは同梱される実装です。すべてが同じポリシー、承認、予算、検証、レシート、証明書のパイプラインを通ります。これを省略するアダプターは、アダプターとは言えません。
| アダプター | 実装内容 | |
|---|---|---|
| 🗂️ | ファイル | ルート内に制限された読み取り、ハッシュ計算、アトミック書き込み、移動、ディレクトリ作成、削除。シンボリックリンクによるルート外への脱出も防御します |
| 💻 | ターミナル | シェルを介さないフォアグラウンドおよび監視付きバックグラウンドプロセス。許可リスト、特性、タイムアウト、対話型入力、キャンセル、秘匿化に対応します |
| 🌐 | ブラウザー | 分離された Playwright セッション、セマンティック DOM ターゲット、サイズ制限付きアーティファクト、ネットワークおよびポップアップのポリシー、オプトイン方式のプロファイル、条件に基づく待機処理に対応します。また、すべてのブラウザー呼び出しに上限があり、ページが停止した場合は明確に失敗します |
| 🖥️ | コンピューター | 機能の検出、アクセシビリティツリーと OCR による検査、macOS、Windows、および対応する Linux/X11 環境で管理されたスクリーンショット、ポインター、ドラッグ、キーボード、スクロールに対応します |
| 📡 | HTTP | GET/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@1 | 1,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
どちらの SDK も、ローカルサーバーを起動するか、HTTP または Unix ソケット経由で実行中のサーバーに接続します。 トークンは常に明示的に渡され、オプトインしない限り、リモートホストへの平文 HTTP 接続は拒否されます。 |
CLI の概要
|
リポジトリの構成
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もご覧ください |
| コントリビューションガイド | パイプラインの仕組みと、変更ごとに影響を受けるファイルについて説明しています |
- CONTRIBUTING.mdと行動規範をお読みください。
- DCO に基づいてコミットに署名してください(
git commit -s)。 - プルリクエストを作成する前に
pnpm checkを実行してください。リンク、環境変数の表、CHANGELOG の形式もチェックされます。 - 脆弱性は非公開の脆弱性報告を通じて報告してください。公開課題では報告しないでください。
ライセンス
ソフトウェアとドキュメントはApache License 2.0の下でライセンスされています。公式ロゴとヒーローアートワークはCC BY-ND 4.0の下でライセンスされています。サードパーティのベンチマークデータセットにはそれぞれ独自のライセンスが適用され、このリポジトリには含まれていません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。