> Ilmaistasojen pinoaminen käsin on työlästä — kymmeniä SDK:ita, kymmeniä nopeusrajoituksia eikä mitään käsitystä siitä, kuinka paljon kapasiteettia sinulla todellisuudessa on. OmniRoute luetteloi **489 ilmaistason merkintää 35 toistuvan pooliavaimen alla** ja laskee tokenien kokonaismäärän **17 poolista, joille on julkaistu positiivinen kuukausibudjetti, sekä viidestä mallikohtaisesta Groq-rajasta**, ja poistaa jaettujen poolien päällekkäisyydet. Kiintiöt, jotka avautuvat vasta alueellisen henkilöllisyyden tarkistuksen jälkeen (tällä hetkellä ModelScope), näytetään erikseen: +~6M alueellisen henkilöllisyyden vahvistamisen takana, eikä niitä koskaan lasketa mukaan kokonaismäärään. Tulos pysyy näkyvissä hallintapaneelissa (`/dashboard/free-tiers`).
> Animoitu yhteenveto reaaliaikaisesta `/dashboard/free-tiers`-sivusta. Täydellinen menetelmäkuvaus (poolien päällekkäisyyksien poisto, krediittitasot, palveluntarjoajien ehdot): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Nämä luvut tarkastetaan uudelleen kahden viikon välein reaaliaikaista luetteloa vasten, ja ne **muuttuvat molempiin suuntiin** — kun palveluntarjoaja lopettaa ilmaistason, luku pienenee; kun uusi tulee saataville, luku kasvaa. Julkaisemme sen, mitä luettelo todella laskee, emmekä koskaan ylöspäin pyöristettyä parasta mahdollista arviota.
⭐ Anna repositoriolle tähti, jos OMNIROUTE auttoi sinua säästämään rahaa ja helpotti työtäsi.
[](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 ensimmäisenä tiedon uusista palveluntarjoajista, julkaisuista ja vinkeistä:**
[](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, etenemissuunnitelma ja tuki → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Maailmanlaajuinen](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasilia](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ä jatkaa kasvuaan
## 🆓 Toimii heti asennuksen jälkeen – ei avaimia, ei asetuksia
```bash
# Tuore asennus, ei tunnuksia – `auto` toimii jo:
curl http://localhost:20128/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
Haluatko mieluummin tietyn ilmaisen taustaohjelman? Kutsu `oc/…` (OpenCode Free) suoraan. Siirry sitten `auto`-tilaan ja anna OmniRouten valita.📦 Kopioi ja liitä 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 välillä OmniRoute reitittää **automaattisesti**. Jos kiintiö loppuu, palveluntarjoaja vikaantuu tai kustannukset nousevat äkillisesti, yhdistelmä voi siirtyä seuraavaan kelvolliseen ja toimintakuntoiseen malliin. 🛡️
### ⚡ Ei määrityksiä — käytä vain `auto`
Yhdistelmää ei tarvitse luoda. Aseta malliksi `auto` (tai jokin sen muunnelma), niin OmniRoute muodostaa yhdistetyistä palveluntarjoajistasi virtuaalisen yhdistelmän, joka pisteytetään reaaliaikaisesti:
Mallitunnus
Mitä se optimoi
auto
🎯 Tasapainoinen oletus (LKGP — pysyy viimeksi toimineessa palveluntarjoajassa)
Minimoi pyynnön dollarikustannus reaaliaikaisten luettelohintojen perusteella 💸
10
headroom
Valitse kohde, jolla on eniten kiintiötä jäljellä
11
reset-window
Suosi kohdetta, jonka kiintiöjakso nollautuu ensimmäisenä
12
reset-aware
Järjestä kiintiön nollautumisajan mukaan — lyhyet jaksot ensin 📊
13
context-relay
Siirrä konteksti kohteiden välillä pitkiä keskusteluja varten 🧠
14
context-optimized
Valitse nykyiseen kontekstikokoon parhaiten sopiva kohde
15
cache-optimized
Kiinnitä kukin uudelleenkäytettävä kehote-etuliite samaan tiliin — maksimoi kehotteiden välimuistiosumat 🎯
16
lkgp
Viimeksi toimivaksi tunnettu polku — pysyy viimeksi onnistuneessa palveluntarjoajassa ja turvautuu sitten sääntöihin
17
auto
16 tekijän reaaliaikainen pisteytys kaikissa yhteyksissä 🤖
18
fusion
Lähetä pyyntö rinnakkain mallipaneelille, minkä jälkeen arvioijamalli koostaa yhden vastauksen 🧬
19
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)
📖 [Automaattisen yhdistelmän moottori](docs/routing/AUTO-COMBO.md) · [Resilienssiopas](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Mikä erottaa OmniRouten muista
📊 Täydellinen metodologia & ominaisuuskohtaiset yksityiskohdat verrattuna 9routeriin, OpenRouteriin, CLIProxyAPI:iin & 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)**.
## ✨ Mitä uutta
> Viimeisimmät kohokohdat versioista **v3.8.20 → v3.8.50**. Täydellinen muutoshistoria on tiedostossa [`CHANGELOG.md`](CHANGELOG.md).
- **🎛️ OmniConductor** — saapuvien A2A-pyyntöjen delegointi agenttijoukollesi, Conductor-taidot Agent Cardissa sekä hallintapaneeli, jossa on Faron paina-ja-puhu-äänikeskustelu. → [A2A-palvelin](docs/frameworks/A2A-SERVER.md)
- **🛂 Mukautuva pääsynhallinta ja ylikuormitussuojaus** — raskaat keskustelupyynnöt asetetaan jonoon 503-virheen palauttamisen sijaan, ja käytössä ovat atomiset, yhteyskohtaiset RPM-liukuvat varaukset. → [Vikasietoisuusopas](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Kanoninen `/v1/models`-järjestys** — yksi yhtenäinen palveluntarjoajittain ryhmitelty lohko kullekin palveluntarjoajalle (yhdistelmät ensin), joka pysyy vakaana kaikissa katalogilähteissä. → [API-viite](docs/reference/API_REFERENCE.md)
- **🗜️ Pakkauksen vahvistaminen** — oletusarvoisesti käytössä oleva purkukoon suojaus, Caveman-paketit kielille DE / FR / JA sekä kiinalle (wényán), RTK-suodattimet Gradlelle ja .NETille. → [Pakkaus](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Totuudenmukainen kiinteähintainen kustannus** — tilaus- ja koodauspakettien palveluntarjoajien kustannus näkyy analytiikassa arvona **$0**; budjetin, kiintiön ja reitityksen arviot säilyvät. → [API-viite](docs/reference/API_REFERENCE.md)
- **⚖️ Quota-Share-reititys** — jakaa yhteisen tilin kiintiön oikeudenmukaisesti poolattujen 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** — 13 rekisteröityä `setup-*`-komentoa; `omniroute run` käynnistää 7 CLI:tä (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` tukee 10 kohdetta sekä vuorovaikutteista palveluntarjoajan ja mallin valitsinta ja kontekstikohtaisia suosikkeja. → [CLI-integraatiot](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Etätila** — ohjaa OmniRoute-etäinstanssia rajatuilla tunnuksilla (`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ätietoinen reititys sekä pyyntökohtaiset mallin, tilan ja USD-budjetin ohitukset. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Laajennettava pakkaus** — 12 yhdisteltävää moottoria sekä Compression Studios: LLMLingua-2, kaksitasoinen Ultra, omniglyph, vaihekohtainen tarkkuusportti, GCF v3.2 ja vetämällä järjesteltävä editori. → [Pakkaus](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Läpinäkyvä MITM-salauksen purku (TPROXY)** — kaappaa CLI:t, jotka ohittavat välityspalvelimen ympäristömuuttujat; sisältää SNI-kohtaisen varmentajan sekä luottamusvaraston asennusohjelman. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Kustannustelemetria kaikkialla** — `X-OmniRoute-*`-kustannus- ja käyttöotsakkeet jokaisessa päätepisteessä, välimuistin osuman säästöotsake sekä avainkohtaiset USD-kulutuskiintiöt. → [API-viite](docs/reference/API_REFERENCE.md)
- **🧠 Hallinnassasi oleva muisti** — oletusarvoisesti poissa käytöstä, valinnainen int8-vektorikvantisointi ja tyypitetty vanheneminen sekä pyyntökohtainen `x-omniroute-no-memory`. → [Muisti](docs/frameworks/MEMORY.md)
- **🛡️ Tietoturva** — kehotesyötteiden manipulointisuoja jokaisella LLM-reitillä (red-team-testikokonaisuus), valinnainen tunnistetietojen peittävä suojaus (poistaa vuotaneet API-avaimet ja salaisuudet molempiin suuntiin), maksuton DuckDuckGo-verkkohaku viimeisenä keinona sekä valinnainen OIDC-kirjautumisportti hallintapaneelille (salasanakirjautuminen pysyy 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 laiteseuranta, pääkäyttäjäoikeuksia tarvitsematon MITM-luottamus sekä zh-TW-lokalisointi. → [Ympäristö](docs/reference/ENVIRONMENT.md)
- **🤝 Lisää palveluntarjoajia ja agentteja** — pilviagentit (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) selaimella ja OAuth-kirjautumisella, ensiluokkainen Ollama-kortti, Claude Opus 5 ja Sonnet 5, virallinen Kimi-kumppanuus (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… sekä uudistettu **352 palveluntarjoajan katalogi**. → [Palveluntarjoajat](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Reitityksen läpinäkyvyys** — jokaisessa vastauksessa on `X-OmniRoute-Decision`-otsake, joka nimeää käytetyn strategian, palveluntarjoajan ja viiveen; uusi `cache-optimized`-yhdistelmästrategia ja Auto-Combon `cacheAffinity`-tekijä reitittävät toistuvat pyynnöt takaisin yhteydelle, joka säilyttää välimuistissa olevan etuliitteen; vain luku -tyyppinen `/v1/auto-combo/{channel}/candidates`-päätepiste näyttää `auto/*`-kanavan reaaliaikaisen ehdokasjoukon. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Paikallinen suorituskyky ja infrastruktuuri** — yhdellä napsautuksella käytettävä paikallinen Redis, Cloudflare Workers- / Deno Deploy -välityspalvelinten käyttöönotto sekä Bifrost ja Mux valvottuina sulautettuina palveluina. → [Sulautetut palvelut](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Mukana myös** — liitännäiskehys ja markkinapaikka, Omni/Agent/GitHub-taitokehykset, Obsidian-holvin integraatio (22 MCP-työkalua), OpenAI-yhteensopivat Batch- ja Files-API:t, semanttinen vastausvälimuisti, pelillistäminen tulostauluineen, ACP-agenttien löytäminen (15 sisäänrakennettua agenttia), ajastettu lokien vienti BigQueryyn, `auto/chaos`-vikojen injektointi, Telegram-bottisilta, sovelluksen sisäinen versionhallinta sekä maksuttomien palveluntarjoajien LMArena-ELO-rankingit. → [Dokumentaatio](docs/README.md)
## 🤖 Yhteensopivat CLI-työkalut ja koodausagentit
> Yksi määritys — `http://localhost:20128/v1` — ja **jokainen** tekoälyä hyödyntävä IDE tai CLI toimii ilmaisilla ja edullisilla malleilla.
**Käynnistä mikä tahansa tuettu CLI OmniRouten kautta yhdellä komennolla** — määritystiedostoja ei kirjoiteta,
tunnistetiedot syötetää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 ja kirjoita työkalun oma määritys:
omniroute configure codex # myös: claude opencode qwen aider goose gemini cline continue kilo
```
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)
## 🌐 357 tekoälypalveluntarjoajaa — 152 merkitty luettelossa ilmaisiksi
> **357 rekisteröityä palveluntarjoajaa** kanonisissa keskustelu-, media-, haku-, paikallis-, pilviagentti- ja järjestelmäkokoelmissa, joista **152 sisältää `hasFree: true` -hakumetatiedon**. Keskustelumallirekisteri kattaa **229 palveluntarjoajaa / 2 554 erillistä palveluntarjoaja–malli-paria / 1 283 käsittelemätöntä mallitunnusta**; erillisessä ilmaisen käyttöbudjetin luettelossa on **491 mallikohtaista riviä**, **35 uusiutuvaa kiintiötä** ja **54 uusiutuvan tai avaimettoman, pysyvästi ilmaisen käytön tarjoavaa palveluntarjoajaa**. Nimittäjät ovat tarkoituksella erilaisia; määritelmät ja kiintiöiden päällekkäisyydet poistavat laskelmat löytyvät sivuilta [Palveluntarjoajien viiteopas](docs/reference/PROVIDER_REFERENCE.md) ja [Ilmaiskäyttötasot](docs/reference/FREE_TIERS.md).
### 🏢 Kaikki merkittävät laboratoriot — 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 330 muuta — jokainen kuvake noudetaan reaaliaikaisesti hallintapaneelin palveluntarjoajaluettelosta. 📖 [Palveluntarjoajien viiteopas](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Ilmainen pysyvästi — $0, ei korttia
OpenCode Zen DeepSeek V4, Nemotron 3 Ei tokenirajaa
Kilo Code Automaattinen reititys, Tencent Hy3 Ikuisesti ilmainen
### 🧩 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äysiverinen komentoriviohjaamo**, jossa on **yli 80 komentoa**, sekä avoimet agenttiprotokollat, joiden avulla tekoälyagentti voi käyttää sitä **itsenäisesti**.
### ⌨️ Oikea komentorivityökalu (ei pelkkä `start`)
```bash
omniroute # käynnistä yhdyskäytävä + hallintapaneeli (portti 20128)
omniroute chat # interaktiivinen TUI-keskusteluasiakas (vinoviivakomennot: /model /combo /skill /memory)
omniroute setup # ohjattu ensimmäisen käyttökerran määritys
omniroute doctor # diagnosoi palveluntarjoajat, portit ja natiiviriippuvuudet
```
### 🛰️ Etätila — suorita komentorivityökalu täällä ja OmniRoute VPS-palvelimella
Onko OmniRoute palvelimella? Ohjaa sitä kannettavaltasi **samalla komentorivityökalulla**. Kirjaudu kerran
rajatulla käyttöoikeustunnuksella, minkä jälkeen jokainen komento kohdistuu etäpalvelimeen.
```bash
omniroute connect 192.168.0.15 # salasana → rajattu tunnus, tallennetaan kontekstina
omniroute models list # ← suoritetaan ETÄPALVELIMELLA
omniroute configure codex # ← valitsee etämallin ja kirjoittaa paikallisen Codex-profiilin
omniroute tokens create --name ci --scope read # luo käyttöoikeuksiltaan rajatumpia tunnuksia muille koneille
omniroute contexts use default # ← vaihda takaisin paikalliseen palvelimeen
```
Tunnusten käyttöalueet ovat `read` / `write` / `admin`; prosesseja käynnistävät reitit pysyvät vain loopback-rajapinnan käytettävissä.
📖 [Etätila](docs/guides/REMOTE-MODE.md)
### 🤝 Yhdistä agentti — ja se ohjaa OmniRoutea itse
Avaa OmniRoute käytettäväksi **MCP:n**, **A2A:n**, **REST API:n**, **webhookien** tai **etäkomentorivityökalun** kautta — mikä tahansa kykenevä agentti (tai oma koodisi) saa koko yhdyskäytävän hallintaansa: reitityksen, palveluntarjoajat, yhdistelmät, välimuistin, pakkauksen ja muistin — autonomisesti. 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äkäyttö — 110 työkalua, 33 käyttöaluetta (valinnainen valvonta), täydellinen tarkastusloki
Lähetä pyyntö- ja kiintiötapahtumat Slackiin, Discordiin, Telegramiin tai mihin tahansa URL-osoitteeseen
🛰️ Etäkomentorivityökalu
omniroute connect
Ohjaa etäinstanssia rajatuilla käyttöoikeustunnuksilla
```bash
# Anna Claude Codelle OmniRouten koko työkaluvalikoima 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
### 📖 Näin se toimii — putki, arkkitehtuuri ja säästöjen laskenta
Pinottu oletusyhdistelmä suorittaa vaiheet `RTK → Caveman`. Kun molemmat käsittelevät samaa työkalu-/kontekstihyötykuormaa, 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 rakenteinen data ovat säilytysmoottorin **aina suojaamia**.
> **Miksi käyttää paljon tokeneita, kun vähemmätkin riittävät?** Jokainen pyyntö kulkee OmniRouten pakkausputken läpi **läpinäkyvästi** — asiakasohjelmaan ei tarvita muutoksia. Se on nyt **12 yhdisteltävän moottorin pino**, joka suoritetaan järjestyksessä ja jota voidaan yhdistellä reititysyhdistelmäkohtaisesti — pohjautuen projekteista [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) saatuihin ideoihin.
### 🧱 12 moottorin pino
Moottorit suoritetaan putken mukaisessa järjestyksessä; jokainen voidaan ottaa itsenäisesti käyttöön tai pois käytöstä sekä määrittää yhdistelmäkohtaisesti:
#
Moottori
Mitä se tekee
1
Session-Dedup
Poistaa eri vuorojen välillä toistuvan sisällön (sisältöosoitteinen, vuorojen välinen)
2
CCR
Arkistoi suuret lohkot noutomerkintöjen taakse, joista ne haetaan tarvittaessa
3
Lite
Tyhjätilan ja kuvien URL-osoitteiden karsiminen (kevyt perusratkaisu viiveen kannalta)
4
RTK
Älykäs työkalutulosten suodatus, kaksoiskappaleiden poisto ja katkaisu (komentotietoinen)
5
Responses Tool Output
Ensisijaisesti häviötön JSON-pakkaus sekä rajattu diagnostiikan pakkaus shell-/patch-/haku-/koontituloksille (Responses API)
6
Headroom
JSON-taulukoiden häviötön taulukkomuotoinen tiivistäminen (~30 %) mukana toimitetulla GCF-koodekilla
7
Relevance
Poimiva lauseiden pisteytys viimeisimmän käyttäjäkyselyn perusteella
Vanhojen vuorojen tiivistäminen ja asteittainen vanhentaminen
10
LLMLingua-2
Koneoppimiseen perustuva semanttinen karsinta MobileBERT ONNX:n avulla — kooditurvallinen, asynkroninen
11
Ultra
Heuristinen tokenien karsinta valinnaisella pienen mallin (SLM) tasolla
12
OmniGlyph
Kokeellinen kontekstin kuvaksi koodaaminen mitatulle Claude Fable 5:lle suorassa Anthropic-yhteydessä; GPT 5.6 -muuntajat pysyvät turvallisesti pois käytöstä, kunnes palveluntarjoajalta saadaan vahvistukset. Neljä pakkausprofiilia (oletuksena aggressiivinen, tasapainotettu, kooditurvallinen, läpivienti) (aggressiivisin; otettava erikseen käyttöön)
Koodilohkot, URL-osoitteet ja rakenteinen data säilytetään **aina** tavuntarkasti. **Yhden napsautuksen esiasetukset** yhdistävät moottorit:
Tila
Säästö
Soveltuu parhaiten
🪶 Lite
~15%
Aina käytössä oleva turvallinen oletus
🪨 Standard (Caveman)
~30%
Päivittäinen ohjelmointi
⚡ Aggressive
~50%
Pitkät ja työkalupainotteiset istunnot
🔥 Ultra
~75%
Suurimmat säästöt
🧰 RTK
60–90%
Shell-/testi-/koonti-/git-tulosteet
🔗 Stacked (RTK → Caveman)
78–95%
Yhdistetyt kehotteet ja työkalulokit
**Todellinen esimerkki — Standard-tila:**
> **Ennen (69 tokenia):** _"React-komponenttisi renderöidään uudelleen todennäköisesti siksi, että luot uuden objektiviittauksen jokaisella renderöintikierroksella. Kun välität suoraan määritellyn objektin prop-arvona, Reactin pinnallinen vertailu tulkitsee sen joka kerta eri objektiksi, mikä käynnistää uudelleenrenderöinnin. Suosittelen käyttämään useMemoa objektin memoisoimiseen."_
>
> **Jälkeen (19 tokenia):** _"Uusi objektiviittaus jokaisella renderöinnillä. Suoraan määritelty objekti prop-arvona = uusi viittaus = uudelleenrenderöinti. Kääri useMemoon."_
>
> **Sama vastaus. 72 % vähemmän tokeneita. Ei lainkaan tarkkuuden menetystä.** ✅
**PT-BR-esimerkki — [Troglodita](https://github.com/leninejunior/troglodita)-tila:**
> **Ennen (42 tokenia):** _"Ongelmana on, että komponentti renderöidään uudelleen, koska jokaisella renderöintikierroksella luodaan uusi objektiviite. Suosittelen käyttämään useMemoa."_
>
> **Jälkeen (12 tokenia):** _"Uudelleenrenderöinti: uusi viite joka kierroksella (inline-objekti luodaan uudelleen). Käytä `useMemo`."_
>
> **Sama vastaus. ~70 % vähemmän tokeneita. Tekninen tarkkuus ennallaan.** ✅
### 🎚️ Moottoreita pidemmälle — tulostyylit, mukautuva säädin ja pyyntökohtainen hallinta
Yllä olevat 12 moottoria pienentävät **syötettä**. Kolme muuta kerrosta määrittävät, **miten**, **milloin** ja mitä tulee **ulos**:
- **🪄 Tulostyylit** _(tulostusakselin ohjaus)_ — lisää deterministisiä, välimuistiturvallisia ohjeita vastauksen muotoiluun; tyylejä voi yhdistellä, ja jokaisella on `lite`- / `full`- / `ultra`-intensiteetti. Tyylin lisääminen vaatii vain yhden rivin rekisterimerkinnän:
- **Tiivis teksti** — poista täytesanat / artikkelit / varaukset; säilytä tekninen sisältö täsmällisenä.
- **Vähemmän koodia** — ”laiska seniorikehittäjä” -YAGNI: pienin toimiva muutos, ei pyytämättömiä runkorakenteita.
- **Ponytail (laiska seniorikehittäjä)** — etene YAGNI-portaita, korjaa juurisyy, tee pienin toimiva diffi.
- **Minulla on ADHD (toiminta ensin)** — seuraava toimenpide ensin, numeroidut vaiheet, yksi konkreettinen seuraava askel, ei johdantoa.
- **Tiivis CJK (文言)** — klassisen kiinan äärimmäisen tiivis tyyli (käytössä vain `zh`-alueasetuksella).
- **🎯 Mukautuva kontekstibudjetti** _(säädin)_ — yhden päälle/pois-tokenrajan sijaan halvimpia ja vähiten tietoa hukkaavia moottoreita otetaan käyttöön vain niin pitkälle kuin on tarpeen, jotta sisältö **mahtuu mallin konteksti-ikkunaan**. Käytäntö: `reserve-output` (oletus, mallitietoinen) · `percentage` · `absolute`. Tila: `floor` (takaa mahtumisen) · `replace-autotrigger` (nimenomainen valintasi on etusijalla) · `off` (vanha raja-arvo).
- **🎛️ Missä pakkauksesta päätetään** _(etusijajärjestys, korkea → matala)_ — pyyntökohtainen `x-omniroute-compression`-otsake › reititysyhdistelmän ohitus › aktiivinen nimetty profiili › mukautuva / automaattinen laukaisu › paneelin oletus › pois käytöstä. Käytetty suunnitelma palautetaan `X-OmniRoute-Compression: ; source=`-vastausotsakkeessa.
Käytä automaattista laukaisua tokenrajan perusteella, ota mukautuva säädin käyttöön, kiinnitä nimetty profiili, määritä kertaluonteinen pyyntökohtainen asetus tai liitä käsittelyputki reititysyhdistelmään — valitse työkuormaan sopivin vaihtoehto. Valinnainen offline-**arviointikehys** (`npm run eval:compression`) pisteyttää tarkkuuden suhteessa säästöihin kiinnitetyllä aineistolla ennen muutoksen käyttöönottoa.
📖 [`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`-ilmoituksen tai vertaisriippuvuusvaroituksia? [Ne ovat harmittomia](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
Hallintapaneeli osoitteessa `http://localhost:20128` · API osoitteessa `http://localhost:20128/v1`.
**2) Yhdistä ILMAINEN palveluntarjoaja (ei rekisteröitymistä)**
Hallintapaneeli → **Palveluntarjoajat** → yhdistä **Kiro AI** (ilmainen Claude, ~50 krediittiä kuukaudessa tiliä kohden) tai **OpenCode Free** (ei todennusta) → valmis.
**3) Määritä koodaustyökalusi**
```txt
Perus-URL: http://localhost:20128/v1
API-avain: [kopioi kohdasta Hallintapaneeli → Päätepisteet]
Malli: auto (älykäs reititys ilman määrityksiä — tai mikä tahansa palveluntarjoaja/malli)
```
**4) Varmista toiminta**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Yhdistettyjen malliesi pitäisi näkyä luettelossa. 🎉 Siinä kaikki — aloita koodaaminen, niin OmniRoute reitittää pyynnöt automaattisesti ja vaihtaa tarvittaessa varavaihtoehtoon.
Jos asiakasohjelmasi ei voi lähettää mukautettuja otsakkeita, OmniRoute tarjoaa myös tokenisoituja yhteensopivuusaliaksia:
```txt
OpenAI-luettelo: http://localhost:20128/vscode/YOUR_KEY/
OpenAI-mallit: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI-keskustelu: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI-vastaukset: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama-keskustelu: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama-tunnisteet: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Käytä näitä vain asiakasohjelmissa, jotka eivät voi lisätä `Authorization: Bearer ...`-otsaketta. Otsaketodennus on edelleen suositeltava tapa.
## 📦 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 39 000 staattiselle testimääritykselle yli 5 100 seuratussa testitiedostossa
# ⭐ Parhaat osallistujat
> Intohimoinen avoimen lähdekoodin yhteisö muovaa OmniRoutea. Nämä henkilöt ovat antaneet poikkeuksellisen panoksen, joka vaikuttaa suoraan projektin laatuun, vakauteen ja tavoittavuuteen. **Kiitos.**
### Ulkopuoliset osallistujat yhdistettyjen vetopyyntöjen mukaan
Tilanne jäädytetty aktiivisen release/v3.8.50-haaran kärkeen dafb4ae808, ja mukana ovat yhdistämiset ajankohtaan 2026-08-24 05:26:03 UTC asti. Sivutettu GitHub GraphQL -kartoitus sisältää 5 911 yhdistettyä PR:ää: 2 707 arkiston omistajalta, 179 Dependabotilta ja 3 025 ulkopuolista PR:ää 535 eri osallistujalta. ”Muutetut rivit” tarkoittaa GitHubin lisäysten ja poistojen summaa ja sisältää generoidut tiedostot, lukitustiedostot, luettelot, käännökset ja dokumentaation; se kuvaa muutosten määrää, ei kirjoitettujen lähdekoodirivien määrää. Tasasijat rajalla säilytetään.
### GitHubin tekijöihin liittämät commitit
Bob.Hou 🏅 51 GitHubiin liitettyä committia · jaettu 10. sija
Xiangzhe 🏅 51 GitHubiin liitettyä committia · jaettu 10. sija
Tarkistettu uudelleen 2026-08-24 06:14:31 UTC: GitHubiin liitetyt commitit, jotka repositorion Contributors API ilmoitti oletushaaralle release/v3.8.50. API palautti 525 identiteettiä (415 käyttäjää, 2 bottia, 108 anonyymiä); tästä taulukosta on jätetty pois ylläpitäjä, botit ja anonyymit identiteetit, ja tasatilanteet on säilytetty. Se eroaa sekä yllä olevasta yhdistettyjen PR:ien sijoituksesta että alla olevasta 639 henkilön Git-metatietolaskennasta.
> 🙏 Näiden osallistujien ominaisuudet, virheenkorjaukset ja infrastruktuuriparannukset ovat **keskeinen osa** sitä, mikä tekee OmniRoutesta luotettavan ja monipuolisen. Jokaisella pull requestilla, testitapauksella ja i18n-käännöstiedostolla on merkitystä. Avoimen lähdekoodin rakentavat heidän kaltaisensa ihmiset.
---
## 💖 Sponsorit
Sydämellinen kiitos ihmisille, jotka rahoittavat OmniRoutea omasta pussistaan — jokainen lahjoitus auttaa pitämään projektin maksuttomana, riippumattomana ja jatkuvasti kehittyvänä.
… ja muut, jotka haluavat pysyä yksityisinä 💛Julkiset GitHub-sponsorit vahvistettu uudelleen 2026-08-24. GitHubin activeOnly-tila määrittää yllä olevat aktiivisuusmerkinnät; aiemmin julkistetut kertaluonteiset tukijat saavat edelleen kiitoksemme, ja yksityiset sponsorit pysyvät nimettöminä.💖 Ryhdy sponsoriksi → — jokainen dollari auttaa pitämään OmniRouten maksuttomana ja riippumattomana.
## 👥 Yli 600 osallistujaa
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Auditoitu 2026-08-24 jäädytetyssä kantaversiossa ac02c5b42f ja tarkistettu uudelleen aktiivisen release/v3.8.50-haaran viimeisimmässä commitissa dafb4ae808: 639 normalisoitua ihmisen Git-identiteettiä — 407 esiintyy committien tekijöinä (ylläpitäjä mukaan lukien) ja 232 ainoastaan erillisissä Co-authored-by-trailereissa. Laskennassa normalisoidaan GitHubin noreply-tunnukset, suljetaan pois 26 botti-, agentti-, palvelu- tai paikkamerkki-identiteettiä eikä yhdistetä tavallisia sähköpostiosoitteita pelkästään siksi, että niiden näyttönimet täsmäävät.
### Osallistumisohjeet
1. Forkkaa repositorio
2. Luo haara **aktiivisen** `release/vX.Y.Z`-haaran viimeisimmästä commitista (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, jonka **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ä sai inspiraationsa avoimen lähdekoodin projektista, joka ehti toteuttaa vastaavan ensin. Jokainen niistä muovasi jotakin konkreettista osaa OmniRoutesta. Tämä on kiitoksemme niille kaikille. 🙏
> ⭐ tähtimäärät on tarkistettu GitHubin REST API -rajapinnasta 24. elokuuta 2026 — käy antamassa näille projekteille tähti. Määrät ovat täsmällinen, tiettynä päivänä otettu tilannekuva ja muuttuvat luonnollisesti ajan myötä.
### 🧬 Kehityslinja ja yhdyskäytävä
Alkuperäinen projekti, johon tämä fork perustuu — sitä on laajennettu tässä multimodaalisilla API-rajapinnoilla ja täydellisellä TypeScript-uudelleenkirjoituksella.
Tekoäly-yhdyskäytävä, jonka julkinen hinnoitteluaineisto syöttää kustannusseurannan synkronointiamme ja jonka palveluntarjoajien normalisointimalli vaikutti reititykseemme.
MIT-lisensoitu lähdekoodi, joka mukautettiin mukana toimitettavaan ChatGPT Web → Codex Responses -siltaan, mukaan lukien selainistunto-, vastauskehystys-, käyttö- ja verkkohakusovittimet.
Sen Grok-mallikartoitukset, vale-TypeError Statsig -generaattori, pyyntöjen ja laitteiden oletusarvot sekä NDJSON-vastausprosessori mukautettiin olennaisin osin OmniRouten Grok Web -suorittimeen.
grok2api-mergedin tärkein transitiivinen koodilähde; sen malli-, otsake-, hyötykuorma-, Statsig- ja prosessoritoteutukset on säilytetty Grok Webin kehityslinjassa.
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-mergedin kautta.
Transitiivinen lähde, jonka grok2api-merged mainitsee proxy-pool-kerroksensa yhteydessä; OmniRoute säilyttää tämän alkuperämaininnan, mutta ei väitä portanneensa proxy-poolia rajattuun Grok Web -suorittimeensa.
Alkuperäinen Grok Web -toteutus hyödynsi sen HTTP-/selainpohjaista ylävirran suunnittelua; sen suora HTTP-polku pohjautuu GrokProxyyn, joten itsenäistä koodiporttausta ei väitetä tehdyn.
Viraaliksi noussut ”miksi käyttää monta tokenia, kun muutama token hoitaa homman” -projekti — sen luolamiespuhefilosofia toimii vakiopakkaustilamme sekä yli 30 täytesanojen poisto- ja tiivistyssäännön perustana.
Brasilianportugalin token-pakkaus — toimii pt-BR-kielipakettimme perustana: pleonasmien vähentäminen ja täytesanojen poisto on mukautettu brasilianportugalin kielioppiin.
Viraaliksi noussut ”laiskan seniorikehittäjän” YAGNI-koodaustaito — inspiroi less-code-tulostustyyliämme: ohjausta kohti pienintä toimivaa muutosta, joka vähentää _generoidun_ koodin määrää (Cavemanin ytimekkään proosan tulostepuolen sisarominaisuus).
Sisältötietoinen, tiedostotyyppikohtainen tulosteen pakkaus, joka osaa keskeyttää käsittelyn virhetilanteissa — vahvisti tiedostotyyppikohtaisen käsittelymme ja vähimmäishyödyn alittuessa tehtävän ohituksen toimivuuden.
Rust-pohjainen sarakkeinen JSON, sisältöosoitteinen haku ja viestien välinen kaksoiskappaleiden poisto — vahvistivat headroom-, ccr- ja session-dedup-moottoriemme suunnittelun sekä välimuistin vakautta koskevan invariantin ”pakattu muoto ei riipu sijainnista”.
TypeScript Compiler API -työkalupakki — inspiroi jäsenninpohjaista kommenttien poistoamme, joka säilyttää merkkijono-, mallipohja- ja säännöllisten lausekkeiden literaalit.
Koodausavustajan ↔ LLM:n välisen liikenteen MITM-kaappaus ja -analyysi vaikuttivat Traffic Inspectorin alkuperäisiin vaatimuksiin. Neljä aiemmin johdettua moduulia — SSE-yhdistäminen, keskustelujen normalisointi, salaisuuksien peittäminen ja otsakkeiden puhdistaminen — on korvattu riippumattomilla puhtaalta pöydältä toteutetuilla ratkaisuilla, jotka perustuvat julkisiin protokollastandardeihin. Kaksi isäntäkoneen liikenteen läpipäästävää rajapintaa (passthrough.ts ja _internal/bypass.cjs) ovat edelleen itsenäisesti luokiteltuja OmniRouten sisäisiä toteutuksia; niitä ei kirjoitettu uudelleen osana tätä korvaamista.
Kuratoitu luettelo oletusarvoisesti turvallisista kirjastoista, joka ohjaa tietoturvavalintojamme (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Sen tilit huomioiva mallien uudelleenkartoitus, suoritettavien tiedostojen polkujen validointi ja tilaustunnisteiden toiminta vaikuttivat OmniRouten Antigravity-ajoaikaympäristöön.