1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors. ⚠️ base-red inherited: #12732
71 KiB
User Guide (Norsk)
🌐 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 · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇮🇳 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
🌐 Språk: 🇺🇸 English | 🇪🇹 አማርኛ | 🇸🇦 العربية | 🇦🇿 Azərbaycan dili | 🇧🇬 Български | 🇧🇩 বাংলা | 🇨🇿 Čeština | 🇩🇰 Dansk | 🇩🇪 Deutsch | 🇬🇷 Ελληνικά | 🇪🇸 Español | 🇪🇪 Eesti | 🇮🇷 فارسی | 🇫🇮 Suomi | 🇫🇷 Français | 🇮🇪 Gaeilge | 🇮🇳 ગુજરાતી | 🇳🇬 Hausa | 🇮🇱 עברית | 🇮🇳 हिन्दी | 🇭🇷 Hrvatski | 🇭🇺 Magyar | 🇦🇲 Հայերեն | 🇮🇩 Bahasa Indonesia | 🇳🇬 Igbo | 🇮🇹 Italiano | 🇯🇵 日本語 | 🇬🇪 ქართული | 🇰🇭 ខ្មែរ | 🇮🇳 ಕನ್ನಡ | 🇰🇷 한국어 | 🇱🇹 Lietuvių | 🇱🇻 Latviešu | 🇮🇳 മലയാളം | 🇮🇳 मराठी | 🇲🇾 Bahasa Melayu | 🇲🇹 Malti | 🇲🇲 မြန်မာ | 🇳🇵 नेपाली | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇮🇳 ଓଡ଼ିଆ | 🇮🇳 ਪੰਜਾਬੀ | 🇵🇭 Filipino | 🇵🇱 Polski | 🇵🇹 Português (Portugal) | 🇧🇷 Português (Brasil) | 🇷🇴 Română | 🇷🇺 Русский | 🇱🇰 සිංහල | 🇸🇰 Slovenčina | 🇸🇮 Slovenščina | 🇷🇸 Српски | 🇸🇪 Svenska | 🇰🇪 Kiswahili | 🇮🇳 தமிழ் | 🇮🇳 తెలుగు | 🇹🇭 ไทย | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇵🇰 اردو | 🇺🇿 Oʻzbekcha | 🇻🇳 Tiếng Việt | 🇳🇬 Yorùbá | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)
Komplett veiledning for konfigurering av leverandører, oppretting av kombinasjoner, integrering av CLI-verktøy og distribusjon av OmniRoute.
Innholdsfortegnelse
- Priser i korte trekk
- Bruksområder
- Leverandøroppsett
- CLI-integrasjon
- Distribusjon
- Tilgjengelige modeller
- Avanserte funksjoner
- Automatisk ruting (uten konfigurasjon)
- MCP- og A2A-integrasjon
- Ferdighetssystem
- Minnesystem
- Webhooks
- Skyagenter
- Programmatisk administrasjon
- Intern CLI
- Skrivebordsapplikasjon (Electron)
💰 Priser i korte trekk
| Nivå | Leverandør | Kostnad | Tilbakestilling av kvote | Passer best for |
|---|---|---|---|---|
| 💳 ABONNEMENT | Claude Code (Pro) | $20/mnd. | 5 t + ukentlig | De som allerede abonnerer |
| Codex (Plus/Pro) | $20-200/mnd. | 5 t + ukentlig | OpenAI-brukere | |
| GitHub Copilot | $10-19/mnd. | Månedlig | GitHub-brukere | |
| 🔑 API-NØKKEL | DeepSeek | Betal per bruk | Ingen | Rimelig resonnering |
| Groq | Betal per bruk | Ingen | Ultrarask inferens | |
| xAI (Grok) | Betal per bruk | Ingen | Grok 4-resonnering | |
| Mistral | Betal per bruk | Ingen | EU-baserte modeller | |
| Perplexity | Betal per bruk | Ingen | Søkeforsterkede modeller | |
| Together AI | Betal per bruk | Ingen | Modeller med åpen kildekode | |
| Fireworks AI | Betal per bruk | Ingen | Raske FLUX-bilder | |
| Cerebras | Betal per bruk | Ingen | Hastighet på wafernivå | |
| Cohere | Betal per bruk | Ingen | Command R+ RAG | |
| NVIDIA NIM | Betal per bruk | Ingen | Bedriftsmodeller | |
| Baidu Qianfan | Betal per bruk | Ingen | ERNIE-modeller | |
| 💰 RIMELIG | GLM-4.7 | $0.6/1M | Daglig kl. 10 | Rimelig reserve |
| MiniMax M2.1 | $0.2/1M | Rullerende 5-timersperiode | Billigste alternativ | |
| Kimi K2 | Fast $9/mnd. | 10M tokens/mnd. | Forutsigbar kostnad | |
| 🆓 GRATIS | Qoder | $0 | Leverandørgrenser gjelder | Kontroller gjeldende katalog |
| Kiro | $0 | ~50 kreditter/mnd. | Gratis Claude |
🎯 Bruksområder
Tilfelle 1: «Jeg har et Claude Pro-abonnement»
Problem: Kvoten utløper ubrukt, og hastighetsbegrensninger oppstår under intensiv koding
Kombinasjon: "maximize-claude"
1. cc/claude-opus-4-7 (utnytt abonnementet fullt ut)
2. glm/glm-4.7 (rimelig reserve når kvoten er brukt opp)
3. if/qwen3.8-max-preview (gratis nødløsning)
Månedlig kostnad: $20 (abonnement) + ~$5 (reserve) = totalt $25
kontra $20 + å nå grensene = frustrasjon
Tilfelle 2: «Jeg vil ha null kostnader»
Problem: Har ikke råd til abonnementer, men trenger pålitelig AI-koding
Kombinasjon: "zero-cost"
1. if/kimi-k2.7-code (oppført med gratis tilgang; hastighetsbegrensninger kan gjelde)
2. kr/qwen3-coder-next (gratis Kiro-reserve)
Månedlig kostnad: $0
Kvalitet: Kontroller modellen, grensene, personvernet og SLA-en for arbeidsbelastningen din
Tilfelle 3: «Jeg trenger koding døgnet rundt, uten avbrudd»
Problem: Tidsfrister, har ikke råd til nedetid
Kombinasjon: "always-on"
1. cc/claude-opus-4-7 (beste kvalitet)
2. cx/gpt-5.5 (andre abonnement)
3. glm/glm-4.7 (rimelig, tilbakestilles daglig)
4. minimax/MiniMax-M2.1 (billigst, tilbakestilles etter 5 t)
5. if/deepseek-v4-flash (oppført med gratis tilgang; hastighetsbegrensninger kan gjelde)
Resultat: 5 reservelag gir større robusthet; tilgjengelighet hos oppstrømsleverandører er ikke garantert
Månedlig kostnad: $20-200 (abonnementer) + $10-20 (reserve)
Tilfelle 4: «Jeg vil ha GRATIS AI i OpenClaw»
Problem: Trenger en AI-assistent i meldingsapper, helt gratis
Kombinasjon: "openclaw-free"
1. if/qwen3.8-max-preview (oppført med gratis tilgang; hastighetsbegrensninger kan gjelde)
2. if/deepseek-v4-flash (oppført med gratis tilgang; hastighetsbegrensninger kan gjelde)
3. if/kimi-k2.7-code (oppført med gratis tilgang; hastighetsbegrensninger kan gjelde)
Månedlig kostnad: $0
Tilgang via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
📖 Oppsett av leverandører
For å legge til flere API-nøkkeltilkoblinger samtidig fra en CSV- eller JSON-fil bruker du Kontrollpanel → Leverandører → Importer fra fil. Kolonnene er posisjonsbaserte (provider,name,apiKey,baseUrl,priority); provider må allerede finnes som en administrert leverandør eller en kompatibel node. Se Importer leverandører fra en CSV- eller JSON-fil.
🔐 Abonnementsleverandører
Claude Code (Pro/Max)
Kontrollpanel → Leverandører → Koble til Claude Code
→ OAuth-innlogging → Automatisk oppdatering av token
→ Sporing av 5-timerskvote og ukentlig kvote
Modeller:
cc/claude-opus-4-7
cc/claude-sonnet-4-6
cc/claude-haiku-4-5-20251001
Profftips: Bruk Opus til komplekse oppgaver og Sonnet når hastighet er viktig. OmniRoute sporer kvoten per modell!
Ruter som er kompatible med Claude og Claude Code, beholder max-nivået for resonneringsinnsats for Opus- og Sonnet-modeller. Haiku-modeller godtar ikke innsatsnivået max, så OmniRoute nedjusterer forespørselen til et høyt resonneringsbudsjett før den sendes oppstrøms.
OpenAI Codex (Plus/Pro)
Kontrollpanel → Leverandører → Koble til Codex
→ OAuth-innlogging (port 1455)
→ Tilbakestilling hver 5. time og ukentlig
Modeller:
cx/gpt-5.5
cx/gpt-5.4
cx/gpt-5.3-codex
cx/gpt-5.3-codex-spark
GitHub Copilot
Kontrollpanel → Leverandører → Koble til GitHub
→ OAuth via GitHub
→ Månedlig tilbakestilling (den 1. i måneden)
Modeller:
gh/gpt-5.5
gh/gpt-5.4
gh/claude-sonnet-4.6
gh/claude-opus-4.7
gh/gemini-3.1-pro-preview
💰 Rimelige leverandører
GLM-4.7 (daglig tilbakestilling, $0.6/1M)
- Registrer deg: Zhipu AI
- Hent API-nøkkelen fra Coding Plan
- Kontrollpanel → Legg til API-nøkkel: Leverandør:
glm, API-nøkkel:your-key
Bruk: glm/glm-4.7 — Profftips: Coding Plan tilbyr 3× kvote til 1/7 av kostnaden! Tilbakestilles daglig kl. 10:00.
MiniMax M2.1 (tilbakestilling hver 5. time, $0.20/1M)
- Registrer deg: MiniMax
- Hent API-nøkkelen → Kontrollpanel → Legg til API-nøkkel
Bruk: minimax/MiniMax-M2.1 — Profftips: Det rimeligste alternativet for lang kontekst (1M tokens)!
Kimi K2 (fastpris på $9/måned)
- Abonner: Moonshot AI
- Hent API-nøkkelen → Kontrollpanel → Legg til API-nøkkel
Bruk: kimi/kimi-k2.5 — Profftips: Fastpris på $9/måned for 10M tokens = en effektiv kostnad på $0.90/1M!
Baidu Qianfan / ERNIE
- Registrer deg: Baidu AI Cloud Qianfan
- Opprett en Qianfan API-nøkkel → Kontrollpanel → Legg til API-nøkkel: Leverandør:
qianfan
Bruk: qianfan/ernie-5.1, qianfan/ernie-x1.1 eller en annen Qianfan-modell-ID som er kompatibel med OpenAI.
🆓 GRATIS leverandører
Gratisleverandører uten autentisering har en bryter ved siden av Ingen autentisering kreves på leverandørsiden.
Når den slås av, deaktiveres leverandøren, den fjernes fra de konfigurerte og kompakte visningene under Leverandører, og
modellene fjernes fra /v1/models.
Qoder (9 GRATIS modeller)
Kontrollpanel → Koble til Qoder → OAuth-innlogging → Tilgangen er underlagt leverandørens gjeldende begrensninger
Modeller: 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 GRATIS)
Kontrollpanel → Koble til Kiro → AWS Builder ID eller Google/GitHub → ~50 kreditter/måned
Modeller: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
🎨 Kombinasjoner
Du kan endre rekkefølgen på kombinasjonskort direkte i Kontrollpanel → Kombinasjoner ved å dra håndtaket på hvert kort. Rekkefølgen lagres i SQLite og gjenopprettes ved ny innlasting.
Eksempel 1: Maksimer abonnement → Rimelig reserve
Kontrollpanel → Kombinasjoner → Opprett ny
Navn: premium-coding
Modeller:
1. cc/claude-opus-4-7 (Primærabonnement)
2. glm/glm-4.7 (Rimelig reserve, $0.6/1M)
3. minimax/MiniMax-M2.7 (Billigste reserveløsning, $0.3/1M)
Bruk i CLI: premium-coding
Eksempel 2: Kun gratis (ingen kostnad)
Navn: free-combo
Modeller:
1. if/kimi-k2.7-code (oppført med gratis tilgang; leverandørbegrensninger kan gjelde)
2. kr/qwen3-coder-next (gratis reserveløsning fra Kiro)
Kostnad: for øyeblikket oppført som $0; vilkår og tilgjengelighet kan endres
🔧 CLI-integrasjon
Cursor IDE
Bruke Cursor som en OmniRoute-klient (ruter Cursor-chat gjennom OmniRoute):
Innstillinger → Modeller → Avansert:
OpenAI API-grunn-URL: http://localhost:20128/v1
OpenAI API-nøkkel: [fra OmniRoute-kontrollpanelet]
Modell: cc/claude-opus-4-7
Bruke OmniRoute som en Cursor-leverandør (OmniRoute kaller Cursor oppstrøms): bruk fortrinnsvis
Kontrollpanel → Leverandører → Cursor → Logg inn med Cursor. For Docker, se
docs/providers/CURSOR-DOCKER.md.
Claude Code
Rediger ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:20128",
"ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key"
}
}
Bruk det Claude-kompatible rotendepunktet her. Ikke legg til /v1 i ANTHROPIC_BASE_URL.
Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
OpenClaw
Rediger ~/.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" }]
}
}
}
}
Eller bruk kontrollpanelet: CLI-verktøy → OpenClaw → Automatisk konfigurasjon
Cline / Continue / RooCode
Leverandør: OpenAI-kompatibel
Grunn-URL: http://localhost:20128/v1
API-nøkkel: [fra kontrollpanelet]
Modell: cc/claude-opus-4-7
🚀 Distribusjon
Global npm-installasjon (anbefalt)
npm install -g omniroute
# Opprett konfigurasjonsmappe
mkdir -p ~/.omniroute
# Opprett .env-fil (se .env.example)
cp .env.example ~/.omniroute/.env
# Start serveren
omniroute
# Eller med egendefinert port:
omniroute --port 3000
CLI-en laster automatisk .env fra ~/.omniroute/.env eller ./.env.
Systemstatusfeltmodus
Start OmniRoute i systemstatusfeltet:
omniroute serve --tray
Kommandoen avsluttes etter at serveren og systemstatusfeltet er klare.
Serveren fortsetter å kjøre uten terminalen.
Systemstatusfeltmodus støtter macOS, Windows og grafiske Linux-økter. Systemstatusfeltmodus åpner ikke kontrollpanelet automatisk.
Bruk menyen i systemstatusfeltet til disse handlingene:
- Åpne kontrollpanelet.
- Åpne
/dashboard/logs. - Endre automatisk oppstart.
- Stoppe OmniRoute.
Ikke kombiner --tray med disse alternativene:
--daemon--log--no-recovery
Disse modusene krever forskjellig prosesseierskap.
Aktiver oppstart ved neste innlogging på maskinen:
omniroute autostart enable
Automatisk oppstart bruker systemstatusfeltmodus på macOS, Windows og i grafiske Linux-økter. Linux uten grafisk grensesnitt bruker den eksisterende systemd-brukertjenesten.
Deaktiver oppstart ved innlogging:
omniroute autostart disable
Avinstallering
Når du ikke lenger trenger OmniRoute, tilbyr vi to raske skript for fullstendig fjerning:
| Kommando | Handling |
|---|---|
npm run uninstall |
Fjerner systemappen, men beholder databasen og konfigurasjonene dine i ~/.omniroute. |
npm run uninstall:full |
Fjerner appen OG sletter alle konfigurasjoner, nøkler og databaser permanent. |
Merk: For å kjøre disse kommandoene må du gå til OmniRoute-prosjektmappen (hvis du klonet den) og kjøre dem der. Hvis den er installert globalt, kan du alternativt ganske enkelt kjøre
npm uninstall -g omniroute.
VPS-distribusjon
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
# Eller: pm2 start npm --name omniroute -- start
PM2-distribusjon (lite minne)
For servere med begrenset RAM bruker du alternativet for minnegrense:
# Med grense på 512 MB (standard)
pm2 start npm --name omniroute -- start
# Eller med egendefinert minnegrense
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
# Eller ved å bruke ecosystem.config.js
pm2 start ecosystem.config.js
Opprett 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
# Bygg avbildning (standard = runner-cli med codex/claude/droid forhåndsinstallert)
docker build -t omniroute:cli .
# Portabel modus (anbefalt)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
For vertsintegrert modus med CLI-binærfiler, se Docker-delen i hoveddokumentasjonen.
Void Linux (xbps-src)
Void Linux-brukere kan pakke og installere OmniRoute direkte ved hjelp av krysskompileringsrammeverket xbps-src. Dette automatiserer den frittstående Node.js-byggingen sammen med de nødvendige native bindingene for better-sqlite3.
Vis xbps-src-malen
# Malfil for «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() {
# Fastslå målarkitekturen for prosessoren som skal brukes av 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) Installer alle avhengigheter – hopp over skript
NODE_ENV=development npm ci --ignore-scripts
# 2) Bygg den frittstående Next.js-pakken
npm run build
# 3) Kopier statiske ressurser til den frittstående pakken
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) Kompiler den native bindingen for 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) Plasser den kompilerte bindingen i den frittstående pakken
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) Fjern arkitekturspesifikke sharp-pakker
rm -rf .next/standalone/node_modules/@img
# 7) Kopier kjøretidsavhengigheter for pino som ble utelatt av den statiske Next.js-analysen:
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
# Forhindre at etterinstallasjonskroken fjerner tomme Next.js-app-rutermapper
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
}
Miljøvariabler
| Variabel | Standardverdi | Beskrivelse |
|---|---|---|
JWT_SECRET |
omniroute-default-secret-change-me |
Hemmelighet for JWT-signering (må endres i produksjon) |
INITIAL_PASSWORD |
CHANGEME |
Passord for første innlogging |
DATA_DIR |
~/.omniroute |
Datakatalog (database, bruk, logger) |
PORT |
rammeverkets standardverdi | Tjenesteport (20128 i eksemplene) |
HOSTNAME |
rammeverkets standardverdi | Vert det skal bindes til (Docker bruker 0.0.0.0 som standard) |
NODE_ENV |
kjøretidsmiljøets standardverdi | Sett til production ved distribusjon |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
Offentlig basis-URL som vises i kontrollpanelet og eksponeres for serveren (erstatter eldre BASE_URL) |
NEXT_PUBLIC_CLOUD_URL |
https://omniroute.dev |
Basis-URL for endepunktet for skysynkronisering (erstatter eldre CLOUD_URL) |
API_KEY_SECRET |
endpoint-proxy-api-key-secret |
HMAC-hemmelighet for genererte API-nøkler |
REQUIRE_API_KEY |
false |
Krev Bearer-API-nøkkel på /v1/* |
ALLOW_API_KEY_REVEAL |
false |
Tillat autentiserte kontrollpanelbrukere å vise fullstendige lagrede API-nøkkelverdier ved behov |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
Oppdateringsfrekvens på serversiden for bufrede Provider Limits-data; oppdateringsknapper i brukergrensesnittet utløser fortsatt manuell synkronisering |
DISABLE_SQLITE_AUTO_BACKUP |
false |
Deaktiver automatiske SQLite-øyeblikksbilder før skriving/import/gjenoppretting; manuelle sikkerhetskopier fungerer fortsatt |
APP_LOG_TO_FILE |
true |
Aktiverer lagring av program- og revisjonslogger på disk |
AUTH_COOKIE_SECURE |
false |
Tving bruk av Secure-informasjonskapsel for autentisering (bak en HTTPS-reversproxy) |
CLOUDFLARED_BIN |
ikke angitt | Bruk en eksisterende cloudflared-binærfil i stedet for administrert nedlasting |
CLOUDFLARED_PROTOCOL |
http2 |
Transport for administrerte Quick Tunnels (http2, quic eller auto) |
OMNIROUTE_MEMORY_MB |
512 |
Grense for Node.js-heap i MB |
PROMPT_CACHE_MAX_SIZE |
50 |
Maksimalt antall oppføringer i promptbufferen |
SEMANTIC_CACHE_MAX_SIZE |
100 |
Maksimalt antall oppføringer i den semantiske bufferen |
Du finner en fullstendig oversikt over miljøvariabler i README.
📊 Tilgjengelige modeller
Vis alle tilgjengelige modeller
Listen nedenfor er hentet fra
open-sse/config/providerRegistry.tsfor v3.8.0. Skyleverandørenes kataloger (Gemini, OpenRouter osv.) synkroniseres dynamisk — åpne Kontrollpanel → Leverandører → [leverandør] → Tilgjengelige modeller eller kallGET /api/models/catalogfor å se hele den oppdaterte katalogen.Hvis den innebygde listen til en leverandør ikke lenger er oppdatert, bruker du Importer fra /models på denne siden (eller aktiverer Automatisk synkronisering) for å hente den oppdaterte katalogen fra oppstrømskilden. Dette ble verifisert i v3.8.50 for LLM7.io (
gemini-3.1-flash-lite) og UncloseAI (solidrust/Hermes-3-Llama-3.1-8B-AWQ); anonym tilgang til Pollinations var fortsatt begrenset av oppstrømskilden under den samme testrunden.
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 (+ innsatsnivåer: 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/) — GRATIS OAuth: bruk den oppdaterte katalogen som vises under Kontrollpanel → Leverandører → Kiro → Tilgjengelige modeller. Tilgjengeligheten avhenger av kontoen og abonnementet.
Qoder (if/) — GRATIS 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/) — fastpris på $9/mnd. eller betaling per bruk: kimi/kimi-k2.6, kimi/kimi-k2.5
DeepSeek (ds/) — API-nøkkel: ds/deepseek-v4-pro, ds/deepseek-v4-flash
Groq (groq/) — Ultrarask: 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/) — Innebygd 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/) — Driftet i EU: mistral/mistral-large-latest, mistral/mistral-medium-3-5, mistral/mistral-small-latest, mistral/devstral-latest, mistral/codestral-latest
Perplexity (pplx/) — Søkeforsterket: pplx/sonar-deep-research, pplx/sonar-reasoning-pro, pplx/sonar-pro, pplx/sonar
Together AI (together/) — Åpen kildekode: together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free (gratis), 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/) — Rask inferens: 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/) — På wafer-skala: cerebras/zai-glm-4.7, cerebras/gpt-oss-120b
Cohere (cohere/) — RAG-fokusert: 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/) — For virksomheter: 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/): Synkroniseres fortløpende fra Google for hver API-nøkkel — ingen statisk liste. Koble til en nøkkel under Kontrollpanel → Leverandører, og bruk deretter Tilgjengelige modeller for å importere den gjeldende katalogen (f.eks. gemini/gemini-3-pro, gemini/gemini-3-flash).
Andre kompatible leverandører (utvalg): cohere, databricks, snowflake, together, vertex, alibaba, alibaba-cn, bedrock (via aws-bedrock), azure-ai, openrouter (direktevidereformidlet katalog), siliconflow, hyperbolic, huggingface, featherless-ai, cloudflare-ai, scaleway, deepinfra, vercel-ai-gateway, bazaarlink, friendliai, nous-research, reka, volcengine, ai21, gigachat. Hver av dem vedlikeholder sin egen modelliste i providerRegistry.ts og kan synkroniseres automatisk når leverandøren tilbyr et /models-endepunkt.
Merknad om modell-ID-er: OmniRoute bruker leverandørens egne ID-er (claude-opus-4-8, gpt-5.5, glm-5.1, MiniMax-M2.7, kimi-k2.5, grok-4.20-0309-reasoning). Enkelte ID-er inneholder versjoner med punktum fordi det er formatet oppstrøms-API-et forventer. Hvis en modell ikke er oppført ovenfor, kjører du omniroute models --search <term> eller kaller GET /api/models/catalog for å bekrefte tilgjengeligheten.
🧩 Avanserte funksjoner
Egendefinerte modeller
Legg til en hvilken som helst modell-ID hos en hvilken som helst leverandør uten å vente på en appoppdatering:
# Via 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"}'
# Vis liste: curl http://localhost:20128/api/provider-models?provider=openai
# Fjern: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2"
Eller bruk kontrollpanelet: Leverandører → [Leverandør] → Egendefinerte modeller.
Merknader:
- OpenRouter og OpenAI/Anthropic-kompatible leverandører administreres kun fra Tilgjengelige modeller. Manuell tillegging, import og automatisk synkronisering havner alle i den samme listen over tilgjengelige modeller, så det finnes ingen separat seksjon for egendefinerte modeller for disse leverandørene.
- Seksjonen Egendefinerte modeller er beregnet på leverandører som ikke tilbyr administrert import av tilgjengelige modeller.
Sammenkobling av OmniRoute-noder
En annen OmniRoute-gateway kan legges til som en egendefinert OpenAI-kompatibel leverandør. Bruk
nodens /v1-basis-URL og en dedikert API-nøkkel med minst mulige rettigheter, utstedt av denne noden.
For gjensidige kjeder eller kjeder med flere hopp må den valgfrie sløyfebeskyttelsen aktiveres på hver gateway:
# 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
Bare forespørsler som sendes til en eksplisitt tillatt node-URL, mottar
X-OmniRoute-Peer-Trace-headeren. En gateway avviser en gjentatt instans-ID eller oppbrukt hoppbudsjett
med HTTP 508 Loop Detected; vanlige oppstrømsleverandører mottar ingen nodemetadata.
Sammenkobling av noder er ikke databasereplikering eller failover mellom verter. Hver gateway beholder uavhengig SQLite-tilstand, hurtigbuffere, frekvenstellere og økter. Bruk en helsesjekket omvendt proxy eller klientbasert failover for aktiv/passiv eller aktiv/aktiv tilgjengelighet, og monter aldri én SQLite-database i flere kjørende OmniRoute-instanser.
Dedikerte leverandørruter
Rute forespørsler direkte til en bestemt leverandør med modellvalidering:
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
Leverandørprefikset legges til automatisk hvis det mangler. Modeller som ikke samsvarer, returnerer 400.
Konfigurasjon av nettverksproxy
# Angi global proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
# Proxy per leverandør
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
# Test proxyen
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
Prioritet: Nøkkelspesifikk → Kombinasjonsspesifikk → Leverandørspesifikk → Global → Miljø.
API for modellkatalog
curl http://localhost:20128/api/models/catalog
Returnerer modeller gruppert etter leverandør med typer (chat, embedding, image).
Skysynkronisering
- Synkroniser leverandører, kombinasjoner og innstillinger på tvers av enheter
- Automatisk bakgrunnssynkronisering med tidsavbrudd og fail-fast
- Foretrekk
NEXT_PUBLIC_BASE_URL/NEXT_PUBLIC_CLOUD_URLpå serversiden i produksjon
Cloudflare Quick Tunnel
- Tilgjengelig i Kontrollpanel → Endepunkter for Docker og andre egenadministrerte distribusjoner
- Oppretter en midlertidig
https://*.trycloudflare.com-URL som videresender til det gjeldende OpenAI-kompatible/v1-endepunktet ditt - Første aktivering installerer
cloudflaredbare ved behov; senere omstarter gjenbruker den samme administrerte binærfilen - Quick Tunnels gjenopprettes ikke automatisk etter omstart av OmniRoute eller beholderen; aktiver dem på nytt fra kontrollpanelet ved behov
- Tunnel-URL-er er midlertidige og endres hver gang du stopper eller starter tunnelen
- Administrerte Quick Tunnels bruker HTTP/2-transport som standard for å unngå støyende advarsler om QUIC UDP-buffere i beholdere med begrensede ressurser
- Angi
CLOUDFLARED_PROTOCOL=quicellerautohvis du vil overstyre det administrerte transportvalget - Angi
CLOUDFLARED_BINhvis du foretrekker å bruke en forhåndsinstallertcloudflared-binærfil i stedet for den administrerte nedlastingen - Panelene for Cloudflare Quick Tunnel, Tailscale Funnel og ngrok Tunnel kan vises eller skjules under Innstillinger → Utseende. Å skjule et panel stopper ikke en tunnel som kjører.
LLM-gatewayintelligens (fase 9)
- Semantisk hurtigbuffer — Hurtigbufrer automatisk ikke-strømmende svar med temperature=0 (omgå med
X-OmniRoute-No-Cache: true) - Idempotens for forespørsler — Fjerner duplikate forespørsler innen 5 sekunder via headeren
Idempotency-KeyellerX-Request-Id - Fremdriftssporing — Valgfrie SSE-
event: progress-hendelser via headerenX-OmniRoute-Progress: true
Testområde for oversetteren
Åpnes via Kontrollpanel → Oversetter. Feilsøk og visualiser hvordan OmniRoute oversetter API-forespørsler mellom leverandører.
| Modus | Formål |
|---|---|
| Testområde | Velg kilde-/målformater, lim inn en forespørsel og se det oversatte resultatet umiddelbart |
| Chat-tester | Send direkte chatmeldinger gjennom proxyen og inspiser hele forespørsels-/svarsyklusen |
| Testbenk | Kjør gruppetester på tvers av flere formatkombinasjoner for å bekrefte at oversettelsen er korrekt |
| Direkteovervåking | Se oversettelser i sanntid mens forespørsler går gjennom proxyen |
Bruksområder:
- Feilsøk hvorfor en bestemt kombinasjon av klient og leverandør mislykkes
- Bekreft at tenketagger, verktøykall og systeminstruksjoner oversettes riktig
- Sammenlign formatforskjeller mellom OpenAI-, Claude-, Gemini- og Responses API-formatene
Rutingsstrategier
Konfigurer via Kontrollpanel → Innstillinger → Ruting. Kontrollpanelet viser de seks mest brukte strategiene. Kombinasjoner og autoruteren støtter internt et større utvalg.
Strategier som vises i kontrollpanelet (ruting på kontonivå):
| Strategi | Beskrivelse |
|---|---|
| Fyll første | Bruker kontoer i prioritert rekkefølge — primærkontoen håndterer alle forespørsler til den er utilgjengelig |
| Rundgang | Veksler mellom alle kontoer med en konfigurerbar grense for øktbinding (standard: 3 kall per konto) |
| P2C (velg den beste av to) | Velger 2 tilfeldige kontoer og ruter til den med best tilstand — balanserer belastning med hensyn til tilstand |
| Tilfeldig | Velger en tilfeldig konto for hver forespørsel ved hjelp av Fisher-Yates-blanding |
| Minst brukt | Ruter til kontoen med det eldste lastUsedAt-tidsstempelet og fordeler trafikken jevnt |
| Kostnadsoptimalisert | Ruter til kontoen med den laveste prioritetsverdien for å optimalisere for leverandørene med lavest kostnad |
Avanserte kombinasjons- og autostrategier (kan konfigureres per kombinasjon eller via auto/*-prefikser — se AUTO-COMBO.md):
priority— fast rekkefølge, bruker aldri rundgangweighted— proporsjonal trafikkfordeling basert på vekter per modellfill-first— bruker den første modellen til grensene nåsround-robin/strict-random/randomp2c(velg den beste av to)least-usedogcost-optimizedauto— poengbasert valg blant alle kandidaterlkgp(sist fungerende leverandør) — låser til den siste vellykkede leverandøren og bruker deretter reglene som reservecontext-optimized— velger modellen med det største ledige kontekstvinduetcontext-relay— kjeder modeller med lang kontekst for oppfølgingsrunder
Ekstern topptekst for øktbinding
For ekstern økttilhørighet (for eksempel Claude Code-/Codex-agenter bak reverse proxyer), send:
X-Session-Id: your-session-key
OmniRoute godtar også x_session_id og returnerer den gjeldende øktnøkkelen i X-OmniRoute-Session-Id.
Hvis du bruker Nginx og sender topptekster med understrek, aktiver:
underscores_in_headers on;
Modellaliaser med jokertegn
Opprett mønstre med jokertegn for å tilordne modellnavn på nytt:
Mønster: claude-sonnet-* → Mål: cc/claude-sonnet-4-6
Mønster: gpt-* → Mål: gh/gpt-5.3-codex
Jokertegn støtter * (vilkårlige tegn) og ? (ett enkelt tegn).
Reservekjeder
Definer globale reservekjeder som gjelder for alle forespørsler:
Kjede: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.3-codex
3. glm/glm-4.7
Robusthet og sikringer
Konfigurer via Kontrollpanel → Innstillinger → Robusthet.
OmniRoute implementerer robusthet på leverandørnivå med fem komponenter:
-
Forespørselskø og hastighetsstyring — Forespørselsstyring på systemnivå:
- Forespørsler per minutt (RPM) — Maksimalt antall forespørsler per minutt per konto
- Minste tid mellom forespørsler — Minste mellomrom i millisekunder mellom forespørsler
- Maksimalt antall samtidige forespørsler — Maksimalt antall samtidige forespørsler per konto
-
Nedkjøling av tilkobling — Konfigurasjon per autentiseringstype for én enkelt tilkobling etter feil som kan forsøkes på nytt:
- Grunnleggende nedkjøling — Standard nedkjølingsperiode for oppstrømsfeil som kan forsøkes på nytt
- Bruk oppstrøms hint for nye forsøk — Følger autoritative
Retry-After- eller tilbakestillingshint når de oppgis - Maksimalt antall tilbakekoblingstrinn — Maksimalt eksponentielt tilbakekoblingsnivå ved gjentatte feil
-
Leverandørsikring — Sporer ende-til-ende-feil hos leverandøren, merker en leverandør som svekket ved den konfigurerte varselterskelen og åpner sikringen når den konfigurerte feilterskelen nås:
- Terskel for svekkelse — Antall påfølgende leverandørfeil før tilstanden
DEGRADEDaktiveres - Feilterskel — Antall påfølgende leverandørfeil før tilstanden
OPENaktiveres - Tidsavbrudd for tilbakestilling — Tidsrom før leverandøren testes på nytt
- CLOSED (Frisk) — Forespørsler flyter normalt
- DEGRADED — Forespørsler flyter fortsatt mens det økte antallet feil spores
- OPEN — Leverandøren blokkeres midlertidig etter gjentatte feil
- HALF_OPEN — Tester om leverandøren er gjenopprettet
Tilkoblingsspesifikke
429-hastighetsbegrensninger forblir i Nedkjøling av tilkobling og teller ikke med i leverandørsikringen.Kjøringstilstanden for leverandørsikringen vises bare under Kontrollpanel → Tilstand.
- Terskel for svekkelse — Antall påfølgende leverandørfeil før tilstanden
-
Vent på nedkjøling — Hvis alle kandidattilkoblinger allerede kjøles ned, kan OmniRoute vente til den første nedkjølingen er ferdig og automatisk prøve den samme klientforespørselen på nytt.
-
Automatisk registrering av hastighetsbegrensninger — Når oppstrømsleverandører returnerer eksplisitte venteperioder, overstyrer disse hintene den lokale nedkjølingen av tilkoblingen når innstillingen er aktivert.
Profftips: Bruk siden Tilstand til å inspisere og tilbakestille aktive leverandørsikringer etter et avbrudd. Siden Robusthet endrer bare konfigurasjonen.
Eksport/import av database
Administrer databasesikkerhetskopier under Kontrollpanel → Innstillinger → System og lagring.
| Handling | Beskrivelse |
|---|---|
| Eksporter database | Laster ned den gjeldende SQLite-databasen som en .sqlite-fil |
| Eksporter alt (.tar.gz) | Laster ned et komplett sikkerhetskopiarkiv som inkluderer: database, innstillinger, kombinasjoner, leverandørtilkoblinger (uten påloggingsinformasjon), metadata for API-nøkler |
| Importer database | Laster opp en .sqlite-fil som erstatter den gjeldende databasen. En sikkerhetskopi opprettes automatisk før import, med mindre DISABLE_SQLITE_AUTO_BACKUP=true |
# API: Eksporter database
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
# API: Eksporter alt (komplett arkiv)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
# API: Importer database
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
Importvalidering: Den importerte filens integritet valideres (SQLite-pragma-kontroll), sammen med obligatoriske tabeller (provider_connections, provider_nodes, combos, api_keys) og størrelse (maks. 100 MB).
Bruksområder:
- Migrer OmniRoute mellom maskiner
- Opprett eksterne sikkerhetskopier for gjenoppretting etter katastrofer
- Del konfigurasjoner mellom teammedlemmer (eksporter alt → del arkivet)
Kontrollpanel for innstillinger
Innstillingssiden er organisert i 7 faner for enkel navigering:
| Fane | Innhold |
|---|---|
| Generelt | Verktøy for systemlagring, standardatferd, synlighet for endepunkttunneler |
| Utseende | Temakontroller (lyst/mørkt/system), synlighet for sidefeltet, panelbrytere for tunnelkortene Cloudflare/Tailscale/ngrok |
| KI | Tenkebudsjett (videresending / automatisk fjerning / egendefinert / adaptivt — se THINKING_BUDGET.md), global systeminstruks, statistikk for instruksbuffer |
| Sikkerhet | Innstillinger for innlogging/passord, IP-tilgangskontroll, API-autentisering for /models, leverandørblokkering, beskyttelse mot instruksinjeksjon |
| Ruting | Global rutingsstrategi (Fyll først / round robin / P2C / tilfeldig / minst brukt / kostnadsoptimalisert), jokertegnaliaser for modeller, reservekjeder, standardverdier for kombinasjoner |
| Robusthet | Forespørselskø, nedkjøling av tilkoblinger, konfigurasjon av leverandørbryter og atferd for venting på nedkjøling |
| Avansert | Global proxy-konfigurasjon (HTTP/SOCKS5), proxy-overstyringer per leverandør |
Generelt dupliserer ikke lenger skrivebeskyttede merknader om logging og hurtigbuffer. Innstillinger for databaseoppbevaring og
-optimalisering lagres via /api/settings/database; manuell tømming av hurtigbufferen bruker
DELETE /api/cache. Maksimalt antall rader i forespørsels- og proxy-loggene styres av
CALL_LOGS_TABLE_MAX_ROWS og PROXY_LOGS_TABLE_MAX_ROWS.
Kostnads- og budsjettstyring
Åpnes via Kontrollpanel → Kostnader.
| Fane | Formål |
|---|---|
| Budsjett | Angi forbruksgrenser per API-nøkkel med daglige/ukentlige/månedlige budsjetter og sporing i sanntid |
| Priser | Vis og rediger modellprisoppføringer — kostnad per 1 000 inn-/utdatatoken per leverandør |
# API: Angi et budsjett
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
# API: Hent gjeldende budsjettstatus
curl http://localhost:20128/api/usage/budget
Kostnadssporing: Hver forespørsel logger tokenbruk og beregner kostnaden ved hjelp av pristabellen. Se detaljert statistikk i Kontrollpanel → Bruk etter leverandør, modell og API-nøkkel.
Lydtranskripsjon
OmniRoute støtter lydtranskripsjon via det OpenAI-kompatible endepunktet:
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
# Eksempel med 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 er den opprinnelige Deepgram-ruten og krever en Deepgram API-nøkkel.
Hvis bare OpenRouter er konfigurert, bruker du openrouter/deepgram/nova-3.
Leverandører av tale-til-tekst (transkripsjon):
openai/(whisper-kompatibel)groq/(Groq Whisper Turbo)deepgram/(Nova-familien)assemblyai/nvidia/(Parakeet, Canary)huggingface/(whisper-varianter)qwen/
Leverandører av tekst-til-tale (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/
Støttede lydformater for transkripsjon: mp3, wav, m4a, flac, ogg, webm. Utdataformater for TTS avhenger av leverandøren (mp3, wav, opus, pcm, mulaw).
Strategier for balansering av kombinasjoner
Konfigurer balansering per kombinasjon i Kontrollpanel → Kombinasjoner → Opprett/rediger → Strategi.
| Strategi | Beskrivelse |
|---|---|
| Round-Robin | Roterer sekvensielt mellom modellene |
| Prioritet | Prøver alltid den første modellen; bruker reserve kun ved feil |
| Tilfeldig | Velger en tilfeldig modell fra kombinasjonen for hver forespørsel |
| Vektet | Ruter proporsjonalt basert på tilordnede vekter per modell |
| Minst brukt | Ruter til modellen med færrest nylige forespørsler (bruker kombinasjonsmålinger) |
| Kostnadsoptimalisert | Ruter til den billigste tilgjengelige modellen (bruker pristabellen) |
Globale standardinnstillinger for kombinasjoner kan angis under Kontrollpanel → Innstillinger → Ruting → Standardinnstillinger for kombinasjoner. Tidsavbrudd for kombinasjonsmål arver som standard tidsavbruddet for den gjeldende forespørselen. Bruk Tidsavbrudd for mål (sekunder) i standardinnstillingene for kombinasjoner eller i en enkelt kombinasjon bare når en kortere grense per mål skal utløse raskere bruk av reserve.
Kombinasjonsoptimaliseringer uten ventetid må aktiveres eksplisitt. La Optimaliseringer uten ventetid være deaktivert for å forhindre at disse ventetidsfunksjonene konkurrerer mot reservemål, hopper over mål basert på TTFT- historikk eller komprimerer reserveforespørsler. Aktivering tillater konfigurert sikring, prediktive TTFT- hopp og proaktiv komprimering av reserveforespørsler for å bytte rutings-/forespørselsnøyaktighet mot lavere haletid.
Deaktiver Buffer for resonneringstokener når oppstrømsleverandører krever strenge grenser for
max_tokens / maxOutputTokens. Når dette er aktivert, legger kombinasjonsruting bare til ekstra kapasitet for resonneringsmodeller
for modeller med en kjent utdata-grense, og lar klientens tokengrense være uendret når den
trygge bufrede verdien ville overskride denne grensen. Hvis klientgrensen allerede er over en kjent grense,
reduserer OmniRoute den til denne grensen før oppstrømsforespørselen sendes.
Helsekontrollpanel
Åpnes via Kontrollpanel → Helse. Sanntidsoversikt over systemtilstanden med 6 kort:
| Kort | Hva det viser |
|---|---|
| Systemstatus | Oppetid, versjon, minnebruk, datakatalog |
| Leverandørhelse | Kjøretidstilstand for den globale kretsbryteren for leverandører |
| Hastighetsgrenser | Aktive nedkjølingsperioder for tilkoblinger per konto, med gjenværende tid |
| Aktive sperringer | Aktive modellspesifikke sperringer og midlertidige ekskluderinger |
| Signaturbuffer | Statistikk for dedupliseringsbufferen (aktive nøkler, treffrate) |
| Ventetidstelemetri | Aggregering av p50/p95/p99-ventetid per leverandør |
Profftips: Helsesiden oppdateres automatisk hvert 10. sekund. Bruk kretsbryterkortet til å identifisere hvilke leverandører som har problemer.
🤖 Automatisk ruting (uten konfigurasjon)
OmniRoute leveres med en poengstyrt automatisk ruter som velger den beste modellen for hver forespørsel på tvers av alle tilkoblede leverandører — uten noen kombinasjon å vedlikeholde. Bare send forespørselen med ett av auto/*-prefiksene, så setter OmniRoute sammen en virtuell kombinasjon underveis og vurderer kandidatene basert på ventetid, kostnad, suksessrate, konteksttilpasning, modellens egnethet for oppgaven, nylige feil, kvote og tilstanden til effektbryteren.
| Prefiks | Optimaliserer for |
|---|---|
auto |
Balansert standardvalg (ventetid × kostnad × suksessrate) |
auto/coding |
Kodeoppgaver: foretrekker Claude, GPT-5, GLM, Kimi, Qwen Coder og DeepSeek-kodemodeller |
auto/cheap |
Lavest $/token, godtar høyere ventetid |
auto/fast |
Lavest ventetid, ignorerer kostnad |
auto/offline |
Kun lokale leverandører (Ollama, vLLM, llama.cpp) — nyttig for fysisk isolerte oppsett |
auto/smart |
Resonneringskvalitet først (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) |
auto/lkgp |
«Sist kjente fungerende leverandør» — låses til den siste vellykkede leverandøren, og bruker deretter reglene som reserve |
Eksempel:
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": "Refactor this Python function" }],
"stream": true
}'
Den automatiske ruteren er fullstendig beskrevet i AUTO-COMBO.md — inkludert hvordan du justerer poengvekter, svartelister leverandører og inspiserer rutingsbeslutninger i Kontrollpanel → Automatisk kombinasjon.
🔌 MCP- og A2A-integrasjon
OmniRoute er både en MCP-server (Model Context Protocol) og en A2A-server (Agent-to-Agent JSON-RPC 2.0). Alle MCP-kompatible IDE-er eller agentverter kan kalle OmniRoute-verktøy direkte — uten behov for en ekstra wrapper.
MCP-transporter
- SSE:
http://localhost:20128/api/mcp/sse - Strømmebar HTTP:
http://localhost:20128/api/mcp/stream - stdio:
omniroute --mcp(for IDE-tillegg som foretrekker stdio)
Koble til Claude Desktop
Rediger ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) eller tilsvarende fil på Windows/Linux:
{
"mcpServers": {
"omniroute": {
"command": "omniroute",
"args": ["--mcp"]
}
}
}
Koble til Cursor / Continue / VS Code MCP
Bruk SSE-URL-en http://localhost:20128/api/mcp/sse og en Bearer API-nøkkel generert i Kontrollpanel → API-nøkler.
Tilgangsområder
MCP definerer for øyeblikket 32 navngitte tilgangsområder. Hver Bearer-nøkkel kan begrenses til bestemte tilgangsområder — se MCP-SERVER.md for den autoritative oversikten over tilgangsområder og verktøy, og A2A-SERVER.md for JSON-RPC-skjemaet.
🧠 Ferdighetssystem
OmniRoute tilbyr et utvidbart rammeverk for ferdigheter (src/lib/skills/), slik at agenter og A2A-endepunktet kan kjøre domenespesifikke rutiner (f.eks. code-review, summarize, extract-facts, web-research).
- Markedsplassgrensesnitt — Bla gjennom og installer ferdigheter fra Kontrollpanel → Ferdigheter
- Omfang per nøkkel — Begrens hvilke API-nøkler som kan bruke hvilke ferdigheter
- Egendefinerte ferdigheter — Legg en TypeScript-fil i
src/lib/a2a/skills/, registrer den, så kan den umiddelbart brukes via A2A
Fullstendig referanse: SKILLS.md.
💾 Minnesystem
OmniRoute lagrer langsiktig samtaleminne med hybridsøk:
- SQLite FTS5 for nøkkelordsøk på tvers av tidligere samtalerunder
- Qdrant-vektorlager (valgfritt) for semantisk gjenkalling
- Automatisk faktauttrekking — entiteter, preferanser og beslutninger oppsummeres etter hver økt og lagres i tabellen
memory_facts - Minner avgrenses per API-nøkkel og per økt
Administrer minner under Kontrollpanel → Minne (søk, rediger, eksporter, slett). HTTP-grensesnittet (/api/memory/*) lar agenter registrere og søke etter fakta programmatisk — se MEMORY.md.
🔔 Webhooks
Abonner på OmniRoute-hendelser for overvåking og automatisering i sanntid.
- Opprett en webhook under Kontrollpanel → Webhooks med mål-URL og en hemmelig HMAC-signeringsnøkkel
- Tilgjengelige hendelser:
request.completed,request.failed,provider.unavailable,budget.exceeded,combo.switched,circuit_breaker.opened,circuit_breaker.closed - Hver nyttelast inkluderer
X-OmniRoute-Signature(HMAC-SHA256) for verifisering - Nye forsøk: 3 forsøk med eksponentiell tilbakeventing, deretter kø for ubehandlede meldinger
Fullstendig skjema finnes i WEBHOOKS.md.
☁️ Skyagenter
OmniRoute integreres med kodeagenter i skyen (OpenAI Codex Cloud, Devin, Jules, Antigravity), slik at du kan sende langvarige oppgaver fra det samme kontrollpanelet som håndterer den lokale rutingen din.
- Opprett oppgaver under Kontrollpanel → Skyagenter eller via
POST /api/v1/agents/tasks - Spor status, logger og artefakter for hver oppgave
- Bruk din egen API-nøkkel for hver leverandør — legitimasjonen forlater aldri OmniRoute-instansen
Fullstendig referanse: CLOUD_AGENT.md.
🛠️ Programmatisk administrasjon
Du kan administrere alle OmniRoute-ressurser (leverandører, kombinasjoner, nøkler og innstillinger) via HTTP ved hjelp av en Bearer-nøkkel med omfanget manage.
Generer nøkkelen under Kontrollpanel → API-nøkler → Ny nøkkel → Omfang: manage, og kjør deretter:
# Vis leverandører
curl http://localhost:20128/api/providers \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"
# Legg til en leverandørtilkobling
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" }'
# Opprett en kombinasjon
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" }] }'
# Vis/opprett API-nøkler
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"] }'
Se API_REFERENCE.md for en fullstendig katalog over endepunkter og skjemaer for forespørsler/svar.
💻 Intern CLI
OmniRoute leveres med et internt CLI (omniroute …) for oppsett, diagnostikk og kontroll under kjøring. Dette er adskilt fra siden «CLI-verktøy» i kontrollpanelet, som konfigurerer tredjeparts-CLI-er (Claude Code, Cursor, Codex, Cline, …), slik at de kan kommunisere med OmniRoute.
omniroute setup # Interaktiv veiviser (passord, leverandører, kombinasjoner)
omniroute setup --non-interactive # Egnet for CI
omniroute doctor # Helsediagnostikk (datamappe, database, leverandører, porter)
omniroute providers available # Vis støttede leverandører
omniroute providers list # Vis konfigurerte tilkoblinger
omniroute providers test <id> # Utfør en direktetest av en leverandørtilkobling
omniroute combos list # Vis kombinasjoner
omniroute combos switch <name> # Angi standardkombinasjon
omniroute models # Vis tilgjengelige modeller (--json, --search)
omniroute keys add | list | remove # Administrer API-nøkler fra terminalen
omniroute backup # Opprett et øyeblikksbilde av konfigurasjon + database
omniroute restore [<timestamp>] # Gjenopprett fra et øyeblikksbilde
omniroute health # Detaljert helsestatus (sikringsmekanismer, hurtigbuffer, minne)
omniroute quota # Bruk av leverandørkvoter
omniroute mcp status # Status for MCP-serveren
omniroute a2a status # Status for A2A-serveren
omniroute tunnel list|create|stop # Cloudflare-/Tailscale-/ngrok-tunneler
omniroute reset-password # Tilbakestill administratorpassordet
omniroute --mcp # Start MCP-serveren over stdio
omniroute --port 3000 # Start serveren på en egendefinert port
Tips: Kombiner omniroute doctor --json med overvåkingsverktøyet ditt for å varsle om leverandørtilkoblinger som ikke fungerer som de skal.
🖥️ Skrivebordsapplikasjon (Electron)
OmniRoute er tilgjengelig som en integrert skrivebordsapplikasjon for Windows, macOS og Linux.
Installasjon
# Fra electron-mappen:
cd electron
npm install
# Utviklingsmodus (kobler til en kjørende Next.js-utviklingsserver):
npm run dev
# Produksjonsmodus (bruker den frittstående byggversjonen):
npm start
Bygging av installasjonspakker
cd electron
npm run build # Gjeldende plattform
npm run build:win # Windows (.exe NSIS)
npm run build:mac # macOS (.dmg universal)
npm run build:linux # Linux (.AppImage)
Utdata → electron/dist-electron/
Viktige funksjoner
| Funksjon | Beskrivelse |
|---|---|
| Serverberedskap | Sjekker serveren før vinduet vises (ingen tom skjerm) |
| Systemstatusfelt | Minimer til statusfeltet, bytt port eller avslutt fra menyen |
| Portadministrasjon | Bytt serverport fra statusfeltet (starter serveren på nytt) |
| Retningslinjer for innholdssikkerhet | Restriktiv CSP via økthoder |
| Én instans | Bare én appinstans kan kjøre om gangen |
| Frakoblet modus | Den medfølgende Next.js-serveren fungerer uten internett |
Miljøvariabler
| Variabel | Standardverdi | Beskrivelse |
|---|---|---|
OMNIROUTE_PORT |
20128 |
Serverport |
OMNIROUTE_MEMORY_MB |
512 |
Grense for Node.js-heap (64–16384 MB) |
📖 Fullstendig dokumentasjon: electron/README.md