Cursor、Claude Code、Codex、Gemini CLI は、それぞれ別のアドレスと秘密を覚えます。プロバイダが増えると、上限と「今日は 429」が設定ファイルのあちこちに散らばります。OmniRoute は、それを自分のマシン上の OpenAI 互換の入口一つにまとめます。クライアントが覚えるのは http://127.0.0.1:20128/v1 だけです。Claude、GPT、Gemini、DeepSeek と、カタログのほかのモデルはダッシュボードからつなぎます。ライセンスは MIT です。この手順が追うリリースは release/v3.8.53 です。ポート、コマンド、ルーティングはそこの README に合わせ、プロバイダ数は版ごとに動きます。
「無料」はゲートウェイのソフトに利用料がない、という意味です。枠は接続したプロバイダのアカウントにあります。公式は第三者の無料枠を /dashboard/free-tiers の見積もりとして出しており、それは合計であって OmniRoute が配るトークンではない、と書いています。すでに払っているサブスクリプションも、そのアカウント手順を通して同じアドレスを共有できます。定価を比べるなら、コーディングツールの月額と OpenRouter の料金を見てください。OpenRouter はホストされたルータで、OmniRoute は手元のゲートウェイです。
ゲートウェイの位置
自分のマシンだけで動く変換ソケット、と考えてください。上流は OpenAI、Anthropic、Google、DeepSeek、またはカタログの別プロバイダのままです。下流は OpenAI の Chat Completions か Responses を話すクライアントです。v3.8.53 の文書は、プロバイダ約 375、生のモデル ID 約 1475 で、一部に無料枠の発見フラグが付く、としています。この数字は再監査されるので、古いスクリーンショットではなくダッシュボードのカタログを見てください。
- 鍵は二種類です。プロバイダの API key または OAuth は OmniRoute の中だけに置きます。Cursor やスクリプトが使うのは Dashboard → Endpoints のゲートウェイ鍵です。
- モデル名は接続したあとに意味を持ちます。先に
/v1/modelsを呼び、返った ID を使います。README の例はopenai/gpt-5.4やglm/glm-5.2のような「プロバイダ/モデル」です。一覧に出たものを使います。 - 対応クライアントは広いです。Claude Code、Codex、Cursor、Cline、Continue、OpenCode、Copilot、OpenClaw などが名指しされています。OpenAI の Base URL を変えられるものはアドレスを入れるだけです。
omniroute runは CLI を 7 本起動できます。
README の文言は Bring your own provider accounts です。無料枠は登録、審査、支払い手段が要ることがあり、閉じることもあります。tos: avoid のプロバイダは初期状態で auto に入りません。アカウントを接続しても、この方針は自動では変わりません。
ゼロからの導入:npm と Docker
マシンに Node.js が要ります。短い道はこれです。
npm install -g omniroute
omniroute
npm warn ERESOLVE や peer の警告は、公式が最初は無視してよいとしています。起動すると http://127.0.0.1:20128 が開き、API は http://127.0.0.1:20128/v1 です。ダッシュボードなしのプロキシだけなら omniroute serve --headless、または OMNIROUTE_HEADLESS=1 です。
npm 11 はインストールスクリプトを許可する
npm 11 はパッケージのライフサイクルスクリプトを止めることがあります。OmniRoute の postinstall が走らないと、ネイティブの実行ファイルが揃いません。3.8.53 の文書にある許可リストは次です。
npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
npm が別の名前を出したら、その警告の一覧を使います。許可すると、それらのインストールスクリプトが実行されます。出所を確認してからにしてください。CI や遅いマシンでは OMNIROUTE_SKIP_POSTINSTALL=1 で、ネイティブ SQLite のウォームアップだけを飛ばせます。バイナリのコピーは残ります。
コーディング負荷に合わせて Docker のメモリを足す
文書のイメージ名は今も diegosouzapw/omniroute です。:latest は公開済みの最高安定 SemVer を追い、git の main は追いません。残す環境では版を固定します。公式例はループバックにバインドします。
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
イメージのヒープ初期値は 1024MB で、パネルと短い会話には足ります。Claude Code と Codex は POST /v1/responses を使います。長いコンテキストにはより大きい V8 ヒープが要り、足りないとプロセスがメモリ不足で死にます。コーディングエージェント一つなら、上のコマンドのヒープ 8192 とコンテナ 10g 以上です。長いリクエストが二つ重なるならヒープ 10240–12288、コンテナ 12–16g です。Apple Silicon はイメージの arm64 を使います。ボリューム omniroute-data には秘密が入るので、バックアップも削除も機密として扱います。
Claude、GPT、Gemini、DeepSeek をつなぐ
ダッシュボードの Providers で、今使ってよい相手を選び、API key を貼るか、そのアカウント手順を終えます。四社の鍵はそれぞれのコンソールで取ります。OmniRoute は代わりに開通しません。
| プロバイダ | 自分で用意するもの | 入れる場所 |
|---|---|---|
| OpenAI(GPT) | platform.openai.com の API key | Providers → OpenAI |
| Anthropic(Claude) | console.anthropic.com の key、または支払い済み Claude サブスクリプションのアカウント手順 | Providers → Anthropic / その OAuth |
| Gemini | Google AI Studio の key、または Gemini CLI の OAuth | Providers → Gemini |
| DeepSeek | platform.deepseek.com の API key | Providers → DeepSeek |
無料枠は別リストで、この四つの鍵の別名ではありません。初回ウィザードに「無料プロバイダを設定」が出ることがあり、その時点の無認証カタログから一覧を作り、確認したものだけ接続を作ります。完了を押しただけで勝手には追加しません。名前として出たことがあるのは Pollinations、Cloudflare AI、SiliconFlow の DeepSeek 無料枠などです。規約、地域、まだあるかは相手側が決めます。古い「鍵なし Claude」が tos: avoid なら、初期状態では auto に入りません。使う前に、その日の Free Tiers を開いて資格を確認します。
Gemini Web のような Cookie 型は、ブラウザの実行環境も要ります。npm パッケージには Playwright があり、Chromium のバイナリはありません。最初の呼び出しの前に、リポジトリの Playwright Chromium の手順を済ませないと、ブラウザ層で失敗します。
IDE と CLI でアドレスを一つにする
Endpoints でゲートウェイ鍵をコピーしてから、次を入れます。
Base URL: http://127.0.0.1:20128/v1
API Key: (Dashboard → Endpoints)
Model: auto
IDE に話させる前に、モデル一覧を確認します。
curl http://127.0.0.1:20128/v1/models \
-H "Authorization: Bearer YOUR_KEY"
curl http://127.0.0.1:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello"}]}'
Cursor、Cline、Continue と、OpenAI の Base URL を変えられるプラグインは、この三行で足ります。独自ヘッダを出せないクライアントは、文書のトークン付き互換 URL、たとえば http://127.0.0.1:20128/vscode/YOUR_KEY/chat/completions を使えます。ヘッダを出せるなら Authorization: Bearer を優先します。
CLI ごとに設定ファイルを手で直す必要はありません。公式の一発起動は、そのプロセスに資格情報を入れます。Qwen と Gemini は使い捨ての隔離 home も使います。
omniroute run claude --model auto
omniroute run codex --model auto
omniroute run gemini --model auto
omniroute configure codex
omniroute run は Claude Code、Codex、Aider、Goose、OpenCode、Qwen Code、Gemini CLI を覆います。configure はそのツール自身の設定へプロバイダとモデルを書きます。文書の対象には codex、claude、opencode、qwen、aider、goose、gemini、cline、continue、kilo があります。--dry-run は使う環境変数と引数を表示するだけです。--api-key-env NAME は秘密を環境変数名に残し、シェル履歴には入れません。
auto、フォールバック、入らない相手
auto はすでに接続され、対象になる接続の中から選びます。何もつなぐ前の新規インストールでは、対象が無くて正常です。選ばれた戦略、プロバイダ、遅延は応答ヘッダ X-OmniRoute-Decision に戻ります。クライアントのログより先に、このヘッダを見ます。
- 枠を見たフォールバック。一つの接続が上限に達すると、まだ余っている接続へ移れます。v3.8.53 には残枠で重み付けする戦略もあり、同じ会話はなるべく元の接続に留めます。
- サブスクリプション経路は失敗で止まれます。文書の subscription コンボは、すでに払っているサブスクリプション枠だけを使います。尽きたら止まり、別の課金キーへ落ちません。課金 API キーとサブスクリプション鍵を、どこへでも落ちる一つのコンボに混ぜないでください。
tos: avoidは初期状態で除外です。接続できたことはautoのメンバーであることは別です。ゲートウェイ鍵を一つのモデルに固定するなら、その鍵のforcedModelを使い、クライアントに上流 URL を書き込みません。
圧縮は任意のパイプラインで、クライアントからは透過です。文書は組み合わせ可能なエンジンとして説明し、実際に使ったセットは X-OmniRoute-Compression に出ます。減る量はモデルとリクエスト次第です。README の幅を、毎回の約束として扱わないでください。メモリ機能は初期状態でオフです。資格情報のマスクもオプトインです。
Cloud Mac ではループバックと SSH
ゲートウェイは、付けっぱなしの Mac に向きます。20128 はループバックで聞き、ノートからは SSH でそのポートを戻します。Cloud Mac はリージョンが固定で SSH でき、Apple Silicon なら公式の arm64 イメージも動きます。管理画面を 0.0.0.0 にバインドしないでください。
ssh -N -L 20128:127.0.0.1:20128 user@your-cloud-mac
トンネルのあと、ノートの Cursor や omniroute run も http://127.0.0.1:20128/v1 のままです。手元に見え、実体はクラウド Mac のループバックです。プロバイダの秘密はクラウドのボリュームかユーザーディレクトリに置き、Git には入れません。同じマシンで OpenClaw を動かしているなら、そのモデルアドレスを同じ /v1 に向け、プロバイダ鍵のコピーはゲートウェイに一つだけ残します。
パネルにログインが要るときは、文書に任意の OIDC があります。パスワードログインは残ります。遠隔操作には範囲付きトークン(connect / contexts / tokens)もあり、公式の Remote Mode に従います。手間を省くためにダッシュボードを公開 IP へ出さないでください。
止まったときに見る箇所
/v1/modelsが空。Providers の接続が成功していないか、クライアントがプロバイダの key をゲートウェイ鍵の場所に入れています。autoに経路がない。除外されたプロバイダしかないか、その日の無料枠に資格がありません。動くと分かっている有料 key を使うか、モデル欄に/v1/modelsの具体 ID を入れます。- グローバルインストール後にネイティブモジュールが見つからない。npm 11 の
--allow-scriptsと、警告に出たパッケージ名で入れ直します。 - Docker のコーディングエージェントが途中で終わる。
OMNIROUTE_MEMORY_MBと--memoryをコーディング用の段へ上げます。1024MB はダッシュボード用のままにします。 - ウェブ型プロバイダの初回が失敗する。Playwright の Chromium を入れてから再試行します。成功する前にルーティング方針は変えません。
- 数字が古い。375 社と 1475 モデル ID は v3.8.53 の文書時点の値です。上げたあとはダッシュボードと README を見ます。
FAQ
短く言うと、ソフトは無料で枠はプロバイダ側、アドレスは手元の 20128 の /v1、auto は対象の接続だけ、Docker のコーディングエージェントはメモリを増やし、ポートはループバックに残して SSH で転送します。全文はページ先頭の FAQ 構造化データにあります。