logo
icon

OneCLI

オープンソースの AI エージェント用認証情報ゲートウェイとボールト。API キーを一度保存すれば、エージェントが HTTP リクエストを行う際に透過的に注入されます — エージェントが本物のキーを目にすることはありません。

template cover
展開済み1
発行者glasschan
作成日2026-08-01
タグ
AISecurityVaultCredentialsAI AgentsGateway

OneCLI — AI エージェントのシークレットボールト(SEAFOODHOLDHAND 作成)

OneCLI は AI エージェントとその呼び出し先サービスの間に位置するオープンソースの認証情報ゲートウェイです。実際の API キーを OneCLI の暗号化ボールトに保存し、エージェントにはプレースホルダー(例:FAKE_KEY)を渡すだけで、OneCLI ゲートウェイがリクエスト時に実際の認証情報を透過的に注入します。エージェントが本物のシークレットを見ることはありません。

このテンプレートは OneCLI の完全なインスタンスをワンクリックでデプロイします。

アーキテクチャ

[Zeabur LB] → OneCLI アプリ(単一イメージ、2 プロセス)
                  ├─ :10254  → Next.js Web ダッシュボード(UI + API)
                  └─ :10255  → Rust ゲートウェイ(認証情報注入プロキシ)
[PostgreSQL]  → OneCLI データベース(エージェント、シークレット、監査ログ)

OneCLI アプリイメージ(ghcr.io/onecli/onecli:latest)には以下が含まれます:

  • Next.js Web ダッシュボード(port 10254、UI、エージェント管理、シークレット管理)
  • Rust ゲートウェイ(port 10255、透明な認証情報注入プロキシ)
  • Prisma マイグレーション コンテナ起動時に自動実行
  • SECRET_ENCRYPTION_KEY 自動生成 /app/data/ に永続化(AES-256-GCM)

⚠️ 本物の認証情報を保存する前に必ず読む — セキュリティ

デフォルトでは、このテンプレートはシングルユーザー / ローカルモードでデプロイされます:ダッシュボードはログインなしで直接開きます。 ダッシュボードのドメインを知っていれば、誰でも保存されているすべての API キーを閲覧・管理できます。OneCLI は認証情報ボールトです — デフォルト状態を公共のインターネットに晒すことは安全ではありません。

本物のシークレットを保存する前に、以下のいずれかを行ってください:

  1. Google OAuth でダッシュボードを保護する — Zeabur ダッシュボードの onecli サービスで、NEXTAUTH_SECRET + GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET3 つとも設定して再起動します。下記「デプロイ後の設定」を参照。
  2. またはダッシュボードをプライベート / 非公開ドメインに置く(VPN やプライベートネットワークからのみ到達可能など)、自分だけが開けるようにします。

ゲートウェイドメイン(エージェントがリクエストを送る場所)は常に公開です — これは問題ありません。ゲートウェイはエージェントごとのアクセストークンで全呼び出しを認証します。リスクがあるのはデフォルトのローカルモードにおけるダッシュボードドメインだけです。

動作の仕組み

  1. ブラウザで https://your-domain.zeabur.app を開く
  2. ダッシュボードに直接アクセス(シングルユーザーモードはログイン不要)
  3. 最初のエージェントを作成してアクセストークンを取得
  4. 実際の API キーをボールトに追加
  5. AI エージェントの HTTP クライアントをゲートウェイ URL に向けます
あなたのエージェント → [FAKE_KEY] → OneCLI ゲートウェイ → [REAL_KEY] → 外部 API(OpenAI、GitHub など)
                                                 ↓
                                             監査ログ + レート制限

主な機能

  • 透過的な認証情報注入 — エージェントは通常の HTTP リクエストを送信、ゲートウェイが認証を処理
  • AES-256-GCM 暗号化ストレージ — シークレットはリクエスト時にのみ復号化
  • ホストとパスのマッチング — 特定の API エンドポイントにシークレットをルーティング
  • マルチエージェント対応 — 各エージェントが独自のスコープ付きアクセストークンを取得
  • Rust ゲートウェイ — 高速でメモリ安全な HTTP プロキシ(MITM 対応)
  • 2 つの認証モード — シングルユーザー(ログイン不要)または Google OAuth(マルチユーザーチーム)
  • Vault 連携 — Bitwarden を接続してオンデマンドで認証情報を注入
  • 完全な監査ログ — すべてのエージェントの動作を確認

初回ログイン

デプロイ完了後(初回起動 + マイグレーションに 2〜3 分):

  1. ブラウザで https://your-domain.zeabur.app を開く
  2. ダッシュボードに直接アクセス(シングルユーザーモードはログイン不要)
  3. 最初のエージェントを作成してアクセストークンを取得
  4. シークレットをボールトに追加
  5. AI エージェントの HTTP クライアントをゲートウェイ URL に向けます

AI エージェントの設定

エージェントトークンと少なくとも 1 つのシークレットを取得したら:

# 例:OpenAI リクエストを OneCLI ゲートウェイ経由で送信
curl https://your-gateway-domain.zeabur.app/v1/chat/completions \
  -H "Authorization: Bearer <your-agent-access-token>" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4","messages":[{"role":"user","content":"Hello!"}]}'

エージェントのコードでは、FAKE_OPENAI_KEY のようなプレースホルダーを使用してください。OneCLI が実際のキーに自動置換します。

デプロイ後の設定(オプション)

Zeabur ダッシュボードの onecli サービスで環境変数をカスタマイズできます:

Google OAuth を有効にする(マルチユーザーモード):

  • NEXTAUTH_SECRET → NextAuth シークレット
  • GOOGLE_CLIENT_ID → Google OAuth クライアント ID
  • GOOGLE_CLIENT_SECRET → Google OAuth クライアントシークレット

ゲートウェイポートのカスタマイズ:

  • GATEWAY_PORT → デフォルト 10255

注意事項

  • 暗号化キー(SECRET_ENCRYPTION_KEY)は初回起動時に自動生成され /app/data/ に保存されます。このボリュームを失わないでください — 失うと、保存されたすべてのシークレットが復元不能になります。
  • Rust ゲートウェイは認証情報注入に HTTPS 傍受(MITM)を使用します。エージェントは OneCLI の CA 証明書を信頼する必要があります(または開発環境では --insecure-skip-verify を設定)。
  • データベースマイグレーションは entrypoint スクリプトにより自動実行されます。
  • All-in-one イメージは約 500MB(Next.js + Rust ゲートウェイ)。別々にデプロイするより小さくなります。

詳細:https://github.com/onecli/onecli

デプロイ中に問題が発生した場合は、GitHub issues でお知らせください: https://github.com/glasschan/seafoodholdhand-zeabur-templates