<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Gemini CLI on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/gemini-cli/</link>
        <description>Recent content in Gemini CLI on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sun, 24 May 2026 10:03:33 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/gemini-cli/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CLIProxyAPI：Codex、Claude Code、Gemini CLI を統一 API として包み込む</title>
        <link>https://knightli.com/ja/2026/05/24/cliproxyapi-cli-to-api-gateway/</link>
        <pubDate>Sun, 24 May 2026 10:03:33 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/24/cliproxyapi-cli-to-api-gateway/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLIProxyAPI&lt;/a&gt; は、かなり「現場の工夫」らしさがあるプロジェクトです。新しい大規模モデルを作るものでも、単なる API 転送サービスでもありません。もともとインタラクティブで、CLI 中心で、OAuth ログインに依存しがちな AI ツール群を、統一 API サービスとして再パッケージします。&lt;/p&gt;
&lt;p&gt;対応対象には Gemini CLI、OpenAI Codex、Claude Code、Amp CLI、AI Studio Build、そして上流の OpenAI 互換サービスが含まれます。つまり、解きたい問題はこうです。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;手元に CLI ツール、サブスクリプションアカウント、OAuth ログイン状態がある。これらの能力を、普通の API を呼ぶように自分のクライアント、スクリプト、IDE、社内サービスへ接続できないか？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;CLIProxyAPI の答えは「できる」です。間にプロキシ層を置き、異なる出自の CLI 能力を OpenAI、Gemini、Claude、Codex 互換インターフェイスへ変換します。&lt;/p&gt;
&lt;h2 id=&#34;本当に解決する痛点&#34;&gt;本当に解決する痛点
&lt;/h2&gt;&lt;p&gt;多くの AI コーディングツールは強力ですが、標準の使い方は自動化に向いていません。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini CLI はアカウントログインで使えるが、プログラム側は HTTP API を呼びたい。&lt;/li&gt;
&lt;li&gt;Claude Code は対話型コーディングに向いているが、他のクライアントへ接続するとプロトコル差にぶつかる。&lt;/li&gt;
&lt;li&gt;Codex CLI は OAuth ログインと Responses 形式の能力を持つが、上位ツールが必ずしも会話方法を知っているわけではない。&lt;/li&gt;
&lt;li&gt;チームには複数アカウントがあり、ローテーション、負荷分散、異常アカウントの除外、クォータ確認が必要になる。&lt;/li&gt;
&lt;li&gt;一部のツールには OpenAI 形式だけを見せたいが、実際のバックエンドは Gemini、Claude、Codex かもしれない。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLIProxyAPI の位置づけは、これらのツールとクライアントの間に入る「プロトコル適配層」です。&lt;/p&gt;
&lt;p&gt;複雑な側、つまり OAuth、CLI ログイン、複数アカウント、異なるプロトコル、異なる provider を背後に隠します。前面には OpenAI Chat Completions、OpenAI Responses、Gemini、Claude Messages、Codex 関連エンドポイントのような、比較的なじみのあるインターフェイスを出します。&lt;/p&gt;
&lt;h2 id=&#34;機能の概要&#34;&gt;機能の概要
&lt;/h2&gt;&lt;p&gt;公式 README とドキュメントを見ると、CLIProxyAPI の主な機能は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI モデル向けに OpenAI、Gemini、Claude、Codex 互換 API エンドポイントを提供する。&lt;/li&gt;
&lt;li&gt;OAuth ログイン経由で OpenAI Codex と Claude Code を接続する。&lt;/li&gt;
&lt;li&gt;ストリーミング、非ストリーミング応答、一部シナリオでの WebSocket をサポートする。&lt;/li&gt;
&lt;li&gt;関数呼び出し、ツール呼び出し、マルチモーダル入力をサポートする。&lt;/li&gt;
&lt;li&gt;Gemini、OpenAI、Claude の複数アカウントローテーションと負荷分散をサポートする。&lt;/li&gt;
&lt;li&gt;Gemini AI Studio API Key をサポートする。&lt;/li&gt;
&lt;li&gt;AI Studio Build、Gemini CLI、Claude Code、OpenAI Codex のアカウントプールをサポートする。&lt;/li&gt;
&lt;li&gt;設定により OpenRouter などの OpenAI 互換上流へ接続できる。&lt;/li&gt;
&lt;li&gt;Go SDK を提供し、自分のサービスへプロキシ機能を組み込める。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この種のプロジェクトで一番価値があるのは、「対応モデル名が多い」ことではありません。アカウントログイン、プロトコル変換、リクエストルーティングという細かく面倒な作業をまとめてくれることです。&lt;/p&gt;
&lt;h2 id=&#34;向いているユーザー&#34;&gt;向いているユーザー
&lt;/h2&gt;&lt;p&gt;CLIProxyAPI は次のような人に向いています。&lt;/p&gt;
&lt;p&gt;第一に、AI コーディングをかなり使い込んでいる人です。すでに Codex、Claude Code、Gemini CLI を使っていて、それらを Cursor、Cline、RooCode、Amp、社内スクリプト、自作ワークフローへ接続したい場合です。&lt;/p&gt;
&lt;p&gt;第二に、複数アカウントプールを持つ人です。複数の Gemini、OpenAI、Claude のログイン状態があり、手動切り替えではなく、自動ローテーション、均等利用、異常アカウントの素早い調査をしたい場合です。&lt;/p&gt;
&lt;p&gt;第三に、チーム内ゲートウェイを作る人です。各クライアントが Gemini、Claude、Codex をそれぞれ個別に適配するのではなく、中間層で統一 API として公開したい場合です。&lt;/p&gt;
&lt;p&gt;第四に、プロトコルを触るのが好きな人です。Responses、Chat Completions、Claude Messages、Gemini v1beta などのインターフェイスを相互変換したい、あるいは同じクライアントから異なるバックエンドを切り替えたい場合です。&lt;/p&gt;
&lt;p&gt;個人がたまに AI に質問するだけ、または公式 App でチャットするだけなら、CLIProxyAPI のデプロイとメンテナンスは重く感じるはずです。&lt;/p&gt;
&lt;h2 id=&#34;普通の-api-中継との違い&#34;&gt;普通の API 中継との違い
&lt;/h2&gt;&lt;p&gt;普通の API 中継サービスは、おおむね次の形です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;クライアント -&amp;gt; 中継 API -&amp;gt; 上流モデル API
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLIProxyAPI の経路は、むしろこうです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;クライアント -&amp;gt; CLIProxyAPI -&amp;gt; CLI / OAuth ログイン状態 / 複数アカウントプール -&amp;gt; モデルサービス
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;違いは、API Key の転送だけを扱うわけではないことです。CLI ツール、OAuth アカウント、プロトコル面、モデル別名も扱います。&lt;/p&gt;
&lt;p&gt;たとえば Codex や Claude Code のようなツールは、「API Key を1つ渡せば安定して呼べる」伝統的なサービスではありません。CLIProxyAPI はログイン状態と呼び出しロジックを包み込み、外部クライアントが通常の API のようにアクセスできるようにします。&lt;/p&gt;
&lt;p&gt;これが魅力であり、同時に複雑さでもあります。&lt;/p&gt;
&lt;h2 id=&#34;使うときに誤解しやすい点&#34;&gt;使うときに誤解しやすい点
&lt;/h2&gt;&lt;p&gt;第一に、統一された &lt;code&gt;/v1/...&lt;/code&gt; だけですべてのプロトコル差が消えるとは考えないことです。&lt;/p&gt;
&lt;p&gt;CLIProxyAPI のドキュメントでは、特定バックエンドのリクエストとレスポンス形状が必要な場合、provider-specific なパスを優先するよう説明されています。たとえば messages 形式なら &lt;code&gt;/api/provider/{provider}/v1/messages&lt;/code&gt;、Gemini のモデルパスなら &lt;code&gt;/api/provider/{provider}/v1beta/models/...&lt;/code&gt;、chat-completions 形式なら &lt;code&gt;/api/provider/{provider}/v1/chat/completions&lt;/code&gt; です。&lt;/p&gt;
&lt;p&gt;統一入口は便利ですが、異なるプロトコルの意味論は消えません。ツール呼び出し、ストリーミング応答、マルチモーダル入力、システムメッセージ処理は、バックエンドごとに細部が変わる可能性があります。&lt;/p&gt;
&lt;p&gt;第二に、モデル名は唯一のバックエンドを意味しません。&lt;/p&gt;
&lt;p&gt;複数バックエンドが同じクライアント表示用モデル名を公開している場合、パスだけでは実際に推論するバックエンドを固定できないことがあります。厳密に固定したいなら、一意の alias や prefix を使うか、複数バックエンドに同じモデル名を出させないようにします。&lt;/p&gt;
&lt;p&gt;第三に、複数アカウントローテーションは無限クォータではありません。&lt;/p&gt;
&lt;p&gt;ローテーションはアカウントプールをより均等に使うだけで、上流サービスの本当の制限を回避するものではありません。異常アカウント、クォータ枯渇、リスク制御、OAuth 失効は個別に監視が必要です。&lt;/p&gt;
&lt;p&gt;第四に、メンテナンス不要の魔法箱ではありません。&lt;/p&gt;
&lt;p&gt;日常ワークフローに入れるなら、設定、ログ、上流アカウント状態、バージョンアップ、クライアント互換性、セキュリティ境界を気にする必要があります。&lt;/p&gt;
&lt;h2 id=&#34;管理と監視はどうするか&#34;&gt;管理と監視はどうするか
&lt;/h2&gt;&lt;p&gt;公式 README では、v6.10.0 以降、CLIProxyAPI と CPAMC にはデータ統計機能が同梱されなくなったと説明されています。利用量統計が必要な場合は、独立したプロジェクトを組み合わせます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPA Usage Keeper：CLIProxyAPI のデータを同期し、SQLite に保存し、集計 API とダッシュボードを提供する。&lt;/li&gt;
&lt;li&gt;CLIProxyAPI Usage Dashboard：ローカル優先の利用量・クォータ看板。アカウント、モデル、時間窓、Codex の残りクォータを表示できる。&lt;/li&gt;
&lt;li&gt;CPA-Manager：より完整な管理センター。リクエスト監視、費用見積もり、アカウントプール巡回、異常アカウント特定、整理提案を扱う。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは、CLIProxyAPI の中心が「プロキシとプロトコル層」であり、一体型の商用管理バックエンドではないことを示しています。チームで使うなら、ログ、監視、アカウントプール管理を最初から考えておく方がよいです。&lt;/p&gt;
&lt;h2 id=&#34;ほどよい試し方&#34;&gt;ほどよい試し方
&lt;/h2&gt;&lt;p&gt;試すなら、次の順番が安全です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;公式ドキュメントの Quick Start で起動する。&lt;/li&gt;
&lt;li&gt;まず Gemini CLI や Codex など、provider を1つだけ接続し、基本リクエストが通ることを確認する。&lt;/li&gt;
&lt;li&gt;次にストリーミング応答、ツール呼び出し、マルチモーダル入力のようなリスクの高い機能を試す。&lt;/li&gt;
&lt;li&gt;クライアントが実際にどの endpoint を使っているか確認し、プロトコルパスを混ぜない。&lt;/li&gt;
&lt;li&gt;最後に複数アカウントローテーション、管理パネル、利用量統計を追加する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最初から Gemini、Codex、Claude、OpenRouter、複数アカウント、全クライアントを一気に接続しない方がよいです。エラーが出たときに、認証、プロトコル、モデル名、上流アカウントのどれが原因か分からなくなります。&lt;/p&gt;
&lt;h2 id=&#34;セキュリティ境界も考える&#34;&gt;セキュリティ境界も考える
&lt;/h2&gt;&lt;p&gt;CLIProxyAPI はアカウントログイン状態、API Key、OAuth 関連資格情報、リクエスト内容に触れます。自分のマシンだけで動かすならリスクは比較的制御しやすいですが、インターネットやチーム内ネットワークに公開するなら、認証、アクセス制御、ログのマスキング、ネットワーク分離をきちんと扱う必要があります。&lt;/p&gt;
&lt;p&gt;特に管理エンドポイントは、ローカルホストまたは信頼できる内部ネットワークに限定するのが望ましいです。手間を省くために管理インターフェイスを直接公開してはいけません。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;CLIProxyAPI の価値は、複数の CLI、複数のアカウント、複数のプロトコルに散らばった AI 能力を、プログラム可能な API 層へまとめることにあります。&lt;/p&gt;
&lt;p&gt;重度の AI コーディングユーザー、複数アカウントユーザー、チーム内ゲートウェイの用途に向いています。一方で、「すぐ使えて完全にメンテナンス不要」を求める軽量ユーザーにはあまり向きません。&lt;/p&gt;
&lt;p&gt;Codex、Claude Code、Gemini CLI を触っていて、それらを自分のクライアントや自動化ワークフローに接続したいなら、CLIProxyAPI は真面目に見る価値があります。ただし一度きりの小道具ではなく、インフラとして扱うべきです。&lt;/p&gt;
&lt;p&gt;参考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/CLIProxyAPI GitHub リポジトリ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI/blob/main/README_CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLIProxyAPI 中国語 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.router-for.me/cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLIProxyAPI 公式ドキュメント&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
