Llm Router について
Llm Routerは、コーディングツールやPythonエージェントのプロンプトを無料・ローカルモデルに優先的に回し、必要に応じて有料モデルへ切り替えます。MCPツールとホストのライフサイクルフックを組み合わせ、APIキーなしでClaudeのサブスクリプション経由のルーティングにも対応します。
主な機能
- 01無料・ローカルモデルを優先
- 02サーキットブレーカー付きのフォールバック
- 03秘密情報のクラウド送信を制限
- 04利用可能なコンテキストで草案を検証
- 05画像・動画・音声・オーケストレーションツール
- 06コスト・レイテンシ・ルーティング状況の確認
活用シーン
- 01定型的なコーディング質問を無料モデルに回す
- 02Claudeのサブスクリプション枠の消費を抑える
- 03機密プロンプトのクラウド送信を防ぐ
- 04セッションのルーティングやコストを確認する
MCP 対応
MCPクライアント向けにモデルルーティングツールを公開し、デフォルトでは12個の入口ツールを表示します。ローカルモデルやコーディングツールとの連携にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
llm-router
無料モデルで回答できる質問に、Claude Pro/Max の利用枠を使うのはもうやめましょう。
llm-router はコーディングツール独自のライフサイクルにフックし、モデルが読む前に各プロンプトを読み取って、まず無料モデルまたはローカルモデルで回答案を作成します。Claude のサブスクリプションでは API キーは不要です。ルーティングは MCP ツールとローカルモデルを通じて行われます。
ただし、注意点が1つあります:デフォルトでは、ルーティングされた回答は参考情報であり、ゼロ Claude モードを有効にしない限り、Claude が引き続き応答します。デフォルトでは、一部のツール呼び出しはプロンプトがルーティングされるまで待機します。LLM_ROUTER_ENFORCE=off にすると、この動作は無効になります(すべてのユーザー設定についてはdocs/configuration.mdを参照)。回答案の作成率と採用率の数値は、サンプル数、期間、条件とともにdocs/MEASUREMENT.mdに記載されています。
導入する理由
Claude Pro または Max プランを利用していて、それ以外には一切お金を使っていないのに、5時間の利用上限に達してしまう。質問しすぎたからではなく、すべてのプロンプトがプレミアムモデルに送られていたからです。「このエラーの意味は?」「この JSON を整形して」「サービスは稼働している?」といった質問にも、本当に必要な質問と同じ利用枠が使われていました。
プロキシではできない理由
ここにあるルーターの多くはプロキシです。エージェントがあなたの API キーを使ってリクエストを転送します。これには限界があります。サブスクリプションで認証されたセッションは、転送するキーが存在しないため、プロキシでは傍受できません。
| トークンごとに支払う場合 | サブスクリプションで支払う場合 | |
|---|---|---|
| 使い切られるもの | 請求額 | 5時間の利用枠 |
| API キーが必要 | はい | いいえ |
| プロキシで対応可能 | はい | いいえ — 傍受するものがありません |
| llm-router で対応可能 | はい | はい |
機能としての誠実さ
llm-router status は、検証済みと未検証の節約額をそれぞれ別に報告し、それぞれに独自の n を表示します。混合したパーセンテージではありません。このプロジェクトは、一般的な節約率を公表していません。数値はお使いのワークロードによって異なります。以下の節約額をご覧ください。
クイックスタート
pip install llm-routing # installs the `llm-router` command
llm-router install # wire up Claude Code (default host)
llm-router doctor # check provider connectivity and setup
llm-router status # verify it's routing — est. savings vs baseline
Claude Pro/Max サブスクリプションなら API キーなしで動作します。ルーティングは MCP ツールとローカルモデルを経由します。プロバイダーのキーを追加すると選択肢が広がりますが、必須ではありません。**guide/PROVIDERS.md**をご覧ください。別のホストにインストールする方法については、対応ホストをご覧ください。毎日の KPI ジョブは、同意した場合にのみインストールされます(install --schedule-daily を指定するか、尋ねられたときに Y を選択します。--no-schedule を指定するとスキップされます)。uninstall で削除できます。
Python エージェントはサーバーを介さず、プロセス内でルーティングします:from llm_router import Router; r = Router(budget_usd=0.50).run("...")(非同期コードでは await .arun(...) を使用します。上限に達すると BudgetExceeded が発生します)。
対応ホスト
| ホスト | インストール |
|---|---|
| Claude Code(デフォルト) | llm-router install |
| Codex CLI | llm-router install --host codex |
| OpenCode | llm-router install --host opencode |
| Gemini CLI | llm-router install --host gemini-cli |
| GitHub Copilot CLI | llm-router install --host copilot-cli |
| OpenClaw | llm-router install --host openclaw |
| Trae IDE | llm-router install --host trae |
| Pi (pi.dev) | 対応予定(v16 P2.12);--host pi は理由を報告して終了コード 2 で終了します |
| Factory Droid | llm-router install --host factory |
| Claude Desktop | llm-router install --host desktop |
| VS Code(ネイティブ MCP) | llm-router install --host vscode |
| Cursor | llm-router install --host cursor |
| VS Code の GitHub Copilot(機能拡張。コストルーティングなし) | llm-router install --host copilot |
| Windsurf / Cascade | llm-router install --host windsurf |
| Kimi Code (Moonshot AI) | 対応予定(v16 P2.12);--host kimi は理由を報告して終了コード 2 で終了します |
llm-router install --host all は、すべてのホスト設定を一度にインストールするか、表示します。各ホストの詳細と、各ホストが実際に対応できない機能については、**guide/HOST_SUPPORT_MATRIX.md**をご覧ください。
仕組み
フックは、コーディングツール自体のモデルがプロンプトを受け取る前に割り込みます。無料の正規表現ヒューリスティックが即座にプロンプトを分類し、確信度を持って実際のプロンプトの約半数をスコアリングします — 1,571 件中 788 件(scripts/measure_low_signal_rate.py、2026-09-23 に実行)。残りはデフォルトにフォールバックします。ルーティング可能なプロンプトには、まず無料またはローカルモデルでドラフトを作成し、必要な場合に限り、有料モデルへと順に切り替えます。
ドラフトは参考情報です — ゼロ Claude モードを有効にしない限り、ターンの置き換えではなく、未検証のヒントとして Claude に渡されます。適用はツール呼び出しレベルで行われます:smart(デフォルト)は、選択されたツール呼び出しをプロンプトのルーティングが完了するまで保留します。off はこれを無効にします。すべてのモードとホストごとのオーバーライドについては、**guide/GETTING_STARTED.md**をご覧ください。
特長
- シークレットを含むプロンプトは、ローカルモデルに送られるか、どこにも送られません。 ルーティング対象の呼び出し(
llm_*テキストツール、ゲートウェイ、ストリーミング)に API キー、トークン、または秘密鍵が含まれる場合、llm-router はループバックデーモン上の Ollama モデルにのみ送信します。HTTP プロキシ、セマンティックキャッシュ、判定キュー、クラウドへのフォールバックは経由しません。そうでなければ、シークレットの種類と対処方法(1 回のリクエストで上書きするにはcloud:プレフィックスを使用)を示して拒否します。AKIA...EXAMPLEやpostgres:postgres@のようなプレースホルダーは拒否されません。対象外:Claude Code プロキシとフック(ログ記録のみ)、エージェントへの委任、ホストがすでに自身のモデルに送信したデータ。詳細と制限。 - サーキットブレーカーによる自動フォールバック。 失敗したプロバイダーやレート制限されたプロバイダーはスキップされ、延々と再試行されることはありません。
- 動作状況を確認できます。 ステータス行、ターミナルタイトル、OS 通知に、最後にルーティングされたモデル、節約額、稼働状況が表示されます。
- セッション終了時の要約。 ベースラインとの節約額、ティア構成、プロバイダーごとのコスト、レイテンシーの p50/p95/p99、上位ルートを表示します。
- メディアとパイプラインにも対応。
llm_image/llm_video/llm_audioと、複数ステップの調査向けllm_orchestrateを利用できます。
リファレンス
デフォルトの MCP インターフェースにはフロントドアツールが 12 個表示されます。オプトアウトすると、登録済みのすべての項目が表示されます(ユーザー設定についてはdocs/configuration.mdを参照してください)。
| トピック | 内容 | ガイド |
|---|---|---|
| CLI | install、status、gain、doctor、okf index/status、sessions status など | guide/GETTING_STARTED.md |
| プロバイダー | 無料優先 — Ollama(ローカル)、OpenRouter、Gemini、Groq、お使いの Claude サブスクリプション | guide/PROVIDERS.md |
| ルーティングポリシー | conservative → balanced(デフォルト)→ cost_aggressive、しきい値と YAML スキーマ | guide/POLICIES.md |
| MCP ツール | 各ツールのシグネチャ | guide/TOOLS.md |
llm-router gain today # savings so far today
llm-router okf status # knowledge base freshness
llm-router sessions status # per-session summary
節約額
節約額は反実仮想の数値です。同じトークンを API の定価で利用した場合にかかる費用と、実際に支払った金額との差であり、定額サブスクリプションで節約した金額ではありません。llm-router status と llm-router savings-report では、検証済みと未検証の節約額を、それぞれ独自の n とともに分けて表示します。方法論、前提、制限については、docs/MEASUREMENT.md を参照してください。
信頼性とセキュリティ
llm-router はすべてお使いのマシン上で動作します。ホスト型プロキシはなく、llm-router のサービスにデータが送信されることもなく、アカウントも不要です。根拠確認(src/llm_router/grounding.py)では、コンテキストとインデックス化されたリポジトリに存在しないファイルや関数を引用するドラフトを破棄し、Claude にフォールスルーします。
LLM_ROUTER_DIRECT_EXECUTION はデフォルトで有効です。ローカルモデルは、制限され、許可リストに登録されたパスで write_file、edit_file、run_command を実行できますが、対象を狙った削除、git push --force、データの持ち出しを防ぐものではありません。プロジェクトルート外に書き込むシェルのリダイレクトやコピーは、サンドボックスではなく静的なトリップワイヤーによって拒否されます。OS サンドボックスは 16.1 です。トリップワイヤーが判定できないコマンド(インタープリターのワンライナー、sudo、$(...))は needs_approval を返しますが、承認機能はまだどこにも接続されていないため、どちらのコマンド実行経路でも拒否されたものとして扱われ、実行されません。LLM_ROUTER_DIRECT_EXECUTION=false で無効にできます。詳しい分析については、SECURITY.md を参照してください。
セルフ監査は audit/ および docs/repo_goals/AUDIT-2026-09-25.md で公開されています(達成 13 件、一部達成 6 件、未達成 1 件)。否定的な結果も含まれています。
Ground Truth の蓄積(オプトイン)では、相互にリンクされていないテレメトリーではなく、再生可能なルーティング判断のコーパスを構築します。プロンプトのテキストをディスクに書き込む唯一の機能であるため、デフォルトでは無効です。詳細については、guide/GROUND_TRUTH.md を参照してください。
ドキュメント
全インデックス:guide/README.md
| ドキュメント | 目的 |
|---|---|
| クイックスタート(2分) | ルーティングを最速で動作させる方法 |
| はじめに | セットアップの全手順 |
| ホスト対応マトリックス | ホストごとの機能比較 |
| プロバイダー | プロバイダーのセットアップとモデルの推奨 |
| ルーティングポリシー | routing.yaml のスキーマと独自ポリシーの作成 |
| ツールリファレンス | すべての MCP ツールと使用例 |
| アーキテクチャ | 内部設計とモジュール構成 |
| トラブルシューティング | よくある問題と解決方法 |
| ルーターのテスト | ルーティングの健全性を確認する分離テストスイート |
| 測定 | 「節約額」の意味と算出方法 |
| RouterArena | ベンチマークの手法、結果、否定的な調査結果 |
| グラウンドトゥルース | 再生可能なルーティングコーパス、オプトイン |
| ベンチマーク | モデルのコスト/レイテンシ/品質の表。CI によって再生成されます |
| 変更履歴 | リリースノート(アーカイブ) |
llm-router は RouterArena
ベンチマークで評価されています。全分割、8,400 件のクエリを対象に、このリポジトリのハーネスでローカル評価しています。
独立した検証はまだ行われていません。現在の Arena スコア:72.35。評価手法と否定的な結果(調整の判断を誤らせた、4.25 ポイント差のプロキシ分割を含む)の詳細:
docs/ROUTERARENA.md。
エンタープライズ、コントリビューション、ライセンス
llm-router は個人開発者や小規模チーム向けに構築されています。ローカルでコストを削減し、運用のオーバーヘッドはゼロで、ホスト型サービスもありません。チーム全体へのポリシー適用、監査エクスポート、SSO、組織ごとの予算設定については、別個の姉妹製品である
Chuzom をご覧ください。
コントリビューションを歓迎します。CONTRIBUTING.md をご覧ください。
git clone https://github.com/ypollak2/llm-router.git
cd llm-router
uv sync --extra dev
uv run pytest tests/ -q # Run tests (10,000+)
uv run ruff check src/ tests/ # Lint
MIT ライセンス。Issues · Discussions · PyPI · 変更履歴
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。