
2026/07/24 0:42
Show HN: OneCLI – AI エージェントに機密情報を含まない OSS クレデンシャルゲートウェイ
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
OneCLI は、AI エージェントと外部サービスの間を安全に橋渡しする、Apache-2.0 ライセンスのオープンソースソリューションです。このツールは、API キーをアプリケーション内に硬く埋め込むリスクを排除するため、一度だけ PostgreSQL データベース(Docker で管理)に認証情報を格納し、AES-256-GCM 暗号化を用いて実行時において透明性を保ちながら注入します。復号化は特定のホストとパスパターンに基づくリクエスト時にのみ行われ、エージェントが生のシークレットを扱わないことを保証します。アーキテクチャには、HTTP インターセプト用の高性能 Rust ベースのゲートウェイ(ポート 10255)と、エージェント、シークレット、権限の管理のための Next.js ダッシュボード(ポート 10254)が含まれます。OneCLI は、ローカルのシングルユーザーアクセスと Google OAuth を用いたマルチユーザー環境向けの柔軟な認証モードを支援します。また、Bitwarden などの外部バールトとの統合によりオンデマンドでの注入が可能なほか、キーのローテーション、リアルタイムアクセス監視、統一シークレット管理等の堅牢な機能を備えています。プロジェクトはモジュール化されたアプリ(web、gateway)とパッケージ(db)で構成され、Rust、Docker、および mise や pnpm といった現代のツールの使用を支援する完全なローカル開発ワークフローをサポートします。
本文
OneCLI:AI エージェントのための秘密兵器「セーフハウス」
OneCLI は、AI エージェントと外部サービスの間を繋ぐオープンソースのゲートウェイです。エージェントが API キーを閲覧せず、一度格納した資格情報を透明性の高い方式で注入することで、セキュリティリスクを解消します。
🎯 開発背景と目的
- セキュリティ課題: AI エージェントは数十の API を呼び出す必要がありますが、各エージェントに生粋の API キーを渡すと情報漏洩のリスクが高まります。
- 一元管理: 単一のゲートウェイを導入することで、認証処理を一元化し、以下の機能をワンストップで提供します。
- アクセス権限の管理
- API キーのローテーション(更新)
- エージェントの実行状況確認
⚙️ 動作原理とアーキテクチャ
秘密鍵をエージェントに渡さない仕組み
- 格納: 実際の API クレデンシャルは、OneCLI の「セーフハウス」に暗号化されて格納されます。
- プレースホルダー: エージェントは生粋のキーではなく、安全なプレースホルダー(例:
)を使用します。FAKE_KEY - 透明性のある注入:
- エージェントが
を使って HTTP リクエストを送信します。FAKE_KEY - OneCLI ゲートウェイがリクエストをインターセプトし、プレースホルダーを実際のキーと照合します。
- 照合完了後、ゲートウェイから出力されるレスポンスに実際の秘密情報を暗号化して注入します。
- エージェントが
- 結果: エージェントは秘密情報に触れることなく、通常の HTTP コールだけで動作できます。
システム構成
- Rust ゲートウェイ (
):Proxy-Authorization- 高速な HTTP ゲートウェイです。
ヘッダーを通じてアクセストークンによる認証を行います。Proxy-Authorization- アウトバウンドリクエストをインターセプトし、資格情報を注入します。
- Web ダッシュボード (Next.js):
- エージェント、秘密情報、権限を管理するための管理画面です(ポート
)。10254 - ゲートウェイがどのキーを注入すべきかを決める API を提供します。
- エージェント、秘密情報、権限を管理するための管理画面です(ポート
- Secret Store:
- AES-256-GCM 暗号化で保護された秘密情報ストレージです。
- リクエスト時のみ復号化され、ホスト名やパスのパターンに照合して注入されます。
🚀 クイックスタート
ローカル環境で最も素早く OneCLI を動作させる方法です。
curl -fsSL https://onecli.sh/install | sh
手動でのセットアップ
curl コマンドを好まない場合は、以下の手順で行います:
- リポジトリの取得とコンテナ起動:
git clone https://github.com/onecli/onecli.git cd onecli docker compose -f docker/docker-compose.yml up -d --wait - ダッシュボードへのアクセスと設定:
を開き、エージェントを作成します。http://localhost:10254- 秘密情報を追加し、エージェントの HTTP ゲートウェイ URL を
に設定してください。localhost:10255
注意: クイックスタートではローカルモード(シングルユーザー)のため、環境変数の設定は不要です。 Google OAuth を有効にする場合は、
と Google クレデンシャルを設定する必要があります。NEXTAUTH_SECRET
✨ 主要機能
- 透明な資格情報注入: エージェント側には認証処理が全く発生せず、ゲートウェイが担います。
- 暗号化された秘密情報: データストア上の情報は AES-256-GCM で保護され、必要時だけ復号化されます。
- ホストおよびパスのマッチング: パターンマッチングで、秘密情報を正確な API エンドポイントにルーティングします。
- マルチエージェント対応: 各エージェントにスコープ付きの独自アクセストークンを割り当てます。
- 簡単なセットアップ: 1 コマンドでアプリケーションと PostgreSQL を起動できます。
curl -fsSL https://onecli.sh/install | sh - 2 つの認証モード: シングルユーザーモード(ログイン不要)または Google OAuth(チーム向け)を切り替えられます。
- Rust ゲートウェイ: MITM インターセプション機能付き、HTTPS 対応、高速かつメモリ安全です。
- Vault 連携: Bitwarden など他のパスワードマネージャーと接続し、オンデマンドでの資格情報注入を実現します。
📂 プロジェクト構成
apps/ web/ # Next.js アプリ(ダッシュボード + API): ポート 10254 gateway/ # Rust ゲートウェイ(資格情報注入): ポート 10255 packages/ db/ # Prisma ORM およびマイグレーション ui/ # シェアされた UI コンポーネント(shadcn/ui) docker/ Dockerfile # アプリイメージ(ゲートウェイ + ウェブ) docker-compose.yml
🛠 ローカル開発
前提条件
以下のツールがインストールされている必要があります。
- mise: Node.js、pnpm、その他のツールの管理用。
- Rust: ゲートウェイの構築用。
- Docker: PostgreSQL の実行用。
セットアップ手順
mise installpnpm installcp .env.example .envpnpm db:generate
# PostgreSQL の起動pnpm db:up
# データベースマイグレーションの適用pnpm db:migratepnpm dev
設定が完了すると、以下のポートでサービスが利用可能になります。
- ダッシュボード:
http://localhost:10254 - ゲートウェイ:
http://localhost:10255
📋 コマンド一覧
| コマンド | 説明 |
|---|---|
| Web アプリとゲートウェイの開発モードを起動 |
| プロダクション環境でのビルド |
| ラinting、型チェック、フォーマットの実行 |
| PostgreSQL(Docker)の起動 |
| PostgreSQL の停止 |
| Prisma クライアントの生成 |
| データベースマイグレーションの実行 |
| Prisma Studio の起動 |
⚙️ 設定項目
ローカル開発ではすべての環境変数はオプションですが、Google OAuth を使う場合は指定が必要です。
| 変数名 | 説明 | デフォルト値 |
|---|---|---|
| PostgreSQL 接続文字列 | 参照 |
| Google OAuth(マルチユーザー)の有効化に必要 | シングルユーザーモードで不要 |
| Google OAuth クライアント ID | — |
| Google OAuth クライアントシークレット | — |
| AES-256-GCM 暗号化キー | 自動生成 |
🤝 コントリビューション
コントリビューションを歓迎しています! プロジェクトに参加する前に、以下のガイドをご確認ください。
ライセンス
Apache-2.0