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
75 KiB
User Guide (Deutsch)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇬🇷 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 · 🇳🇴 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
🌐 Sprachen: 🇺🇸 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á | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)
Vollständige Anleitung zum Konfigurieren von Anbietern, Erstellen von Kombinationen, Integrieren von CLI-Tools und Bereitstellen von OmniRoute.
Inhaltsverzeichnis
- Preisübersicht
- Anwendungsfälle
- Anbieter einrichten
- CLI-Integration
- Bereitstellung
- Verfügbare Modelle
- Erweiterte Funktionen
- Automatisches Routing (ohne Konfiguration)
- MCP- & A2A-Integration
- Skills-System
- Speichersystem
- Webhooks
- Cloud-Agenten
- Programmatische Verwaltung
- Interne CLI
- Desktop-Anwendung (Electron)
💰 Preisübersicht
| Tarif | Anbieter | Kosten | Kontingent zurückgesetzt | Am besten geeignet für |
|---|---|---|---|---|
| 💳 ABONNEMENT | Claude Code (Pro) | $20/Monat | 5 Std. + wöchentlich | Bereits Abonnierte |
| Codex (Plus/Pro) | $20–200/Monat | 5 Std. + wöchentlich | OpenAI-Nutzer | |
| GitHub Copilot | $10–19/Monat | Monatlich | GitHub-Nutzer | |
| 🔑 API-SCHLÜSSEL | DeepSeek | Nutzungsabhängig | Keine | Kostengünstiges Reasoning |
| Groq | Nutzungsabhängig | Keine | Ultraschnelle Inferenz | |
| xAI (Grok) | Nutzungsabhängig | Keine | Reasoning mit Grok 4 | |
| Mistral | Nutzungsabhängig | Keine | In der EU gehostete Modelle | |
| Perplexity | Nutzungsabhängig | Keine | Suchunterstützte Aufgaben | |
| Together AI | Nutzungsabhängig | Keine | Open-Source-Modelle | |
| Fireworks AI | Nutzungsabhängig | Keine | Schnelle FLUX-Bilder | |
| Cerebras | Nutzungsabhängig | Keine | Geschwindigkeit auf Wafer-Skala | |
| Cohere | Nutzungsabhängig | Keine | Command R+ RAG | |
| NVIDIA NIM | Nutzungsabhängig | Keine | Unternehmensmodelle | |
| Baidu Qianfan | Nutzungsabhängig | Keine | ERNIE-Modelle | |
| 💰 GÜNSTIG | GLM-4.7 | $0.6/1M | Täglich um 10 Uhr | Günstige Ausweichlösung |
| MiniMax M2.1 | $0.2/1M | Gleitend alle 5 Stunden | Günstigste Option | |
| Kimi K2 | Pauschal $9/Monat | 10M Token/Monat | Planbare Kosten | |
| 🆓 KOSTENLOS | Qoder | $0 | Anbieterlimits gelten | Aktuellen Katalog prüfen |
| Kiro | $0 | ~50 Credits/Monat | Claude kostenlos |
🎯 Anwendungsfälle
Fall 1: „Ich habe ein Claude-Pro-Abonnement“
Problem: Das Kontingent verfällt ungenutzt, Ratenbegrenzungen bei intensiver Programmierarbeit
Kombination: "maximize-claude"
1. cc/claude-opus-4-7 (Abonnement vollständig ausschöpfen)
2. glm/glm-4.7 (günstige Ausweichlösung bei ausgeschöpftem Kontingent)
3. if/qwen3.8-max-preview (kostenlose Notfall-Ausweichlösung)
Monatliche Kosten: $20 (Abonnement) + ~$5 (Ausweichlösung) = insgesamt $25
gegenüber $20 + Erreichen der Limits = Frustration
Fall 2: „Ich möchte keine Kosten“
Problem: Abonnements sind nicht erschwinglich, zuverlässige KI-Unterstützung beim Programmieren wird benötigt
Kombination: "zero-cost"
1. if/kimi-k2.7-code (als kostenloser Zugang aufgeführt; Ratenbegrenzungen können gelten)
2. kr/qwen3-coder-next (kostenlose Kiro-Ausweichlösung)
Monatliche Kosten: $0
Qualität: Modell, Limits, Datenschutz und SLA für Ihren Workload überprüfen
Fall 3: „Ich muss rund um die Uhr ohne Unterbrechungen programmieren“
Problem: Fristen, keine Ausfallzeiten möglich
Kombination: "always-on"
1. cc/claude-opus-4-7 (beste Qualität)
2. cx/gpt-5.5 (zweites Abonnement)
3. glm/glm-4.7 (günstig, tägliche Zurücksetzung)
4. minimax/MiniMax-M2.1 (am günstigsten, Zurücksetzung nach 5 Std.)
5. if/deepseek-v4-flash (als kostenloser Zugang aufgeführt; Ratenbegrenzungen können gelten)
Ergebnis: 5 Ausweichstufen erhöhen die Ausfallsicherheit; die Verfügbarkeit vorgelagerter Dienste ist nicht garantiert
Monatliche Kosten: $20–200 (Abonnements) + $10–20 (Ausweichlösungen)
Fall 4: „Ich möchte KOSTENLOSE KI in OpenClaw“
Problem: Ein vollständig kostenloser KI-Assistent für Messaging-Apps wird benötigt
Kombination: "openclaw-free"
1. if/qwen3.8-max-preview (als kostenloser Zugang aufgeführt; Ratenbegrenzungen können gelten)
2. if/deepseek-v4-flash (als kostenloser Zugang aufgeführt; Ratenbegrenzungen können gelten)
3. if/kimi-k2.7-code (als kostenloser Zugang aufgeführt; Ratenbegrenzungen können gelten)
Monatliche Kosten: $0
Zugriff über: WhatsApp, Telegram, Slack, Discord, iMessage, Signal ...
📖 Anbieter einrichten
Um API-Schlüssel-Verbindungen gesammelt aus einer CSV- oder JSON-Datei hinzuzufügen, verwenden Sie Dashboard → Anbieter → Aus Datei importieren. Die Spalten sind positionsabhängig (provider,name,apiKey,baseUrl,priority); provider muss bereits als verwalteter Anbieter oder kompatibler Knoten vorhanden sein. Siehe Anbieter aus einer CSV- oder JSON-Datei importieren.
🔐 Abonnement-Anbieter
Claude Code (Pro/Max)
Dashboard → Anbieter → Claude Code verbinden
→ OAuth-Anmeldung → Automatische Token-Aktualisierung
→ Kontingentüberwachung über 5 Stunden + wöchentlich
Modelle:
cc/claude-opus-4-7
cc/claude-sonnet-4-6
cc/claude-haiku-4-5-20251001
Profi-Tipp: Verwenden Sie Opus für komplexe Aufgaben und Sonnet für Geschwindigkeit. OmniRoute überwacht das Kontingent pro Modell!
Mit Claude und Claude Code kompatible Routen behalten den Denkaufwand max für Opus- und Sonnet-Modelle bei. Haiku-Modelle akzeptieren die Aufwandsstufe max nicht, daher stuft OmniRoute diese Anfrage auf ein hohes Denkbudget herab, bevor sie an den Upstream-Anbieter gesendet wird.
OpenAI Codex (Plus/Pro)
Dashboard → Anbieter → Codex verbinden
→ OAuth-Anmeldung (Port 1455)
→ Zurücksetzung nach 5 Stunden + wöchentlich
Modelle:
cx/gpt-5.5
cx/gpt-5.4
cx/gpt-5.3-codex
cx/gpt-5.3-codex-spark
GitHub Copilot
Dashboard → Anbieter → GitHub verbinden
→ OAuth über GitHub
→ Monatliche Zurücksetzung (am 1. des Monats)
Modelle:
gh/gpt-5.5
gh/gpt-5.4
gh/claude-sonnet-4.6
gh/claude-opus-4.7
gh/gemini-3.1-pro-preview
💰 Günstige Anbieter
GLM-4.7 (tägliche Zurücksetzung, $0.6/1M)
- Registrieren: Zhipu AI
- API-Schlüssel aus dem Coding Plan abrufen
- Dashboard → API-Schlüssel hinzufügen: Anbieter:
glm, API-Schlüssel:your-key
Verwendung: glm/glm-4.7 — Profi-Tipp: Der Coding Plan bietet das 3-fache Kontingent zu 1/7 der Kosten! Tägliche Zurücksetzung um 10:00 Uhr.
MiniMax M2.1 (Zurücksetzung nach 5 Std., $0.20/1M)
- Registrieren: MiniMax
- API-Schlüssel abrufen → Dashboard → API-Schlüssel hinzufügen
Verwendung: minimax/MiniMax-M2.1 — Profi-Tipp: Günstigste Option für lange Kontexte (1 Mio. Token)!
Kimi K2 ($9/Monat pauschal)
- Abonnieren: Moonshot AI
- API-Schlüssel abrufen → Dashboard → API-Schlüssel hinzufügen
Verwendung: kimi/kimi-k2.5 — Profi-Tipp: Feste $9/Monat für 10 Mio. Token = effektive Kosten von $0.90/1M!
Baidu Qianfan / ERNIE
- Registrieren: Baidu AI Cloud Qianfan
- Einen Qianfan-API-Schlüssel erstellen → Dashboard → API-Schlüssel hinzufügen: Anbieter:
qianfan
Verwendung: qianfan/ernie-5.1, qianfan/ernie-x1.1 oder eine andere mit OpenAI kompatible Qianfan-Modell-ID.
🆓 KOSTENLOSE Anbieter
Kostenlose Anbieter ohne Authentifizierung verfügen auf ihrer Anbieterseite über einen Schalter neben Keine Authentifizierung erforderlich.
Wenn Sie ihn deaktivieren, wird der betreffende Anbieter deaktiviert, aus den konfigurierten und kompakten Anbieteransichten entfernt und seine Modelle werden aus /v1/models entfernt.
Qoder (9 KOSTENLOSE Modelle)
Dashboard → Qoder verbinden → OAuth-Anmeldung → Der Zugriff unterliegt den aktuellen Beschränkungen des Anbieters
Modelle: 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 KOSTENLOS)
Dashboard → Kiro verbinden → AWS Builder ID oder Google/GitHub → ~50 Credits/Monat
Modelle: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
🎨 Kombinationen
Du kannst Kombinationskarten direkt unter Dashboard → Kombinationen neu anordnen, indem du den Ziehgriff auf jeder Karte verschiebst. Die Reihenfolge wird in SQLite gespeichert und beim erneuten Laden wiederhergestellt.
Beispiel 1: Abonnement maximieren → Günstige Ausweichoption
Dashboard → Kombinationen → Neu erstellen
Name: premium-coding
Modelle:
1. cc/claude-opus-4-7 (Primärmodell per Abonnement)
2. glm/glm-4.7 (Günstige Ausweichoption, $0.6/1M)
3. minimax/MiniMax-M2.7 (Günstigste Rückfalloption, $0.3/1M)
In der CLI verwenden: premium-coding
Beispiel 2: Ausschließlich kostenlos (keine Kosten)
Name: free-combo
Modelle:
1. if/kimi-k2.7-code (als kostenloser Zugang aufgeführt; möglicherweise gelten Anbieterbeschränkungen)
2. kr/qwen3-coder-next (Kostenlose Kiro-Rückfalloption)
Kosten: derzeit mit $0 aufgeführt; Bedingungen und Verfügbarkeit können sich ändern
🔧 CLI-Integration
Cursor IDE
Cursor als OmniRoute-Client verwenden (Cursor-Chat über OmniRoute weiterleiten):
Einstellungen → Modelle → Erweitert:
OpenAI-API-Basis-URL: http://localhost:20128/v1
OpenAI-API-Schlüssel: [aus dem OmniRoute-Dashboard]
Modell: cc/claude-opus-4-7
OmniRoute als Cursor-Anbieter verwenden (OmniRoute ruft Cursor als Upstream auf): Verwende vorzugsweise
Dashboard → Anbieter → Cursor → Mit Cursor anmelden. Für Docker siehe
docs/providers/CURSOR-DOCKER.md.
Claude Code
Bearbeite ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:20128",
"ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key"
}
}
Verwende hier den Claude-kompatiblen Root-Endpunkt. Hänge nicht /v1 an ANTHROPIC_BASE_URL an.
Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
OpenClaw
Bearbeite ~/.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" }]
}
}
}
}
Oder über das Dashboard: CLI-Tools → OpenClaw → Automatische Konfiguration
Cline / Continue / RooCode
Anbieter: OpenAI-kompatibel
Basis-URL: http://localhost:20128/v1
API-Schlüssel: [aus dem Dashboard]
Modell: cc/claude-opus-4-7
🚀 Bereitstellung
Globale npm-Installation (empfohlen)
npm install -g omniroute
# Konfigurationsverzeichnis erstellen
mkdir -p ~/.omniroute
# .env-Datei erstellen (siehe .env.example)
cp .env.example ~/.omniroute/.env
# Server starten
omniroute
# Oder mit benutzerdefiniertem Port:
omniroute --port 3000
Die CLI lädt .env automatisch aus ~/.omniroute/.env oder ./.env.
Tray-Modus
Starte OmniRoute im System-Tray:
omniroute serve --tray
Der Befehl wird beendet, sobald der Server und das Tray bereit sind.
Der Server läuft ohne das Terminal weiter.
Der Tray-Modus unterstützt macOS, Windows und grafische Linux-Sitzungen. Im Tray-Modus wird das Dashboard nicht automatisch geöffnet.
Verwende das Tray-Menü für folgende Aktionen:
- Dashboard öffnen.
/dashboard/logsöffnen.- Autostart ändern.
- OmniRoute beenden.
Kombiniere --tray nicht mit diesen Optionen:
--daemon--log--no-recovery
Diese Modi erfordern eine unterschiedliche Prozessverwaltung.
Aktiviere den Start bei der nächsten Anmeldung am Rechner:
omniroute autostart enable
Der Autostart verwendet auf macOS, Windows und in grafischen Linux-Sitzungen den Tray-Modus. Unter Headless-Linux wird der vorhandene systemd-Benutzerdienst verwendet.
Deaktiviere den Start bei der Anmeldung:
omniroute autostart disable
Deinstallation
Wenn du OmniRoute nicht mehr benötigst, stellen wir zwei schnelle Skripte für eine saubere Entfernung bereit:
| Befehl | Aktion |
|---|---|
npm run uninstall |
Entfernt die Systemanwendung, behält aber deine Datenbank und Konfigurationen in ~/.omniroute. |
npm run uninstall:full |
Entfernt die Anwendung UND löscht dauerhaft alle Konfigurationen, Schlüssel und Datenbanken. |
Hinweis: Um diese Befehle auszuführen, wechsle zum OmniRoute-Projektordner (falls du ihn geklont hast) und führe sie dort aus. Bei einer globalen Installation kannst du alternativ einfach
npm uninstall -g omnirouteausführen.
VPS-Bereitstellung
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
# Oder: pm2 start npm --name omniroute -- start
PM2-Bereitstellung (geringer Speicherbedarf)
Verwende für Server mit begrenztem RAM die Option zur Speicherbegrenzung:
# Mit einem Limit von 512MB (Standard)
pm2 start npm --name omniroute -- start
# Oder mit benutzerdefiniertem Speicherlimit
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
# Oder mit ecosystem.config.js
pm2 start ecosystem.config.js
Erstelle 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
# Image erstellen (Standard = runner-cli mit vorinstalliertem codex/claude/droid)
docker build -t omniroute:cli .
# Portabler Modus (empfohlen)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
Informationen zum hostintegrierten Modus mit CLI-Binärdateien findest du im Docker-Abschnitt der Hauptdokumentation.
Void Linux (xbps-src)
Benutzer von Void Linux können OmniRoute mithilfe des Cross-Compilation-Frameworks xbps-src nativ paketieren und installieren. Dadurch werden der eigenständige Node.js-Build sowie die erforderlichen nativen better-sqlite3-Bindings automatisiert.
xbps-src-Template anzeigen
# Template-Datei für '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() {
# Ziel-CPU-Architektur für node-gyp ermitteln
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) Alle Abhängigkeiten installieren – Skripte überspringen
NODE_ENV=development npm ci --ignore-scripts
# 2) Eigenständiges Next.js-Bundle erstellen
npm run build
# 3) Statische Assets in das eigenständige Bundle kopieren
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) Natives better-sqlite3-Binding kompilieren
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) Kompiliertes Binding im eigenständigen Bundle ablegen
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) Architekturspezifische sharp-Bundles entfernen
rm -rf .next/standalone/node_modules/@img
# 7) Von der statischen Next.js-Analyse ausgelassene pino-Laufzeitabhängigkeiten kopieren:
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
# Entfernen leerer Next.js-App-Router-Verzeichnisse durch den Post-Install-Hook verhindern
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
}
Umgebungsvariablen
| Variable | Standardwert | Beschreibung |
|---|---|---|
JWT_SECRET |
omniroute-default-secret-change-me |
Geheimnis zum Signieren von JWTs (in der Produktion ändern) |
INITIAL_PASSWORD |
CHANGEME |
Passwort für die erste Anmeldung |
DATA_DIR |
~/.omniroute |
Datenverzeichnis (Datenbank, Nutzung, Protokolle) |
PORT |
Framework-Standardwert | Dienst-Port (20128 in den Beispielen) |
HOSTNAME |
Framework-Standardwert | Host für die Bindung (Docker verwendet standardmäßig 0.0.0.0) |
NODE_ENV |
Laufzeit-Standardwert | Für die Bereitstellung auf production setzen |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
Öffentliche Basis-URL, die im Dashboard angezeigt und dem Server bereitgestellt wird (ersetzt das bisherige BASE_URL) |
NEXT_PUBLIC_CLOUD_URL |
https://omniroute.dev |
Basis-URL des Cloud-Synchronisierungsendpunkts (ersetzt das bisherige CLOUD_URL) |
API_KEY_SECRET |
endpoint-proxy-api-key-secret |
HMAC-Geheimnis für generierte API-Schlüssel |
REQUIRE_API_KEY |
false |
Bearer-API-Schlüssel für /v1/* erzwingen |
ALLOW_API_KEY_REVEAL |
false |
Authentifizierten Dashboard-Benutzern erlauben, vollständig gespeicherte API-Schlüsselwerte bei Bedarf anzuzeigen |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
Serverseitiges Aktualisierungsintervall für zwischengespeicherte Daten zu Anbieterlimits; die Aktualisierungsschaltflächen der Benutzeroberfläche lösen weiterhin eine manuelle Synchronisierung aus |
DISABLE_SQLITE_AUTO_BACKUP |
false |
Automatische SQLite-Snapshots vor Schreib-, Import- oder Wiederherstellungsvorgängen deaktivieren; manuelle Sicherungen funktionieren weiterhin |
APP_LOG_TO_FILE |
true |
Aktiviert die Ausgabe von Anwendungs- und Audit-Protokollen auf den Datenträger |
AUTH_COOKIE_SECURE |
false |
Secure-Authentifizierungs-Cookie erzwingen (hinter einem HTTPS-Reverse-Proxy) |
CLOUDFLARED_BIN |
nicht festgelegt | Vorhandene cloudflared-Binärdatei anstelle des verwalteten Downloads verwenden |
CLOUDFLARED_PROTOCOL |
http2 |
Transportprotokoll für verwaltete Quick Tunnels (http2, quic oder auto) |
OMNIROUTE_MEMORY_MB |
512 |
Node.js-Heap-Limit in MB |
PROMPT_CACHE_MAX_SIZE |
50 |
Maximale Anzahl der Einträge im Prompt-Cache |
SEMANTIC_CACHE_MAX_SIZE |
100 |
Maximale Anzahl der Einträge im semantischen Cache |
Die vollständige Referenz der Umgebungsvariablen finden Sie in der README.
📊 Verfügbare Modelle
Alle verfügbaren Modelle anzeigen
Die nachstehende Liste wurde aus
open-sse/config/providerRegistry.tsfür v3.8.0 zusammengestellt. Cloud-Kataloge (Gemini, OpenRouter usw.) werden dynamisch synchronisiert — den vollständigen Live-Katalog finden Sie unter Dashboard → Providers → [provider] → Available Models oder überGET /api/models/catalog.Falls die integrierte Liste eines Anbieters nicht mehr aktuell ist, verwenden Sie auf dieser Seite Import from /models (oder aktivieren Sie Auto-Sync), um den aktuellen Upstream-Katalog abzurufen. Dies wurde in v3.8.50 für LLM7.io (
gemini-3.1-flash-lite) und UncloseAI (solidrust/Hermes-3-Llama-3.1-8B-AWQ) verifiziert; der anonyme Zugriff auf Pollinations blieb während desselben Testdurchlaufs durch den Upstream-Anbieter eingeschränkt.
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 (+ Aufwandsstufen: 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/) — KOSTENLOSES OAuth: Verwenden Sie den Live-Katalog unter Dashboard → Providers → Kiro → Available Models. Die Verfügbarkeit hängt vom Konto und Tarif ab.
Qoder (if/) — KOSTENLOSES 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/) — Pauschal $9/Monat oder nutzungsabhängig: kimi/kimi-k2.6, kimi/kimi-k2.5
DeepSeek (ds/) — API-Schlüssel: ds/deepseek-v4-pro, ds/deepseek-v4-flash
Groq (groq/) — Ultraschnell: 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-nativ: 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/) — In der EU gehostet: mistral/mistral-large-latest, mistral/mistral-medium-3-5, mistral/mistral-small-latest, mistral/devstral-latest, mistral/codestral-latest
Perplexity (pplx/) — Mit Suchunterstützung: pplx/sonar-deep-research, pplx/sonar-reasoning-pro, pplx/sonar-pro, pplx/sonar
Together AI (together/) — Open Source: together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free (kostenlos), 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/) — Schnelle Inferenz: 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/) — Wafer-Skalierung: cerebras/zai-glm-4.7, cerebras/gpt-oss-120b
Cohere (cohere/) — RAG-fokussiert: 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/) — Unternehmen: 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/): Wird anhand des API-Schlüssels live von Google synchronisiert — keine statische Liste. Verbinden Sie unter Dashboard → Providers einen Schlüssel und verwenden Sie anschließend Available Models, um den aktuellen Katalog zu importieren (z. B. gemini/gemini-3-pro, gemini/gemini-3-flash).
Weitere kompatible Anbieter (Auswahl): cohere, databricks, snowflake, together, vertex, alibaba, alibaba-cn, bedrock (über aws-bedrock), azure-ai, openrouter (durchgereichter Katalog), siliconflow, hyperbolic, huggingface, featherless-ai, cloudflare-ai, scaleway, deepinfra, vercel-ai-gateway, bazaarlink, friendliai, nous-research, reka, volcengine, ai21, gigachat. Jeder Anbieter verwaltet seine eigene Modellliste in providerRegistry.ts und kann automatisch synchronisiert werden, wenn der Anbieter einen /models-Endpunkt bereitstellt.
Hinweis zu Modell-IDs: OmniRoute verwendet anbieternative IDs (claude-opus-4-8, gpt-5.5, glm-5.1, MiniMax-M2.7, kimi-k2.5, grok-4.20-0309-reasoning). Einige IDs enthalten Versionen mit Punkten, weil die Upstream-API sie in dieser Form erwartet. Wenn ein Modell oben nicht aufgeführt ist, führen Sie omniroute models --search <term> aus oder rufen Sie GET /api/models/catalog auf, um die Verfügbarkeit zu bestätigen.
🧩 Erweiterte Funktionen
Benutzerdefinierte Modelle
Fügen Sie jedem Anbieter eine beliebige Modell-ID hinzu, ohne auf ein App-Update warten zu müssen:
# Über die 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"}'
# Auflisten: curl http://localhost:20128/api/provider-models?provider=openai
# Entfernen: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2"
Oder verwenden Sie das Dashboard: Anbieter → [Anbieter] → Benutzerdefinierte Modelle.
Hinweise:
- OpenRouter und OpenAI-/Anthropic-kompatible Anbieter werden ausschließlich über Verfügbare Modelle verwaltet. Manuelles Hinzufügen, Importieren und automatische Synchronisierung führen alle zur selben Liste verfügbarer Modelle, sodass es für diese Anbieter keinen separaten Abschnitt für benutzerdefinierte Modelle gibt.
- Der Abschnitt Benutzerdefinierte Modelle ist für Anbieter vorgesehen, die keine verwalteten Importe verfügbarer Modelle anbieten.
Verketten von OmniRoute-Peers
Ein weiteres OmniRoute-Gateway kann als benutzerdefinierter OpenAI-kompatibler Anbieter hinzugefügt werden. Verwenden Sie die
/v1-Basis-URL des Peers sowie einen dedizierten API-Schlüssel mit minimalen Berechtigungen, der von diesem Peer ausgegeben wurde.
Aktivieren Sie bei wechselseitigen oder mehrstufigen Ketten auf jedem Gateway den optionalen Schleifenschutz:
# 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
Nur Anfragen, die an eine ausdrücklich in der Zulassungsliste enthaltene Peer-URL gesendet werden, erhalten den
Header X-OmniRoute-Peer-Trace. Ein Gateway weist eine wiederholte Instanz-ID oder ein ausgeschöpftes Hop-Budget
mit HTTP 508 Loop Detected zurück; gewöhnliche Upstream-Anbieter erhalten keine Peer-Metadaten.
Peer-Verkettung ist weder Datenbankreplikation noch Host-Failover. Jedes Gateway verwaltet einen unabhängigen SQLite-Zustand sowie eigene Caches, Ratenzähler und Sitzungen. Verwenden Sie für aktive/passive oder aktive/aktive Verfügbarkeit einen Reverse-Proxy mit Zustandsprüfungen oder Client-Failover und binden Sie niemals eine einzelne SQLite-Datenbank in mehrere laufende OmniRoute-Instanzen ein.
Dedizierte Anbieterrouten
Leiten Sie Anfragen mit Modellvalidierung direkt an einen bestimmten Anbieter weiter:
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
Das Anbieterpräfix wird automatisch hinzugefügt, falls es fehlt. Nicht übereinstimmende Modelle geben 400 zurück.
Netzwerk-Proxy-Konfiguration
# Globalen Proxy festlegen
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
# Anbieterbezogener Proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
# Proxy testen
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
Priorität: Schlüsselspezifisch → Kombinationsspezifisch → Anbieterspezifisch → Global → Umgebung.
Modellkatalog-API
curl http://localhost:20128/api/models/catalog
Gibt nach Anbieter gruppierte Modelle mit ihren Typen (chat, embedding, image) zurück.
Cloud-Synchronisierung
- Synchronisieren Sie Anbieter, Kombinationen und Einstellungen geräteübergreifend
- Automatische Hintergrundsynchronisierung mit Zeitüberschreitung und schnellem Abbruch
- Bevorzugen Sie in der Produktion serverseitiges
NEXT_PUBLIC_BASE_URL/NEXT_PUBLIC_CLOUD_URL
Cloudflare Quick Tunnel
- Verfügbar unter Dashboard → Endpunkte für Docker und andere selbst gehostete Bereitstellungen
- Erstellt eine temporäre
https://*.trycloudflare.com-URL, die an Ihren aktuellen OpenAI-kompatiblen/v1-Endpunkt weiterleitet - Bei der ersten Aktivierung wird
cloudflarednur bei Bedarf installiert; spätere Neustarts verwenden dieselbe verwaltete Binärdatei erneut - Quick Tunnels werden nach einem Neustart von OmniRoute oder des Containers nicht automatisch wiederhergestellt; aktivieren Sie sie bei Bedarf erneut über das Dashboard
- Tunnel-URLs sind flüchtig und ändern sich bei jedem Stoppen/Starten des Tunnels
- Verwaltete Quick Tunnels verwenden standardmäßig HTTP/2 als Transportprotokoll, um störende QUIC-UDP-Pufferwarnungen in ressourcenbeschränkten Containern zu vermeiden
- Legen Sie
CLOUDFLARED_PROTOCOL=quicoderautofest, wenn Sie die verwaltete Transportauswahl überschreiben möchten - Legen Sie
CLOUDFLARED_BINfest, wenn Sie statt des verwalteten Downloads lieber eine vorinstalliertecloudflared-Binärdatei verwenden möchten - Die Bereiche für Cloudflare Quick Tunnel, Tailscale Funnel und ngrok Tunnel können unter Einstellungen → Darstellung ein- oder ausgeblendet werden. Das Ausblenden eines Bereichs beendet keinen laufenden Tunnel.
LLM-Gateway-Intelligenz (Phase 9)
- Semantischer Cache — Speichert automatisch nicht gestreamte Antworten mit temperature=0 zwischen (Umgehung mit
X-OmniRoute-No-Cache: true) - Anfrageidempotenz — Dedupliziert Anfragen innerhalb von 5 Sekunden über den Header
Idempotency-KeyoderX-Request-Id - Fortschrittsverfolgung — Optionale SSE-Ereignisse
event: progressüber den HeaderX-OmniRoute-Progress: true
Übersetzer-Playground
Zugriff über Dashboard → Übersetzer. Debuggen und visualisieren Sie, wie OmniRoute API-Anfragen zwischen Anbietern übersetzt.
| Modus | Zweck |
|---|---|
| Playground | Quell-/Zielformate auswählen, eine Anfrage einfügen und die übersetzte Ausgabe sofort anzeigen |
| Chat-Tester | Live-Chatnachrichten über den Proxy senden und den vollständigen Anfrage-/Antwortzyklus untersuchen |
| Testumgebung | Stapeltests über mehrere Formatkombinationen ausführen, um die Korrektheit der Übersetzung zu überprüfen |
| Live-Monitor | Übersetzungen in Echtzeit beobachten, während Anfragen den Proxy durchlaufen |
Anwendungsfälle:
- Debuggen, warum eine bestimmte Client-/Anbieter-Kombination fehlschlägt
- Überprüfen, ob Thinking-Tags, Tool-Aufrufe und System-Prompts korrekt übersetzt werden
- Formatunterschiede zwischen OpenAI-, Claude-, Gemini- und Responses-API-Formaten vergleichen
Routing-Strategien
Konfigurieren Sie dies über Dashboard → Settings → Routing. Das Dashboard stellt die sechs am häufigsten verwendeten Strategien bereit; Kombinationen und der Auto-Router unterstützen intern eine größere Auswahl.
Im Dashboard sichtbare Strategien (Routing auf Kontoebene):
| Strategie | Beschreibung |
|---|---|
| Zuerst auffüllen | Verwendet Konten nach Priorität — das primäre Konto verarbeitet alle Anfragen, bis es nicht mehr verfügbar ist |
| Round Robin | Wechselt zyklisch durch alle Konten, mit einem konfigurierbaren Sticky-Limit (Standard: 3 Aufrufe pro Konto) |
| P2C (Power of Two Choices) | Wählt 2 zufällige Konten aus und leitet an das fehlerfreiere weiter — verteilt die Last unter Berücksichtigung des Zustands |
| Zufällig | Wählt für jede Anfrage mithilfe des Fisher-Yates-Shuffles zufällig ein Konto aus |
| Am wenigsten verwendet | Leitet an das Konto mit dem ältesten lastUsedAt-Zeitstempel weiter und verteilt den Datenverkehr gleichmäßig |
| Kostenoptimiert | Leitet an das Konto mit dem niedrigsten Prioritätswert weiter und optimiert so für die kostengünstigsten Anbieter |
Erweiterte Kombinations- und Auto-Strategien (pro Kombination oder über auto/*-Präfixe konfigurierbar — siehe AUTO-COMBO.md):
priority— strikte Reihenfolge, verwendet niemals Round Robinweighted— proportionale Aufteilung des Datenverkehrs anhand modellspezifischer Gewichtungenfill-first— nutzt das erste Modell vollständig aus, bis Grenzwerte erreicht sindround-robin/strict-random/randomp2c(Power of Two Choices)least-usedundcost-optimizedauto— bewertungsbasierte Auswahl aus allen Kandidatenlkgp(Last Known Good Provider) — bindet Anfragen an den letzten erfolgreichen Anbieter und greift anschließend auf Regeln zurückcontext-optimized— wählt das Modell mit dem größten freien Kontextfenster auscontext-relay— verkettet Modelle mit großem Kontextfenster für nachfolgende Interaktionen
Externer Header für Sticky Sessions
Senden Sie für externe Sitzungsaffinität (beispielsweise für Claude-Code-/Codex-Agenten hinter Reverse-Proxys):
X-Session-Id: your-session-key
OmniRoute akzeptiert außerdem x_session_id und gibt den tatsächlich verwendeten Sitzungsschlüssel in X-OmniRoute-Session-Id zurück.
Wenn Sie Nginx verwenden und Header mit Unterstrichen senden, aktivieren Sie:
underscores_in_headers on;
Modellaliase mit Platzhaltern
Erstellen Sie Platzhaltermuster, um Modellnamen neu zuzuordnen:
Muster: claude-sonnet-* → Ziel: cc/claude-sonnet-4-6
Muster: gpt-* → Ziel: gh/gpt-5.3-codex
Platzhalter unterstützen * (beliebige Zeichen) und ? (ein einzelnes Zeichen).
Fallback-Ketten
Definieren Sie globale Fallback-Ketten, die für alle Anfragen gelten:
Kette: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.3-codex
3. glm/glm-4.7
Ausfallsicherheit und Circuit Breaker
Konfigurieren Sie dies über Dashboard → Settings → Resilience.
OmniRoute implementiert Ausfallsicherheit auf Anbieterebene mit fünf Komponenten:
-
Anfragewarteschlange und Taktung — Steuerung von Anfragen auf Systemebene:
- Anfragen pro Minute (RPM) — Maximale Anzahl von Anfragen pro Minute und Konto
- Mindestzeit zwischen Anfragen — Mindestabstand zwischen Anfragen in Millisekunden
- Maximale gleichzeitige Anfragen — Maximale Anzahl gleichzeitiger Anfragen pro Konto
-
Verbindungs-Cooldown — Konfiguration pro Authentifizierungstyp für eine einzelne Verbindung nach wiederholbaren Fehlern:
- Basis-Cooldown — Standard-Cooldown-Zeitfenster für wiederholbare Upstream-Fehler
- Upstream-Wiederholungshinweise verwenden — Berücksichtigt maßgebliche
Retry-After- oder Reset-Hinweise, sofern vorhanden - Maximale Backoff-Schritte — Maximale exponentielle Backoff-Stufe bei wiederholten Fehlern
-
Anbieter-Circuit-Breaker — Verfolgt End-to-End-Fehler des Anbieters, markiert einen Anbieter beim konfigurierten Warnschwellenwert als beeinträchtigt und öffnet den Breaker, wenn der konfigurierte Fehlerschwellenwert erreicht wird:
- Beeinträchtigungsschwellenwert — Anzahl aufeinanderfolgender Anbieterfehler vor dem Übergang zu
DEGRADED - Fehlerschwellenwert — Anzahl aufeinanderfolgender Anbieterfehler vor dem Übergang zu
OPEN - Reset-Zeitüberschreitung — Zeitfenster, bevor der Anbieter erneut getestet wird
- CLOSED (Fehlerfrei) — Anfragen werden normal verarbeitet
- DEGRADED — Anfragen werden weiterhin verarbeitet, während die erhöhte Fehlerzahl überwacht wird
- OPEN — Der Anbieter wird nach wiederholten Fehlern vorübergehend blockiert
- HALF_OPEN — Es wird getestet, ob sich der Anbieter erholt hat
Verbindungsspezifische
429-Ratenbegrenzungen verbleiben im Verbindungs-Cooldown und werden nicht für den Anbieter-Breaker berücksichtigt.Der Laufzeitstatus des Anbieter-Breakers wird ausschließlich unter Dashboard → Health angezeigt.
- Beeinträchtigungsschwellenwert — Anzahl aufeinanderfolgender Anbieterfehler vor dem Übergang zu
-
Auf Cooldown warten — Wenn sich alle infrage kommenden Verbindungen bereits im Cooldown befinden, kann OmniRoute auf das Ende des frühesten Cooldowns warten und dieselbe Client-Anfrage automatisch erneut versuchen.
-
Automatische Ratenbegrenzungserkennung — Wenn Upstream-Anbieter explizite Wartezeitfenster zurückgeben, überschreiben diese Hinweise den lokalen Verbindungs-Cooldown, sofern die Einstellung aktiviert ist.
Profi-Tipp: Verwenden Sie die Seite Health, um aktive Anbieter-Breaker nach einem Ausfall zu überprüfen und zurückzusetzen. Auf der Seite „Resilience“ wird nur die Konfiguration geändert.
Datenbankexport/-import
Verwalten Sie Datenbanksicherungen unter Dashboard → Settings → System & Storage.
| Aktion | Beschreibung |
|---|---|
| Datenbank exportieren | Lädt die aktuelle SQLite-Datenbank als .sqlite-Datei herunter |
| Alles exportieren (.tar.gz) | Lädt ein vollständiges Backup-Archiv herunter, einschließlich: Datenbank, Einstellungen, Combos, Provider-Verbindungen (ohne Anmeldedaten), API-Schlüssel-Metadaten |
| Datenbank importieren | Lädt eine .sqlite-Datei hoch, um die aktuelle Datenbank zu ersetzen. Ein Backup vor dem Import wird automatisch erstellt, sofern nicht DISABLE_SQLITE_AUTO_BACKUP=true gesetzt ist |
# API: Datenbank exportieren
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
# API: Alles exportieren (vollständiges Archiv)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
# API: Datenbank importieren
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
Importvalidierung: Die importierte Datei wird auf Integrität (SQLite-Pragma-Prüfung), erforderliche Tabellen (provider_connections, provider_nodes, combos, api_keys) und Größe (max. 100 MB) geprüft.
Anwendungsfälle:
- OmniRoute zwischen Rechnern migrieren
- Externe Backups für die Notfallwiederherstellung erstellen
- Konfigurationen zwischen Teammitgliedern teilen (alles exportieren → Archiv teilen)
Einstellungs-Dashboard
Die Einstellungsseite ist zur einfachen Navigation in 7 Registerkarten unterteilt:
| Registerkarte | Inhalte |
|---|---|
| Allgemein | Werkzeuge für den Systemspeicher, Standardverhalten, Sichtbarkeit des Endpoint-Tunnels |
| Darstellung | Theme-Steuerung (hell/dunkel/System), Sichtbarkeit der Seitenleiste, Panel-Umschalter für Cloudflare-/Tailscale-/ngrok-Tunnelkarten |
| KI | Thinking-Budget (Durchleitung / automatisches Entfernen / benutzerdefiniert / adaptiv — siehe THINKING_BUDGET.md), globaler System-Prompt, Prompt-Cache-Statistiken |
| Sicherheit | Anmelde-/Passworteinstellungen, IP-Zugriffskontrolle, API-Authentifizierung für /models, Provider-Blockierung, Schutz vor Prompt-Injection |
| Routing | Globale Routing-Strategie (Fill First / Round Robin / P2C / Random / Least Used / Cost Optimized), Modellaliase mit Platzhaltern, Fallback-Ketten, Combo-Standardeinstellungen |
| Resilienz | Anfragewarteschlange, Verbindungs-Cooldown, Provider-Breaker-Konfiguration und Verhalten beim Warten auf den Cooldown |
| Erweitert | Globale Proxy-Konfiguration (HTTP/SOCKS5), Proxy-Überschreibungen pro Provider |
Unter „Allgemein“ werden schreibgeschützte Hinweise zur Protokollierung und zum Cache nicht mehr doppelt angezeigt. Einstellungen zur Datenbankaufbewahrung und
-optimierung werden über /api/settings/database gespeichert; zum manuellen Leeren des Caches wird
DELETE /api/cache verwendet. Die Obergrenzen für die Zeilenanzahl in Anfrage- und Proxy-Protokollen werden durch
CALL_LOGS_TABLE_MAX_ROWS und PROXY_LOGS_TABLE_MAX_ROWS gesteuert.
Kosten- und Budgetverwaltung
Zugriff über Dashboard → Kosten.
| Registerkarte | Zweck |
|---|---|
| Budget | Ausgabenlimits pro API-Schlüssel mit täglichen/wöchentlichen/monatlichen Budgets und Echtzeitverfolgung festlegen |
| Preise | Einträge für Modellpreise anzeigen und bearbeiten — Kosten pro 1.000 Eingabe-/Ausgabe-Token je Provider |
# API: Budget festlegen
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
# API: Aktuellen Budgetstatus abrufen
curl http://localhost:20128/api/usage/budget
Kostenverfolgung: Jede Anfrage protokolliert die Token-Nutzung und berechnet die Kosten anhand der Preistabelle. Aufschlüsselungen nach Provider, Modell und API-Schlüssel können unter Dashboard → Nutzung angezeigt werden.
Audiotranskription
OmniRoute unterstützt Audiotranskription über den OpenAI-kompatiblen Endpoint:
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
# Beispiel mit 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 ist die native Deepgram-Route und benötigt einen Deepgram-API-Schlüssel.
Wenn nur OpenRouter konfiguriert ist, verwenden Sie openrouter/deepgram/nova-3.
Provider für Sprache-zu-Text (Transkription):
openai/(Whisper-kompatibel)groq/(Groq Whisper Turbo)deepgram/(Nova-Familie)assemblyai/nvidia/(Parakeet, Canary)huggingface/(Whisper-Varianten)qwen/
Provider für Text-zu-Sprache (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/
Unterstützte Audioformate für die Transkription: mp3, wav, m4a, flac, ogg, webm. Die TTS-Ausgabeformate hängen vom Provider ab (mp3, wav, opus, pcm, mulaw).
Combo-Ausgleichsstrategien
Konfigurieren Sie den Ausgleich pro Combo unter Dashboard → Combos → Erstellen/Bearbeiten → Strategie.
| Strategie | Beschreibung |
|---|---|
| Round-Robin | Wechselt der Reihe nach zwischen den Modellen |
| Priorität | Versucht immer zuerst das erste Modell; weicht nur bei einem Fehler aus |
| Zufällig | Wählt für jede Anfrage ein zufälliges Modell aus der Kombination |
| Gewichtet | Verteilt Anfragen proportional auf Grundlage der jedem Modell zugewiesenen Gewichtung |
| Am wenigsten verwendet | Leitet an das Modell mit den wenigsten kürzlichen Anfragen weiter (verwendet Kombinationsmetriken) |
| Kostenoptimiert | Leitet an das günstigste verfügbare Modell weiter (verwendet die Preistabelle) |
Globale Standardeinstellungen für Kombinationen können unter Dashboard → Settings → Routing → Combo Defaults festgelegt werden. Zeitüberschreitungen für Kombinationsziele übernehmen standardmäßig die aktuelle Anfragezeitüberschreitung. Verwenden Sie Target timeout (seconds) in den Standardeinstellungen für Kombinationen oder bei einer einzelnen Kombination nur dann, wenn ein kürzeres Limit pro Ziel ein schnelleres Ausweichen auslösen soll.
Kombinationsoptimierungen ohne zusätzliche Latenz müssen explizit aktiviert werden. Lassen Sie Zero-latency optimizations deaktiviert, um zu verhindern, dass diese Latenzfunktionen Ausweichziele parallel anfragen, Ziele auf Grundlage des TTFT-Verlaufs überspringen oder Ausweichanfragen komprimieren. Bei Aktivierung können konfiguriertes Hedging, prädiktive TTFT- Überspringungen und proaktive Ausweichkomprimierung die Routing-/Anfragetreue zugunsten einer geringeren Tail-Latenz reduzieren.
Deaktivieren Sie Reasoning token buffer, wenn vorgelagerte Anbieter strikte
max_tokens- / maxOutputTokens-Limits erfordern. Wenn diese Option aktiviert ist, fügt das Kombinationsrouting nur bei Modellen mit einem bekannten Ausgabelimit
zusätzlichen Spielraum für Reasoning-Modelle hinzu und lässt das Token-Limit des Clients unverändert, wenn der
sicher gepufferte Wert dieses Limit überschreiten würde. Wenn das Client-Limit bereits über einem bekannten Limit liegt,
reduziert OmniRoute es auf dieses Limit, bevor die Anfrage an den vorgelagerten Anbieter gesendet wird.
Zustandsübersicht
Zugriff über Dashboard → Health. Echtzeitübersicht über den Systemzustand mit 6 Karten:
| Karte | Angezeigte Informationen |
|---|---|
| Systemstatus | Betriebszeit, Version, Speichernutzung, Datenverzeichnis |
| Anbieterzustand | Globaler Laufzeitstatus der Circuit Breaker für Anbieter |
| Ratenlimits | Aktive Verbindungs-Cooldowns pro Konto mit verbleibender Zeit |
| Aktive Sperren | Aktive modellspezifische Sperren und vorübergehende Ausschlüsse |
| Signatur-Cache | Statistiken des Deduplizierungs-Caches (aktive Schlüssel, Trefferquote) |
| Latenztelemetrie | Aggregation der p50-/p95-/p99-Latenz pro Anbieter |
Profi-Tipp: Die Zustandsseite wird automatisch alle 10 Sekunden aktualisiert. Verwenden Sie die Circuit-Breaker-Karte, um zu erkennen, bei welchen Anbietern Probleme auftreten.
🤖 Automatisches Routing (ohne Konfiguration)
OmniRoute enthält einen bewertungsbasierten Auto-Router, der für jede Anfrage über alle verbundenen Anbieter hinweg das beste Modell auswählt — ohne dass eine Kombination gepflegt werden muss. Senden Sie die Anfrage einfach mit einem der auto/*-Präfixe, und OmniRoute stellt dynamisch eine virtuelle Kombination zusammen. Dabei werden Kandidaten anhand von Latenz, Kosten, Erfolgsrate, Kontexteignung, Modelleignung für die Aufgabe, kürzlich aufgetretenen Fehlern, Kontingent und Status des Circuit Breakers bewertet.
| Präfix | Optimiert für |
|---|---|
auto |
Ausgewogener Standard (Latenz × Kosten × Erfolgsrate) |
auto/coding |
Programmieraufgaben: bevorzugt Claude, GPT-5, GLM, Kimi, Qwen Coder und DeepSeek-Codingmodelle |
auto/cheap |
Niedrigste Kosten pro Token, akzeptiert höhere Latenz |
auto/fast |
Niedrigste Latenz, Kosten werden ignoriert |
auto/offline |
Ausschließlich lokale Anbieter (Ollama, vLLM, llama.cpp) — nützlich für isolierte Umgebungen |
auto/smart |
Schlussfolgerungsqualität hat Vorrang (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) |
auto/lkgp |
„Letzter bekanntermaßen funktionierender Anbieter“ — verwendet den letzten erfolgreichen Anbieter und greift anschließend auf Regeln zurück |
Beispiel:
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
}'
Der Auto-Router wird vollständig in AUTO-COMBO.md beschrieben — einschließlich der Anpassung von Bewertungsgewichtungen, des Sperrens von Anbietern und der Prüfung von Routing-Entscheidungen unter Dashboard → Auto Combo.
🔌 MCP- und A2A-Integration
OmniRoute ist sowohl ein MCP-Server (Model Context Protocol) als auch ein A2A-Server (Agent-to-Agent JSON-RPC 2.0). Jede MCP-kompatible IDE oder Agent-Hostanwendung kann OmniRoute-Tools direkt aufrufen — ohne dass ein zusätzlicher Wrapper erforderlich ist.
MCP-Transporte
- SSE:
http://localhost:20128/api/mcp/sse - Streamfähiges HTTP:
http://localhost:20128/api/mcp/stream - stdio:
omniroute --mcp(für IDE-Plugins, die stdio bevorzugen)
Claude Desktop verbinden
Bearbeiten Sie ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder die entsprechende Datei unter Windows/Linux:
{
"mcpServers": {
"omniroute": {
"command": "omniroute",
"args": ["--mcp"]
}
}
}
Cursor / Continue / VS Code MCP verbinden
Verwenden Sie die SSE-URL http://localhost:20128/api/mcp/sse und einen Bearer-API-Schlüssel, der unter Dashboard → API Keys generiert wurde.
Berechtigungsbereiche
MCP definiert derzeit 32 benannte Berechtigungsbereiche. Jeder Bearer-Schlüssel kann auf bestimmte Berechtigungsbereiche beschränkt werden — das maßgebliche Verzeichnis der Berechtigungsbereiche und Tools finden Sie in MCP-SERVER.md, das JSON-RPC-Schema in A2A-SERVER.md.
🧠 Skills-System
OmniRoute stellt ein erweiterbares Skill-Framework (src/lib/skills/) bereit, mit dem Agenten und der A2A-Endpunkt domänenspezifische Routinen ausführen können (z. B. code-review, summarize, extract-facts, web-research).
- Marketplace-UI — Skills über Dashboard → Skills durchsuchen und installieren
- Schlüsselbezogene Scopes — Einschränken, welche API-Schlüssel welche Skills aufrufen dürfen
- Benutzerdefinierte Skills — Eine TypeScript-Datei in
src/lib/a2a/skills/ablegen und registrieren; anschließend kann sie sofort über A2A aufgerufen werden
Vollständige Referenz: SKILLS.md.
💾 Memory-System
OmniRoute speichert langfristige Konversationserinnerungen mit hybrider Abfrage:
- SQLite FTS5 für die Schlüsselwortsuche in früheren Gesprächsbeiträgen
- Qdrant-Vektorspeicher (optional) für semantische Erinnerungsabfragen
- Automatische Faktenextraktion — Entitäten, Präferenzen und Entscheidungen werden nach jeder Sitzung zusammengefasst und in der Tabelle
memory_factsgespeichert - Erinnerungen sind nach API-Schlüssel und Sitzung getrennt
Erinnerungen können unter Dashboard → Memory verwaltet werden (suchen, bearbeiten, exportieren, löschen). Über die HTTP-Schnittstelle (/api/memory/*) können Agenten Fakten programmgesteuert übermitteln und abfragen — siehe MEMORY.md.
🔔 Webhooks
Abonnieren Sie OmniRoute-Ereignisse für Echtzeitüberwachung und Automatisierung.
- Erstellen Sie unter Dashboard → Webhooks einen Webhook mit Ziel-URL und einem geheimen HMAC-Signaturschlüssel
- Verfügbare Ereignisse:
request.completed,request.failed,provider.unavailable,budget.exceeded,combo.switched,circuit_breaker.opened,circuit_breaker.closed - Jede Nutzlast enthält
X-OmniRoute-Signature(HMAC-SHA256) zur Verifizierung - Wiederholungsversuche: 3 Versuche mit exponentiellem Backoff, danach Übertragung in die Dead-Letter-Queue
Das vollständige Schema finden Sie in WEBHOOKS.md.
☁️ Cloud-Agenten
OmniRoute lässt sich in cloudbasierte Coding-Agenten (OpenAI Codex Cloud, Devin, Jules, Antigravity) integrieren, sodass Sie lang laufende Aufgaben über dasselbe Dashboard ausführen können, das auch Ihr lokales Routing verwaltet.
- Erstellen Sie Aufgaben unter Dashboard → Cloud Agents oder über
POST /api/v1/agents/tasks - Verfolgen Sie Status, Protokolle und Artefakte für jede Aufgabe
- Verwenden Sie für jeden Anbieter einen eigenen API-Schlüssel — die Anmeldedaten verlassen niemals die OmniRoute-Instanz
Vollständige Referenz: CLOUD_AGENT.md.
🛠️ Programmatische Verwaltung
Sie können jede OmniRoute-Ressource (Anbieter, Kombinationen, Schlüssel, Einstellungen) über HTTP mit einem Bearer-Schlüssel mit dem Scope manage verwalten.
Generieren Sie den Schlüssel unter Dashboard → API Keys → New Key → Scope: manage und führen Sie anschließend Folgendes aus:
# Anbieter auflisten
curl http://localhost:20128/api/providers \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"
# Eine Anbieterverbindung hinzufügen
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" }'
# Eine Kombination erstellen
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-Schlüssel auflisten/erstellen
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"] }'
Den vollständigen Endpunktkatalog sowie die Anfrage-/Antwortschemata finden Sie in API_REFERENCE.md.
💻 Interne CLI
OmniRoute enthält eine interne CLI (omniroute …) für die Einrichtung, Diagnose und Laufzeitsteuerung. Diese ist von der Seite „CLI-Tools“ im Dashboard getrennt, auf der CLIs von Drittanbietern (Claude Code, Cursor, Codex, Cline, …) so konfiguriert werden, dass sie mit OmniRoute kommunizieren können.
omniroute setup # Interaktiver Assistent (Passwort, Anbieter, Kombinationen)
omniroute setup --non-interactive # Für CI geeignet
omniroute doctor # Systemdiagnose (Datenverzeichnis, DB, Anbieter, Ports)
omniroute providers available # Unterstützte Anbieter auflisten
omniroute providers list # Konfigurierte Verbindungen auflisten
omniroute providers test <id> # Eine Anbieterverbindung live testen
omniroute combos list # Kombinationen auflisten
omniroute combos switch <name> # Standardkombination festlegen
omniroute models # Verfügbare Modelle auflisten (--json, --search)
omniroute keys add | list | remove # API-Schlüssel über das Terminal verwalten
omniroute backup # Snapshot von Konfiguration und DB erstellen
omniroute restore [<timestamp>] # Aus einem Snapshot wiederherstellen
omniroute health # Detaillierter Systemzustand (Schutzschalter, Cache, Arbeitsspeicher)
omniroute quota # Nutzung der Anbieter-Kontingente
omniroute mcp status # Status des MCP-Servers
omniroute a2a status # Status des A2A-Servers
omniroute tunnel list|create|stop # Cloudflare-/Tailscale-/ngrok-Tunnel
omniroute reset-password # Administratorpasswort zurücksetzen
omniroute --mcp # MCP-Server über stdio starten
omniroute --port 3000 # Server auf einem benutzerdefinierten Port starten
Tipp: Kombinieren Sie omniroute doctor --json mit Ihrem Überwachungswerkzeug, um bei fehlerhaften Anbieterverbindungen alarmiert zu werden.
🖥️ Desktop-Anwendung (Electron)
OmniRoute ist als native Desktop-Anwendung für Windows, macOS und Linux verfügbar.
Installation
# Aus dem electron-Verzeichnis:
cd electron
npm install
# Entwicklungsmodus (Verbindung mit einem laufenden Next.js-Entwicklungsserver herstellen):
npm run dev
# Produktionsmodus (verwendet den eigenständigen Build):
npm start
Installationsprogramme erstellen
cd electron
npm run build # Aktuelle Plattform
npm run build:win # Windows (.exe NSIS)
npm run build:mac # macOS (.dmg universal)
npm run build:linux # Linux (.AppImage)
Ausgabe → electron/dist-electron/
Hauptfunktionen
| Funktion | Beschreibung |
|---|---|
| Serverbereitschaft | Fragt den Server ab, bevor das Fenster angezeigt wird (kein leerer Bildschirm) |
| Infobereich | In den Infobereich minimieren, Port ändern, über das Menü beenden |
| Portverwaltung | Serverport über den Infobereich ändern (Server wird automatisch neu gestartet) |
| Content Security Policy | Restriktive CSP über Sitzungs-Header |
| Einzelinstanz | Es kann jeweils nur eine App-Instanz ausgeführt werden |
| Offlinemodus | Der gebündelte Next.js-Server funktioniert ohne Internetverbindung |
Umgebungsvariablen
| Variable | Standardwert | Beschreibung |
|---|---|---|
OMNIROUTE_PORT |
20128 |
Serverport |
OMNIROUTE_MEMORY_MB |
512 |
Node.js-Heap-Limit (64–16384 MB) |
📖 Vollständige Dokumentation: electron/README.md