# 🚀 OmniRoute — Den gratis AI-gateway
**Oprettet af [Diego Souza](https://github.com/diegosouzapw)**
## 💰 ~1,62 mia. tokens / måned på tværs af tredjepartstjenesters gratisniveauer
> **Medbring dine egne udbyderkonti.** Dette er et estimeret samlet tal på tværs af separat kvalificerede gratisniveauer hos tredjeparter, ikke en token-tildeling fra OmniRoute. Tilmeld dig, indhent legitimationsoplysninger, hvor det kræves, og tilslut de udbydere, du kan bruge; hver udbyder styrer sine grænser, sin tilgængelighed og sine vilkår.
>
> Det er besværligt at stable gratisniveauer manuelt — dusinvis af SDK'er, dusinvis af hastighedsgrænser og ingen idé om, hvor meget du faktisk har. OmniRoute katalogiserer **465 poster på gratisniveauer fordelt på 34 tilbagevendende puljenøgler** og beregner hovedtallet ud fra de **17 puljer med et offentliggjort positivt månedligt budget plus fem Groq-grænser pr. model**, deduplikeret efter delt pulje. Kvoter, der først åbnes efter et regionalt identitetstjek (i dag: ModelScope), vises separat, +~6 mio. efter regional identitetsbekræftelse, og medregnes aldrig i hovedtallet. Resultatet forbliver synligt på dashboardet (`/dashboard/free-tiers`).
> Animeret oversigt over den aktuelle side `/dashboard/free-tiers`. Fuld metode (puljededuplikering, kreditniveauer, udbydervilkår): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Disse tal genrevideres hver anden uge mod det aktuelle katalog og **bevæger sig i begge retninger** — en udbyder afslutter et gratisniveau, og tallet falder; en ny kommer til, og det stiger. Vi offentliggør det, kataloget faktisk beregner, aldrig et oprundet best case-scenarie.
⭐ Giv repositoriet en stjerne, hvis OMNIROUTE har hjulpet dig med at spare penge og gøre dit arbejde lettere.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Bliv en del af fællesskabet
**👋 Følg vedligeholderen — få nye udbydere, udgivelser og tips først:**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**Spørgsmål, tips om udbydere, roadmap og support → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasilien](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portal](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Gatewayen vokser fortsat
## 🆓 Installer, tilslut en udbyder, og rout derefter gennem ét endpoint
```bash
# Når du har tilsluttet en udbyder, skal du kopiere din OmniRoute-nøgle fra Dashboard → Endpoints:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto` kræver en kvalificeret route. En ny installation kan have ingen kvalificerede nøglefri mål, og en nøglefri udbyder kan afvise tredjepartsklienter. Udbydere markeret med `tos: avoid`, herunder Kiro, udelukkes som standard fra automatisk routing; tilslutning af en konto tilsidesætter ikke denne indstilling. Se [vejledningen til gratis niveauer](docs/getting-started/FREE-TIERS-GUIDE.md), før du vælger en udbyder.📦 Kopiér-og-indsæt-quickstart-scripts til **Python, Node.js, PHP og cURL** → [`examples/quickstart/`](examples/quickstart/)
# 💥 Løftet
# 🤔 Hvorfor OmniRoute?
## 🤝 Støttet af vores open source-venner
> **Vil du være med som open source-ven?** Det er virksomhederne, der støtter open source og hjælper med at holde OmniRoute i gang — og vi fortæller offentligt, hvor hvert eneste token, de giver os, bliver brugt. Kontakt os: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Tak til Kimi (Moonshot AI), vores stiftende open source-ven, for at støtte dette projekt! Kimi er AI-laboratoriet bag K2- og K3-modelfamilierne med åbne vægte — Kimi K3 leverer et kontekstvindue på 1 mio. tokens, indbygget vision og kodning på højeste niveau til en brøkdel af priserne på lukkede modeller og fungerer direkte med Claude Code, Codex og alle de kodningsværktøjer, som OmniRoute understøtter.
Det muliggør Kimis støtte: Kimis API-kreditter driver OmniRoutes AI-validerede udgivelsespipeline — fasen mergevalidering drevet af Kimi K3, som gennemgår hver pull request, før den udgives — samt den daglige funktionsudvikling. Førsteklasses understøttelse af Kimi leveres via begge muligheder: den direkte Kimi API (kimi-k3) og Kimi Code-abonnementet til kodning (OAuth og API-nøgle). OmniRoute er også det første brasilianske open source-projekt i Kimis støtteprogram. Få en Kimi API-nøgle med 15 % ekstra kreditter →
Cheaper Inference cheaperinference.com
Tak til Cheaper Inference, en af OmniRoutes open source-venner, for at støtte dette projekt! Cheaper Inference er en gateway rangeret efter pris, som videresælger 42 banebrydende modeller — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok og MiniMax — via ét OpenAI-kompatibelt endpoint og videresender hver anmodning til den billigste kvalificerede udbyder uden nogensinde at opkræve mere end modelproducentens listepris.
Førsteklasses understøttelse i OmniRoute: Chat Completions, det indbyggede /v1/responses-endpoint, vision, værktøjskald og 3 billedmodeller (grok-imagine, nano-banana-pro, nano-banana-2, tilgængelige som cheaperinference/<model>). Få en API-nøgle →
Links mærket med aff=omniroute er partnerlinks. De finansierer projektet uden ekstra omkostninger for dig. 🎟️ Partnerkampagner — gratis tilmeldingskuponer fra udbydere, der ikke sponsorerer os (klik for at udvide)Dette afsnit er kun til henvisnings-/kuponkoder. Sponsorerede partnerskaber findes under 🤝 Støttet af vores open source-venner ovenfor. OmniRoute har intet sponsorat eller partnerskab med de udbydere, der er anført her — det er offentlige kuponer, som alle kan bruge.
AgentRouter agentrouter.org
AgentRouter — partnertilmelding · $100 i gratis kreditter ved tilmelding (gratis server, forvent højere latenstid — bedst til test, ikke produktion). Førsteklasses understøttelse i OmniRoute siden v3.8.50: Chat Completions, det Anthropic-kompatible wire-format og den OpenAI-kompatible sti. Tilgængelige modeller omfatter claude-opus-4-8, claude-opus-5, gpt-5.6-sol og flere. Få dine $100 →
⚠️ Partnerlink — OmniRoute har intet sponsorat eller partnerskab med denne udbyder.
Kender du en anden udbyder med en generøs gratis tilmeldingskupon, som gavner OmniRoute-brugere? Opret en issue, så tilføjer vi den her.
## 🎯 Combos — Flagskibet
> En **combo** er en kæde af modeller, som OmniRoute router på tværs af **automatisk**. Hvis kvoten slipper op, en udbyder fejler, eller omkostningerne stiger kraftigt, kan comboen gå videre til den næste kvalificerede og velfungerende model. 🛡️
### ⚡ Nul konfiguration — brug blot `auto`
Ingen combo skal oprettes. Indstil din model til `auto` (eller en variant), så bygger OmniRoute en virtuel combo ud fra dine tilsluttede udbydere, som vurderes løbende:
Model-id
Hvad den optimerer til
auto
🎯 Balanceret standardvalg (LKGP — holder sig til din senest velfungerende udbyder)
auto/coding
🧑💻 Kvalitetsfokuserede vægte til kodegenerering
auto/fast
⚡ Laveste latenstid først
auto/cheap
💰 Billigste pr. token først
auto/subscription
🎟️ Kun den abonnementskvote, du allerede betaler for — lukker ved fejl og bruger aldrig et fakturerbart alternativ (vejledning)
auto/thrifty
🪜 Abonnementskvoten først, derefter ét trin ad gangen til de billigste betalingsmuligheder — tilbage på abonnementet, når det nulstilles (vejledning)
auto/offline
🔋 Mest spillerum i kvote/hastighedsbegrænsning først
auto/smart
🔭 Kvalitet først + 10 % udforskning for at finde bedre modeller
auto/lkgp
📌 Eksplicit fastholdelse af senest kendte velfungerende udbyder
auto/chaos
🧪 Parallel udsendelse til et panel af modeller (én pr. udbyder, som standard 5), returnerer ét svar; ét upstream-kald pr. panelmodel, ikke fejlinjektion
##
### 🔀 Eller byg din egen — 20 routingstrategier
Alle **20** strategier — kombinér frit for hvert trin i en combo:
#
Strategi
Hvad den gør
1
priority
Sorteret liste med første mål først — opbrug hvert mål før det næste 🥇
2
fill-first
Udnyt hvert måls kvote fuldt ud, før der fortsættes
3
weighted
Vægtet tilfældigt valg baseret på vægten for hvert mål
4
round-robin
Gennemløb målene på skift i rækkefølge
5
p2c
Tilfældig belastningsfordeling med valg mellem to muligheder
6
least-used
Vælg målet med den laveste aktuelle belastning
7
random
Ensartet tilfældigt valg (uden dubletter)
8
strict-random
Tilfældigt valg uden at fjerne gentagelser 🎲
9
cost-optimized
Minimér $ pr. anmodning ud fra aktuelle katalogpriser 💸
10
headroom
Vælg målet med mest resterende kvote
11
quota-weighted
Spring opbrugte konti over, og vælg derefter proportionalt med resterende kvote ÷ igangværende belastning — eksisterende samtaler forbliver fastgjort ⚖️
12
reset-window
Foretræk det mål, hvis kvoteperiode nulstilles hurtigst
13
reset-aware
Rangér efter tidspunktet for nulstilling af kvoten — korte perioder først 📊
14
context-relay
Overdrag kontekst mellem mål i lange samtaler 🧠
15
context-optimized
Vælg det bedste match til den aktuelle kontekststørrelse
16
cache-optimized
Fastgør hvert genanvendeligt promptpræfiks til den samme konto — maksimér antal træffere i promptcachen 🎯
17
lkgp
Senest kendte velfungerende sti — fastgør til den senest vellykkede udbyder og falder derefter tilbage på regler
18
auto
Løbende vurdering af 16 faktorer på tværs af alle forbindelser 🤖
19
fusion
Send ud til et panel af modeller, hvorefter en bedømmer sammenfatter ét svar 🧬
20
pipeline
Sammenkæd trin — outputtet fra hvert mål sendes videre til det næste 🔗
Auto-Combo-motoren vurderer hver kandidat ud fra **16 faktorer** (driftstilstand, kvote, omkostninger, latenstid, opgaveegnethed, kvalitet, sessionstilgængelighed …) — se [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Robusthed er indbygget (3 uafhængige lag)
📖 [Auto-Combo-motor](docs/routing/AUTO-COMBO.md) · [Robusthedsvejledning](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Hvad adskiller OmniRoute
📊 Fuld metodologi og detaljer pr. funktion sammenlignet med 9router, OpenRouter, CLIProxyAPI og LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Støt OmniRoute
OmniRoute er MIT-licenseret og vedligeholdes åbent. Hvis det sparer dig tid eller penge, kan du hjælpe med at holde det uafhængigt på følgende måder — vælg den, der passer dig. Sponsorater påvirker aldrig routingprioriteten; de giver synlighed, ikke en bedre placering.
**🇧🇷 PIX** — øjeblikkeligt, ingen gebyrer (Brasilien)
Nøgle (tilfældig): `5d865059-bc44-483a-962d-43ceb80126eb`
Pix copia-e-cola:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Kryptovaluta — BTC · ETH · USDT-TRC20 · USDC-Solana (klik for at udvide)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Send kun hver mønt via det viste netværk — overførsel via det forkerte netværk kan medføre, at midlerne går tabt.
🐛 Har du fundet en fejl eller har du feedback? Opret en [diskussion](https://github.com/diegosouzapw/OmniRoute/discussions).
Udviklerbemærkninger: Projektet kan generere en lokal .env-fil under npm-installation/postinstall af hensyn til udviklernes bekvemmelighed. Denne fil ignoreres bevidst via .gitignore (se .gitignore) og må aldrig committes — hvis den committes ved en fejl, skal alle eksponerede hemmeligheder udskiftes, og filen fjernes fra historikken. Se docs/DEVELOPER-ENVIRONMENT.md for vejledning i håndtering af lokale miljøfiler og hemmeligheder.
## 📡 OmniRoute Radar
Det primære hovedtal for gratisniveauet er fortsat **~1.62B tokens/måned** fra det dokumenterede,
puljededuplikerede katalog ovenfor. Midlertidige tilmeldingskreditter fra udbydere kan separat øge
den første måned til **~2.22B**. Radar er et valgfrit, signeret katalog-overlay til brugere, der ønsker
mere opdateret tilgængelighed af gratis modeller mellem OmniRoute-udgivelser; fællesskabskataloget
og alle eksisterende gratisfunktioner forbliver gratis.
Støtter kan få adgang til livekataloget og yderligere muligheder hos udbydere. Dets separate,
variable loft er **højst cirka 3B tokens/måned**, afhængigt af udbydernes tilgængelighed.
Dette loft er ikke en garanti: Udbydere kan når som helst ændre kvoter, adgangskrav, modeller eller
regioner.
Radar er valgfrit og bruger kun GET. OmniRoute-klienten uploader ikke prompts, trafik,
udbyderkonfiguration, brugstelemetri eller lokal status for afviste meddelelser. Læs mere om
adgangskrav og det aktuelle katalog på **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Hvad er nyt
> Seneste højdepunkter fra **v3.8.20 → v3.8.54**. Se hele historikken i [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ `quota-weighted` routing** — den 20. kombinationsstrategi springer udtømte konti over og trækker derefter blandt de resterende i forhold til resterende quota ÷ belastning under behandling, mens eksisterende samtaler forbliver fastgjort. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Headless-tilstand** — `omniroute serve --headless` (eller `OMNIROUTE_HEADLESS=1`) kører kun `/v1/*`-proxy-motoren, mens dashboardet og dashboard-eksklusive undersystemer er slået fra. → [Headless-tilstand](docs/guides/HEADLESS.md)
- **🔎 Modelregistrering** — `/v1/models` filtrerer efter funktion, kontekst, type og tekst, og `POST /v1/models/query` returnerer en kort, deterministisk kandidatliste med samme synlighed pr. nøgle. → [API-reference](docs/reference/API_REFERENCE.md)
- **🔑 Routingkontrol pr. nøgle** — fastgør en API-nøgle til én model eller kombination med `forcedModel`, og tilføj eller fjern en nøgles modeller og kombinationer atomisk (`/api/keys/{id}/access`). → [API-reference](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Mere finmaskede PII-kontroller** — valg pr. type, op til 20 validerede tilpassede maskeringsmønstre og detektionstællere pr. type; selve maskeringen er fortsat et opt-in-valg. → [Sikkerhedsregler](docs/security/GUARDRAILS.md)
- **🌍 67 sprog** — dashboard, dokumentationsspejle og CLI, hvor `npm run i18n:add-locale` tilføjer et sprog overalt med én kommando. → [i18n-guide](docs/guides/I18N.md)
- **🎛️ OmniConductor** — indgående A2A-delegering til din agentflåde, Conductor-færdigheder på Agent Card samt et dashboardpanel med Faro push-to-talk-stemmechat. → [A2A-server](docs/frameworks/A2A-SERVER.md)
- **🛂 Adaptiv adgangskontrol og overbelastningsbeskyttelse** — tunge chatanmodninger sættes i kø i stedet for at returnere 503, med atomiske RPM-rullende leases pr. forbindelse. → [Robusthedsvejledning](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Kanonisk rækkefølge for `/v1/models`** — én sammenhængende, providergrouperet blok pr. provider (kombinationer først), stabil på tværs af alle katalogkilder. → [API-reference](docs/reference/API_REFERENCE.md)
- **🗜️ Hærdning af komprimering** — inflationsbeskyttelse aktiveret som standard, Caveman-pakker til DE / FR / JA + kinesisk (wényán), RTK-filtre til Gradle og .NET. → [Komprimering](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Ærlig fastpris** — abonnements- og coding-plan-providere vises som **$0** i omkostningsanalyser; budget, quota og routing fortsætter med at estimere. → [API-reference](docs/reference/API_REFERENCE.md)
- **⚖️ Quota-Share-routing** — fordeler en delt kontos quota retfærdigt på tværs af poolede nøgler og sørger for fuld udnyttelse ved at udlåne inaktive andele. → [Robusthedsvejledning](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 CLI-/agentopsætning med én kommando** — 15 registrerede `setup-*`-kommandoer; `omniroute run` starter 7 CLI'er (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` understøtter 11 mål med en interaktiv provider- og modelvælger samt favoritter pr. kontekst. → [CLI-integrationer](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Fjernbetjeningstilstand** — styr en fjern OmniRoute med afgrænsede tokens (`connect` / `contexts` / `tokens`) samt en `antigravity` OAuth-hjælper til VPS-installationer. → [Fjernbetjeningstilstand](docs/guides/REMOTE-MODE.md)
- **🧭 Smartere automatisk routing** — `auto/:`-kombinationer, **Fusion** (modelpanel + dommer), opgavebevidst routing samt model-, tilstands- og USD-budgettilsidesættelser pr. anmodning. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Udvidelig komprimering** — 12 sammensættelige motorer + Compression Studios: LLMLingua-2, Ultra i to niveauer, omniglyph, fidelity-gate pr. trin, GCF v3.2 og editor med træk-og-slip-omarrangering. → [Komprimering](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Transparent MITM-dekryptering (TPROXY)** — capture-CLI'er, der ignorerer proxy-miljøvariabler, med et CA-certifikat pr. SNI samt installationsprogram til trust store. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Omkostningstelemetri overalt** — `X-OmniRoute-*`-omkostnings-/brugsheadere på alle endpoints, header for cache-HIT-besparelser samt USD-forbrugsquota pr. nøgle. → [API-reference](docs/reference/API_REFERENCE.md)
- **🧠 Hukommelse på dine præmisser** — deaktiveret som standard, opt-in int8-vektorkvantisering + typebestemt henfald samt `x-omniroute-no-memory` pr. anmodning. → [Hukommelse](docs/frameworks/MEMORY.md)
- **🛡️ Sikkerhed** — beskyttelse mod prompt injection på alle LLM-ruter (red-team-suite), opt-in-beskyttelse med legitimationsmaskering (skjuler lækkede API-nøgler/hemmeligheder i begge retninger), gratis websøgning via DuckDuckGo som sidste udvej samt en valgfri OIDC-loginport til dashboardet (login med adgangskode er altid tilgængeligt). → [Sikkerhedsregler](docs/security/GUARDRAILS.md)
- **🖼️ Nye endpoints** — `/v1/ocr` (Mistral OCR) og `/v1/audio/translations` (Whisper-lignende) fuldender medieoverfladen. → [API-reference](docs/reference/API_REFERENCE.md)
- **🎨 Generering af billeder / video / lyd** — én API til medier: xAI Grok Imagine og Novita AI-video, ComfyUI, Magnific, Adobe Firefly, Segmind samt taleprovidere såsom ElevenLabs. → [API-reference](docs/reference/API_REFERENCE.md)
- **🌍 Udrulning og drift** — reverse-proxy-`basePath`, automatisk registrering af browsersprog, enhedssporing pr. nøgle, rootless MITM-tillid og zh-TW-lokalisering. → [Miljø](docs/reference/ENVIRONMENT.md)
- **🤝 Flere providere og agenter** — cloud-agenter (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) med browser- og OAuth-login, førsteklasses Ollama-kort, Claude Opus 5 og Sonnet 5, officielt Kimi-partnerskab (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI … samt et opdateret **388-provider-katalog**. → [Providere](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Gennemsigtig routing** — hvert svar indeholder en `X-OmniRoute-Decision`-header, der angiver strategien, provideren og latenstiden, som leverede svaret; en ny `cache-optimized`-kombinationsstrategi samt Auto-Combo-`cacheAffinity`-faktoren dirigerer gentagne anmodninger tilbage til forbindelsen, der holder det cachelagrede præfiks; og et skrivebeskyttet `/v1/auto-combo/{channel}/candidates`-endpoint viser en `auto/*`-kanals aktuelle kandidatsamling. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Lokal ydeevne og infrastruktur** — lokal Redis med ét klik, relay-deployere til Cloudflare Workers / Deno Deploy, Bifrost og Mux som overvågede indlejrede tjenester. → [Indlejrede tjenester](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Også inkluderet** — plugin-framework og markedsplads, Omni/Agent/GitHub-skills-frameworks, Obsidian vault-integration (22 MCP-værktøjer), OpenAI-kompatible Batch- og Files-API'er, semantisk responscache, gamification med ranglister, ACP-agentopdagelse (15 indbyggede agenter), planlagt eksport af logfiler til BigQuery, parallel multi-model-fan-out med `auto/chaos`, en Telegram-botbro, en versionsstyring i appen og LMArena-ELO-rangeringer af gratisudbydere. → [Dokumentation](docs/README.md)
## 🤖 Kompatible CLI'er & Kodeagenter
> Én konfiguration — `http://localhost:20128/v1` — og **alle** AI IDE'er eller CLI'er kører på gratis & billige modeller.
📖 Opsætning pr. værktøj for alle 39 værktøjer (28 CLI Code's + 11 CLI Agents) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 OpenCode-plugin → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Start ethvert understøttet CLI via OmniRoute med én kommando** — ingen konfigurationsfiler skrives,
legitimationsoplysninger injiceres pr. proces, Qwen/Gemini får et midlertidigt isoleret hjem:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# Eller vælg udbyder+model interaktivt og skriv værktøjets egen konfiguration:
omniroute configure codex # også: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Alle kommandoer respekterer den aktive fjernkontekst (`omniroute connect `), `--dry-run`
viser det præcise miljø/argumenter uden at køre, og `--api-key-env NAME` holder hemmeligheder ude
af din shell-historik. → [CLI-integrationer](docs/guides/CLI-INTEGRATIONS.md)
> **388 registrerede udbydere** på tværs af de kanoniske samlinger for chat, medier, søgning, lokale tjenester, cloud-agenter og systemer, herunder **153 med `hasFree: true`-opdagelsesmetadata**. Chatmodellens register dækker **239 udbydere / 3.059 distinkte udbyder-model-par / 1.475 rå model-ID'er**; det separate katalog over gratis budgetter har **471 rækker pr. model**, **34 tilbagevendende puljer** og **52 tilbagevendende/keyless gratis-for-altid-udbydere**. Dette er forskellige nævnere med vilje; definitioner og pool-deduplicerede beregninger findes i [Udbyderreference](docs/reference/PROVIDER_REFERENCE.md) og [Gratis niveauer](docs/reference/FREE_TIERS.md).
### 🏢 Alle større laboratorier — gennem ét endpoint
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…og 350+ flere — hvert ikon hentes direkte fra dashboardets katalog over udbydere. 📖 [Udbyderreference](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Gratis for altid — $0, intet kort nødvendigt
OpenCode Zen DeepSeek V4, Nemotron 3 Ingen tokenbegrænsning
Kilo Code Automatisk router, Tencent Hy3 Gratis for altid
Requesty GPT-OSS 120B, Nemotron Gratis for altid
SiliconFlow DeepSeek V3.2 / R1 Gratis niveau
Z.AI GLM GLM-4.7 / 4.5-Flash Gratis for altid
Baidu ERNIE ERNIE 4.0 Gratis for altid
Qoder AI Qwen3-Max, Kimi-K2 Ubegrænset GRATIS
Pollinations GPT, Llama, Claude Ingen nøgle nødvendig
Cloudflare AI 50+ modeller 10K neuroner/dag
NVIDIA NIM GLM, MiniMax ~40 RPM gratis
Cerebras GLM 4.7, GPT-OSS Engangskredit på $5; kort påkrævet
### 🧩 Nyt: OmniRoute inde i VS Codes oprindelige Copilot Chat
> Ingen ny sidebjælke, ingen ny chat UI - hver model OmniRoute serverer dukker op lige i**Copilot Chat-modelvælger, du allerede bruger** . Siden VS -kode 1.122 fungerer udbydermodeller uden et GitHub -login eller et Copilot abonnement - agenttilstand, værktøjsopkald og vision gratis.
Installer** [OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)** udvidelse, peg den mod din OmniRoute server (standard til `localhost:20128`), åbn derefter Copilot Chat → model picker →** Administrer modeller...** →**OmniRoute** .
Inde fra editoren: åbn** Udvidelser** se, søg** "OmniRoute"** , klik** Installere** — fungerer på samme måde i begge butikker. Kilde, numre og udgivelses-runbook live på [diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [VS Code Copilot Chatguide](docs/guides/VSCODE-COPILOT.md) — opsætning, hvad vælgeren viser, dashboard-i-en-fane, fejlfinding
### 🎩 Nyt: OmniRouteTray — din gateway, der bor i menulinjen
> `omniroute serve` er gladest, når den altid er tændt.** [OmniRouteTray](https://github.com/zoispag/omniroute-tray)** gør det til en sæt-og-glem menulinje-app til macOS: den starter serveren, holder den i live på tværs af genstarter, opdaterer den på plads og placerer dit live token-budget et klik væk —** intet terminalvindue efterladt åbent, ingen `npm install -g omniroute` til babysitning.**
Bygget med [Tauri v2](https://v2.tauri.app/) (en Rust-kerne på størrelse med en afrundingsfejl), sender den sin egen signerede Node 24-runtime og administrerer en app-ejet OmniRoute installation, så den bekæmper aldrig din globale `node`/`bun`. Det** deler din eksisterende `~/.omniroute/` -konfiguration og database** — så det er den samme OmniRoute, du allerede kører, bare med en hat på. 🎩
Hvad det gør
Hvordan
🟢 Overvåger serveren
Spawns omniroute serve , adopterer en allerede kørende instans i stedet for at duplikere den
📊 Live brug på et blik
Udbyder kvotebarer, Claude session/weekly grænser med nulstillede nedtællinger, 30-dages omkostningsfordeling
🔄 Automatiske opdateringer på plads
Etapevis installation, atomic swap, rollback ved fejl — altid på den nyeste udgivelse
🚀 Start ved login
Valgfri start ved login; Kun bakke, intet dock-ikon
🩺 Læge & logs
Diagnostik med ét klik og serverlogadgang
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Foretrækker du en download? Få fat i den nyeste .dmg fra
Frigiver . Kilde, problemer og opbygning
docs live på zoispag/omniroute-tray.
💛 Et fællesskabsprojekt af @zoispag — ikke en officiel OmniRoute udgivelse.
> Ud over serveren er OmniRoute et **fuldt kommandolinjecockpit** med **80+ kommandoer** samt åbne agentprotokoller, så en AI-agent kan styre det **på egen hånd**.
### ⌨️ En rigtig CLI (ikke kun `start`)
```bash
omniroute # start gateway + dashboard (port 20128)
omniroute chat # interaktiv TUI-chatklient (skråstregskommandoer: /model /combo /skill /memory)
omniroute setup # guidet guide til første kørsel
omniroute doctor # diagnosticer udbydere, porte og native afhængigheder
```
### 🛰️ Fjerntilstand — kør CLI'en her og OmniRoute på en VPS
Kører OmniRoute på en server? Styr det fra din bærbare computer med den **samme CLI**. Log ind én gang
med et adgangstoken med afgrænset omfang; derefter målrettes hver kommando mod fjernserveren.
```bash
omniroute connect 192.168.0.15 # adgangskode → token med afgrænset omfang, gemt som en kontekst
omniroute models # ← kører mod FJERNSERVEREN
omniroute configure codex # ← vælger en fjernmodel og skriver en lokal Codex-profil
omniroute tokens create --name ci --scope read # opret tokens med snævrere omfang til andre maskiner
omniroute contexts use default # ← skift tilbage til den lokale server
```
Tokens har omfanget `read` / `write` / `admin`; ruter, der starter processer, forbliver begrænset til loopback.
📖 [Fjerntilstand](docs/guides/REMOTE-MODE.md)
### 🤝 Tilslut en agent — så styrer den selv OmniRoute
Gør OmniRoute tilgængelig via **MCP**, **A2A**, en **REST API**, **webhooks** eller en **fjern-CLI** — enhver kompetent agent (eller din egen kode) får nøglerne til hele gatewayen: routing, udbydere, kombinationer, cache, komprimering og hukommelse — autonomt. HTTP-slutpunkterne nedenfor betjenes under `http://localhost:20128`.
Grænseflade
Slutpunkt / kommando
Brug det til
🧰 MCP (stdio)
omniroute --mcp
Integrer med Claude Desktop, Cursor eller enhver MCP-klient
OpenAI-kompatibel — chat, embeddings, billeder, lyd og OCR
🔔 Webhooks
/api/webhooks
Send hændelser for anmodninger / kvoter til Slack, Discord, Telegram eller en vilkårlig URL
🛰️ Fjern-CLI
omniroute connect
Styr en fjerninstans med adgangstokens med afgrænset omfang
```bash
# Giv Claude Code adgang til hele OmniRoute-værktøjssættet via MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [MCP-server](docs/frameworks/MCP-SERVER.md) · [A2A-server](docs/frameworks/A2A-SERVER.md) · [Agentprotokoller](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Spar 15–95 % tokens — automatisk
### 📖 Sådan fungerer det — pipeline, arkitektur og besparelsesberegning
Standardkombinationen kører `RTK → Caveman`. Når begge anvendes på den samme tool-/kontekstpayload, akkumuleres besparelserne:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Kodeblokke, URL'er, JSON og strukturerede data er **altid beskyttet** af bevaringsmotoren.
> **Hvorfor bruge mange tokens, når få tokens kan gøre arbejdet?** Hver anmodning passerer **transparent** gennem OmniRoutes komprimeringspipeline — uden ændringer på klientsiden. Den består nu af en **stak med 12 komponerbare motorer**, der kører i rækkefølge og kan kombineres efter behov pr. routingkombination — baseret på idéer fra [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua) og [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 Stakken med 12 motorer
Motorerne kører i pipeline-rækkefølge; hver motor kan aktiveres eller deaktiveres uafhængigt og konfigureres pr. kombination:
#
Motor
Hvad den gør
1
Session-Dedup
Fjerner indhold, der gentages på tværs af samtaletråde (indholdsadresseret, på tværs af samtalerunder)
2
CCR
Arkiverer store blokke bag hentemarkører, som hentes efter behov
3
Lite
Trimning af mellemrum og billed-URL'er (latenslet grundniveau)
4
RTK
Smart filtrering, deduplikering og afkortning af tool-resultater (kommando-bevidst)
5
Responses Tool Output
Tabsfri-først JSON samt begrænset diagnostisk komprimering af shell-/patch-/søge-/build-output (Responses API)
6
Headroom
Tabsfri tabulær komprimering af JSON-arrays (~30 %) via en medleveret GCF-codec
7
Relevance
Ekstraktiv sætningsscoring op mod den seneste brugerforespørgsel
8
Caveman
Regelbaseret prosa-komprimering (~65–75 % på output)
9
Aggressive
Opsummering og gradvis ældning af gamle samtalerunder
10
LLMLingua-2
ML-baseret semantisk beskæring via MobileBERT ONNX — kodesikker, asynkron
11
Ultra
Heuristisk token-beskæring med et valgfrit small-model (SLM)-niveau
12
OmniGlyph
Eksperimentel kodning af kontekst som billede til målt Claude Fable 5 på den direkte Anthropic-wire; GPT 5.6-transformere forbliver fail-closed, indtil provider-kvitteringer foreligger. Fire komprimeringsprofiler (aggressiv standard, balanceret, kodesikker, passthrough) (mest aggressiv; opt-in)
Kodeblokke, URL'er og strukturerede data **bevares altid** byte-perfekt. **Forudindstillinger med ét klik** kombinerer motorerne:
Tilstand
Besparelse
Bedst til
🪶 Lite
~15 %
Sikker standard, der altid er aktiveret
🪨 Standard (Caveman)
~30 %
Daglig kodning
⚡ Aggressive
~50 %
Lange sessioner med mange tools
🔥 Ultra
~75 %
Maksimale besparelser
🧰 RTK
60–90 %
Shell-/test-/build-/git-output
🔗 Stablet (RTK → Caveman)
78–95 %
Blandede prompts og tool-logs
**Eksempel fra virkeligheden — Standard-tilstand:**
> **Før (69 tokens):** _"Grunden til, at din React-komponent bliver gengengivet, er sandsynligvis, at du opretter en ny objektreference ved hver render-cyklus. Når du sender et inline-objekt som prop, ser Reacts overfladiske sammenligning det som et andet objekt hver gang, hvilket udløser en ny gengivelse. Jeg vil anbefale at bruge useMemo til at huske objektet."_
>
> **Efter (19 tokens):** _"Ny objektreference ved hver gengivelse. Inline-objekt som prop = ny reference = ny gengivelse. Pak ind i useMemo."_
>
> **Samme svar. 72 % færre tokens. Ingen tab af nøjagtighed.** ✅
**PT-BR-eksempel — [Troglodita](https://github.com/leninejunior/troglodita)-tilstand:**
> **Før (42 tokens):** _"Problemet er, at komponenten gen-renderes, fordi der oprettes en ny objektreference i hver renderingscyklus. Jeg vil anbefale at bruge useMemo."_
>
> **Efter (12 tokens):** _"Gen-rendering: ny reference i hver cyklus (inline-objekt genskabt). Brug `useMemo`."_
>
> **Samme svar. ~70 % færre tokens. Teknisk præcision intakt.** ✅
### 🎚️ Ud over motorerne — outputstile, den adaptive drejeknap og kontrol pr. forespørgsel
De 12 motorer ovenfor reducerer det, der går **ind**. Yderligere tre lag former **hvordan**, **hvornår** og hvad der kommer **ud**:
- **🪄 Outputstile** _(styring af outputaksen)_ — indsætter deterministiske, cache-sikre instruktioner til formning af svar; kan kombineres, hver med intensiteten `lite` / `full` / `ultra`. Det kræver kun én linje i registreringsdatabasen at tilføje en stil:
- **Koncis prosa** — fjern fyld / artikler / forbehold; bevar det tekniske indhold nøjagtigt.
- **Mindre kode** — "doven seniorudvikler" YAGNI: den mindste fungerende ændring, ingen ikke-anmodet stilladsopbygning.
- **Hestehale (doven seniorudvikler)** — gå op ad YAGNI-stigen, løs den grundlæggende årsag, og lav den mindst mulige fungerende diff.
- **Jeg har ADHD (handlingsorienteret)** — næste handling først, nummererede trin, ét konkret næste trin, ingen indledning.
- **Koncis CJK (文言)** — ultrakoncis stil på klassisk kinesisk (begrænset til lokaliteten `zh`).
- **🎯 Adaptivt kontekstbudget** _(drejeknappen)_ — i stedet for én tærskel for til/fra aktiveres de billigste motorer med mindst informationstab gradvist, kun så langt det er nødvendigt for at **passe ind i modellens kontekstvindue**. Politik: `reserve-output` (standard, modelbevidst) · `percentage` · `absolute`. Tilstand: `floor` (garanterer plads) · `replace-autotrigger` (dit eksplicitte valg vinder) · `off` (ældre tærskel).
- **🎛️ Hvor komprimeringen afgøres** _(prioritet, høj → lav)_ — headeren pr. forespørgsel `x-omniroute-compression` › routing-kombinationens tilsidesættelse › den aktive navngivne profil › adaptiv / automatisk udløsning › panelets standard › fra. Den anvendte plan returneres i svarheaderen `X-OmniRoute-Compression: ; source=`.
Udløs automatisk efter token-tærskel, slå den adaptive drejeknap til, fastlås en navngiven profil, angiv en engangsindstilling pr. forespørgsel, eller tildel en pipeline pr. routing-kombination — alt efter hvad der passer til arbejdsbelastningen. Et valgfrit offline-**evalueringsværktøj** (`npm run eval:compression`) scorer nøjagtighed over for besparelser på et fastlåst korpus, før du fremmer en ændring.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Hurtig start
**1) Installer og kør**
```bash
npm install -g omniroute
omniroute
```
> 💡 Ser du `npm warn ERESOLVE` eller advarsler om peer-afhængigheder? [De er ufarlige](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Bruger du npm 11 eller nyere?** npm kan blokere pakkers livscyklusscripts, medmindre de er tilladt. OmniRoutes `postinstall` (`node scripts/build/postinstall.mjs`) er nødvendigt for at forberede dets native runtime-filer. Tillad de pakker, der er angivet i npms advarsel, når du installerer globalt. For det pakkesæt, der rapporteres af OmniRoute 3.8.54:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Hvis du vil genbruge denne tilladelsesliste til fremtidige globale installationer, skal du konfigurere den én gang og derefter installere normalt:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> Afhængighedslisten kan ændre sig mellem udgivelser. Hvis npm rapporterer en anden liste, skal du bruge pakkenavnene fra den pågældende advarsel. Når en pakke tillades, må dens installationsscripts køre.
> **Bruger du Gemini Web eller en anden udbyder med webcookies?** npm-pakken inkluderer
> Playwright, men ikke dens Chromium-binær. Se
> [Playwright Chromium-opsætningen](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> før du foretager den første forespørgsel til en webudbyder.
Dashboard på `http://localhost:20128` · API på `http://localhost:20128/v1`.
**2) Tilslut en kvalificeret udbyder med din egen konto**
Dashboard → **Udbydere** → vælg en udbyder, hvis aktuelle vilkår og kvote passer til dit anvendelsestilfælde → tilføj dens API-nøgle, eller gennemfør kontoforløbet. Gratis niveauer kan kræve tilmelding, godkendelse eller en betalingsmetode. Gennemgå [vejledningen til gratis niveauer](docs/getting-started/FREE-TIERS-GUIDE.md); tilgængelighed uden nøgle er ikke garanteret, og udbydere markeret med `tos: avoid` udelukkes som standard fra `auto`.
**3) Peg dit kodeværktøj på OmniRoute**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Kontrollér, at det virker**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Du bør se dine tilsluttede modeller på listen. 🎉 Det var det — begynd at kode, så sørger OmniRoute for automatisk routing og fallback.
Hvis din klient ikke kan sende brugerdefinerede headere, stiller OmniRoute også tokeniserede kompatibilitetsaliaser til rådighed:
```txt
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Brug kun disse til klienter, der ikke kan vedhæfte `Authorization: Bearer ...`. Header-godkendelse er fortsat den foretrukne tilstand.
## 📦 Flere installationsmetoder — Docker, kildekode, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest` følger den højeste **udgivne** stabile SemVer. Det følger ikke git `main`. Fastlås `:X.Y.Z` til GitOps. Se [Docker-udgivelseskanaler](docs/guides/DOCKER_GUIDE.md#release-channels). Image-filen fastlåser **`OMNIROUTE_MEMORY_MB=1024`**. Det er tilstrækkeligt til dashboardet og en let chat. **Kodningsagenter** (`POST /v1/responses` fra Claude Code, Codex, Grok, …) kræver en meget større V8-heap, ellers får processen en `FATAL ERROR` ved ca. 12 GiB med to overlappende lange kontekster. Dimensionér containeren større end heapen (native buffere ligger uden for V8):
| Arbejdsbelastning | Heap (`-e OMNIROUTE_MEMORY_MB`) | Container (`--memory`) |
| ---------------------------------- | ------------------------------- | ---------------------- |
| Dashboard/let chat | `1024` (image-standardværdi) | ≥2 g |
| Én kodningsagent | `8192` | ≥10 g |
| To samtidige lange `/v1/responses` | `10240`–`12288` | ≥12–16 g |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Komplet tabel: [Docker-vejledning — RAM under kørsel](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Docker-kanal til forhåndsudgivelser:** `diegosouzapw/omniroute:next` og
> `diegosouzapw/omniroute:next-web` følger den aktuelle standardgren `release/v*`.
> Disse foranderlige tags er kun beregnet til test af ikke-udgivne rettelser og
> **understøttes ikke til produktion**. Se
> [Docker-udgivelseskanaler](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
Standardkommandoerne `bun install` og global installation (`bun install -g omniroute`) understøttes via registrering af Bun-kørselsmiljøet:
- **Indbygget `bun:sqlite`**: OmniRoute bruger Buns indbyggede `bun:sqlite`-driver, når det kører under Bun, og falder tilbage til `better-sqlite3` på Node.js eller `sql.js`.
- **Automatisk valg af Webpack-bundler under udvikling**: Udviklingsmiljøet (`bun run dev`) registrerer automatisk Bun og deaktiverer Turbopack til fordel for Webpack for at forhindre inkompatibilitet med native V8-bindinger. Produktions-builds (`bun run build`) følger `OMNIROUTE_USE_TURBOPACK` præcis som på Node: Turbopack som standard, `OMNIROUTE_USE_TURBOPACK=0` for at bygge med Webpack (`Dockerfile.bun` eksponerer det som et `--build-arg`).
- **Dedikeret Bun-Dockerfile**: `Dockerfile.bun` med flere stadier til native Bun-produktionsinstallationer (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Installér og kør med Bun
bun install
bun run dev
```
**🛠️ Fra kildekode**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**📦 pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**🐧 Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**🔧 Nix (Flake)**
```bash
# Brug af Nix flakes
nix develop
npm run dev
# Eller brug af devbox
devbox run npm run dev
```
📖 [Docker-vejledning](docs/guides/DOCKER_GUIDE.md) — Compose-profiler, Caddy HTTPS og Cloudflare-tunneler.
**🦭 Podman**
```bash
# 1. Klargør datamappen, der monteres via bind mount
mkdir -p data
# 2. Kun Linux + lokal rootless Podman (aldrig en ekstern Podman Machine-klient):
podman unshare chown 1000:1000 ./data
# 3. Angiv kørselsmiljøhintet, byg det lokale Compose-image, og start
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
På macOS eller Windows bruger Podman en ekstern Podman Machine: Spring `podman unshare` over, og
følg den [topologispecifikke vejledning til datamapper](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Podman-vejledning](contrib/podman/README.md) — Compose-builds, Podman Machine og
Linux/systemd Quadlet-opsætning.
**⚡ Hurtigere/mindre installation (spring det native build over)**
Den native SQLite-motor (`better-sqlite3`) er en **valgfri** afhængighed, så en global
installation blokerer aldrig på kompilering fra kildekode: Den bruger en præbygget binær fil, når en sådan matcher
din platform/Node, og falder ellers transparent tilbage til en ren JS-motor
(`node:sqlite` på Node 22+, ellers den medfølgende `sql.js` WASM) — ingen build-værktøjer kræves.
Sådan springer du den native opvarmning efter installationen helt over (CI, headless eller langsomme maskiner):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 springer den også over
```
Foretræk **pnpm** til de hurtigste installationer (indholdsadresseret lager + hardlinks — se ovenfor).
Brug Docker-profilen `base` (ovenfor) eller
[Termux-vejledningen](docs/guides/TERMUX_GUIDE.md) til et headless-kørselsmiljø uden dashboard. CLI'en og webdashboardet leveres af den
samme proces på én port, så der findes i øjeblikket ikke en separat pakke kun til CLI'en.
**Komplet rangering (deduplikerede kanoniske URL'er, `v > 0`, størst rækkevidde):**
| #1 | #2 | #3 | #4 | #5 |
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [nick_saraev — Instagram](https://www.instagram.com/reel/Da8ZthUPK98/) — **3,042,474** | [nnapier7 — Instagram](https://www.instagram.com/reel/Dbp7wv_CIO0/) — **1,454,535** | [Amidia AI & Tech — YouTube](https://www.youtube.com/watch?v=NJ0TQ-pyMDY) — **794,974** | [theopenstack — Instagram](https://www.instagram.com/reel/DaSs65mMrHk/) — **692,419** | [migue.baena — TikTok](https://www.tiktok.com/@migue.baena/video/7670919268216622358) — **685,788** |
| #6 | #7 | #8 | #9 | #10 |
| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [milesreevesai — TikTok](https://www.tiktok.com/@milesreevesai/video/7667980059189366019) — **620,400** | [nikothetech — TikTok](https://www.tiktok.com/@nikothetech/video/7671890769665477918) — **610,803** | [Vaibhav Sisinty — YouTube](https://www.youtube.com/watch?v=QucgvbO5gsM) — **509,281** | [buildwithai.club — Instagram](https://www.instagram.com/reel/DbIt9AjK7-U/) — **347,652** | [nivedan.ai — Instagram](https://www.instagram.com/reel/DbIrCksJiqq/) — **331,973** |
Kanoniske målinger pr. 2026-10-18: **1.976 unikke videoer** · **20.220.289 kendte visninger** (`v > 0`) · **1.210 kanaler/profiler fordelt på netværk**. Råpanelet indeholder 1.976 rækker (YouTube 1.352 = 740 videoer i langt format + 612 Shorts · TikTok 334 · Instagram 290); ingen dubletter var tilbage efter normalisering ud fra den kanoniske URL, som bevarer det højeste antal pr. video. Indsamlingen fra YouTube har været sat på pause siden 2026-10-13 (API-kvoten var opbrugt fra 14. til 18. oktober) og fra TikTok/Instagram siden 2026-09-02 (ingen indsamlingskreditter); 76 videoer har endnu ikke et antal visninger.
> 🎬 **Har du lavet en video om OmniRoute?** Opret en [issue](https://github.com/diegosouzapw/OmniRoute/issues/new) eller [discussion](https://github.com/diegosouzapw/OmniRoute/discussions) med linket — så fremhæver vi den her.
# 📧 Fællesskab og hjælp
> Alt samlet ét sted — følg vedligeholderen, chat med fællesskabet, eller opret en issue.
| Kanal | Hvor / hvordan |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| 💼 **LinkedIn** — følg vedligeholderen | [linkedin.com/in/diegosouzapw](https://www.linkedin.com/in/diegosouzapw/) |
| 🐙 **GitHub** — følg for udgivelser og tips | [@diegosouzapw](https://github.com/diegosouzapw) |
| 💬 **Discord** | [discord.gg/U47eFqAXCn](https://discord.gg/U47eFqAXCn) |
| ✈️ **Telegram** | [t.me/omnirouteOficial](https://t.me/omnirouteOficial) |
| 🟢 **WhatsApp — 🌍 Global** | [tilmeld dig gruppen](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) |
| 🟢 **WhatsApp — 🇧🇷 Brasilien** | [tilmeld dig gruppen](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) |
| 🌍 **Websted** | [omniroute.online](https://omniroute.online) |
| 🌍 **🌍StHub OmniRoute-fællesskab (gratis)** | [StHub-portal](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK) |
| 📦 **Kildekode** | [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute) |
| 🐛 **Rapportér en fejl** | [opret en sag](https://github.com/diegosouzapw/OmniRoute/issues) — vedhæft outputtet fra `npm run system-info` |
| 🤝 **Bidrag** | [CONTRIBUTING.md](CONTRIBUTING.md) · [Forgrenings- og udgivelsesmodel](docs/ops/BRANCHING_MODEL.md) · vælg en `good first issue` |
| 💚 **Støt projektet** | [Måder at støtte på ↑](#-support-omniroute) · [GitHub Sponsors](https://github.com/sponsors/diegosouzapw) |
Strategi for testdækning af over 60.000 statiske testdeklarationer på tværs af over 8.400 registrerede testfiler
# ⭐ Topbidragydere
> OmniRoute formes af et engageret open source-fællesskab. Disse personer har ydet en ekstraordinær indsats, som direkte påvirker projektets kvalitet, stabilitet og rækkevidde. **Tak.**
### Eksterne bidragydere efter flettede pull requests
Optælling foretaget 2026-11-03 03:01:19 UTC med det aktuelle release/v3.8.53-tip 05bc048d6c. Den sideinddelte GitHub GraphQL-optælling indeholder 9.947 flettede PR'er: 4.130 fra repository-ejeren, 240 fra Dependabot, 6 fra andre bots/apps og 5.571 eksterne PR'er fra 883 forskellige bidragydere. “Ændrede linjer” er GitHub-tilføjelser + sletninger og omfatter genererede filer, lockfiler, kataloger, oversættelser og dokumentation; det er ændringsomfang, ikke forfatterens LOC. 53 PR'er rapporterer GitHub-diffs på over 500.000 linjer (for eksempel #13399, hvor en enkelt provider-tilføjelse viser 2.347 ændrede filer), hvilket oppuster flere af totalerne ovenfor. Lige placeringer rangeres samlet.
### GitHub-tilskrevne commits
Kontrolleret igen 2026-11-03 02:09:16 UTC: Commits tilskrevet GitHub, rapporteret af repositoryets Contributors API for standardgrenen release/v3.8.53. API'et returnerede 903 identiteter (429 brugere, 2 bots, 472 anonyme); denne tabel udelader vedligeholderen, bots og anonyme identiteter og bevarer delte placeringer. Den er forskellig fra både rangeringen af flettede PR'er ovenfor og Git-metadataoptællingen nedenfor.
> 🙏 Disse bidragyderes funktioner, fejlrettelser og infrastrukturforbedringer er en **kernebestanddel** af det, der gør OmniRoute pålidelig og funktionsrig. Hver pull request, hvert testtilfælde og hver i18n-oversættelsesfil er vigtig. Open source skabes af mennesker som dem.
---
## 💖 Sponsorer
En hjertelig tak til de mennesker, der finansierer OmniRoute af egen lomme — hvert bidrag holder projektet gratis, uafhængigt og i udvikling.
… og andre, som foretrækker at forblive private 💛Offentlige GitHub-sponsorer blev genvalideret den 2026-10-18 via GitHub Sponsors GraphQL API: 11 offentlige sponsorater (6 aktive, 5 tidligere) ud af i alt 14. GitHubs isActive-status bestemmer de aktive mærkater ovenfor; tidligere offentlige engangsbidragydere takkes fortsat, og private sponsorer forbliver anonyme. Donationer via Ko-fi, Buy Me a Coffee, Liberapay, PIX og kryptovaluta er ikke angivet, fordi de ikke har nogen offentlig sponsorregistrering.💖 Bliv sponsor → — hver dollar bidrager til at holde OmniRoute gratis og uafhængigt.
## 👥 1.000+ bidragydere
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Revideret den 2026-11-02 ved det aktuelle release/v3.8.53-tip 1c7135e0fb (7.972 commits): 1.074 normaliserede menneskelige Git-identiteter — 759 optræder som commit-forfattere (inklusive vedligeholderen), og 315 kun i eksplicitte Co-authored-by-trailere. Optællingen anvender .mailmap, sammenligner e-mailadresser uden hensyn til store og små bogstaver, sammenkæder numeriske og almindelige GitHub noreply-adresser kun, når de angiver det samme handle, udelukker 29 bot-/agent-/service-/pladsholderidentiteter og sammenlægger ikke almindelige e-mailadresser blot fordi deres viste navne matcher. Revisionen den 2026-08-24 offentliggjorde 639; denne metode kørt igen på denne revisions grundlag ac02c5b42f giver 619, så stigningen skyldes nye bidragydere og ikke en mindre streng metode.
### Sådan bidrager du
1. Opret en fork af repositoryet
2. Opret en branch fra det **aktive** `release/vX.Y.Z`-tip (ikke `main`) — se [Forgrenings- og release-model](docs/ops/BRANCHING_MODEL.md)
3. Opret din feature-branch (`git checkout -b feat/amazing-feature`)
4. Commit dine ændringer (`git commit -m 'feat: add amazing feature'`)
5. Push til branchen (`git push origin feat/amazing-feature`)
6. Opret en pull request med **base = den pågældende `release/vX.Y.Z`-branch**
Se [CONTRIBUTING.md](CONTRIBUTING.md) for detaljerede retningslinjer.
### Udgivelse af en ny version
```bash
# Opret en release — npm publish sker automatisk
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Stjerner
## 🌍 StarMapper
## 🙏 Anerkendelser
OmniRoute står på skuldrene af giganter. Det begyndte som en fork af **[9router](https://github.com/decolua/9router)** og en TypeScript-port af Go-projektet **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — og derfra er hvert undersystem nedenfor inspireret af et open source-projekt, der nåede dertil først. Hvert af dem har formet en konkret del af OmniRoute. Dette er vores tak til dem alle. 🙏
> ⭐ Antallet af stjerner er verificeret via GitHub's REST API den 3. november 2026 — giv disse projekter en stjerne. Antallene er et eksakt øjebliksbillede fra denne dato og vil naturligt ændre sig.
### 🧬 Oprindelse og gateway
AI-gatewayen, hvis offentlige prisdatasæt leverer data til vores synkronisering af omkostningssporing, og hvis model til normalisering af udbydere har informeret vores routing.
MIT-kilde tilpasset den medfølgende ChatGPT Web → Codex Responses-bro, herunder adaptere til browsersessioner, responsindramning, forbrug og websøgning.
Mønstre overført til gendannelse af streams, no-thinking-aliaser, fallback-websøgning, begrænsninger med glidende vindue, logredigering og mere robuste launcher-forløb.
Dets Grok-modeltilknytninger, fake-TypeError Statsig-generator, standardværdier for requests og enheder samt NDJSON-responsprocessor blev i væsentlig grad tilpasset OmniRoutes Grok Web-executor.
Den primære transitive kodekilde bag grok2api-merged; dens implementeringer af model, headere, payload, Statsig og processor er bevaret i Grok Web-oprindelsen.
Den underliggende MIT-kilde til Grok-payload- og enhedsstandarder, Statsig-generatoren og result.response-processoren, som er ført videre gennem TQZHR og grok2api-merged.
En transitiv kilde, der krediteres af grok2api-merged for dets proxy-pool-lag; OmniRoute bevarer denne oprindelsesangivelse, men gør ikke krav på en proxy-pool-port i sin afgrænsede Grok Web-executor.
Den oprindelige Grok Web-implementering blev konsulteret med hensyn til dens HTTP-/browser-upstream-design; dens direkte HTTP-vej stammer fra GrokProxy, så der gøres ikke krav på en uafhængig kodeport.
Det virale projekt med "why use many token when few token do trick" — dets caveman-sprogfilosofi driver vores standardkomprimeringstilstand og over 30 regler til fjernelse/kondensering af fyld.
Højtydende komprimering af kommandooutput — inspirerede vores RTK-motor, JSON-filter-DSL, gendannelse af råt output og den sammenkædede RTK → Caveman-pipeline.
Den virale YAGNI-coder-færdighed for en "doven seniorudvikler" — inspirerede vores less-code-outputstil: styring mod den mindst mulige fungerende ændring, der reducerer _genereret_ kode (output-akse-søskendet til Cavemans kortfattede prosa).
Kolonnebaseret Rust-JSON + indholdsadresseret hentning + deduplikering på tværs af meddelelser — bekræftede vores design af headroom/ccr/session-dedup-motoren og den cache-stabile invariant, at "komprimeret form er positionsuafhængig".
Værktøjssæt til TypeScript Compiler API — inspirerede vores parserbaserede fjernelse af kommentarer, der bevarer strenge, skabelon- og regex-literaler.
MITM-interception/-analyse af trafik mellem kodeassistent og LLM informerede de tidlige krav til Traffic Inspector. Fire tidligere afledte moduler — SSE-sammenfletning, normalisering af samtaler, maskering af hemmeligheder og sanering af headere — er blevet erstattet af uafhængige clean-room-implementeringer baseret på offentlige protokolstandarder. De to host-passthrough-overflader (passthrough.ts og _internal/bypass.cjs) er fortsat OmniRoute-interne implementeringer, der er klassificeret uafhængigt; de blev ikke omskrevet som en del af denne udskiftning.
Transparent proxy-routing pr. proces — inspirerede vores crash-sikre MITM-nedlukning, socket-inaktivitetstimeouts, procesattribution via /proc og TPROXY-opsamling.
En kurateret liste over biblioteker, der er sikre som standard, og som vejleder vores sikkerhedsvalg (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Identificerede Grok Build-kvoten; OmniRoute verificerede og korrigerede derefter det aktive wire-format uafhængigt.
## 📄 Licens
MIT-licens – se [LICENSE](LICENSE) for detaljer.
---
**[⬆ Tilbage til toppen](#-omniroute)** · Bygget med ❤️ til det open source-baserede AI-fællesskab.
Oprettet af Diego Souza · OmniRoute v3.8.54 · Node ≥22.22.2 · MIT-licens · omniroute.online