## 💰 ~1,62 mrd tokenia / kuukausi kolmannen osapuolen ilmaistasoilta
> **Käytä omia palveluntarjoajatilejäsi.** Tämä on arvio kolmannen osapuolen erikseen kelpoisten ilmaistasojen yhteenlasketusta määrästä — ei OmniRouten myöntämä tokenkiintiö. Rekisteröidy, hanki tarvittavat tunnukset ja yhdistä ne palveluntarjoajat, joita voit käyttää; kukin palveluntarjoaja hallitsee omia rajojaan, saatavuuttaan ja ehtojaan.
>
> Ilmaistasojen pinoaminen käsin on työlästä — kymmeniä SDK:ita, kymmeniä nopeusrajoituksia eikä hajuakaan siitä, paljonko sinulla todella on käytettävissä. OmniRoute luetteloi **467 ilmaistason merkintää 34 toistuvan pooliavaimen yli** ja laskee token-yläotsikon **17 poolista, joilla on julkaistu positiivinen kuukausibudjetti, sekä viidestä mallikohtaisesta Groq-katosta**, deduplikoituna jaetun poolin mukaan. Kiintiöt, jotka avautuvat vasta alueellisen henkilöllisyyden tarkistuksen jälkeen (tällä hetkellä: ModelScope), näytetään erikseen, +~6M alueellisen henkilöllisyyden vahvistuksen takana, eikä niitä koskaan lasketa mukaan yläotsikkoon. Tulos pysyy näkyvissä kojelaudassa (`/dashboard/free-tiers`).
> Animoitu yhteenveto live-sivusta `/dashboard/free-tiers`. Koko menetelmäkuvaus (poolien deduplikointi, hyvitystasot, palveluntarjoajien ehdot): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Nämä luvut tarkastetaan uudelleen kahden viikon välein live-luetteloa vastaan, ja ne **liikkuvat molempiin suuntiin** — palveluntarjoaja lopettaa ilmaistason ja luku laskee; uusi tulee mukaan ja luku nousee. Julkaisemme sen, mitä luettelo todella laskee — emme koskaan ylöspäin pyöristettyä parasta mahdollista tapausta.
⭐ Anna repolle tähti, jos OMNIROUTE auttoi sinua säästämään rahaa ja tekemään työstäsi helpompaa.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Liity yhteisöön
**👋 Seuraa ylläpitäjää — saat uudet palveluntarjoajat, julkaisut ja vinkit ensimmäisenä:**
[](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)
**Kysymykset, palveluntarjoajavinkit, tiekartta ja tuki → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portaali](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Yhdyskäytävä kasvaa edelleen
## 🆓 Asenna, yhdistä palveluntarjoaja ja reititä sitten yhden päätepisteen kautta
```bash
# Kun olet yhdistänyt palveluntarjoajan, kopioi OmniRoute-avaimesi kohdasta 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` tarvitsee kelvollisen reitin. Uudessa asennuksessa ei välttämättä ole kelvollisia avaimettomia kohteita, ja avaimeton palveluntarjoaja saattaa hylätä kolmannen osapuolen asiakkaat. Palveluntarjoajat, joiden merkintä on `tos: avoid`, mukaan lukien Kiro, jätetään oletusarvoisesti automaattisen reitityksen ulkopuolelle; tilin yhdistäminen ei ohita tätä asetusta. Tutustu [ilmaistasojen oppaaseen](docs/getting-started/FREE-TIERS-GUIDE.md) ennen palveluntarjoajan valitsemista.📦 Kopioitavat ja liitettävät pika-aloitusskriptit **Pythonille, Node.js:lle, PHP:lle ja cURLille** → [`examples/quickstart/`](examples/quickstart/)
# 💥 Lupaus
# 🤔 Miksi OmniRoute?
## 🤝 Avointen lähdekoodin ystäviemme tukema
> **Haluatko liittyä avoimen lähdekoodin ystäväksi?** Nämä ovat yrityksiä, jotka tukevat avointa lähdekoodia ja auttavat pitämään OmniRouten toiminnassa – ja me kerromme julkisesti, mihin jokainen heidän meille antamansa token menee. Ota yhteyttä: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Kiitos Kimille (Moonshot AI), perustajajäsenellemme avoimen lähdekoodin ystävälle, tämän projektin tukemisesta! Kimi on tekoälylaboratorio avoimen painon K2- ja K3-malliperheiden takana – Kimi K3 tarjoaa 1M-tokenin konteksti-ikkunan, natiivin näön ja huipputason koodauksen murto-osalla suljettujen mallien hinnoista, ja toimii suoraan Claude Coden, Codexistin ja kaikkien OmniRouten tukemien koodaustyökalujen kanssa.
Mitä Kimin tuki mahdollistaa: Kimin API-krediitit mahdollistavat OmniRouten tekoälyllä validoidun julkaisuputken – *Kimi K3:n tehostaman yhdistämisvalidoinnin* vaiheen, joka tarkistaa jokaisen pull-pyynnön ennen sen julkaisua – sekä päivittäisen ominaisuuskehityksen. Ensiluokkainen Kimi-tuki toimitetaan molemmilla tavoilla: suora [Kimi API](https://platform.kimi.ai?track_id=track-8197581fdd7d4139a0f562e4a03c3798&aff=omniroute) (kimi-k3) ja [Kimi Code -koodaussuunnitelma](https://www.kimi.ai/code?aff=omniroute) (OAuth ja API-avain). OmniRoute on myös ensimmäinen brasilialainen avoimen lähdekoodin projekti Kimin tukiohjelmassa. Hanki Kimi API-avain 15 % lisäkrediiteillä →
Cheaper Inference cheaperinference.com
Kiitos Cheaper Inferencelle, OmniRouten avoimen lähdekoodin ystävälle, tämän projektin tukemisesta! Cheaper Inference on kustannusten mukaan järjestetty yhdyskäytävä, joka jälleenmyy 42 huippumallia – Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok ja MiniMax – yhden OpenAI-yhteensopivan päätepisteen takana, reitittäen jokaisen pyynnön edullisimmalle kelvolliselle palveluntarjoajalle veloittamatta koskaan yli mallinvalmistajan listahinnan.
Ensiluokkainen tuki OmniRoutessa: Chat Completions, natiivi /v1/responses-päätepiste, näkö, työkalukutsut ja 3 kuvamallia (grok-imagine, nano-banana-pro, nano-banana-2, saatavilla nimellä cheaperinference/<model>). Hanki API-avain →
Linkit, joissa on tunniste aff=omniroute, ovat kumppanilinkkejä. Ne rahoittavat projektia ilman lisäkustannuksia sinulle. 🎟️ Kumppanitarjoukset — ilmaisia rekisteröitymiskuponkeja palveluntarjoajilta, joita emme sponsoroi (napsauta laajentaaksesi)Tämä osio on tarkoitettu vain viittaus-/kuponkikoodeille. Sponsoroidut kumppanuudet löytyvät yllä olevasta osiosta **🤝 Avointen lähdekoodin ystäviemme tukema**. OmniRoutella ei ole sponsorointia tai kumppanuutta tässä lueteltujen palveluntarjoajien kanssa – nämä ovat julkisia kuponkeja, joita kuka tahansa voi käyttää.
AgentRouter agentrouter.org
AgentRouter — kumppanirekisteröityminen · $100 ilmaista krediittiä rekisteröitymisen yhteydessä (ilmainen palvelin, odotettavissa korkeampi viive – paras testaukseen, ei tuotantoon). Ensiluokkainen tuki OmniRoutessa versiosta v3.8.50 alkaen: Chat Completions, Anthropic-yhteensopiva tiedostomuoto ja OpenAI-yhteensopiva polku. Saatavilla olevia malleja ovat muun muassa claude-opus-4-8, claude-opus-5, gpt-5.6-sol. Hanki 100 $ →
⚠️ Kumppanilinkki – OmniRoutella ei ole sponsorointia tai kumppanuutta tämän palveluntarjoajan kanssa.
Tiedätkö toisen palveluntarjoajan, jolla on antelias ilmainen rekisteröitymiskuponki, joka hyödyttää OmniRouten käyttäjiä? Avaa ongelma, niin lisäämme sen tänne.
## 🎯 Yhdistelmät — lippulaivaominaisuus
> **Yhdistelmä** on malliketju, jonka kautta OmniRoute reitittää **automaattisesti**. Jos kiintiö loppuu, palveluntarjoaja vikaantuu tai kustannukset nousevat äkillisesti, yhdistelmä voi siirtyä seuraavaan soveltuvaan ja toimintakuntoiseen malliin. 🛡️
### ⚡ Ei määrityksiä — käytä vain mallia `auto`
Yhdistelmää ei tarvitse luoda. Aseta malliksi `auto` (tai jokin sen muunnelma), niin OmniRoute rakentaa yhdistetyistä palveluntarjoajistasi virtuaalisen yhdistelmän, joka pisteytetään reaaliaikaisesti:
Mallitunnus
Mitä se optimoi
auto
🎯 Tasapainoinen oletus (LKGP — pysyy viimeksi toimineessa palveluntarjoajassa)
auto/coding
🧑💻 Laatua ensisijaisesti painottava koodin generointi
auto/fast
⚡ Pienin viive ensin
auto/cheap
💰 Halvin tokenikohtainen hinta ensin
auto/subscription
🎟️ Vain jo maksamasi tilauksen kiintiö — sulkeutuu virhetilanteessa eikä koskaan siirry laskutettavaan varavaihtoehtoon (opas)
auto/thrifty
🪜 Ensin tilauspaketin kiintiö, sitten askel kerrallaan halvimpiin maksullisiin vaihtoehtoihin — takaisin tilauspakettiin sen nollauduttua (opas)
auto/offline
🔋 Eniten kiintiö- tai nopeusrajoitusvaraa ensin
auto/smart
🔭 Laatu ensin + 10 % kokeilua parempien mallien löytämiseksi
auto/lkgp
📌 Eksplisiittinen pysyvyys viimeksi toimivaksi tiedetyssä palveluntarjoajassa
auto/chaos
🧪 Rinnakkainen hajautus mallipaneelille (yksi palveluntarjoajaa kohden, oletuksena 5) palauttaa yhden vastauksen; yksi kutsu ylävirtaan paneelin kutakin mallia kohden, ei vikojen injektointia
##
### 🔀 Tai rakenna omasi — 20 reititysstrategiaa
Kaikki **20** strategiaa — yhdistele vapaasti yhdistelmän jokaisessa vaiheessa:
#
Strategia
Mitä se tekee
1
priority
Ensisijaiseen kohteeseen perustuva järjestetty luettelo — käytä kukin loppuun ennen seuraavaa 🥇
2
fill-first
Käytä kunkin kohteen kiintiö kokonaan ennen siirtymistä seuraavaan
3
weighted
Painotettu satunnaisvalinta kohdekohtaisten painojen perusteella
4
round-robin
Kierrä kohteita järjestyksessä
5
p2c
Satunnainen kuormantasaus kahden vaihtoehdon menetelmällä
6
least-used
Valitse kohde, jolla on pienin nykyinen kuormitus
7
random
Tasajakaumaan perustuva satunnaisvalinta (ilman kaksoiskappaleita)
8
strict-random
Satunnaisvalinta poistamatta toistoja 🎲
9
cost-optimized
Minimoi pyyntökohtainen hinta reaaliaikaisten luettelohintojen perusteella 💸
10
headroom
Valitse kohde, jolla on eniten kiintiötä jäljellä
11
quota-weighted
Ohita loppuun käytetyt tilit ja valitse sitten suhteessa jäljellä olevaan kiintiöön ÷ käsiteltävänä olevaan kuormaan — nykyiset keskustelut pysyvät kiinnitettyinä ⚖️
12
reset-window
Suosi kohdetta, jonka kiintiöjakso nollautuu pian
13
reset-aware
Järjestä kiintiön nollautumisajan mukaan — lyhyet jaksot ensin 📊
14
context-relay
Siirrä konteksti kohteiden välillä pitkissä keskusteluissa 🧠
15
context-optimized
Valitse nykyiseen kontekstikokoon parhaiten sopiva kohde
16
cache-optimized
Kiinnitä jokainen uudelleenkäytettävä kehotteen etuliite samaan tiliin — maksimoi kehotteiden välimuistiosumat 🎯
17
lkgp
Viimeksi toimivaksi tiedetty polku — kiinnittää viimeksi onnistuneeseen palveluntarjoajaan ja turvautuu sitten sääntöihin
18
auto
16 tekijän reaaliaikainen pisteytys kaikille yhteyksille 🤖
19
fusion
Hajauttaa pyynnön mallipaneelille, minkä jälkeen arvioija koostaa yhden vastauksen 🧬
20
pipeline
Ketjuta vaiheet — kunkin kohteen tuloste syötetään seuraavalle 🔗
Auto-Combo-moottori pisteyttää jokaisen ehdokkaan **16 tekijän** perusteella (toimintakunto, kiintiö, kustannukset, viive, soveltuvuus tehtävään, laatu, istunnon saatavuus…) — katso [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Vikasietoisuus on sisäänrakennettu (3 itsenäistä kerrosta)
📖 [Auto-Combo-moottori](docs/routing/AUTO-COMBO.md) · [Vikasietoisuusopas](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Mikä erottaa OmniRouten muista
📊 Täydellinen menetelmäkuvaus & ominaisuuskohtaiset tiedot verrattuna 9routeriin, OpenRouteriin, CLIProxyAPI:in & LiteLLM:ään → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Tue OmniRoutea
OmniRoute on MIT-lisensoitu, ja sitä ylläpidetään avoimesti. Jos se säästää aikaasi tai rahaasi, voit auttaa pitämään sen riippumattomana valitsemalla sinulle sopivan tavan. Sponsorointi ei koskaan vaikuta reitityksen prioriteettiin; sillä saa näkyvyyttä, ei parempaa sijoitusta.
⚠️ Lähetä kutakin valuuttaa vain sille ilmoitetussa verkossa — väärän verkon käyttäminen voi johtaa varojen menettämiseen.
🐛 Löysitkö virheen tai haluatko antaa palautetta? Avaa [keskustelu](https://github.com/diegosouzapw/OmniRoute/discussions).
Kehittäjän huomautukset: Projekti saattaa kehittäjien käytännön työn helpottamiseksi luoda paikallisen .env-tiedoston npm install/postinstall -vaiheessa. Tämä tiedosto ohitetaan tarkoituksella .gitignore-tiedoston avulla (katso .gitignore), eikä sitä saa koskaan commitoida — jos se commitoidaan vahingossa, vaihda kaikki paljastuneet salaisuudet ja poista tiedosto historiasta. Ohjeita paikallisten ympäristötiedostojen ja salaisuuksien hallintaan on tiedostossa docs/DEVELOPER-ENVIRONMENT.md.
## 📡 OmniRoute Radar
Ilmaistason tärkein luku on edelleen **~1,62 mrd. tokenia/kuukausi** yllä kuvatusta
resurssivarantojen päällekkäisyydet poistavasta luettelosta. Palveluntarjoajien tilapäiset rekisteröitymishyvitykset voivat erikseen nostaa ensimmäisen
kuukauden määrän **~2,22 miljardiin**. Radar on valinnainen, allekirjoitettu luetteloa täydentävä taso käyttäjille, jotka haluavat ajantasaisempaa
tietoa ilmaismallien saatavuudesta OmniRoute-julkaisujen välillä; yhteisöluettelo ja kaikki nykyiset ilmaiset
ominaisuudet säilyvät maksuttomina.
Tukijat voivat saada reaaliaikaisen luettelon ja tietoa palveluntarjoajien lisämahdollisuuksista. Sen erillinen,
muuttuva enimmäismäärä on **enintään noin 3 mrd. tokenia/kuukausi** palveluntarjoajien saatavuuden mukaan.
Tämä enimmäismäärä ei ole tae: palveluntarjoajat voivat muuttaa kiintiöitä, kelpoisuusehtoja, malleja tai alueita
milloin tahansa.
Radar on valinnainen ja käyttää vain GET-pyyntöjä. OmniRoute-asiakasohjelma ei lähetä kehotteita, liikennetietoja, palveluntarjoajien
määrityksiä, käyttötelemetriaa tai ilmoitusten ohittamista koskevaa paikallista tilaa. Lisätietoja kelpoisuudesta ja
nykyisestä luettelosta on osoitteessa **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Uutta
> Viimeisimmät kohokohdat versioväliltä **v3.8.20 → v3.8.53**. Täydellinen muutoshistoria on tiedostossa [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ `quota-weighted`-reititys** — 20. yhdistelmästrategia ohittaa kiintiönsä käyttäneet tilit ja valitsee sitten muiden joukosta suhteessa jäljellä olevaan kiintiöön ÷ käynnissä olevaan kuormaan pitäen nykyiset keskustelut kiinnitettyinä. → [Automaattinen yhdistelmä](docs/routing/AUTO-COMBO.md)
- **🧰 Headless-tila** — `omniroute serve --headless` (tai `OMNIROUTE_HEADLESS=1`) suorittaa vain `/v1/*`-välityspalvelinmoottorin poistamalla hallintapaneelin ja vain hallintapaneelin käyttämät alijärjestelmät käytöstä. → [Headless-tila](docs/guides/HEADLESS.md)
- **🔎 Mallien löytäminen** — `/v1/models` suodattaa ominaisuuden, kontekstin, tyypin ja tekstin perusteella, ja `POST /v1/models/query` palauttaa lyhyen deterministisen valintalistan samalla avainkohtaisella näkyvyydellä. → [API-viite](docs/reference/API_REFERENCE.md)
- **🔑 Avainkohtainen reitityksen hallinta** — kiinnitä API-avain yhteen malliin tai yhdistelmään asetuksella `forcedModel` ja lisää tai poista avaimen malleja ja yhdistelmiä atomisesti (`/api/keys/{id}/access`). → [API-viite](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Tarkemmat henkilötietojen hallintatoiminnot** — tyyppikohtainen valinta, jopa 20 validoitua mukautettua peittokuviota ja tyyppikohtaiset tunnistuslaskurit; itse peittäminen on edelleen erikseen käyttöönotettava ominaisuus. → [Suojaukset](docs/security/GUARDRAILS.md)
- **🌍 67 kieltä** — hallintapaneeli, dokumentaation peilisivustot ja CLI; `npm run i18n:add-locale` lisää kielen kaikkialle yhdellä komennolla. → [i18n-opas](docs/guides/I18N.md)
- **🎛️ OmniConductor** — saapuvan A2A-liikenteen delegointi agenttijoukollesi, Conductor-taidot Agent Cardissa sekä hallintapaneeli Faro-pikapuheäänikeskustelulla. → [A2A-palvelin](docs/frameworks/A2A-SERVER.md)
- **🛂 Mukautuva hyväksyntä ja ylikuormitussuojaus** — raskaat keskustelupyynnöt asetetaan jonoon 503-virheen palauttamisen sijaan, ja käytössä ovat yhteyskohtaiset atomiset RPM-liukuvat vuokraukset. → [Vikasietoisuusopas](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Kanoninen `/v1/models`-järjestys** — yksi yhtenäinen palveluntarjoajan mukaan ryhmitelty lohko kutakin palveluntarjoajaa kohden (yhdistelmät kiinnitettyinä ensin), yhdenmukaisena kaikissa luettelolähteissä. → [API-viite](docs/reference/API_REFERENCE.md)
- **🗜️ Pakkauksen vahvistaminen** — oletusarvoisesti käytössä oleva purkamissuojus, Caveman-paketit kielille DE / FR / JA + kiina (wényán) sekä RTK-suodattimet Gradlelle ja .NETille. → [Pakkaus](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Rehelliset kiinteähintaiset kustannukset** — tilaus- ja ohjelmointipakettien palveluntarjoajien kustannusanalytiikka näyttää **$0**; budjetin, kiintiön ja reitityksen arviointi jatkuu. → [API-viite](docs/reference/API_REFERENCE.md)
- **⚖️ Quota-Share-reititys** — jaa yhteisen tilin kiintiö oikeudenmukaisesti yhdistettyjen avainten kesken ja lainaa käyttämättömät osuudet muille työn säilyttämiseksi. → [Vikasietoisuusopas](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 CLI:n/agentin määritys yhdellä komennolla** — 15 rekisteröityä `setup-*`-komentoa; `omniroute run` käynnistää 7 CLI:tä (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` tukee 11 kohdetta sekä interaktiivista palveluntarjoajan ja mallin valitsinta ja kontekstikohtaisia suosikkeja. → [CLI-integraatiot](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Etätila** — ohjaa OmniRoute-etäinstanssia rajatuilla tunnisteilla (`connect` / `contexts` / `tokens`) sekä VPS-asennuksiin tarkoitetulla `antigravity`-OAuth-apuohjelmalla. → [Etätila](docs/guides/REMOTE-MODE.md)
- **🧭 Älykkäämpi automaattinen reititys** — `auto/:`-yhdistelmät, **Fusion** (mallipaneeli + arvioija), tehtävät huomioiva reititys sekä pyyntökohtaiset mallin, tilan ja USD-budjetin ohitukset. → [Automaattinen yhdistelmä](docs/routing/AUTO-COMBO.md)
- **🗜️ Laajennettava pakkaus** — 12 yhdisteltävää moottoria + Compression Studios: LLMLingua-2, kaksitasoinen Ultra, omniglyph, vaihekohtainen uskollisuusportti, GCF v3.2 ja vetämällä järjesteltävä editori. → [Pakkaus](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Läpinäkyvä MITM-salauksen purku (TPROXY)** — sieppaa välityspalvelimen ympäristömuuttujat ohittavat CLI:t SNI-kohtaisen CA:n ja luottamussäilön asennusohjelman avulla. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Kustannustelemetria kaikkialla** — `X-OmniRoute-*`-kustannus-/käyttöotsakkeet jokaisessa päätepisteessä, välimuistin osuman säästöotsake ja avainkohtaiset USD-kulutuskiintiöt. → [API-viite](docs/reference/API_REFERENCE.md)
- **🧠 Hallitsemasi muisti** — oletusarvoisesti pois käytöstä, erikseen käyttöön otettava int8-vektorikvantisointi + tyypitetty häivytys sekä pyyntökohtainen `x-omniroute-no-memory`. → [Muisti](docs/frameworks/MEMORY.md)
- **🛡️ Tietoturva** — kehotteensyöttöhyökkäysten suojaus jokaisella LLM-reitillä (red team -testikokoelma), erikseen käyttöön otettava tunnistetietojen peittosuojaus (peittää vuotaneet API-avaimet/salaisuudet molempiin suuntiin), ilmainen DuckDuckGo-verkkohaku viimeisenä vaihtoehtona sekä valinnainen OIDC-kirjautumisportti hallintapaneelille (salasanakirjautuminen säilyy aina käytettävissä). → [Suojaukset](docs/security/GUARDRAILS.md)
- **🖼️ Uudet päätepisteet** — `/v1/ocr` (Mistral OCR) ja `/v1/audio/translations` (Whisper-tyylinen) täydentävät mediatoiminnot. → [API-viite](docs/reference/API_REFERENCE.md)
- **🎨 Kuvien / videoiden / äänen generointi** — yksi API medialle: xAI Grok Imagine ja Novita AI -video, ComfyUI, Magnific, Adobe Firefly, Segmind sekä puhepalveluntarjoajat, kuten ElevenLabs. → [API-viite](docs/reference/API_REFERENCE.md)
- **🌍 Käyttöönotto ja operointi** — käänteisen välityspalvelimen `basePath`, selaimen kielen automaattinen tunnistus, avainkohtainen laitteiden seuranta, pääkäyttäjätunnukseton MITM-luottamus ja zh-TW-lokalisointi. → [Ympäristö](docs/reference/ENVIRONMENT.md)
- **🤝 Lisää palveluntarjoajia ja agentteja** — pilviagentit (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) selain- ja OAuth-kirjautumisella, Ollaman ensiluokkainen kortti, Claude Opus 5 ja Sonnet 5, virallinen Kimi-kumppanuus (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… sekä uudistettu **375 palveluntarjoajan luettelo**. → [Palveluntarjoajat](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Reitityksen läpinäkyvyys** — jokaisessa vastauksessa on `X-OmniRoute-Decision`-otsake, joka ilmoittaa vastauksen toimittaneen strategian/palveluntarjoajan/viiveen; uusi `cache-optimized`-yhdistelmästrategia ja Auto-Combon `cacheAffinity`-tekijä reitittävät toistuvat pyynnöt takaisin yhteyteen, jossa välimuistiin tallennettu etuliite sijaitsee, ja vain luku -tyyppinen `/v1/auto-combo/{channel}/candidates`-päätepiste tuo näkyviin `auto/*`-kanavan reaaliaikaisen ehdokasjoukon. → [Automaattinen yhdistelmä](docs/routing/AUTO-COMBO.md)
- **⚡ Paikallinen suorituskyky ja infra** — paikallinen Redis yhdellä napsautuksella, Cloudflare Workers / Deno Deploy -välityspalvelimen käyttöönottotyökalut, Bifrost ja Mux valvottuina sulautettuina palveluina. → [Sulautetut palvelut](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Myös mukana** — liitännäiskehys + markkinapaikka, Omni/Agent/GitHub-taitokehykset, Obsidian-holvin integraatio (22 MCP-työkalua), OpenAI-yhteensopivat Batch- ja Files-rajapinnat, semanttinen vastausvälimuisti, pelillistäminen tulostauluineen, ACP-agenttien löytäminen (15 sisäänrakennettua agenttia), ajoitettu lokien vienti BigQueryyn, `auto/chaos` rinnakkainen monimallihajautus, Telegram-bottisilta, sovelluksen sisäinen versiohallinta ja LMArena-ELO-sijoitukset ilmaisille tarjoajille. → [Dokumentaatio](docs/README.md)
## 🤖 Yhteensopivat komentorivityökalut ja koodausagentit
> Yksi määritys — `http://localhost:20128/v1` — ja **jokainen** tekoäly-IDE tai komentorivityökalu toimii ilmaisilla ja edullisilla malleilla.
**Käynnistä mikä tahansa tuettu CLI OmniRouten kautta yhdellä komennolla** — määritystiedostoja ei kirjoiteta,
tunnistetiedot lisätään prosessikohtaisesti, ja Qwen/Gemini saavat väliaikaisen eristetyn kotihakemiston:
```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"
# Tai valitse palveluntarjoaja ja malli vuorovaikutteisesti sekä kirjoita työkalun oma määritys:
omniroute configure codex # myös: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Jokainen komento noudattaa aktiivista etäkontekstia (`omniroute connect `), `--dry-run`
esikatselee tarkat ympäristömuuttujat ja argumentit suorittamatta komentoa, ja `--api-key-env NAME` pitää salaisuudet poissa
komentotulkkisi historiasta. → [CLI-integraatiot](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 375 tekoälytarjoajaa — 153 luettelossa merkitty ilmaiseksi
> **375 rekisteröityä tarjoajaa** kanonisissa chat-, media-, search-, local-, cloud-agent- ja system-kokoelmissa, mukaan lukien **153, joilla on `hasFree: true` -löytömetatieto**. Chat-mallirekisteri kattaa **239 tarjoajaa / 3,059 erillistä tarjoaja–malli-paria / 1,475 raakaa mallitunnistetta**; erillisessä ilmaisbudjettiluettelossa on **467 mallikohtaista riviä**, **34 toistuvaa poolia** ja **51 toistuvaa/avaimetonta ikuisesti ilmaista tarjoajaa**. Nämä ovat tarkoituksella eri nimittäjiä; määritelmät ja pooleittain deduplikoidut laskelmat löytyvät kohdasta [Tarjoajaviite](docs/reference/PROVIDER_REFERENCE.md) ja [Ilmaistasot](docs/reference/FREE_TIERS.md).
### 🏢 Jokainen merkittävä laboratorio — yhden päätepisteen kautta
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…ja yli 350 muuta — jokainen kuvake haetaan livenä dashboardin tarjoajaluettelosta. 📖 [Tarjoajaviite](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Ikuisesti ilmainen — 0 $, ei korttia
OpenCode Zen DeepSeek V4, Nemotron 3 Ei token-ylärajaa
Kilo Code Autorouter, Tencent Hy3 Ilmainen ikuisesti
### 🧩 Uutta: OmniRoute VS Coden natiivissa Copilot Chatissa
> Ei uutta sivupalkkia eikä uutta keskustelukäyttöliittymää — kaikki OmniRouten tarjoamat mallit näkyvät suoraan
> **jo käyttämässäsi Copilot Chatin mallivalitsimessa**. VS Code 1.122:sta alkaen palveluntarjoajien mallit toimivat
> ilman GitHub-kirjautumista tai Copilot-tilausta — agenttitila, työkalukutsut ja konenäkö
> ilmaiseksi.
Asenna **[OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)**-laajennus, määritä se käyttämään
OmniRoute-palvelintasi (oletuksena `localhost:20128`) ja avaa sitten Copilot Chat → mallivalitsin
→ **Hallitse malleja…** → **OmniRoute**.
Editorissa: avaa **Laajennukset**-näkymä, etsi **"OmniRoute"** ja napsauta **Asenna**
— toimii samalla tavalla kummassakin kaupassa. Lähdekoodi, ongelmat ja julkaisuohjeet löytyvät osoitteesta
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [VS Code Copilot Chat -opas](docs/guides/VSCODE-COPILOT.md) — käyttöönotto, mitä valitsin näyttää, hallintapaneeli välilehdessä, vianmääritys
> `omniroute serve` toimii parhaiten, kun se on aina käynnissä. **[OmniRouteTray](https://github.com/zoispag/omniroute-tray)**
> tekee siitä macOS:n huolettoman valikkorivisovelluksen: se käynnistää palvelimen, pitää sen toiminnassa
> uudelleenkäynnistysten jälkeen, päivittää sen paikallaan ja tuo reaaliaikaisen tunnusbudjettisi yhden napsautuksen päähän — **ilman
> avoimeksi jätettävää pääteikkunaa tai jatkuvasti huollettavaa `npm install -g omniroute` -asennusta.**
Se on rakennettu [Tauri v2:lla](https://v2.tauri.app/) (Rust-ydin on pyöristysvirheen kokoinen), ja se sisältää
oman allekirjoitetun Node 24 -suoritusympäristönsä sekä hallinnoi sovelluksen omistamaa OmniRoute-asennusta, joten se ei koskaan kilpaile
globaalin `node`/`bun`-asennuksesi kanssa. Se **jakaa nykyiset `~/.omniroute/`-määrityksesi ja tietokantasi** — joten kyseessä on
sama jo käyttämäsi OmniRoute, nyt vain hattu päässään. 🎩
Mitä se tekee
Miten
🟢 Valvoo palvelinta
Käynnistää komennon omniroute serve ja ottaa jo käynnissä olevan instanssin hallintaansa sen monistamisen sijaan
📊 Reaaliaikainen käyttö yhdellä silmäyksellä
Palveluntarjoajien kiintiöpalkit, Claude-istuntojen ja viikkokohtaisten rajojen nollautumislaskurit sekä 30 päivän kustannuserittely
🔄 Päivittyy automaattisesti paikallaan
Vaiheistettu asennus, atominen vaihto ja palautus epäonnistumistilanteessa — aina uusin julkaisu käytössä
🚀 Käynnistyy kirjauduttaessa
Valinnainen käynnistys kirjautumisen yhteydessä; vain valikkorivillä, ei Dock-kuvaketta
🩺 Diagnostiikka ja lokit
Diagnostiikka ja pääsy palvelinlokeihin yhdellä napsautuksella
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Lataatko mieluummin? Hae uusin .dmgjulkaisuista. Lähdekoodi, ongelmat ja koontiohjeet
löytyvät osoitteesta zoispag/omniroute-tray.
💛 Yhteisöprojekti, jonka tekijä on @zoispag — ei virallinen OmniRoute-julkaisu.
> Palvelimen lisäksi OmniRoute on **täydellinen komentoriviohjaamo**, jossa on **yli 80 komentoa** sekä avoimet agenttiprotokollat, joiden avulla tekoälyagentti voi hallita sitä **itsenäisesti**.
### ⌨️ Todellinen CLI (ei pelkkä `start`)
```bash
omniroute # käynnistä yhdyskäytävä ja hallintapaneeli (portti 20128)
omniroute chat # interaktiivinen TUI-keskusteluasiakas (vinoviivakomennot: /model /combo /skill /memory)
omniroute setup # ohjattu ensikäynnistyksen määritys
omniroute doctor # diagnosoi palveluntarjoajat, portit ja natiiviriippuvuudet
```
### 🛰️ Etätila — suorita CLI täällä ja OmniRoute VPS-palvelimella
Onko OmniRoute palvelimella? Hallitse sitä kannettavaltasi **samalla CLI:llä**. Kirjaudu kerran
käyttöoikeuksiltaan rajatulla tunnuksella, minkä jälkeen jokainen komento kohdistuu etäpalvelimeen.
```bash
omniroute connect 192.168.0.15 # salasana → rajattu tunnus, tallennetaan kontekstina
omniroute models # ← suoritetaan ETÄPALVELIMELLA
omniroute configure codex # ← valitsee etämallin ja kirjoittaa paikallisen Codex-profiilin
omniroute tokens create --name ci --scope read # luo suppeampia tunnuksia muille koneille
omniroute contexts use default # ← vaihda takaisin paikalliseen palvelimeen
```
Tunnusten käyttöoikeustasot ovat `read` / `write` / `admin`; prosesseja käynnistävät reitit ovat käytettävissä vain loopback-osoitteesta.
📖 [Etätila](docs/guides/REMOTE-MODE.md)
### 🤝 Yhdistä agentti — ja se hallitsee OmniRoutea itse
Aseta OmniRoute käytettäväksi **MCP:n**, **A2A:n**, **REST API:n**, **webhookien** tai **etä-CLI:n** kautta — mikä tahansa kykenevä agentti (tai oma koodisi) saa koko yhdyskäytävän hallintaansa: reitityksen, palveluntarjoajat, yhdistelmät, välimuistin, pakkauksen ja muistin — itsenäisesti. Alla olevat HTTP-päätepisteet ovat käytettävissä osoitteessa `http://localhost:20128`.
Rajapinta
Päätepiste / komento
Käyttötarkoitus
🧰 MCP (stdio)
omniroute --mcp
Liitä Claude Desktopiin, Cursoriin tai mihin tahansa MCP-asiakasohjelmaan
🌊 MCP (HTTP)
/api/mcp/stream
MCP-etäyhteys — 110 työkalua, 33 käyttöoikeusaluetta (valinnainen valvonta), täydellinen kirjausketju
📡 MCP (SSE)
/api/mcp/sse
Suoratoistava MCP-siirtotapa
🤝 A2A
/.well-known/agent.json
Agenttien välinen viestintä, JSON-RPC 2.0 + SSE, 6 taitoa
🌐 REST API
/v1/*
OpenAI-yhteensopiva — keskustelut, upotukset, kuvat, ääni ja OCR
🔔 Webhookit
/api/webhooks
Lähetä pyyntö- ja kiintiötapahtumat Slackiin, Discordiin, Telegramiin tai mihin tahansa URL-osoitteeseen
```bash
# Anna Claude Codelle kaikki OmniRoute-työkalut MCP:n kautta:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [MCP-palvelin](docs/frameworks/MCP-SERVER.md) · [A2A-palvelin](docs/frameworks/A2A-SERVER.md) · [Agenttiprotokollat](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Säästä 15–95 % tokeneista — automaattisesti
### 📖 Miten se toimii — putki, arkkitehtuuri ja säästölaskenta
Oletusarvoinen pinottu yhdistelmä ajaa `RTK → Caveman`. Kun molemmat vaikuttavat samaan työkalu-/kontekstidataan, säästöt kertautuvat:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Koodilohkot, URL-osoitteet, JSON ja jäsennetty data ovat **aina suojattuja** säilytysmoottorin toimesta.
> **Miksi käyttää monta tokenia, kun harva token riittää?** Jokainen pyyntö kulkee OmniRoute'n pakkausputken läpi **läpinäkyvästi** — ilman muutoksia asiakaspäässä. Se on nyt **12 yhdisteltävän moottorin pino**, jotka ajetaan järjestyksessä ja yhdistellään reititysyhdistelmäkohtaisesti — rakentuen ideoille [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua) ja [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR) pohjalta.
### 🧱 12 moottorin pino
Moottorit ajetaan putken järjestyksessä; jokainen on itsenäisesti päälle kytkettävissä ja konfiguroitavissa yhdistelmäkohtaisesti:
#
Moottori
Mitä se tekee
1
Session-Dedup
Pudottaa sisällön, joka toistuu vuorojen välillä (sisältöosoitettu, vuorojen välinen)
2
CCR
Arkistoi suuret lohkot noutomerkkien taakse, haetaan tarvittaessa
3
Lite
Tyhjän tilan ja kuva-URL-osoitteiden karsinta (vähäviiveinen perustaso)
4
RTK
Älykäs työkalutulosten suodatus, duplikaattien poisto ja katkaisu (komentotietoinen)
5
Responses Tool Output
Häviötön ensisijaisesti JSON + rajattu diagnostinen pakkaus shell-/patch-/haku-/build-tulosteille (Responses API)
6
Headroom
Häviötön taulukkomuotoinen tiivistys JSON-taulukoille (~30 %) sisällytetyn GCF-koodekin kautta
7
Relevance
Ekstraktiivinen lauseiden pisteytys viimeisintä käyttäjän kyselyä vasten
Kokeellinen konteksti kuvana -koodaus mitatulle Claude Fable 5:lle suoralla Anthropic-yhteydellä; GPT 5.6 -transformers pysyvät fail-closed-tilassa odottaen tarjoajan kuittauksia. Neljä pakkausprofiilia (aggressiivinen oletus, tasapainoinen, kooditurvallinen, läpivienti) (aggressiivisin; valinnainen)
Koodilohkot, URL-osoitteet ja jäsennetty data **säilytetään aina** tavulleen. **Yhden napsautuksen esiasetukset** yhdistävät moottorit:
Tila
Säästöt
Parhaiten sopii
🪶 Lite
~15 %
Aina päällä oleva turvallinen oletus
🪨 Standard (Caveman)
~30 %
Päivittäinen koodaus
⚡ Aggressive
~50 %
Pitkät työkalupainotteiset istunnot
🔥 Ultra
~75 %
Maksimaaliset säästöt
🧰 RTK
60–90 %
Shell-/testi-/build-/git-tuloste
🔗 Stacked (RTK → Caveman)
78–95 %
Sekalaiset kehotteet + työkalulokit
**Todellinen esimerkki — Standard-tila:**
> **Ennen (69 tokenia):** _"The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I would recommend using useMemo to memoize the object."_
>
> **Jälkeen (19 tokenia):** _"New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."_
>
> **Sama vastaus. 72 % vähemmän tokeneita. Ei lainkaan tarkkuuden menetystä.** ✅
**PT-BR-esimerkki — [Troglodita](https://github.com/leninejunior/troglodita)-tila:**
> **Ennen (42 tokenia):** _"Ongelma on, että komponentti renderöityy uudelleen, koska joka renderöintikierroksella luodaan uusi olion viittaus. Suosittelisin käyttämään `useMemo`."_
>
> **Jälkeen (12 tokenia):** _"Uudelleenrenderöinti: uusi viittaus joka kierroksella (inline-olio luodaan uudelleen). Käytä `useMemo`."_
>
> **Sama vastaus. ~70 % vähemmän tokeneita. Tekninen tarkkuus ennallaan.** ✅
### 🎚️ Moottoreiden tuolla puolen — tulostustyylit, adaptiivinen säädin ja pyyntökohtainen hallinta
Yllä olevat 12 moottoria kutistavat sen, mitä menee **sisään**. Kolme lisäkerrosta muovaavat **miten**, **milloin** ja mitä tulee **ulos**:
- **🪄 Output Styles** _(tulostusakselin ohjaus)_ — injektoi deterministisiä, välimuistiturvallisia vastauksen muotoiluohjeita; yhdisteltävissä, kukin `lite` / `full` / `ultra` -tehokkuudella. Tyylin lisääminen on yhden rivin rekisterimerkintä:
- **Terse prose** — pudota täyteaineet / artikkelit / lieventelyt; pidä tekninen sisältö tarkkana.
- **Less code** — "lazy senior dev" YAGNI: pienin toimiva muutos, ei pyytämätöntä rakennetta.
- **Ponytail (lazy senior dev)** — kiipeä YAGNI-tikapuita, korjaa juurisyy, pienin toimiva diff.
- **I have ADHD (action-first)** — seuraava toiminto edellä, vaiheet numeroitu, yksi konkreettinen seuraava askel, ei johdantoa.
- **Terse CJK (文言)** — klassisen kiinan ultratiiviis tyyli (lokaatiorajoitettu kieleen `zh`).
- **🎯 Adaptiivinen kontekstibudjetti** _(säädin)_ — yhden päälle/pois-tokenkynnyksen sijaan kasvata halvimmat ja häviöttömimmät moottorit vain niin pitkälle kuin on tarpeen, jotta **mahtuu mallin konteksti-ikkunaan**. Käytäntö: `reserve-output` (oletus, mallitietoinen) · `percentage` · `absolute`. Tila: `floor` (takaa mahtuminen) · `replace-autotrigger` (eksplisiittinen valintasi voittaa) · `off` (perinteinen kynnys).
- **🎛️ Missä pakkaus päätetään** _(etusijajärjestys, korkea → matala)_ — pyyntökohtainen `x-omniroute-compression`-otsake › reititysyhdistelmän ohitus › aktiivinen nimetty profiili › adaptiivinen / automaattinen laukaisu › paneelin oletus › pois. Sovellettu suunnitelma kajastuu takaisin `X-OmniRoute-Compression: ; source=` -vastausotsakkeessa.
Laukaise automaattisesti tokenkynnyksellä, kytke adaptiivinen säädin päälle, kiinnitä nimetty profiili, aseta kertaluonteinen pyyntökohtaisesti tai määritä putki reititysyhdistelmää kohden — mikä tahansa sopii työkuormaan. Valinnainen offline-**eval-harness** (`npm run eval:compression`) pisteyttää uskollisuuden vs. säästöt kiinnitetyllä korpuksella ennen kuin otat muutoksen käyttöön.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Pika-aloitus
**1) Asenna ja suorita**
```bash
npm install -g omniroute
omniroute
```
> 💡 Näetkö `npm warn ERESOLVE`- tai peer-dep-varoituksia? [Ne ovat vaarattomia](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Käytätkö npm 11:tä tai uudempaa?** npm voi estää paketin elinkaariskriptit, ellei niitä sallita. OmniRouten `postinstall` (`node scripts/build/postinstall.mjs`) tarvitaan valmistelemaan sen natiivit ajonaikaiset tiedostot. Salli npm:n varoituksessa nimetyt paketit asennettaessa globaalisti. OmniRouten 3.8.53 raportoimalle pakettijoukolle:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Voit käyttää tätä sallittujen luetteloa uudelleen tulevissa globaaleissa asennuksissa määrittämällä sen kerran ja asentamalla sitten normaalisti:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> Riippuvuusluettelo voi muuttua julkaisujen välillä; jos npm raportoi eri luettelon, käytä kyseisen varoituksen pakettinimiä. Paketin salliminen antaa sen asennusskriptien suorittaa.
> **Käytätkö Gemini Webiä tai toista web-evästepalveluntarjoajaa?** npm-paketti sisältää Playwrightin, mutta ei sen Chromium-binääriä. Katso [Playwright Chromium -asetukset](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium) -huomautus ennen ensimmäisen web-palveluntarjoajapyynnön tekemistä.
Kojelauta osoitteessa `http://localhost:20128` · API osoitteessa `http://localhost:20128/v1`.
**2) Yhdistä kelvollinen palveluntarjoaja omalla tililläsi**
Kojelauta → **Providers** → valitse palveluntarjoaja, jonka nykyiset ehdot ja kiintiö sopivat käyttötapaukseesi → lisää sen API-avain tai suorita sen tiliivirta loppuun. Ilmaistasot voivat vaatia rekisteröitymisen, hyväksynnän tai maksutavan. Tutustu [Ilmaistasojen oppaaseen](docs/getting-started/FREE-TIERS-GUIDE.md); avaimeton saatavuus ei ole taattua, ja palveluntarjoajat, jotka on merkitty `tos: avoid`, jätetään oletuksena `auto`-reitityksen ulkopuolelle.
**3) Osoita koodaustyökalusi**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Varmista, että se toimii**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Sinun pitäisi nähdä yhdistetyt mallisi listattuna. 🎉 Siinä kaikki — aloita koodaaminen, ja OmniRoute reitittää automaattisesti ja vaihtaa varamalliin puolestasi.
Jos asiakasohjelmasi ei voi lähettää mukautettuja otsakkeita, OmniRoute tarjoaa myös tokenisoidut yhteensopivuusalakset:
```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
```
Käytä näitä vain asiakkaille, jotka eivät voi liittää `Authorization: Bearer ...`. Otsakeautentikointi on edelleen ensisijainen tila.
## 📦 Lisää asennustapoja — Docker, lähdekoodi, 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` seuraa korkeinta **julkaistua** vakaata SemVer-versiota. Se ei seuraa git-haaraa `main`. Kiinnitä GitOps-käyttöä varten versioon `:X.Y.Z`. Katso [Docker-julkaisukanavat](docs/guides/DOCKER_GUIDE.md#release-channels). Levykuva määrittää arvoksi **`OMNIROUTE_MEMORY_MB=1024`**. Se riittää hallintapaneelille ja kevyeen keskusteluun. **Koodausagentit** (Claude Coden, Codexin, Grokin jne. tekemät `POST /v1/responses` -pyynnöt) tarvitsevat huomattavasti suuremman V8-keon, tai prosessi päätyy `FATAL ERROR` -virheeseen noin 12 GiB:n kohdalla kahden päällekkäisen pitkän kontekstin aikana. Mitoita säilö kekoa suuremmaksi (natiivipuskurit sijaitsevat V8:n ulkopuolella):
| Kuormitus | Keko (`-e OMNIROUTE_MEMORY_MB`) | Säilö (`--memory`) |
| -------------------------------------------------- | ------------------------------- | ------------------ |
| Hallintapaneeli / kevyt keskustelu | `1024` (levykuvan oletusarvo) | ≥2 g |
| Yksi koodausagentti | `8192` | ≥10 g |
| Kaksi samanaikaista pitkää `/v1/responses`-pyyntöä | `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
```
Koko taulukko: [Docker-opas — käytönaikainen RAM](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Dockerin esijulkaisukanava:** `diegosouzapw/omniroute:next` ja
> `diegosouzapw/omniroute:next-web` seuraavat nykyistä oletusarvoista `release/v*`-
> haaraa. Nämä muuttuvat tunnisteet on tarkoitettu vain julkaisemattomien korjausten testaamiseen,
> eikä niitä **tueta tuotantokäytössä**. Katso
> [Docker-julkaisukanavat](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
Tavallista `bun install` -asennusta ja yleistä asennusta (`bun install -g omniroute`) tuetaan Bun-ympäristön automaattisen tunnistuksen avulla:
- **Sisäänrakennettu `bun:sqlite`**: OmniRoute käyttää Bunin sisäänrakennettua `bun:sqlite`-ajuria Bun-ympäristössä ja käyttää varajärjestelmänä `better-sqlite3`:a Node.js-ympäristössä tai `sql.js`:ää.
- **Webpack-paketoijan automaattinen valinta kehityksessä**: Kehitysympäristö (`bun run dev`) tunnistaa Bunin automaattisesti ja poistaa Turbopackin käytöstä Webpackin hyväksi natiivien V8-sidosten yhteensopimattomuuksien estämiseksi. Tuotantokoontiversiot (`bun run build`) noudattavat muuttujaa `OMNIROUTE_USE_TURBOPACK` täsmälleen samoin kuin Nodessa: oletuksena käytetään Turbopackia ja arvolla `OMNIROUTE_USE_TURBOPACK=0` koonti tehdään Webpackilla (`Dockerfile.bun` tuo sen saataville `--build-arg`-argumenttina).
- **Erillinen Bun-Dockerfile**: Monivaiheinen `Dockerfile.bun` natiiveihin Bun-tuotantokäyttöönottoihin (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Asenna ja suorita Bunilla
bun install
bun run dev
```
**🛠️ Lähdekoodista**
```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
# Nix-flakejen käyttö
nix develop
npm run dev
# Tai devboxin käyttö
devbox run npm run dev
```
📖 [Docker-opas](docs/guides/DOCKER_GUIDE.md) — Compose-profiilit, Caddy HTTPS ja Cloudflare-tunnelit.
**🦭 Podman**
```bash
# 1. Valmistele liitoskohtaan sidottava datahakemisto
mkdir -p data
# 2. Vain Linux ja paikallinen pääkäyttäjätön Podman (ei koskaan Podman Machine -etäasiakas):
podman unshare chown 1000:1000 ./data
# 3. Aseta ajoympäristövihje, koosta paikallinen Compose-levykuva ja käynnistä
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
macOS- tai Windows-järjestelmässä Podman käyttää Podman Machine -etäympäristöä: ohita `podman unshare` ja
noudata [topologiakohtaisia datahakemiston ohjeita](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Podman-opas](contrib/podman/README.md) — Compose-koonnit, Podman Machine ja
Linux/systemd Quadlet -määritys.
**⚡ Nopeampi / kevyempi asennus (ohita natiivikoonti)**
Natiivi SQLite-moottori (`better-sqlite3`) on **valinnainen** riippuvuus, joten yleinen
asennus ei koskaan pysähdy odottamaan lähdekoodista kääntämistä: se käyttää esikäännettyä binääritiedostoa, kun sellainen vastaa
alustaasi ja Node-versiotasi, ja muussa tapauksessa siirtyy läpinäkyvästi puhdasta JavaScriptiä käyttävään moottoriin
(`node:sqlite` Node 22+:ssa, muussa tapauksessa pakettiin sisältyvä `sql.js` WASM) — koontityökaluja ei tarvita.
Voit ohittaa asennuksen jälkeisen natiivin esilämmityksen kokonaan (CI-ympäristöt, käyttöliittymättömät ympäristöt tai hitaat laitteet):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # Myös CI=1 ohittaa sen
```
Nopeimpiin asennuksiin kannattaa käyttää **pnpm**:ää (sisältöosoitteinen varasto + kovat linkit — katso edellä).
Käytä ilman hallintapaneelia toimivaan käyttöliittymättömään ajoympäristöön Dockerin `base`-profiilia (edellä) tai
[Termux-opasta](docs/guides/TERMUX_GUIDE.md). CLI ja verkkohallintapaneeli tarjotaan saman
prosessin kautta yhdessä portissa, joten erillistä vain CLI:n sisältävää pakettia ei tällä hetkellä ole.
Testikattavuusstrategia yli 56 000 staattiselle testideklaraatiolle yli 7 800 seurattavassa testitiedostossa
# ⭐ Huippuavustajat
> OmniRoutea muovaa intohimoinen avoimen lähdekoodin yhteisö. Nämä henkilöt ovat tehneet poikkeuksellisia panostuksia, jotka vaikuttavat suoraan projektin laatuun, vakauteen ja levikkiin. **Kiitos.**
### Ulkoiset avustajat yhdistettyjen pull requestien mukaan
Laskenta suoritettu 2026-10-18 15:09:09 UTC, käytössä live release/v3.8.52 -haaran kärki 656f01cb43. Sivutettu GitHub GraphQL -laskenta sisältää 9 191 yhdistettyä PR:ää: 3 834 repositorion omistajalta, 229 Dependabotilta, 6 muilta boteilta/sovelluksilta ja 5 122 ulkoista PR:ää 835 eri avustajalta. "Muutetut rivit" on GitHubin lisäykset + poistot ja sisältää generoidut tiedostot, lockfile-tiedostot, luettelot, käännökset ja dokumentaation; se on churnia, ei kirjoitettuja koodirivejä. 49 PR:ää raportoi GitHub-diffin yli 500 000 riviltä (esimerkiksi #13399, yhden palveluntarjoajan lisäys, luettelee 2 347 muutettua tiedostoa), mikä paisuttaa useita yllä olevia summia. Tasapisteet on sijoitettu samalle sijalle.
### GitHubiin liitetyt commitit
Tarkistettu uudelleen 2026-10-18 14:44:45 UTC: GitHubiin liitetyt commitit, jotka repositorion Contributors API raportoi `release/v3.8.52`-oletushaaralle. API palautti 849 identiteettiä (429 käyttäjää, 2 bottia, 418 anonyymiä); tämä taulukko jättää pois ylläpitäjän, botit ja anonyymit identiteetit ja säilyttää jaetut kilpailusijoitukset. Se eroaa sekä yllä olevasta yhdistettyjen PR:ien sijoituksesta että alla olevasta Git-metatietojen kartoituksesta.
> 🙏 Näiden avustajien ominaisuudet, bugikorjaukset ja infrastruktuuriparannukset ovat **ydinosa** sitä, mikä tekee OmniRoutesta luotettavan ja monipuolisen. Jokainen pull request, jokainen testitapaus ja jokainen i18n-käännöstiedosto on tärkeä. Avoimen lähdekoodin rakentavat heidän kaltaisensa ihmiset.
---
## 💖 Sponsorit
Sydämellinen kiitos kaikille, jotka rahoittavat OmniRoutea omasta pussistaan — jokainen lahjoitus auttaa pitämään projektin ilmaisena, riippumattomana ja kehityksessä.
… sekä muut, jotka haluavat pysyä yksityisinä 💛Julkiset GitHub Sponsors -sponsoroinnit tarkistettiin uudelleen 2026-10-18 GitHub Sponsors GraphQL API:n kautta: yhteensä 14 sponsoroinnista 11 on julkisia (6 aktiivista ja 5 aiempaa). GitHubin isActive-tila määrittää yllä olevat aktiivisuusmerkinnät; aiempia julkisia kertaluonteisia tukijoita kiitetään edelleen, ja yksityiset sponsorit pysyvät nimettöminä. Ko-fi-, Buy Me a Coffee-, Liberapay-, PIX- ja kryptolahjoituksia ei ole lueteltu, koska niistä ei ole julkista sponsoritietuetta.💖 Ryhdy sponsoriksi → — jokainen dollari auttaa pitämään OmniRouten ilmaisena ja riippumattomana.
## 👥 Yli 900 osallistujaa
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Auditoitu 2026-10-18 aktiivisen release/v3.8.52-haaran kärjessä ad160ab2d1 (6 826 committia): 993 normalisoitua ihmiskäyttäjän Git-identiteettiä — 707 esiintyy committien tekijöinä (ylläpitäjä mukaan lukien) ja 286 ainoastaan nimenomaisissa Co-authored-by-merkinnöissä. Laskennassa käytetään .mailmap-tiedostoa, sähköpostiosoitteita verrataan kirjainkoosta riippumatta, numeeriset ja tavalliset GitHubin noreply-osoitteet yhdistetään vain, jos ne sisältävät saman käyttäjätunnuksen, 26 botti-, agentti-, palvelu- tai paikkamerkki-identiteettiä jätetään pois eikä tavallisia sähköpostiosoitteita yhdistetä pelkästään samojen näyttönimien perusteella. 2026-08-24 tehty auditointi ilmoitti määräksi 639; kun tämä menetelmä suoritetaan uudelleen kyseisen auditoinnin pohjana olleelle kärjelle ac02c5b42f, tulokseksi saadaan 619, joten kasvu johtuu uusista osallistujista eikä väljemmästä menetelmästä.
### Näin osallistut
1. Tee repositoriosta fork
2. Luo haara **aktiivisen** `release/vX.Y.Z`-haaran kärjestä (ei `main`-haarasta) — katso [Haarautumis- ja julkaisumalli](docs/ops/BRANCHING_MODEL.md)
3. Luo ominaisuushaarasi (`git checkout -b feat/amazing-feature`)
4. Commitoi muutoksesi (`git commit -m 'feat: add amazing feature'`)
5. Pushaa haaraan (`git push origin feat/amazing-feature`)
6. Avaa pull request niin, että **base = kyseinen `release/vX.Y.Z`-haara**
Katso yksityiskohtaiset ohjeet tiedostosta [CONTRIBUTING.md](CONTRIBUTING.md).
### Uuden version julkaiseminen
```bash
# Luo julkaisu — npm publish suoritetaan automaattisesti
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Tähdet
## 🌍 StarMapper
## 🙏 Kiitokset
OmniRoute seisoo jättiläisten harteilla. Se sai alkunsa **[9router](https://github.com/decolua/9router)**-projektin haarana ja Go-projektin **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** TypeScript-porttauksena — ja siitä eteenpäin jokainen alla mainittu alijärjestelmä on saanut inspiraationsa avoimen lähdekoodin projektista, joka toteutti sen ensin. Jokainen niistä muovasi jotakin konkreettista OmniRouten osaa. Tämä on kiitoksemme niille kaikille. 🙏
> ⭐ tähtimäärät tarkistettiin GitHubin REST APIsta 18. lokakuuta 2026 — käy antamassa näille projekteille tähti. Määrät ovat tarkka, tiettynä päivänä otettu tilannekuva, joten ne muuttuvat luonnollisesti.
### 🧬 Alkuperä & yhdyskäytävä
Alkuperäinen projekti, johon tämä haara perustuu — sitä on laajennettu tässä multimodaalisilla rajapinnoilla ja toteuttamalla koodi kokonaan uudelleen TypeScriptillä.
AI-yhdyskäytävä, jonka julkinen hintatietoaineisto syöttää kustannusseurantamme synkronointia ja jonka palveluntarjoajien normalisointimalli vaikutti reititykseemme.
MIT-lisensoitua lähdekoodia mukautettiin mukana toimitettuun ChatGPT Web → Codex Responses -siltaan, mukaan lukien selainistunnon, vastausten kehystyksen, käytön ja verkkohaun sovittimet.
Sen Grok-mallimäärityksiä, väärennettyyn TypeError-virheeseen perustuvaa Statsig-generaattoria, pyyntöjen ja laitteiden oletusarvoja sekä NDJSON-vastausprosessoria mukautettiin merkittävästi OmniRouten Grok Web -suorittimeen.
grok2api-merged-projektin pääasiallinen välillinen koodilähde; sen malli-, otsake-, hyötykuorma-, Statsig- ja prosessoritoteutukset on säilytetty osana Grok Webin alkuperäketjua.
Taustalla oleva MIT-lisensoitu lähdekoodi Grokin hyötykuorman ja laitteen oletusarvoille, Statsig-generaattorille sekä result.response-prosessorille, jotka välittyivät TQZHR:n ja grok2api-merged-projektin kautta.
Välillinen lähde, jonka grok2api-merged mainitsee välityspalvelinvarantokerroksensa lähteenä; OmniRoute säilyttää tämän alkuperämaininnan, mutta ei väitä portanneensa välityspalvelinvarantoa rajattuun Grok Web -suorittimeensa.
Alkuperäistä Grok Web -toteutusta varten perehdyttiin sen HTTP-/selainpohjaiseen vastapalvelinrakenteeseen; sen suora HTTP-polku perustuu GrokProxyyn, joten erillistä koodiporttausta ei väitetä tehdyn.
Viraaliksi noussut "miksi käyttää monta tokenia, kun muutama token riittää" -projekti — sen luolamiespuheen filosofia toimii vakiopakkaustilamme sekä yli 30 täytesanojen poisto- ja tiivistyssäännön perustana.
Kehotteiden pakkaustutkimus (LLMLingua / LLMLingua-2) — inspiroi asynkronista, kooditurvallista ja virhetilanteissa alkuperäiseen toimintaan palaavaa llmlingua-moottoriamme.
Brasilianportugalin token-pakkaus — toimii pt-BR-kielipakettimme perustana: pleonasmien vähentäminen ja Brasilian portugalin kielioppiin mukautettu täytesanojen poisto.
Viraaliksi noussut "laiska vanhempi kehittäjä" -YAGNI-koodaustaito — inspiroi less-code-tulostetyyliämme: ohjausta pienimpään toimivaan muutokseen, mikä vähentää _luodun_ koodin määrää (Cavemanin niukan proosan tulostopuolen sisarmalli).
Sisältötietoinen, tiedostotyyppikohtainen tulosteen pakkaus, joka keskeytetään virhetilanteissa — vahvisti tyyppikohtaisen reitityksemme ja liian pienen hyödyn tapauksessa tehtävän ohituksen.
Rust-pohjainen sarakkeinen JSON + sisältöosoitteinen haku + viestien välinen duplikaattien poisto — vahvisti headroom/ccr/session-dedup-moottoriemme suunnittelun ja välimuistivakaan invariantin "pakattu muoto on sijainnista riippumaton".
Ohjelmointiavustajan ↔ LLM:n välisen liikenteen MITM-sieppaus ja -analyysi vaikuttivat Traffic Inspectorin alkuvaiheen vaatimuksiin. Neljä aiemmin johdettua moduulia — SSE-yhdistäminen, keskustelujen normalisointi, salaisuuksien peittäminen ja otsaketietojen puhdistaminen — on korvattu riippumattomilla puhtaalta pöydältä toteutetuilla ratkaisuilla, jotka perustuvat julkisiin protokollastandardeihin. Kaksi isäntäjärjestelmän läpivientipintaa (passthrough.ts ja _internal/bypass.cjs) ovat edelleen itsenäisesti luokiteltuja OmniRouten sisäisiä toteutuksia; niitä ei kirjoitettu uudelleen kyseisen korvaamisen yhteydessä.
Kuratoitu luettelo oletusarvoisesti turvallisista kirjastoista, joka ohjaa tietoturvavalintojamme (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Sen tilit huomioiva mallien uudelleenkohdistus, suoritettavan tiedoston polun validointi ja pakettitunnisteiden toiminta vaikuttivat OmniRouten Antigravity-ajoympäristöön.