You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🎯 Ce rezolvă OmniRoute — 30 de puncte reale de durere și cazuri de utilizare
Fiecare dezvoltator care folosește instrumente AI se confruntă zilnic cu aceste probleme. OmniRoute a fost creat pentru a le rezolva pe toate - de la depășiri de costuri la blocaje regionale, de la fluxuri OAuth întrerupte la operațiuni de protocol și observabilitate a întreprinderii.
💸 1. „Plătesc pentru un abonament scump, dar tot sunt întrerupt de limite”
Dezvoltatorii plătesc 20–200 USD/lună pentru Claude Pro, Codex Pro sau GitHub Copilot. Chiar și plătind, cota are un plafon - 5 ore de utilizare, limite săptămânale sau limite de tarif pe minut. La mijlocul sesiunii de codare, furnizorul nu mai răspunde și dezvoltatorul își pierde fluxul și productivitatea.
Cum o rezolvă OmniRoute:
Smart 4-Tier Fallback — Dacă cota de abonament se epuizează, redirecționează automat la cheia API → Ieftin → Gratuit fără intervenție manuală
Urmărirea cotelor în timp real — Afișează consumul de simboluri în timp real cu numărătoarea inversă de resetare (5 ore, zilnic, săptămânal)
Asistență pentru mai multe conturi — Conturi multiple per furnizor cu turneu automat automat — când unul se epuizează, trece la următorul
Combinații personalizate — Lanțuri de rezervă personalizabile cu 6 strategii de echilibrare (fill-first, round-robin, P2C, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor)
Cote de afaceri Codex — Monitorizarea cotelor de spațiu de lucru pentru afaceri/echipe direct în tabloul de bord
🔌 2. „Trebuie să folosesc mai mulți furnizori, dar fiecare are un API diferit”
OpenAI folosește un format, Claude (Anthropic) folosește altul, Gemini încă altul. Dacă un dezvoltator dorește să testeze modele de la diferiți furnizori sau să se retragă între aceștia, trebuie să reconfigureze SDK-urile, să schimbe punctele finale, să se ocupe de formate incompatibile. Furnizorii personalizați (FriendLI, NIM) au puncte finale de model non-standard.
Cum o rezolvă OmniRoute:
Unified Endpoint — Un singur http://localhost:20128/v1 servește drept proxy pentru toți cei 36 de furnizori și mai sus
Traducerea formatului — Automată și transparentă: OpenAI ↔ Claude ↔ Gemeni ↔ Responses API
Normalizarea rolurilor — Convertește developer → system pentru furnizorii non-OpenAI; system → user pentru GLM/ERNIE
Think Tag Extraction — Extrage blocurile <think> de la modele precum DeepSeek R1 în reasoning_content standardizat
Ieșire structurată pentru Gemeni — json_schema → responseMimeType/responseSchema conversie automată
stream este implicit false — Se aliniază cu specificațiile OpenAI, evitând SSE neașteptat în SDK-urile Python/Rust/Go
🌐 3. „Furnizorul meu AI îmi blochează regiunea/țara”
Furnizori precum OpenAI/Codex blochează accesul din anumite regiuni geografice. Utilizatorii primesc erori precum unsupported_country_region_territory în timpul conexiunilor OAuth și API. Acest lucru este frustrant în special pentru dezvoltatorii din țările în curs de dezvoltare.
Cum o rezolvă OmniRoute:
3-Level Proxy Config — Proxy configurabil la 3 niveluri: global (tot traficul), per furnizor (doar un singur furnizor) și per conexiune/cheie
Insigne de proxy cu coduri de culoare — Indicatori vizuali: 🟢 proxy global, 🟡 proxy furnizor, 🔵 proxy de conexiune, indicând întotdeauna IP-ul
Schimb de jetoane OAuth prin proxy — fluxul OAuth trece și prin proxy, rezolvând unsupported_country_region_territory
Teste de conexiune prin proxy — Testele de conexiune folosesc proxy-ul configurat (nu mai este ocolire directă)
Support SOCKS5 — Suport complet SOCKS5 proxy pentru rutarea de ieșire
TLS Fingerprint Spoofing — Amprenta TLS asemănătoare unui browser prin wreq-js pentru a ocoli detectarea botului
🆓 4. „Vreau să folosesc AI pentru codare, dar nu am bani”
Nu toată lumea poate plăti 20–200 USD/lună pentru abonamentele AI. Studenții, dezvoltatorii din țările emergente, pasionații și freelancerii au nevoie de acces la modele de calitate la cost zero.
Combinații numai gratuite — Lanțul gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus = 0 USD/lună fără timp de nefuncționare
Credite gratuite NVIDIA NIM — 1000 de credite gratuite integrate
Cost Optimized Strategy — Strategie de rutare care alege automat cel mai ieftin furnizor disponibil
🔒 5. „Trebuie să-mi protejez poarta AI de accesul neautorizat”
Când expuneți un gateway AI în rețea (LAN, VPS, Docker), oricine are adresa poate consuma jetoanele/cota dezvoltatorului. Fără protecție, API-urile sunt vulnerabile la utilizare greșită, injectare promptă și abuz.
Cum o rezolvă OmniRoute:
Gestionarea cheilor API — Generare, rotație și definire pentru fiecare furnizor cu o pagină dedicată /dashboard/api-manager
Permisiuni la nivel de model — Restricționați cheile API la anumite modele (openai/*, modele cu caractere metalice), cu comutatorul Permite toate/Restricționați
API Endpoint Protection — Solicitați o cheie pentru /v1/models și blocați anumiți furnizori din listă
Auth Guard + CSRF Protection — Toate rutele tabloului de bord sunt protejate cu middleware withAuth + jetoane CSRF
Rate Limiter — Limitarea ratei per-IP cu ferestre configurabile
Filtrare IP — Lista permisă/lista blocată pentru controlul accesului
Prompt Injection Guard — Igienizare împotriva tiparelor de prompte rău intenționate
Criptare AES-256-GCM — Acreditări criptate în repaus
🛑 6. „Furnizorul meu a căzut și mi-am pierdut fluxul de codare”
Furnizorii de AI pot deveni instabili, pot returna erori 5xx sau pot atinge limitele temporare ale ratei. Dacă un dezvoltator depinde de un singur furnizor, acesta este întrerupt. Fără întreruptoare, reîncercări repetate pot bloca aplicația.
Cum o rezolvă OmniRoute:
Circuit Breaker per furnizor - Deschidere/închidere automată cu praguri configurabile și răcire (Închis/Deschis/Pe jumătate deschis)
| 🎯 Endpoint-Aware Models | Custom models declare supported endpoints + API format |
Backoff exponențial — Întârzieri progresive ale reîncercării
Anti-Thundering Herd — Mutex + protecție semafor împotriva furtunilor concurente de reîncercare
Combo Fallback Chains — Dacă furnizorul principal eșuează, trece automat prin lanț fără nicio intervenție
Combo Circuit Breaker — Dezactivează automat furnizorii care eșuează dintr-un lanț combinat
| 🎯 Endpoint-Aware Models | Custom models declare supported endpoints + API format |
Tabloul de bord pentru sănătate — Monitorizare timp de funcționare, stări întrerupătoare de circuit, blocări, statistici cache, latență p50/p95/p99
🔧 7. „Configurarea fiecărui instrument AI este plictisitoare și repetitivă”
Dezvoltatorii folosesc Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Fiecare instrument are nevoie de o configurație diferită (punct final API, cheie, model). Reconfigurarea la schimbarea de furnizor sau de model este o pierdere de timp.
Cum o rezolvă OmniRoute:
CLI Tools Dashboard — pagină dedicată cu setare cu un singur clic pentru Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
GitHub Copilot Config Generator — generează chatLanguageModels.json pentru VS Code cu selecția în bloc a modelului
Onboarding Wizard — Configurare ghidată în 4 pași pentru utilizatorii debutanți
Un punct final, toate modelele — Configurați http://localhost:20128/v1 o dată, accesați peste 36 de furnizori
🔑 8. „Gestionarea jetoanelor OAuth de la mai mulți furnizori este un iad”
Claude Code, Codex, Gemini CLI, Copilot - toate folosesc OAuth 2.0 cu token-uri care expiră. Dezvoltatorii trebuie să se reautentifice în mod constant, să se ocupe de client_secret is missing, redirect_uri_mismatch și defecțiunile de pe serverele de la distanță. OAuth pe LAN/VPS este deosebit de problematică.
Cum o rezolvă OmniRoute:
Reîmprospătare automată a simbolurilor — jetoanele OAuth se reîmprospătează în fundal înainte de expirare
OAuth 2.0 (PKCE) încorporat — Flux automat pentru Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
OAuth cu mai multe conturi — Conturi multiple per furnizor prin extragerea jetonului JWT/ID
OAuth LAN/Remediere la distanță — Detectare IP privată pentru redirect_uri + modul URL manual pentru servere la distanță
OAuth în spatele Nginx — Utilizează window.location.origin pentru compatibilitatea cu proxy invers
Ghid OAuth la distanță — Ghid pas cu pas pentru acreditările Google Cloud pe VPS/Docker
📊 9. „Nu știu cât cheltuiesc sau unde”
Dezvoltatorii folosesc mai mulți furnizori plătiți, dar nu au o viziune unificată asupra cheltuielilor. Fiecare furnizor are propriul tablou de bord de facturare, dar nu există o vizualizare consolidată. Costurile neașteptate se pot acumula.
Cum o rezolvă OmniRoute:
Tabloul de bord pentru analiza costurilor — Urmărirea costurilor pe token și gestionarea bugetului per furnizor
Limite bugetare pe nivel — Plafonul de cheltuieli pe nivel care declanșează o rezervă automată
Configurație de preț pe model — Prețuri configurabile pe model
Statistici de utilizare per cheie API — Numărul de solicitări și marcajul temporal al ultimei utilizări per cheie
Tabloul de bord de analiză — Carduri cu statistici, diagramă de utilizare a modelului, tabel cu furnizori cu rate de succes și latență
🐛 10. „Nu pot diagnostica erorile și problemele în apelurile AI”
Când un apel eșuează, dezvoltatorul nu știe dacă a fost o limită de rată, un simbol expirat, un format greșit sau o eroare a furnizorului. Jurnalele fragmentate pe diferite terminale. Fără observabilitate, depanarea este o încercare și eroare.
Cum o rezolvă OmniRoute:
Tabloul de bord pentru jurnalele unificate — 4 file: jurnalele de solicitare, jurnalele proxy, jurnalele de audit, consolă
Console Log Viewer — Vizualizator în timp real în stil terminal cu niveluri codificate în culori, defilare automată, căutare, filtru
SQLite Proxy Logs — Jurnale persistente care supraviețuiesc repornirilor serverului
Translator Playground — 4 moduri de depanare: Playground (traducere format), Chat Tester (dus-întors), Test Bench (lot), Live Monitor (în timp real)
Înregistrare bazată pe fișiere cu rotație — Interceptor de consolă captează totul în jurnalul JSON cu rotație bazată pe dimensiune
🏗️ 11. „Implementarea și întreținerea gateway-ului este complexă”
Instalarea, configurarea și menținerea unui proxy AI în diferite medii (local, VPS, Docker, cloud) necesită multă muncă. Probleme precum căile codificate hard, EACCES pe directoare, conflictele de porturi și versiunile pe mai multe platforme adaugă fricțiuni.
Docker Compose Profiles — base (fără instrumente CLI) și cli (cu Claude Code, Codex, OpenClaw)
Electron Desktop App — aplicație nativă pentru Windows/macOS/Linux cu bară de sistem, pornire automată, mod offline
Split-Port Mode — API și tablou de bord pe porturi separate pentru scenarii avansate (reverse proxy, rețea container)
Cloud Sync — Configurați sincronizarea între dispozitive prin Cloudflare Workers
Backups DB — Backup automat, restaurare, export și import al tuturor setărilor
🌍 12. „Interfața este doar în limba engleză și echipa mea nu vorbește engleză”
Echipele din țările care nu vorbesc engleza, în special din America Latină, Asia și Europa, se luptă cu interfețele doar în limba engleză. Barierele lingvistice reduc adoptarea și cresc erorile de configurare.
Cum o rezolvă OmniRoute:
Tabloul de bord i18n — 30 de limbi — Toate cele peste 500 de taste traduse, inclusiv arabă, bulgară, daneză, germană, spaniolă, finlandeză, franceză, ebraică, hindi, maghiară, indoneziană, italiană, japoneză, coreeană, malay, olandeză, norvegiană, poloneză, portugheză (PT/BR), română, rusă, slovacă, suedeză, thailandeză, ucraineană, filipineză, engleză, chineză, vietnameză,
** Suport RTL** — Suport de la dreapta la stânga pentru arabă și ebraică
ReadME-uri în mai multe limbi — 30 de traduceri complete de documentație
Selector de limbă — Pictograma glob în antet pentru comutare în timp real
🔄 13. „Am nevoie de mai mult decât de chat — am nevoie de încorporare, imagini, audio”
AI nu este doar finalizarea chatului. Dezvoltatorii trebuie să genereze imagini, să transcrie sunetul, să creeze înglobări pentru RAG, să reclasifice documentele și să modereze conținutul. Fiecare API are un punct final și un format diferit.
Cum o rezolvă OmniRoute:
Embeddings — /v1/embeddings cu 6 furnizori și peste 9 modele
Generarea imaginii — /v1/images/generations cu 10 furnizori și peste 20 de modele (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
Text-to-Video — /v1/videos/generations — ComfyUI (AnimateDiff, SVD) și SD WebUI
Responses API — Suport complet /v1/responses pentru Codex
🧪 14. „Nu am cum să testez și să compar calitatea între modele”
Dezvoltatorii vor să știe care model este cel mai bun pentru cazul lor de utilizare - cod, traducere, raționament - dar compararea manuală este lentă. Nu există instrumente de evaluare integrate.
Cum o rezolvă OmniRoute:
Evaluări LLM — Testarea setului de aur cu 10 cazuri preîncărcate care acoperă salutări, matematică, geografie, generare de cod, conformitate cu JSON, traducere, reducere, refuz de siguranță
Translator Playground Test Bench — Testare în loturi cu mai multe intrări și rezultate așteptate, comparație între furnizori
Tester de chat — Tur complet dus-întors cu randare vizuală a răspunsului
Live Monitor — Flux în timp real al tuturor solicitărilor care circulă prin proxy
📈 15. „Trebuie să mă scalez fără a pierde performanța”
Pe măsură ce volumul cererilor crește, fără memorarea în cache aceleași întrebări generează costuri duplicate. Fara idempotenta, cererile duplicate procesarea deseurilor. Limitele de tarife pentru fiecare furnizor trebuie respectate.
Cum o rezolvă OmniRoute:
Cache semantic — Cache-ul pe două niveluri (semnătură + semantică) reduce costurile și latența
Request Idempotency — fereastră de deduplicare 5s pentru cereri identice
Rate Limit Detection — RPM per furnizor, interval minim și urmărire simultană maximă
Limite de rată editabile — Valori implicite configurabile în Setări → Reziliență cu persistență
API Key Validation Cache — cache pe 3 niveluri pentru performanța producției
Tabloul de bord pentru sănătate cu telemetrie — latență p50/p95/p99, statistici cache, timp de funcționare
🤖 16. „Vreau să controlez comportamentul modelului la nivel global”
Dezvoltatori care doresc toate răspunsurile într-o anumită limbă, cu un anumit ton sau care doresc să limiteze simbolurile de raționament. Configurarea acestui lucru în fiecare instrument/cerere nu este practică.
Cum o rezolvă OmniRoute:
System Prompt Injection — Prompt global aplicat tuturor solicitărilor
Thinking Budget Validation — Controlul raționării alocării token-ului per cerere (transmis, automat, personalizat, adaptiv)
6 Strategii de rutare — Strategii globale care determină modul în care sunt distribuite cererile
Wildcard Router — modelele provider/* sunt direcționate dinamic către orice furnizor
Combo Activare/Dezactivare Comutare — Comută combo direct din tabloul de bord
Comutare furnizor — Activați/dezactivați toate conexiunile pentru un furnizor cu un singur clic
Furnizori blocați — Excludeți anumiți furnizori din lista /v1/models
🧰 17. „Am nevoie de instrumente MCP ca capabilități de produs de primă clasă”
Multe gateway-uri AI expun MCP doar ca un detaliu ascuns de implementare. Echipele au nevoie de un nivel de operare vizibil și ușor de gestionat.
Cum o rezolvă OmniRoute:
MCP apare în panoul de bord de navigare și fila de protocol final
Pagina de management MCP dedicată cu proces, instrumente, domenii și audit
Pornire rapidă încorporată pentru omniroute --mcp și integrarea clientului
🧠 18. „Am nevoie de orchestrare A2A cu sincronizare + căi de activități de flux”
Fluxurile de lucru ale agenților necesită atât răspunsuri directe, cât și execuție în flux de lungă durată, cu control ciclului de viață.
Cum o rezolvă OmniRoute:
Punct final A2A JSON-RPC (POST /a2a) cu message/send și message/stream
Streaming SSE cu propagare a stării terminale
API-uri pentru ciclul de viață al sarcinilor pentru tasks/get și tasks/cancel
🛰️ 19. „Am nevoie de sănătate reală a procesului MCP, nu de stare ghicită”
Echipele operaționale trebuie să știe dacă MCP este de fapt în viață, nu doar dacă un API este accesibil.
Cum o rezolvă OmniRoute:
Fișier runtime heartbeat cu PID, marcaje de timp, transport, număr de instrumente și modul de aplicare
API de stare MCP care combină bătăile inimii + activitatea recentă
Carduri de stare a interfeței de utilizare pentru prospețimea procesului/uptime/inima
📋 20. „Am nevoie de o execuție auditabilă a instrumentului MCP”
Când instrumentele modifică configurația sau declanșează acțiuni operaționale, echipele au nevoie de trasabilitate criminalistică.
Cum o rezolvă OmniRoute:
Înregistrare de audit susținută de SQLite pentru apelurile instrumentelor MCP
Filtrează după instrument, succes/eșec, cheie API și paginare
Tabelul de audit al tabloului de bord + punctele finale de statistici pentru automatizare
🔐 21. „Am nevoie de permisiuni MCP pentru fiecare integrare”
Clienții diferiți ar trebui să aibă cel mai mic privilegiu de acces la categoriile de instrumente.
Cum o rezolvă OmniRoute:
9 lunete MCP granulare pentru acces controlat la instrumente
Aplicarea domeniului de aplicare și vizibilitatea în interfața de utilizare a managementului MCP
Poziție implicită sigură pentru instrumentele operaționale
⚙️ 22. „Am nevoie de controale operaționale fără redistribuire”
Echipele au nevoie de modificări rapide ale timpului de rulare în timpul incidentelor sau evenimentelor de cost.
Cum o rezolvă OmniRoute:
Comutați activarea comboi direct din tabloul de bord MCP
Aplicați profiluri de rezistență din pachetele de politici predefinite
Resetați starea întreruptorului de la același panou de operare
🔄 23. „Am nevoie de vizibilitate și anulare a ciclului de viață a sarcinii A2A live”
Fără vizibilitatea ciclului de viață, incidentele sarcinilor devin greu de triat.
Cum o rezolvă OmniRoute:
Listarea sarcinilor/filtrarea după stare/abilitate cu paginare
Detaliați metadatele sarcinii, evenimentele și artefactele
Punct final de anulare a sarcinii și acțiune UI cu confirmare
🌊 24. „Am nevoie de valori de flux active pentru încărcarea A2A”
Fluxurile de lucru în flux necesită o perspectivă operațională privind concurența și conexiunile live.
Cum o rezolvă OmniRoute:
Contoare active de flux integrate în starea A2A
Marcaj de timp pentru ultima sarcină și numărătoare pentru fiecare stat
Carduri de bord A2A pentru monitorizarea operațiunilor în timp real
🪪 25. „Am nevoie de descoperire de agenți standard pentru clienți”
Clienții externi și orchestratorii au nevoie de metadate care pot fi citite de mașină pentru integrare.
Cum o rezolvă OmniRoute:
Card de agent expus la /.well-known/agent.json
Capacități și abilități afișate în UI de management
API-ul de stare A2A include metadate de descoperire pentru automatizare
🧭 26. „Am nevoie de descoperirea protocolului în produsul UX”
Dacă utilizatorii nu pot descoperi suprafețele de protocol, calitatea adoptării și a suportului scade.
Cum o rezolvă OmniRoute:
Intrări din bara laterală pentru MCP și A2A
Pagina Endpoint Fila Protocoale cu pornire rapidă și stare
Link-uri de la prezentare generală la tablouri de bord dedicate de management
🧪 27. „Am nevoie de validarea protocolului end-to-end cu clienți reali”
Testele simulate nu sunt suficiente pentru a valida compatibilitatea protocolului înainte de lansare.
Cum o rezolvă OmniRoute:
Suita E2E care pornește aplicația și utilizează transportul clientului MCP SDK real
Testele client A2A pentru descoperirea, trimiterea, transmiterea în flux, obținerea și anularea fluxurilor
Verificați încrucișați afirmațiile cu auditul MCP și API-urile pentru sarcini A2A
📡 28. „Am nevoie de observabilitate unificată pe toate interfețele”
Împărțirea observabilității în funcție de protocol creează puncte oarbe și MTTR mai lung.
Cum o rezolvă OmniRoute:
Tablouri de bord/jurnale/analitice unificate într-un singur produs
Sănătate + audit + solicitare de telemetrie în straturi OpenAI, MCP și A2A
API-uri operaționale pentru stare și automatizare
💼 29. „Am nevoie de un timp de rulare pentru proxy + instrumente + orchestrare agent”
Rularea multor servicii separate crește costurile operaționale și modurile de eșec.
Cum o rezolvă OmniRoute:
Proxy compatibil OpenAI, server MCP și server A2A într-o singură stivă
Autentificare partajată, rezistență, stocare de date și observabilitate
Model de politică consistent pe toate suprafețele de interacțiune
🚀 30. „Trebuie să trimit fluxuri de lucru agentice fără extinderea codului lipici”
Echipele își pierd din viteza atunci când realizează mai multe servicii și scripturi ad-hoc.
Cum o rezolvă OmniRoute:
Strategie unificată pentru clienți și agenți
Interfețe de utilizare a protocolului încorporate și căi de validare a fumului
Baze pregătite pentru producție (securitate, logare, rezistență, backup)
Exemple de manuale (cazuri de utilizare integrate)
Combo: "always-on"
1. cc/claude-opus-4-6
2. cx/gpt-5.2-codex
3. glm/glm-4.7
4. minimax/MiniMax-M2.1
5. if/kimi-k2-thinking
Outcome: deep fallback depth for deadline-critical workloads
Playbook D: Agentul operează cu MCP + A2A
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
3) Observe via /dashboard/mcp and /dashboard/a2a
4) Control incidents with resilience profile + task cancellation
⚡ Pornire rapidă
1. Instalați la nivel global:
npm install -g omniroute
omniroute
🎉 Tabloul de bord se deschide la http://localhost:20128
Comanda
Descriere
omniroute
Porniți serverul (portul implicit 20128)
omniroute --port 3000
Utilizați portul personalizat
omniroute --no-open
Nu deschideți automat browserul
omniroute --help
Arată ajutor
2. Conectați un furnizor GRATUIT:
Tabloul de bord → Furnizori → Conectare Claude Code sau Antigravity → Conectare OAuth → Gata!
3. Utilizați în instrumentul dvs. CLI:
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
Endpoint: http://localhost:20128/v1
API Key: [copy from dashboard]
Model: if/kimi-k2-thinking
Asta este! Începeți să codați cu modele AI GRATUITE.
Alternativă - rulează de la sursă:
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
🐳 Docker
OmniRoute este disponibil ca imagine publică Docker pe Docker Hub.
🌐 Offline Mode — Works fully offline with bundled server
npm run electron:dev # Development mode
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
npm run electron:build:mac # macOS (.dmg)
npm run electron:build:linux # Linux (.AppImage)
Funcționează cu orice instrument care acceptă puncte finale personalizate OpenAI
Sanitizarea răspunsului — Elimina câmpurile nestandard pentru compatibilitate strictă cu OpenAI SDK
Normalizarea rolurilor — developer → system pentru non-OpenAI; system → user pentru modelele GLM/ERNIE
Think tag extraction — blocuri <think> → reasoning_content pentru modele de gândire
Ieșire structurată — json_schema → responseMimeType/responseSchema a lui Gemeni
👥 Suport pentru mai multe conturi
Adăugați mai multe conturi pentru fiecare furnizor
Auto round-robin sau rutare bazată pe prioritate
Revenire la următorul cont când cineva atinge cota
🔄 Reîmprospătare automată a simbolului
Tokenurile OAuth se reîmprospătează automat înainte de expirare
Nu este nevoie de re-autentificare manuală
Experiență perfectă pentru toți furnizorii
🎨 Combo personalizate
Creați combinații de modele nelimitate
6 strategii: umplere întâi, round-robin, putere cu două alegeri, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor
Partajați combo-uri pe dispozitive cu Cloud Sync
🏥 Tabloul de bord pentru sănătate
Starea sistemului (timp de funcționare, versiune, utilizare a memoriei)
Stări întrerupătoarelor de circuit pentru fiecare furnizor (Închis/Deschis/Pe jumătate deschis)
Starea limitei ratei și blocajele active
Statistici de cache pentru semnături
Telemetrie latență (p50/p95/p99) + cache prompt
Resetați starea de sănătate cu un singur clic
🔧 Translator Playground
OmniRoute include un puternic Translator Playground încorporat cu 4 moduri pentru depanare, testare și monitorizare a traducerilor API:
Modul
Descriere
💻 Loc de joacă
Traducere directă a formatului — inserați orice corp de solicitare API și vedeți instantaneu cum îl traduce OmniRoute între formatele de furnizor (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Include exemple de șabloane și detecție automată a formatului.
💬 Tester de chat
Trimiteți cereri reale de chat prin OmniRoute și vedeți întregul drum dus-întors: intrarea dvs., solicitarea tradusă, răspunsul furnizorului și răspunsul tradus înapoi. Neprețuit pentru validarea rutei combinate.
🧪 Banc de testare
Mod de testare în loturi — definiți mai multe cazuri de testare cu diferite intrări și rezultate așteptate, rulați-le pe toate simultan și comparați rezultatele între furnizori și modele.
📱 Monitor live
Monitorizare în timp real a cererilor — urmăriți cererile primite în timp ce acestea trec prin OmniRoute, vedeți traducerile formatului care au loc în direct și identificați problemele instantaneu.
Acces: Tabloul de bord → Traducător (bara laterală)
💾 Cloud Sync
Sincronizați furnizorii, combo-urile și setările pe dispozitive
Sincronizare automată în fundal
Stocare securizată criptată
🧪 Evaluări (Evaluări)
OmniRoute include un cadru de evaluare încorporat pentru a testa calitatea răspunsului LLM față de un set de aur. Accesați-l prin Analitice → Evaluări în tabloul de bord.
Set de aur încorporat
„Setul de Aur OmniRoute” preîncărcat conține 10 cazuri de testare care acoperă:
Dacă problemele persistă: Dashboard → Provider → Reconnect
Costuri mari
Verificați statisticile de utilizare în Tabloul de bord → Costuri
Comutați modelul principal la GLM/MiniMax
Utilizați nivelul gratuit (Gemini CLI, iFlow) pentru sarcini necritice
Tabloul de bord se deschide pe portul greșit
Setați PORT=20128 și NEXT_PUBLIC_BASE_URL=http://localhost:20128
Erori de sincronizare în cloud
Verificați BASE_URL puncte către instanța dvs. care rulează
Verificați CLOUD_URL puncte către punctul final din cloud așteptat
Păstrați valorile NEXT_PUBLIC_* aliniate cu valorile de pe partea serverului
Prima conectare nu funcționează
Verificați INITIAL_PASSWORD în .env
Dacă nu este setată, parola de rezervă este 123456
Fără jurnal de solicitare
Setați ENABLE_REQUEST_LOGS=true în .env
Testul de conectare arată „Invalid” pentru furnizorii compatibili cu OpenAI
Mulți furnizori nu expun un punct final /models
OmniRoute v1.0.6+ include validarea de rezervă prin finalizarea chatului
Asigurați-vă că adresa URL de bază include sufixul /v1
🔐 OAuth
⚠️ IMPORTANT pentru utilizatorii cu OmniRoute în VPS/Docker/servidor remoto
OAuth
Pentru autentificare, Antigravity și Gemini CLI folosesc Google OAuth 2.0. O Google exige que a redirect_uri utilizat nu fluxo OAuth seja exatamente uma das URIs pre-cadastradas no Google Cloud Console do aplicative.
As credenciais OAuth embutidas no OmniRoute esteo cadastradas apenas for localhost. Când accesați OmniRoute într-un server la distanță (ex: https://omniroute.meuservidor.com), sau Google respinge autentificarea com:
Error 400: redirect_uri_mismatch
Soluție: Configurați propriile acreditări OAuth
Você necesita criar um OAuth 2.0 Client ID nu Google Cloud Console ca URI pentru server.
Faceți clic pe "+ Create Credentials" → "OAuth client ID"
Tip de aplicație: "Aplicație web"
Nume: scolha qualquer nome (ex: OmniRoute Remote)
3. Adăugați ca URI de redirecționare autorizate
No campo „URI-uri de redirecționare autorizate”, adiție:
https://seu-servidor.com/callback
Substitue seu-servidor.com pelo domínio sau IP do seu servidor (inclua a porta se necessário, ex: http://45.33.32.156:20128/callback).
4. Salve și copie ca credenciais
Após criar, o Google afișează o Client ID e o Client Secret.
5. Configurați ca variabile de mediu
Nu ai .env (ai variat de ambient do Docker):
# Para Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
# Para Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
6. Reinicie o OmniRoute
# Se usando npm:
npm run dev
# Se usando Docker:
docker restart omniroute
7. Tente connect novamente
Tabloul de bord → Furnizori → Antigravity (sau Gemini CLI) → OAuth
Agora sau Google redirecționează corect pentru https://seu-servidor.com/callback și funcționează autenticação.
Soluție temporară (sem configurar credenciais proprias)
Nu vă rugăm să vă convingeți acum, dar este posibil să utilizați sau să fluxați manual de URL:
OmniRoute deschide o adresă URL de autorizare Google
Após você autorizar, o Google tentará redirecionar para localhost (que falha no server remote)
Copiați o adresă URL completă da bara de accesare a browserului (mesmo que a page não carregue)
Cole essa URL nu există câmpuri care nu apar modal de conexão pentru OmniRoute
Faceți clic pe „Conectați-vă”
Această soluție de soluționare funcționează deoarece codul de autorizare a URL-ului este valabil independent de redirecționare pentru a încărca sau nu.
🛠️
Runtime: Node.js 18–22 LTS (⚠️ Node.js 24+ este nu este acceptat - better-sqlite3 binarele native sunt incompatibile)
Limba: TypeScript 5.9 — 100% TypeScript în src/ și open-sse/ (v1.0.6)
Cadru: Next.js 16 + React 19 + Tailwind CSS 4
Bază de date: LowDB (JSON) + SQLite (starea domeniului + jurnalele proxy)
Streaming: evenimente trimise de server (SSE)
Auth: OAuth 2.0 (PKCE) + JWT + chei API
Testare: Runner de testare Node.js (368+ teste unitare)
Mulțumiri speciale pentru 9router de decolua — proiectul original care a inspirat această furcă. OmniRoute se bazează pe această bază incredibilă cu funcții suplimentare, API-uri multimodale și o rescrie completă TypeScript.
Mulțumiri speciale pentru CLIProxyAPI — implementarea Go originală care a inspirat acest port JavaScript.