
aquaman v0.15.0
🔱 AIエージェント向け唯一の独立したクレデンシャルプロキシ:自己管理型ヴォールト分離と最小権限リクエストポリシーを実現。キーは元の保管場所に留まり、エージェントのメモリには決して触れません。1Password、keychain、keepassxcなどと互換性があります。
🔱 Aquaman
🔱 AIエージェント向けの唯一の独立系クレデンシャルプロキシ:bring-your-own-vault分離と最小権限リクエストポリシー。あなたのキーは、すでに保管している場所にとどまり、エージェントのメモリには決して入りません。1Password、keychain、keepassxcなど、多くのツールと互換性があります。
Claude Code、Codex、OpenClaw、Hermes、あるいはDocker Sandboxesをセットアップして、大事なAPIキーが平文で置かれた.envファイルを眺めている――そんな状況ではありませんか。あの記事を読んだはずです。エージェントがプロンプトインジェクションを受けたときに何が起きるか、ご存じのはずです。私たちも承知しています。
Aquamanはこれを3層の防御で解決します:
- プロセス分離:APIキーは別のプロキシプロセスに存在し、送信時に注入されます。エージェントが保持するのはマーカーであり、キーそのものではありません。そのため、エージェント内でRCEが発生してもキーを読み取ることはできません。コーディングエージェントは、あなたが宣言した参照だけを、一度に1コマンドずつ取得します。
- リクエストポリシー:サービスごとのルールが、エージェントがどのエンドポイントを呼び出せるかを制御します。管理APIをブロックし、削除を防ぎ、下書きは許可しつつ送信は拒否する――といったことが可能です。拒否されたリクエストに本物のクレデンシャルが渡ることはありません。
- 改ざん検知可能な監査:すべてのクレデンシャル使用はSHA-256ハッシュチェーンで記録されます。何がアクセスされたかを証明でき、事後に改ざんを検知できます。
パスを選ぶ
Aquamanは4つの連携パッケージとして提供され、1つのvaultと1つのdaemonを共有します。必要なものだけをインストールしてください:
| パッケージ | 機能 | インストールすべき場合 |
|---|---|---|
aquaman-proxy | コア:vault、daemon、監査、ポリシー、CLI。誰もが必要とする部分。 | 常に。 |
aquaman-plugin | OpenClaw Gatewayアダプター。Gateway起動時にプロキシを起動し、モデルとTelegramのトラフィックをプロキシ経由でルーティングします。5つの認証モードにまたがる25の組み込みサービス。 | OpenClaw Gatewayを運用している場合。https://clawhub.ai/plugins/aquaman-plugin でも入手可能 |
aquaman-coder | AIコーディングエージェントアダプター。プロジェクトスコープのaquaman://service/key参照を、Bashツール呼び出しごとに解決します。 | Claude CodeまたはCodexを使用している場合。 |
aquaman-hermes | Hermesエージェントホストプラグイン(Python、PyPI上)。Hermesを、ネイティブのANTHROPIC_BASE_URL/OPENAI_BASE_URL経由で、オプトインのトークンゲート付きループバックリスナーに向けます。セッション内/aquaman-statusコマンド、ツール、ヘルスプローブを追加します。分離はプロキシ側で行われ、プラグインはクレデンシャルを保持しません。 | Hermesエージェントホストを運用している場合。pip install aquaman-hermes |
| Docker Sandboxes | パッケージではありません:aquaman-proxyのみを必要とする別のパスです。Docker自身のプロキシがシークレットを注入し、aquaman getがあなたのvaultからそれらを供給します。許可リストと監査ログ付き。 | Docker Sandboxesでエージェントを運用している場合。クイックスタート5を参照。 |
単一のaquaman CLIがこれら4つすべてを表面化します:vaultと監査用のトップレベルコマンド、OpenClaw統合用のaquaman openclaw ...、コーディングエージェント統合用のaquaman coder ...(内部でaquaman-coderに委譲)、そしてHermes Pythonパッケージ用のaquaman hermes ...です。
クイックスタート
aquaman help、aquaman doctorが頼りになります。
1. Vaultのみ(プロキシ + あなたのシークレットだけ)
npm install -g aquaman-proxy
aquaman setup # backend wizard + store keys
aquaman daemon & # start the proxy
aquaman credentials list # verify
プロキシは ~/.aquaman/proxy.sock(UDS、chmod 0o600)で待ち受けます。任意のツールを http://aquaman.local/<service>/<path> に向けると、プロキシが選択した vault バックエンドからそのサービス用の認証ヘッダーを注入します。
2. OpenClaw Gateway
openclaw plugins install aquaman-plugin # 1. install plugin + proxy
openclaw aquaman setup # 2. backend + keys + plugin wire-up
openclaw # 3. done - proxy starts automatically
トラブルシューティング: openclaw aquaman doctor。
npm を直接使いますか? npm install -g aquaman-proxy && aquaman openclaw setup も同じことを行います - プロキシ CLI をインストールし、キーを保存し、プラグインを ~/.openclaw/extensions/aquaman-plugin/ にインストールし、認証情報を配線します (OpenClaw ≥ 2026.6.5 では SecretRef 参照、古いバージョンでは auth-profiles.json プレースホルダー)。
aquaman openclaw setup は models.providers.<svc>.baseUrl と channels.telegram.apiRoot をプロキシのループバックリスナーに向けます。なぜなら OpenClaw のモデルトランスポートとそのチャネルはそれぞれ独自の HTTP クライアントを構築し、fetch インターセプターをバイパスするからです。Telegram 以外のチャネルはエンドポイントのオーバーライドを公開していないため、それらのトークンは保存および移行されますが、egress 時に注入されません (packages/plugin/README.md を参照)。openclaw.json のプラグイン設定の下にチャネルを追加してください。サポートされているものには Slack、Discord、Telegram、MS Teams、Matrix、LINE、Twitch、Twilio、BlueBubbles、Mattermost、Nostr、Tlon、Feishu、Google Chat、ElevenLabs、xAI、Cloudflare AI Gateway、Mistral、Hugging Face などがあります (合計 25)。
3. AI コーディングエージェント (Claude Code、Codex)
npm install -g aquaman-proxy aquaman-coder # 1. install daemon + adapter
aquaman setup # 2. vault wizard
aquaman daemon & # 3. start the proxy
aquaman coder project add my-app --path ~/code/my-app \
--env ANTHROPIC_API_KEY=aquaman://anthropic/api_key \
--env GITHUB_TOKEN=aquaman://github/token # 4. declare a project
aquaman coder setup claude-code # 5. wire Claude Code hooks
# (or: aquaman coder setup codex)
aquaman doctor # 6. verify - should show both vault + coder green
自分の目で確かめてください(30秒で納得): Claude Code(または Codex)を再起動し、~/code/my-app 内で新しいセッションを開き、エージェントに次を実行するよう依頼してください:
printenv | grep ANTHROPIC_API_KEY
トランスクリプトにこれが表示されます:
ANTHROPIC_API_KEY=[REDACTED:injected-value]
⏺ ANTHROPIC_API_KEY is set and available (injected via aquaman vault).
子プロセスは実際のキーを見ることができました(テスト、ビルド、MCPサーバー、インポートスクリプトなど、実際にキーを必要とするものはすべて動作します)。エージェント、つまりあなたのマシンでどのコードを実行するかを決定するものは、その値を決して見ることはなく、したがって会話履歴も、モデルプロバイダーのログも、後であなたのターミナルをスクリーンショットする誰も見ることはありません。
自分のターミナルからも使えます。 同じラッパーはエージェントなしでも動作します。対象のプロジェクトに cd して、コマンドの前にプレフィックスを付けるだけです:
cd ~/code/
aquaman-coder exec -- python app/scripts/import.py
同じ環境変数注入、同じ stdout/stderr の秘匿化。Makefile のターゲット、シェルエイリアス、CI ランナーなど、通常 .env ファイルに手を伸ばすあらゆる場所にこれを組み込めます。
Claude Code や Codex が ~/code/my-app でシェルコマンドを実行すると、aquaman のフックが updatedInput.command を介してコマンドを書き換え、aquaman-coder exec の下にラップします。このラッパーは:
- 各
aquaman://service/key参照をブローカー経由(UDS 上のPOST /broker/resolve)で解決します。認証情報はエージェントの生存期間ではなく、1 つのコマンドのために実体化されます。 - stdout/stderr をリダクターに通し、解決された各値に対して値ベースのパターンを先頭に付加します: 注入された文字列は、その形状にかかわらず秘匿化されます(Atlassian トークン、Notion シークレット、内部 API キーなど、既知のプロバイダー形式に一致する必要はありません)。汎用的な形状ベースのパターン(sk-ant-、ghp_、sk_live_、AKIA…、JWT、PEM ブロック、ATATT3xF…)は、我々が注入しなかったシークレットを子プロセスが表面化させた場合の多層防御として、引き続き後段で実行されます。
- コマンド終了時にクリーンアップします。
Claude Code サンドボックス: デフォルトで Unix ソケットをブロックするため、aquaman coder setup claude-code は macOS 上でプロキシソケットを許可リストに追加します(sandbox.network.allowUnixSockets)。Linux と WSL2 はこのリストを無視するため、唯一の選択肢は sandbox.network.allowAllUnixSockets: true であり、これはサンドボックス化されたコマンドに対してすべての Unix ソケットを開放します。
Codex: セットアップ後、Codex の起動時フックレビューで aquaman フックを承認してください(Codex は信頼するまで新しいフックをスキップします)。そのサンドボックスもデフォルトでプロキシソケットをブロックしますが、aquaman coder setup codex がそれを許可する config.toml のパーミッションプロファイルを出力します。Codex のフックはシェル出力を書き換えられないため、秘匿化は aquaman-coder exec の内部で行われます。詳細は packages/coder/README.md を参照してください。
4. Hermes(エージェントホスト)
Hermes は注入するトランスポートフックを持たない外部(Python)ホストであるため、分離はプロキシ側で行われます: プロキシはオプトインのトークンゲート付きループバックリスナーを公開し、Hermes は自身の環境変数を通じてそこを指し示されます。
npm install -g aquaman-proxy # 1. install daemon
aquaman setup # 2. vault wizard
aquaman credentials add anthropic api_key sk-ant-... # 3. store a provider key