# User Guide (Norsk) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/USER_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/USER_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) Komplett veiledning for konfigurering av leverandører, oppretting av kombinasjoner, integrering av CLI-verktøy og distribusjon av OmniRoute. --- ## Innholdsfortegnelse - [Priser i korte trekk](#-pricing-at-a-glance) - [Bruksområder](#-use-cases) - [Leverandøroppsett](#-provider-setup) - [CLI-integrasjon](#-cli-integration) - [Distribusjon](#-deployment) - [Tilgjengelige modeller](#-available-models) - [Avanserte funksjoner](#-advanced-features) - [Automatisk ruting (uten konfigurasjon)](#-auto-routing-zero-config) - [MCP- og A2A-integrasjon](#-mcp--a2a-integration) - [Ferdighetssystem](#-skills-system) - [Minnesystem](#-memory-system) - [Webhooks](#-webhooks) - [Skyagenter](#-cloud-agents) - [Programmatisk administrasjon](#-programmatic-management) - [Intern CLI](#-internal-cli) - [Skrivebordsapplikasjon (Electron)](#-desktop-application-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](../providers/CSV-IMPORT.md). ### 🔐 Abonnementsleverandører #### Claude Code (Pro/Max) ```bash 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) ```bash 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 ```bash 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) 1. Registrer deg: [Zhipu AI](https://open.bigmodel.cn) 2. Hent API-nøkkelen fra Coding Plan 3. 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) 1. Registrer deg: [MiniMax](https://www.minimax.io) 2. 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) 1. Abonner: [Moonshot AI](https://platform.kimi.ai?aff=omniroute) 2. 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 1. Registrer deg: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop) 2. 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) ```bash 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) ```bash 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`](../providers/CURSOR-DOCKER.md). ### Claude Code Rediger `~/.claude/settings.json`: ```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 ```bash export OPENAI_BASE_URL="http://localhost:20128" export OPENAI_API_KEY="your-omniroute-api-key" codex "your prompt" ``` ### OpenClaw Rediger `~/.openclaw/openclaw.json`: ```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) ```bash 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: ```bash 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: ```bash 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: ```bash 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 ```bash 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: ```bash # 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`: ```javascript 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 ```bash # 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 ```bash # 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 " 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](../README.md). --- ## 📊 Tilgjengelige modeller
Vis alle tilgjengelige modeller > Listen nedenfor er hentet fra `open-sse/config/providerRegistry.ts` for v3.8.0. Skyleverandørenes kataloger (Gemini, OpenRouter osv.) synkroniseres dynamisk — åpne **Kontrollpanel → Leverandører → [leverandør] → Tilgjengelige modeller** eller kall `GET /api/models/catalog` for å 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 ` 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: ```bash # 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: ```bash # gateway-a OMNIROUTE_INSTANCE_ID=gateway-a OMNIROUTE_PEER_URLS=http://gateway-b:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` ```bash # 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: ```bash 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 ```bash # 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 ```bash 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_URL` på 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 `cloudflared` bare 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=quic` eller `auto` hvis du vil overstyre det administrerte transportvalget - Angi `CLOUDFLARED_BIN` hvis du foretrekker å bruke en forhåndsinstallert `cloudflared`-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-Key` eller `X-Request-Id` - **Fremdriftssporing** — Valgfrie SSE-`event: progress`-hendelser via headeren `X-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](../routing/AUTO-COMBO.md)): - `priority` — fast rekkefølge, bruker aldri rundgang - `weighted` — proporsjonal trafikkfordeling basert på vekter per modell - `fill-first` — bruker den første modellen til grensene nås - `round-robin` / `strict-random` / `random` - `p2c` (velg den beste av to) - `least-used` og `cost-optimized` - `auto` — poengbasert valg blant alle kandidater - `lkgp` (sist fungerende leverandør) — låser til den siste vellykkede leverandøren og bruker deretter reglene som reserve - `context-optimized` — velger modellen med det største ledige kontekstvinduet - `context-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: ```http 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: ```nginx 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: 1. **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 2. **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 3. **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 `DEGRADED` aktiveres - **Feilterskel** — Antall påfølgende leverandørfeil før tilstanden `OPEN` aktiveres - **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**. 4. **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. 5. **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` | ```bash # 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](./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 | ```bash # 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: ```bash 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: ```bash 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](../routing/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: ```json { "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](../frameworks/MCP-SERVER.md) for den autoritative oversikten over tilgangsområder og verktøy, og [A2A-SERVER.md](../frameworks/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](../frameworks/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](../frameworks/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](../frameworks/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](../frameworks/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: ```bash # 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](../reference/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. ```bash 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 # Utfør en direktetest av en leverandørtilkobling omniroute combos list # Vis kombinasjoner omniroute combos switch # 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 [] # 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 ```bash # 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 ```bash 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`](../../electron/README.md)