Arcaeon について
Arcaeonは、Agentの活動を記録・検証するコマンドラインツールで、検証可能なログを必要とするチーム向けです。ハッシュチェーン台帳で改変や並べ替えを検出し、任意の証人ピンで末尾の切り詰めにも対処します。
主な機能
- 01ハッシュチェーン形式の活動台帳
- 02行を特定する整合性チェック
- 03検証可能なポータブルレシート
- 04MCP呼び出し記録プロキシ
- 05証人による台帳のピン留め
活用シーン
- 01CIでのAgentログ検証
- 02MCPツール呼び出しの記録と確認
- 03第三者検証用の台帳共有
MCP 対応
任意で起動できるMCPサーバーが、台帳、vet、証人のツールを公開します。プロキシ機能では、別のMCPサーバーへの呼び出しも記録できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| record | object | はい |
詳細
arcaeon
エージェントが行ったことを、エージェント自身がひそかに書き換えられない形で記録し、それを疑う人が誰でも検証できるようにします。
エージェントが記録する各行は、その直前の行とハッシュチェーンでつながっています。行を変更したり、削除したり、2 行を入れ替えたりすると、検証によってチェーンが途切れた行が特定されます。ファイルを他の人に渡せば、相手はあなたに何も尋ねることなく、同じ検証を実行できます。
1 つのパッケージ。コマンドは 1 つです:arcaeon <verb>。
インストール
pip install arcaeon
Python 3.10 以降が必要です。基本インストールには依存関係がありません。つまり、pip がインストールするのは arcaeon だけです。プロトコル SDK も、暗号ライブラリも、パーサーもインストールされません。以下の Record、Prove、Save の各リストにある機能は、すべて Python 標準ライブラリで動作します。また、インポート時にネットワーク接続は行いません。ホスト型の動詞は実行時に接続を開き、接続が必要と明記された一部のオプション(proxy --pin-witness や、各引用をオンラインで検索する receipt cite)も同様です。それ以外はすべてオフラインで動作します。
負荷の大きい機能は追加パッケージに分かれています。必要なものだけ追加してください。
| 追加パッケージ | 追加される機能 | インストールされる依存関係 |
|---|---|---|
arcaeon[mcp] | arcaeon mcp(MCP サーバー、および arcaeon mcp --tools)、vet serve、vet probe | MCP Python SDK とその依存関係(暗号ライブラリを含む約 30 個のパッケージ) |
arcaeon[ts] | vet の TypeScript チェック | tree-sitter |
arcaeon[sign] | 署名付き vet レポート(badge --receipt、および UNSIGNED ではなく SIGNED のシール)、レシート署名チェック | cryptography |
arcaeon[all] | 上記 3 つすべて | 上記すべて |
pip install "arcaeon[mcp]"
同じパッケージを使う、ほかのインストール方法:
pipx install "arcaeon[mcp]"
pipx を使うと、arcaeon は他の Python パッケージとは別の領域にインストールされます。そのうえで、arcaeon がパスに追加されます。
uvx arcaeon demo
uv の uvx を使うと、インストールを残さずに一度だけ実行できます。このデモでは 2 行を記録し、1 語を変更して、BROKEN の行を表示します。
py -m pip install --user arcaeon
Windows で pip が見つからない場合は、Python に付属する py ランチャーを使って、自分のユーザー用にのみインストールできます。管理者権限は不要です。
60 秒で始める
2 行を記録し、検証してから、履歴の 1 語を変更し、もう一度検証します。これらの行は、PowerShell、cmd、POSIX シェルでそのまま実行できます。--field KEY=VALUE を使うと行を自動で作成できるため、引用符付きの JSON を指定する必要はありません。これは Windows で重要です。PowerShell 5.1 は、'{"tool": "search"}' のような JSON 引数の内側の二重引用符を、arcaeon が受け取る前に取り除いてしまうためです。
$ arcaeon log agent.jsonl --field tool=search --field query=weather
<the new row's chain value>
$ arcaeon log agent.jsonl --field tool=send_email --field to=ops
<the new row's chain value>
$ arcaeon verify agent.jsonl
{
"verdict": "VERIFIED",
"ok": true,
"rows": 2,
...
(exit 0)
$ python -c "import pathlib; p = pathlib.Path('agent.jsonl'); p.write_text(p.read_text().replace('weather', 'sunshine'))"
$ arcaeon verify agent.jsonl
{
"verdict": "BROKEN",
"ok": false,
...
"first_break": "line 1: chain mismatch",
...
(exit 1)
これがすべてです。最初の行の 1 語を編集すると、検証によってその変更が検出され、行が特定されました。終了コード 0 は VERIFIED、終了コード 1 は BROKEN を意味します。CI のゲートでは終了コードだけを使用できます。
検出できないのは、最後の行を削除することです。詳しくは「制限事項」と、解決策となる arcaeon pin をご覧ください。
動詞
3 つのカテゴリがあります。使用法と例を含む完全なリファレンスは、docs/VERBS.md をご覧ください。
Record:起きたことを記録する
log:台帳に JSON の行を 1 つ追加します。verify:台帳のチェーンを検証します。結果は VERIFIED、BROKEN、または COULD NOT LOOK です。receipt:他の人が検証できるポータブルなレシートを発行または検証します。once:副作用(返金やメール送信など)が 2 回ではなく 1 回だけ実行されたことを証明します。proxy:MCP サーバーの前段に置き、すべてのツール呼び出しを記録します。pin:台帳の現在のヘッドを、証人、ローカルファイル、またはホスト型の証人に渡します。deal:購入の双方で、手順ごとに記録します。
Prove:記録された内容を検証する
reconcile:同じ呼び出しを記録した 2 つのテープを照合します。結果は MATCHED、MISSING、ALTERED、または COULD NOT LOOK です。audit:ログを検証し、ヘッドをピン留めするか、1 つのバンドルとしてエクスポートします。vet:MCP サーバーのソースを読み取り、評価します。コードは実行しません。badge:MCP サーバー用の無料の Markdown バッジと JSON レポートを作成します。seal:同じバッジに、ホスト型の証人によるシールを付けます。有料です。baseline:固定されたプローブセットのスコアを、変更の前後で比較します。compact:コンテキストの圧縮で何が破棄されたかを示すレシートを検証します。
保存:使用するトークンを減らす
distill:ツールの出力をトークン予算に合わせて削減し、削った内容を記録します。dedup:テキストのリストから、ほぼ同一のものを取り除きます。meter:独自ツールのキーごとの使用回数と月間上限を管理します。
その他
stamp、credits、buy:ホスト型の窓口(以下を参照)。mcp:MCP サーバー(以下を参照)。selftest:同梱されているすべてのセルフチェックを実行します。version:パッケージと各パーツのバージョンを表示します。
ホスト型の窓口
stamp、pin --remote、seal、credits は、実行したときに限り、HTTPS 経由でホスト型の証人 witness.arcaeon.io に接続します。buy はパッケージに同梱されたオファーのファイルを読み込み、リクエストは送信しません。
arcaeon stamp FILE:ファイルの sha256 とサイズを送信します。ファイルの内容は送信しません。キーがなくても、無料の1日あたりの利用枠内で使えます。arcaeon pin LEDGER --ns NAME --remote:台帳の先頭をホスト型の証人に記録します。ARCAEON_KEYが必要です。arcaeon seal PATH:MCP サーバーを評価し、レポートを封印します。ARCAEON_KEYのみが必要で、クレジットを1つ使用します。証人によるピン留めが封印になります。台帳の先頭を記録し、お使いのマシンからの署名は確認しません。arcaeon[sign]エクストラをインストールし、MCP_VET_RECEIPT_KEYに署名キーを設定すると、レポートにも署名され、封印にはSIGNEDと表示されます。ベースインストールではUNSIGNEDと表示されますが、同様に封印されます。ARCAEON_KEYがない場合は何も送信されず、無料バッジは受け取れますが、終了コードは3になります。キーでピン留めできるのは、そのキー自身の名前空間のプレフィックス内だけです。自分のプレフィックスを把握しておく必要はありません。デフォルトの名前空間が拒否された場合、sealは拒否メッセージからプレフィックスを読み取り(クレジットは消費されません)、<prefix>-sealed-scansにピン留めします。--nsを指定すれば、自分で選択できます。arcaeon credits:残高を表示します。ARCAEON_KEYが必要です。確認は無料です。arcaeon buy:購入手続きのリンクを表示します。ページを開いたり、カード情報を受け取ったりすることはありません。支払いは Stripe のページで行います。
ARCAEON_KEY は設定項目が1つだけです。パスワードと同じように扱ってください。キーが漏れると、あなたの名前でピン留めされるおそれがあります。プランと価格については、arcaeon.io/pricing を参照してください。
AI の窓口
pip install "arcaeon[mcp]"
arcaeon mcp
arcaeon mcp は、stdio で MCP サーバーを起動します。エージェントに台帳、審査、証人のツールを提供します。arcaeon mcp --tools は、何も起動せずにツールを一覧表示します。これにも [mcp] エクストラが必要です(ベースインストールでは pip install 'arcaeon[mcp]' のヒントを表示して、終了コード2で終了します)。
MCP レジストリーの掲載情報に関する注意:0.9 より前は、uvx arcaeon でこのサーバーが起動していました。このリリース後も30日間は、動詞の指定がなく、stdin がターミナルでない場合に起動します。今すぐクライアントの設定を arcaeon mcp に変更してください。このフォールバックは 1.0.0 で削除されます。
終了コード
すべての動詞に共通する表です。各用語の意味は、それぞれ2文ずつdocs/WORDS.mdに記載されています。
| code | meaning |
|---|---|
| 0 | 成功:VERIFIED、MATCHED、COMPARED、問題のない評価、またはコマンドが指定どおりに動作した |
| 1 | 問題のある検出結果:BROKEN、MISSING、ALTERED、高重大度の評価、または検証に通らないレシート |
| 2 | 使用方法の誤り:与えられた内容では動詞を開始できなかった |
| 3 | 確認できませんでした:問題は見つかりませんでしたが、すべてを確認できたわけではありません |
3 は決して合格を意味しません。0 のみを成功とみなすゲートでは3は失敗となります。それが意図した動作です。
ログは多数でも、要約は1つに:3つの件数を並べて表示してください。複数のログを対象に arcaeon が出力する要約には、VERIFIED、BROKEN、COULD NOT LOOK の件数がそれぞれ表示され、率は表示されません。「98% verified」では、残りの2%が壊れていたのか、単に読み取られなかったのかが隠れてしまいます。この2つでは、月曜の朝に取るべき対応がまったく異なります。終了コードを使って独自のダッシュボードを作る場合も、3つの列を維持してください。
0.9 より前の一部の古いツールでは、同じ用語に別のコードが使われていました(たとえば reconcile は COULD NOT LOOK に2を使用していました)。0.9.x リリースでは、動詞に --legacy-exit を指定すると、以前のツール固有のコードが返されるため、設定を切り替える間も既存のゲートを引き続き使えます。このフラグは 1.0.0 で削除されます。変更されたコードはすべて MIGRATION.md に記載されています。
制限事項
詳細に入る前に、要点を簡潔に説明します。
- 改ざんを検知できますが、改ざんを防止するものではありません。 ファイルに書き込める人なら、今でも変更できます。ただし、チェックに気づかれず、どの行かも示されずに変更することはできません。
- 証人は1つで、私たちが運営しています。 ホスト型の証人である witness.arcaeon.io は、このパッケージを開発した私たちが運営しています。そこにあるピンは、記録した時点でのヘッドを示します。あなたを保証する、別の無関係な第三者ではありません。
- 日次アンカーは時計であり、当事者ではありません。 証人は1日1回、公開タイムスタンプにピンストアをアンカーします。これによって、ピンがいつ存在していたかが確定します。ピンが正しかったかどうかは示されず、その背後にいる誰かがピンを確認したわけでもありません。
- ピンが作成された当時、誰が証人を運営していたかは、外部の読者にはわかりません。 現時点では、特定のピンが作成されたときに誰が運営していたのかは、私たちの言葉を信じてもらうしかありません。保管記録を公開するまではこの状態が続きますが、まだ公開していません。
- 私たちには再現できますが、あなたにはまだ再現できません。 台帳の背後にあるセッションを再実行するには、当時のモデル、ツールサーバー、その状態が必要です。実行した人はそれらを持っていますが、外部の読者は持っていません。それらを引き渡す方法が整うまでは、代わりにプロキシのリクエストとレスポンスのダイジェストを利用します。
arcaeon proxyが書き込む各呼び出し行には、リクエストのargs_digestとレスポンスのresult_digestが含まれます。バイト列があれば、それが境界を通過したものと同じか確認できますが、呼び出しを再実行して同じものを得ることはできません。
ハッシュチェーンが証明すること:書き込まれた後に、行がその場で変更されていないことです。途中で編集、削除、並べ替えをすると、それ以降のすべてのリンクが壊れ、verify は最初に壊れた行を示します。
ハッシュチェーンが証明しないこと:
- 切り詰め。 直近の行を切り落としても、残った部分は引き続き検証に通ります。チェーンだけではそれを検出できません。ピンなら検出できます。証人があなたのヘッド(行数とチェーン)を保持した後では、ログを短くしたり書き換えたりすると、ピンと一致しなくなります。
- 真実性。 チェーンが記録するのは、真実かどうかにかかわらず、書き込まれたものすべてです。行を、後で誰かが再取得できる事実と結び付けるには、その事実のダイジェストを行に保存してください。
- 作成者。 誰が行を書いたかは、署名ではなく行内のデータです。最初の行からログ全体を書き換えられる人なら、それも書き換えられます。本人の管理下にない場所で保持されたピンだけは、動かせません。
ピンが証明すること:証人が確認した時点と比べて、ログが切り詰められたり書き換えられたりしていないことです。ただし、これは最後のピンの時点までに限られます。ピン間の最長期間が、実際にさらされる期間です。自分で保持するピンファイルは、仕組みが機能することを示しますが、外部の第三者ではありません。ホスト型の証人が使うのは署名ではなく、ベアラーキーです。
reconcile が証明することを、コマンド自身の言葉で説明します。
- MATCHED は、2つの記録器が一致していることを意味します。エージェント側とツール側が共謀すれば、嘘の内容で一致する2つの記録を作成できます。
- どちらの計測済み境界も通過しなかった呼び出しは、どちらの記録にも行を残しません。呼び出しを一切行わないエージェントや、ラップされていない経路で呼び出すエージェントは、ここでは見えません。
- ダイジェストはバイト列ではなく、内容(正規化された JSON)を比較します。転送中に意味を保ったまま再シリアライズされた場合も、意図どおり MATCHED になります。
- 証人のピンがなければ、両方の記録が合意のうえで切り詰められたり書き換えられたりしても一致します。ピンがあれば、その範囲はピンの後に書き込まれた行に限定されます。
vet と badge が報告するのは、読み取ったバイト列に対して各自のチェックで見つかった内容です。人によるレビューでも、安全性の認証でもありません。
書き込みは高速ではありません。各 log 行(Ledger.append)は、次の行の処理を始める前にディスクへフラッシュして同期されます。一般的なノート PC のディスクでは、1行あたり約18ミリ秒かかります。102,000行の書き込みには約22分かかりました。読み込みは高速で、同じ50 MBのログなら約2.5秒で検証できます。
取引
arcaeon deal は、エージェントが行った購入を記録します。買い手側のエージェントと売り手はそれぞれ、自分の台帳に同じ手順(委任、確約、支払い、発送、納品、キャンセル)を書き込みます。どちらか一方、または両方のファイルを渡された人は、arcaeon deal dispute で記録を突き合わせ、MATCHED、MISSING、ALTERED、COULD NOT LOOK のいずれかの判定を得られます。各手順と実例はdocs/DEAL.mdをご覧ください。
古いパッケージをお使いの場合
0.9 より前は、arcaeon-ledger、arcaeon-adapter、arcaeon-receipt、arcaeon-audit、arcaeon-mcp-vet、arcaeon-once、arcaeon-compact、arcaeon-continuity、arcaeon-baseline、arcaeon-dedup、arcaeon-distill、arcaeon-meter、arcaeon-all の13個のパッケージがありました。古い各名前の最後のリリースでは、arcaeon をインストールし、古いインポートとコマンドを引き続き使えるようにしつつ、新しいインポート名を示す警告を表示します。アップグレードしたその日に何かが壊れることはありません。MIGRATION.mdには、各名前について古いインポートと新しいインポート、古いコマンドと新しいコマンド、および変更された終了コードが記載されています。shims/README.mdでは、古い名前から転送する仕組みについて説明しています。
ライセンス
MIT。LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。