* feat(providers): add Zylo UnoRouter and Poolside registries * feat(providers): integrate audited free-tier gateways * feat: add wave2 free-tier provider registries * feat(providers): add Mixlayer Speka and TokenReply registries * feat: add wave 2 free-tier provider registries * fix: align meganova provider slug * feat(providers): integrate wave2 free-tier gateways * feat(providers): add Wave 3-A free-tier registries * feat(providers): add HelyxAI Auriko and Poixe registries * feat(providers): add Naga AI and Chat Oripe registries * feat(providers): integrate wave3 free-tier gateways * feat(providers): add FreeInference registry * feat(providers): add Free.ai registry * feat(providers): integrate wave4 free-tier gateways * docs: synchronize provider and free-tier inventories * refactor(providers): split audited gateway catalog * feat(providers): add audited Void AI and HelixMind gateways * feat(providers): finalize audited free-tier integration * test(providers): update APIKEY split count to 229 after rebase onto release/v3.8.50 The rebase merged the release catalog (201 APIKEY providers) with the PR's 28 free-tier additions, yielding 229 total. Correct the characterization count so the partition assertion reflects the true merged state. --------- Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com> Co-authored-by: backryun <bakryun0718@proton.me>
40 KiB
Panduan Pengguna (Bahasa Indonesia)
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇪🇸 es · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇮🇳 mr · 🇲🇾 ms · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN
Panduan lengkap untuk mengonfigurasi penyedia, membuat combo, mengintegrasikan alat CLI, dan menerapkan OmniRoute.
Daftar Isi
- Harga Sekilas
- Kasus Penggunaan
- Pengaturan Penyedia
- Integrasi CLI
- Penerapan
- Model yang Tersedia
- Fitur Lanjutan
💰 Harga Sekilas
| Tingkatan | Penyedia | Biaya | Reset Kuota | Terbaik Untuk |
|---|---|---|---|---|
| 💳 LANGGANAN | Claude Code (Pro) | $20/bln | 5j + mingguan | Sudah berlangganan |
| Codex (Plus/Pro) | $20-200/bln | 5j + mingguan | Pengguna OpenAI | |
| GitHub Copilot | $10-19/bln | Bulanan | Pengguna GitHub | |
| 🔑 KUNCI API | DeepSeek | Bayar pakai | Tidak ada | Penalaran murah |
| Groq | Bayar pakai | Tidak ada | Inferensi sangat cepat | |
| xAI (Grok) | Bayar pakai | Tidak ada | Penalaran Grok 4 | |
| Mistral | Bayar pakai | Tidak ada | Model berbasis EU | |
| Perplexity | Bayar pakai | Tidak ada | Dilengkapi pencarian | |
| Together AI | Bayar pakai | Tidak ada | Model sumber terbuka | |
| Fireworks AI | Bayar pakai | Tidak ada | Gambar FLUX cepat | |
| Cerebras | Bayar pakai | Tidak ada | Kecepatan skala wafer | |
| Cohere | Bayar pakai | Tidak ada | RAG Command R+ | |
| NVIDIA NIM | Bayar pakai | Tidak ada | Model enterprise | |
| 💰 MURAH | GLM-4.7 | $0.6/1M | Harian pukul 10 | Cadangan hemat |
| MiniMax M2.1 | $0.2/1M | Bergulir 5 jam | Pilihan termurah | |
| Kimi K2 | $9/bln flat | 10M token/bln | Biaya yang dapat diprediksi | |
| 🆓 GRATIS | Qoder | $0 | Tidak terbatas | 8 model gratis |
| Qwen | $0 | Tidak terbatas | 3 model gratis | |
| Kiro | $0 | Tidak terbatas | Claude gratis |
🎯 Kasus Penggunaan
Kasus 1: "Saya punya langganan Claude Pro"
Masalah: Kuota habis tidak terpakai, batas kecepatan saat coding intensif
Combo: "maximize-claude"
1. cc/claude-opus-4-7 (gunakan langganan sepenuhnya)
2. glm/glm-4.7 (cadangan murah saat kuota habis)
3. if/kimi-k2-thinking (fallback darurat gratis)
Biaya bulanan: $20 (langganan) + ~$5 (cadangan) = total $25
vs. $20 + terkena batas = frustrasi
Kasus 2: "Saya ingin biaya nol"
Masalah: Tidak mampu berlangganan, butuh AI coding yang andal
Combo: "free-tier-fallback"
1. if/kimi-k2-thinking (no published token cap; limits apply)
2. qw/qwen3-coder-plus (no published token cap; limits apply)
Biaya bulanan: $0 pada jatah yang saat ini tercantum
Kualitas: verifikasi model, batas, privasi, dan SLA untuk beban kerja Anda
Kasus 3: "Saya butuh fallback berlapis untuk coding"
Masalah: Tenggat waktu dan kebutuhan untuk mengurangi dampak batas penyedia
Combo: "always-on"
1. cc/claude-opus-4-7 (kualitas terbaik)
2. cx/gpt-5.2-codex (langganan kedua)
3. glm/glm-4.7 (murah, reset harian)
4. minimax/MiniMax-M2.1 (termurah, reset 5 jam)
5. if/kimi-k2-thinking (akses gratis tercantum; batas penyedia berlaku)
Hasil: 5 lapis fallback memperluas ketahanan; ketersediaan upstream tidak dijamin
Biaya bulanan: $20-200 (langganan) + $10-20 (cadangan)
Kasus 4: "Saya ingin AI GRATIS di OpenClaw"
Masalah: Perlu asisten AI di aplikasi pesan dengan opsi akses gratis
Combo: "openclaw-free"
1. if/glm-4.7 (akses gratis tercantum; batas penyedia berlaku)
2. if/minimax-m2.1 (akses gratis tercantum; batas penyedia berlaku)
3. if/kimi-k2-thinking (akses gratis tercantum; batas penyedia berlaku)
Biaya bulanan: $0 pada jatah yang saat ini tercantum; ketentuan dapat berubah
Akses melalui: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
📖 Pengaturan Penyedia
🔐 Penyedia Berlangganan
Claude Code (Pro/Max)
Dashboard → Providers → Connect Claude Code
→ OAuth login → Auto token refresh
→ 5-hour + weekly quota tracking
Models:
cc/claude-opus-4-7
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
Tips Pro: Gunakan Opus untuk tugas kompleks, Sonnet untuk kecepatan. OmniRoute melacak kuota per model!
OpenAI Codex (Plus/Pro)
Dashboard → Providers → Connect Codex
→ OAuth login (port 1455)
→ 5-hour + weekly reset
Models:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
GitHub Copilot
Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
→ Monthly reset (1st of month)
Models:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3.1-pro-preview
💰 Penyedia Murah
GLM-4.7 (Reset harian, $0.6/1M)
- Daftar: Zhipu AI
- Dapatkan kunci API dari Coding Plan
- Dasbor → Tambahkan Kunci API: Penyedia:
glm, Kunci API:your-key
Gunakan: glm/glm-4.7 — Tips Pro: Coding Plan menawarkan kuota 3× dengan biaya 1/7! Reset setiap hari pukul 10:00.
MiniMax M2.1 (Reset 5 jam, $0.20/1M)
- Daftar: MiniMax
- Dapatkan kunci API → Dasbor → Tambahkan Kunci API
Gunakan: minimax/MiniMax-M2.1 — Tips Pro: Pilihan termurah untuk konteks panjang (1M token)!
Kimi K2 ($9/bulan flat)
- Berlangganan: Moonshot AI
- Dapatkan kunci API → Dasbor → Tambahkan Kunci API
Gunakan: kimi/kimi-latest — Tips Pro: Tetap $9/bulan untuk 10M token = biaya efektif $0.90/1M!
🆓 Penyedia GRATIS
Qoder (8 model GRATIS)
Dashboard → Connect Qoder → OAuth login → Access is subject to current provider limits
Models: if/kimi-k2-thinking, if/qwen3-coder-plus, if/glm-4.7, if/minimax-m2, if/deepseek-r1
Qwen (3 model GRATIS)
Dashboard → Connect Qwen → Device code auth → Access is subject to current provider limits
Models: qw/qwen3-coder-plus, qw/qwen3-coder-flash
Kiro (Claude GRATIS)
Dashboard → Connect Kiro → AWS Builder ID or Google/GitHub → Unlimited
Models: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
🎨 Combo
Anda dapat mengurutkan ulang kartu combo langsung di Dashboard → Combos dengan menyeret gagang pada setiap kartu. Urutan disimpan di SQLite dan dipulihkan saat dimuat ulang.
Contoh 1: Maksimalkan Langganan → Cadangan Murah
Dashboard → Combos → Create New
Name: premium-coding
Models:
1. cc/claude-opus-4-7 (Langganan utama)
2. glm/glm-4.7 (Cadangan murah, $0.6/1M)
3. minimax/MiniMax-M2.1 (Fallback termurah, $0.20/1M)
Use in CLI: premium-coding
Contoh 2: Hanya Gratis (Biaya Nol)
Name: free-combo
Models:
1. if/kimi-k2-thinking (no published token cap; provider limits may apply)
2. qw/qwen3-coder-plus (no published token cap; provider limits may apply)
Cost: saat ini $0 dalam batas penyedia; ketentuan dan ketersediaan dapat berubah
🔧 Integrasi CLI
Cursor IDE
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [dari dasbor omniroute]
Model: cc/claude-opus-4-7
Claude Code
Edit ~/.claude/config.json:
{
"anthropic_api_base": "http://localhost:20128/v1",
"anthropic_api_key": "your-omniroute-api-key"
}
Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
OpenClaw
Edit ~/.openclaw/openclaw.json:
{
"agents": {
"defaults": {
"model": { "primary": "omniroute/if/glm-4.7" }
}
},
"models": {
"providers": {
"omniroute": {
"baseUrl": "http://localhost:20128/v1",
"apiKey": "your-omniroute-api-key",
"api": "openai-completions",
"models": [{ "id": "if/glm-4.7", "name": "glm-4.7" }]
}
}
}
}
Atau gunakan Dasbor: CLI Tools → OpenClaw → Auto-config
Cline / Continue / RooCode
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [dari dasbor]
Model: cc/claude-opus-4-7
Penerapan
Instalasi npm Global (Direkomendasikan)
npm install -g omniroute
# Create config directory
mkdir -p ~/.omniroute
# Create .env file (see .env.example)
cp .env.example ~/.omniroute/.env
# Start server
omniroute
# Or with custom port:
omniroute --port 3000
CLI secara otomatis memuat .env dari ~/.omniroute/.env atau ./.env.
Menghapus Instalasi
Saat Anda tidak lagi memerlukan OmniRoute, kami menyediakan dua skrip cepat untuk penghapusan bersih:
| Perintah | Tindakan |
|---|---|
npm run uninstall |
Menghapus aplikasi dari sistem tetapi menyimpan DB dan konfigurasi di ~/.omniroute. |
npm run uninstall:full |
Menghapus aplikasi DAN secara permanen menghapus semua konfigurasi, kunci, dan basis data. |
Catatan: Untuk menjalankan perintah ini, navigasikan ke folder proyek OmniRoute (jika Anda telah meng-clone-nya) dan jalankan. Atau, jika diinstal secara global, Anda cukup menjalankan
npm uninstall -g omniroute.
Penerapan 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
# Or: pm2 start npm --name omniroute -- start
Penerapan PM2 (Memori Rendah)
Untuk server dengan RAM terbatas, gunakan opsi batas memori:
# With 512MB limit (default)
pm2 start npm --name omniroute -- start
# Or with custom memory limit
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
# Or using ecosystem.config.js
pm2 start ecosystem.config.js
Buat 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
# Build image (default = runner-cli with codex/claude/droid preinstalled)
docker build -t omniroute:cli .
# Portable mode (recommended)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
Untuk mode integrasi host dengan binari CLI, lihat bagian Docker di dokumentasi utama.
Void Linux (xbps-src)
Pengguna Void Linux dapat mengemas dan menginstal OmniRoute secara native menggunakan framework kompilasi silang xbps-src. Ini mengotomasi build standalone Node.js beserta binding native better-sqlite3 yang diperlukan.
Lihat template xbps-src
# Template file for 'omniroute'
pkgname=omniroute
version=3.2.4
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() {
# Determine target CPU arch for node-gyp
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) Install all deps – skip scripts
NODE_ENV=development npm ci --ignore-scripts
# 2) Build the Next.js standalone bundle
npm run build
# 3) Copy static assets into standalone
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) Compile better-sqlite3 native binding
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) Place the compiled binding into the standalone bundle
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) Remove arch-specific sharp bundles
rm -rf .next/standalone/node_modules/@img
# 7) Copy pino runtime deps omitted by Next.js static analysis:
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
# Prevent removal of empty Next.js app router dirs by the post-install hook
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
}
Variabel Lingkungan
| Variabel | Default | Deskripsi |
|---|---|---|
JWT_SECRET |
omniroute-default-secret-change-me |
Rahasia penandatanganan JWT (ubah di produksi) |
INITIAL_PASSWORD |
123456 |
Kata sandi login pertama |
DATA_DIR |
~/.omniroute |
Direktori data (db, penggunaan, log) |
PORT |
default framework | Port layanan (20128 dalam contoh) |
HOSTNAME |
default framework | Host bind (Docker default ke 0.0.0.0) |
NODE_ENV |
default runtime | Atur production untuk penerapan |
BASE_URL |
http://localhost:20128 |
URL berbasis sisi server internal |
CLOUD_URL |
https://omniroute.dev |
Cloud sinkronisasi titik akhir berbasis URL |
API_KEY_SECRET |
endpoint-proxy-api-key-secret |
Rahasia HMAC untuk kunci API yang dihasilkan |
REQUIRE_API_KEY |
false |
Wajibkan kunci API Bearer di /v1/* |
ALLOW_API_KEY_REVEAL |
false |
Izinkan Api Manager menyalin kunci API lengkap sesuai permintaan |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
Frekuensi refresh sisi server untuk data Provider Limits yang di-cache; tombol refresh UI tetap memicu sinkronisasi manual |
DISABLE_SQLITE_AUTO_BACKUP |
false |
Nonaktifkan snapshot SQLite otomatis sebelum tulis/impor/pemulihan; backup manual tetap berfungsi |
APP_LOG_TO_FILE |
true |
Mengaktifkan output log aplikasi dan audit ke disk |
AUTH_COOKIE_SECURE |
false |
Paksa cookie auth Secure (di belakang reverse proxy HTTPS) |
CLOUDFLARED_BIN |
tidak diatur | Gunakan binari cloudflared yang sudah ada alih-alih unduhan terkelola |
CLOUDFLARED_PROTOCOL |
http2 |
Transport untuk Quick Tunnel terkelola (http2, quic, atau auto) |
OMNIROUTE_MEMORY_MB |
512 |
Batas heap Node.js dalam MB |
PROMPT_CACHE_MAX_SIZE |
50 |
Entri cache prompt maksimum |
SEMANTIC_CACHE_MAX_SIZE |
100 |
Entri cache semantik maksimum |
Untuk referensi variabel lingkungan lengkap, lihat README.
📊 Model yang Tersedia
Lihat semua model yang tersedia
Claude Code (cc/) — Pro/Max: cc/claude-opus-4-7, cc/claude-sonnet-4-5-20250929, cc/claude-haiku-4-5-20251001
Codex (cx/) — Plus/Pro: cx/gpt-5.2-codex, cx/gpt-5.1-codex-max
GitHub Copilot (gh/): gh/gpt-5, gh/claude-4.5-sonnet
GLM (glm/) — $0.6/1M: glm/glm-4.7
MiniMax (minimax/) — $0.2/1M: minimax/MiniMax-M2.1
Qoder (if/) — GRATIS: if/kimi-k2-thinking, if/qwen3-coder-plus, if/deepseek-r1
Qwen (qw/) — GRATIS: qw/qwen3-coder-plus, qw/qwen3-coder-flash
Kiro (kr/) — GRATIS: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
DeepSeek (ds/): ds/deepseek-chat, ds/deepseek-reasoner
Groq (groq/): groq/llama-3.3-70b-versatile, groq/llama-4-maverick-17b-128e-instruct
xAI (xai/): xai/grok-4, xai/grok-4-0709-fast-reasoning, xai/grok-code-mini
Mistral (mistral/): mistral/mistral-large-2501, mistral/codestral-2501
Perplexity (pplx/): pplx/sonar-pro, pplx/sonar
Together AI (together/): together/meta-llama/Llama-3.3-70B-Instruct-Turbo
Fireworks AI (fireworks/): fireworks/accounts/fireworks/models/deepseek-v3p1
Cerebras (cerebras/): cerebras/llama-3.3-70b
Cohere (cohere/): cohere/command-r-plus-08-2024
NVIDIA NIM (nvidia/): nvidia/nvidia/llama-3.3-70b-instruct
🧩 Fitur Lanjutan
Model Kustom
Tambahkan ID model apa pun ke penyedia mana pun tanpa menunggu pembaruan aplikasi:
# Via API
curl -X POST http://localhost:20128/api/provider-models \
-H "Content-Type: application/json" \
-d '{"provider": "openai", "modelId": "gpt-4.5-preview", "modelName": "GPT-4.5 Preview"}'
# List: curl http://localhost:20128/api/provider-models?provider=openai
# Remove: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-4.5-preview"
Atau gunakan Dasbor: Penyedia → [Penyedia] → Model Khusus.
Catatan:
- Penyedia yang kompatibel dengan OpenRouter dan OpenAI/Anthropic dikelola hanya melalui Available Models. Penambahan manual, impor, dan auto-sync semuanya masuk ke daftar model yang sama, sehingga tidak ada bagian Custom Models terpisah untuk penyedia tersebut.
- Bagian Custom Models ditujukan untuk penyedia yang tidak mengekspos impor model yang terkelola.
Rute Penyedia Khusus
Arahkan permintaan langsung ke penyedia tertentu dengan validasi model:
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
Awalan penyedia ditambahkan otomatis jika tidak ada. Model yang tidak cocok mengembalikan 400.
Konfigurasi Proxy Jaringan
# Set global proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
# Per-provider proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
# Test proxy
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
Urutan Prioritas: Spesifik-kunci → Spesifik-combo → Spesifik-penyedia → Global → Lingkungan.
API Katalog Model
curl http://localhost:20128/api/models/catalog
Mengembalikan model yang dikelompokkan berdasarkan penyedia dengan tipe (chat, embedding, image).
Sinkronisasi Cloud
- Sinkronkan penyedia, combo, dan pengaturan di semua perangkat
- Sinkronisasi latar belakang otomatis dengan timeout + gagal cepat
- Gunakan
BASE_URL/CLOUD_URLsisi server di produksi
Cloudflare Quick Tunnel
- Tersedia di Dashboard → Endpoints untuk penerapan Docker dan self-hosted lainnya
- Membuat URL
https://*.trycloudflare.comsementara yang diteruskan ke endpoint/v1Anda yang kompatibel dengan OpenAI - Aktifkan pertama kali untuk menginstal
cloudflaredhanya saat diperlukan; restart berikutnya menggunakan kembali binari terkelola yang sama - Quick Tunnel tidak dipulihkan otomatis setelah OmniRoute atau container di-restart; aktifkan kembali dari dasbor bila diperlukan
- URL tunnel bersifat sementara dan berubah setiap kali Anda menghentikan/memulai tunnel
- Managed Quick Tunnel secara default menggunakan transport HTTP/2 untuk menghindari peringatan buffer UDP QUIC yang mengganggu di container terbatas
- Atur
CLOUDFLARED_PROTOCOL=quicatauautojika ingin mengubah pilihan transport terkelola - Atur
CLOUDFLARED_BINjika ingin menggunakan binaricloudflaredyang sudah terinstal alih-alih unduhan terkelola
Kecerdasan LLM Gateway (Fase 9)
- Cache Semantik — Otomatis menyimpan respons non-streaming, temperature=0 (lewati dengan
X-OmniRoute-No-Cache: true) - Idempotensitas Permintaan — Mendeduplikasi permintaan dalam 5 detik melalui header
Idempotency-KeyatauX-Request-Id - Pelacakan Progres — Event SSE
event: progressyang bisa diaktifkan melalui headerX-OmniRoute-Progress: true
Translator Playground
Akses melalui Dashboard → Translator. Debug dan visualisasikan bagaimana OmniRoute menerjemahkan permintaan API antar penyedia.
| Mode | Tujuan |
|---|---|
| Playground | Pilih format sumber/target, tempel permintaan, dan lihat hasil terjemahan secara instan |
| Chat Tester | Kirim pesan chat langsung melalui proxy dan periksa siklus permintaan/respons lengkap |
| Test Bench | Jalankan pengujian batch di berbagai kombinasi format untuk memverifikasi kebenaran terjemahan |
| Live Monitor | Amati terjemahan real-time saat permintaan mengalir melalui proxy |
Kasus penggunaan:
- Debug mengapa kombinasi klien/penyedia tertentu gagal
- Verifikasi bahwa tag thinking, pemanggilan tool, dan system prompt diterjemahkan dengan benar
- Bandingkan perbedaan format antara OpenAI, Claude, Gemini, dan format Responses API
Strategi Routing
Konfigurasikan melalui Dasbor → Pengaturan → Perutean.
| Strategy | Description |
|---|---|
| Fill First | Menggunakan akun dalam urutan prioritas — akun utama menangani semua permintaan hingga tidak tersedia |
| Round Robin | Menggilir semua akun dengan batas melekat yang dapat dikonfigurasi (default: 3 panggilan per akun) |
| P2C (Power of Two Choices) | Pilih 2 akun acak dan rute ke akun yang lebih sehat — menyeimbangkan beban dengan kesadaran akan kesehatan |
| Random | Memilih akun secara acak untuk setiap permintaan menggunakan pengacakan Fisher-Yates |
| Least Used | Merutekan ke akun dengan stempel waktu lastUsedAt terlama, mendistribusikan lalu lintas secara merata |
| Cost Optimized | Merutekan ke akun dengan nilai prioritas terendah, mengoptimalkan penyedia berbiaya terendah |
Header Sesi Lengket Eksternal
Untuk afinitas sesi eksternal (misalnya, agen Claude Code/Codex di belakang proxy terbalik), kirim:
X-Session-Id: your-session-key
OmniRoute juga menerima x_session_id dan mengembalikan kunci sesi efektif di X-OmniRoute-Session-Id.
Jika Anda menggunakan Nginx dan mengirim header berbentuk garis bawah, aktifkan:
underscores_in_headers on;
Model Alias Wildcard
Buat pola wildcard untuk memetakan ulang nama model:
Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-5-20250929
Pattern: gpt-* → Target: gh/gpt-5.1-codex
Wildcard mendukung * (karakter apa saja) dan ? (karakter tunggal).
Fallback Chains
Tentukan rantai fallback global yang berlaku di semua permintaan:
Chain: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.1-codex
3. glm/glm-4.7
Ketahanan & Pemutus Sirkuit
Konfigurasikan melalui Dasbor → Pengaturan → Ketahanan.
OmniRoute mengimplementasikan ketahanan tingkat penyedia dengan lima komponen:
-
Antrian & Kecepatan Permintaan — Pembentukan permintaan tingkat sistem:
- Permintaan Per Menit (RPM) — Permintaan maksimum per menit per akun
- Waktu Minimum Antar Permintaan — Kesenjangan minimum dalam milidetik antar permintaan
- Permintaan Bersamaan Maksimum — Permintaan simultan maksimum per akun
-
Cooldown Koneksi — Konfigurasi tipe per autentikasi untuk satu koneksi setelah kegagalan yang dapat dicoba lagi:
- Cooldown Dasar — Jendela cooldown default untuk kegagalan upstream yang dapat dicoba ulang
- Gunakan Petunjuk Coba Ulang Hulu — Ikuti
Retry-Afterresmi atau petunjuk setel ulang bila diberikan - Langkah Backoff Maks — Tingkat backoff eksponensial maksimum untuk kegagalan berulang
-
Pemutus Sirkuit Penyedia — Melacak kegagalan penyedia ujung ke ujung dan secara otomatis membuka pemutus ketika ambang batas yang dikonfigurasi tercapai:
- Ambang Kegagalan — Kegagalan penyedia berturut-turut sebelum membuka pemutus
- Reset Timeout — Jangka waktu sebelum penyedia diuji lagi
- TUTUP (Sehat) — Permintaan mengalir normal
- BUKA — Penyedia diblokir sementara setelah kegagalan berulang kali
- HALF_OPEN — Menguji apakah penyedia telah pulih
Batas kecepatan
429cakupan koneksi tetap dalam Cooldown Koneksi dan tidak diperhitungkan dalam pemutus penyedia.Status waktu proses pemutus penyedia hanya ditampilkan di Dasbor → Kesehatan.
-
Tunggu Cooldown — Jika setiap kandidat koneksi sudah cooldown, OmniRoute dapat menunggu cooldown paling awal dan mencoba kembali permintaan klien yang sama secara otomatis.
-
Deteksi Otomatis Batas Kecepatan — Saat penyedia upstream mengembalikan jendela tunggu eksplisit, petunjuk tersebut akan menggantikan jeda pakai koneksi lokal saat pengaturan diaktifkan.
Kiat Pro: Gunakan laman Kesehatan untuk memeriksa dan menyetel ulang pemutus penyedia langsung setelah pemadaman. Halaman Ketahanan hanya mengubah konfigurasi.
Ekspor/Impor Basis Data
Kelola cadangan basis data di Dasbor → Pengaturan → Sistem & Penyimpanan.
| Action | Description |
|---|---|
| Export Database | Mengunduh database SQLite saat ini sebagai file .sqlite |
| Ekspor Semua (.tar.gz) | Mengunduh arsip cadangan lengkap termasuk: basis data, pengaturan, kombo, koneksi penyedia (tanpa kredensial), metadata kunci API |
| Import Database | Unggah file .sqlite untuk menggantikan database saat ini. Cadangan pra-impor dibuat secara otomatis kecuali DISABLE_SQLITE_AUTO_BACKUP=true |
# API: Export database
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
# API: Export all (full archive)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
# API: Import database
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
Validasi Impor: File yang diimpor divalidasi integritasnya (pemeriksaan pragma SQLite), tabel yang diperlukan (provider_connections, provider_nodes, combos, api_keys), dan ukuran (maks 100MB).
Use Cases:
- Migrasi OmniRoute antar mesin
- Buat cadangan eksternal untuk pemulihan bencana
- Bagikan konfigurasi antar anggota tim (ekspor semua → bagikan arsip)
Dashboard Pengaturan
Halaman pengaturan disusun menjadi 6 tab untuk memudahkan navigasi:
| Tab | Contents |
|---|---|
| General | System storage tools, appearance settings, theme controls, and per-item sidebar visibility |
| Security | Pengaturan Login/Kata Sandi, Kontrol Akses IP, autentikasi API untuk /models, dan Pemblokiran Penyedia |
| Routing | Global routing strategy (6 options), wildcard model aliases, fallback chains, combo defaults |
| Resilience | Antrean permintaan, waktu tunggu koneksi, konfigurasi pemutus penyedia, dan perilaku menunggu waktu tunggu |
| AI | Thinking budget configuration, global system prompt injection, prompt cache stats |
| Advanced | Konfigurasi proksi global (HTTP/SOCKS5) |
Biaya & Manajemen Anggaran
Akses melalui Dasbor → Biaya.
| Tab | Purpose |
|---|---|
| Budget | Tetapkan batas pengeluaran per kunci API dengan anggaran harian/mingguan/bulanan dan pelacakan waktu nyata |
| Pricing | Lihat dan edit entri harga model — biaya per 1K token input/output per penyedia |
# API: Set a budget
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
# API: Get current budget status
curl http://localhost:20128/api/usage/budget
Pelacakan Biaya: Setiap permintaan mencatat penggunaan token dan menghitung biaya menggunakan tabel harga. Lihat pengelompokan di Dasbor → Penggunaan menurut penyedia, model, dan kunci API.
Transkripsi Audio
OmniRoute mendukung transkripsi audio melalui titik akhir yang kompatibel dengan OpenAI:
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
# Example with curl
curl -X POST http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer your-api-key" \
-F "file=@audio.mp3" \
-F "model=deepgram/nova-3"
Penyedia yang tersedia: Deepgram (deepgram/), AssemblyAI (assemblyai/).
Format audio yang didukung: mp3, wav, m4a, flac, ogg, webm.
Strategi Penyeimbangan Kombo
Konfigurasikan penyeimbangan per kombo di Dasbor → Kombo → Buat/Edit → Strategi.
| Strategy | Description |
|---|---|
| Round-Robin | Berputar melalui model secara berurutan |
| Priority | Selalu mencoba model pertama; jatuh kembali hanya karena kesalahan |
| Random | Memilih model acak dari kombo untuk setiap permintaan |
| Weighted | Rute secara proporsional berdasarkan bobot yang ditetapkan per model |
| Least-Used | Merutekan ke model dengan permintaan terkini paling sedikit (menggunakan metrik kombo) |
| Cost-Optimized | Rute ke model termurah yang tersedia (menggunakan tabel harga) |
Default kombo global dapat diatur di Dasbor → Pengaturan → Perutean → Default Kombo.
Dashboard Kesehatan
Akses melalui Dasbor → Kesehatan. Ikhtisar kesehatan sistem real-time dengan 6 kartu:
| Card | Apa yang Ditunjukkannya |
|---|---|
| System Status | Uptime, version, memory usage, data directory |
| Provider Health | Status runtime pemutus sirkuit penyedia global |
| Rate Limits | Cooldown koneksi aktif per akun dengan sisa waktu |
| Active Lockouts | Penguncian cakupan model aktif dan pengecualian sementara |
| Signature Cache | Statistik cache deduplikasi (kunci aktif, tingkat hit) |
| Latency Telemetry | agregasi latensi p50/p95/p99 per penyedia |
Tips Pro: Halaman Kesehatan disegarkan secara otomatis setiap 10 detik. Gunakan kartu pemutus sirkuit untuk mengidentifikasi penyedia mana yang mengalami masalah.
🖥️ Aplikasi Desktop (Elektron)
OmniRoute tersedia sebagai aplikasi desktop asli untuk Windows, macOS, dan Linux.
Instal
# From the electron directory:
cd electron
npm install
# Development mode (connect to running Next.js dev server):
npm run dev
# Production mode (uses standalone build):
npm start
Membuat Installer
cd electron
npm run build # Current platform
npm run build:win # Windows (.exe NSIS)
npm run build:mac # macOS (.dmg universal)
npm run build:linux # Linux (.AppImage)
Output → electron/dist-electron/
Fitur Utama
| Feature | Description |
|---|---|
| Server Readiness | Server jajak pendapat sebelum menampilkan jendela (tidak ada layar kosong) |
| System Tray | Minimize to tray, change port, quit from tray menu |
| Port Management | Ubah port server dari baki (server restart otomatis) |
| Kebijakan Keamanan Konten | CSP terbatas melalui header sesi |
| Single Instance | Hanya satu instance aplikasi yang dapat berjalan dalam satu waktu |
| Offline Mode | Server Next.js yang dibundel berfungsi tanpa internet |
Variabel Lingkungan
| Variable | Default | Description |
|---|---|---|
OMNIROUTE_PORT |
20128 |
Server port |
OMNIROUTE_MEMORY_MB |
512 |
Node.js heap limit (64–16384 MB) |
📖 Full documentation: electron/README.md