> Combinare manualmente i piani gratuiti è complicato: decine di SDK, decine di limiti di frequenza e nessuna idea di quanto si abbia effettivamente a disposizione. OmniRoute cataloga **489 voci di piani gratuiti distribuite su 35 chiavi di pool ricorrenti** e calcola il totale dei token a partire dai **17 pool con un budget mensile positivo pubblicato, più cinque limiti Groq per modello**, eliminando i duplicati in base al pool condiviso. Le quote disponibili solo dopo una verifica regionale dell'identità (attualmente: ModelScope) vengono mostrate separatamente, +~6M previa verifica regionale dell'identità, e non vengono mai incluse nel totale principale. Il risultato rimane visibile nella dashboard (`/dashboard/free-tiers`).
> Riepilogo animato della pagina `/dashboard/free-tiers` in tempo reale. Metodologia completa (deduplicazione dei pool, livelli di credito, termini dei provider): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Queste cifre vengono verificate nuovamente ogni due settimane rispetto al catalogo in tempo reale e **possono variare in entrambe le direzioni**: se un provider termina un piano gratuito, il numero diminuisce; se ne arriva uno nuovo, aumenta. Pubblichiamo ciò che il catalogo calcola effettivamente, 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 per scoprire per primo nuovi provider, versioni 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.49 | **v3.8.50** | `v3.8.51+` |
| ------------------------------------ | :-----: | :------------------------: | :-----------: |
| 🌐 Provider | 290 | **357** | altri in coda |
| 🧠 ID univoci dei modelli di chat | 1185 | **1312** | — |
| 🖼️ Bridge di modalità | — | 🆕 visione + audio + video | — |
| 📡 Catalogo gratuito Radar | — | 🆕 su adesione | — |
| ⚖️ Pianificazione basata sulle quote | — | 🆕 Quota-Share | — |
| 📊 Telemetria delle quote | — | 🆕 in tempo reale | — |
**→ [Roadmap](ROADMAP.md) — in viaggio verso `v3.9.0 LTS`**
## 🆓 Funziona non appena lo installi — nessuna chiave, nessuna configurazione
```bash
# Nuova installazione, zero credenziali — `auto` funziona già:
curl http://localhost:20128/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
Preferisci un backend gratuito specifico? Chiama direttamente `oc/…` (OpenCode Free). Poi passa ad `auto` e lascia che OmniRoute scelga.📦 Script di avvio rapido copia-incolla 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 improvvisamente, la combo può passare al successivo modello idoneo e operativo. 🛡️
### ⚡ Configurazione zero: basta usare `auto`
Non serve creare alcuna combo. Imposta il modello su `auto` (o su una sua variante) e OmniRoute crea una combo virtuale a partire dai provider connessi, valutandoli in tempo reale:
🧑💻 Pesi che privilegiano la qualità per la generazione di codice
auto/fast
⚡ Prima la latenza più bassa
auto/cheap
💰 Prima il costo per token più basso
auto/offline
🔋 Prima la maggiore quota disponibile / il maggior margine rispetto ai limiti di frequenza
auto/smart
🔭 Prima la qualità + 10% di esplorazione per scoprire modelli migliori
auto/lkgp
📌 Preferenza esplicita per l'ultimo provider noto come valido
auto/chaos
🧪 Pesi per l'iniezione di guasti nei test di resilienza (chaos engineering)
##
### 🔀 Oppure creane una personalizzata: 19 strategie di instradamento
Tutte le **19** strategie: combinale liberamente per ciascun passaggio della combo:
#
Strategia
Cosa fa
1
priority
Elenco ordinato con priorità al primo obiettivo: esaurisce ciascuno prima di passare al successivo 🥇
2
fill-first
Utilizza completamente la quota di ciascun obiettivo prima di passare al successivo
3
weighted
Selezione casuale ponderata in base al peso di ciascun obiettivo
4
round-robin
Scorre ciclicamente gli obiettivi nell'ordine
5
p2c
Bilanciamento casuale del carico con la tecnica delle due scelte
6
least-used
Sceglie l'obiettivo 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 in $ per richiesta in base ai prezzi del catalogo in tempo reale 💸
10
headroom
Sceglie l'obiettivo con la maggiore quota residua
11
reset-window
Preferisce l'obiettivo la cui finestra di quota viene reimpostata per prima
12
reset-aware
Ordina in base al tempo di reimpostazione della quota, dando la precedenza alle finestre brevi 📊
13
context-relay
Trasferisce il contesto tra gli obiettivi per le conversazioni lunghe 🧠
14
context-optimized
Sceglie l'opzione più adatta alle dimensioni correnti del contesto
15
cache-optimized
Associa ogni prefisso di prompt riutilizzabile allo stesso account, massimizzando i riscontri nella cache dei prompt 🎯
16
lkgp
Ultimo percorso noto come valido: mantiene l'ultimo provider utilizzato con successo, quindi ripiega sulle regole
17
auto
Valutazione in tempo reale su 16 fattori per ogni connessione 🤖
18
fusion
Invia la richiesta in parallelo a un gruppo di modelli e un giudice sintetizza un'unica risposta 🧬
19
pipeline
Concatena i passaggi: l'output di ciascun obiettivo alimenta quello successivo 🔗
Il motore Auto-Combo valuta ogni candidato in base a **16 fattori** (stato operativo, quota, costo, latenza, idoneità all'attività, qualità, disponibilità della sessione…) — consulta [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 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à
> Novità principali recenti da **v3.8.20 → v3.8.50**. Cronologia completa in [`CHANGELOG.md`](CHANGELOG.md).
- **🎛️ OmniConductor** — delega A2A in ingresso alla tua flotta di agenti, skill di Conductor nell'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 di chat più pesanti vengono accodate anziché generare errori 503, con lease RPM progressivi atomici per connessione. → [Guida alla resilienza](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Ordinamento canonico di `/v1/models`** — un blocco contiguo raggruppato per ciascun provider (con le combo fissate all'inizio), stabile in ogni origine del catalogo. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🗜️ Rafforzamento della compressione** — protezione dall'espansione 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)
- **💸 Costi forfettari trasparenti** — i provider con abbonamento / piano di coding mostrano **$0** nelle analisi dei costi; budget, quote e routing continuano a effettuare stime. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **⚖️ Routing Quota-Share** — suddivide equamente la quota di un account condiviso tra le chiavi del pool, con conservazione del lavoro, così le porzioni inutilizzate vengono prestate. → [Guida alla resilienza](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Configurazione di CLI/agenti con un solo comando** — 13 comandi `setup-*` registrati; `omniroute run` avvia 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` supporta 10 destinazioni con un selettore interattivo di provider e modello e preferiti specifici per contesto. → [Integrazioni CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Modalità remota** — controlla un'istanza OmniRoute remota con token ad ambito limitato (`connect` / `contexts` / `tokens`) e un helper OAuth `antigravity` per le installazioni su VPS. → [Modalità remota](docs/guides/REMOTE-MODE.md)
- **🧭 Routing automatico più intelligente** — combo `auto/:`, **Fusion** (pannello di modelli + giudice), routing consapevole dell'attività, override per richiesta di modello / modalità / budget in USD. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Compressione modulare** — 12 motori componibili + Compression Studios: LLMLingua-2, Ultra a due livelli, omniglyph, controllo di fedeltà per ogni fase, GCF v3.2, editor con riordinamento tramite trascinamento. → [Compressione](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Decrittazione MITM trasparente (TPROXY)** — intercetta le CLI che ignorano le variabili d'ambiente del proxy, con una CA per SNI e un programma di installazione per l'archivio di attendibilità. → [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 opzionale + decadimento tipizzato, `x-omniroute-no-memory` per richiesta. → [Memoria](docs/frameworks/MEMORY.md)
- **🛡️ Sicurezza** — protezione dalla prompt injection su ogni route LLM (suite di red teaming), protezione opzionale per il mascheramento delle credenziali (oscura chiavi API/segreti trapelati in entrambe le direzioni), ricerca web gratuita di ultima istanza tramite DuckDuckGo e un gate di accesso OIDC opzionale per la dashboard (l'accesso con password rimane sempre disponibile). → [Protezioni](docs/security/GUARDRAILS.md)
- **🖼️ Nuovi endpoint** — `/v1/ocr` (Mistral OCR) e `/v1/audio/translations` (in stile Whisper) completano le funzionalità multimediali. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🎨 Generazione di immagini / video / audio** — un'unica API per i contenuti multimediali: xAI Grok Imagine e video Novita AI, ComfyUI, Magnific, Adobe Firefly, Segmind e provider vocali come ElevenLabs. → [Riferimento API](docs/reference/API_REFERENCE.md)
- **🌍 Distribuzione e operazioni** — `basePath` per reverse proxy, rilevamento automatico della lingua del browser, tracciamento dei dispositivi per chiave, attendibilità MITM senza privilegi di root, localizzazione zh-TW. → [Ambiente](docs/reference/ENVIRONMENT.md)
- **🤝 Più provider e agenti** — agenti cloud (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) con browser + accesso OAuth, scheda dedicata a Ollama, Claude Opus 5 e Sonnet 5, partnership ufficiale con Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… e un **catalogo di 352 provider** aggiornato. → [Provider](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Trasparenza del routing** — ogni risposta include un header `X-OmniRoute-Decision` che indica la strategia/il provider/la latenza utilizzati; una nuova strategia combo `cache-optimized` + il fattore `cacheAffinity` di Auto-Combo instradano le richieste ripetute verso la connessione che conserva il prefisso nella cache; inoltre, un endpoint di sola lettura `/v1/auto-combo/{channel}/candidates` espone il pool di candidati in tempo reale di un canale `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Prestazioni locali e infrastruttura** — Redis locale con un clic, strumenti di distribuzione relay per Cloudflare Workers / Deno Deploy, Bifrost e Mux come servizi incorporati supervisionati. → [Servizi incorporati](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Incluso inoltre** — framework per plugin + marketplace, framework di skill Omni/Agent/GitHub, integrazione con i vault di Obsidian (22 strumenti MCP), API Batch e Files compatibili con OpenAI, cache semantica delle risposte, gamification con classifiche, rilevamento degli agenti ACP (15 agenti integrati), esportazione pianificata dei log verso BigQuery, iniezione di errori `auto/chaos`, un bridge per bot Telegram, un gestore di versioni in-app e classifiche LMArena-ELO dei provider gratuiti. → [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 specifica per tutti i 36 strumenti (26 CLI di coding + 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 ogni processo e una home isolata temporanea 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 e modello e scrivi la configurazione dello strumento:
omniroute configure codex # disponibili anche: claude opencode qwen aider goose gemini cline continue kilo
```
Ogni comando rispetta il contesto remoto attivo (`omniroute connect `), `--dry-run`
mostra in anteprima le variabili di ambiente e gli argomenti esatti senza eseguire nulla, mentre `--api-key-env NAME` evita
che i segreti finiscano nella cronologia della shell. → [Integrazioni CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 357 provider di IA — 152 contrassegnati come gratuiti nel catalogo
> **357 provider registrati** nelle raccolte canoniche di chat, contenuti multimediali, ricerca, servizi locali, agenti cloud e sistema, inclusi **152 con metadati di rilevamento `hasFree: true`**. Il registro dei modelli di chat comprende **229 provider / 2.554 coppie provider-modello distinte / 1.283 ID modello non elaborati**; il catalogo separato delle quote gratuite contiene **491 righe per modello**, **35 pool ricorrenti** e **54 provider gratuiti per sempre, ricorrenti o senza chiave**. Questi denominatori sono diversi intenzionalmente; le definizioni e i calcoli con deduplicazione dei pool sono disponibili nella [Documentazione di riferimento dei provider](docs/reference/PROVIDER_REFERENCE.md) e nei [Piani gratuiti](docs/reference/FREE_TIERS.md).
### 🏢 Tutti i principali laboratori — tramite 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 330 altri — ogni icona viene caricata in tempo reale dal catalogo dei provider della dashboard. 📖 [Documentazione di riferimento dei provider](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Gratis per sempre — $0, nessuna carta richiesta
OpenCode Zen DeepSeek V4, Nemotron 3 Nessun limite di token
Kilo Code Router automatico, 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 senza limiti
Pollinations GPT, Llama, Claude Nessuna chiave necessaria
Cloudflare AI Oltre 50 modelli 10.000 neuroni/giorno
NVIDIA NIM GLM, MiniMax ~40 RPM gratis
Cerebras GLM 4.7, GPT-OSS 1 milione di token/giorno
OpenRouter Modelli :free +$10 → RPM più elevati
📖 Catalogo completo leggibile dalle macchine → [`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 AI di controllarlo **autonomamente**.
### ⌨️ 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 il primo avvio
omniroute doctor # diagnostica provider, porte e dipendenze native
```
### 🛰️ Modalità remota — esegui la CLI qui e OmniRoute su un VPS
OmniRoute è su un server? Controllalo dal tuo laptop con la **stessa CLI**. Accedi una volta
con un token di accesso con ambito limitato; da quel momento ogni comando sarà indirizzato al 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 ambito più ristretto per altre macchine
omniroute contexts use default # ← torna al server locale
```
Gli ambiti dei token sono `read` / `write` / `admin`; le route che avviano processi rimangono accessibili solo tramite loopback.
📖 [Modalità remota](docs/guides/REMOTE-MODE.md)
### 🤝 Collega un agente — e controllerà direttamente OmniRoute
Esponi OmniRoute tramite **MCP**, **A2A**, una **REST API**, **webhook** o una **CLI remota**: qualsiasi agente compatibile (o il tuo codice) otterrà il controllo dell'intero gateway, inclusi routing, provider, combo, cache, compressione e memoria, in modo autonomo. Gli endpoint HTTP seguenti sono disponibili all'indirizzo `http://localhost:20128`.
Interfaccia
Endpoint / comando
Utilizzalo per
🧰 MCP (stdio)
omniroute --mcp
Integrarlo con Claude Desktop, Cursor o qualsiasi client MCP
Compatibile con OpenAI — chat, embedding, immagini, audio, OCR
🔔 Webhook
/api/webhooks
Inviare eventi relativi a richieste / quote a Slack, Discord, Telegram o qualsiasi URL
🛰️ CLI remota
omniroute connect
Controllare un'istanza remota con token di accesso con ambito limitato
```bash
# Fornisci a Claude Code il set completo 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 combinazione predefinita esegue `RTK → Caveman`. Quando entrambi intervengono sullo stesso payload di strumenti/contesto, i risparmi si moltiplicano:
```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 conservazione.
> **Perché usare molti token quando ne bastano pochi?** Ogni richiesta passa attraverso la pipeline di compressione di OmniRoute **in modo trasparente** — senza modifiche al client. Ora è una **pila di 12 motori componibili** che vengono eseguiti in ordine e possono essere combinati per ciascuna configurazione di routing — basandosi sulle idee di [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).
### 🧱 La pila di 12 motori
I motori vengono eseguiti nell'ordine della pipeline; ciascuno può essere attivato o disattivato e configurato in modo indipendente per ogni combinazione:
#
Motore
Cosa fa
1
Session-Dedup
Elimina i contenuti ripetuti tra i turni (indirizzati per contenuto, tra turni diversi)
2
CCR
Archivia blocchi di grandi dimensioni dietro marcatori di recupero, richiamandoli su richiesta
3
Lite
Riduzione degli spazi vuoti e degli URL delle immagini (base a bassa latenza)
4
RTK
Filtraggio intelligente, deduplicazione e troncamento dei risultati degli strumenti (con riconoscimento dei comandi)
5
Responses Tool Output
Compressione JSON prioritariamente senza perdita e compressione diagnostica limitata per gli output di shell/patch/ricerca/build (Responses API)
6
Headroom
Compattazione tabellare senza perdita degli array JSON (~30%) tramite un codec GCF integrato
7
Relevance
Valutazione estrattiva delle frasi rispetto all'ultima richiesta dell'utente
8
Caveman
Compressione della prosa basata su regole (~65–75% sull'output)
9
Aggressive
Riepilogo e invecchiamento progressivo dei turni precedenti
10
LLMLingua-2
Potatura semantica tramite ML con MobileBERT ONNX — sicura per il codice, asincrona
11
Ultra
Potatura euristica dei token con un livello opzionale basato su un modello di piccole dimensioni (SLM)
12
OmniGlyph
Codifica sperimentale del contesto come immagine per Claude Fable 5 misurato sulla connessione Anthropic diretta; i transformer GPT 5.6 restano bloccati in sicurezza in attesa delle ricevute del provider. Quattro profili di compressione (aggressivo predefinito, bilanciato, sicuro per il codice, passthrough) (il più aggressivo; attivazione esplicita)
I blocchi di codice, gli URL e i dati strutturati vengono **sempre conservati** byte per byte. Le **preimpostazioni con un clic** combinano i motori:
Modalità
Risparmio
Ideale per
🪶 Lite
~15%
Impostazione predefinita sicura e sempre attiva
🪨 Standard (Caveman)
~30%
Programmazione quotidiana
⚡ Aggressive
~50%
Sessioni lunghe con un uso intensivo degli strumenti
🔥 Ultra
~75%
Massimo risparmio
🧰 RTK
60–90%
Output di shell/test/build/git
🔗 Combinata (RTK → Caveman)
78–95%
Prompt misti e log degli strumenti
**Esempio reale — modalità Standard:**
> **Prima (69 token):** _"Il motivo per cui il tuo componente React viene renderizzato nuovamente è probabilmente che stai creando un nuovo riferimento a un oggetto a ogni ciclo di rendering. Quando passi un oggetto inline come prop, il confronto superficiale di React lo considera ogni volta un oggetto diverso, attivando così un nuovo rendering. Consiglierei di utilizzare useMemo per memorizzare l'oggetto."_
>
> **Dopo (19 token):** _"Nuovo riferimento all'oggetto a ogni rendering. Oggetto inline come prop = nuovo riferimento = nuovo rendering. Usa useMemo."_
>
> **Stessa risposta. 72% di token in meno. Nessuna perdita di accuratezza.** ✅
**Esempio PT-BR — modalità [Troglodita](https://github.com/leninejunior/troglodita):**
> **Prima (42 token):** _"Il problema è che il componente viene renderizzato nuovamente perché a ogni ciclo di rendering viene creato un nuovo riferimento all'oggetto. Consiglierei di usare useMemo."_
>
> **Dopo (12 token):** _"Re-render: nuovo ref a ogni ciclo (oggetto inline ricreato). Usare `useMemo`."_
>
> **Stessa risposta. ~70% di token in meno. Precisione tecnica intatta.** ✅
### 🎚️ Oltre i motori — stili di output, regolazione adattiva e controllo per richiesta
I 12 motori precedenti riducono ciò che entra **in input**. Altri tre livelli determinano **come**, **quando** e cosa viene prodotto **in output**:
- **🪄 Stili di output** _(controllo dell'asse di output)_ — inseriscono istruzioni deterministiche e compatibili con la cache per modellare le risposte; sono combinabili e ciascuno dispone dell'intensità `lite` / `full` / `ultra`. Per aggiungere uno stile basta una riga nel registro:
- **Prosa concisa** — elimina riempitivi / articoli / esitazioni; mantiene intatta la sostanza tecnica.
- **Meno codice** — YAGNI da "sviluppatore senior pigro": la modifica funzionante più piccola possibile, senza strutture non richieste.
- **Ponytail (sviluppatore senior pigro)** — percorre la scala YAGNI, risolve la causa principale, produce il diff funzionante più piccolo possibile.
- **Ho l'ADHD (prima l'azione)** — inizia dall'azione successiva, numera i passaggi, propone un solo passo successivo concreto, senza preamboli.
- **CJK conciso (文言)** — stile cinese classico ultra-conciso (limitato alla locale `zh`).
- **🎯 Budget adattivo del contesto** _(la regolazione)_ — anziché una singola soglia di token attiva/disattiva, intensifica i motori più economici e con minori perdite solo quanto necessario per **rientrare nella finestra di contesto del modello**. Criterio: `reserve-output` (predefinito, adattato al modello) · `percentage` · `absolute`. Modalità: `floor` (garantisce che rientri) · `replace-autotrigger` (prevale la scelta esplicita) · `off` (soglia precedente).
- **🎛️ Dove viene decisa la compressione** _(precedenza, dalla più alta alla più bassa)_ — header per richiesta `x-omniroute-compression` › override della combinazione di routing › profilo denominato attivo › attivazione adattiva / automatica › impostazione predefinita del pannello › disattivata. Il piano applicato viene restituito nell'header di risposta `X-OmniRoute-Compression: ; source=`.
Imposta l'attivazione automatica tramite soglia di token, abilita la regolazione adattiva, fissa un profilo denominato, specifica un'impostazione occasionale per singola richiesta oppure assegna una pipeline a ciascuna combinazione di routing, a seconda del carico di lavoro. Un **harness di valutazione** offline opzionale (`npm run eval:compression`) misura fedeltà e 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 e avvia**
```bash
npm install -g omniroute
omniroute
```
> 💡 Vedi `npm warn ERESOLVE` o avvisi sulle peer dependency? [Sono innocui](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Usi Gemini Web o un altro provider basato su cookie web?** Il pacchetto npm include
> Playwright, ma non il relativo binario Chromium. Consulta la nota sulla
> [configurazione di Chromium per Playwright](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> prima di effettuare la prima richiesta a un provider web.
Dashboard all'indirizzo `http://localhost:20128` · API all'indirizzo `http://localhost:20128/v1`.
**2) Connetti un provider GRATUITO (senza registrazione)**
Dashboard → **Provider** → connetti **Kiro AI** (Claude gratuito, ~50 crediti/mese per account) oppure **OpenCode Free** (senza autenticazione) → fatto.
**3) Configura il tuo strumento di programmazione**
```txt
URL di base: http://localhost:20128/v1
Chiave API: [copia da Dashboard → Endpoint]
Modello: auto (routing intelligente senza configurazione — oppure qualsiasi provider/modello)
```
**4) Verifica che funzioni**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Dovresti vedere l'elenco dei modelli connessi. 🎉 Tutto qui: inizia a programmare e OmniRoute gestirà automaticamente il routing e il fallback per te.
Se il client non può inviare header personalizzati, OmniRoute espone anche alias di compatibilità con token:
```txt
Catalogo OpenAI: http://localhost:20128/vscode/YOUR_KEY/
Modelli OpenAI: http://localhost:20128/vscode/YOUR_KEY/models
Chat OpenAI: http://localhost:20128/vscode/YOUR_KEY/chat/completions
Risposte OpenAI: http://localhost:20128/vscode/YOUR_KEY/responses
Chat Ollama: http://localhost:20128/vscode/YOUR_KEY/api/chat
Tag Ollama: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Usali solo per i client che non possono aggiungere `Authorization: Bearer ...`. L'autenticazione tramite header resta la modalità consigliata.
## 📦 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.
pino — log JSON strutturati con contesto di richiesta
Testing
Node.js test runner + Vitest — Oltre 39.000 dichiarazioni di test statici in oltre 5.100 file di test tracciati (unit, integrazione, E2E, sicurezza, ecosistema)
Strategia di copertura dei test per oltre 39.000 dichiarazioni di test statiche distribuite in oltre 5.100 file di test monitorati
# ⭐ Principali contributori
> OmniRoute è plasmato da un'appassionata comunità open source. Queste persone hanno fornito contributi eccezionali che incidono direttamente sulla qualità, sulla stabilità e sulla portata del progetto. **Grazie.**
### Contributori esterni per pull request unite
Dati congelati in corrispondenza del commit più recente dafb4ae808 del ramo live release/v3.8.50, con merge fino al 2026-08-24 05:26:03 UTC. Il censimento paginato tramite GitHub GraphQL contiene 5,911 PR unificate: 2,707 dal proprietario del repository, 179 da Dependabot e 3,025 PR esterne provenienti da 535 collaboratori distinti. Per «righe modificate» si intende la somma di aggiunte ed eliminazioni di GitHub, inclusi file generati, lockfile, cataloghi, traduzioni e documentazione; è una misura delle modifiche complessive, non delle righe di codice scritte. Le posizioni ex aequo al limite della classifica sono mantenute.
### Commit attribuiti da GitHub
Bob.Hou 🏅 51 commit attribuiti da GitHub · pari merito al 10º posto
Xiangzhe 🏅 51 commit attribuiti da GitHub · pari merito al 10º posto
Ricontrollato il 2026-08-24 alle 06:14:31 UTC: commit attribuiti da GitHub segnalati dall'API Contributors del repository per il ramo predefinito release/v3.8.50. L'API ha restituito 525 identità (415 utenti, 2 bot, 108 anonime); questa tabella esclude il manutentore, i bot e le identità anonime e mantiene i pari merito. È distinta sia dalla classifica delle PR unite riportata sopra sia dal censimento di 639 persone basato sui metadati Git riportato sotto.
> 🙏 Le funzionalità, le correzioni di bug e i miglioramenti all'infrastruttura apportati da questi collaboratori 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 è importante. L'open source è costruito da persone come loro.
---
## 💖 Sponsor
Un sentito ringraziamento alle persone che finanziano OmniRoute di tasca propria: ogni contributo mantiene il progetto gratuito, indipendente e in continua evoluzione.
longtao 💛 Sostenitore passato con contributo una tantum
… e altri che preferiscono rimanere anonimi 💛Gli sponsor pubblici di GitHub sono stati riconvalidati il 2026-08-24. Lo stato activeOnly di GitHub determina le etichette relative agli sponsor attivi riportate sopra; i sostenitori pubblici con contributo una tantum già resi noti continuano a essere ringraziati, mentre gli sponsor privati rimangono anonimi.💖 Diventa sponsor → — ogni dollaro contribuisce a mantenere OmniRoute gratuito e indipendente.
## 👥 Oltre 600 contributori
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Verificato il 2026-08-24 sulla base congelata ac02c5b42f e ricontrollato sulla punta attuale di release/v3.8.50, dafb4ae808: 639 identità Git umane normalizzate — 407 figurano come autori di commit (incluso il manutentore) e 232 compaiono soltanto nei trailer espliciti Co-authored-by. Il censimento normalizza gli handle noreply di GitHub, esclude 26 identità appartenenti a bot, agenti, servizi o segnaposto e non unifica i normali indirizzi email soltanto perché i relativi nomi visualizzati coincidono.
### 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 branch per la tua 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.
### Rilasciare una nuova versione
```bash
# Crea un rilascio: npm publish viene eseguito 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 porting TypeScript del progetto Go **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** e, da lì, ogni sottosistema riportato 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 modo di ringraziarli tutti. 🙏
> ⭐ conteggi delle stelle verificati tramite l'API REST di GitHub il 24 agosto 2026 — date una stella a questi progetti. I conteggi rappresentano un'istantanea esatta riferita a quella data e cambieranno naturalmente.
### 🧬 Origini e gateway
Il gateway di IA il cui dataset pubblico dei prezzi alimenta la nostra sincronizzazione del monitoraggio dei costi e il cui modello di normalizzazione dei provider ha contribuito a definire il nostro sistema di routing.
Codice sorgente MIT adattato nel bridge ChatGPT Web → Codex Responses integrato, inclusi gli adattatori per sessioni del browser, strutturazione delle risposte, utilizzo e ricerca sul 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 resi più sicuri.
Valori predefiniti di trasformazione compatibili con Claude Code e comportamento delle intestazioni di fatturazione, generalizzati nel bridge basato sulla configurazione di OmniRoute.
Le 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 derivazione di Grok Web.
Il codice sorgente MIT sottostante per i valori predefiniti del payload e dei dispositivi Grok, il generatore Statsig e il processore result.response propagato tramite TQZHR e grok2api-merged.
Una fonte indiretta accreditata da grok2api-merged per il suo livello di pool di proxy; OmniRoute ne preserva l'attribuzione nella derivazione, ma non dichiara alcun porting del 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 in esame la sua architettura upstream HTTP/browser; il suo percorso HTTP diretto deriva da GrokProxy, pertanto non viene dichiarato alcun porting indipendente del codice.
Gli schemi Rust ChatOptions e delle buste di risposta hanno contribuito a definire i tipi TypeScript di OmniRoute per le richieste Grok e le risposte in streaming.
### 🗜️ Compressione del contesto e dei token — motori
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 per la rimozione dei riempitivi e la 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» basata su YAGNI — ha ispirato il nostro stile di output less-code: orientamento alla modifica funzionante più piccola, che riduce il codice _generato_ (l'equivalente, sull'asse 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
Il suo formato compatto per grafi e il design a profilo generico hanno contribuito alla progettazione della compattazione tabulare e del formato codec Headroom di OmniRoute.
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 dispatch per tipo e il salto in caso di guadagno inferiore alla soglia minima.
JSON colonnare in Rust + recupero con indirizzamento per contenuto + deduplicazione tra messaggi — ha convalidato il design dei nostri motori headroom/ccr/session-dedup e l'invariante «la forma compressa è indipendente dalla posizione», che garantisce la stabilità della cache.
Compressione degli schemi e delle descrizioni degli strumenti MCP — ha contribuito alla nostra riduzione della cardinalità dei manifest degli strumenti MCP.
Classificazione delle mappe dei repository in stile Aider — ha contribuito alla nostra esplorazione delle mappe dei repository e della classificazione per il recupero.
Toolkit per la TypeScript Compiler API — ha ispirato la nostra rimozione dei commenti basata su parser, che preserva i letterali stringa, template e regex.
L'intercettazione/analisi MITM del traffico tra assistente di programmazione e LLM ha contribuito a definire i requisiti iniziali di Traffic Inspector. Quattro moduli derivati in precedenza — unione SSE, normalizzazione delle conversazioni, mascheramento dei segreti e sanificazione degli header — sono stati sostituiti da implementazioni clean-room indipendenti basate su standard di protocollo pubblici. Le due superfici di passthrough dell'host (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 ai crash, i timeout di inattività dei socket, l'attribuzione dei processi tramite /proc e l'acquisizione TPROXY.
Osservabilità della service mesh Istio — ha ispirato i nostri badge dei circuit breaker e la rappresentazione visiva degli archi di errore nel Routing/Combo Studio.
Un elenco curato di librerie sicure per impostazione predefinita che guida le nostre scelte in materia 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 al ripristino della quota ha ispirato la corrispondente visualizzazione dei limiti del provider in OmniRoute.
Ha identificato la superficie delle quote di Grok Build; OmniRoute ha quindi verificato e corretto in modo indipendente il formato dei dati trasmessi in tempo reale.
## 📄 Licenza
Licenza MIT - consulta [LICENSE](LICENSE) per i dettagli.
---
**[⬆ Torna all'inizio](#-omniroute)** · Realizzato con ❤️ per la comunità IA open source.
OmniRoute v3.8.51 · Node ≥22.22.2 · Licenza MIT · omniroute.online