## 💰 ~1,62 mld di token/mese tramite piani gratuiti di terze parti
> **Usa i tuoi account dei provider.** Questa è una stima aggregata di piani gratuiti di terze parti per i quali si possiedono separatamente i requisiti, non una concessione di token da parte di OmniRoute. Registrati, ottieni le credenziali dove richiesto e collega i provider che puoi utilizzare; ciascun provider controlla i propri limiti, la disponibilità e i termini.
>
> Combinare manualmente i piani gratuiti è complicato: decine di SDK, decine di limiti di frequenza e nessuna idea di quante risorse si abbiano effettivamente a disposizione. OmniRoute cataloga **467 voci di piani gratuiti distribuite su 34 chiavi di pool ricorrenti** e calcola il totale di token sulla base dei **17 pool con un budget mensile positivo pubblicato, più cinque limiti Groq per modello**, deduplicati per pool condiviso. Le quote che diventano disponibili solo dopo una verifica dell'identità regionale (attualmente: ModelScope) vengono mostrate separatamente, +~6 mln subordinati alla verifica dell'identità regionale, e non vengono mai incluse nel totale principale. Il risultato rimane visibile nella dashboard (`/dashboard/free-tiers`).
> Riepilogo animato della pagina live `/dashboard/free-tiers`. Metodologia completa (deduplicazione dei pool, livelli di credito, termini dei provider): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Queste cifre vengono sottoposte a una nuova verifica ogni due settimane confrontandole con il catalogo live e **possono variare in entrambe le direzioni**: se un provider termina un piano gratuito, il numero diminuisce; se ne viene aggiunto uno nuovo, aumenta. Pubblichiamo ciò che il catalogo calcola realmente, mai una stima ottimistica arrotondata per eccesso.
⭐ Metti una stella al repository se OMNIROUTE ti ha aiutato a risparmiare denaro e a semplificare il tuo lavoro.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Unisciti alla community
**👋 Segui il maintainer: scopri per primo nuovi provider, release e suggerimenti:**
[](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)
**Domande, suggerimenti sui provider, roadmap e supporto → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Globale](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasile](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portale](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Il Gateway continua a crescere
| | v3.8.50 | **v3.8.51** | `v3.8.53+` |
| ------------------------------------ | :---------------------------: | :---------: | :-------------------: |
| 🌐 Provider | 352 | **358** | 375 |
| 🧠 ID univoci dei modelli di chat | 1320 | **1374** | 1475 |
| 🖼️ Ponte tra modalità | 🆕 visione + audio + video | ✓ | ✓ |
| 📡 Catalogo gratuito Radar | 🆕 partecipazione facoltativa | ✓ | ✓ |
| ⚖️ Pianificazione basata sulle quote | 🆕 Quota-Share | ✓ | ✓ |
| 📊 Telemetria delle quote | 🆕 in tempo reale | ✓ | ✓ |
| 🧰 Modalità headless | — | — | 🆕 `serve --headless` |
| 🛤️ Infrastruttura del ramo LTS | — | — | 🆕 canali di rilascio |
| 🔎 API di rilevamento dei modelli | — | — | 🆕 `/v1/models/query` |
**→ [Roadmap](ROADMAP.md) — sul binario verso `v3.9.0 LTS`**
## 🆓 Installa, collega un provider, poi instrada attraverso un unico endpoint
```bash
# Dopo aver collegato un provider, copia la tua chiave OmniRoute da 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` richiede una rotta idonea. Un'installazione appena eseguita può non avere target keyless idonei, e un provider keyless potrebbe rifiutare client di terze parti. I provider contrassegnati con `tos: avoid`, incluso Kiro, sono esclusi dal routing automatico per impostazione predefinita; collegare un account non sovrascrive questa impostazione. Consulta la [Guida ai piani gratuiti](docs/getting-started/FREE-TIERS-GUIDE.md) prima di scegliere un provider.📦 Script quickstart da copia-incollare per **Python, Node.js, PHP e cURL** → [`examples/quickstart/`](examples/quickstart/)
# 💥 La Promessa
# 🤔 Perché OmniRoute?
## 🤝 Supportato dai nostri Amici Open Source
> **Vuoi unirti come Amico Open Source?** Queste sono le aziende che supportano l'open source e aiutano a mantenere OmniRoute in movimento — e noi dichiariamo pubblicamente dove va ogni token che ci danno. Contattaci: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Grazie a Kimi (Moonshot AI), il nostro Amico Fondatore Open Source, per aver supportato questo progetto! Kimi è il laboratorio di IA dietro le famiglie di modelli open-weight K2 e K3 — Kimi K3 offre una finestra di contesto da 1M di token, visione nativa e codifica a livello di frontiera a una frazione dei prezzi dei modelli chiusi, e funziona immediatamente con Claude Code, Codex e ogni strumento di codifica che OmniRoute serve.
Cosa alimenta il supporto di Kimi: I crediti API di Kimi alimentano la pipeline di rilascio convalidata dall'IA di OmniRoute — la fase di validazione della fusione alimentata da Kimi K3 che esamina ogni pull request prima che venga spedita — oltre allo sviluppo quotidiano delle funzionalità. Il supporto di prima classe per Kimi viene fornito su entrambi i binari: l'API Kimi diretta (kimi-k3) e il piano di codifica Kimi Code (OAuth e chiave API). OmniRoute è anche il primo progetto open-source brasiliano nel programma di supporto di Kimi. Ottieni una chiave API Kimi con il 15% di crediti extra →
Cheaper Inference cheaperinference.com
Grazie a Cheaper Inference, un Amico Open Source di OmniRoute, per aver supportato questo progetto! Cheaper Inference è un gateway classificato per costo che rivende 42 modelli all'avanguardia — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok e MiniMax — dietro un unico endpoint compatibile con OpenAI, instradando ogni richiesta al provider idoneo più economico senza mai addebitare un prezzo superiore a quello di listino del creatore del modello.
Supporto di prima classe in OmniRoute: Chat Completions, l'endpoint nativo /v1/responses, visione, tool calling e 3 modelli di immagine (grok-imagine, nano-banana-pro, nano-banana-2, raggiungibili come cheaperinference/<model>). Ottieni una chiave API →
I link taggati aff=omniroute sono link partner. Finanziano il progetto senza costi aggiuntivi per te. 🎟️ Promo Affiliati — coupon di iscrizione gratuiti da provider che non sponsorizziamo (clicca per espandere)Questa sezione è solo per codici di riferimento/coupon. Le partnership sponsorizzate si trovano in 🤝 Supportato dai nostri Amici Open Source sopra. OmniRoute non ha sponsorizzazioni o partnership con i provider elencati qui — questi sono coupon pubblici che chiunque può usare.
AgentRouter agentrouter.org
AgentRouter — iscrizione affiliato · $100 di crediti gratuiti all'iscrizione (server gratuito, aspettati una latenza maggiore — ottimo per test, non per la produzione). Supporto di prima classe in OmniRoute dalla v3.8.50: Chat Completions, il formato wire compatibile con Anthropic e il percorso compatibile con OpenAI. I modelli disponibili includono claude-opus-4-8, claude-opus-5, gpt-5.6-sol e altro. Prendi i tuoi $100 →
⚠️ Link affiliato — OmniRoute non ha sponsorizzazioni o partnership con questo provider.
Conosci un altro provider con un generoso coupon di iscrizione gratuito che beneficia gli utenti di OmniRoute? Apri un'issue e lo aggiungeremo qui.
## 🎯 Combo — La funzionalità di punta
> Una **combo** è una catena di modelli tra i quali OmniRoute instrada le richieste **automaticamente**. Se la quota si esaurisce, un provider non risponde o i costi aumentano, la combo può passare al successivo modello idoneo e operativo. 🛡️
### ⚡ Configurazione zero — usa semplicemente `auto`
Non serve creare alcuna combo. Imposta il modello su `auto` (o su una variante) e OmniRoute crea una combo virtuale a partire dai provider connessi, valutandoli in tempo reale:
🧑💻 Pesi orientati alla qualità per la generazione di codice
auto/fast
⚡ Prima la latenza più bassa
auto/cheap
💰 Prima il costo per token più basso
auto/subscription
🎟️ Solo la quota dell'abbonamento che già paghi — in caso di errore si blocca, senza mai ricorrere a un fallback a pagamento (guida)
auto/thrifty
🪜 Prima la quota del piano, poi un livello alla volta verso le opzioni a pagamento più economiche — torna al piano dopo il ripristino della quota (guida)
auto/offline
🔋 Prima il margine maggiore di quota / limite di frequenza
auto/smart
🔭 Prima la qualità + 10% di esplorazione per individuare modelli migliori
auto/lkgp
📌 Preferenza esplicita per l'ultimo provider funzionante noto
auto/chaos
🧪 Distribuzione parallela a un gruppo di modelli (uno per provider, 5 per impostazione predefinita), restituisce una sola risposta; una chiamata upstream per ciascun modello del gruppo, non è un'iniezione di guasti
##
### 🔀 Oppure crea la tua combo — 20 strategie di instradamento
Tutte e **20** le strategie — combinabili liberamente per ogni passaggio della combo:
#
Strategia
Cosa fa
1
priority
Elenco ordinato con precedenza al primo target — esaurisce ciascuno prima di passare al successivo 🥇
2
fill-first
Utilizza interamente la quota di ciascun target prima di passare al successivo
3
weighted
Selezione casuale ponderata in base al peso di ogni target
4
round-robin
Scorre ciclicamente i target in ordine
5
p2c
Bilanciamento casuale del carico con scelta tra due opzioni
6
least-used
Seleziona il target con il carico corrente più basso
7
random
Selezione casuale uniforme (senza duplicati)
8
strict-random
Selezione casuale senza eliminare le ripetizioni 🎲
9
cost-optimized
Riduce al minimo il costo per richiesta in base ai prezzi aggiornati del catalogo 💸
10
headroom
Seleziona il target con la quota residua maggiore
11
quota-weighted
Ignora gli account esauriti, quindi seleziona in proporzione alla quota residua ÷ carico in corso — le conversazioni esistenti rimangono vincolate allo stesso target ⚖️
12
reset-window
Preferisce il target la cui finestra di quota si ripristina prima
13
reset-aware
Ordina in base al momento di ripristino della quota — prima le finestre più brevi 📊
14
context-relay
Trasferisce il contesto tra i target per le conversazioni lunghe 🧠
15
context-optimized
Seleziona il target più adatto alle dimensioni correnti del contesto
16
cache-optimized
Vincola ogni prefisso di prompt riutilizzabile allo stesso account — massimizza i riscontri nella cache dei prompt 🎯
17
lkgp
Ultimo percorso funzionante noto — mantiene l'ultimo provider che ha risposto correttamente, quindi applica le regole di fallback
18
auto
Valutazione in tempo reale basata su 16 fattori per ogni connessione 🤖
19
fusion
Distribuisce le richieste a un gruppo di modelli + un giudice sintetizza una sola risposta 🧬
20
pipeline
Concatena i passaggi — l'output di ogni target alimenta quello successivo 🔗
Il motore Auto-Combo assegna un punteggio a ogni candidato in base a **16 fattori** (integrità, quota, costo, latenza, adeguatezza all'attività, qualità, disponibilità della sessione…) — consulta [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 La resilienza è integrata (3 livelli indipendenti)
📖 [Motore Auto-Combo](docs/routing/AUTO-COMBO.md) · [Guida alla resilienza](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Cosa distingue OmniRoute
📊 Metodologia completa e dettagli per funzionalità rispetto a 9router, OpenRouter, CLIProxyAPI e LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Sostieni OmniRoute
OmniRoute è distribuito con licenza MIT e mantenuto apertamente. Se ti fa risparmiare tempo o denaro, ecco come contribuire a mantenerlo indipendente: scegli l'opzione che preferisci. Le sponsorizzazioni non influiscono mai sulla priorità di routing; offrono visibilità, non un posizionamento migliore.
**🇧🇷 PIX** — istantaneo, senza commissioni (Brasile)
Chiave (casuale): `5d865059-bc44-483a-962d-43ceb80126eb`
Pix copia e incolla:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Criptovalute — BTC · ETH · USDT-TRC20 · USDC-Solana (fai clic per espandere)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Invia ogni valuta esclusivamente sulla rete indicata: l'invio sulla rete sbagliata può comportare la perdita dei fondi.
🐛 Hai trovato un bug o vuoi lasciare un feedback? Apri una [Discussione](https://github.com/diegosouzapw/OmniRoute/discussions).
Note per gli sviluppatori: Il progetto può generare un file locale .env durante npm install/postinstall per agevolare gli sviluppatori. Questo file viene intenzionalmente ignorato tramite .gitignore (consulta .gitignore) e non deve mai essere incluso in un commit; se viene incluso accidentalmente, sostituisci tutti i segreti esposti e rimuovi il file dalla cronologia. Consulta docs/DEVELOPER-ENVIRONMENT.md per indicazioni sulla gestione dei file di ambiente locali e dei segreti.
## 📡 OmniRoute Radar
Il dato principale del piano gratuito rimane **~1,62 miliardi di token/mese**, in base al catalogo documentato
e deduplicato per pool riportato sopra. I crediti temporanei di registrazione dei provider possono incrementare separatamente il primo
mese fino a **~2,22 miliardi**. Radar è un overlay opzionale e firmato del catalogo, destinato a chi desidera
informazioni più aggiornate sulla disponibilità dei modelli gratuiti tra una release di OmniRoute e l'altra; il catalogo della community e tutte le funzionalità gratuite
esistenti rimangono gratuiti.
I sostenitori possono ricevere il catalogo in tempo reale e ulteriori opportunità offerte dai provider. Il relativo limite massimo, separato
e variabile, è **di circa 3 miliardi di token/mese al massimo**, a seconda della disponibilità dei provider.
Tale limite non è garantito: i provider possono modificare quote, requisiti di idoneità, modelli o regioni in
qualsiasi momento.
Radar è facoltativo ed effettua esclusivamente richieste GET. Il client OmniRoute non carica prompt, traffico, configurazioni dei provider,
telemetria sull'utilizzo o lo stato locale relativo alla chiusura degli annunci. Scopri i requisiti di idoneità e
il catalogo attuale su **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Novità
> Punti salienti recenti da **v3.8.20 → v3.8.53**. Cronologia completa in [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Routing `quota-weighted`** — la ventesima strategia combo salta gli account esauriti, poi estrae tra i restanti in proporzione alla quota residua divisa per il carico in corso, mantenendo ancorate le conversazioni esistenti. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Modalità headless** — `omniroute serve --headless` (o `OMNIROUTE_HEADLESS=1`) avvia solo il motore proxy `/v1/*`, con la dashboard e i sottosistemi riservati alla dashboard disattivati. → [Modalità headless](docs/guides/HEADLESS.md)
- **🔎 Scoperta dei modelli** — `/v1/models` filtra per capacità, contesto, tipo e testo, e `POST /v1/models/query` restituisce una shortlist breve e deterministica con la stessa visibilità per chiave. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🔑 Controllo del routing per chiave** — vincola una chiave API a un singolo modello o combo con `forcedModel`, e aggiungi o rimuovi atomicamente modelli e combo di una chiave (`/api/keys/{id}/access`). → [Riferimento API](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Controlli PII più granulari** — selezione per tipo, fino a 20 pattern di mascheramento personalizzati validati e contatori di rilevamento per tipo; il mascheramento stesso resta opt-in. → [Guardrails](docs/security/GUARDRAILS.md)
- **🌍 67 lingue** — dashboard, mirror della documentazione e CLI, con `npm run i18n:add-locale` che aggiunge una lingua ovunque con un solo comando. → [Guida i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — delega A2A in ingresso verso la tua flotta di agenti, skill Conductor sulla Agent Card e un pannello della dashboard con chat vocale push-to-talk Faro. → [Server A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Ammissione adattiva e protezione dal sovraccarico** — le richieste chat pesanti si accodano invece di restituire 503, con lease a scorrimento RPM atomici per connessione. → [Guida alla resilienza](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Ordinamento canonico di `/v1/models`** — un blocco contiguo raggruppato per provider per ogni provider (combo ancorate per prime), stabile su ogni sorgente di catalogo. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🗜️ Rafforzamento della compressione** — protezione dall'inflazione attiva per impostazione predefinita, pacchetti Caveman per DE / FR / JA + cinese (wényán), filtri RTK per Gradle e .NET. → [Compressione](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Costo flat-rate onesto** — i provider in abbonamento / con piano coding mostrano **$0** nelle analisi dei costi; budget, quota e routing continuano a stimare. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **⚖️ Routing Quota-Share** — suddivide equamente la quota di un account condiviso tra chiavi in pool, in modalità work-conserving così le fette inattive vengono prestate. → [Guida alla resilienza](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Configurazione CLI/agente con un solo comando** — 7 comandi `setup-*` registrati; `omniroute run` avvia 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` supporta 11 target con un selettore interattivo di provider+modello e preferiti per contesto. → [Integrazioni CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Modalità remota** — gestisci un OmniRoute remoto con token con scope (`connect` / `contexts` / `tokens`) + un helper OAuth `antigravity` per installazioni su VPS. → [Modalità remota](docs/guides/REMOTE-MODE.md)
- **🧭 Auto-routing più intelligente** — combo `auto/:`, **Fusion** (panel di modelli + giudice), routing consapevole del task, override per richiesta di modello / modalità / budget in USD. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Compressione pluggable** — 12 motori componibili + Compression Studios: LLMLingua-2, Ultra a due livelli, omniglyph, gate di fedeltà per step, GCF v3.2, editor drag-reorder. → [Compressione](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Decrittazione MITM trasparente (TPROXY)** — intercetta CLI che ignorano le variabili d'ambiente del proxy, con una CA per-SNI + installer per il trust store. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Telemetria dei costi ovunque** — header di costo/utilizzo `X-OmniRoute-*` su ogni endpoint, header dei risparmi da cache-HIT, quote di spesa in USD per chiave. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🧠 Memoria sotto il tuo controllo** — disattivata per impostazione predefinita, quantizzazione vettoriale int8 + decay tipizzato opt-in, `x-omniroute-no-memory` per richiesta. → [Memoria](docs/frameworks/MEMORY.md)
- **🛡️ Sicurezza** — protezione da prompt injection su ogni route LLM (suite red-team), guardrail di mascheramento delle credenziali opt-in (oscura chiavi API/segreti trapelati in entrambe le direzioni), ricerca web DuckDuckGo gratuita come ultima risorsa e un gate di login OIDC opzionale per la dashboard (il login con password resta sempre disponibile). → [Guardrails](docs/security/GUARDRAILS.md)
- **🖼️ Nuovi endpoint** — `/v1/ocr` (Mistral OCR) e `/v1/audio/translations` (in stile Whisper) completano la superficie media. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🎨 Generazione di immagini / video / audio** — un'unica API per i media: xAI Grok Imagine e video Novita AI, ComfyUI, Magnific, Adobe Firefly, Segmind e provider vocali come ElevenLabs. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🌍 Deployment e operations** — `basePath` per reverse proxy, rilevamento automatico della lingua del browser, tracciamento dei dispositivi per chiave, trust MITM senza root, localizzazione zh-TW. → [Variabili d'ambiente](docs/reference/ENVIRONMENT.md)
- **🤝 Più provider e agenti** — agenti cloud (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) con login browser + OAuth, card di prima classe per Ollama, Claude Opus 5 e Sonnet 5, partnership ufficiale con Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… e un **catalogo di 375 provider** aggiornato. → [Provider](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Trasparenza del routing** — ogni risposta porta un header `X-OmniRoute-Decision` che indica la strategia/provider/latenza che l'hanno servita; una nuova strategia combo `cache-optimized` + il fattore `cacheAffinity` di Auto-Combo riportano le richieste ripetute alla connessione che detiene il prefisso in cache, e un endpoint di sola lettura `/v1/auto-combo/{channel}/candidates` espone il pool di candidati live di un canale `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Prestazioni e infrastruttura locali** — Redis locale con un clic, deployer relay per Cloudflare Workers / Deno Deploy, Bifrost e Mux come servizi embedded supervisionati. → [Servizi embedded](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Incluso nel pacchetto** — framework di plugin + marketplace, framework di skill Omni/Agent/GitHub, integrazione con l'Obsidian vault (22 strumenti MCP), API Batch & Files compatibili con OpenAI, cache semantica delle risposte, gamification con classifiche, scoperta degli agenti ACP (15 agenti integrati), esportazione pianificata dei log su BigQuery, fan-out parallelo multi-modello `auto/chaos`, un bridge per bot Telegram, un gestore di versioni in-app e classifiche dei provider gratuiti basate su LMArena-ELO. → [Documentazione](docs/README.md)
## 🤖 CLI e agenti di coding compatibili
> Un'unica configurazione — `http://localhost:20128/v1` — e **qualsiasi** IDE o CLI basato sull'IA funziona con modelli gratuiti e a basso costo.
+ funziona anche con · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · qualsiasi strumento compatibile con OpenAI
📖 Configurazione per ciascuno dei 37 strumenti (27 CLI di programmazione + 10 agenti CLI) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 Plugin OpenCode → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Avvia qualsiasi CLI supportata tramite OmniRoute con un solo comando** — senza scrivere file di configurazione,
con credenziali iniettate per ciascun processo e un ambiente home isolato temporaneo per Qwen/Gemini:
```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"
# Oppure scegli interattivamente provider+modello e scrivi la configurazione dello strumento:
omniroute configure codex # disponibili anche: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Ogni comando rispetta il contesto remoto attivo (`omniroute connect `), `--dry-run`
mostra in anteprima le variabili d'ambiente/gli argomenti esatti senza eseguire alcunché, mentre `--api-key-env NAME` evita
che i segreti vengano salvati nella cronologia della shell. → [Integrazioni CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 375 provider AI — 153 contrassegnati come gratuiti nel catalogo
> **375 provider registrati** nelle raccolte canoniche chat, media, search, local, cloud-agent e system, inclusi **153 con metadati di discovery `hasFree: true`**. Il registro dei modelli chat copre **239 provider / 3.059 coppie provider-modello distinte / 1.475 ID modello grezzi**; il catalogo separato dei budget gratuiti conta **467 righe per modello**, **34 pool ricorrenti** e **51 provider gratuiti per sempre ricorrenti/keyless**. Questi denominatori sono diversi per progettazione; le definizioni e i calcoli con deduplica dei pool si trovano in [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) e [Free Tiers](docs/reference/FREE_TIERS.md).
### 🏢 Ogni grande laboratorio — attraverso un unico endpoint
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…e oltre 350 altri — ogni icona viene risolta in tempo reale dal catalogo dei provider della dashboard. 📖 [Provider Reference](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Gratuito per sempre — $0, nessuna carta
OpenCode Zen DeepSeek V4, Nemotron 3 Nessun limite di token
Kilo Code Auto-router, Tencent Hy3 Gratis per sempre
Requesty GPT-OSS 120B, Nemotron Gratis per sempre
SiliconFlow DeepSeek V3.2 / R1 Piano gratuito
Z.AI GLM GLM-4.7 / 4.5-Flash Gratis per sempre
Baidu ERNIE ERNIE 4.0 Gratis per sempre
Qoder AI Qwen3-Max, Kimi-K2 GRATIS illimitato
Pollinations GPT, Llama, Claude Nessuna chiave necessaria
Cloudflare AI Oltre 50 modelli 10K neurons al giorno
NVIDIA NIM GLM, MiniMax ~40 RPM gratis
Cerebras GLM 4.7, GPT-OSS Credito una tantum di $5; carta richiesta
OpenRouter Modelli :free +$10 → RPM più alto
📖 Catalogo completo leggibile dalla macchina → [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ Dove funziona OmniRoute — ovunque
> Stessa app, la tua macchina, le tue regole. Da un'installazione globale tramite npm fino al **tuo telefono** tramite Termux.
Piattaforma
Installazione
Caratteristiche principali
📦 npm (globale)
npm install -g omniroute
Un solo comando, qualsiasi sistema operativo
🐳 Docker
docker run … diegosouzapw/omniroute
Multi-arch AMD64 + ARM64
🖥️ Desktop (Electron)
npm run electron:build
Finestra nativa + barra delle applicazioni — Windows / macOS / Linux
🎩 Barra dei menu (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
Supervisiona e aggiorna automaticamente il server — macOS
💪 ARM
arm64 nativo
Raspberry Pi, server ARM, Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
Funziona sul tuo telefono, 24/7, senza root
📲 PWA
"Aggiungi alla schermata Home"
A schermo intero, offline, installabile dal browser
🧩 Plugin OpenCode
@omniroute/opencode-provider
Integrazione nativa con OpenCode
🤖 VS Code Copilot Chat
installa l'estensione OmniCopilot
Ogni modello OmniRoute nel selettore nativo di Copilot Chat — versione stabile e Insiders
🛠️ Dal codice sorgente
npm install && npm run dev
Modificalo, contribuisci
📖 [Guida a Docker](docs/guides/DOCKER_GUIDE.md) · [Desktop](electron/README.md) · [Icona nella barra dei menu](https://github.com/zoispag/omniroute-tray) · [Termux](docs/guides/TERMUX_GUIDE.md) · [PWA](docs/guides/PWA_GUIDE.md) · [OpenCode](docs/frameworks/OPENCODE.md)
### 🧩 Novità: OmniRoute all'interno del Copilot Chat nativo di VS Code
> Nessuna nuova barra laterale, nessuna nuova interfaccia di chat: ogni modello fornito da OmniRoute appare direttamente nel
> **selettore di modelli di Copilot Chat che già utilizzi**. A partire da VS Code 1.122, i modelli dei provider funzionano
> senza accesso a GitHub o abbonamento a Copilot: modalità agente, chiamate agli strumenti e visione,
> gratuitamente.
Installa l'estensione **[OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)**, collegala
al tuo server OmniRoute (il valore predefinito è `localhost:20128`), quindi apri Copilot Chat → selettore di modelli
→ **Gestisci modelli…** → **OmniRoute**.
Dall'editor: apri la vista **Estensioni**, cerca **"OmniRoute"**, fai clic su **Installa**
— funziona allo stesso modo in entrambi gli store. Il codice sorgente, le segnalazioni e la guida alla pubblicazione si trovano in
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [Guida a VS Code Copilot Chat](docs/guides/VSCODE-COPILOT.md) — configurazione, cosa mostra il selettore, dashboard in una scheda, risoluzione dei problemi
### 🎩 Novità: OmniRouteTray — il tuo gateway, nella barra dei menu
> `omniroute serve` dà il meglio di sé quando è sempre attivo. **[OmniRouteTray](https://github.com/zoispag/omniroute-tray)**
> lo trasforma in un'app per la barra dei menu di macOS che puoi configurare e dimenticare: avvia il server, lo mantiene attivo
> dopo i riavvii, lo aggiorna direttamente e rende accessibile il tuo budget di token in tempo reale con un clic — **senza
> lasciare aperta una finestra del terminale e senza dover gestire `npm install -g omniroute`.**
Realizzato con [Tauri v2](https://v2.tauri.app/) (un core Rust dalle dimensioni trascurabili), include
il proprio runtime Node 24 firmato e gestisce un'installazione di OmniRoute appartenente all'app, quindi non entra mai in conflitto con le tue
installazioni globali di `node`/`bun`. **Condivide la configurazione e il database esistenti in `~/.omniroute/`** — quindi è lo
stesso OmniRoute che già utilizzi, semplicemente con un cappello. 🎩
Cosa fa
Come
🟢 Supervisiona il server
Avvia omniroute serve e adotta un'istanza già in esecuzione invece di duplicarla
📊 Utilizzo in tempo reale a colpo d'occhio
Barre delle quote dei provider, limiti di sessione/settimanali di Claude con conto alla rovescia per il ripristino, ripartizione dei costi degli ultimi 30 giorni
🔄 Aggiornamento automatico sul posto
Installazione in più fasi, sostituzione atomica, rollback in caso di errore — sempre aggiornato alla versione più recente
🚀 Avvio all'accesso
Avvio facoltativo all'accesso; solo nella barra dei menu, senza icona nel dock
🩺 Diagnostica e log
Diagnostica con un clic e accesso ai log del server
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Preferisci un download? Scarica l'ultimo .dmgReleases. Il codice sorgente, le segnalazioni e la documentazione
di compilazione si trovano su zoispag/omniroute-tray.
💛 Un progetto della community a cura di @zoispag — non è una versione ufficiale di OmniRoute.
## 🔒 Privato e local-first
📖 [Autorizzazione](docs/architecture/AUTHZ_GUIDE.md) · [Misure di sicurezza](docs/security/GUARDRAILS.md) · [Conformità](docs/security/COMPLIANCE.md)
## 🔌 CLI completa + A2A e MCP
> Oltre al server, OmniRoute è una **console completa da riga di comando** con **oltre 80 comandi**, più protocolli aperti per agenti che consentono a un agente IA di gestirla **in autonomia**.
### ⌨️ Una vera CLI (non solo `start`)
```bash
omniroute # avvia il gateway + la dashboard (porta 20128)
omniroute chat # client di chat TUI interattivo (comandi slash: /model /combo /skill /memory)
omniroute setup # procedura guidata per la prima configurazione
omniroute doctor # diagnostica provider, porte e dipendenze native
```
### 🛰️ Modalità remota — esegui la CLI qui e OmniRoute su un VPS
OmniRoute è su un server? Gestiscila dal tuo laptop con la **stessa CLI**. Accedi una sola volta
con un token di accesso con ambito limitato; da quel momento ogni comando verrà eseguito sul server remoto.
```bash
omniroute connect 192.168.0.15 # password → token con ambito limitato, salvato come contesto
omniroute models # ← viene eseguito sul server REMOTO
omniroute configure codex # ← seleziona un modello remoto e scrive un profilo Codex locale
omniroute tokens create --name ci --scope read # genera token con privilegi più limitati per altre macchine
omniroute contexts use default # ← torna al server locale
```
I token hanno ambito `read` / `write` / `admin`; le route che avviano processi rimangono accessibili solo tramite loopback.
📖 [Modalità remota](docs/guides/REMOTE-MODE.md)
### 🤝 Connetti un agente — e controllerà autonomamente OmniRoute
Esponi OmniRoute tramite **MCP**, **A2A**, una **REST API**, **webhook** o una **CLI remota**: qualsiasi agente compatibile (o il tuo codice) avrà accesso all'intero gateway, inclusi routing, provider, combinazioni, cache, compressione e memoria, in piena autonomia. Gli endpoint HTTP riportati di seguito sono disponibili all'indirizzo `http://localhost:20128`.
Interfaccia
Endpoint / comando
Utilizzo
🧰 MCP (stdio)
omniroute --mcp
Integralo con Claude Desktop, Cursor o qualsiasi client MCP
Compatibile con OpenAI — chat, embedding, immagini, audio, OCR
🔔 Webhook
/api/webhooks
Invia eventi relativi a richieste e quote a Slack, Discord, Telegram o qualsiasi URL
🛰️ CLI remota
omniroute connect
Gestisci un'istanza remota con token di accesso con ambito limitato
```bash
# Fornisci a Claude Code l'intero set di strumenti OmniRoute tramite MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [Server MCP](docs/frameworks/MCP-SERVER.md) · [Server A2A](docs/frameworks/A2A-SERVER.md) · [Protocolli per agenti](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Risparmia il 15–95% dei token — automaticamente
### 📖 Come funziona — pipeline, architettura e calcolo del risparmio
La combo impilata predefinita esegue `RTK → Caveman`. Quando entrambi agiscono sullo stesso payload di tool/contesto, i risparmi si combinano:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
I blocchi di codice, gli URL, il JSON e i dati strutturati sono **sempre protetti** dal motore di preservazione.
> **Perché usare molti token quando pochi bastano?** Ogni richiesta attraversa la pipeline di compressione di OmniRoute **in modo trasparente** — nessuna modifica lato client. Ora è uno **stack di 12 motori componibili** che vengono eseguiti in ordine e si combinano in base alla combo di routing — basato su idee da [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua) e [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 Lo stack di 12 motori
I motori vengono eseguiti nell'ordine della pipeline; ciascuno è attivabile e configurabile in modo indipendente per ogni combo:
#
Motore
Cosa fa
1
Session-Dedup
Elimina i contenuti ripetuti tra i turni (content-addressed, tra turni)
2
CCR
Archivia i blocchi di grandi dimensioni dietro marcatori di recupero, recuperati su richiesta
3
Lite
Riduzione di spazi bianchi + URL delle immagini (baseline a bassa latenza)
4
RTK
Filtro intelligente dei risultati dei tool, dedup e troncamento (consapevole dei comandi)
5
Responses Tool Output
Compressione JSON lossless-first + diagnostica limitata per output di shell/patch/search/build (Responses API)
6
Headroom
Compattazione tabellare lossless degli array JSON (~30%) tramite un codec GCF incorporato
7
Relevance
Punteggio estrattivo delle frasi rispetto all'ultima query dell'utente
8
Caveman
Compressione della prosa basata su regole (~65–75% sull'output)
9
Aggressive
Riassunto + invecchiamento progressivo dei turni precedenti
10
LLMLingua-2
Pruning semantico ML tramite MobileBERT ONNX — sicuro per il codice, asincrono
11
Ultra
Pruning euristico dei token con un livello opzionale basato su modello piccolo (SLM)
12
OmniGlyph
Codifica sperimentale del contesto come immagine per il misurato Claude Fable 5 sul wire diretto Anthropic; i transformer GPT 5.6 restano fail-closed in attesa dei riscontri dai provider. Quattro profili di compressione (predefinito aggressivo, bilanciato, coding-safe, passthrough) (il più aggressivo; opt-in)
I blocchi di codice, gli URL e i dati strutturati sono **sempre preservati** a livello di byte. I **preset con un clic** combinano i motori:
Modalità
Risparmio
Ideale per
🪶 Lite
~15%
Default sicuro sempre attivo
🪨 Standard (Caveman)
~30%
Programmazione quotidiana
⚡ Aggressive
~50%
Sessioni lunghe con molti tool
🔥 Ultra
~75%
Massimo risparmio
🧰 RTK
60–90%
Output di shell/test/build/git
🔗 Stacked (RTK → Caveman)
78–95%
Prompt misti + log dei tool
**Esempio reale — modalità Standard:**
> **Prima (69 token):** _"Il motivo per cui il tuo componente React viene ri-renderizzato è probabilmente che stai creando un nuovo riferimento a un oggetto a ogni ciclo di render. Quando passi un oggetto inline come prop, il confronto superficiale di React lo vede come un oggetto diverso ogni volta, il che attiva un ri-render. Consiglierei di usare useMemo per memorizzare l'oggetto."_
>
> **Dopo (19 token):** _"Nuovo riferimento a oggetto a ogni render. Prop con oggetto inline = nuovo riferimento = ri-render. Avvolgi in useMemo."_
>
> **Stessa risposta. Il 72% di token in meno. Nessuna perdita di precisione.** ✅
**Esempio PT-BR — modalità [Troglodita](https://github.com/leninejunior/troglodita):**
> **Prima (42 token):** _"Il problema è che il componente si ri-renderizza perché a ogni ciclo di render viene creata una nuova referenza di oggetto. Consiglierei di usare `useMemo`."_
>
> **Dopo (12 token):** _"Ri-render: nuova ref a ogni ciclo (oggetto inline ricreato). Usare `useMemo`."_
>
> **Stessa risposta. ~70% di token in meno. Precisione tecnica intatta.** ✅
### 🎚️ Oltre gli engine — stili di output, il dial adattivo e il controllo per richiesta
I 12 engine qui sopra riducono ciò che **entra**. Altri tre livelli plasmano **come**, **quando** e cosa **esce**:
- **🪄 Output Styles** _(steering sull'asse dell'output)_ — iniettano istruzioni deterministiche e cache-safe che plasmano la risposta; combinabili, ciascuno con intensità `lite` / `full` / `ultra`. Aggiungere uno stile è una voce di una riga nel registry:
- **Terse prose** — elimina riempitivi / articoli / attenuazioni; mantiene esatta la sostanza tecnica.
- **Less code** — YAGNI del "lazy senior dev": la modifica funzionante più piccola, nessuno scaffolding non richiesto.
- **Ponytail (lazy senior dev)** — risali la scala YAGNI, correggi la causa radice, il diff funzionante più piccolo.
- **I have ADHD (action-first)** — l'azione successiva apre, passi numerati, un solo passo successivo concreto, nessun preambolo.
- **Terse CJK (文言)** — stile ultra-conciso in cinese classico (limitato al locale `zh`).
- **🎯 Adaptive context-budget** _(il dial)_ — invece di un singolo threshold di token on/off, scala gli engine più economici e meno lossy solo quanto serve per **stare nella finestra di contesto del modello**. Policy: `reserve-output` (default, model-aware) · `percentage` · `absolute`. Mode: `floor` (garantisce il fit) · `replace-autotrigger` (la tua scelta esplicita vince) · `off` (threshold legacy).
- **🎛️ Dove viene decisa la compressione** _(precedenza, alta → bassa)_ — header `x-omniroute-compression` per richiesta › override del routing-combo › profilo nominato attivo › adaptive / auto-trigger › default del pannello › off. Il piano applicato viene restituito nell'header di risposta `X-OmniRoute-Compression: ; source=`.
Auto-trigger per soglia di token, attiva il dial adattivo, fissa un profilo nominato, imposta un one-off per singola richiesta oppure assegna una pipeline per routing combo — quello che si adatta meglio al carico di lavoro. Un **eval harness** offline opt-in (`npm run eval:compression`) misura fedeltà vs. risparmio su un corpus fissato prima di promuovere una modifica.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Avvio rapido
**1) Installa ed esegui**
```bash
npm install -g omniroute
omniroute
```
> 💡 Vedi `npm warn ERESOLVE` o warning sui peer-dep? [Sono innocui](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Usi npm 11 o successivo?** npm può bloccare gli script del ciclo di vita dei pacchetti se non sono consentiti. Il `postinstall` di OmniRoute (`node scripts/build/postinstall.mjs`) è necessario per preparare i suoi file runtime nativi. Consenti i pacchetti indicati nel warning di npm quando installi globalmente. Per l'insieme di pacchetti riportato da OmniRoute 3.8.53:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Per riutilizzare questa allowlist per future installazioni globali, configurala una volta sola e poi installa normalmente:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> L'elenco delle dipendenze può cambiare tra una release e l'altra; se npm riporta un elenco diverso, usa i nomi dei pacchetti presenti in quel warning. Consentire un pacchetto permette l'esecuzione dei suoi script di installazione.
> **Usi Gemini Web o un altro provider basato su web-cookie?** Il pacchetto npm include
> Playwright ma non il suo binario Chromium. Consulta la nota
> [Configurazione di Playwright Chromium](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> prima di effettuare la prima richiesta a un web-provider.
Dashboard su `http://localhost:20128` · API su `http://localhost:20128/v1`.
**2) Collega un provider idoneo usando il tuo account**
Dashboard → **Providers** → scegli un provider i cui termini e quota attuali siano adatti al tuo caso d'uso → aggiungi la sua API key o completa il flusso di account. I piani gratuiti possono richiedere registrazione, approvazione o un metodo di pagamento. Consulta la [Guida ai piani gratuiti](docs/getting-started/FREE-TIERS-GUIDE.md); la disponibilità senza chiave non è garantita e i provider contrassegnati con `tos: avoid` sono esclusi da `auto` per impostazione predefinita.
**3) Punta il tuo tool di coding**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Verifica che funzioni**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Dovresti vedere elencati i modelli collegati. 🎉 Tutto qui — inizia a scrivere codice e OmniRoute instrada e applica il fallback automaticamente per te.
Se il tuo client non può inviare header personalizzati, OmniRoute espone anche alias di compatibilità con token:
```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
```
Usali solo per i client che non riescono ad allegare `Authorization: Bearer ...`. L'autenticazione tramite header resta la modalità preferita.
## 📦 Altri metodi di installazione — Docker, sorgenti, 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` segue la versione SemVer stabile **pubblicata** più recente. Non segue il branch git `main`. Usa `:X.Y.Z` per GitOps. Consulta [Canali di rilascio Docker](docs/guides/DOCKER_GUIDE.md#release-channels). L'immagine imposta **`OMNIROUTE_MEMORY_MB=1024`**. È sufficiente per la dashboard e una chat leggera. Gli **agenti di programmazione** (`POST /v1/responses` da Claude Code, Codex, Grok, …) richiedono un heap V8 molto più grande, altrimenti il processo genera un `FATAL ERROR` a circa 12 GiB con due contesti lunghi sovrapposti. Dimensiona il container al di sopra dell'heap (i buffer nativi risiedono al di fuori di V8):
| Carico di lavoro | Heap (`-e OMNIROUTE_MEMORY_MB`) | Container (`--memory`) |
| ------------------------------------- | ----------------------------------------- | ---------------------- |
| Dashboard / chat leggera | `1024` (valore predefinito dell'immagine) | ≥2 g |
| Un agente di programmazione | `8192` | ≥10 g |
| Due `/v1/responses` lunghi simultanei | `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
```
Tabella completa: [Guida Docker — RAM di runtime](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Canale Docker di pre-release:** `diegosouzapw/omniroute:next` e
> `diegosouzapw/omniroute:next-web` seguono il branch `release/v*` predefinito
> corrente. Questi tag modificabili sono destinati esclusivamente al test di correzioni non ancora rilasciate e
> **non sono supportati in produzione**. Consulta
> [Canali di rilascio Docker](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
L'installazione standard con `bun install` e quella globale (`bun install -g omniroute`) sono supportate tramite il rilevamento del runtime Bun:
- **`bun:sqlite` integrato**: durante l'esecuzione con Bun, OmniRoute utilizza il driver `bun:sqlite` integrato di Bun, ricorrendo a `better-sqlite3` su Node.js oppure a `sql.js`.
- **Selezione automatica del bundler Webpack in sviluppo**: la modalità di sviluppo (`bun run dev`) rileva automaticamente Bun e disabilita Turbopack a favore di Webpack per evitare incompatibilità con i binding nativi V8. Le build di produzione (`bun run build`) rispettano esattamente `OMNIROUTE_USE_TURBOPACK` come su Node: Turbopack per impostazione predefinita, `OMNIROUTE_USE_TURBOPACK=0` per compilare con Webpack (`Dockerfile.bun` lo espone come `--build-arg`).
- **Dockerfile dedicato a Bun**: `Dockerfile.bun` multi-stage per distribuzioni di produzione native con Bun (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Installa ed esegui con Bun
bun install
bun run dev
```
**🛠️ Dai sorgenti**
```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
# Utilizzando i flake di Nix
nix develop
npm run dev
# Oppure utilizzando devbox
devbox run npm run dev
```
📖 [Guida Docker](docs/guides/DOCKER_GUIDE.md) — Profili Compose, HTTPS con Caddy, tunnel Cloudflare.
**🦭 Podman**
```bash
# 1. Prepara la directory dei dati montata tramite bind
mkdir -p data
# 2. Solo Linux + Podman rootless locale (mai un client Podman Machine remoto):
podman unshare chown 1000:1000 ./data
# 3. Imposta l'indicazione del runtime, crea l'immagine Compose locale e avvia
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
Su macOS o Windows, Podman utilizza una Podman Machine remota: salta `podman unshare` e
segui le [indicazioni sulla directory dei dati specifiche per la topologia](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Guida Podman](contrib/podman/README.md) — Build Compose, Podman Machine e
configurazione Quadlet di Linux/systemd.
**⚡ Installazione più veloce / leggera (senza build nativa)**
Il motore SQLite nativo (`better-sqlite3`) è una dipendenza **opzionale**, quindi un'installazione
globale non rimane mai bloccata durante la compilazione dai sorgenti: utilizza un binario precompilato quando ne esiste uno compatibile
con la piattaforma/Node in uso; in caso contrario, passa automaticamente a un motore JavaScript puro
(`node:sqlite` su Node 22+, altrimenti il modulo WASM `sql.js` incluso) — senza richiedere strumenti di compilazione.
Per saltare completamente l'**inizializzazione nativa** successiva all'installazione (CI, sistemi headless o computer lenti).
Nota: questa opzione salta solo il passaggio di inizializzazione di SQLite nativo (`scripts/postinstall.mjs`); l'hook
di copia/riparazione del binario (`scripts/build/postinstall.mjs`) viene comunque eseguito normalmente:
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # Anche CI=1 lo salta
```
Per installazioni più rapide, preferisci **pnpm** (archivio indirizzato in base al contenuto + hard link — vedi sopra).
Per un runtime headless senza dashboard, utilizza il profilo Docker `base` (sopra) oppure la
[guida Termux](docs/guides/TERMUX_GUIDE.md). La CLI e la dashboard web vengono servite dallo
stesso processo su un'unica porta, quindi attualmente non esiste un pacchetto separato dedicato esclusivamente alla CLI.
OAuth 2.0 (PKCE) + JWT + chiavi API + autenticazione MCP con ambiti · AES-256-GCM per i dati inattivi · DOMPurify
Occultamento
wreq-js — impersonificazione delle fingerprint TLS JA3 / JA4, proxy a 3 livelli
Resilienza
Circuit breaker, backoff esponenziale, protezione anti-thundering-herd, autoripristino delle combinazioni automatiche
Registrazione
pino — log JSON strutturati con contesto della richiesta
Test
Test runner di Node.js + Vitest — oltre 56.000 dichiarazioni di test statiche in oltre 7.800 file di test tracciati (unitari, integrazione, E2E, sicurezza, ecosistema)
Strategia di copertura dei test per oltre 56.000 dichiarazioni di test statiche in oltre 7.800 file di test tracciati
# ⭐ Principali contributori
> OmniRoute è plasmato da una community open-source appassionata. Queste persone hanno dato contributi eccezionali che incidono direttamente sulla qualità, sulla stabilità e sulla portata del progetto. **Grazie.**
### Contributori esterni per pull request unite
Censimento effettuato il 2026-10-18 15:09:09 UTC con il commit più recente di release/v3.8.52, 656f01cb43. Il censimento paginato tramite GitHub GraphQL contiene 9.191 PR unite: 3.834 del proprietario del repository, 229 di Dependabot, 6 di altri bot/app e 5.122 PR esterne da 835 contributori distinti. Le “righe modificate” sono le aggiunte + le eliminazioni di GitHub e includono file generati, lockfile, cataloghi, traduzioni e documentazione; rappresentano il turnover, non le LOC scritte. 49 PR riportano diff GitHub superiori a 500.000 righe (ad esempio #13399, una singola aggiunta di provider, elenca 2.347 file modificati), il che gonfia diversi totali sopra riportati. I pari merito sono classificati insieme.
### Commit attribuiti su GitHub
Ricontrollato il 2026-10-18 14:44:45 UTC: commit attribuiti a GitHub riportati dall'API Contributors del repository per il ramo predefinito release/v3.8.52. L'API ha restituito 849 identità (429 utenti, 2 bot, 418 anonime); questa tabella esclude il maintainer, i bot e le identità anonime e mantiene i pareggi in classifica. È distinta sia dalla classifica delle PR unite sopra sia dal censimento dei metadati Git riportato di seguito.
> 🙏 Le funzionalità, le correzioni di bug e i miglioramenti infrastrutturali di questi contributor sono una **parte fondamentale** di ciò che rende OmniRoute affidabile e ricco di funzionalità. Ogni pull request, ogni caso di test e ogni file di traduzione i18n conta. L'open source è costruito da persone come loro.
---
## 💖 Sostenitori
Un sentito ringraziamento alle persone che finanziano OmniRoute di tasca propria: ogni contributo mantiene il progetto gratuito, indipendente e in continua evoluzione.
Pixma 💛 Precedente sostenitore con donazione una tantum
Paco Cartones 💛 Precedente sostenitore con donazione una tantum
longtao 💛 Precedente sostenitore con donazione una tantum
… e altri che preferiscono rimanere anonimi 💛I sostenitori pubblici di GitHub sono stati riconvalidati il 2026-10-18 tramite l'API GraphQL di GitHub Sponsors: 11 sponsorizzazioni pubbliche (6 attive, 5 passate) su 14 totali. Lo stato isActive di GitHub determina le etichette relative ai sostenitori attivi riportate sopra; i precedenti sostenitori pubblici con donazione una tantum continuano a essere ringraziati, mentre i sostenitori privati rimangono anonimi. Le donazioni tramite Ko-fi, Buy Me a Coffee, Liberapay, PIX e criptovalute non sono elencate perché non dispongono di un registro pubblico dei sostenitori.💖 Diventa un sostenitore → — ogni dollaro contribuisce a mantenere OmniRoute gratuito e indipendente.
## 👥 Oltre 900 contributori
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Verificato il 2026-10-18 sulla punta attiva di release/v3.8.52, commit ad160ab2d1 (6.826 commit): 993 identità Git umane normalizzate — 707 risultano come autori di commit (incluso il manutentore) e 286 compaiono solo nei trailer espliciti Co-authored-by. Il censimento applica .mailmap, confronta gli indirizzi e-mail senza distinguere tra maiuscole e minuscole, associa gli indirizzi GitHub noreply numerici e quelli testuali solo quando codificano lo stesso handle, esclude 26 identità relative a bot/agenti/servizi/segnaposto e non unifica i normali indirizzi e-mail solo perché i rispettivi nomi visualizzati corrispondono. L'audit del 2026-08-24 riportava 639 identità; rieseguendo questo metodo sulla base ac02c5b42f di tale audit se ne ottengono 619, pertanto l'incremento deriva da nuovi contributori, non da un metodo meno rigoroso.
### Come contribuire
1. Crea un fork del repository
2. Crea un branch a partire dalla punta **attiva** di `release/vX.Y.Z` (non da `main`) — consulta [Modello di branching e rilascio](docs/ops/BRANCHING_MODEL.md)
3. Crea il tuo branch per la funzionalità (`git checkout -b feat/amazing-feature`)
4. Esegui il commit delle modifiche (`git commit -m 'feat: add amazing feature'`)
5. Esegui il push sul branch (`git push origin feat/amazing-feature`)
6. Apri una Pull Request con **base = quel branch `release/vX.Y.Z`**
Consulta [CONTRIBUTING.md](CONTRIBUTING.md) per le linee guida dettagliate.
### Rilascio di una nuova versione
```bash
# Crea una release — la pubblicazione su npm avviene automaticamente
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Stelle
## 🌍 StarMapper
## 🙏 Ringraziamenti
OmniRoute si regge sulle spalle di giganti. È nato come fork di **[9router](https://github.com/decolua/9router)** e come port TypeScript del progetto Go **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — e da lì, ogni sottosistema elencato di seguito è stato ispirato da un progetto open source che lo aveva realizzato per primo. Ognuno di essi ha plasmato una parte concreta di OmniRoute. Questo è il nostro ringraziamento a tutti loro. 🙏
> ⭐ numero di stelle verificato tramite l'API REST di GitHub il 18 ottobre 2026 — date una stella a questi progetti. I conteggi rappresentano un'istantanea esatta alla data indicata e cambieranno naturalmente nel tempo.
### 🧬 Origini e gateway
Il gateway AI il cui dataset pubblico dei prezzi alimenta la sincronizzazione del nostro monitoraggio dei costi e il cui modello di normalizzazione dei provider ha contribuito a definire il nostro routing.
Codice sorgente MIT adattato nel bridge incluso ChatGPT Web → Codex Responses, inclusi gli adattatori per sessioni del browser, framing delle risposte, utilizzo e ricerca web.
Pattern trasferiti nel ripristino degli stream, negli alias senza ragionamento, nella ricerca web di fallback, nei limiti a finestra scorrevole, nell'oscuramento dei log e nei flussi di avvio irrobustiti.
Valori predefiniti di trasformazione compatibili con Claude Code e comportamento delle intestazioni di fatturazione, generalizzati nel bridge basato sulla configurazione di OmniRoute.
Le sue mappature dei modelli Grok, il generatore Statsig con TypeError simulato, i valori predefiniti per richieste e dispositivi e il processore di risposte NDJSON sono stati adattati in modo sostanziale nell'esecutore Grok Web di OmniRoute.
La principale fonte indiretta di codice alla base di grok2api-merged; le sue implementazioni di modelli, intestazioni, payload, Statsig e processori sono preservate nella discendenza di Grok Web.
Il codice sorgente MIT sottostante per i valori predefiniti di payload e dispositivi di Grok, il generatore Statsig e il processore result.response, confluiti attraverso TQZHR e grok2api-merged.
Una fonte indiretta citata da grok2api-merged per il suo livello di pool di proxy; OmniRoute conserva tale nota di discendenza, ma non rivendica il porting di un pool di proxy nel proprio esecutore Grok Web circoscritto.
Il suo proxy Grok autenticato tramite cookie e il pattern di streaming result.response.token hanno contribuito a definire il trasporto Grok Web di OmniRoute.
L'implementazione originale di Grok Web ha preso come riferimento la sua architettura upstream HTTP/browser; il suo percorso HTTP diretto deriva da GrokProxy, pertanto non viene rivendicato alcun porting indipendente del codice.
Il progetto virale «perché usare molti token quando pochi token bastano» — la sua filosofia da uomo delle caverne alimenta la nostra modalità di compressione standard e oltre 30 regole di rimozione dei riempitivi e condensazione.
Compressione ad alte prestazioni dell'output dei comandi — ha ispirato il nostro motore RTK, il DSL per i filtri JSON, il recupero dell'output grezzo e la pipeline combinata RTK → Caveman.
Ricerca sulla compressione dei prompt (LLMLingua / LLMLingua-2) — ha ispirato il nostro motore llmlingua asincrono, sicuro per il codice e con comportamento fail-open.
Compressione dei token in portoghese brasiliano — alimenta il nostro pacchetto linguistico pt-BR: riduzione dei pleonasmi e rimozione dei riempitivi ottimizzate per la grammatica del portoghese brasiliano.
La skill virale del «senior dev pigro» che segue il principio YAGNI — ha ispirato il nostro stile di output less-code: orientamento verso la modifica funzionante più piccola, che riduce il codice _generato_ (l'equivalente, sul versante dell'output, della prosa concisa di Caveman).
Il suo stile di risposta orientato all'azione e adatto alle persone con ADHD è stato adattato nello stile di output conciso di OmniRoute in cinque lingue.
### 🧩 Formati compatti, ricerca sui token e strumenti sensibili al codice
Notazione degli oggetti orientata ai token — il suo modello colonnare, composto da intestazione e righe, ha plasmato la nostra fase di compattazione tabellare.
Il suo formato compatto per grafi e la progettazione basata su un profilo generico hanno influenzato la compattazione tabellare di OmniRoute e il formato del codec Headroom.
Compattazione dell'output Bash + profili MCP — ha ispirato la nostra disciplina di interruzione della compressione e la riduzione dei manifest degli strumenti MCP.
Compressione dell'output sensibile al contenuto e specifica per tipo di file, con interruzione in caso di errore — ha convalidato il nostro instradamento per tipo e l'omissione in caso di guadagno minimo insufficiente.
JSON colonnare in Rust + recupero indirizzato per contenuto + deduplicazione tra messaggi — ha convalidato la progettazione dei nostri motori headroom/ccr/session-dedup e l'invariante stabile rispetto alla cache secondo cui «la forma compressa è indipendente dalla posizione».
Classificazione delle mappe dei repository in stile Aider — ha influenzato la nostra esplorazione delle mappe dei repository e della classificazione del recupero.
Toolkit per la TypeScript Compiler API — ha ispirato la nostra rimozione dei commenti basata su parser, che preserva le stringhe, i template literal e le espressioni regolari.
Livello di memoria universale — il suo modello di proxy come punto di confine per scrittura e lettura ha plasmato la nostra architettura della memoria.
La tassonomia ProblemMap di 16 modalità di errore ricorrenti nei sistemi RAG/LLM — il vocabolario condiviso della nostra guida alla risoluzione dei problemi.
### 🛰️ Ispezione del traffico, MITM e proxy trasparente
L'intercettazione e l'analisi MITM del traffico tra assistente di programmazione e LLM hanno contribuito a definire i requisiti iniziali dell'Ispettore del traffico. Quattro moduli derivati in precedenza — unione SSE, normalizzazione delle conversazioni, mascheramento dei segreti e sanificazione delle intestazioni — sono stati sostituiti da implementazioni indipendenti clean-room basate su standard di protocollo pubblici. Le due superfici host-passthrough (passthrough.ts e _internal/bypass.cjs) rimangono implementazioni interne di OmniRoute classificate in modo indipendente; non sono state riscritte nell'ambito di tale sostituzione.
Instradamento proxy trasparente per processo — ha ispirato il nostro arresto MITM resistente agli arresti anomali, i timeout di inattività dei socket, l'attribuzione dei processi tramite /proc e l'acquisizione TPROXY.
### 📚 Dati dei modelli, osservabilità e interfaccia utente
La libreria di grafi basata su nodi su cui si fondano il nostro Studio di compressione e il nostro Studio di combinazione/instradamento in tempo reale.
Osservabilità della service mesh Istio — ha ispirato i nostri badge degli interruttori automatici e gli indicatori visivi degli archi di errore nello Studio di instradamento/combinazione.
Un elenco selezionato di librerie sicure per impostazione predefinita che orienta le nostre scelte di sicurezza (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Ha ispirato la deduplicazione delle richieste, il fallback di emergenza a costo zero, le strategie Auto-Combo collegabili e la classificazione multilingue degli intenti.
La rimappatura dei modelli basata sull'account, la convalida del percorso dell'eseguibile e il comportamento delle etichette dei piani hanno contribuito a definire il runtime Antigravity di OmniRoute.
Il suo formato compatto per il conto alla rovescia fino alla reimpostazione della quota ha ispirato la corrispondente visualizzazione dei limiti del fornitore in OmniRoute.
Ha identificato l'interfaccia delle quote di Grok Build; OmniRoute ha quindi verificato e corretto in modo indipendente il formato effettivo dei dati trasmessi.
## 📄 Licenza
Licenza MIT - consulta [LICENSE](LICENSE) per i dettagli.
---
**[⬆ Torna all'inizio](#-omniroute)** · Realizzato con ❤️ per la comunità AI open-source.
OmniRoute v3.8.53 · Node ≥22.22.2 · Licenza MIT · omniroute.online