Files
OmniRoute/docs/i18n/da/README.md
2026-04-06 18:11:09 -03:00

110 KiB
Raw Blame History

🚀 OmniRoute — The Free AI Gateway (Dansk)

🌐 Languages: 🇺🇸 English · 🇪🇸 es · 🇫🇷 fr · 🇩🇪 de · 🇮🇹 it · 🇷🇺 ru · 🇨🇳 zh-CN · 🇯🇵 ja · 🇰🇷 ko · 🇸🇦 ar · 🇮🇳 hi · 🇮🇳 in · 🇹🇭 th · 🇻🇳 vi · 🇮🇩 id · 🇲🇾 ms · 🇳🇱 nl · 🇵🇱 pl · 🇸🇪 sv · 🇳🇴 no · 🇩🇰 da · 🇫🇮 fi · 🇵🇹 pt · 🇷🇴 ro · 🇭🇺 hu · 🇧🇬 bg · 🇸🇰 sk · 🇺🇦 uk-UA · 🇮🇱 he · 🇵🇭 phi · 🇧🇷 pt-BR · 🇨🇿 cs · 🇹🇷 tr


Never stop coding. Smart routing to FREE & low-cost AI models with automatic fallback.

Din universelle API-proxy — ét slutpunkt, 60+ udbydere, ingen nedetid. Nu medMCP Server (25 værktøjer),A2A Protocol,Memory/Skills Systems&Electron Desktop App.

Chatafslutninger • Indlejringer • Billedgenerering • Video • Musik • Lyd • Genrangering •Websøgning• MCP-server • A2A-protokol • 100 % TypeScript---

🌐Tilgængelig på:🇺🇸 engelsk | 🇧🇷 Português (Brasil) | 🇪🇸 Español | 🇫🇷 Français | 🇮🇹 Italiano | 🇷🇺 Русский | 🇨🇳 中文 (简体) | 🇩🇪 Tysk | 🇮🇳 हिन्दी | 🇹🇭 ไทย | 🇺🇦 Українська | 🇸🇦 العربية | 🇯🇵 日本語 | 🇻🇳 Tiếng Việt | 🇧🇬 Български | 🇩🇰 dansk | 🇫🇮 Suomi | 🇮🇱 English | 🇭🇺 Magyar | 🇮🇩 Bahasa Indonesien | 🇰🇷 한국어 | 🇲🇾 Bahasa Melayu | 🇳🇱 Nederlands | 🇳🇴 norsk | 🇵🇹 Português (Portugal) | 🇷🇴 Română | 🇵🇱 Polski | 🇸🇰 Slovenčina | 🇸🇪 Svenska | 🇵🇭 filippinsk | 🇨🇿 Čeština---

🖼️ Main Dashboard

OmniRoute Dashboard

📸 Dashboard Preview

Klik for at se skærmbilleder af dashboard
Side Skærmbillede
Udbydere Providers
Komboer Combos
Analyse Analytics
Sundhed Health
Oversætter Oversætter
Indstillinger Indstillinger
CLI-værktøjer CLI Tools
Brugslogfiler Usage
Endpunkter Endpoints

🤖 Free AI Provider for your favorite coding agents

Tilslut ethvert AI-drevet IDE- eller CLI-værktøj gennem OmniRoute - gratis API-gateway til ubegrænset kodning.

OpenClaw
OpenClaw

205K NanoBot
NanoBot

20,9K PicoClaw
PicoClaw

14,6K ZeroClaw
ZeroClaw

9,9K IronClaw
IronClaw

2,1K OpenCode
OpenCode

106K Codex CLI
Codex CLI

60,8K Claude Code
Claude Code

67,3K Gemini CLI
Gemini CLI

94,7K Kilokode
Kilokode

15,5K

📡 Alle agenter forbinder via http://localhost:20128/v1 eller http://cloud.omniroute.online/v1 - én konfiguration, ubegrænset modeller og kvote---

🤔 Why OmniRoute?

Stop med at spilde penge og nå grænser:

  • Abonnementskvoten udløber ubrugt hver måned
  • Satsgrænser stopper dig med at midtkode
  • Dyre API'er ($20-50/måned pr. udbyder)
  • Manuel skift mellem udbydere

OmniRoute løser dette:

  • Maksimer abonnementer- Spor kvote, brug hver bit før nulstilling
  • Automatisk fallback- Abonnement → API-nøgle → Billig → Gratis, ingen nedetid
  • Multi-konto- Round-robin mellem konti pr. udbyder
  • Universal- Virker med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, ethvert CLI-værktøj---

📧 Support

💬Tilmeld dig vores fællesskab!WhatsApp-gruppe — Få hjælp, del tips, og hold dig opdateret.

-Websted: omniroute.online -GitHub: github.com/diegosouzapw/OmniRoute -Problemer: github.com/diegosouzapw/OmniRoute/issues -WhatsApp: Fællesskabsgruppe -Bidrager: Se CONTRIBUTING.md, åbn en PR, eller vælg et "godt første nummer" -Originalt projekt: 9router af decolua### 🐛 Reporting a Bug?

Når du åbner et problem, skal du køre kommandoen systeminfo og vedhæfte den genererede fil:```bash npm run system-info


Dette genererer en `system-info.txt` med din Node.js-version, OmniRoute-version, OS-detaljer, installerede CLI-værktøjer (qoder, gemini, claude, codex, antigravity, droid osv.), Docker/PM2-status og systempakker - alt hvad vi har brug for for hurtigt at reproducere dit problem. Vedhæft filen direkte til dit GitHub-problem.---

## 🔄 How It Works

┌─────────────┐ │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...) │ Tool │ └──────┬──────┘ │ http://localhost:20128/v1 ↓ ┌─────────────────────────────────────────┐ │ OmniRoute (Smart Router) │ │ • Format translation (OpenAI ↔ Claude) │ │ • Quota tracking + Embeddings + Images │ │ • Auto token refresh │ └──────┬──────────────────────────────────┘ │ ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI │ ↓ quota exhausted ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc. │ ↓ budget limit ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M) │ ↓ budget limit └─→ [Tier 4: FREE] Qoder, Qwen, Kiro (unlimited)

Result: Never stop coding, minimal cost


---

## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases

>**Alle udviklere, der bruger AI-værktøjer, står over for disse problemer dagligt.**OmniRoute blev bygget til at løse dem alle - fra omkostningsoverskridelser til regionale blokke, fra ødelagte OAuth-flows til protokoloperationer og observerbarhed i virksomheden.

<detaljer>
<summary><b>💸 1. "Jeg betaler for et dyrt abonnement, men bliver stadig afbrudt af grænser"</b></summary>

Udviklere betaler $20-200/måned for Claude Pro, Codex Pro eller GitHub Copilot. Selv ved betaling har kvoten et loft - 5 timers brug, ugentlige grænser eller satsgrænser pr. minut. Mid-coding session, udbyderen holder op med at svare, og udvikleren mister flow og produktivitet.

**Sådan løser OmniRoute det:**

-**Smart 4-Tier Fallback**— Hvis abonnementskvoten løber ud, omdirigeres automatisk til API Key → Billig → Gratis uden manuel indgriben
-**Sporing af udbydergrænser**— Cachelagrede kvote-øjebliksbilleder opdateres på en server-sideplan (standard `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`) med manuel opdatering tilgængelig i brugergrænsefladen
-**Multi-Account Support**- Flere konti pr. udbyder med automatisk round-robin - når den ene løber tør, skifter til den næste
-**Brugerdefinerede kombinationer**— Tilpasselige fallback-kæder med 9 balanceringsstrategier (prioritet, vægtet, fill-first, round-robin, P2C, tilfældig, mindst brugt, omkostningsoptimeret, strengt tilfældig)
-**Codex Business Quotas**— Business/Team Workspace kvoteovervågning direkte i dashboardet</details>

<detaljer>
<summary><b>🔌 2. "Jeg skal bruge flere udbydere, men hver har en anden API"</b></summary>

OpenAI bruger et format, Claude (Antropisk) bruger et andet, Gemini endnu et andet. Hvis en udvikler ønsker at teste modeller fra forskellige udbydere eller fallback mellem dem, skal de omkonfigurere SDK'er, ændre slutpunkter, håndtere inkompatible formater. Tilpassede udbydere (FriendLI, NIM) har ikke-standardmodelslutpunkter.

**Sådan løser OmniRoute det:**

-**Unified Endpoint**— En enkelt `http://localhost:20128/v1` fungerer som proxy for alle 60+ udbydere
-**Formatoversættelse**— Automatisk og gennemsigtig: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-**Response Sanitization**- Fjerner ikke-standardfelter (`x_groq`, `usage_breakdown`, `service_tier`), der bryder OpenAI SDK v1.83+
-**Rollenormalisering**— Konverterer `udvikler` → `system` for ikke-OpenAI-udbydere; `system` → `bruger` til GLM/ERNIE
-**Think Tag Extraction**— Udtrækker "<think>"-blokke fra modeller som DeepSeek R1 til standardiseret "reasoning_content"
-**Structured Output for Gemini**— `json_schema` → `responseMimeType`/`responseSchema` automatisk konvertering
-**`stream` er standard til "false"**- Justerer med OpenAI-specifikationer, undgår uventede SSE i Python/Rust/Go SDK'er</details>

<detaljer>
<summary><b>🌐 3. "Min AI-udbyder blokerer mit område/land"</b></summary>

Udbydere som OpenAI/Codex blokerer adgang fra visse geografiske områder. Brugere får fejl som "unsupported_country_region_territory" under OAuth- og API-forbindelser. Dette er især frustrerende for udviklere fra udviklingslande.

**Sådan løser OmniRoute det:**

-**3-Level Proxy Config**— Konfigurerbar proxy på 3 niveauer: global (al trafik), pr. udbyder (kun én udbyder) og pr. forbindelse/nøgle
-**Farvekodede proxy-badges**— Visuelle indikatorer: 🟢 global proxy, 🟡 udbyder proxy, 🔵 forbindelsesproxy, viser altid IP'en
-**OAuth-tokenudveksling gennem proxy**- OAuth-flowet går også gennem proxyen og løser "unsupported_country_region_territory".
-**Forbindelsestest via proxy**— Forbindelsestest bruger den konfigurerede proxy (ikke mere direkte omgåelse)
-**SOCKS5-understøttelse**— Fuld SOCKS5-proxy-understøttelse til udgående routing
-**TLS Fingerprint Spoofing**— Browserlignende TLS-fingeraftryk via 'wreq-js' for at omgå botdetektion
-**🔏 Matching af CLI-fingeraftryk**— Omarrangerer overskrifter og kropsfelter, så de matcher native CLI-binære signaturer, hvilket drastisk reducerer risikoen for kontoflaggning. Proxy-IP'en bevares - du får både stealth**og**IP-maskering samtidigt</details>

<detaljer>
<resumé><b>🆓 4. "Jeg vil bruge AI til kodning, men jeg har ingen penge"</b></summary>

Ikke alle kan betale $20-200/måned for AI-abonnementer. Studerende, udviklere fra vækstlande, hobbyfolk og freelancere har brug for adgang til kvalitetsmodeller uden omkostninger.

**Sådan løser OmniRoute det:**

-**Free Tier Providers Indbygget**— Indbygget understøttelse af 100 % gratis udbydere: Qoder (5 ubegrænsede modeller via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited-modeller:-r-modeller:-r qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID gratis), Gemini CLI (180K tokens/måned gratis)
-**Ollama Cloud**— Cloud-hostede Ollama-modeller på `api.ollama.com` med gratis "Light usage"-niveau; brug `ollamacloud/<model>` præfiks
-**Kun gratis kombinationer**— Kæde `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/måned uden nedetid
-**NVIDIA NIM Free Access**— ~40 RPM dev-forever gratis adgang til 70+ modeller på build.nvidia.com (overgang fra kreditter til rene hastighedsgrænser)
-**Cost Optimized Strategy**— Routingstrategi, der automatisk vælger den billigste tilgængelige udbyder</details>

<detaljer>
<summary><b>🔒 5. "Jeg skal beskytte min AI-gateway mod uautoriseret adgang"</b></summary>

Når en AI-gateway eksponeres for netværket (LAN, VPS, Docker), kan enhver med adressen forbruge udviklerens tokens/kvote. Uden beskyttelse er API'er sårbare over for misbrug, hurtig injektion og misbrug.

**Sådan løser OmniRoute det:**

-**API Key Management**— Generering, rotation og scoping pr. udbyder med en dedikeret `/dashboard/api-manager`-side
-**Tilladelser på modelniveau**— Begræns API-nøgler til specifikke modeller ('openai/*', jokertegnsmønstre) med Tillad alt/Begræns-skift
-**API Endpoint Protection**— Kræv en nøgle til `/v1/modeller` og bloker specifikke udbydere fra listen
-**Auth Guard + CSRF Protection**— Alle dashboard-ruter beskyttet med 'withAuth' middleware + CSRF-tokens
-**Rate Limiter**— Per-IP hastighedsbegrænsning med konfigurerbare vinduer
-**IP-filtrering**— Tilladelsesliste/blokeringsliste til adgangskontrol
-**Prompt Injection Guard**— Sanering mod ondsindede promptmønstre
-**AES-256-GCM-kryptering**— Legitimationsoplysninger krypteret i hvile</details>

<detaljer>
<summary><b>🛑 6. "Min udbyder gik ned, og jeg mistede mit kodningsflow"</b></summary>

AI-udbydere kan blive ustabile, returnere 5xx-fejl eller ramme midlertidige hastighedsgrænser. Hvis en udvikler afhænger af en enkelt udbyder, bliver de afbrudt. Uden strømafbrydere kan gentagne genforsøg crashe programmet.

**Sådan løser OmniRoute det:**

-**Circuit Breaker pr. model**— Automatisk åbning/lukning med konfigurerbare tærskler og nedkøling (Lukket/Åben/Halv-Åben), omfang pr. model for at undgå kaskadeblokke
-**Eksponentiel backoff**— Progressive forsinkelser af genforsøg
-**Anti-tordenbesætning**— Mutex + semaforbeskyttelse mod samtidige genforsøgsstorme
-**Combo Fallback Chains**— Hvis den primære udbyder fejler, falder den automatisk gennem kæden uden indgriben
-**Combo Circuit Breaker**- Deaktiverer automatisk fejlende udbydere i en kombinationskæde
-**Health Dashboard**— Oppetidsovervågning, strømafbrydertilstande, lockouts, cachestatistik, p50/p95/p99 latency</details>

<detaljer>
<summary><b>🔧 7. "Konfiguration af hvert AI-værktøj er trættende og gentagende"</b></summary>

Udviklere bruger Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Hvert værktøj har brug for en anden konfiguration (API-endepunkt, nøgle, model). At omkonfigurere, når du skifter udbyder eller model, er spild af tid.

**Sådan løser OmniRoute det:**

-**CLI Tools Dashboard**— Dedikeret side med et-klik opsætning til Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-**GitHub Copilot Config Generator**— Genererer `chatLanguageModels.json` til VS-kode med bulk modelvalg
-**Onboarding Wizard**— Guidet 4-trins opsætning for førstegangsbrugere
-**Et slutpunkt, alle modeller**— Konfigurer `http://localhost:20128/v1` én gang, få adgang til 60+ udbydere</details>

<detaljer>
<summary><b>🔑 8. "Administration af OAuth-tokens fra flere udbydere er et helvede"</b></summary>

Claude Code, Codex, Gemini CLI, Copilot - alle bruger OAuth 2.0 med udløbende tokens. Udviklere skal genautentificere konstant, håndtere `client_secret is missing`, `redirect_uri_mismatch` og fejl på fjernservere. OAuth på LAN/VPS er særligt problematisk.

**Sådan løser OmniRoute det:**

-**Automatisk tokenopdatering**— OAuth-tokens opdateres i baggrunden før udløb
-**OAuth 2.0 (PKCE) Indbygget**— Automatisk flow for Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, Qoder
-**Multi-Account OAuth**— Flere konti pr. udbyder via JWT/ID-tokenudtrækning
-**OAuth LAN/Remote Fix**— Privat IP-detektion for `redirect_uri` + manuel URL-tilstand for fjernservere
-**OAuth Behind Nginx**— Bruger `window.location.origin` til omvendt proxy-kompatibilitet
-**Remote OAuth Guide**— Trin-for-trin guide til Google Cloud-legitimationsoplysninger på VPS/Docker</details>

<detaljer>
<resumé><b>📊 9. "Jeg ved ikke, hvor meget jeg bruger eller hvor"</b></summary>

Udviklere bruger flere betalte udbydere, men har ikke noget samlet syn på udgifter. Hver udbyder har sit eget faktureringsdashboard, men der er ingen konsolideret visning. Uventede omkostninger kan hobe sig op.

**Sådan løser OmniRoute det:**

-**Dashboard for omkostningsanalyse**— omkostningssporing pr. token og budgetstyring pr. udbyder
-**Budgetgrænser pr. niveau**— Udgiftsloft pr. niveau, der udløser automatisk fallback
-**Priskonfiguration pr. model**— Konfigurerbare priser pr. model
-**Brugsstatistik pr. API-nøgle**— Antal anmodninger og sidst anvendte tidsstempel pr. nøgle
-**Analytics Dashboard**— Statiske kort, modelbrugsdiagram, udbydertabel med succesrater og latens</details>

<detaljer>
<summary><b>🐛 10. "Jeg kan ikke diagnosticere fejl og problemer i AI-kald"</b></summary>

Når et opkald mislykkes, ved udvikleren ikke, om det var en takstgrænse, udløbet token, forkert format eller udbyderfejl. Fragmenterede logfiler på tværs af forskellige terminaler. Uden observerbarhed er fejlfinding trial-and-error.

**Sådan løser OmniRoute det:**

-**Unified Logs Dashboard**— 4 faner: Request Logs, Proxy Logs, Audit Logs, Console
-**Console Log Viewer**— Realtidsterminal-fremviser med farvekodede niveauer, automatisk rulning, søg, filtrer
-**SQLite Proxy Logs**— Vedvarende logfiler, der overlever servergenstarter
-**Oversætterlegeplads**— 4 fejlfindingstilstande: Legeplads (formatoversættelse), Chattester (rundtur), Testbænk (batch), Live Monitor (realtid)
-**Request Telemetri**— p50/p95/p99 latency + X-Request-Id-sporing
-**Filbaseret logning med rotation**— Applogfiler roterer efter størrelse, opbevaringsdage og arkivantal; opkaldslog-artefakter roterer efter opbevaringsdage og filantal
-**System Info Report**— `npm run system-info` genererer `system-info.txt` med dit fulde miljø (Nodeversion, OmniRoute-version, OS, CLI-værktøjer, Docker/PM2-status). Vedhæft det, når du rapporterer problemer til øjeblikkelig triage.</details>

<detaljer>
<resumé><b>🏗️ 11. "Deployering og vedligeholdelse af gatewayen er kompleks"</b></summary>

Installation, konfiguration og vedligeholdelse af en AI-proxy på tværs af forskellige miljøer (lokalt, VPS, Docker, cloud) er arbejdskrævende. Problemer som hårdkodede stier, "EACCES" på mapper, portkonflikter og cross-platform builds tilføjer friktion.

**Sådan løser OmniRoute det:**

-**npm global installation**— `npm install -g omniroute && omniroute` — færdig
-**Docker Multi-Platform**— AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
-**Docker Compose Profiles**— 'base' (ingen CLI-værktøjer) og 'cli' (med Claude Code, Codex, OpenClaw)
-**Electron Desktop App**— Indbygget app til Windows/macOS/Linux med systembakke, autostart, offlinetilstand
-**Split-Port Mode**— API og Dashboard på separate porte til avancerede scenarier (omvendt proxy, containernetværk)
-**Cloud Sync**— Konfigurer synkronisering på tværs af enheder via Cloudflare Workers
-**DB Backups**— Automatisk backup, gendannelse, eksport og import af alle indstillinger med `DISABLE_SQLITE_AUTO_BACKUP` til eksternt administrerede sikkerhedskopier</details>

<detaljer>
<summary><b>🌍 12. "Grænsefladen er kun engelsk, og mit team taler ikke engelsk"</b></summary>

Hold i ikke-engelsktalende lande, især i Latinamerika, Asien og Europa, kæmper med grænseflader, der kun er på engelsk. Sprogbarrierer reducerer adoption og øger konfigurationsfejl.

**Sådan løser OmniRoute det:**

-**Dashboard i18n — 30 sprog**— Alle 500+ taster oversat, inklusive arabisk, bulgarsk, dansk, tysk, spansk, finsk, fransk, hebraisk, hindi, ungarsk, indonesisk, italiensk, japansk, koreansk, malaysisk, hollandsk, norsk, polsk, portugisisk (PT/BR), rumænsk, russisk, ukrainsk, kinesisk, ukrainsk, kinesisk, kinesisk, ukrainsk, kinesisk, ukrainsk, kinesisk, ukrainsk, svensk, Vietnam, Vietnam
-**RTL-understøttelse**— Højre-til-venstre-understøttelse for arabisk og hebraisk
-**Multi-Language READMEs**— 30 komplette dokumentationsoversættelser
-**Sprogvælger**— Globusikon i overskriften til skift i realtid</details>

<detaljer>
<summary><b>🔄 13. "Jeg har brug for mere end chat  jeg har brug for indlejringer, billeder, lyd"</b></summary>

AI er ikke bare fuldførelse af chat. Udviklere skal generere billeder, transskribere lyd, oprette indlejringer til RAG, omrangere dokumenter og moderere indhold. Hver API har et andet slutpunkt og format.

**Sådan løser OmniRoute det:**

-**Embeddings**— `/v1/embeddings` med 6 udbydere og 9+ modeller
-**Billedgenerering**— `/v1/images/generations` med 10 udbydere og 20+ modeller (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-**Tekst-til-video**— `/v1/videoer/generationer` — ComfyUI (AnimateDiff, SVD) og SD WebUI
-**Text-to-Music**— `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-**Lydtransskription**— `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-**Text-to-Speech**— `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3,**Inworld**,**Cartesia**,**PlayHT**, + eksisterende udbydere
-**Moderationer**— `/v1/moderations` — Indholdssikkerhedstjek
-**Reranking**— `/v1/rerank' — Reranking af dokumentrelevans
-**Responses API**— Fuld `/v1/responses`-understøttelse af Codex</details>

<detaljer>
<summary><b>🧪 14. "Jeg har ingen måde at teste og sammenligne kvalitet på tværs af modeller"</b></summary>

Udviklere vil gerne vide, hvilken model der er bedst til deres brug - kode, oversættelse, ræsonnement - men manuel sammenligning er langsom. Der findes ingen integrerede evalueringsværktøjer.

**Sådan løser OmniRoute det:**

-**LLM-evalueringer**— Gyldne sæt-test med 10 forudindlæste cases, der dækker hilsner, matematik, geografi, kodegenerering, JSON-overholdelse, oversættelse, markdown, sikkerhedsafvisning
-**4 matchstrategier**— 'præcis', 'indeholder', 'regex', 'brugerdefineret' (JS-funktion)
-**Translator Playground Test Bench**— Batchtest med flere input og forventede output, sammenligning på tværs af udbydere
-**Chattester**— Fuld rundtur med visuel responsgengivelse
-**Live Monitor**— Realtidsstream af alle anmodninger, der flyder gennem proxyen</details>

<detaljer>
<summary><b>📈 15. "Jeg har brug for at skalere uden at miste ydeevne"</b></summary>

Efterhånden som forespørgselsvolumen vokser, genererer de samme spørgsmål duplikerede omkostninger uden cache. Uden idempotens, dublerede anmodninger om affaldsbehandling. Takstgrænser pr. udbyder skal overholdes.

**Sådan løser OmniRoute det:**

-**Semantisk cache**— To-lags cache (signatur + semantisk) reducerer omkostninger og latens
-**Request Idempotency**— 5s deduplikeringsvindue for identiske anmodninger
-**Detektion af hastighedsgrænse**— RPM pr. udbyder, min. gap og maks. samtidig sporing
-**Redigerbare hastighedsgrænser**— Konfigurerbare standardindstillinger i Indstillinger → Modstandsdygtighed med vedholdenhed
-**API Key Validation Cache**— 3-lags cache til produktionsydeevne
-**Health Dashboard med telemetri**— p50/p95/p99 latency, cachestatistik, oppetid</details>

<detaljer>
<summary><b>🤖 16. "Jeg vil kontrollere modeladfærd globalt"</b></summary>

Udviklere, der ønsker alle svar på et bestemt sprog, med en bestemt tone, eller ønsker at begrænse ræsonnementstokens. Det er upraktisk at konfigurere dette i hvert værktøj/anmodning.

**Sådan løser OmniRoute det:**

-**System Prompt Injection**— Global prompt anvendt på alle anmodninger
-**Thinking Budget Validation**— Reasoning token allocation control pr. anmodning (passthrough, auto, custom, adaptive)
-**9 Routing Strategies**— Globale strategier, der bestemmer, hvordan anmodninger distribueres
-**Wildcard Router**— `udbyder/*`-mønstre rutes dynamisk til enhver udbyder
-**Kombo Aktiver/Deaktiver Til/fra**— Skift kombinationer direkte fra dashboardet
-**Tilskiftning af udbyder**— Aktiver/deaktiver alle forbindelser for en udbyder med et enkelt klik
-**Blokerede udbydere**— Ekskluder specifikke udbydere fra `/v1/models` liste</details>

<detaljer>
<summary><b>🧰 17. "Jeg har brug for MCP-værktøjer som førsteklasses produktegenskaber"</b></summary>

Mange AI-gateways afslører kun MCP som en skjult implementeringsdetalje. Teams har brug for et synligt, overskueligt operationslag.

**Sådan løser OmniRoute det:**

- MCP vises på fanen dashboardnavigation og endepunktsprotokol
- Dedikeret MCP-administrationsside med proces, værktøjer, omfang og revision
- Indbygget hurtigstart til `omniroute --mcp` og klient onboarding</details>

<detaljer>
<summary><b>🧠 18. "Jeg har brug for A2A-orkestrering med synkronisering + stream opgavestier"</b></summary>

Agentarbejdsgange kræver både direkte svar og langvarig streamet udførelse med livscykluskontrol.

**Sådan løser OmniRoute det:**

- A2A JSON-RPC-slutpunkt ('POST /a2a') med 'message/send' og 'message/stream'
- SSE-streaming med udbredelse af terminaltilstand
- Opgavelivscyklus API'er for "opgaver/hent" og "opgaver/annuller".</details>

<detaljer>
<resumé><b>🛰️ 19. "Jeg har brug for ægte MCP-processundhed, ikke gættet status"</b></summary>

Operationelle teams skal vide, om MCP faktisk er i live, ikke kun om en API er tilgængelig.

**Sådan løser OmniRoute det:**

- Runtime-hjerteslagsfil med PID, tidsstempler, transport, værktøjstælling og omfangstilstand
- MCP status API, der kombinerer hjerteslag + seneste aktivitet
- UI-statuskort til proces/oppetid/hjerteslagsfriskhed</details>

<detaljer>
<summary><b>📋 20. "Jeg har brug for auditable MCP-værktøjsudførelse"</b></summary>

Når værktøjer muterer konfiguration eller udløser ops-handlinger, har teams brug for retsmedicinsk sporbarhed.

**Sådan løser OmniRoute det:**

- SQLite-støttet revisionslogning for MCP-værktøjsopkald
- Filtrerer efter værktøj, succes/fiasko, API-nøgle og paginering
- Dashboard revisionstabel + statistik slutpunkter til automatisering</details>

<detaljer>
<summary><b>🔐 21. "Jeg har brug for scoped MCP-tilladelser pr. integration"</b></summary>

Forskellige klienter bør have mindst privilegeret adgang til værktøjskategorier.

**Sådan løser OmniRoute det:**

- 10 granulære MCP-skoper til kontrolleret værktøjsadgang
- Håndhævelse af omfang og synlighed i MCP management UI
- Sikker standardstilling for operationelt værktøj</details>

<detaljer>
<summary><b>⚙️ 22. "Jeg har brug for operationelle kontroller uden omfordeling"</b></summary>

Teams har brug for hurtige runtime-ændringer under hændelser eller omkostningsbegivenheder.

**Sådan løser OmniRoute det:**

- Skift kombinationsaktivering direkte fra MCP-dashboard
- Anvend modstandsdygtighedsprofiler fra foruddefinerede politikpakker
- Nulstil strømafbrydertilstand fra det samme betjeningspanel</details>

<detaljer>
<resumé><b>🔄 23. "Jeg har brug for live A2A opgave livscyklus synlighed og annullering"</b></summary>

Uden livscyklussynlighed bliver opgavehændelser svære at triage.

**Sådan løser OmniRoute det:**

- Opgaveliste/filtrering efter tilstand/færdighed med paginering
- Drill-down på opgavemetadata, hændelser og artefakter
- Slutpunkt for annullering af opgave og UI-handling med bekræftelse</details>

<detaljer>
<summary><b>🌊 24. "Jeg har brug for aktive stream-metrics for A2A-indlæsning"</b></summary>

Streaming-arbejdsgange kræver operationel indsigt i samtidighed og live-forbindelser.

**Sådan løser OmniRoute det:**

- Aktive stream-tællere integreret i A2A-status
- Tidsstempel for sidste opgave og tæller pr. stat
- A2A dashboard-kort til operationsovervågning i realtid</details>

<detaljer>
<summary><b>🪪 25. "Jeg har brug for standardagentopdagelse til klienter"</b></summary>

Eksterne klienter og orkestratorer har brug for maskinlæsbare metadata til onboarding.

**Sådan løser OmniRoute det:**

- Agentkort afsløret på `/.well-known/agent.json`
- Evner og færdigheder vist i ledelsens brugergrænseflade
- A2A status API inkluderer opdagelsesmetadata til automatisering</details>

<detaljer>
<summary><b>🧭 26. "Jeg har brug for protokolsynlighed i produktets UX"</b></summary>

Hvis brugere ikke kan opdage protokoloverflader, falder kvaliteten af adoption og support.

**Sådan løser OmniRoute det:**

- Konsolideret**Endpoints**-side med faner til Proxy, MCP, A2A og API Endpoints
- Inline service status skifter (Online/Offline) for MCP og A2A
- Links fra oversigt til dedikerede administrationsfaner</details>

<detaljer>
<summary><b>🧪 27. "Jeg har brug for end-to-end protokolvalidering med rigtige klienter"</b></summary>

Mock-tests er ikke nok til at validere protokolkompatibilitet før frigivelse.

**Sådan løser OmniRoute det:**

- E2E-pakke, der starter app og bruger ægte MCP SDK-klienttransport
- A2A klient tester for opdagelse, send, stream, hent og annuller flows
- Krydstjek påstande mod MCP-revision og A2A-opgaver API'er</details>

<detaljer>
<summary><b>📡 28. "Jeg har brug for samlet observerbarhed på tværs af alle grænseflader"</b></summary>

Opdeling af observerbarhed efter protokol skaber blinde pletter og længere MTTR.

**Sådan løser OmniRoute det:**

- Samlede dashboards/logfiler/analyse i ét produkt
- Health + audit + request telemetri på tværs af OpenAI, MCP og A2A lag
- Operationelle API'er til status og automatisering</details>

<detaljer>
<summary><b>💼 29. "Jeg har brug for én runtime til proxy + værktøjer + agentorkestrering"</b></summary>

At køre mange separate tjenester øger driftsomkostninger og fejltilstande.

**Sådan løser OmniRoute det:**

- OpenAI-kompatibel proxy, MCP-server og A2A-server i én stak
- Delt godkendelse, robusthed, datalager og observerbarhed
- Ensartet politikmodel på tværs af alle interaktionsflader</details>

<detaljer>
<summary><b>🚀 30. "Jeg skal sende agentiske arbejdsgange uden limkodesprawl"</b></summary>

Hold mister hastighed, når de sammensætter flere ad-hoc-tjenester og scripts.

**Sådan løser OmniRoute det:**

- Ensartet slutpunktsstrategi for kunder og agenter
- Indbygget protokolstyring UI'er og røgvalideringsstier
- Produktionsklare fundamenter (sikkerhed, logning, robusthed, backup)</details>

### Example Playbooks (Integrated Use Cases)

**Playbook A: Maksimer betalt abonnement + billig backup**```txt
Combo: "maximize-claude"
  1. cc/claude-opus-4-6
  2. glm/glm-4.7
  3. if/kimi-k2-thinking

Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption

Playbook B: Kodningsstak uden omkostninger```txt Combo: "free-forever"

  1. gc/gemini-3-flash
  2. if/kimi-k2-thinking
  3. qw/qwen3-coder-plus

Monthly cost: $0 Outcome: stable free coding workflow


**Playbook C: 24/7 altid aktiv reservekæde**```txt
Combo: "always-on"
  1. cc/claude-opus-4-6
  2. cx/gpt-5.2-codex
  3. glm/glm-4.7
  4. minimax/MiniMax-M2.1
  5. if/kimi-k2-thinking

Outcome: deep fallback depth for deadline-critical workloads

Playbook D: Agent ops med MCP + A2A```txt

  1. Start MCP transport (omniroute --mcp) for tool-driven operations
  2. Run A2A tasks via message/send and message/stream
  3. Observe via /dashboard/endpoint (MCP and A2A tabs)
  4. Toggle services via inline status controls

---

## 🆓 Start Free — Zero Configuration Cost

> Konfigurer AI-kodning på få minutter til**$0/måned**. Tilslut disse gratis konti, og brug den indbyggede**Free Stack**-kombination.

| Trin | Handling | Udbydere ulåst |
| ---- | -------------------------------------------------- | -------------------------------------------------------------------------- |
| 1 | Tilslut**Kiro**(AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 —**ubegrænset**|
| 2 | Tilslut**Qoder**(Google OAuth) | kimi-k2-tænkning, qwen3-coder-plus, deepseek-r1... —**ubegrænset**|
| 3 | Tilslut**Qwen**(enhedskode) | qwen3-coder-plus, qwen3-coder-flash... —**ubegrænset**|
| 4 | Tilslut**Gemini CLI**(Google OAuth) | gemini-3-flash, gemini-2.5-pro —**180K/md gratis**|
| 5 | `/dashboard/combos` →**Gratis stak ($0)**skabelon | Round-robin alle gratis udbydere automatisk |

**Peg enhver IDE/CLI til:**`http://localhost:20128/v1` · API-nøgle: `any-string` · Udført.

>**Valgfri ekstra dækning (også gratis):**Groq API-nøgle (30 RPM gratis), NVIDIA NIM (40 RPM gratis, 70+ modeller), Cerebras (1M tok/dag), LongCat API-nøgle (50M tokens/dag!), Cloudflare Workers AI (10K Neurons/day, 50+ modeller).## Kom hurtigt i gang

### 1) Install and run

```bash
npm install -g omniroute
omniroute

**pnpm-brugere:**Kør pnpm approve-builds -g efter installation for at aktivere native build-scripts, der kræves af better-sqlite3 og @swc/core:

pnpm installer -g omniroute
pnpm approve-builds -g # Vælg alle pakker → godkend
omniroute

Dashboard åbner på http://localhost:20128 og API-base-URL er http://localhost:20128/v1.

Kommando Beskrivelse
omniroute Start server (PORT=20128, API og dashboard på samme port)
omniroute --port 3000 Indstil kanonisk/API-port til 3000
omniroute --mcp Start MCP-server (stdio-transport)
omniroute --no-open Åbn ikke browseren automatisk
omniroute --hjælp Vis hjælp

Valgfri split-port-tilstand:```bash PORT=20128 DASHBOARD_PORT=20129 omniroute

API: http://localhost:20128/v1

Dashboard: http://localhost:20129


### Long-Running Streaming Timeouts

Til de fleste implementeringer behøver du kun:

| Variabel | Standard | Formål |
| -------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | `600000` | Delt baseline for upstream-hentning, skjulte Undici-timeouts, TLS-fingeraftryksanmodninger og API-broanmodninger/proxy-timeouts |
| `STREAM_IDLE_TIMEOUT_MS` | arver `REQUEST_TIMEOUT_MS` | Maksimalt mellemrum mellem streamingstykker, før OmniRoute afbryder SSE-strømmen |

Bagudkompatibilitet er bevaret: eksisterende `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS` og andre timeoutvarianter pr. lag fungerer stadig og tilsidesætter den delte basislinje.

Avancerede tilsidesættelser er tilgængelige, hvis du har brug for bedre kontrol:| Variabel | Standard | Formål |
| ------------------------------------------ | ------------------------------------------ | ---------------------------------------------------------------------------- |
| `FETCH_TIMEOUT_MS` | arver `REQUEST_TIMEOUT_MS` | Total upstream-anmodningstimeout brugt af hovedhentningsafbrydelsessignalet |
| `FETCH_HEADERS_TIMEOUT_MS` | arver `FETCH_TIMEOUT_MS` | Undici tidsgrænse for modtagelse af opstrøms svaroverskrifter |
| `FETCH_BODY_TIMEOUT_MS` | arver `FETCH_TIMEOUT_MS` | Undici tidsgrænse mellem opstrøms kropsstykker (`0` deaktiverer det) |
| `FETCH_CONNECT_TIMEOUT_MS` | `30.000` | Undici TCP forbindelse timeout |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Undici idle keep-alive socket timeout |
| `TLS_CLIENT_TIMEOUT_MS` | arver `FETCH_TIMEOUT_MS` | Timeout for TLS-fingeraftryksanmodninger foretaget via `wreq-js` |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | arver `REQUEST_TIMEOUT_MS` eller `30000` | Timeout for `/v1` proxy-videresendelse fra API-port til dashboard-port |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `max(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | Timeout for indgående anmodning på API-broserveren |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60.000` | Timeout for indgående header på API-broserveren |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Keep-alive timeout på API-broserveren |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Socket inaktivitet timeout på API-broserveren (`0` deaktiverer den) |

Hvis du kører OmniRoute bag Nginx, Caddy, Cloudflare eller en anden omvendt proxy, skal du sørge for, at proxyen
timeouts er også højere end dine OmniRoute stream/hente timeouts.### 2) Connect providers and create your API key

1. Åbn Dashboard → `Providers` og tilslut mindst én udbyder (OAuth- eller API-nøgle).
2. Åbn Dashboard → `Endpoints` og opret en API-nøgle.
3. (Valgfrit) Åbn Dashboard → `Combos` og indstil din reservekæde.### 3) Point your coding tool to OmniRoute

```txt
Base URL: http://localhost:20128/v1
API Key:  [copy from Endpoint page]
Model:    if/kimi-k2-thinking (or any provider/model prefix)

Fungerer med Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode og OpenAI-kompatible SDK'er.### 4) Enable and validate protocols (v2.0)

MCP (til værktøjsdrevne operationer):```bash omniroute --mcp


Tilslut derefter din MCP-klient over 'stdio' og test værktøjer som:

- `omniroute_get_health`
- `omniroute_list_combos`

**A2A (for agent-til-agent arbejdsgange):**```bash
curl http://localhost:20128/.well-known/agent.json
curl -X POST http://localhost:20128/a2a \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
npm run test:protocols:e2e

Denne suite validerer rigtige MCP- og A2A-klientstrømme mod en kørende app.### Alternative: run from source

cp .env.example .env
npm install
PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
Ugyldig Linux (`xbps-src`-skabelon)

For Void Linux-brugere kan du bygge en indbygget pakke ved hjælp af xbps-src. Gem denne blok som srcpkgs/omniroute/template:```bash

Template file for 'omniroute'

pkgname=omniroute version=3.4.1 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit zenobit@disroot.org" license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false

do_build() { # Determine target CPU arch for node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac

# 1) Install all deps  skip scripts (no network in do_build, native modules
#    compiled separately below; better-sqlite3 is serverExternalPackage so
#    Next.js does not execute it during next build)
NODE_ENV=development npm ci --ignore-scripts

# 2) Build the Next.js standalone bundle
npm run build

# 3) Copy static assets into standalone
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true

# 4) Compile better-sqlite3 native binding for the target architecture.
#    Use node-gyp directly so CC/CXX from xbps-src cross-toolchain are used
#    without npm altering them.
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")

# 5) Place the compiled binding into the standalone bundle
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"

# 6) Remove arch-specific sharp bundles  upstream sets images.unoptimized=true
#    so sharp is not used at runtime; x64 .so files would break aarch64 strip
rm -rf .next/standalone/node_modules/@img

# 7) Copy pino runtime deps omitted by Next.js static analysis:
#    pino-abstract-transport  required by pino's worker thread
#    split2  dep of pino-abstract-transport
#    process-warning  dep of pino itself
for _mod in pino-abstract-transport split2 process-warning; do
	cp -r "node_modules/$_mod" .next/standalone/node_modules/
done

}

do_check() { npm run test:unit }

do_install() { vmkdir usr/lib/omniroute/.next

vcopy .next/standalone/. usr/lib/omniroute/.next/standalone

# Prevent removal of empty Next.js app router dirs by the post-install hook
for _d in \
	.next/standalone/.next/server/app/dashboard \
	.next/standalone/.next/server/app/dashboard/settings \
	.next/standalone/.next/server/app/dashboard/providers; do
	touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep"
done

cat > "${WRKDIR}/omniroute" <<'EOF'

#!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export LOG_TO_FILE="${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 }


</details>

---

## 🐳 Docker

OmniRoute er tilgængelig som et offentligt Docker-billede på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).

**Hurtigt løb:**```bash
docker run -d \
  --name omniroute \
  --restart unless-stopped \
  --stop-timeout 40 \
  -p 20128:20128 \
  -v omniroute-data:/app/data \
  diegosouzapw/omniroute:latest

Med miljøfil:```bash

Copy and edit .env first

cp .env.example .env

docker run -d
--name omniroute
--restart unless-stopped
--stop-timeout 40
--env-file .env
-p 20128:20128
-v omniroute-data:/app/data
diegosouzapw/omniroute:latest


**Brug af Docker Compose:**```bash
# Base profile (no CLI tools)
docker compose --profile base up -d

# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d

Dashboard-understøttelse til Docker-implementeringer inkluderer nu et enkelt-klikCloudflare Quick TunnelDashboard → Endpoints. Den første aktivering downloader kun cloudflared, når det er nødvendigt, starter en midlertidig tunnel til dit nuværende /v1-slutpunkt og viser den genererede https://*.trycloudflare.com/v1-URL direkte under din normale offentlige URL.

Bemærkninger:

  • Hurtige tunnel-URL'er er midlertidige og ændres efter hver genstart.
  • Hurtige tunneler gendannes ikke automatisk efter en OmniRoute- eller containergenstart. Genaktiver dem fra dashboardet, når det er nødvendigt.
  • Administreret installation understøtter i øjeblikket Linux, macOS og Windows på x64 / arm64.
  • Managed Quick Tunnels er som standard HTTP/2-transport for at undgå støjende QUIC UDP-bufferadvarsler i begrænsede containermiljøer. Indstil CLOUDFLARED_PROTOCOL=quic eller auto, hvis du ønsker en anden transport.
  • Docker-billeder samler systemets CA-rødder og sender dem til administreret cloudflared, hvilket undgår TLS-tillidsfejl, når tunnelen starter inde i containeren.
  • SQLite kører i WAL-tilstand. docker stop skal have lov til at afslutte, så OmniRoute kan kontrollere de seneste ændringer tilbage i storage.sqlite.
  • De medfølgende Compose-filer sætter allerede en 40'er-stop-periode. Hvis du kører billedet direkte, skal du beholde --stop-timeout 40 (eller lignende), så manuelle stop ikke afbryder nedlukningsoprydning.
  • Indstil CLOUDFLARED_BIN=/absolute/sti/to/cloudflared, hvis du ønsker, at OmniRoute skal bruge en eksisterende binær i stedet for at downloade en.

Brug af Docker Compose med Caddy (HTTPS Auto-TLS):

OmniRoute kan eksponeres sikkert ved hjælp af Caddys automatiske SSL-klargøring. Sørg for, at dit domænes DNS A-record peger på din servers IP.```yaml services: omniroute: image: diegosouzapw/omniroute:latest container_name: omniroute restart: unless-stopped volumes: - omniroute-data:/app/data environment: - PORT=20128 - NEXT_PUBLIC_BASE_URL=https://your-domain.com

caddy: image: caddy:latest container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128

volumes: omniroute-data:


| Billede | Tag | Størrelse | Beskrivelse |
| -------------------------- | -------- | ------ | ---------------------- |
| `diegosouzapw/omniroute` | `nyeste` | ~250MB | Seneste stabile udgivelse |
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Nuværende version |---

## 🖥️ Desktop App — Offline & Always-On

> 🆕**NYT!**OmniRoute er nu tilgængelig som en**native desktop-applikation**til Windows, macOS og Linux.

Kør OmniRoute som en selvstændig desktop-app - ingen terminal, ingen browser, intet internet påkrævet for lokale modeller. Den elektronbaserede app inkluderer:

- 🖥️**Native Window**— Dedikeret appvindue med systembakkeintegration
- 🔄**Auto-Start**— Start OmniRoute ved systemlogin
- 🔔**Native notifikationer**— Få advarsler om kvoteopbrugt eller udbyderproblemer
- ⚡**One-Click Install**— NSIS (Windows), DMG (macOS), AppImage (Linux)
- 🌐**Offline-tilstand**— Fungerer fuldt ud offline med medfølgende server### Kom hurtigt i gang

```bash
# Development mode
npm run electron:dev

# Build for your platform
npm run electron:build         # Current platform
npm run electron:build:win     # Windows (.exe)
npm run electron:build:mac     # macOS (.dmg) — x64 & arm64
npm run electron:build:linux   # Linux (.AppImage)

System Tray

Når den er minimeret, lever OmniRoute i din procesbakke med hurtige handlinger:

  • Åbn instrumentbrættet
  • Skift serverport
  • Afslut programmet

📖 Fuld dokumentation: electron/README.md---

💰 Pricing at a Glance

Tier Udbyder Omkostninger Kvote nulstilling Bedst til
💳 ABONNEMENT Claude Code (Pro) 20 USD/md. 5 timer + ugentlig Allerede abonneret
Codex (Plus/Pro) $20-200/md. 5 timer + ugentlig OpenAI-brugere
Gemini CLI GRATIS 180K/md + 1K/dag Alle sammen!
GitHub Copilot $10-19/md. Månedlig GitHub-brugere
🔑 API NØGLE NVIDIA NIM GRATIS(dev for evigt) ~40 RPM 70+ åbne modeller
Cerebras GRATIS(1M tok/dag) 60K TPM / 30 RPM Verdens hurtigste
Groq GRATIS(30 RPM) 14,4K RPD Ultrahurtig Lama/Gemma
DeepSeek V3.2 0,27 USD/1,10 USD pr. 1 mio. Ingen Bedste pris/kvalitet ræsonnement
xAI Grok-4 Hurtig $0,20/$0,50 pr. 1M🆕 Ingen Hurtigste + værktøjsopkald, ultralav
xAI Grok-4 (standard) 0,20 USD/1,50 USD pr. 1 mio. 🆕 Ingen Fornuft flagskib fra xAI
Mistral Gratis prøveperiode + betalt Sats begrænset Europæisk AI
OpenRouter Betal pr. brug Ingen 100+ modeller aggr.
💰 BILLIG GLM-5 (via Z.AI) 🆕 0,5 USD/1 mio. Dagligt 10:00 128K output, nyeste flagskib
GLM-4.7 0,6 USD/1 mio. Dagligt 10:00 Budget backup
MiniMax M2.5 🆕 $0,3/1 mio. input 5-timers rullende Begrundelse + agentopgaver
MiniMax M2.1 $0,2/1 mio. 5-timers rullende Billigste mulighed
Kimi K2.5 (Moonshot API) 🆕 Betal pr. brug Ingen Direkte Moonshot API-adgang
Kimi K2 9 USD/md. lejlighed 10M tokens/md. Forudsigelige omkostninger
🆓 GRATIS Qoder $0 Ubegrænset 5 modeller ubegrænset
Qwen $0 Ubegrænset 4 modeller ubegrænset
Kiro $0 Ubegrænset Claude Sonnet/Haiku (AWS Builder)
LongCat Flash-Lite 🆕 $0(50 mio. tok/dag 🔥) 1 RPS Største gratis kvote på jorden
Bestøvninger AI 🆕 $0(ingen nøgle nødvendig) 1 req/15s GPT-5, Claude, DeepSeek, Llama 4
Cloudflare Workers AI 🆕 $0(10.000 neuroner/dag) ~150 hhv/dag 50+ modeller, global kant
Scaleway AI 🆕 $0(1 mio. tokens i alt) Sats begrænset EU/GDPR, Qwen3 235B, Lama 70B > 🆕**Nye modeller tilføjet (mars 2026):**Grok-4 Fast-familie til $0,20/$0,50/M (benchmarked ved 1143ms — 30 % hurtigere end Gemini 2.5 Flash), GLM-5 via Z.AI med 128K output, MiniMax M2.5-begrundelse, KimSeidek pr. direkte API.

💡 $0 Combo Stack — Den komplette gratis opsætning:```

🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever

Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED Qoder (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥 Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU) Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day


**Nul omkostninger. Stopper aldrig med at kode.**Konfigurer dette som én OmniRoute-kombination, og alle fallbacks sker automatisk - ingen manuel skift nogensinde.---

---

## 🆓 Free Models — What You Actually Get

> Alle modeller nedenfor er**100 % gratis uden kreditkort påkrævet**. OmniRoute dirigerer automatisk mellem dem, når én kvote løber ud - kombiner dem alle for en ubrydelig kombination af $0.### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)

| Model | Præfiks | Grænse | Satsgrænse |
| ------------------ | ------ | ------------- | ---------------------- |
| `claude-sonnet-4.5` | `kr/` |**Ubegrænset**| Ingen rapporteret dagligt loft |
| `claude-haiku-4.5` | `kr/` |**Ubegrænset**| Ingen rapporteret dagligt loft |
| `claude-opus-4.6` | `kr/` |**Ubegrænset**| Seneste Opus via Kiro |### 🟢 QODER MODELS (Free PAT via qodercli)

| Model | Præfiks | Grænse | Satsgrænse |
| ------------------ | ------ | ------------- | --------------- |
| `kimi-k2-tænkning` | `hvis/` |**Ubegrænset**| Ingen rapporteret loft |
| `qwen3-coder-plus` | `hvis/` |**Ubegrænset**| Ingen rapporteret loft |
| `deepseek-r1` | `hvis/` |**Ubegrænset**| Ingen rapporteret loft |
| `minimax-m2.1` | `hvis/` |**Ubegrænset**| Ingen rapporteret loft |
| `kimi-k2` | `hvis/` |**Ubegrænset**| Ingen rapporteret loft |

> Anbefalet forbindelsesmetode:**Personal Access Token + `qodercli`**. Browser OAuth er
> eksperimentel og deaktiveret som standard, medmindre `QODER_OAUTH_*` miljøvariabler er konfigureret.### 🟡 QWEN MODELS (Device Code Auth)

| Model | Præfiks | Grænse | Satsgrænse |
| ------------------ | ------ | ------------- | ------------------ |
| `qwen3-coder-plus` | `qw/` |**Ubegrænset**| Ingen rapporteret loft |
| `qwen3-coder-flash` | `qw/` |**Ubegrænset**| Ingen rapporteret loft |
| `qwen3-coder-next` | `qw/` |**Ubegrænset**| Ingen rapporteret loft |
| `vision-model` | `qw/` |**Ubegrænset**| Multimodal (billeder) |### 🟣 GEMINI CLI (Google OAuth)

| Model | Præfiks | Grænse | Satsgrænse |
| -------------------------- | ------ | -------------------------- | ------------- |
| `gemini-3-flash-preview` | `gc/` |**180K tok/måned**+ 1K/dag | Månedlig nulstilling |
| `gemini-2.5-pro` | `gc/` | 180K/måned (delt pool) | Høj kvalitet |### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)

| Tier | Daglig grænse | Satsgrænse | Noter |
| ---------- | ------------ | ----------- | -------------------------------------------------------------- |
| Gratis (Dev) | Ingen token cap |**~40 RPM**| 70+ modeller; overgang til rene satsgrænser medio 2025 |

Populære gratis modeller: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`/, `deepseek-seek`/`### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)

| Tier | Daglig grænse | Satsgrænse | Noter |
| ---- | ------------------ | ---------------- | -------------------------------------------------- |
| Gratis |**1 mio. tokens/dag**| 60K TPM / 30 RPM | Verdens hurtigste LLM-slutning; nulstilles dagligt |

Tilgængelig gratis: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-destill-llama-70b`### 🔴 GROQ (Free API Key — console.groq.com)

| Tier | Daglig grænse | Satsgrænse | Noter |
| ---- | ------------- | ---------------- | ------------------------------------------ |
| Gratis |**14,4K RPD**| 30 RPM pr. model | Intet kreditkort; 429 på grænse, ikke opkrævet |

Tilgængelig gratis: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕

| Model | Præfiks | Daglig gratis kvote | Noter |
| ------------------------------ | ------ | ------------------ | ---------------------------- |
| `LongCat-Flash-Lite` | `lc/` |**50 mio. tokens**💥 | Største gratis kvote nogensinde |
| `LongCat-Flash-Chat` | `lc/` | 500.000 tokens | Multi-turn chat |
| `LongCat-Flash-Thinking` | `lc/` | 500.000 tokens | Begrundelse / CoT |
| `LongCat-Flash-Thinking-2601` | `lc/` | 500.000 tokens | Jan 2026 version |
| `LongCat-Flash-Omni-2603` | `lc/` | 500.000 tokens | Multimodal |

> 100 % gratis, mens du er i offentlig beta. Tilmeld dig på [longcat.chat](https://longcat.chat) med e-mail eller telefon. Nulstiller dagligt 00:00 UTC.### 🟢 POLLINATIONS AI (No API Key Required) 🆕

| Model | Præfiks | Satsgrænse | Udbyder bag |
| ---------- | ------ | ---------- | ------------------ |
| `openai` | `pol/` | 1 req/15s | GPT-5 |
| `claude` | `pol/` | 1 req/15s | Antropiske Claude |
| `gemini` | `pol/` | 1 req/15s | Google Gemini |
| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
| `mistral` | `pol/` | 1 req/15s | Mistral AI |

> ✨**Nul friktion:**Ingen tilmelding, ingen API-nøgle. Tilføj bestøvningsudbyderen med et tomt nøglefelt, og det virker med det samme.### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕

| Tier | Daglige neuroner | Tilsvarende brug | Noter |
| ---- | ------------- | ----------------------------------------------- | ---------------------------- |
| Gratis |**10.000**| ~150 LLM resp. / 500s lyd / 15K indlejringer | Global kant, 50+ modeller |

Populære gratis modeller: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (gratis lyd!), `@cf/qwen/qwen2.5-coder-15b-instruct`

> Kræver API-token + konto-id fra [dash.cloudflare.com](https://dash.cloudflare.com). Gem konto-id i udbyderindstillinger.### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕

| Tier | Gratis kvote | Beliggenhed | Noter |
| ---- | ------------- | ------------ | ----------------------------------- |
| Gratis |**1 mio. tokens**| 🇫🇷 Paris, EU | Intet kreditkort nødvendigt inden for grænserne |

Tilgængelig gratis: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`

> EU/GDPR-kompatibel. Hent API-nøgle på [console.scaleway.com](https://console.scaleway.com).

>**💡 Den ultimative gratis stak (11 udbydere, $0 for evigt):**
>
> ```
> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
> Qoder (hvis/) → kimi-k2-tænkning, qwen3-coder-plus, deepseek-r1 UNLIMITED
> LongCat Lite (lc/) → LongCat-Flash-Lite — 50 mio. tokens/dag 🔥
> Bestøvninger (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — ingen nøgle nødvendig
> Qwen (qw/) → qwen3-koder modeller UBEGRÆNSET
> Gemini (gemini/) → Gemini 2.5 Flash — 1.500 req/dag gratis
> Cloudflare AI (jf/) → 50+ modeller — 10K neuroner/dag
> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M gratis tokens (EU)
> Groq (groq/) → Lama/Gemma — 14,4K req/dag ultrahurtig
> NVIDIA NIM (nvidia/) → 70+ åbne modeller — 40 RPM for evigt
> Cerebras (cerebras/) → Lama/Qwen verdenshurtigste — 1M tok/dag
> ```## 🎙️ Free Transcription Combo

> Transskriber enhver lyd/video for**$0**— Deepgram-emner med $200 gratis, AssemblyAI $50 fallback, Groq Whisper som ubegrænset nødbackup.

| Udbyder | Gratis kreditter | Bedste model | Satsgrænse |
| ------------------ | ---------------------- | -------------------------------------------- | ---------------------------- |
|**Deepgram**|**$200 gratis**(tilmelding) | `nova-3` — bedste nøjagtighed, 30+ sprog | Ingen RPM-grænse på gratis kreditter |
| 🔵**AssemblyAI**|**$50 gratis**(tilmelding) | `universal-3-pro` — kapitler, følelser, PII | Ingen RPM-grænse på gratis kreditter |
| 🔴**Groq**|**Gratis for evigt**| `whisper-large-v3` — OpenAI Whisper | 30 RPM (hastighedsbegrænset) |

**Foreslået kombination i `/dashboard/combos`:**```
Name: free-transcription
Strategy: Priority
Nodes:
  [1] deepgram/nova-3          → uses $200 free first
  [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
  [3] groq/whisper-large-v3    → free forever, emergency fallback

Derefter i /dashboard/media → fanenTransskription: upload en lyd- eller videofil → vælg dit kombinationsslutpunkt → få transskription i understøttede formater.## 💡 Key Features

OmniRoute v2.0 er bygget som en operationel platform, ikke kun en relæ-proxy.### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)

Funktion Hvad det gør
Grok-4 Fast Family xAI-modeller til $0,20/$0,50/M — benchmarked 1143ms (30 % hurtigere end Gemini 2,5 Flash)
🧠GLM-5 via Z.AI 128K output kontekst, $0,5/1M — nyeste flagskib fra GLM-familien
🔮MiniMax M2.5 Begrundelse + agentopgaver til $0,30/1M — betydelig opgradering fra M2.1
🎯værktøj Calling Flag per model "ToolCalling" pr. model: sand/falsk i registreringsdatabasen — AutoCombo springer ikke-værktøjskompatible modeller over
🌍Flersproget hensigtsdetektion PT/ZH/ES/AR nøgleord i AutoCombo scoring — bedre modelvalg for ikke-engelsk indhold
📊Benchmark-drevne fallbacks Ægte p95-forsinkelse fra live-anmodninger feeds combo scoring — AutoCombo lærer af faktiske data
🔁Anmod om deduplikation Indholdshash-baseret dedup-vindue — multi-agent sikker, forhindrer duplikerede debiteringer
🔌Strategi, der kan tilsluttes router Udvidelig RouterStrategy-grænseflade — tilføj brugerdefineret routinglogik som plugins ### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
Funktion Hvad det gør
🎮Model Legeplads Dashboard-side for at teste enhver model direkte — udbyder/model/slutpunktsvælgere, Monaco Editor, streaming, afbrydelse, timing
🔏CLI Fingerprint Matching Bestilling af header/body pr. udbyder for at matche native CLI-signaturer — skift pr. udbyder i Indstillinger > Sikkerhed.Din proxy-IP er bevaret
🤝ACP Support (Agent Client Protocol) CLI-agentopdagelse (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 mere), procesopstart, /api/acp/agents slutpunkt
🤖ACP Agents Dashboard Fejlfinding Agenter-side — gitter med 14 agenter med installationsstatus, version, brugerdefineret agentformular til ethvert CLI-værktøj.OpenCode-brugere får en "Download opencode.json"-knap, der automatisk genererer en klar-til-brug-konfiguration med alle tilgængelige modeller.
🔧Brugerdefineret model apiFormat Routing Brugerdefinerede modeller med apiFormat: "responses" rutes nu korrekt til Responses API-oversætteren
🏢Codex Workspace Isolation Flere Codex-arbejdsområder pr. e-mail — OAuth adskiller forbindelser korrekt efter arbejdsområde-id
🔄Automatisk opdatering af elektroner Desktop-app søger efter opdateringer + automatisk installation ved genstart ### 🤖 Agent & Protocol Operations (v2.0)
Funktion Hvad det gør
🔧MCP-server (25 værktøjer) IDE/agent værktøjer via 3 transporter: stdio, SSE (/api/mcp/sse), Streamable HTTP (/api/mcp/stream). 18 kerner + 3 hukommelse + 4 færdighedsværktøjer
🤝A2A-server (JSON-RPC + SSE) Agent-til-agent opgaveudførelse med synkronisering og streaming flows
🧭Konsoliderede slutpunkter-side Administrationsside med faner med Endpoint Proxy, MCP, A2A og API Endpoints faner
🎚️Tjenesteaktiver/deaktiver skifter ON/OFF-kontakter til MCP og A2A med fastholdelse af indstillinger (standard: OFF)
🛰️MCP Runtime Heartbeat Reel processtatus (pid, oppetid, hjerteslagsalder, transport, omfangstilstand)
📋MCP Audit Trail Filtrerbare revisionslogfiler med succes/fejl og nøgletilskrivning
🔐MCP Scope Enforcement 10 granulære omfangstilladelser til kontrolleret værktøjsadgang
📡A2A Task Lifecycle Management Liste/filtrere opgaver, inspicere hændelser/artefakter, annullere kørende opgaver
📋Agent Card Discovery /.well-known/agent.json til klient auto-discovery
🧪Protokol E2E testsele Ægte MCP SDK + A2A klient flows i test:protocols:e2e
⚙️Driftskontrol Switch combo, påfør elasticitetsprofiler, nulstil afbrydere fra én kontrolflade ### 🧠 Routing & Intelligence
Funktion Hvad det gør
🎯Smart 4-lags fallback Auto-rute: Abonnement → API-nøgle → Billig → Gratis
📊Kvotesporing i realtid Live token count + nulstil nedtælling pr. udbyder
🔄Formatoversættelse OpenAI ↔ Claude ↔ Gemini ↔ Svar med skemasikre konverteringer
👥Multi-Account Support Flere konti pr. udbyder med intelligent valg
🔄Automatisk token-opdatering OAuth-tokens opdateres automatisk med genforsøg
🎨Tilpassede kombinationer 9 balanceringsstrategier + fallback kædekontrol
🌐Wildcard-router udbyder/* dynamisk routing
🧠Tænker på budgetkontrol Grænser for gennemstrømning, automatisk, brugerdefineret og adaptiv ræsonnement
🔀Modelaliaser Indbygget + brugerdefineret model aliasing og migration sikkerhed
Baggrundsforringelse Send baggrundsopgaver med lav prioritet til billigere modeller
🧪Task-Aware Smart Routing Auto-vælg model efter indholdstype (kodning/vision/analyse/opsummering)
🔄A2A Agent Workflows Deterministisk FSM-orkestrator til stateful multi-step agent henrettelser
🔀Adaptiv Routing Dynamisk strategitilsidesættelse baseret på tokenvolumen og promptkompleksitet
🎲Udbyderdiversitet Shannon entropi-scoring balancerer auto-combo-trafikfordeling
💬System Prompt Injection Globale adfærdskontroller anvendes konsekvent
📄Responses API-kompatibilitet Fuld /v1/responses-understøttelse af Codex og avancerede agent-arbejdsgange ### 🎵 Multi-Modal APIs
Funktion Hvad det gør
🖼️Billedgenerering /v1/images/generations med sky og lokale backends
📐Indlejringer /v1/embeddings til søgning og RAG-rørledninger
🎤Lydtransskription /v1/audio/transcriptions — 7 udbydere (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-sprogdetektion, MP4/MP3/WAV-understøttelse
🔊Tekst-til-tale /v1/audio/speech — 10 udbydere (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) med korrekte fejlmeddelelser
🎬Videogenerering /v1/videos/generations (ComfyUI + SD WebUI-arbejdsgange)
🎵Music Generation /v1/music/generations (ComfyUI-arbejdsgange)
🛡️Moderationer /v1/moderations sikkerhedstjek
🔀Omrangering /v1/rerank for relevansscoring
🔍Websøgning🆕 /v1/search — 5 udbydere (Serper, Brave, Perplexity, Exa, Tavily), 6.500+ gratis/måned, auto-failover, cache ### 🛡️ Resilience, Security & Governance
Funktion Hvad det gør
🔌Maksimalafbrydere Pr. model tur/restitution med tærskelkontrol
🎯Endpoint-Aware-modeller Brugerdefinerede modeller erklærer understøttede slutpunkter + API-format
🛡️Anti-tordenbesætning Mutex + semaforbeskyttelse ved genforsøg/rate hændelser
🧠Semantisk + signaturcache Reduktion af omkostninger/latens med to cachelag
Anmod om idempotens Dobbelt beskyttelsesvindue
🔒TLS Fingerprint Spoofing Browserlignende TLS-fingeraftryk —reducerer botgenkendelse og kontoflaggning
🔏CLI Fingerprint Matching Matcher native CLI-anmodningssignaturer —reducerer forbudsrisiko, mens proxy-IP bevares
🌐IP-filtrering Tilladelsesliste/blokeringslistekontrol for udsatte implementeringer
📊Redigerbare satsgrænser Konfigurerbare grænser på globalt niveau/udbyderniveau med persistens
📉Graceful Nedbrydning Muligheder med flere lag, der beskytter kerne-gateway-operationer
📜Config Audit Trail Diff-baseret ændringssporing forhindrer driftsafdrift med simple rollbacks
Provider Health Sync Proaktiv overvågning af tokens udløb, der udløser advarsler før godkendelsesfejl
🚪Auto-deaktiver forbudte konti Driftsafbryder forsegling permanent blokerede token-konti automatisk
🔑API Key Management + Scoping Sikker nøgleudstedelse/rotation og model-/leverandørkontrol
👁️Scoped API Key Reveal🆕 Opt-in gendannelse af API-nøgler via ALLOW_API_KEY_REVEAL
🛡️Beskyttet /modeller Valgfri godkendelse og udbyderskjul til modelkatalog ### 📊 Observability & Analytics
Funktion Hvad det gør
📝Forespørgsel + Proxylogning Fuld anmodning/svar og proxy-logning
📉Streamede detaljerede logfiler🆕 Rekonstruerer SSE-nyttelaststrømme rent ind i brugergrænsefladen
📋Unified Logs Dashboard Anmodning, proxy, revision og konsolvisning på én side
🔍Anmod om telemetri p50/p95/p99 latens og anmodningssporing
🏥Sundhedskontrolpanel Oppetid, breaker-tilstande, lockouts, cache-statistik
💰Omkostningssporing Budgetkontrol og prisfastsættelse pr. model
📈Analytiske visualiseringer Model-/udbyderbrugsindsigt og trendvisninger
🧪Evalueringsramme Gyldne sæt-test med konfigurerbare matchstrategier
📡Live Diagnostics🆕 Semantisk cache-bypass for nøjagtig combo live-test ### ☁️ Deployment & Platform
Funktion Hvad det gør
🌐Deploy hvor som helst Localhost, VPS, Docker, Cloud-miljøer
🚇Cloudflare Tunnel🆕 Hurtig tunnel-integration med et enkelt klik fra dashboardet
🔑API-nøglemodelfiltrering Native /v1/models-svar filtreret via tildelte bærerkontekstroller
Smart Cache Bypass Konfigurerbar TTL-heuristik og tvungen genhentningskontroller
🔄Sikkerhedskopiering/gendannelse Eksport/import og gendannelsesstrømme
🧙Onboarding Wizard Første kørsel guidet opsætning
🔧CLI Tools Dashboard Et-klik opsætning til populære kodningsværktøjer
🎮Model Legeplads Test enhver udbyder/model/slutpunkt fra dashboardet
🔏CLI Fingerprint Toggle Fingeraftryksmatchning pr. udbyder i Indstillinger > Sikkerhed
🌐i18n (30 sprog) Fuldt dashboard + understøttelse af docs-sprog med RTL-dækning
🧹Ryd alle modeller Rydning af modelliste med ét klik i udbyderoplysninger
👁️Sidebjælkekontrol🆕 Skjul komponenter og integrationer fra Udseendeindstillinger
📋Udgaveskabeloner Standardiserede GitHub-skabeloner til fejl og funktioner
📂Tilpasset datakatalog DATA_DIR tilsidesættelse for lagerplacering ### Feature Deep Dive

Smart fallback with practical cost control

Combo: "my-coding-stack"
  1. cc/claude-opus-4-6
  2. nvidia/llama-3.3-70b
  3. glm/glm-4.7
  4. if/kimi-k2-thinking

Når kvote, sats eller sundhed svigter, flytter OmniRoute automatisk til den næste kandidat uden manuel skift.#### Protocol management that is visible and operable

  • MCP + A2A kan findes i brugergrænsefladen og dokumenter (ikke skjult)
  • Protokolstatus API'er afslører live operationelle data (/api/mcp/*, /api/a2a/*)
  • Dashboards inkluderer handlinger for dag-2 operationer (kombinationsskift, nulstilling af breaker, annullering af opgave)#### Translator + validation workflow

Oversætterområdet omfatter:

-Legeplads: anmod om transformationstjek -Chattester: fuld anmodning/svar tur/retur -Testbænk: flere sager på én gang -Live Monitor: trafikvisning i realtid

Plus protokolvalidering med rigtige klienter via npm run test:protocols:e2e.

📖MCP Server README— Værktøjsreference, IDE-konfigurationer og klienteksempler

📖A2A Server README— Færdigheder, JSON-RPC-metoder, streaming og opgavelivscyklus## 🧪 Evaluations (Evals)

OmniRoute inkluderer en indbygget evalueringsramme til at teste LLM-svarkvaliteten mod et gyldent sæt. Få adgang til det viaAnalytics → Evalsi dashboardet.### Built-in Golden Set

Det forudindlæste "OmniRoute Golden Set" indeholder testcases til:

  • Hilsen, matematik, geografi, kodegenerering
  • JSON format compliance, oversættelse, markdown generation
  • Sikkerhedsafvisning (skadeligt indhold), optælling, boolsk logik### Evaluation Strategies
Strategi Beskrivelse Eksempel
'præcis' Output skal matche nøjagtigt "4"
indeholder Output skal indeholde understreng (uafhængig af store og små bogstaver) "Paris"
"regex" Output skal matche regex-mønster "1.*2.*3"
brugerdefineret Brugerdefineret JS-funktion returnerer sand/falsk (output) => output.længde > 10 ---

📖 Setup Guide

Protocol Setup (MCP + A2A)

🧩 MCP-opsætning (modelkontekstprotokol)

Start MCP-transport i stdio-tilstand:```bash omniroute --mcp


Anbefalet valideringsflow:

1. Tilslut din MCP-klient via stdio.
2. Kør `omniroute_get_health`.
3. Kør `omniroute_list_combos`.
4. Åbn `/dashboard/mcp` for at bekræfte hjerteslag, aktivitet og audit.

Nyttige API'er til automatisering:

- `GET /api/mcp/status`
- `GET /api/mcp/tools`
- `GET /api/mcp/audit`
- `GET /api/mcp/audit/stats`</details>

<detaljer>
<summary><b>🤝 A2A-opsætning (Agent2Agent)</b></summary>

Opdag agenten:```bash
curl http://localhost:20128/.well-known/agent.json

Send en opgave:```bash curl -X POST http://localhost:20128/a2a
-H 'content-type: application/json'
-d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'


Administrer livscyklus:

- `GET /api/a2a/status`
- `GET /api/a2a/opgaver`
- `GET /api/a2a/tasks/:id`
- `POST /api/a2a/tasks/:id/cancel`

Operationel UI:

- `/dashboard/a2a` til observerbarhed for opgave/tilstand/strøm og røghandlinger</details>

<detaljer>
<resumé><b>🧪 End-to-end protokolvalidering</b></summary>

Valider begge protokoller med rigtige klienter:```bash
npm run test:protocols:e2e

Dette verificerer:

  • MCP SDK-klient forbinde/liste/opkald
  • A2A opdagelse/send/stream/hent/annuller
  • Krydstjek data i MCP-audit og A2A opgavestyring API'er
💳 Abonnementsudbydere### Claude Code (Pro/Max)
Dashboard → Providers → Connect Claude Code
→ OAuth login → Auto token refresh
→ 5-hour + weekly quota tracking

Models:
  cc/claude-opus-4-6
  cc/claude-sonnet-4-5-20250929
  cc/claude-haiku-4-5-20251001

**Prof tip:**Brug Opus til komplekse opgaver, Sonnet for hurtighed. OmniRoute sporer kvote pr. model!### OpenAI Codex (Plus/Pro)

Dashboard → Providers → Connect Codex
→ OAuth login (port 1455)
→ 5-hour + weekly reset

Models:
  cx/gpt-5.2-codex
  cx/gpt-5.1-codex-max

Codex Account Limit Management (5h + Weekly)

Hver Codex-konto har nu politikskift i Dashboard -> Udbydere:

  • 5h (ON/OFF): håndhæv politikken for 5-timers vinduestærskel.
  • Ugentligt (TIL/FRA): håndhæv politikken for tærskelværdi for ugentlige vinduer.
  • Tærskeladfærd: Når et aktiveret vindue når >=90 % brug, springes den konto over.
  • Rotationsadfærd: OmniRoute ruter automatisk til den næste kvalificerede Codex-konto.
  • Nulstil adfærd: Når udbyderens 'resetAt'-tid går, bliver kontoen automatisk kvalificeret igen.

Scenarier:

  • 5h ON + Weekly ON: Konto springes over, når et af vinduerne når tærsklen.
  • 5h OFF + Weekly ON: kun ugentlig brug kan blokere kontoen.
  • 5h ON + Ugentlig OFF: kun 5-timers brug kan blokere kontoen.
  • resetAt bestået: Kontoen går automatisk i rotation igen (ingen manuel genaktivering).### Gemini CLI (FREE 180K/month!)
Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
→ 180K completions/month + 1K/day

Models:
  gc/gemini-3-flash-preview
  gc/gemini-2.5-pro

**Bedste værdi:**Kæmpe gratis niveau! Brug dette før betalte niveauer.### GitHub Copilot

Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
→ Monthly reset (1st of month)

Models:
  gh/gpt-5
  gh/claude-4.5-sonnet
  gh/gemini-3.1-pro-preview
🔑 API-nøgleudbydere### NVIDIA NIM (FREE developer access — 70+ models)
  1. Tilmeld dig: build.nvidia.com
  2. Få gratis API-nøgle (1000 slutningskreditter inkluderet)
  3. Dashboard → Tilføj udbyder → NVIDIA NIM:
    • API-nøgle: nvapi-din-nøgle

Modeller:"nvidia/llama-3.3-70b-instruct", "nvidia/mistral-7b-instruct" og 50+ flere

**Prof tip:**OpenAI-kompatibel API — fungerer problemfrit med OmniRoutes formatoversættelse!### DeepSeek

  1. Tilmeld dig: platform.deepseek.com
  2. Hent API-nøgle
  3. Dashboard → Tilføj udbyder → DeepSeek

Modeller:deepseek/deepseek-chat, deepseek/deepseek-coder### Groq (Free Tier Available!)

  1. Tilmeld dig: console.groq.com
  2. Få API-nøgle (gratis niveau inkluderet)
  3. Dashboard → Tilføj udbyder → Groq

Modeller:groq/llama-3.3-70b, groq/mixtral-8x7b

**Prof tip:**Ultrahurtig inferens — bedst til realtidskodning!### OpenRouter (100+ Models)

  1. Tilmeld dig: openrouter.ai
  2. Hent API-nøgle
  3. Dashboard → Tilføj udbyder → OpenRouter

**Modeller:**Få adgang til mere end 100 modeller fra alle større udbydere via en enkelt API-nøgle.

Dashboard-adfærd:OpenRouter-modeller administreres fraTilgængelige modeller. Manuel tilføjelse, import og automatisk synkronisering opdaterer alle den samme liste.

💰 Billige udbydere (backup)### GLM-4.7 (Daily reset, $0.6/1M)
  1. Tilmeld dig: Zhipu AI
  2. Hent API-nøgle fra Coding Plan
  3. Dashboard → Tilføj API-nøgle:
    • Udbyder: glm
    • API-nøgle: din-nøgle

Brug:glm/glm-4.7

**Pro-tip:**Coding Plan tilbyder 3× kvote til 1/7 pris! Nulstil dagligt 10:00.### MiniMax M2.1 (5h reset, $0.20/1M)

  1. Tilmeld dig: MiniMax
  2. Hent API-nøgle
  3. Dashboard → Tilføj API-nøgle

Brug:minimax/MiniMax-M2.1

**Prof tip:**Billigste mulighed for lang sammenhæng (1M tokens)!### Kimi K2 ($9/month flat)

  1. Abonner: Moonshot AI
  2. Hent API-nøgle
  3. Dashboard → Tilføj API-nøgle

Brug:kimi/kimi-latest

**Prof tip:**Fast $9/måned for 10M tokens = $0,90/1M effektive omkostninger!

🆓 GRATIS udbydere (nødbackup)### Qoder (5 FREE models via OAuth)
Dashboard → Connect Qoder
→ Qoder OAuth login
→ Unlimited usage

Models:
  if/kimi-k2-thinking
  if/qwen3-coder-plus
  if/glm-4.7
  if/minimax-m2
  if/deepseek-r1

Qwen (4 FREE models via Device Code)

Dashboard → Connect Qwen
→ Device code authorization
→ Unlimited usage

Models:
  qw/qwen3-coder-plus
  qw/qwen3-coder-flash

Kiro (Claude FREE)

Dashboard → Connect Kiro
→ AWS Builder ID or Google/GitHub
→ Unlimited usage

Models:
  kr/claude-sonnet-4.5
  kr/claude-haiku-4.5
🎨 Opret kombinationer### Example 1: Maximize Subscription → Cheap Backup
Dashboard → Combos → Create New

Name: premium-coding
Models:
  1. cc/claude-opus-4-6 (Subscription primary)
  2. glm/glm-4.7 (Cheap backup, $0.6/1M)
  3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)

Use in CLI: premium-coding

Example 2: Free-Only (Zero Cost)

Name: free-combo
Models:
  1. gc/gemini-3-flash-preview (180K free/month)
  2. if/kimi-k2-thinking (unlimited)
  3. qw/qwen3-coder-plus (unlimited)

Cost: $0 forever!
🔧 CLI-integration### Cursor IDE
Settings → Models → Advanced:
  OpenAI API Base URL: http://localhost:20128/v1
  OpenAI API Key: [from OmniRoute dashboard]
  Model: cc/claude-opus-4-6

Claude Code

Brug sidenCLI Toolsi dashboardet til konfiguration med et enkelt klik, eller rediger ~/.claude/settings.json manuelt.### Codex CLI

export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"

codex "your prompt"

OpenClaw

Mulighed 1 — Dashboard (anbefalet):``` Dashboard → CLI Tools → OpenClaw → Select Model → Apply


**Mulighed 2 — Manuel:**Rediger `~/.openclaw/openclaw.json`:```json
{
  "models": {
    "providers": {
      "omniroute": {
        "baseUrl": "http://127.0.0.1:20128/v1",
        "apiKey": "sk_omniroute",
        "api": "openai-completions"
      }
    }
  }
}

**Bemærk:**OpenClaw fungerer kun med lokale OmniRoute. Brug 127.0.0.1 i stedet for localhost for at undgå problemer med IPv6-opløsning.### Cline / Continue / RooCode

Settings → API Configuration:
  Provider: OpenAI Compatible
  Base URL: http://localhost:20128/v1
  API Key: [from OmniRoute dashboard]
  Model: if/kimi-k2-thinking

OpenCode

**Trin 1:**Tilføj OmniRoute som en tilpasset udbyder:```bash opencode /connect

Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key


**Trin 2:**Opret/rediger `opencode.json` i dit projektrod:```json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "omniroute": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "OmniRoute",
      "options": {
        "baseURL": "http://localhost:20128/v1"
      },
      "models": {
        "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
        "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
        "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
      }
    }
  }
}

**Trin 3:**Vælg modellen i OpenCode:```bash /models

Select any OmniRoute model from the list


>**Tip:**Tilføj en hvilken som helst model, der er tilgængelig i dit OmniRoute `/v1/models` slutpunkt til sektionen `modeller`. Brug formatet `provider/model-id` fra dit OmniRoute-dashboard.</details>

---

## Fejlfinding

<detaljer>
<summary><b>Klik for at udvide fejlfindingsvejledningen</b></summary>

**"Sprogmodellen leverede ikke beskeder"**

- Udbyderkvote opbrugt → Tjek dashboardkvotesporing
- Løsning: Brug combo fallback eller skift til et billigere niveau

**Satsbegrænsende**

- Abonnementskontingent ude → Fallback til GLM/MiniMax
- Tilføj combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`

**OAuth-token er udløbet**

- Automatisk genopfrisket af OmniRoute
- Hvis problemerne fortsætter: Dashboard → Udbyder → Genopret forbindelse

**Høje omkostninger**

- Tjek brugsstatistik i Dashboard → Omkostninger
- Skift primær model til GLM/MiniMax
- Brug gratis niveau (Gemini CLI, Qoder) til ikke-kritiske opgaver

**Dashboard/API-porte er forkerte**

- `PORT` er den kanoniske basisport (og API-port som standard)
- `API_PORT` tilsidesætter kun OpenAI-kompatibel API-lytter
- `DASHBOARD_PORT` tilsidesætter kun dashboard/Next.js-lytter
- Indstil `NEXT_PUBLIC_BASE_URL` til dit dashboard/offentlige URL (til OAuth-tilbagekald)

**Skysynkroniseringsfejl**

- Bekræft, at `BASE_URL` peger på din kørende instans
- Bekræft `CLOUD_URL` peger på dit forventede cloud-slutpunkt
- Hold `NEXT_PUBLIC_*`-værdier på linje med værdier på serversiden

**Første login virker ikke**

- Tjek `INITIAL_PASSWORD` i `.env`
- Hvis den ikke er indstillet, er reserveadgangskoden "123456".

**Ingen anmodningslogfiler**

- Anmodningsartefakter skrives til `DATA_DIR/call_logs/` som én JSON-fil pr. anmodning
- Aktiver pipeline capture fra Dashboard → Logs → Request Logs, hvis du har brug for detaljerede per-stage payloads
- Indstil `APP_LOG_TO_FILE=true`, hvis du også vil have applikationskonsollogfiler i `logs/application/app.log`
- Juster `APP_LOG_MAX_FILE_SIZE`, `APP_LOG_RETENTION_DAYS`, `APP_LOG_MAX_FILES` og `CALL_LOG_MAX_ENTRIES` efter behov

**Forbindelsestest viser "Ugyldig" for OpenAI-kompatible udbydere**

- Mange udbydere afslører ikke et `/models` slutpunkt
- OmniRoute v1.0.6+ inkluderer fallback-validering via chatafslutninger
- Sørg for, at basis-URL'en indeholder `/v1`-suffiks### 🔐 OAuth on a Remote Server

<a name="oauth-on-a-remote-server"></a>
<a name="oauth-em-server-remoto"></a>

>**⚠️ Vigtigt for brugere, der kører OmniRoute på en VPS, Docker eller enhver ekstern server**#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?

**Antigravity**og**Gemini CLI**-udbyderne bruger**Google OAuth 2.0**. Google kræver, at `redirect_uri` i OAuth-flowet nøjagtigt matcher en af de forudregistrerede URI'er i appens Google Cloud Console.

OAuth-legitimationsoplysningerne, der er bundtet i OmniRoute, er kun registreret**for 'localhost'**. Når du får adgang til OmniRoute på en ekstern server (f.eks. `https://omniroute.myserver.com`), afviser Google godkendelsen med:```
Error 400: redirect_uri_mismatch

Solution: Configure your own OAuth credentials

Du skal oprette etOAuth 2.0 Client IDi Google Cloud Console med din servers URI.#### Step-by-step

1. Åbn Google Cloud Console

Gå til: https://console.cloud.google.com/apis/credentials

2. Opret et nyt OAuth 2.0-klient-id

  • Klik på**"+ Opret legitimationsoplysninger""OAuth-klient-id"**
  • Ansøgningstype:"Webapplikation"
  • Navn: alt, hvad du kan lide (f.eks. OmniRoute Remote)

3. Tilføj autoriserede omdirigerings-URI'er

I feltet**"Autoriserede omdirigerings-URI'er"**skal du tilføje:``` https://your-server.com/callback


> Erstat `din-server.com` med din servers domæne eller IP (medtag porten, hvis det er nødvendigt, f.eks. `http://45.33.32.156:20128/callback`).

**4. Gem og kopier legitimationsoplysningerne**

Efter oprettelse vil Google vise**klient-id**og**klienthemmelighed**.

**5. Indstil miljøvariabler**

I dine `.env` (eller Docker-miljøvariabler):```bash
# For Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret

# For Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret

6. Genstart OmniRoute```bash

npm:

npm run dev

Docker:

docker restart omniroute


**7. Prøv at oprette forbindelse igen**

Dashboard → Udbydere → Antigravity (eller Gemini CLI) → OAuth

Google vil nu omdirigere korrekt til `https://din-server.com/callback`.---

#### Temporary workaround (without custom credentials)

Hvis du ikke vil konfigurere dine egne legitimationsoplysninger lige nu, kan du stadig bruge det**manuelle URL-flow**:

1. OmniRoute åbner Googles autorisations-URL
2. Efter godkendelse forsøger Google at omdirigere til `localhost` (som fejler på fjernserveren)
3.**Kopiér den fulde URL**fra din browsers adresselinje (også selvom siden ikke indlæses)
4. Indsæt denne URL i feltet vist i OmniRoute-forbindelsesmodal
5. Klik på**"Forbind"**

> Dette virker, fordi autorisationskoden i URL'en er gyldig, uanset om omdirigeringssiden er indlæst.---

<detaljer>
<summary><b>🇧🇷 Versão em Português</b></summary>#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?

Os testedores**Antigravity**og**Gemini CLI**usam**Google OAuth 2.0**for autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja**exatamente**uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.

Som credenciais OAuth embutidas no OmniRoute estão cadastradas**apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google afviser en autenticação com:```
Error 400: redirect_uri_mismatch

Solução: Configure suas próprias credenciais OAuth

Você precisa criar umOAuth 2.0 Client IDingen Google Cloud Console med en URI, der udfører denne service.#### Passo a passo

1. Adgang til Google Cloud Console

Abra: https://console.cloud.google.com/apis/credentials

2. Crie um novo OAuth 2.0 Client ID

  • Klik på dem**"+ Opret legitimationsoplysninger""OAuth-klient-id"**
  • Tipo de aplicativo:"Webapplikation"
  • Navn: escolha qualquer nome (eks.: OmniRoute Remote)

3. Adicione som autoriseret omdirigerings-URI

Ingen campo**"Autoriseret omdirigerings-URI'er"**, adicione:``` https://seu-servidor.com/callback


> Substitua `seu-servidor.com` pelo domínio eller IP do seu servidor (inklusive en porta se necessário, f.eks: `http://45.33.32.156:20128/callback`).

**4. Salve e copy as credenciais**

Após criar, o Google mostrará o**Client ID**e o**Client Secret**.

**5. Konfigurer som variáveis de ambiente**

No seu `.env` (ou nas variáveis de ambiente do Docker):```bash
# Para Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret

# Para Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret

6. Reinicie o OmniRoute```bash

Se usando npm:

npm run dev

Se usando Docker:

docker restart omniroute


**7. Tente conectar novamente**

Dashboard → Udbydere → Antigravity (ou Gemini CLI) → OAuth

Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` og autenticação funcionará.---

#### Workaround temporário (sem configurar credenciais próprias)

Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo**manual de URL**:

1. O OmniRoute abrirá en URL de autorização til Google
2. Após você autorizar, o Google tentará redirecionar for `localhost` (que falha no servidor remoto)
3.**Kopier en URL komplet**da barra de endereço do sin browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
5. Klik på**"Forbind"**

> Este workaround funciona porque or código de autorização na URL é válido independente do redirect ter carregado or não.</details>

---

</details>

## 🛠️ Tech Stack

<detaljer>
<summary><b>Klik for at udvide tekniske stakdetaljer</b></summary>

-**Runtime**: Node.js 1822 LTS (⚠️ Node.js 24+ er**ikke understøttet**— "better-sqlite3" native binære filer er inkompatible)
-**Sprog**: TypeScript 5.9 —**100 % TypeScript**på tværs af `src/` og `open-sse/` (nul `enhver` i kernemoduler siden v2.0)
-**Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-**Database**: LowDB (JSON) + SQLite (domænetilstand + proxylogfiler + MCP-revision + routingbeslutninger)
-**Skemaer**: Zod (MCP-værktøj I/O-validering, API-kontrakter)
-**Protokoller**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
-**Streaming**: Server-sendte hændelser (SSE)
-**Auth**: OAuth 2.0 (PKCE) + JWT + API-nøgler + MCP Scoped Authorization
-**Test**: Node.js testløber + Vitest (900+ tests inklusive enhed, integration, E2E)
-**CI/CD**: GitHub-handlinger (automatisk npm-udgivelse + Docker Hub ved udgivelse)
-**Websted**: [omniroute.online](https://omniroute.online)
-**Pakke**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-**Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-**Resiliens**: Circuit breaker, eksponentiel backoff, anti-tordenbesætning, TLS spoofing, auto-combo selvhelbredelse</details>

---

## Dokumentation

| Dokument | Beskrivelse |
| ------------------------------------------------------ | ---------------------------------------------------------- |
| [Brugervejledning](docs/USER_GUIDE.md) | Udbydere, kombinationer, CLI-integration, implementering |
| [API-reference](docs/API_REFERENCE.md) | Alle endepunkter med eksempler |
| [MCP-server](open-sse/mcp-server/README.md) | 16 MCP-værktøjer, IDE-konfigurationer, Python/TS/Go-klienter |
| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protokol, færdigheder, streaming, opgavestyring |
| [Auto-Combo Engine](docs/auto-combo.md) | 6-faktor scoring, tilstandspakker, selvhelbredende |
| [Fejlfinding](docs/TROUBLESHOOTING.md) | Almindelige problemer og løsninger |
| [Arkitektur](docs/ARCHITECTURE.md) | Systemarkitektur og indre |
| [Bidrager](BIDRØRENDE.md) | Udviklingsopsætning og retningslinjer |
| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-specifikation |
| [Sikkerhedspolitik](SECURITY.md) | Sårbarhedsrapportering og sikkerhedspraksis |
| [VM-implementering](docs/VM_DEPLOYMENT_GUIDE.md) | Komplet guide: VM + nginx + Cloudflare opsætning |
| [Feature Gallery](docs/FEATURES.md) | Visuel dashboard-rundvisning med skærmbilleder |
| [Udgivelsestjekliste](docs/RELEASE_CHECKLIST.md) | Pre-release valideringstrin |---

## 🗺️ Roadmap

OmniRoute har**210+ funktioner planlagt**på tværs af flere udviklingsfaser. Her er nøgleområderne:

| Kategori | Planlagte funktioner | Højdepunkter |
| ------------------------------ | ---------------- | ---------------------------------------------------------------------------------------------- |
| 🧠**Routing & intelligens**| 25+ | Routing med laveste latens, tag-baseret routing, kvote preflight, valg af P2C-konto |
| 🔒**Sikkerhed og overholdelse**| 20+ | SSRF-hærdning, tilsløring af legitimationsoplysninger, hastighedsgrænse pr. slutpunkt, styringsnøgleomfang |
| 📊**Observabilitet**| 15+ | OpenTelemetry-integration, kvoteovervågning i realtid, omkostningssporing pr. model |
| 🔄**Udbyderintegrationer**| 20+ | Dynamisk modelregistrering, udbydernedkøling, multi-konto Codex, Copilot-kvoteparsing |
| ⚡**Ydeevne**| 15+ | Dobbelt cachelag, promptcache, svarcache, streaming keepalive, batch API |
| 🌐**Økosystem**| 10+ | WebSocket API, config hot-reload, distribueret config butik, kommerciel tilstand |### 🔜 Coming Soon

- 🔗**OpenCode-integration**— Native udbyderunderstøttelse af OpenCode AI-kodnings-IDE
- 🔗**TRAE-integration**— Fuld understøttelse af TRAE AI-udviklingsrammen
- 📦**Batch API**— Asynkron batchbehandling til masseanmodninger
- 🎯**Tag-baseret Routing**— Ruteanmodninger baseret på tilpassede tags og metadata
- 💰**Laveste omkostningsstrategi**— Vælg automatisk den billigste tilgængelige udbyder

> 📝 Fuld funktionsspecifikationer tilgængelige i [`docs/new-features/`](docs/new-features/) (217 detaljerede specifikationer)---

## 👥 Contributors

[![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)

### How to Contribute

1. Fork depotet
2. Opret din feature-gren (`git checkout -b feature/amazing-feature`)
3. Bekræft dine ændringer (`git commit -m 'Tilføj fantastisk funktion'`)
4. Skub til grenen ("git push origin feature/amazing-feature")
5. Åbn en pull-anmodning

Se [CONTRIBUTING.md](CONTRIBUTING.md) for detaljerede retningslinjer.### Releasing a New Version

```bash
# Create a release — npm publish happens automatically
gh release create v2.0.0 --title "v2.0.0" --generate-notes

📊 Star History

Stargazers over time

Stargazers over time

🙏 Acknowledgments

Særlig tak til**9routerafdecolua**— det originale projekt, der inspirerede denne gaffel. OmniRoute bygger på det utrolige fundament med yderligere funktioner, multimodale API'er og en fuld TypeScript-omskrivning.

Særlig tak til**CLIProxyAPI**— den originale Go-implementering, der inspirerede denne JavaScript-port.---

Licens

MIT-licens - se LICENS for detaljer.---

Built with ❤️ for developers who code 24/7
omniroute.online