* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
82 KiB
User Guide (日本語)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
プロバイダーの設定、コンボの作成、CLI ツールの統合、OmniRoute のデプロイに関する完全ガイドです。
目次
- 料金の概要
- ユースケース
- プロバイダーのセットアップ
- CLI 統合
- デプロイ
- 利用可能なモデル
- 高度な機能
- 自動ルーティング(設定不要)
- MCP と A2A の統合
- スキルシステム
- メモリシステム
- Webhook
- クラウドエージェント
- プログラムによる管理
- 内部 CLI
- デスクトップアプリケーション(Electron)
💰 料金の概要
| プラン | プロバイダー | 料金 | クォータのリセット | 最適な用途 |
|---|---|---|---|---|
| 💳 サブスクリプション | Claude Code (Pro) | $20/月 | 5時間ごと+毎週 | すでに契約済みの場合 |
| Codex (Plus/Pro) | $20~200/月 | 5時間ごと+毎週 | OpenAI ユーザー | |
| GitHub Copilot | $10~19/月 | 毎月 | GitHub ユーザー | |
| 🔑 API キー | DeepSeek | 従量課金 | なし | 低コストな推論 |
| Groq | 従量課金 | なし | 超高速な推論 | |
| xAI (Grok) | 従量課金 | なし | Grok 4 による推論 | |
| Mistral | 従量課金 | なし | EU でホストされるモデル | |
| Perplexity | 従量課金 | なし | 検索拡張 | |
| Together AI | 従量課金 | なし | オープンソースモデル | |
| Fireworks AI | 従量課金 | なし | 高速な FLUX 画像生成 | |
| Cerebras | 従量課金 | なし | ウェハースケールの速度 | |
| Cohere | 従量課金 | なし | Command R+ RAG | |
| NVIDIA NIM | 従量課金 | なし | エンタープライズモデル | |
| Baidu Qianfan | 従量課金 | なし | ERNIE モデル | |
| 💰 低価格 | GLM-4.7 | $0.6/1M | 毎日午前10時 | 低予算のバックアップ |
| MiniMax M2.1 | $0.2/1M | 5時間のローリング方式 | 最安の選択肢 | |
| Kimi K2 | 月額 $9 の定額制 | 10M tokens/月 | 予測可能なコスト | |
| 🆓 無料 | Qoder | $0 | プロバイダーの制限が適用 | 現在のカタログを要確認 |
| Kiro | $0 | 約50クレジット/月 | Claude を無料で利用 |
🎯 ユースケース
ケース 1: 「Claude Pro のサブスクリプションを契約している」
問題: クォータを使い切れないまま期限切れになり、コーディング作業が多いときにはレート制限に達する
組み合わせ: "maximize-claude"
1. cc/claude-opus-4-7 (サブスクリプションを最大限に活用)
2. glm/glm-4.7 (クォータ切れ時の低コストなバックアップ)
3. if/qwen3.8-max-preview (緊急時の無料フォールバック)
月額費用: $20(サブスクリプション)+ 約$5(バックアップ)= 合計$25
対して、$20のみで制限に達する場合 = ストレス
ケース 2: 「コストをゼロにしたい」
問題: サブスクリプションを契約する余裕はないが、信頼性の高い AI コーディングが必要
組み合わせ: "zero-cost"
1. if/kimi-k2.7-code (無料アクセスとして掲載。レート制限が適用される場合あり)
2. kr/qwen3-coder-next (Kiro の無料フォールバック)
月額費用: $0
品質: ワークロードに対するモデル、制限、プライバシー、SLA を確認してください
ケース 3: 「中断なしで 24時間365日コーディングしたい」
問題: 締め切りがあり、ダウンタイムは許容できない
組み合わせ: "always-on"
1. cc/claude-opus-4-7 (最高品質)
2. cx/gpt-5.5 (2つ目のサブスクリプション)
3. glm/glm-4.7 (低コストで毎日リセット)
4. minimax/MiniMax-M2.1 (最安で5時間ごとにリセット)
5. if/deepseek-v4-flash (無料アクセスとして掲載。レート制限が適用される場合あり)
結果: 5層のフォールバックにより耐障害性が向上しますが、上流サービスの可用性は保証されません
月額費用: $20~200(サブスクリプション)+ $10~20(バックアップ)
ケース 4: 「OpenClaw で無料の AI を使いたい」
問題: メッセージングアプリで完全無料の AI アシスタントが必要
組み合わせ: "openclaw-free"
1. if/qwen3.8-max-preview (無料アクセスとして掲載。レート制限が適用される場合あり)
2. if/deepseek-v4-flash (無料アクセスとして掲載。レート制限が適用される場合あり)
3. if/kimi-k2.7-code (無料アクセスとして掲載。レート制限が適用される場合あり)
月額費用: $0
アクセス方法: WhatsApp、Telegram、Slack、Discord、iMessage、Signal...
📖 プロバイダーのセットアップ
CSV または JSON ファイルから API キー接続を一括追加するには、ダッシュボード → プロバイダー → ファイルからインポートを使用します。列は位置によって決まります(provider,name,apiKey,baseUrl,priority)。provider は、管理対象プロバイダーまたは互換性のあるノードとして、すでに存在している必要があります。CSV または JSON ファイルからプロバイダーをインポートするを参照してください。
🔐 サブスクリプションプロバイダー
Claude Code(Pro/Max)
ダッシュボード → プロバイダー → Claude Code に接続
→ OAuth ログイン → トークンの自動更新
→ 5時間ごと + 週間クォータの追跡
モデル:
cc/claude-opus-4-7
cc/claude-sonnet-4-6
cc/claude-haiku-4-5-20251001
プロのヒント: 複雑なタスクには Opus、速度を重視する場合は Sonnet を使用してください。OmniRoute はモデルごとにクォータを追跡します!
Claude および Claude Code 互換ルートでは、Opus と Sonnet モデルの max 思考強度が維持されます。Haiku モデルは max 強度レベルを受け付けないため、OmniRoute はアップストリームへ送信する前に、そのリクエストを高い思考予算へダウングレードします。
OpenAI Codex(Plus/Pro)
ダッシュボード → プロバイダー → Codex に接続
→ OAuth ログイン(ポート 1455)
→ 5時間ごと + 週間リセット
モデル:
cx/gpt-5.5
cx/gpt-5.4
cx/gpt-5.3-codex
cx/gpt-5.3-codex-spark
GitHub Copilot
ダッシュボード → プロバイダー → GitHub に接続
→ GitHub 経由で OAuth
→ 毎月リセット(毎月1日)
モデル:
gh/gpt-5.5
gh/gpt-5.4
gh/claude-sonnet-4.6
gh/claude-opus-4.7
gh/gemini-3.1-pro-preview
💰 低価格プロバイダー
GLM-4.7(毎日リセット、$0.6/1M)
- 登録: Zhipu AI
- Coding Plan から API キーを取得
- ダッシュボード → API キーを追加: プロバイダー:
glm、API キー:your-key
使用方法: glm/glm-4.7 — プロのヒント: Coding Plan では、1/7 のコストで3倍のクォータを利用できます!毎日午前10時にリセットされます。
MiniMax M2.1(5時間ごとにリセット、$0.20/1M)
- 登録: MiniMax
- API キーを取得 → ダッシュボード → API キーを追加
使用方法: minimax/MiniMax-M2.1 — プロのヒント: 長いコンテキスト(1M トークン)向けの最安オプションです!
Kimi K2(月額 $9 の定額制)
- サブスクリプションに登録: Moonshot AI
- API キーを取得 → ダッシュボード → API キーを追加
使用方法: kimi/kimi-k2.5 — プロのヒント: 10M トークンが月額固定 $9 のため、実質コストは $0.90/1M です!
Baidu Qianfan / ERNIE
- 登録: Baidu AI Cloud Qianfan
- Qianfan API キーを作成 → ダッシュボード → API キーを追加: プロバイダー:
qianfan
使用方法: qianfan/ernie-5.1、qianfan/ernie-x1.1、またはその他の Qianfan OpenAI 互換モデル ID。
🆓 無料プロバイダー
認証不要の無料プロバイダーには、そのプロバイダーページの 認証不要 の横に切り替えスイッチがあります。
オフにすると、そのプロバイダーが無効になり、「設定済みプロバイダー」表示およびコンパクト表示から削除され、さらにそのモデルも /v1/models から削除されます。
Qoder(無料モデル9種)
ダッシュボード → Qoder に接続 → OAuth ログイン → アクセスには現在のプロバイダー制限が適用されます
モデル: if/qwen3.8-max-preview, if/qwen3.7-max, if/qwen3.7-plus, if/kimi-k3, if/kimi-k2.7-code, if/glm-5.2, if/deepseek-v4-pro, if/deepseek-v4-flash, if/minimax-m3
Kiro(Claude を無料で利用可能)
ダッシュボード → Kiro に接続 → AWS Builder ID または Google/GitHub → 月あたり約50クレジット
モデル: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
🎨 コンボ
Dashboard → Combos で各カードのハンドルをドラッグすると、コンボカードを直接並べ替えられます。順序は SQLite に保存され、再読み込み時に復元されます。
例 1: サブスクリプションを最大活用 → 安価なバックアップ
Dashboard → Combos → Create New
名前: premium-coding
モデル:
1. cc/claude-opus-4-7 (サブスクリプションのプライマリ)
2. glm/glm-4.7 (安価なバックアップ、$0.6/1M)
3. minimax/MiniMax-M2.7 (最も安価なフォールバック、$0.3/1M)
CLI で使用: premium-coding
例 2: 無料のみ(コストゼロ)
名前: free-combo
モデル:
1. if/kimi-k2.7-code (無料アクセスとして掲載。プロバイダーの制限が適用される場合があります)
2. kr/qwen3-coder-next (Kiro の無料フォールバック)
コスト: 現在は $0 と記載されていますが、利用条件と提供状況は変更される可能性があります
🔧 CLI 連携
Cursor IDE
OmniRoute クライアントとして Cursor を使用する場合(Cursor のチャットを OmniRoute 経由でルーティング):
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [OmniRoute ダッシュボードから取得]
Model: cc/claude-opus-4-7
Cursor プロバイダーとして OmniRoute を使用する場合(OmniRoute がアップストリームの Cursor を呼び出す):
Dashboard → Providers → Cursor → Login with Cursor を推奨します。Docker では、
docs/providers/CURSOR-DOCKER.mdを参照してください。
Claude Code
~/.claude/settings.json を編集します:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:20128",
"ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key"
}
}
ここでは Claude 互換のルートエンドポイントを使用してください。ANTHROPIC_BASE_URL に /v1 を追加しないでください。
Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
OpenClaw
~/.openclaw/openclaw.json を編集します:
{
"agents": {
"defaults": {
"model": { "primary": "omniroute/if/kimi-k2.7-code" }
}
},
"models": {
"providers": {
"omniroute": {
"baseUrl": "http://localhost:20128/v1",
"apiKey": "your-omniroute-api-key",
"api": "openai-completions",
"models": [{ "id": "if/kimi-k2.7-code", "name": "Kimi K2.7 Code" }]
}
}
}
}
またはダッシュボードを使用: CLI Tools → OpenClaw → Auto-config
Cline / Continue / RooCode
プロバイダー: OpenAI Compatible
ベース URL: http://localhost:20128/v1
API キー: [ダッシュボードから取得]
モデル: cc/claude-opus-4-7
🚀 デプロイ
グローバル npm インストール(推奨)
npm install -g omniroute
# 設定ディレクトリを作成
mkdir -p ~/.omniroute
# .env ファイルを作成(.env.example を参照)
cp .env.example ~/.omniroute/.env
# サーバーを起動
omniroute
# またはカスタムポートを指定:
omniroute --port 3000
CLI は ~/.omniroute/.env または ./.env から .env を自動的に読み込みます。
トレイモード
OmniRoute をシステムトレイで起動します:
omniroute serve --tray
このコマンドは、サーバーとトレイの準備が完了すると終了します。
サーバーはターミナルなしで動作を継続します。
トレイモードは macOS、Windows、およびグラフィカルな Linux セッションをサポートします。トレイモードではダッシュボードは自動的に開きません。
トレイメニューから次の操作を実行できます:
- ダッシュボードを開く。
/dashboard/logsを開く。- 自動起動の設定を変更する。
- OmniRoute を停止する。
--tray を次のオプションと併用しないでください:
--daemon--log--no-recovery
これらのモードでは、異なるプロセス所有方式が必要です。
次回のマシンへのログイン時に起動するよう有効化します:
omniroute autostart enable
自動起動では、macOS、Windows、およびグラフィカルな Linux セッションでトレイモードが使用されます。ヘッドレス Linux では、既存の systemd ユーザーサービスが使用されます。
ログイン時の起動を無効化します:
omniroute autostart disable
アンインストール
OmniRoute が不要になった場合、クリーンに削除するための簡単なスクリプトを 2 つ用意しています:
| コマンド | 操作 |
|---|---|
npm run uninstall |
システムアプリを削除しますが、~/.omniroute 内のデータベースと設定は保持します。 |
npm run uninstall:full |
アプリを削除し、さらにすべての設定、キー、データベースを完全に消去します。 |
注: これらのコマンドを実行するには、OmniRoute プロジェクトフォルダー(クローンした場合)に移動してから実行してください。または、グローバルにインストールした場合は、
npm uninstall -g omnirouteを実行するだけです。
VPS デプロイ
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute && npm install && npm run build
export JWT_SECRET="your-secure-secret-change-this"
export INITIAL_PASSWORD="your-password"
export DATA_DIR="/var/lib/omniroute"
export PORT="20128"
export HOSTNAME="0.0.0.0"
export NODE_ENV="production"
export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
export API_KEY_SECRET="endpoint-proxy-api-key-secret"
npm run start
# または: pm2 start npm --name omniroute -- start
PM2 デプロイ(低メモリ)
RAM が限られているサーバーでは、メモリ制限オプションを使用してください:
# 512MB の制限を指定(デフォルト)
pm2 start npm --name omniroute -- start
# またはカスタムメモリ制限を指定
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
# または ecosystem.config.js を使用
pm2 start ecosystem.config.js
ecosystem.config.js を作成します:
module.exports = {
apps: [
{
name: "omniroute",
script: "npm",
args: "start",
env: {
NODE_ENV: "production",
OMNIROUTE_MEMORY_MB: "512",
JWT_SECRET: "your-secret",
INITIAL_PASSWORD: "your-password",
},
node_args: "--max-old-space-size=512",
max_memory_restart: "300M",
},
],
};
Docker
# イメージをビルド(デフォルト = codex/claude/droid がプリインストールされた runner-cli)
docker build -t omniroute:cli .
# ポータブルモード(推奨)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
CLI バイナリを使用するホスト統合モードについては、メインドキュメントの Docker セクションを参照してください。
Void Linux (xbps-src)
Void Linux ユーザーは、xbps-src クロスコンパイルフレームワークを使用して、OmniRoute をネイティブにパッケージ化してインストールできます。これにより、Node.js のスタンドアロンビルドと、必要な better-sqlite3 ネイティブバインディングが自動的に処理されます。
xbps-src テンプレートを表示
# 'omniroute' 用テンプレートファイル
pkgname=omniroute
version=3.8.0
revision=1
hostmakedepends="nodejs python3 make"
depends="openssl"
short_desc="Universal AI gateway with smart routing for multiple LLM providers"
maintainer="zenobit <zenobit@disroot.org>"
license="MIT"
homepage="https://github.com/diegosouzapw/OmniRoute"
distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz"
checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b
system_accounts="_omniroute"
omniroute_homedir="/var/lib/omniroute"
export NODE_ENV=production
export npm_config_engine_strict=false
export npm_config_loglevel=error
export npm_config_fund=false
export npm_config_audit=false
do_build() {
# node-gyp のターゲット CPU アーキテクチャを判定
local _gyp_arch
case "$XBPS_TARGET_MACHINE" in
aarch64*) _gyp_arch=arm64 ;;
armv7*|armv6*) _gyp_arch=arm ;;
i686*) _gyp_arch=ia32 ;;
*) _gyp_arch=x64 ;;
esac
# 1) すべての依存関係をインストール – スクリプトはスキップ
NODE_ENV=development npm ci --ignore-scripts
# 2) Next.js スタンドアロンバンドルをビルド
npm run build
# 3) 静的アセットをスタンドアロンにコピー
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) better-sqlite3 ネイティブバインディングをコンパイル
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")
# 5) コンパイル済みバインディングをスタンドアロンバンドルに配置
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"
# 6) アーキテクチャ固有の sharp バンドルを削除
rm -rf .next/standalone/node_modules/@img
# 7) Next.js の静的解析で省略された pino のランタイム依存関係をコピー:
for _mod in pino-abstract-transport split2 process-warning; do
cp -r "node_modules/$_mod" .next/standalone/node_modules/
done
}
do_check() {
npm run test:unit
}
do_install() {
vmkdir usr/lib/omniroute/.next
vcopy .next/standalone/. usr/lib/omniroute/.next/standalone
# インストール後フックによって空の Next.js App Router ディレクトリが削除されるのを防止
for _d in \
.next/standalone/.next/server/app/dashboard \
.next/standalone/.next/server/app/dashboard/settings \
.next/standalone/.next/server/app/dashboard/providers; do
touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep"
done
cat > "${WRKDIR}/omniroute" <<'EOF'
#!/bin/sh
export PORT="${PORT:-20128}"
export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}"
export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}"
mkdir -p "${DATA_DIR}"
exec node /usr/lib/omniroute/.next/standalone/server.js "$@"
EOF
vbin "${WRKDIR}/omniroute"
}
post_install() {
vlicense LICENSE
}
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
JWT_SECRET |
omniroute-default-secret-change-me |
JWT 署名用シークレット(本番環境では変更してください) |
INITIAL_PASSWORD |
CHANGEME |
初回ログイン用パスワード |
DATA_DIR |
~/.omniroute |
データディレクトリ(データベース、使用状況、ログ) |
PORT |
フレームワークのデフォルト | サービスポート(例では 20128) |
HOSTNAME |
フレームワークのデフォルト | バインド先ホスト(Docker のデフォルトは 0.0.0.0) |
NODE_ENV |
ランタイムのデフォルト | デプロイ時には production に設定 |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
ダッシュボードに表示され、サーバーにも公開される公開ベース URL(従来の BASE_URL を置き換え) |
NEXT_PUBLIC_CLOUD_URL |
https://omniroute.dev |
クラウド同期エンドポイントのベース URL(従来の CLOUD_URL を置き換え) |
API_KEY_SECRET |
endpoint-proxy-api-key-secret |
生成される API キー用の HMAC シークレット |
REQUIRE_API_KEY |
false |
/v1/* で Bearer API キーを必須にする |
ALLOW_API_KEY_REVEAL |
false |
認証済みのダッシュボードユーザーが、保存されている API キーの完全な値をオンデマンドで表示できるようにする |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
キャッシュされたプロバイダー制限データのサーバー側更新間隔。UI の更新ボタンでは引き続き手動同期が実行される |
DISABLE_SQLITE_AUTO_BACKUP |
false |
書き込み、インポート、復元前の SQLite 自動スナップショットを無効化する。手動バックアップは引き続き利用可能 |
APP_LOG_TO_FILE |
true |
アプリケーションログと監査ログのディスクへの出力を有効にする |
AUTH_COOKIE_SECURE |
false |
Secure 認証 Cookie を強制する(HTTPS リバースプロキシの背後で使用) |
CLOUDFLARED_BIN |
未設定 | 管理対象としてダウンロードする代わりに、既存の cloudflared バイナリを使用する |
CLOUDFLARED_PROTOCOL |
http2 |
管理対象の Quick Tunnels 用トランスポート(http2、quic、または auto) |
OMNIROUTE_MEMORY_MB |
512 |
Node.js のヒープ上限(MB) |
PROMPT_CACHE_MAX_SIZE |
50 |
プロンプトキャッシュの最大エントリ数 |
SEMANTIC_CACHE_MAX_SIZE |
100 |
セマンティックキャッシュの最大エントリ数 |
環境変数の完全なリファレンスについては、README を参照してください。
📊 利用可能なモデル
利用可能なすべてのモデルを表示
以下の一覧は、v3.8.0 の
open-sse/config/providerRegistry.tsから厳選されています。クラウドカタログ(Gemini、OpenRouter など)は動的に同期されます。最新の完全なカタログを確認するには、ダッシュボード → プロバイダー → [provider] → 利用可能なモデルを開くか、GET /api/models/catalogを呼び出してください。プロバイダーの組み込みリストが最新の状態と異なる場合は、そのページの /models からインポートを使用するか、自動同期を有効にして、最新のアップストリームカタログを取得してください。これは、LLM7.io(
gemini-3.1-flash-lite)および UncloseAI(solidrust/Hermes-3-Llama-3.1-8B-AWQ)について v3.8.50 で検証済みです。同じテスト実施時点で、Pollinations の匿名アクセスには引き続きアップストリーム側の制限がありました。
Claude Code(cc/) — Pro/Max OAuth:cc/claude-opus-4-8、cc/claude-opus-4-7、cc/claude-opus-4-6、cc/claude-opus-4-5-20251101、cc/claude-sonnet-4-6、cc/claude-sonnet-4-5-20250929、cc/claude-haiku-4-5-20251001
Codex(cx/) — Plus/Pro OAuth:cx/gpt-5.5(+ 推論強度レベル:gpt-5.5-xhigh、gpt-5.5-high、gpt-5.5-medium、gpt-5.5-low)、cx/gpt-5.4、cx/gpt-5.4-mini、cx/gpt-5.3-codex、cx/gpt-5.3-codex-spark
GitHub Copilot(gh/) — OAuth:gh/gpt-5.5、gh/gpt-5.4、gh/gpt-5.4-mini、gh/gpt-5-mini、gh/gpt-5.3-codex、gh/claude-opus-4.7、gh/claude-opus-4.6、gh/claude-opus-4-5-20251101、gh/claude-sonnet-4.6、gh/claude-sonnet-4.5、gh/claude-haiku-4.5、gh/gemini-3.1-pro-preview、gh/gemini-3-flash-preview、gh/oswe-vscode-prime
Kiro(kr/) — 無料 OAuth:ダッシュボード → プロバイダー → Kiro → 利用可能なモデルに表示されるライブカタログを使用してください。利用可否はアカウントとプランによって異なります。
Qoder(if/) — 無料 OAuth:if/qwen3.8-max-preview、if/qwen3.7-max、if/qwen3.7-plus、if/kimi-k3、if/kimi-k2.7-code、if/glm-5.2、if/deepseek-v4-pro、if/deepseek-v4-flash、if/minimax-m3
GLM(glm/、glm-cn/、zai/、glmt/) — $0.2~0.6/1M:glm/glm-5.1、glm/glm-5、glm/glm-5-turbo、glm/glm-4.7、glm/glm-4.7-flash、glm/glm-4.6、glm/glm-4.6v、glm/glm-4.5、glm/glm-4.5v、glm/glm-4.5-air
MiniMax(minimax/、minimax-cn/) — $0.2/1M:minimax/MiniMax-M2.7、minimax/MiniMax-M2.7-highspeed、minimax/MiniMax-M2.5、minimax/MiniMax-M2.5-highspeed
Kimi(kimi/、kimi-coding/、kimi-coding-apikey/) — 月額 $9 の定額制または従量課金:kimi/kimi-k2.6、kimi/kimi-k2.5
DeepSeek(ds/) — API キー:ds/deepseek-v4-pro、ds/deepseek-v4-flash
Groq(groq/) — 超高速:groq/llama-3.3-70b-versatile、groq/meta-llama/llama-4-maverick-17b-128e-instruct、groq/qwen/qwen3-32b、groq/openai/gpt-oss-120b
xAI(xai/) — Grok ネイティブ:xai/grok-4.3、xai/grok-4.20-multi-agent-0309、xai/grok-4.20-0309-reasoning、xai/grok-4.20-0309-non-reasoning
Mistral(mistral/) — EU 内ホスティング:mistral/mistral-large-latest、mistral/mistral-medium-3-5、mistral/mistral-small-latest、mistral/devstral-latest、mistral/codestral-latest
Perplexity(pplx/) — 検索拡張:pplx/sonar-deep-research、pplx/sonar-reasoning-pro、pplx/sonar-pro、pplx/sonar
Together AI(together/) — オープンソース:together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free(無料)、together/meta-llama/Llama-Vision-Free、together/deepseek-ai/DeepSeek-R1-Distill-Llama-70B-Free、together/deepseek-ai/DeepSeek-R1、together/Qwen/Qwen3-235B-A22B、together/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8
Fireworks AI(fireworks/) — 高速推論:fireworks/accounts/fireworks/models/kimi-k2p6、fireworks/accounts/fireworks/models/minimax-m2p7、fireworks/accounts/fireworks/models/qwen3p6-plus、fireworks/accounts/fireworks/models/glm-5p1、fireworks/accounts/fireworks/models/deepseek-v4-pro
Cerebras(cerebras/) — ウェハースケール:cerebras/zai-glm-4.7、cerebras/gpt-oss-120b
Cohere(cohere/) — RAG 重視:cohere/command-a-reasoning-08-2025、cohere/command-a-vision-07-2025、cohere/command-a-03-2025、cohere/command-r-08-2024
NVIDIA NIM(nvidia/) — エンタープライズ:nvidia/z-ai/glm-5.1、nvidia/minimaxai/minimax-m2.7、nvidia/google/gemma-4-31b-it、nvidia/mistralai/mistral-small-4-119b-2603、nvidia/mistralai/mistral-large-3-675b-instruct-2512、nvidia/qwen/qwen3.5-397b-a17b、nvidia/deepseek-ai/deepseek-v4-pro、nvidia/openai/gpt-oss-120b、nvidia/nvidia/nemotron-3-super-120b-a12b
Baidu Qianfan(qianfan/) — ERNIE:qianfan/ernie-5.1、qianfan/ernie-5.0-thinking-latest、qianfan/ernie-x1.1
Ollama Cloud(ollama-cloud/):ollama-cloud/deepseek-v4-pro、ollama-cloud/deepseek-v4-flash、ollama-cloud/kimi-k2.6、ollama-cloud/glm-5.1、ollama-cloud/minimax-m2.7、ollama-cloud/gemma4:31b、ollama-cloud/qwen3.5:397b
Gemini(Google Cloud gemini/):Google から API キーごとにライブ同期されるため、静的リストはありません。ダッシュボード → プロバイダーでキーを接続し、利用可能なモデルを使用して現在のカタログをインポートしてください(例:gemini/gemini-3-pro、gemini/gemini-3-flash)。
その他の互換プロバイダー(一部):cohere、databricks、snowflake、together、vertex、alibaba、alibaba-cn、bedrock(aws-bedrock 経由)、azure-ai、openrouter(パススルーカタログ)、siliconflow、hyperbolic、huggingface、featherless-ai、cloudflare-ai、scaleway、deepinfra、vercel-ai-gateway、bazaarlink、friendliai、nous-research、reka、volcengine、ai21、gigachat。各プロバイダーは providerRegistry.ts 内で独自のモデルリストを管理しており、プロバイダーが /models エンドポイントを公開している場合は自動同期できます。
モデル ID に関する注意: OmniRoute はプロバイダーネイティブの ID(claude-opus-4-8、gpt-5.5、glm-5.1、MiniMax-M2.7、kimi-k2.5、grok-4.20-0309-reasoning)を使用します。一部の ID にドット区切りのバージョンが含まれているのは、アップストリーム API がその形式を要求しているためです。モデルが上記に記載されていない場合は、omniroute models --search <term> を実行するか、GET /api/models/catalog にアクセスして利用可否を確認してください。
🧩 高度な機能
カスタムモデル
アプリの更新を待たずに、任意のプロバイダーへ任意のモデルIDを追加できます。
# API経由
curl -X POST http://localhost:20128/api/provider-models \
-H "Content-Type: application/json" \
-d '{"provider": "openai", "modelId": "gpt-5.2", "modelName": "GPT-5.2"}'
# 一覧: curl http://localhost:20128/api/provider-models?provider=openai
# 削除: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2"
または、ダッシュボードの Providers → [Provider] → Custom Models を使用します。
注意事項:
- OpenRouterおよびOpenAI/Anthropic互換プロバイダーは、Available Models のみで管理されます。手動追加、インポート、自動同期はすべて同じ利用可能モデル一覧に反映されるため、これらのプロバイダーには独立したCustom Modelsセクションはありません。
- Custom Models セクションは、管理対象の利用可能モデルをインポートする機能を提供していないプロバイダー向けです。
OmniRouteピアのチェーン化
別のOmniRouteゲートウェイを、Custom OpenAI-compatible プロバイダーとして追加できます。ピアの
/v1ベースURLと、そのピアが発行した専用の最小権限APIキーを使用してください。
相互チェーンまたはマルチホップチェーンでは、すべてのゲートウェイでオプトイン方式のループガードを有効にします。
# gateway-a
OMNIROUTE_INSTANCE_ID=gateway-a
OMNIROUTE_PEER_URLS=http://gateway-b:20128/v1
OMNIROUTE_PEER_MAX_HOPS=4
# gateway-b
OMNIROUTE_INSTANCE_ID=gateway-b
OMNIROUTE_PEER_URLS=http://gateway-a:20128/v1
OMNIROUTE_PEER_MAX_HOPS=4
明示的に許可リストへ登録されたピアURLに送信されるリクエストのみ、
X-OmniRoute-Peer-Traceヘッダーを受け取ります。ゲートウェイは、インスタンスIDの重複またはホップ
上限の消費を検出するとHTTP 508 Loop Detectedで拒否します。通常のアップストリームプロバイダーにはピアのメタデータは送信されません。
ピアチェーンは、データベースのレプリケーションやホストのフェイルオーバーではありません。各ゲートウェイは独立した SQLiteの状態、キャッシュ、レートカウンター、セッションを保持します。アクティブ/パッシブまたはアクティブ/アクティブ構成で可用性を確保するには、ヘルスチェック付きリバースプロキシまたはクライアント側 フェイルオーバーを使用してください。また、1つのSQLiteデータベースを実行中の複数のOmniRouteインスタンスにマウントしないでください。
プロバイダー専用ルート
モデル検証を行いながら、リクエストを特定のプロバイダーへ直接ルーティングします。
POST http://localhost:20128/v1/providers/openai/chat/completions
POST http://localhost:20128/v1/providers/openai/embeddings
POST http://localhost:20128/v1/providers/fireworks/images/generations
プロバイダーのプレフィックスがない場合は自動的に追加されます。一致しないモデルには400が返されます。
ネットワークプロキシ設定
# グローバルプロキシを設定
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
# プロバイダーごとのプロキシ
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
# プロキシをテスト
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
優先順位: キー固有 → コンボ固有 → プロバイダー固有 → グローバル → 環境。
モデルカタログAPI
curl http://localhost:20128/api/models/catalog
タイプ(chat、embedding、image)とともに、プロバイダー別にグループ化されたモデルを返します。
クラウド同期
- プロバイダー、コンボ、設定をデバイス間で同期
- タイムアウトとフェイルファストを備えた自動バックグラウンド同期
- 本番環境ではサーバー側の
NEXT_PUBLIC_BASE_URL/NEXT_PUBLIC_CLOUD_URLを推奨
Cloudflare Quick Tunnel
- Dockerおよびその他のセルフホスト環境では、Dashboard → Endpoints から利用可能
- 現在のOpenAI互換
/v1エンドポイントへ転送する、一時的なhttps://*.trycloudflare.comURLを作成 - 初回の有効化時のみ、必要に応じて
cloudflaredをインストールし、それ以降の再起動では同じ管理対象バイナリを再利用 - Quick Tunnelは、OmniRouteまたはコンテナの再起動後に自動復元されません。必要に応じてダッシュボードから再度有効にしてください
- トンネルURLは一時的なものであり、トンネルを停止/開始するたびに変更されます
- 管理対象のQuick Tunnelは、制約のあるコンテナで大量のQUIC UDPバッファー警告が発生するのを避けるため、デフォルトでHTTP/2トランスポートを使用します
- 管理対象トランスポートの選択を上書きする場合は、
CLOUDFLARED_PROTOCOL=quicまたはautoを設定します - 管理対象のダウンロードではなく、プリインストール済みの
cloudflaredバイナリを使用する場合は、CLOUDFLARED_BINを設定します - Cloudflare Quick Tunnel、Tailscale Funnel、ngrok Tunnelの各パネルは、Settings → Appearance で表示または非表示にできます。パネルを非表示にしても、実行中のトンネルは停止しません。
LLMゲートウェイインテリジェンス(フェーズ9)
- セマンティックキャッシュ — 非ストリーミングかつtemperature=0のレスポンスを自動的にキャッシュします(
X-OmniRoute-No-Cache: trueでバイパス) - リクエストの冪等性 —
Idempotency-KeyまたはX-Request-Idヘッダーを使用して、5秒以内のリクエストを重複排除します - 進捗追跡 —
X-OmniRoute-Progress: trueヘッダーを使用して、オプトイン形式のSSEevent: progressイベントを有効化します
Translator Playground
Dashboard → Translator からアクセスします。OmniRouteがプロバイダー間でAPIリクエストをどのように変換するかをデバッグし、可視化できます。
| モード | 目的 |
|---|---|
| Playground | 変換元/変換先の形式を選択してリクエストを貼り付け、変換結果を即座に確認します |
| Chat Tester | プロキシ経由でライブチャットメッセージを送信し、リクエスト/レスポンスのサイクル全体を確認します |
| Test Bench | 複数の形式の組み合わせに対してバッチテストを実行し、変換の正確性を検証します |
| Live Monitor | リクエストがプロキシを通過する際の変換をリアルタイムで監視します |
ユースケース:
- 特定のクライアント/プロバイダーの組み合わせが失敗する理由をデバッグ
- 思考タグ、ツール呼び出し、システムプロンプトが正しく変換されることを確認
- OpenAI、Claude、Gemini、Responses APIの各形式の違いを比較
ルーティング戦略
ダッシュボード → 設定 → ルーティングから設定します。ダッシュボードには最もよく使用される6つの戦略が表示されますが、コンボとオートルーターは内部的により多くの戦略をサポートしています。
ダッシュボードに表示される戦略(アカウントレベルのルーティング):
| 戦略 | 説明 |
|---|---|
| Fill First | 優先順位に従ってアカウントを使用します。プライマリアカウントが利用できなくなるまで、すべてのリクエストを処理します |
| Round Robin | 設定可能なスティッキー上限(デフォルト:アカウントごとに3回の呼び出し)に従って、すべてのアカウントを順番に使用します |
| P2C (Power of Two Choices) | 2つのアカウントをランダムに選び、より正常な方へルーティングします。正常性を考慮しながら負荷を分散します |
| Random | Fisher-Yatesシャッフルを使用して、リクエストごとにアカウントをランダムに選択します |
| Least Used | lastUsedAtタイムスタンプが最も古いアカウントへルーティングし、トラフィックを均等に分散します |
| Cost Optimized | 優先順位の値が最も低いアカウントへルーティングし、最も低コストのプロバイダーを優先します |
高度なコンボ戦略とオート戦略(コンボごと、またはauto/*プレフィックスを介して設定可能です。AUTO-COMBO.mdを参照してください):
priority— 厳密な順序で処理し、ラウンドロビンは行いませんweighted— モデルごとの重みに基づいてトラフィックを比例配分しますfill-first— 上限に達するまで最初のモデルを使い切りますround-robin/strict-random/randomp2c(Power of Two Choices)least-usedおよびcost-optimizedauto— すべての候補をスコアに基づいて選択しますlkgp(Last Known Good Provider)— 最後に成功したプロバイダーへ固定し、その後ルールに従ってフォールバックしますcontext-optimized— 空きコンテキストウィンドウが最も大きいモデルを選択しますcontext-relay— 後続のターン向けに、長いコンテキストを持つモデルを連鎖させます
外部スティッキーセッションヘッダー
外部セッションアフィニティ(たとえば、リバースプロキシの背後にあるClaude Code/Codexエージェント)を使用するには、次を送信します:
X-Session-Id: your-session-key
OmniRouteはx_session_idも受け付け、有効なセッションキーをX-OmniRoute-Session-Idで返します。
Nginxを使用し、アンダースコア形式のヘッダーを送信する場合は、次を有効にします:
underscores_in_headers on;
ワイルドカードモデルエイリアス
モデル名を再マッピングするためのワイルドカードパターンを作成します:
パターン: claude-sonnet-* → ターゲット: cc/claude-sonnet-4-6
パターン: gpt-* → ターゲット: gh/gpt-5.3-codex
ワイルドカードでは、*(任意の文字列)と?(任意の1文字)を使用できます。
フォールバックチェーン
すべてのリクエストに適用されるグローバルフォールバックチェーンを定義します:
チェーン: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.3-codex
3. glm/glm-4.7
レジリエンスとサーキットブレーカー
ダッシュボード → 設定 → レジリエンスから設定します。
OmniRouteは、5つのコンポーネントによるプロバイダーレベルのレジリエンスを実装しています:
-
リクエストキューとペーシング — システムレベルのリクエスト制御:
- 1分あたりのリクエスト数(RPM) — アカウントごとの1分あたりの最大リクエスト数
- リクエスト間の最小時間 — リクエスト間に設ける最小間隔(ミリ秒)
- 最大同時リクエスト数 — アカウントごとの最大同時リクエスト数
-
接続クールダウン — 再試行可能なエラーが発生した後の、単一接続に対する認証タイプ別の設定:
- 基本クールダウン — 再試行可能なアップストリームエラーに対するデフォルトのクールダウン期間
- アップストリームの再試行ヒントを使用 — 提供されている場合、信頼できる
Retry-Afterまたはリセットヒントに従います - 最大バックオフステップ数 — エラーが繰り返された場合の指数バックオフの最大レベル
-
プロバイダーサーキットブレーカー — プロバイダーのエンドツーエンドの障害を追跡し、設定された警告しきい値に達するとプロバイダーを劣化状態としてマークし、設定された障害しきい値に達するとブレーカーを開きます:
- 劣化しきい値 —
DEGRADEDへ移行するまでの連続したプロバイダー障害の回数 - 障害しきい値 —
OPENへ移行するまでの連続したプロバイダー障害の回数 - リセットタイムアウト — プロバイダーを再テストするまでの時間
- CLOSED(正常)— リクエストは通常どおり処理されます
- DEGRADED — 障害の増加を追跡しながら、リクエストの処理を継続します
- OPEN — 障害が繰り返されたため、プロバイダーは一時的にブロックされます
- HALF_OPEN — プロバイダーが回復したかどうかをテストしています
接続スコープの
429レート制限は接続クールダウンで処理され、プロバイダーブレーカーにはカウントされません。プロバイダーブレーカーのランタイム状態は、ダッシュボード → ヘルスにのみ表示されます。
- 劣化しきい値 —
-
クールダウンを待機 — すべての候補接続がすでにクールダウン中の場合、OmniRouteは最も早く終了するクールダウンを待ち、同じクライアントリクエストを自動的に再試行できます。
-
レート制限の自動検出 — アップストリームプロバイダーが明示的な待機時間を返した場合、この設定が有効であれば、そのヒントがローカル接続のクールダウンより優先されます。
ヒント: 障害発生後に稼働中のプロバイダーブレーカーを確認してリセットするには、ヘルスページを使用してください。レジリエンスページで変更できるのは設定のみです。
データベースのエクスポート/インポート
データベースのバックアップは、ダッシュボード → 設定 → システムとストレージで管理します。
| アクション | 説明 |
|---|---|
| データベースをエクスポート | 現在の SQLite データベースを .sqlite ファイルとしてダウンロードします |
| すべてエクスポート(.tar.gz) | データベース、設定、コンボ、プロバイダー接続情報(認証情報を除く)、API キーのメタデータを含む完全なバックアップアーカイブをダウンロードします |
| データベースをインポート | .sqlite ファイルをアップロードして現在のデータベースを置き換えます。DISABLE_SQLITE_AUTO_BACKUP=true でない限り、インポート前のバックアップが自動的に作成されます |
# API:データベースをエクスポート
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
# API:すべてエクスポート(完全なアーカイブ)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
# API:データベースをインポート
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
インポートの検証: インポートされたファイルは、整合性(SQLite pragma チェック)、必須テーブル(provider_connections、provider_nodes、combos、api_keys)、およびサイズ(最大 100MB)について検証されます。
ユースケース:
- OmniRoute をマシン間で移行する
- ディザスターリカバリー用の外部バックアップを作成する
- チームメンバー間で設定を共有する(すべてエクスポート → アーカイブを共有)
設定ダッシュボード
設定ページは、操作しやすいように 7 個のタブに整理されています:
| タブ | 内容 |
|---|---|
| 一般 | システムストレージツール、デフォルト動作、エンドポイントトンネルの表示設定 |
| 外観 | テーマ制御(ライト/ダーク/システム)、サイドバーの表示設定、Cloudflare/Tailscale/ngrok トンネルカードのパネル切り替え |
| AI | Thinking Budget(パススルー/自動除去/カスタム/適応型 — THINKING_BUDGET.md を参照)、グローバルシステムプロンプト、プロンプトキャッシュ統計 |
| セキュリティ | ログイン/パスワード設定、IP アクセス制御、/models の API 認証、プロバイダーのブロック、プロンプトインジェクション対策 |
| ルーティング | グローバルルーティング戦略(Fill First/Round Robin/P2C/Random/Least Used/Cost Optimized)、ワイルドカードモデルエイリアス、フォールバックチェーン、コンボのデフォルト |
| 耐障害性 | リクエストキュー、接続クールダウン、プロバイダーブレーカー設定、およびクールダウン待機動作 |
| 詳細設定 | グローバルプロキシ設定(HTTP/SOCKS5)、プロバイダーごとのプロキシオーバーライド |
「一般」タブには、読み取り専用のログおよびキャッシュに関する注記が重複して表示されなくなりました。データベースの保持期間と
最適化設定は /api/settings/database を通じて永続化され、手動でのキャッシュ消去には
DELETE /api/cache を使用します。リクエストログおよびプロキシログの最大行数は、
CALL_LOGS_TABLE_MAX_ROWS と PROXY_LOGS_TABLE_MAX_ROWS で制御されます。
コストと予算の管理
ダッシュボード → コストからアクセスします。
| タブ | 目的 |
|---|---|
| 予算 | API キーごとに日次/週次/月次の予算で支出上限を設定し、リアルタイムで追跡します |
| 価格設定 | モデルの価格エントリ(プロバイダーごとの入力/出力トークン 1,000 個あたりのコスト)を表示・編集します |
# API:予算を設定
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
# API:現在の予算状況を取得
curl http://localhost:20128/api/usage/budget
コスト追跡: すべてのリクエストについてトークン使用量が記録され、価格表を使用してコストが計算されます。プロバイダー、モデル、および API キーごとの内訳は、ダッシュボード → 使用状況で確認できます。
音声文字起こし
OmniRoute は、OpenAI 互換エンドポイントを介した音声文字起こしをサポートしています:
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
# curl を使用した例
curl -X POST http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer your-api-key" \
-F "file=@audio.mp3" \
-F "model=openai/whisper-1"
deepgram/nova-3 は Deepgram ネイティブのルートであり、Deepgram API キーが必要です。
OpenRouter のみを設定している場合は、openrouter/deepgram/nova-3 を使用してください。
**音声テキスト変換(文字起こし)**プロバイダー:
openai/(Whisper 互換)groq/(Groq Whisper Turbo)deepgram/(Nova ファミリー)assemblyai/nvidia/(Parakeet、Canary)huggingface/(Whisper バリアント)qwen/
**テキスト音声変換(POST /v1/audio/speech)**プロバイダー:
openai/(tts-1、tts-1-hd)hyperbolic/deepgram/(Aura)nvidia/(Magpie TTS)elevenlabs/huggingface/inworld/cartesia/playht/kie/aws-polly/xiaomi-mimo/coqui/、tortoise/qwen/
文字起こしでサポートされる音声形式:mp3、wav、m4a、flac、ogg、webm。TTS の出力形式はプロバイダーによって異なります(mp3、wav、opus、pcm、mulaw)。
コンボのバランシング戦略
コンボごとのバランシングは、ダッシュボード → コンボ → 作成/編集 → 戦略で設定します。
| 戦略 | 説明 |
|---|---|
| ラウンドロビン | モデルを順番に切り替えます |
| 優先順位 | 常に最初のモデルを試し、エラーが発生した場合にのみフォールバックします |
| ランダム | リクエストごとにコンボからランダムなモデルを選択します |
| 重み付け | モデルごとに割り当てられた重みに基づいて比例配分でルーティングします |
| 最少使用 | 直近のリクエスト数が最も少ないモデルにルーティングします(コンボメトリクスを使用) |
| コスト最適化 | 利用可能な最も安価なモデルにルーティングします(料金表を使用) |
グローバルなコンボのデフォルト設定は、ダッシュボード → 設定 → ルーティング → コンボのデフォルトで設定できます。 コンボターゲットのタイムアウトは、デフォルトで現在のリクエストタイムアウトを継承します。ターゲットごとの制限時間を短くして より迅速にフォールバックを開始する必要がある場合にのみ、コンボのデフォルト設定または個別のコンボで**ターゲットタイムアウト (秒)**を使用してください。
ゼロレイテンシーのコンボ最適化はオプトインです。これらのレイテンシー機能によってフォールバックターゲットとの競合、 TTFT 履歴に基づくターゲットのスキップ、フォールバックリクエストの圧縮が発生しないようにするには、ゼロレイテンシー最適化を 無効のままにしてください。有効にすると、設定されたヘッジング、予測 TTFT スキップ、プロアクティブなフォールバック圧縮が使用され、ルーティングやリクエストの忠実性と引き換えにテール レイテンシーを低減できます。
上流プロバイダーで厳密な
max_tokens / maxOutputTokens 制限が必要な場合は、推論トークンバッファを無効にしてください。有効にすると、コンボルーティングでは、既知の出力上限を持つモデルにのみ推論モデル用の
余裕が追加され、安全なバッファ値がその上限を超える場合はクライアントのトークン制限が変更されません。クライアントの制限が既知の上限をすでに超えている場合、
OmniRoute は上流リクエストを送信する前に、その上限まで制限値を引き下げます。
ヘルスダッシュボード
ダッシュボード → ヘルスからアクセスできます。6 つのカードでシステムの健全性をリアルタイムに確認できます。
| カード | 表示内容 |
|---|---|
| システムステータス | 稼働時間、バージョン、メモリ使用量、データディレクトリ |
| プロバイダーの健全性 | グローバルプロバイダーのサーキットブレーカーの実行時状態 |
| レート制限 | アカウントごとの有効な接続クールダウンと残り時間 |
| 有効なロックアウト | 有効なモデル単位のロックアウトと一時的な除外 |
| シグネチャキャッシュ | 重複排除キャッシュの統計(有効なキー、ヒット率) |
| レイテンシーテレメトリ | プロバイダーごとの p50/p95/p99 レイテンシー集計 |
プロのヒント: ヘルスページは 10 秒ごとに自動更新されます。問題が発生しているプロバイダーを特定するには、サーキットブレーカーカードを使用してください。
🤖 自動ルーティング(設定不要)
OmniRoute には、接続されたすべてのプロバイダーから各リクエストに最適なモデルを選択する、スコア駆動型の自動ルーターが搭載されています。管理が必要なコンボはありません。auto/* プレフィックスのいずれかを指定してリクエストを送信するだけで、OmniRoute がその場で仮想コンボを構築し、レイテンシ、コスト、成功率、コンテキスト適合度、タスクに対するモデルの適性、直近の失敗、クォータ、サーキットブレーカーの状態に基づいて候補をスコアリングします。
| プレフィックス | 最適化対象 |
|---|---|
auto |
バランスの取れたデフォルト(レイテンシ × コスト × 成功率) |
auto/coding |
コーディングタスク:Claude、GPT-5、GLM、Kimi、Qwen Coder、DeepSeek のコーディングモデルを優先 |
auto/cheap |
最低の $/token。レイテンシの増加を許容 |
auto/fast |
最低レイテンシ。コストは無視 |
auto/offline |
ローカル専用プロバイダー(Ollama、vLLM、llama.cpp)。エアギャップ環境に有用 |
auto/smart |
推論品質を最優先(Opus、GPT-5 xhigh、R1、GLM 5.1 reasoning) |
auto/lkgp |
「最後に正常動作したプロバイダー」— 最後に成功したプロバイダーに固定し、その後ルールへフォールバック |
例:
curl -X POST http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "auto/coding",
"messages": [{ "role": "user", "content": "この Python 関数をリファクタリングしてください" }],
"stream": true
}'
自動ルーターの詳細については、AUTO-COMBO.md を参照してください。スコアリングの重みの調整方法、プロバイダーをブラックリストに登録する方法、ダッシュボード → Auto Combo でルーティング判断を確認する方法などが記載されています。
🔌 MCP と A2A の統合
OmniRoute は、MCP サーバー(Model Context Protocol)であると同時に、A2A サーバー(Agent-to-Agent JSON-RPC 2.0)でもあります。MCP 互換の IDE またはエージェントホストから OmniRoute のツールを直接呼び出せます。追加のラッパーは必要ありません。
MCP トランスポート
- SSE:
http://localhost:20128/api/mcp/sse - ストリーム対応 HTTP:
http://localhost:20128/api/mcp/stream - stdio:
omniroute --mcp(stdio を使用する IDE プラグイン向け)
Claude Desktop への接続
macOS では ~/Library/Application Support/Claude/claude_desktop_config.json を、Windows/Linux では対応するファイルを編集します:
{
"mcpServers": {
"omniroute": {
"command": "omniroute",
"args": ["--mcp"]
}
}
}
Cursor / Continue / VS Code MCP への接続
SSE URL http://localhost:20128/api/mcp/sse と、ダッシュボード → API Keys で生成した Bearer API キーを使用します。
スコープ
MCP では現在、名前付きスコープが 32 個定義されています。各 Bearer キーは特定のスコープのみに制限できます。正式なスコープとツールの一覧については MCP-SERVER.md を、JSON-RPC スキーマについては A2A-SERVER.md を参照してください。
🧠 スキルシステム
OmniRoute は拡張可能なスキルフレームワーク(src/lib/skills/)を公開しており、エージェントや A2A エンドポイントがドメイン固有のルーチン(例:code-review、summarize、extract-facts、web-research)を実行できます。
- マーケットプレイス UI — ダッシュボード → スキルからスキルを参照してインストール
- キーごとのスコープ — 各 API キーが呼び出せるスキルを制限
- カスタムスキル — TypeScript ファイルを
src/lib/a2a/skills/に配置して登録すると、A2A 経由ですぐに呼び出し可能
完全なリファレンス:SKILLS.md。
💾 メモリシステム
OmniRoute は、ハイブリッド検索を使用して長期的な会話メモリを永続化します。
- 過去のターンを対象としたキーワード検索には SQLite FTS5
- 意味検索には Qdrant vector store(オプション)
- 自動ファクト抽出 — 各セッション後にエンティティ、設定、決定事項を要約し、
memory_factsテーブルに保存 - メモリは API キーごと、およびセッションごとにスコープ設定
ダッシュボード → メモリでメモリを管理できます(検索、編集、エクスポート、消去)。HTTP インターフェース(/api/memory/*)を使用すると、エージェントはプログラムからファクトを追加・照会できます。詳細は MEMORY.md を参照してください。
🔔 Webhook
リアルタイムの監視と自動化のために、OmniRoute イベントを購読できます。
- ダッシュボード → Webhookで、ターゲット URL と HMAC 署名シークレットを指定して Webhook を作成
- 利用可能なイベント:
request.completed、request.failed、provider.unavailable、budget.exceeded、combo.switched、circuit_breaker.opened、circuit_breaker.closed - すべてのペイロードには、検証用の
X-OmniRoute-Signature(HMAC-SHA256)が含まれます - 再試行:指数バックオフで 3 回試行後、デッドレターキューへ送信
完全なスキーマは WEBHOOKS.md を参照してください。
☁️ クラウドエージェント
OmniRoute はクラウドコーディングエージェント(OpenAI Codex Cloud、Devin、Jules、Antigravity)と統合されており、ローカルルーティングを管理するものと同じダッシュボードから、長時間実行タスクを送信できます。
- ダッシュボード → クラウドエージェント、または
POST /api/v1/agents/tasksを使用してタスクを作成 - タスクごとにステータス、ログ、アーティファクトを追跡
- プロバイダーごとに独自の API キーを使用可能 — 認証情報が OmniRoute インスタンスの外部に送信されることはありません
完全なリファレンス:CLOUD_AGENT.md。
🛠️ プログラムによる管理
manage スコープを持つ Bearer キーを使用して、HTTP 経由ですべての OmniRoute リソース(プロバイダー、コンボ、キー、設定)を管理できます。
ダッシュボード → API キー → 新しいキー → スコープ:manageでキーを生成してから、以下を実行します。
# プロバイダーを一覧表示
curl http://localhost:20128/api/providers \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"
# プロバイダー接続を追加
curl -X POST http://localhost:20128/api/providers \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \
-H "Content-Type: application/json" \
-d '{ "provider": "openai", "apiKey": "sk-...", "name": "main" }'
# コンボを作成
curl -X POST http://localhost:20128/api/combos \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "premium", "strategy": "priority", "models": [{ "model": "cc/claude-opus-4-7" }, { "model": "glm/glm-5.1" }] }'
# API キーを一覧表示/作成
curl http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"
curl -X POST http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \
-d '{ "name": "ci-bot", "scopes": ["chat"] }'
エンドポイントの完全なカタログとリクエスト/レスポンススキーマについては、API_REFERENCE.md を参照してください。
💻 内部 CLI
OmniRoute には、セットアップ、診断、ランタイム制御用の内部 CLI(omniroute …)が付属しています。これは、サードパーティー製 CLI(Claude Code、Cursor、Codex、Cline など)が OmniRoute と通信できるように設定する、ダッシュボードの「CLI ツール」ページとは別のものです。
omniroute setup # 対話形式のウィザード(パスワード、プロバイダー、コンボ)
omniroute setup --non-interactive # CI 向け
omniroute doctor # ヘルス診断(データディレクトリ、DB、プロバイダー、ポート)
omniroute providers available # サポートされているプロバイダーを一覧表示
omniroute providers list # 設定済みの接続を一覧表示
omniroute providers test <id> # プロバイダー接続をリアルタイムでテスト
omniroute combos list # コンボを一覧表示
omniroute combos switch <name> # デフォルトのコンボを設定
omniroute models # 利用可能なモデルを一覧表示(--json、--search)
omniroute keys add | list | remove # ターミナルから API キーを管理
omniroute backup # 設定と DB のスナップショットを作成
omniroute restore [<timestamp>] # スナップショットから復元
omniroute health # 詳細なヘルス情報(ブレーカー、キャッシュ、メモリ)
omniroute quota # プロバイダーのクォータ使用量
omniroute mcp status # MCP サーバーのステータス
omniroute a2a status # A2A サーバーのステータス
omniroute tunnel list|create|stop # Cloudflare/Tailscale/ngrok トンネル
omniroute reset-password # 管理者パスワードをリセット
omniroute --mcp # stdio 経由で MCP サーバーを起動
omniroute --port 3000 # カスタムポートでサーバーを起動
ヒント: omniroute doctor --json を監視ツールと組み合わせることで、プロバイダー接続に問題がある場合にアラートを発行できます。
🖥️ デスクトップアプリケーション(Electron)
OmniRoute は、Windows、macOS、Linux 向けのネイティブデスクトップアプリケーションとして利用できます。
インストール
# electron ディレクトリから実行:
cd electron
npm install
# 開発モード(実行中の Next.js 開発サーバーに接続):
npm run dev
# 本番モード(スタンドアロンビルドを使用):
npm start
インストーラーのビルド
cd electron
npm run build # 現在のプラットフォーム
npm run build:win # Windows(.exe NSIS)
npm run build:mac # macOS(.dmg ユニバーサル)
npm run build:linux # Linux(.AppImage)
出力先 → electron/dist-electron/
主な機能
| 機能 | 説明 |
|---|---|
| サーバーの準備状態 | ウィンドウを表示する前にサーバーをポーリング(空白画面を防止) |
| システムトレイ | トレイへの最小化、ポート変更、トレイメニューからの終了 |
| ポート管理 | トレイからサーバーポートを変更(サーバーを自動再起動) |
| コンテンツセキュリティポリシー | セッションヘッダーによる制限的な CSP |
| 単一インスタンス | 一度に実行できるアプリインスタンスは 1 つのみ |
| オフラインモード | 同梱の Next.js サーバーはインターネット接続なしで動作 |
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
OMNIROUTE_PORT |
20128 |
サーバーポート |
OMNIROUTE_MEMORY_MB |
512 |
Node.js のヒープ上限(64~16384 MB) |
📖 完全なドキュメント: electron/README.md