OmniRoute チュートリアル: ローカル AI API ゲートウェイの構築と複数モデルの自動切り替え

OmniRoute ローカル AI ゲートウェイのインストールと構成を紹介し、OpenAI 互換インターフェイス、プロバイダー アクセス、自動モデル ルーティング、フェイルバック、Docker 導入、MCP セキュリティをカバーします。

OmniRoute は、ローカルで実行される AI API ゲートウェイで、さまざまなモデルのサプライヤー、サブスクリプション アカウント、無料クォータを統合インターフェイスの背後に配置します。 Codex、Claude Code、Cursor、Cline、OpenCode などのクライアントは、OpenAI 互換アドレスに接続するだけでよく、OmniRoute は利用可能なクォータ、コスト、遅延、正常性ステータスに基づいてモデルを選択します。

これは、複数のモデル サービスを同時に使用する開発者、現在のスロットリングが頻繁に発生する開発者、または呼び出し量を均一に表示したい開発者に適しています。ゲートウェイは何もないところから無料のクレジットを生成するわけではないことに注意することが重要です。アカウントの登録、API の価格設定、レート制限、および許容される使用量は、依然として各上流プロバイダーによって決定されます。

簡単な答え

グローバルにインストールして開始します。

1
2
npm install -g omniroute
omniroute

デフォルトのアドレス:

1
2
Dashboard: http://localhost:20128
API:       http://localhost:20128/v1

ダッシュボードの「プロバイダー」ページに移動して少なくとも 1 つのモデルプロバイダーに接続し、「エンドポイント」ページに移動してローカル API キーをコピーします。 AI クライアントは以下を使用します。

1
2
3
Base URL: http://localhost:20128/v1
API Key:  Dashboard 中生成的 Key
Model:    auto

検証機種一覧:

1
2
curl http://localhost:20128/v1/models \
  -H "Authorization: Bearer YOUR_KEY"

接続されたモデルが返された場合、基本的にゲートウェイは使用可能です。コーディング エージェントに正式に接続する前に、モデル リストのみに基づいて互換性を判断しないように、通常のダイアログ、ストリーミング出力、ツールの呼び出し、および長いコンテキストをそれぞれテストします。

オムニルートの仕組み

クライアントは各モデル API に直接接続しなくなり、リクエストをローカルの OmniRoute に送信します。ゲートウェイはモデル名とルーティング ルールを読み取り、現在利用可能なプロバイダーを選択し、応答をクライアントが理解できるプロトコルに変換します。

1
2
3
4
5
6
7
8
9
Codex / Claude Code / Cursor
              |
              v
 http://localhost:20128/v1
              |
              v
      OmniRoute 路由与回退
       /       |        \
   Provider A  B         C

このアーキテクチャは、次の 3 つの直接的な効果をもたらします。

  1. クライアントはベース URL とアクセス キーのみを保持します。
  2. プロバイダーが制限されているか障害が発生した場合、候補モデルに切り替えることができます。
  3. コール量、コスト、遅延、エラーが同じコントロール プレーンに集中して観察されます。

トレードオフは、OmniRoute がリクエスト パスの重要なコンポーネントになることです。ダウンしているか、構成が間違っているか、データ ディレクトリが破損している場合、それによって転送されるすべてのクライアントが影響を受けるため、運用環境には永続性、バックアップ、アクセス制御、および明確な回避策が必要です。

環境要件と設置

当局は現在、Node.js 22 または 24 LTS を要求しており、Node.js 24 LTS を推奨しています。まずバージョンを確認してください。

1
2
node --version
npm --version

npm を使用してインストールします。

1
npm install -g omniroute

初めて実行するときにブート プロセスに入ることができます。

1
omniroute setup

ゲートウェイとダッシュボードを起動します。

1
omniroute

インタラクティブなターミナルチャット:

1
omniroute chat

プロバイダー、ポート、またはネイティブの依存関係の問題が発生した場合は、診断を実行します。

1
omniroute doctor

マシンに適合した better-sqlite3 プリコンパイル済みファイルがない場合、プロジェクトは他の SQLite 実装を使用しようとします。インストールが異常な場合は、最初に完全なログを読む必要があります。すべてのインストール スクリプトを直接閉じたり、管理者権限で繰り返し再インストールしたりしないでください。

Docker を使用して実行する

マルチアーキテクチャの Docker イメージを公式に提供します。

1
2
3
4
5
6
7
docker run -d \
  --name omniroute \
  --restart unless-stopped \
  --stop-timeout 40 \
  -p 20128:20128 \
  -v omniroute-data:/app/data \
  diegosouzapw/omniroute:latest

ステータスとログを確認します。

1
2
docker ps --filter name=omniroute
docker logs -f omniroute

omniroute-data 構成、データベース、および実行ステータスを保存し、コンテナーをアップグレードまたは再構築するときにそれらをランダムに削除しないでください。運用環境では、latest を検証済みの明示的なバージョン ラベルに置き換え、アップグレードする前にボリュームをバックアップする必要もあります。

上記の -p 20128:20128 は、ホストのすべてのネットワーク インターフェイスにポートを公開できます。このマシンでのみ使用する場合は、ループバック アドレスに制限できます。

1
2
3
4
5
6
7
docker run -d \
  --name omniroute \
  --restart unless-stopped \
  --stop-timeout 40 \
  -p 127.0.0.1:20128:20128 \
  -v omniroute-data:/app/data \
  diegosouzapw/omniroute:latest

リモート アクセスが必要な場合は、HTTPS、強力な認証、IP 制限、またはプライベート ネットワークを使用する必要があり、ダッシュボードと API をインターネットに公開しないでください。

モデルのサプライヤーを接続します

起動後に開く:

1
http://localhost:20128

「プロバイダー」ページに入り、実際に所有しているアカウントまたは API キーに基づいてプロバイダーを追加します。次の順序で操作することをお勧めします。

  1. 最初に低リスクのテスト アカウントに接続します。
  2. モデル ディレクトリと単一の会話が利用可能であることを確認します。
  3. 予算または割り当て制限を設定します。
  4. 2 番目のプロバイダー検証フォールバックを追加します。
  5. 最後に、デイリーコーディングクライアントに接続します。

スクリーンショット、ログ、フィードバックで OAuth トークン、API キー、またはダッシュボード アクセス キーを公開しないでください。ウェアハウス記述の認証情報は暗号化されてローカルに保存されますが、マシンが侵害されたり、マスターキーが漏洩したり、読み取りプロセスが悪意を持って拡張された場合には、依然としてリスクが生じる可能性があります。

auto 自動ルーティングを使用する

最も簡単な構成は、クライアント モデルを次のように設定することです。

1
auto

OmniRoute は、さまざまなターゲットの自動モデル名も提供します。

モデル名 ルーティングの焦点
auto バランスのとれた選択をし、最近の成功した道を選ぶ
auto/coding コード生成の品質を優先する
auto/fast 低遅延を優先する
auto/cheap 通話料金の削減を優先する
auto/offline 優先順位の残りのクォータまたは現在の制限スペース
auto/smart 品質を第一に、少量の探索トラフィックを保持します。

自動ルーティングは、異なるモデルがまったく同じように動作することを保証しません。ツールの呼び出し形式、コンテキスト ウィンドウ、推論機能、出力スタイルは異なる場合があります。主要なタスクでは、長いタスクの中で明らかに異なる機能を持つモデルにサイレントに切り替わることを避けるために、モデルを修正するか、候補セットを制限する必要があります。

フォールバック チェーンとルーティング戦略をカスタマイズする

OmniRoute では、一連のモデル フォールバック ターゲットをコンボと呼びます。目標は、優先度、重量、コスト、残高、待ち時間、または最近の成功ステータスによって選択できます。

一般的な戦略には次のようなものがあります。

  • priority: 決まった順序で使用し、失敗したら次の順序に進みます。
  • round-robin: ターゲット間でポーリングします。
  • cost-optimized: 入手可能な低価格モデルを優先します。
  • headroom: 残高が多い接続を優先します。
  • context-optimized: 現在のコンテキスト サイズに従ってモデルを選択します。
  • lkgp: 最近検証に成功したパスを保持します。

フォールバック チェーンを構成するときは、モデル名を比較するだけではありません。また、入出力の価格、コンテキスト上の制約、ツール呼び出し、画像機能、データ領域、ベンダー条件も考慮してください。モデルの一貫性を維持する必要があるセッションでは、適切なスティッキー戦略を有効にするか、プロバイダーを直接固定する必要があります。

OpenAI 互換クライアントにアクセスする

通常、OpenAI Base URL をカスタマイズできるツールを使用できます。

1
http://localhost:20128/v1

リクエスト ヘッダーを通じてアクセス キーを渡すことをお勧めします。

1
Authorization: Bearer YOUR_KEY

カスタム ヘッダーを追加できないクライアントは、トークンと互換性のあるエイリアスを使用できますが、URL にはキーが含まれるため、ブラウザ履歴、エージェント ログ、またはスクリーンショットに簡単にアクセスできます。この方法はヘッダー認証が絶対に不可能な場合にのみ使用し、定期的にキーをローテーションしてください。

チャット インターフェイスを認証するときに、最小限のリクエストを送信できます。

1
2
3
4
curl http://localhost:20128/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"auto","messages":[{"role":"user","content":"Reply with OK"}]}'

curl のエイリアシングと引用の動作は Windows PowerShell では異なる場合があります。curl.exe を使用するか、現在の PowerShell バージョンに従って要求を作成することをお勧めします。

MCP アクセスと許可のリスク

OmniRoute は、モデル リクエストを転送するだけでなく、エージェントがプロバイダー、ルーティング、コンボ、キャッシュ、圧縮、その他のゲートウェイ機能を管理できるようにするための MCP も提供します。

標準出力モード:

1
omniroute --mcp

HTTP MCP アドレス:

1
http://localhost:20128/api/mcp/stream

クロード コード例:

1
2
3
claude mcp add-server omniroute \
  --type http \
  --url http://localhost:20128/api/mcp/stream

エージェントはルーティングまたは接続構成を変更する可能性があるため、MCP 権限は通常のモデル呼び出しよりも機密性が高くなります。アクセスする前に、最小限のスコープ、独立したアクセス トークン、および監査ログを使用する必要があります。プロバイダーの削除、キーのローテーション、チーム クォータの調整などの操作では、手動による確認を保持する必要があります。

トークン圧縮はどのように評価すべきでしょうか?

このウェアハウスは、RTK や Caveman などの多段階の圧縮および処理パイプラインを提供しており、公式に実証されている節約率は広範囲にわたります。実際の効果は、ツールの出力、重複コンテンツ、コンテキスト構造、圧縮レベルによって異なります。 README に記載されている比率は、各プロジェクトの保証として直接見なすことはできません。

A/B テストには固定タスクを使用することをお勧めします。

  1. 元のプロンプト、ツール出力、および最終結果を保存します。
  2. 圧縮をオフにして、一度実行します。
  3. 標準または RTK 構成を使用して再度実行します。
  4. 入力トークン、遅延、コストを比較し、回答の正しさを比較します。
  5. コード変更に対して同じ一連のテストまたは検証コマンドを実行します。

圧縮により、関連性が低いと判断された情報は削除される場合があります。セキュリティ監査、長いログ診断、および正確なコード レビューでは、トークンの節約だけを確認するだけでなく、ミス率をチェックし、生の出力を表示するためのパスも保存する必要があります。

無料クレジットとサプライヤー規約

OmniRoute は、複数のベンダーが公開した無料枠、トライアル クォータ、スロットル情報を集約します。この数はサプライヤーのポリシー、地域、アカウントの種類、時間によって変化するため、この記事では特定の「1 か月あたりの無料トークンの総数」を固定的に引用していません。ダッシュボードの現在のカタログと上流の公式価格ページが優先される必要があります。

区別するための 3 種類のリソースもあります。

  1. 長期無料利用枠;
  2. 登録後の1回限りのトライアル枠。
  3. ロックを解除するには支払いまたはサブスクリプションが必要な追加のクレジット。

サブスクリプション アカウント、非標準の OAuth フロー、または複数のアカウントの集約を使用する前に、ベンダーのサービス利用規約を確認する必要があります。技術的にアクセスできるということは、プロバイダーが個々のサブスクリプションをチームと共有したり、自動呼び出しを許可したり、クォータ制限を回避したりすることを許可することを意味するものではありません。

リモート展開に関する考慮事項

OmniRoute が VPS にデプロイされると、すべてのクライアント プロンプト、コード コンテキスト、モデル応答がそのホストを経由します。少なくとも必須:

  • HTTPS を使用して、トークンとプロンプトのクリア テキスト送信を回避します。
  • アクセス ソースをダッシュ​​ボード、API、MCP に制限します。
  • 異なるユーザーまたはクライアントに対して異なるスコープを持つキーを発行します。
  • データ ディレクトリをバックアップし、同時にバックアップを暗号化します。
  • ログの保存期間を設定して、機密コードの長期保存を回避します。
  • 通話コスト、失敗率、遅延、異常なログインを監視します。

ローカルの例の http://localhost:20128 を単にパブリック IP に置き換えて使用しないでください。リバース プロキシとパブリック ドメイン名を構成するかどうかを決定する前に、Tailscale、WireGuard、または SSH トンネルを通じて検証することをお勧めします。

よくある質問

ダッシュボードを開けません

診断を実行してポートを確認します。

1
omniroute doctor

プロセスがまだ実行中であり、20128 が他のアプリケーションによって占有されていないことを確認します。 Docker ユーザーは、コンテナーのログとポート マッピングを表示します。

/v1/models は 401 を返します

リクエストが「ダッシュボード」→「エンドポイント」で生成されたローカルキーを使用しており、以下が含まれていることを確認します。

1
Authorization: Bearer YOUR_KEY

上流のプロバイダー キーを OmniRoute エンドポイント キーと間違えないでください。

auto 不適切なモデルが選択されました。

まず検証済みのモデルをピン留めしてクライアントの互換性を確認し、次にコンボ候補、戦略、予算、コンテキスト要件を調整します。重要なワークフローでは auto/coding を使用できますが、ツール呼び出しまたはコンテキストの要件を満たさないモデルを制限する必要があります。

ルーティングフォールバック後に回答スタイルが突然変更される

モデルが異なれば、システム コマンド コンプライアンス機能やツール形式も異なります。セッションの固定性を有効にし、候補モデルのギャップを埋め、スイッチ間で必要なタスクの状態を保持します。決定論を必要とするタスクのモデルを直接修正しました。

OmniRoute はすべての AI コストを削減できますか?

保証されていません。価格設定とクォータに基づいてルーティングし、コンテキストの一部の重複を減らすことができますが、ゲートウェイ自体はアップストリームの請求ルールを変更できません。フュージョン、パイプライン、またはマルチモデルのレビューによっても、呼び出しの総数が増加する可能性があります。

OmniRoute はどのようなシナリオに適していますか?

OmniRoute は、複数のモデル アカウントを同時に維持する、統合された OpenAI 互換の入り口が必要、電流が制限されている場合に自動的にロールバックしたい、またはコストと健全性の状態を一元的に監視したい個人やチームに適しています。安定したプロバイダーを 1 つだけ使用する単純なプロジェクトの場合、完全なゲートウェイを導入するとメンテナンスが複雑になる可能性があります。

チームの実稼働環境に導入する前に、クライアント プロトコルの互換性、プロバイダーの条件、キーと権限の分離、ゲートウェイ障害時のダウングレード パスの 4 つの検証を完了することをお勧めします。

概要

OmniRoute は、ローカル http://localhost:20128/v1 を使用して複数のモデル プロバイダーを統合 API に接続し、auto とコンボを使用してコスト、速度、割り当て、および健全性主導のルーティングを実装します。 npm インストールはローカル エクスペリエンスに適しており、Docker は永続的な操作に適しています。 HTTPS、アクセス制御、バックアップ、監査はリモート展開中に完了する必要があります。無料クォータと圧縮率は動的な指標であり、アップストリームの条件や独自のベンチマークと組み合わせて評価する必要があります。

プロジェクトアドレス: diegosouzapw/OmniRoute

公式サイト:omniroute.online