MIT License · Public Alpha 0.1.0a2

AIの外部操作を、止める。確かめる。失敗しても戻れるようにする。

RPRは、AIエージェントや自動処理がファイル、API、メッセージ、業務システムを変更するときに、誰の権限で実行したか、何が起きたか、結果をどう確かめたか、失敗後に誰が修復し、どこから再開するかを一つの経路として残すPython Runtimeです。

Version
0.1.0a2
Tag
v0.1.0a2
確認環境
Linux · Python 3.11
操作の提案
権限と承認
RPR
実行と結果確認
修復 · 再開 · 人間へ返す

RPRが扱うこと

「たぶん成功した」で処理を終わらせない。

外部システムへの書き込みは、通信が切れた瞬間に成功か失敗か分からなくなることがあります。RPRは、その不確実さを消さずに保持し、二重実行を避けながら確認・修復・再開へつなぎます。

人間の承認で止める

重要な操作はHuman Gateで停止し、承認されるまで外部作用を始めません。誰が解除できるかも記録します。

実行した事実を残す

操作ごとに実行試行と識別子を保存します。再起動や再試行が起きても、同じ操作を無自覚に二重実行しません。

外部状態を読み直す

関数の戻り値やHTTP応答だけで完了にせず、変更先を読み直して、本当に期待した結果になったか確認します。

結果不明を結果不明のまま残す

書き込み後に通信が切れた場合はwrite_status_unknownとして保存し、根拠のない成功判定や自動再送を防ぎます。

修復と再開を分ける

一部だけ進んだ処理は、通常実行とは別の修復経路へ返します。再開条件が整うまで勝手に先へ進みません。

誰が引き受けるかを残す

元に戻せない影響が残る場合も、監視、説明、次の判断を担う担当者を消さずに保持します。

RPRと導入側の役割

RPRだけで、システム全体の安全が完成するわけではありません。

RPRは、外部操作の状態、権限、証拠、結果不明、修復、再開を管理します。一方、認証、資格情報、ネットワーク、保存先、業務ルール、承認者の選定、結果確認に使うデータ源は、導入するシステム側で設計する必要があります。

この役割分担を明示することで、RPRが保証する範囲と、導入側が責任を持つ範囲を混同しないようにしています。

現在のMCP対応

MCPの応答だけで「外部変更も成功した」と決めない。

RPRは、Host ApplicationとLocal MCP Serverの間に置けます。現在のPublic Alphaでは、Subprocess起動、stdio Transport、JSON-RPC framing、ServerとToolのbinding、Execution Attemptの継続、送信済みかもしれないCallのfail-closed処理を実装しています。

変更を伴うToolでは、MCPの成功応答だけを完了証拠にせず、必要に応じて独立readbackを要求します。結果を確認できない場合は、write_status_unknownとして保持します。

ブラウザで動く実RPRデモ

状態遷移の見本ではなく、公開wheelをその場で実行します。

デモページは、GitHub ActionsでRPRのソースから生成したwheelをPyodideへ読み込み、ブラウザ内で実際のRPR、SQLite、実行試行台帳、証拠チェーン、再起動後の照合を動かします。

外部の支払い先だけは安全な模擬providerへ置き換えています。RPR本体はモックではありません。

Public Alphaへの参加

あなたの環境で起きたことを、再現できる形で教えてください。

Windows、macOS、各種Linux、コンテナ、proxy/TLS、企業内認証、remote MCP、外部サービス連携、フレームワーク統合など、開発チームだけでは確認できない環境の報告を募集しています。

不具合だけでなく、導入で迷った点、状態名が分かりにくかった箇所、足りない例も歓迎します。

導入方法

まずはPyPIから、影響のない環境で試してください。

公開リポジトリ、GitHub Prerelease、PyPIパッケージ、製品サイト、ブラウザデモを公開しています。Public Alphaなので、最初は隔離した使い捨て環境で確認してください。

python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install responsibility-pathway-runtime==0.1.0a2
rpr --help