# User Guide (Slovenščina) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/USER_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/USER_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) Celovit vodnik za konfiguriranje ponudnikov, ustvarjanje kombinacij, integracijo orodij CLI in uvajanje OmniRoute. --- ## Kazalo vsebine - [Pregled cen](#-pricing-at-a-glance) - [Primeri uporabe](#-use-cases) - [Nastavitev ponudnika](#-provider-setup) - [Integracija CLI](#-cli-integration) - [Uvajanje](#-deployment) - [Razpoložljivi modeli](#-available-models) - [Napredne funkcije](#-advanced-features) - [Samodejno usmerjanje (brez konfiguracije)](#-auto-routing-zero-config) - [Integracija MCP in A2A](#-mcp--a2a-integration) - [Sistem veščin](#-skills-system) - [Pomnilniški sistem](#-memory-system) - [Spletni kavlji](#-webhooks) - [Agenti v oblaku](#-cloud-agents) - [Programsko upravljanje](#-programmatic-management) - [Notranji CLI](#-internal-cli) - [Namizna aplikacija (Electron)](#-desktop-application-electron) --- ## 💰 Pregled cen | Paket | Ponudnik | Cena | Ponastavitev kvote | Najprimernejše za | | ----------------- | ----------------- | ----------------- | -------------------------- | -------------------------------- | | **💳 NAROČNINA** | Claude Code (Pro) | $20/mesec | 5 h + tedensko | Obstoječe naročnike | | | Codex (Plus/Pro) | $20–200/mesec | 5 h + tedensko | Uporabnike OpenAI | | | GitHub Copilot | $10–19/mesec | Mesečno | Uporabnike GitHub | | **🔑 KLJUČ API** | DeepSeek | Plačilo po porabi | Brez | Poceni sklepanje | | | Groq | Plačilo po porabi | Brez | Izjemno hitro izvajanje | | | xAI (Grok) | Plačilo po porabi | Brez | Sklepanje z Grok 4 | | | Mistral | Plačilo po porabi | Brez | Modele, gostovane v EU | | | Perplexity | Plačilo po porabi | Brez | Sklepanje, dopolnjeno z iskanjem | | | Together AI | Plačilo po porabi | Brez | Odprtokodne modele | | | Fireworks AI | Plačilo po porabi | Brez | Hitro ustvarjanje slik FLUX | | | Cerebras | Plačilo po porabi | Brez | Hitrost na ravni rezine | | | Cohere | Plačilo po porabi | Brez | RAG z modelom Command R+ | | | NVIDIA NIM | Plačilo po porabi | Brez | Poslovne modele | | | Baidu Qianfan | Plačilo po porabi | Brez | Modele ERNIE | | **💰 UGODNO** | GLM-4.7 | $0.6/1M | Dnevno ob 10.00 | Cenovno ugodno rezervo | | | MiniMax M2.1 | $0.2/1M | Drseče 5-urno obdobje | Najcenejšo možnost | | | Kimi K2 | Pavšalno $9/mesec | 10M žetonov/mesec | Predvidljive stroške | | **🆓 BREZPLAČNO** | Qoder | $0 | Veljajo omejitve ponudnika | Preverjanje trenutnega kataloga | | | Kiro | $0 | ~50 dobroimetij/mesec | Brezplačni Claude | --- ## 🎯 Primeri uporabe ### Primer 1: »Imam naročnino Claude Pro« **Težava:** Kvota poteče neizkoriščena, pri intenzivnem programiranju pa naletim na omejitve hitrosti ``` Kombinacija: "maximize-claude" 1. cc/claude-opus-4-7 (v celoti izkoristi naročnino) 2. glm/glm-4.7 (poceni rezerva, ko zmanjka kvote) 3. if/qwen3.8-max-preview (brezplačna zasilna možnost) Mesečni strošek: $20 (naročnina) + ~$5 (rezerva) = skupaj $25 v primerjavi z $20 + doseganjem omejitev = nezadovoljstvo ``` ### Primer 2: »Želim ničelne stroške« **Težava:** Naročnin si ne morem privoščiti, vendar potrebujem zanesljivo umetno inteligenco za programiranje ``` Kombinacija: "zero-cost" 1. if/kimi-k2.7-code (naveden brezplačni dostop; morda veljajo omejitve hitrosti) 2. kr/qwen3-coder-next (brezplačna rezervna možnost Kiro) Mesečni strošek: $0 Kakovost: preverite model, omejitve, zasebnost in SLA za svojo delovno obremenitev ``` ### Primer 3: »Potrebujem neprekinjeno programiranje 24/7« **Težava:** Roki se bližajo in izpadov si ne morem privoščiti ``` Kombinacija: "always-on" 1. cc/claude-opus-4-7 (najboljša kakovost) 2. cx/gpt-5.5 (druga naročnina) 3. glm/glm-4.7 (poceni, ponastavi se dnevno) 4. minimax/MiniMax-M2.1 (najcenejši, ponastavitev po 5 h) 5. if/deepseek-v4-flash (naveden brezplačni dostop; morda veljajo omejitve hitrosti) Rezultat: 5 rezervnih ravni izboljša odpornost; razpoložljivost zunanjih ponudnikov ni zagotovljena Mesečni strošek: $20–200 (naročnine) + $10–20 (rezerva) ``` ### Primer 4: »V OpenClaw želim BREZPLAČNO umetno inteligenco« **Težava:** Potrebujem popolnoma brezplačnega pomočnika z umetno inteligenco v aplikacijah za sporočanje ``` Kombinacija: "openclaw-free" 1. if/qwen3.8-max-preview (naveden brezplačni dostop; morda veljajo omejitve hitrosti) 2. if/deepseek-v4-flash (naveden brezplačni dostop; morda veljajo omejitve hitrosti) 3. if/kimi-k2.7-code (naveden brezplačni dostop; morda veljajo omejitve hitrosti) Mesečni strošek: $0 Dostop prek: WhatsApp, Telegram, Slack, Discord, iMessage, Signal ... ``` --- ## 📖 Nastavitev ponudnikov ### 🔐 Naročniški ponudniki #### Claude Code (Pro/Max) ```bash Nadzorna plošča → Ponudniki → Poveži Claude Code → Prijava OAuth → Samodejno osveževanje žetona → Spremljanje 5-urne in tedenske kvote Modeli: cc/claude-opus-4-7 cc/claude-sonnet-4-6 cc/claude-haiku-4-5-20251001 ``` **Profesionalni nasvet:** Za zahtevne naloge uporabite Opus, za hitrost pa Sonnet. OmniRoute spremlja kvoto za vsak model posebej! Poti, združljive s Claude in Claude Code, ohranijo raven miselnega napora `max` za modele Opus in Sonnet. Modeli Haiku ne sprejemajo ravni napora `max`, zato OmniRoute pred pošiljanjem nadrejenemu ponudniku zahtevo zniža na visok proračun za razmišljanje. #### OpenAI Codex (Plus/Pro) ```bash Nadzorna plošča → Ponudniki → Poveži Codex → Prijava OAuth (vrata 1455) → 5-urna in tedenska ponastavitev Modeli: cx/gpt-5.5 cx/gpt-5.4 cx/gpt-5.3-codex cx/gpt-5.3-codex-spark ``` #### GitHub Copilot ```bash Nadzorna plošča → Ponudniki → Poveži GitHub → OAuth prek GitHub → Mesečna ponastavitev (1. v mesecu) Modeli: gh/gpt-5.5 gh/gpt-5.4 gh/claude-sonnet-4.6 gh/claude-opus-4.7 gh/gemini-3.1-pro-preview ``` ### 💰 Cenovno ugodni ponudniki #### GLM-4.7 (Dnevna ponastavitev, $0.6/1M) 1. Registrirajte se: [Zhipu AI](https://open.bigmodel.cn) 2. Pridobite ključ API iz Coding Plan 3. Nadzorna plošča → Dodaj ključ API: Ponudnik: `glm`, ključ API: `your-key` **Uporaba:** `glm/glm-4.7` — **Profesionalni nasvet:** Coding Plan ponuja 3-kratno kvoto za 1/7 cene! Ponastavitev vsak dan ob 10.00. #### MiniMax M2.1 (5-urna ponastavitev, $0.20/1M) 1. Registrirajte se: [MiniMax](https://www.minimax.io) 2. Pridobite ključ API → Nadzorna plošča → Dodaj ključ API **Uporaba:** `minimax/MiniMax-M2.1` — **Profesionalni nasvet:** Najcenejša možnost za dolg kontekst (1M žetonov)! #### Kimi K2 (fiksno $9/mesec) 1. Naročite se: [Moonshot AI](https://platform.kimi.ai?aff=omniroute) 2. Pridobite ključ API → Nadzorna plošča → Dodaj ključ API **Uporaba:** `kimi/kimi-k2.5` — **Profesionalni nasvet:** Fiksnih $9/mesec za 10M žetonov pomeni dejansko ceno $0.90/1M! #### Baidu Qianfan / ERNIE 1. Registrirajte se: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop) 2. Ustvarite ključ API za Qianfan → Nadzorna plošča → Dodaj ključ API: Ponudnik: `qianfan` **Uporaba:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1` ali drug identifikator modela Qianfan, združljivega z OpenAI. ### 🆓 BREZPLAČNI ponudniki Ponudniki brez preverjanja pristnosti imajo na svoji strani stikalo ob možnosti **Preverjanje pristnosti ni potrebno**. Če ga izklopite, onemogočite tega ponudnika, ga odstranite iz konfiguriranih/strnjenih pogledov ponudnikov in njegove modele odstranite iz `/v1/models`. #### Qoder (9 BREZPLAČNIH modelov) ```bash Nadzorna plošča → Poveži Qoder → Prijava OAuth → Za dostop veljajo trenutne omejitve ponudnika Modeli: if/qwen3.8-max-preview, if/qwen3.7-max, if/qwen3.7-plus, if/kimi-k3, if/kimi-k2.7-code, if/glm-5.2, if/deepseek-v4-pro, if/deepseek-v4-flash, if/minimax-m3 ``` #### Kiro (Claude BREZPLAČNO) ```bash Nadzorna plošča → Poveži Kiro → AWS Builder ID ali Google/GitHub → ~50 dobroimetij/mesec Modeli: kr/claude-sonnet-4.5, kr/claude-haiku-4.5 ``` --- ## 🎨 Kombinacije Kartice kombinacij lahko neposredno v razdelku **Nadzorna plošča → Kombinacije** prerazporedite tako, da povlečete ročico na posamezni kartici. Vrstni red se shrani v SQLite in obnovi ob ponovnem nalaganju. ### Primer 1: Prednost naročnini → Cenovno ugodna rezerva ``` Nadzorna plošča → Kombinacije → Ustvari novo Ime: premium-coding Modeli: 1. cc/claude-opus-4-7 (Primarna naročnina) 2. glm/glm-4.7 (Cenovno ugodna rezerva, $0.6/1M) 3. minimax/MiniMax-M2.7 (Najcenejša nadomestna možnost, $0.3/1M) Uporaba v CLI: premium-coding ``` ### Primer 2: Samo brezplačno (brez stroškov) ``` Ime: free-combo Modeli: 1. if/kimi-k2.7-code (naveden brezplačni dostop; morda veljajo omejitve ponudnika) 2. kr/qwen3-coder-next (brezplačna nadomestna možnost Kiro) Cena: trenutno navedena kot $0; pogoji in razpoložljivost se lahko spremenijo ``` --- ## 🔧 Integracija CLI ### Cursor IDE **Uporaba Cursorja kot odjemalca OmniRoute** (usmerjanje klepeta Cursor prek OmniRoute): ``` Nastavitve → Modeli → Napredno: Osnovni URL API-ja OpenAI: http://localhost:20128/v1 Ključ API-ja OpenAI: [z nadzorne plošče OmniRoute] Model: cc/claude-opus-4-7 ``` **Uporaba OmniRoute kot ponudnika za Cursor** (OmniRoute kliče Cursor kot nadrejeno storitev): priporočamo **Nadzorna plošča → Ponudniki → Cursor → Prijava s Cursorjem**. Za Docker glejte [`docs/providers/CURSOR-DOCKER.md`](../providers/CURSOR-DOCKER.md). ### Claude Code Uredite `~/.claude/settings.json`: ```json { "env": { "ANTHROPIC_BASE_URL": "http://localhost:20128", "ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key" } } ``` Tukaj uporabite korensko končno točko, združljivo s Claude. Spremenljivki `ANTHROPIC_BASE_URL` ne dodajajte `/v1`. ### Codex CLI ```bash export OPENAI_BASE_URL="http://localhost:20128" export OPENAI_API_KEY="your-omniroute-api-key" codex "your prompt" ``` ### OpenClaw Uredite `~/.openclaw/openclaw.json`: ```json { "agents": { "defaults": { "model": { "primary": "omniroute/if/kimi-k2.7-code" } } }, "models": { "providers": { "omniroute": { "baseUrl": "http://localhost:20128/v1", "apiKey": "your-omniroute-api-key", "api": "openai-completions", "models": [{ "id": "if/kimi-k2.7-code", "name": "Kimi K2.7 Code" }] } } } } ``` **Ali uporabite nadzorno ploščo:** Orodja CLI → OpenClaw → Samodejna konfiguracija ### Cline / Continue / RooCode ``` Ponudnik: Združljiv z OpenAI Osnovni URL: http://localhost:20128/v1 Ključ API-ja: [z nadzorne plošče] Model: cc/claude-opus-4-7 ``` --- ## 🚀 Namestitev ### Globalna namestitev npm (priporočeno) ```bash npm install -g omniroute # Ustvarite konfiguracijski imenik mkdir -p ~/.omniroute # Ustvarite datoteko .env (glejte .env.example) cp .env.example ~/.omniroute/.env # Zaženite strežnik omniroute # Ali z vrati po meri: omniroute --port 3000 ``` CLI samodejno naloži `.env` iz `~/.omniroute/.env` ali `./.env`. ### Način sistemske vrstice Zaženite OmniRoute v sistemski vrstici: ```bash omniroute serve --tray ``` Ukaz se zaključi, ko sta strežnik in sistemska vrstica pripravljena. Strežnik deluje naprej brez terminala. Način sistemske vrstice podpira macOS, Windows in grafične seje Linuxa. Nadzorna plošča se v načinu sistemske vrstice ne odpre samodejno. V meniju sistemske vrstice so na voljo ta dejanja: - Odpiranje nadzorne plošče. - Odpiranje `/dashboard/logs`. - Spreminjanje samodejnega zagona. - Ustavitev OmniRoute. Možnosti `--tray` ne uporabljajte skupaj s temi možnostmi: - `--daemon` - `--log` - `--no-recovery` Ti načini zahtevajo drugačno lastništvo procesa. Omogočite zagon ob naslednji prijavi v računalnik: ```bash omniroute autostart enable ``` Samodejni zagon uporablja način sistemske vrstice v sistemih macOS, Windows in grafičnih sejah Linuxa. Linux brez grafičnega vmesnika uporablja obstoječo uporabniško storitev systemd. Onemogočite zagon ob prijavi: ```bash omniroute autostart disable ``` ### Odstranitev Ko OmniRoute ne potrebujete več, sta za čisto odstranitev na voljo dva hitra skripta: | Ukaz | Dejanje | | ------------------------ | --------------------------------------------------------------------------------------------------- | | `npm run uninstall` | Odstrani sistemsko aplikacijo, vendar **ohrani zbirko podatkov in konfiguracije** v `~/.omniroute`. | | `npm run uninstall:full` | Odstrani aplikacijo IN trajno **izbriše vse konfiguracije, ključe in zbirke podatkov**. | > Opomba: Če želite zagnati te ukaze, se pomaknite v mapo projekta OmniRoute (če ste ga klonirali) in jih zaženite. Če ste ga namestili globalno, lahko preprosto zaženete `npm uninstall -g omniroute`. ### Namestitev na VPS ```bash git clone https://github.com/diegosouzapw/OmniRoute.git cd OmniRoute && npm install && npm run build export JWT_SECRET="your-secure-secret-change-this" export INITIAL_PASSWORD="your-password" export DATA_DIR="/var/lib/omniroute" export PORT="20128" export HOSTNAME="0.0.0.0" export NODE_ENV="production" export NEXT_PUBLIC_BASE_URL="http://localhost:20128" export API_KEY_SECRET="endpoint-proxy-api-key-secret" npm run start # Ali: pm2 start npm --name omniroute -- start ``` ### Namestitev s PM2 (malo pomnilnika) Za strežnike z omejenim RAM-om uporabite možnost omejitve pomnilnika: ```bash # Z omejitvijo 512 MB (privzeto) pm2 start npm --name omniroute -- start # Ali z omejitvijo pomnilnika po meri OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start # Ali z uporabo ecosystem.config.js pm2 start ecosystem.config.js ``` Ustvarite `ecosystem.config.js`: ```javascript module.exports = { apps: [ { name: "omniroute", script: "npm", args: "start", env: { NODE_ENV: "production", OMNIROUTE_MEMORY_MB: "512", JWT_SECRET: "your-secret", INITIAL_PASSWORD: "your-password", }, node_args: "--max-old-space-size=512", max_memory_restart: "300M", }, ], }; ``` ### Docker ```bash # Zgradite sliko (privzeto = runner-cli s prednameščenimi codex/claude/droid) docker build -t omniroute:cli . # Prenosni način (priporočeno) docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli ``` Za način, integriran z gostiteljem in binarnimi datotekami CLI, glejte razdelek Docker v glavni dokumentaciji. ### Void Linux (xbps-src) Uporabniki Void Linuxa lahko OmniRoute zapakirajo in namestijo izvorno z ogrodjem za navzkrižno prevajanje `xbps-src`. To avtomatizira samostojno gradnjo Node.js skupaj z zahtevanimi izvornimi vezavami `better-sqlite3`.
Prikaži predlogo xbps-src ```bash # Datoteka predloge za 'omniroute' pkgname=omniroute version=3.8.0 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit " license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false do_build() { # Določite ciljno arhitekturo CPE za node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac # 1) Namestite vse odvisnosti – preskočite skripte NODE_ENV=development npm ci --ignore-scripts # 2) Zgradite samostojni paket Next.js npm run build # 3) Kopirajte statična sredstva v samostojni paket cp -r .next/static .next/standalone/.next/static [ -d public ] && cp -r public .next/standalone/public || true # 4) Prevedite izvorno vezavo better-sqlite3 local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js (cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch") # 5) Namestite prevedeno vezavo v samostojni paket local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release mkdir -p "$_bs3_release" cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/" # 6) Odstranite pakete sharp, specifične za arhitekturo rm -rf .next/standalone/node_modules/@img # 7) Kopirajte izvajalne odvisnosti pino, ki jih je izpustila statična analiza Next.js: for _mod in pino-abstract-transport split2 process-warning; do cp -r "node_modules/$_mod" .next/standalone/node_modules/ done } do_check() { npm run test:unit } do_install() { vmkdir usr/lib/omniroute/.next vcopy .next/standalone/. usr/lib/omniroute/.next/standalone # Preprečite, da bi kavelj po namestitvi odstranil prazne imenike usmerjevalnika aplikacije Next.js for _d in \ .next/standalone/.next/server/app/dashboard \ .next/standalone/.next/server/app/dashboard/settings \ .next/standalone/.next/server/app/dashboard/providers; do touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep" done cat > "${WRKDIR}/omniroute" <<'EOF' #!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" } post_install() { vlicense LICENSE } ```
### Okoljske spremenljivke | Spremenljivka | Privzeto | Opis | | --------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | `omniroute-default-secret-change-me` | Skrivnost za podpisovanje JWT (**spremenite v produkcijskem okolju**) | | `INITIAL_PASSWORD` | `CHANGEME` | Geslo za prvo prijavo | | `DATA_DIR` | `~/.omniroute` | Imenik podatkov (zbirka podatkov, uporaba, dnevniki) | | `PORT` | privzeta vrednost ogrodja | Vrata storitve (`20128` v primerih) | | `HOSTNAME` | privzeta vrednost ogrodja | Gostitelj za vezavo (Docker privzeto uporablja `0.0.0.0`) | | `NODE_ENV` | privzeta vrednost izvajalnega okolja | Za namestitev nastavite `production` | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | Javni osnovni URL, prikazan na nadzorni plošči in izpostavljen strežniku (nadomešča opuščeni `BASE_URL`) | | `NEXT_PUBLIC_CLOUD_URL` | `https://omniroute.dev` | Osnovni URL končne točke za sinhronizacijo z oblakom (nadomešča opuščeni `CLOUD_URL`) | | `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | Skrivnost HMAC za ustvarjene ključe API-ja | | `REQUIRE_API_KEY` | `false` | Zahteva ključ API-ja Bearer na `/v1/*` | | `ALLOW_API_KEY_REVEAL` | `false` | Overjenim uporabnikom nadzorne plošče omogoči, da na zahtevo razkrijejo celotne shranjene vrednosti ključev API-ja | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | Pogostost osveževanja predpomnjenih podatkov o omejitvah ponudnikov na strani strežnika; gumbi v uporabniškem vmesniku še vedno sprožijo ročno sinhronizacijo | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | Onemogoči samodejne posnetke SQLite pred zapisovanjem, uvozom ali obnovitvijo; ročne varnostne kopije še vedno delujejo | | `APP_LOG_TO_FILE` | `true` | Omogoči zapisovanje dnevnikov aplikacije in revizije na disk | | `AUTH_COOKIE_SECURE` | `false` | Vsili piškotek za preverjanje pristnosti `Secure` (za povratnim posredniškim strežnikom HTTPS) | | `CLOUDFLARED_BIN` | ni nastavljeno | Uporabi obstoječo binarno datoteko `cloudflared` namesto upravljanega prenosa | | `CLOUDFLARED_PROTOCOL` | `http2` | Prenos za upravljane hitre tunele (`http2`, `quic` ali `auto`) | | `OMNIROUTE_MEMORY_MB` | `512` | Omejitev kopice Node.js v MB | | `PROMPT_CACHE_MAX_SIZE` | `50` | Največje število vnosov v predpomnilniku pozivov | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Največje število vnosov v semantičnem predpomnilniku | Za celoten seznam okoljskih spremenljivk glejte [README](../README.md). --- ## 📊 Razpoložljivi modeli
Prikaži vse razpoložljive modele > Spodnji seznam je pripravljen na podlagi `open-sse/config/providerRegistry.ts` za v3.8.0. Katalogi v oblaku (Gemini, OpenRouter itd.) se sinhronizirajo dinamično — za celoten aktualni katalog odprite **Nadzorna plošča → Ponudniki → [ponudnik] → Razpoložljivi modeli** ali pokličite `GET /api/models/catalog`. > > Če vgrajeni seznam ponudnika ni več posodobljen, na tej strani uporabite **Uvozi iz /models** (ali omogočite **Samodejno sinhronizacijo**), da pridobite aktualni katalog iz izvornega sistema. To je bilo preverjeno v v3.8.50 za LLM7.io (`gemini-3.1-flash-lite`) in UncloseAI (`solidrust/Hermes-3-Llama-3.1-8B-AWQ`); anonimni dostop do Pollinations je med istim preizkusom ostal omejen na strani izvornega ponudnika. **Claude Code (`cc/`)** — Pro/Max OAuth: `cc/claude-opus-4-8`, `cc/claude-opus-4-7`, `cc/claude-opus-4-6`, `cc/claude-opus-4-5-20251101`, `cc/claude-sonnet-4-6`, `cc/claude-sonnet-4-5-20250929`, `cc/claude-haiku-4-5-20251001` **Codex (`cx/`)** — Plus/Pro OAuth: `cx/gpt-5.5` (+ ravni intenzivnosti: `gpt-5.5-xhigh`, `gpt-5.5-high`, `gpt-5.5-medium`, `gpt-5.5-low`), `cx/gpt-5.4`, `cx/gpt-5.4-mini`, `cx/gpt-5.3-codex`, `cx/gpt-5.3-codex-spark` **GitHub Copilot (`gh/`)** — OAuth: `gh/gpt-5.5`, `gh/gpt-5.4`, `gh/gpt-5.4-mini`, `gh/gpt-5-mini`, `gh/gpt-5.3-codex`, `gh/claude-opus-4.7`, `gh/claude-opus-4.6`, `gh/claude-opus-4-5-20251101`, `gh/claude-sonnet-4.6`, `gh/claude-sonnet-4.5`, `gh/claude-haiku-4.5`, `gh/gemini-3.1-pro-preview`, `gh/gemini-3-flash-preview`, `gh/oswe-vscode-prime` **Kiro (`kr/`)** — BREZPLAČEN OAuth: uporabite aktualni katalog, prikazan v razdelku **Nadzorna plošča → Ponudniki → Kiro → Razpoložljivi modeli**. Razpoložljivost je odvisna od računa in naročniškega paketa. **Qoder (`if/`)** — BREZPLAČEN OAuth: `if/qwen3.8-max-preview`, `if/qwen3.7-max`, `if/qwen3.7-plus`, `if/kimi-k3`, `if/kimi-k2.7-code`, `if/glm-5.2`, `if/deepseek-v4-pro`, `if/deepseek-v4-flash`, `if/minimax-m3` **GLM (`glm/`, `glm-cn/`, `zai/`, `glmt/`)** — $0.2–0.6/1M: `glm/glm-5.1`, `glm/glm-5`, `glm/glm-5-turbo`, `glm/glm-4.7`, `glm/glm-4.7-flash`, `glm/glm-4.6`, `glm/glm-4.6v`, `glm/glm-4.5`, `glm/glm-4.5v`, `glm/glm-4.5-air` **MiniMax (`minimax/`, `minimax-cn/`)** — $0.2/1M: `minimax/MiniMax-M2.7`, `minimax/MiniMax-M2.7-highspeed`, `minimax/MiniMax-M2.5`, `minimax/MiniMax-M2.5-highspeed` **Kimi (`kimi/`, `kimi-coding/`, `kimi-coding-apikey/`)** — $9/mesec pavšalno ali glede na uporabo: `kimi/kimi-k2.6`, `kimi/kimi-k2.5` **DeepSeek (`ds/`)** — ključ API: `ds/deepseek-v4-pro`, `ds/deepseek-v4-flash` **Groq (`groq/`)** — izjemno hiter: `groq/llama-3.3-70b-versatile`, `groq/meta-llama/llama-4-maverick-17b-128e-instruct`, `groq/qwen/qwen3-32b`, `groq/openai/gpt-oss-120b` **xAI (`xai/`)** — izvorni Grok: `xai/grok-4.3`, `xai/grok-4.20-multi-agent-0309`, `xai/grok-4.20-0309-reasoning`, `xai/grok-4.20-0309-non-reasoning` **Mistral (`mistral/`)** — gostuje v EU: `mistral/mistral-large-latest`, `mistral/mistral-medium-3-5`, `mistral/mistral-small-latest`, `mistral/devstral-latest`, `mistral/codestral-latest` **Perplexity (`pplx/`)** — obogaten z iskanjem: `pplx/sonar-deep-research`, `pplx/sonar-reasoning-pro`, `pplx/sonar-pro`, `pplx/sonar` **Together AI (`together/`)** — odprtokoden: `together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` (brezplačno), `together/meta-llama/Llama-Vision-Free`, `together/deepseek-ai/DeepSeek-R1-Distill-Llama-70B-Free`, `together/deepseek-ai/DeepSeek-R1`, `together/Qwen/Qwen3-235B-A22B`, `together/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` **Fireworks AI (`fireworks/`)** — hitro sklepanje: `fireworks/accounts/fireworks/models/kimi-k2p6`, `fireworks/accounts/fireworks/models/minimax-m2p7`, `fireworks/accounts/fireworks/models/qwen3p6-plus`, `fireworks/accounts/fireworks/models/glm-5p1`, `fireworks/accounts/fireworks/models/deepseek-v4-pro` **Cerebras (`cerebras/`)** — na ravni rezine: `cerebras/zai-glm-4.7`, `cerebras/gpt-oss-120b` **Cohere (`cohere/`)** — osredotočen na RAG: `cohere/command-a-reasoning-08-2025`, `cohere/command-a-vision-07-2025`, `cohere/command-a-03-2025`, `cohere/command-r-08-2024` **NVIDIA NIM (`nvidia/`)** — za podjetja: `nvidia/z-ai/glm-5.1`, `nvidia/minimaxai/minimax-m2.7`, `nvidia/google/gemma-4-31b-it`, `nvidia/mistralai/mistral-small-4-119b-2603`, `nvidia/mistralai/mistral-large-3-675b-instruct-2512`, `nvidia/qwen/qwen3.5-397b-a17b`, `nvidia/deepseek-ai/deepseek-v4-pro`, `nvidia/openai/gpt-oss-120b`, `nvidia/nvidia/nemotron-3-super-120b-a12b` **Baidu Qianfan (`qianfan/`)** — ERNIE: `qianfan/ernie-5.1`, `qianfan/ernie-5.0-thinking-latest`, `qianfan/ernie-x1.1` **Ollama Cloud (`ollama-cloud/`)**: `ollama-cloud/deepseek-v4-pro`, `ollama-cloud/deepseek-v4-flash`, `ollama-cloud/kimi-k2.6`, `ollama-cloud/glm-5.1`, `ollama-cloud/minimax-m2.7`, `ollama-cloud/gemma4:31b`, `ollama-cloud/qwen3.5:397b` **Gemini (Google Cloud `gemini/`)**: Sinhronizira se v živo iz storitve Google glede na ključ API — brez statičnega seznama. Povežite ključ v razdelku **Nadzorna plošča → Ponudniki**, nato pa uporabite **Razpoložljivi modeli**, da uvozite trenutni katalog (npr. `gemini/gemini-3-pro`, `gemini/gemini-3-flash`). **Drugi združljivi ponudniki** (izbrani): `cohere`, `databricks`, `snowflake`, `together`, `vertex`, `alibaba`, `alibaba-cn`, `bedrock` (prek `aws-bedrock`), `azure-ai`, `openrouter` (posredovani katalog), `siliconflow`, `hyperbolic`, `huggingface`, `featherless-ai`, `cloudflare-ai`, `scaleway`, `deepinfra`, `vercel-ai-gateway`, `bazaarlink`, `friendliai`, `nous-research`, `reka`, `volcengine`, `ai21`, `gigachat`. Vsak vzdržuje svoj seznam modelov v `providerRegistry.ts` in ga je mogoče samodejno sinhronizirati, kadar ponudnik izpostavi končno točko `/models`. **Opomba o ID-jih modelov:** OmniRoute uporablja ID-je, izvorne ponudniku (`claude-opus-4-8`, `gpt-5.5`, `glm-5.1`, `MiniMax-M2.7`, `kimi-k2.5`, `grok-4.20-0309-reasoning`). Nekateri ID-ji vključujejo različice s pikami, ker jih v tej obliki pričakuje izvorni API. Če model ni naveden zgoraj, za potrditev razpoložljivosti zaženite `omniroute models --search ` ali pokličite `GET /api/models/catalog`.
--- ## 🧩 Napredne funkcije ### Modeli po meri Dodajte poljuben ID modela kateremu koli ponudniku, ne da bi čakali na posodobitev aplikacije: ```bash # Prek API-ja curl -X POST http://localhost:20128/api/provider-models \ -H "Content-Type: application/json" \ -d '{"provider": "openai", "modelId": "gpt-5.2", "modelName": "GPT-5.2"}' # Seznam: curl http://localhost:20128/api/provider-models?provider=openai # Odstranitev: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2" ``` Lahko pa uporabite nadzorno ploščo: **Ponudniki → [Ponudnik] → Modeli po meri**. Opombe: - Ponudniki OpenRouter in ponudniki, združljivi z OpenAI/Anthropic, se upravljajo samo v razdelku **Razpoložljivi modeli**. Ročno dodajanje, uvoz in samodejna sinhronizacija se vsi zapišejo na isti seznam razpoložljivih modelov, zato za te ponudnike ni ločenega razdelka Modeli po meri. - Razdelek **Modeli po meri** je namenjen ponudnikom, ki ne omogočajo upravljanega uvoza razpoložljivih modelov. ### Veriženje sorodnih prehodov OmniRoute Drug prehod OmniRoute lahko dodate kot ponudnika **Po meri, združljivega z OpenAI**. Uporabite osnovni URL `/v1` sorodnega prehoda in namenski ključ API z najmanjšimi potrebnimi pravicami, ki ga je izdal ta prehod. Za vzajemne ali večstopenjske verige omogočite izbirno zaščito pred zankami na vsakem prehodu: ```bash # gateway-a OMNIROUTE_INSTANCE_ID=gateway-a OMNIROUTE_PEER_URLS=http://gateway-b:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` ```bash # gateway-b OMNIROUTE_INSTANCE_ID=gateway-b OMNIROUTE_PEER_URLS=http://gateway-a:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` Glavo `X-OmniRoute-Peer-Trace` prejmejo samo zahteve, poslane na izrecno dovoljen URL sorodnega prehoda. Prehod zavrne ponovljeni ID primerka ali izčrpano dovoljeno število skokov z odgovorom HTTP `508 Loop Detected`; običajni ponudniki v zaledju ne prejmejo nobenih metapodatkov o sorodnih prehodih. Veriženje sorodnih prehodov ni replikacija zbirke podatkov ali preklop ob odpovedi gostitelja. Vsak prehod vzdržuje neodvisno stanje SQLite, predpomnilnike, števce omejitev hitrosti in seje. Za aktivno/pasivno ali aktivno/aktivno razpoložljivost uporabite povratni posredniški strežnik s preverjanjem zdravja ali preklop ob odpovedi na strani odjemalca in nikoli ne priklopite ene zbirke podatkov SQLite v več sočasno delujočih primerkov OmniRoute. ### Namenske poti ponudnikov Zahteve usmerite neposredno k določenemu ponudniku s preverjanjem veljavnosti modela: ```bash POST http://localhost:20128/v1/providers/openai/chat/completions POST http://localhost:20128/v1/providers/openai/embeddings POST http://localhost:20128/v1/providers/fireworks/images/generations ``` Predpona ponudnika se samodejno doda, če manjka. Neujemajoči se modeli vrnejo `400`. ### Konfiguracija omrežnega posredniškega strežnika ```bash # Nastavitev globalnega posredniškega strežnika curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}' # Posredniški strežnik za posameznega ponudnika curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}' # Preizkus posredniškega strežnika curl -X POST http://localhost:20128/api/settings/proxy/test \ -d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}' ``` **Prednostni vrstni red:** Specifično za ključ → specifično za kombinacijo → specifično za ponudnika → globalno → okolje. ### API kataloga modelov ```bash curl http://localhost:20128/api/models/catalog ``` Vrne modele, razvrščene po ponudnikih, z vrstami (`chat`, `embedding`, `image`). ### Sinhronizacija z oblakom - Sinhronizirajte ponudnike, kombinacije in nastavitve med napravami - Samodejna sinhronizacija v ozadju s časovno omejitvijo in hitrim zaključkom ob napaki - V produkciji dajte prednost strežniškima spremenljivkama `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` ### Hitri predor Cloudflare - Na voljo v razdelku **Nadzorna plošča → Končne točke** za Docker in druge samostojno gostovane namestitve - Ustvari začasni URL `https://*.trycloudflare.com`, ki posreduje na vašo trenutno končno točko `/v1`, združljivo z OpenAI - Ob prvi omogočitvi namesti `cloudflared` samo, ko je to potrebno; poznejši ponovni zagoni znova uporabijo isto upravljano izvedljivo datoteko - Hitri predori se po ponovnem zagonu OmniRoute ali vsebnika ne obnovijo samodejno; po potrebi jih znova omogočite na nadzorni plošči - URL-ji predorov so začasni in se spremenijo ob vsaki ustavitvi oziroma zagonu predora - Upravljani hitri predori privzeto uporabljajo prenos HTTP/2, da se izognejo motečim opozorilom o medpomnilniku UDP za QUIC v vsebnikih z omejenimi viri - Nastavite `CLOUDFLARED_PROTOCOL=quic` ali `auto`, če želite preglasiti izbiro upravljanega prenosa - Nastavite `CLOUDFLARED_BIN`, če želite namesto upravljanega prenosa uporabiti vnaprej nameščeno izvedljivo datoteko `cloudflared` - Plošče Cloudflare Quick Tunnel, Tailscale Funnel in ngrok Tunnel lahko prikažete ali skrijete v razdelku **Nastavitve → Videz**. Skrivanje plošče ne ustavi delujočega predora. ### Inteligenca prehoda LLM (9. faza) - **Semantični predpomnilnik** — Samodejno predpomni odgovore brez pretakanja s temperature=0 (obidete ga z `X-OmniRoute-No-Cache: true`) - **Idempotentnost zahtev** — Odstrani podvojene zahteve znotraj 5 s prek glave `Idempotency-Key` ali `X-Request-Id` - **Spremljanje napredka** — Izbirni dogodki SSE `event: progress` prek glave `X-OmniRoute-Progress: true` --- ### Preizkusno okolje prevajalnika Dostopajte prek **Nadzorna plošča → Prevajalnik**. Razhroščujte in vizualizirajte, kako OmniRoute prevaja zahteve API med ponudniki. | Način | Namen | | --------------------------- | ---------------------------------------------------------------------------------------------------------- | | **Preizkusno okolje** | Izberite izvorno/ciljno obliko, prilepite zahtevo in si takoj oglejte prevedeni rezultat | | **Preizkuševalnik klepeta** | Pošljite sporočila klepeta v živo prek posredniškega strežnika in preglejte celoten cikel zahteve/odgovora | | **Testno ogrodje** | Zaženite paketne preizkuse z več kombinacijami oblik, da preverite pravilnost prevoda | | **Spremljanje v živo** | Spremljajte prevode v realnem času, ko zahteve tečejo skozi posredniški strežnik | **Primeri uporabe:** - Raziščite, zakaj določena kombinacija odjemalca in ponudnika ne deluje - Preverite, ali se oznake razmišljanja, klici orodij in sistemski pozivi pravilno prevajajo - Primerjajte razlike v oblikah med OpenAI, Claude, Gemini in Responses API --- ### Strategije usmerjanja Konfigurirajte prek **Nadzorna plošča → Nastavitve → Usmerjanje**. Nadzorna plošča prikazuje šest najpogosteje uporabljenih strategij; kombinacije in samodejni usmerjevalnik interno podpirajo širši nabor. **Strategije, vidne na nadzorni plošči (usmerjanje na ravni računa):** | Strategija | Opis | | --------------------------- | ------------------------------------------------------------------------------------------------------- | | **Najprej zapolni** | Uporablja račune po prednostnem vrstnem redu — primarni račun obravnava vse zahteve, dokler ni na voljo | | **Krožno izbiranje** | Kroži med vsemi računi z nastavljivo omejitvijo lepljivosti (privzeto: 3 klici na račun) | | **P2C (izbira med dvema)** | Izbere 2 naključna računa in usmeri k bolj zdravemu — uravnava obremenitev ob upoštevanju zdravja | | **Naključno** | Za vsako zahtevo naključno izbere račun s premešanjem Fisher-Yates | | **Najmanj uporabljeno** | Usmeri k računu z najstarejšim časovnim žigom `lastUsedAt` in enakomerno porazdeli promet | | **Stroškovno optimizirano** | Usmeri k računu z najnižjo vrednostjo prioritete in optimizira izbiro za najcenejše ponudnike | **Napredne strategije kombinacij in samodejnega usmerjanja** (nastavljive za posamezno kombinacijo ali prek predpon `auto/*` — glejte [AUTO-COMBO.md](../routing/AUTO-COMBO.md)): - `priority` — strog vrstni red brez krožnega izbiranja - `weighted` — sorazmerna razdelitev prometa glede na uteži posameznih modelov - `fill-first` — uporablja prvi model, dokler niso dosežene omejitve - `round-robin` / `strict-random` / `random` - `p2c` (izbira med dvema) - `least-used` in `cost-optimized` - `auto` — usmerjanje med vsemi kandidati na podlagi točkovanja - `lkgp` (zadnji znani delujoči ponudnik) — ostane pri zadnjem uspešnem ponudniku, nato uporabi rezervna pravila - `context-optimized` — izbere model z največjim prostim kontekstnim oknom - `context-relay` — verižni modeli z dolgim kontekstom za nadaljnje poteze #### Zunanja glava lepljive seje Za zunanjo pripadnost seji (na primer posredniki Claude Code/Codex za povratnimi posredniškimi strežniki) pošljite: ```http X-Session-Id: your-session-key ``` OmniRoute sprejme tudi `x_session_id` in vrne dejanski ključ seje v `X-OmniRoute-Session-Id`. Če uporabljate Nginx in pošiljate glave s podčrtaji, omogočite: ```nginx underscores_in_headers on; ``` #### Nadomestna imena modelov z nadomestnimi znaki Ustvarite vzorce z nadomestnimi znaki za preslikavo imen modelov: ``` Vzorec: claude-sonnet-* → Cilj: cc/claude-sonnet-4-6 Vzorec: gpt-* → Cilj: gh/gpt-5.3-codex ``` Nadomestni znaki podpirajo `*` (poljubni znaki) in `?` (en znak). #### Verige rezervnih možnosti Določite globalne verige rezervnih možnosti, ki veljajo za vse zahteve: ``` Veriga: production-fallback 1. cc/claude-opus-4-7 2. gh/gpt-5.3-codex 3. glm/glm-4.7 ``` --- ### Odpornost in odklopniki Konfigurirajte prek **Nadzorna plošča → Nastavitve → Odpornost**. OmniRoute izvaja odpornost na ravni ponudnika s petimi komponentami: 1. **Čakalna vrsta in uravnavanje zahtev** — Oblikovanje zahtev na ravni sistema: - **Zahteve na minuto (RPM)** — Največje število zahtev na minuto za posamezni račun - **Najkrajši čas med zahtevami** — Najkrajši razmik med zahtevami v milisekundah - **Največ sočasnih zahtev** — Največje število sočasnih zahtev na račun 2. **Čas ohlajanja povezave** — Konfiguracija za posamezno vrsto preverjanja pristnosti za eno povezavo po napakah, pri katerih je mogoče poskusiti znova: - **Osnovni čas ohlajanja** — Privzeto obdobje ohlajanja za napake zaledja, pri katerih je mogoče poskusiti znova - **Uporabi namige zaledja za ponovni poskus** — Upošteva veljavne namige `Retry-After` ali namige za ponastavitev, kadar so na voljo - **Največ korakov zakasnitve** — Najvišja raven eksponentnega podaljševanja zakasnitve pri ponavljajočih se napakah 3. **Odklopnik ponudnika** — Spremlja celovite napake ponudnika, označi ponudnika kot oslabljenega pri nastavljenem opozorilnem pragu in odpre odklopnik, ko je dosežen nastavljeni prag napak: - **Prag poslabšanja** — Število zaporednih napak ponudnika pred prehodom v stanje `DEGRADED` - **Prag napak** — Število zaporednih napak ponudnika pred prehodom v stanje `OPEN` - **Časovna omejitev ponastavitve** — Časovno obdobje, preden se ponudnik znova preizkusi - **CLOSED** (zdravo) — Zahteve tečejo normalno - **DEGRADED** — Zahteve še vedno tečejo, medtem ko se spremlja povečano število napak - **OPEN** — Ponudnik je po ponavljajočih se napakah začasno blokiran - **HALF_OPEN** — Preverjanje, ali si je ponudnik opomogel Omejitve hitrosti `429`, vezane na povezavo, ostanejo v razdelku **Čas ohlajanja povezave** in se ne štejejo v odklopnik ponudnika. Izvajalno stanje odklopnika ponudnika je prikazano samo v razdelku **Nadzorna plošča → Zdravje**. 4. **Čakanje na konec ohlajanja** — Če se vse možne povezave že ohlajajo, lahko OmniRoute počaka na najzgodnejši konec ohlajanja in samodejno ponovi isto zahtevo odjemalca. 5. **Samodejno zaznavanje omejitev hitrosti** — Ko ponudniki v zaledju vrnejo izrecna obdobja čakanja, ti namigi preglasijo lokalni čas ohlajanja povezave, če je nastavitev omogočena. **Strokovni nasvet:** Na strani **Zdravje** lahko po izpadu pregledate in ponastavite aktivne odklopnike ponudnikov. Stran Odpornost spreminja samo konfiguracijo. --- ### Izvoz/uvoz zbirke podatkov Varnostne kopije zbirke podatkov upravljajte v razdelku **Nadzorna plošča → Nastavitve → Sistem in shramba**. | Dejanje | Opis | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Izvozi zbirko podatkov** | Prenese trenutno zbirko podatkov SQLite kot datoteko `.sqlite` | | **Izvozi vse (.tar.gz)** | Prenese celoten arhiv varnostne kopije, ki vključuje: zbirko podatkov, nastavitve, kombinacije, povezave ponudnikov (brez poverilnic), metapodatke ključev API | | **Uvozi zbirko podatkov** | Naloži datoteko `.sqlite`, ki nadomesti trenutno zbirko podatkov. Varnostna kopija pred uvozom se ustvari samodejno, razen če je nastavljeno `DISABLE_SQLITE_AUTO_BACKUP=true` | ```bash # API: izvoz zbirke podatkov curl -o backup.sqlite http://localhost:20128/api/db-backups/export # API: izvoz vsega (celoten arhiv) curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll # API: uvoz zbirke podatkov curl -X POST http://localhost:20128/api/db-backups/import \ -F "file=@backup.sqlite" ``` **Preverjanje veljavnosti uvoza:** Uvožena datoteka se preveri glede celovitosti (preverjanje s pragmo SQLite), zahtevanih tabel (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) in velikosti (največ 100 MB). **Primeri uporabe:** - Preselite OmniRoute med računalniki - Ustvarite zunanje varnostne kopije za obnovitev po nesreči - Delite konfiguracije med člani ekipe (izvozite vse → delite arhiv) --- ### Nadzorna plošča nastavitev Stran z nastavitvami je za lažje krmarjenje razdeljena na **7 zavihkov**: | Zavihek | Vsebina | | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Splošno** | Orodja za sistemsko shrambo, privzeto vedenje, vidnost predorov končnih točk | | **Videz** | Nastavitve teme (svetla/temna/sistemska), vidnost stranske vrstice, preklopniki plošč za kartice predorov Cloudflare/Tailscale/ngrok | | **UI** | Proračun za razmišljanje (posredovanje / samodejna odstranitev / po meri / prilagodljivo — glejte [THINKING_BUDGET.md](./THINKING_BUDGET.md)), globalni sistemski poziv, statistika predpomnilnika pozivov | | **Varnost** | Nastavitve prijave/gesla, nadzor dostopa IP, preverjanje pristnosti API za `/models`, blokiranje ponudnikov, zaščita pred vbrizgavanjem pozivov | | **Usmerjanje** | Globalna strategija usmerjanja (najprej zapolni / krožno izbiranje / P2C / naključno / najmanj uporabljeno / stroškovno optimizirano), nadomestna imena modelov z nadomestnimi znaki, verige rezervnih možnosti, privzete nastavitve kombinacij | | **Odpornost** | Čakalna vrsta zahtev, čas ohlajanja povezave, konfiguracija odklopnika ponudnika in vedenje čakanja na konec ohlajanja | | **Napredno** | Globalna konfiguracija posredniškega strežnika (HTTP/SOCKS5), preglasitve posredniškega strežnika za posamezne ponudnike | Razdelek Splošno ne podvaja več opomb o beleženju in predpomnilniku, ki so samo za branje. Nastavitve hranjenja in optimizacije zbirke podatkov se trajno shranjujejo prek `/api/settings/database`; ročno čiščenje predpomnilnika uporablja `DELETE /api/cache`. Omejitve števila vrstic dnevnikov zahtev in posredniškega strežnika nadzorujeta `CALL_LOGS_TABLE_MAX_ROWS` in `PROXY_LOGS_TABLE_MAX_ROWS`. --- ### Upravljanje stroškov in proračuna Dostopajte prek **Nadzorna plošča → Stroški**. | Zavihek | Namen | | ------------ | ------------------------------------------------------------------------------------------------------------------------- | | **Proračun** | Nastavite omejitve porabe za posamezni ključ API z dnevnimi/tedenskimi/mesečnimi proračuni in spremljanjem v realnem času | | **Cene** | Oglejte si in urejajte vnose cen modelov — strošek na 1.000 vhodnih/izhodnih žetonov za posameznega ponudnika | ```bash # API: nastavitev proračuna curl -X POST http://localhost:20128/api/usage/budget \ -H "Content-Type: application/json" \ -d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}' # API: pridobitev trenutnega stanja proračuna curl http://localhost:20128/api/usage/budget ``` **Spremljanje stroškov:** Vsaka zahteva zabeleži porabo žetonov in izračuna strošek z uporabo tabele cen. Razčlenitve po ponudniku, modelu in ključu API si oglejte v razdelku **Nadzorna plošča → Uporaba**. --- ### Prepisovanje zvoka OmniRoute podpira prepisovanje zvoka prek končne točke, združljive z OpenAI: ```bash POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data # Primer z ukazom curl curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@audio.mp3" \ -F "model=openai/whisper-1" ``` `deepgram/nova-3` je izvorna pot Deepgram in zahteva ključ API za Deepgram. Če je konfiguriran samo OpenRouter, uporabite `openrouter/deepgram/nova-3`. Ponudniki za **pretvorbo govora v besedilo (prepisovanje)**: - `openai/` (združljivo z Whisper) - `groq/` (Groq Whisper Turbo) - `deepgram/` (družina Nova) - `assemblyai/` - `nvidia/` (Parakeet, Canary) - `huggingface/` (različice Whisper) - `qwen/` Ponudniki za **pretvorbo besedila v govor (`POST /v1/audio/speech`)**: - `openai/` (tts-1, tts-1-hd) - `hyperbolic/` - `deepgram/` (Aura) - `nvidia/` (Magpie TTS) - `elevenlabs/` - `huggingface/` - `inworld/` - `cartesia/` - `playht/` - `kie/` - `aws-polly/` - `xiaomi-mimo/` - `coqui/`, `tortoise/` - `qwen/` Podprte zvočne oblike za prepisovanje: `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`. Izhodne oblike TTS so odvisne od ponudnika (mp3, wav, opus, pcm, mulaw). --- ### Strategije uravnoteženja kombinacij Uravnoteženje za posamezno kombinacijo konfigurirajte v razdelku **Nadzorna plošča → Kombinacije → Ustvari/uredi → Strategija**. | Strategija | Opis | | --------------------------- | ----------------------------------------------------------------------------- | | **Krožno izbiranje** | Zaporedno kroži med modeli | | **Prioriteta** | Vedno najprej poskusi prvi model; rezervno možnost uporabi samo ob napaki | | **Naključno** | Za vsako zahtevo iz kombinacije izbere naključni model | | **Uteženo** | Usmerja sorazmerno glede na uteži, dodeljene posameznim modelom | | **Najmanj uporabljeno** | Usmeri k modelu z najmanj nedavnimi zahtevami (uporablja metrike kombinacije) | | **Stroškovno optimizirano** | Usmeri k najcenejšemu razpoložljivemu modelu (uporablja tabelo cen) | Globalne privzete nastavitve kombinacij lahko nastavite v razdelku **Nadzorna plošča → Nastavitve → Usmerjanje → Privzete nastavitve kombinacij**. Časovne omejitve ciljev kombinacije privzeto podedujejo trenutno časovno omejitev zahteve. Možnost **Časovna omejitev cilja (sekunde)** v privzetih nastavitvah kombinacij ali posamezni kombinaciji uporabite samo, kadar mora krajša omejitev za posamezni cilj sprožiti hitrejši preklop na rezervno možnost. Optimizacije kombinacij z ničelno zakasnitvijo so izbirne. Možnost **Optimizacije z ničelno zakasnitvijo** pustite onemogočeno, da preprečite, da bi te funkcije zakasnitve tekmovale z rezervnimi cilji, preskakovale cilje na podlagi zgodovine TTFT ali stiskale rezervne zahteve; če jo omogočite, lahko nastavljeno varovalno podvajanje, napovedni preskoki TTFT in proaktivno stiskanje rezervnih zahtev zamenjajo natančnost usmerjanja/zahtev za krajšo zakasnitev na skrajnem robu porazdelitve. Onemogočite **Medpomnilnik žetonov razmišljanja**, kadar ponudniki v zaledju zahtevajo stroge omejitve `max_tokens` / `maxOutputTokens`. Ko je omogočen, usmerjanje kombinacij doda dodaten prostor za modele sklepanja samo modelom z znano omejitvijo izhoda in pusti omejitev žetonov odjemalca nespremenjeno, kadar bi varna vrednost z medpomnilnikom presegla to omejitev. Če je omejitev odjemalca že nad znano zgornjo mejo, jo OmniRoute pred pošiljanjem zahteve v zaledje zmanjša na to mejo. --- ### Nadzorna plošča zdravja Dostopajte prek **Nadzorna plošča → Zdravje**. Pregled zdravja sistema v realnem času s 6 karticami: | Kartica | Kaj prikazuje | | -------------------------- | -------------------------------------------------------------------------------------- | | **Stanje sistema** | Čas delovanja, različica, poraba pomnilnika, podatkovni imenik | | **Zdravje ponudnikov** | Globalno izvajalno stanje odklopnikov ponudnikov | | **Omejitve hitrosti** | Aktivni časi ohlajanja povezav za posamezne račune s preostalim časom | | **Aktivne zapore** | Aktivne zapore, vezane na modele, in začasne izključitve | | **Predpomnilnik podpisov** | Statistika predpomnilnika za odstranjevanje dvojnikov (aktivni ključi, delež zadetkov) | | **Telemetrija zakasnitve** | Združene zakasnitve p50/p95/p99 za posameznega ponudnika | **Strokovni nasvet:** Stran Zdravje se samodejno osveži vsakih 10 sekund. S kartico odklopnikov ugotovite, kateri ponudniki imajo težave. --- ## 🤖 Samodejno usmerjanje (brez konfiguracije) OmniRoute vključuje **samodejni usmerjevalnik na podlagi ocen**, ki za vsako zahtevo izbere najboljši model med vsemi povezanimi ponudniki — brez vzdrževanja kombinacij. Zahtevo preprosto pošljite z eno od predpon `auto/*` in OmniRoute bo sproti sestavil navidezno kombinacijo ter kandidate ocenil glede na zakasnitev, stroške, stopnjo uspešnosti, ustreznost konteksta, primernost modela za nalogo, nedavne napake, kvoto in stanje odklopnika. | Predpona | Optimizira za | | -------------- | ----------------------------------------------------------------------------------------------- | | `auto` | Uravnotežena privzeta nastavitev (zakasnitev × stroški × stopnja uspešnosti) | | `auto/coding` | Programerske naloge: daje prednost modelom Claude, GPT-5, GLM, Kimi, Qwen Coder in DeepSeek | | `auto/cheap` | Najnižja cena na žeton, dopušča večjo zakasnitev | | `auto/fast` | Najnižja zakasnitev, ne upošteva stroškov | | `auto/offline` | Samo lokalni ponudniki (Ollama, vLLM, llama.cpp) — uporabno za fizično ločena okolja | | `auto/smart` | Prednost ima kakovost sklepanja (Opus, GPT-5 xhigh, R1, sklepanje GLM 5.1) | | `auto/lkgp` | »Zadnji znani delujoči ponudnik« — uporablja zadnjega uspešnega ponudnika, nato uporabi pravila | Primer: ```bash curl -X POST http://localhost:20128/v1/chat/completions \ -H "Authorization: Bearer $OMNIROUTE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "auto/coding", "messages": [{ "role": "user", "content": "Preoblikuj to funkcijo Python" }], "stream": true }' ``` Samodejni usmerjevalnik je v celoti opisan v dokumentu [AUTO-COMBO.md](../routing/AUTO-COMBO.md) — vključno z navodili za prilagajanje uteži ocenjevanja, uvrščanje ponudnikov na črni seznam in pregled odločitev o usmerjanju v razdelku **Nadzorna plošča → Samodejna kombinacija**. --- ## 🔌 Integracija MCP in A2A OmniRoute je hkrati **strežnik MCP** (Model Context Protocol) in **strežnik A2A** (Agent-to-Agent JSON-RPC 2.0). Vsako razvojno okolje ali gostitelj agenta, združljiv z MCP, lahko neposredno kliče orodja OmniRoute — dodatni ovoj ni potreben. ### Prenosi MCP - **SSE**: `http://localhost:20128/api/mcp/sse` - **Pretočni HTTP**: `http://localhost:20128/api/mcp/stream` - **stdio**: `omniroute --mcp` (za vtičnike razvojnih okolij, ki dajejo prednost stdio) ### Povezava z aplikacijo Claude Desktop Uredite `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ali enakovredno datoteko v sistemu Windows/Linux: ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"] } } } ``` ### Povezava z okolji Cursor / Continue / VS Code MCP Uporabite naslov URL SSE `http://localhost:20128/api/mcp/sse` in ključ API Bearer, ustvarjen v razdelku **Nadzorna plošča → Ključi API**. ### Obsegi MCP trenutno določa 32 poimenovanih obsegov. Vsak ključ Bearer je mogoče omejiti na določene obsege — za merodajen seznam obsegov in orodij glejte [MCP-SERVER.md](../frameworks/MCP-SERVER.md), za shemo JSON-RPC pa [A2A-SERVER.md](../frameworks/A2A-SERVER.md). --- ## 🧠 Sistem veščin OmniRoute ponuja razširljivo **ogrodje veščin** (`src/lib/skills/`), ki agentom in končni točki A2A omogoča izvajanje domensko specifičnih postopkov (npr. `code-review`, `summarize`, `extract-facts`, `web-research`). - **Tržnica** — Brskajte po veščinah in jih namestite prek **Nadzorna plošča → Veščine** - **Obsegi za posamezne ključe** — Omejite, kateri ključi API lahko prikličejo posamezne veščine - **Veščine po meri** — Dodajte datoteko TypeScript v `src/lib/a2a/skills/`, jo registrirajte in takoj jo bo mogoče priklicati prek A2A Celotna referenčna dokumentacija: [SKILLS.md](../frameworks/SKILLS.md). --- ## 💾 Sistem pomnilnika OmniRoute trajno shranjuje **dolgoročni pomnilnik pogovorov** s hibridnim pridobivanjem: - **SQLite FTS5** za iskanje po ključnih besedah v preteklih izmenjavah - **Vektorska zbirka Qdrant** (izbirno) za semantični priklic - **Samodejno pridobivanje dejstev** — entitete, nastavitve in odločitve se po vsaki seji povzamejo ter shranijo v tabelo `memory_facts` - Pomnilniki so ločeni glede na ključ API in sejo Pomnilnike upravljajte prek **Nadzorna plošča → Pomnilnik** (iskanje, urejanje, izvoz, brisanje). Vmesnik HTTP (`/api/memory/*`) agentom omogoča programsko dodajanje dejstev in poizvedovanje po njih — glejte [MEMORY.md](../frameworks/MEMORY.md). --- ## 🔔 Spletni kavlji Naročite se na dogodke OmniRoute za spremljanje in avtomatizacijo v realnem času. - Ustvarite spletni kavelj prek **Nadzorna plošča → Spletni kavlji** ter določite ciljni URL in skrivnost za podpisovanje HMAC - Razpoložljivi dogodki: `request.completed`, `request.failed`, `provider.unavailable`, `budget.exceeded`, `combo.switched`, `circuit_breaker.opened`, `circuit_breaker.closed` - Vsaka koristna vsebina vključuje `X-OmniRoute-Signature` (HMAC-SHA256) za preverjanje - Ponovni poskusi: 3 poskusi z eksponentnim podaljševanjem premora, nato premik v čakalno vrsto neuspelih sporočil Celotna shema je na voljo v [WEBHOOKS.md](../frameworks/WEBHOOKS.md). --- ## ☁️ Agenti v oblaku OmniRoute se integrira z agenti za programiranje v oblaku (**OpenAI Codex Cloud**, **Devin**, **Jules**, **Antigravity**), zato lahko dolgotrajna opravila pošiljate z iste nadzorne plošče, s katero upravljate lokalno usmerjanje. - Ustvarite opravila prek **Nadzorna plošča → Agenti v oblaku** ali z `POST /api/v1/agents/tasks` - Spremljajte stanje, dnevnike in artefakte posameznega opravila - Uporabite lasten ključ API za vsakega ponudnika — poverilnice nikoli ne zapustijo primerka OmniRoute Celotna referenčna dokumentacija: [CLOUD_AGENT.md](../frameworks/CLOUD_AGENT.md). --- ## 🛠️ Programsko upravljanje Vsak vir OmniRoute (ponudnike, kombinacije, ključe in nastavitve) lahko upravljate prek HTTP-ja s **ključem Bearer z obsegom `manage`**. Ustvarite ključ prek **Nadzorna plošča → Ključi API → Nov ključ → Obseg: manage**, nato: ```bash # Prikaži ponudnike curl http://localhost:20128/api/providers \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" # Dodaj povezavo s ponudnikom curl -X POST http://localhost:20128/api/providers \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "provider": "openai", "apiKey": "sk-...", "name": "main" }' # Ustvari kombinacijo curl -X POST http://localhost:20128/api/combos \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "premium", "strategy": "priority", "models": [{ "model": "cc/claude-opus-4-7" }, { "model": "glm/glm-5.1" }] }' # Prikaži/ustvari ključe API curl http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" curl -X POST http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -d '{ "name": "ci-bot", "scopes": ["chat"] }' ``` Celoten katalog končnih točk ter sheme zahtev in odgovorov so na voljo v [API_REFERENCE.md](../reference/API_REFERENCE.md). --- ## 💻 Interni CLI OmniRoute vključuje interni CLI (`omniroute …`) za nastavitev, diagnostiko in nadzor izvajanja. Ta je **ločen od strani »Orodja CLI« na nadzorni plošči**, kjer konfigurirate CLI-je drugih ponudnikov (Claude Code, Cursor, Codex, Cline, …), da lahko komunicirajo z OmniRoute. ```bash omniroute setup # Interaktivni čarovnik (geslo, ponudniki, kombinacije) omniroute setup --non-interactive # Primerno za CI omniroute doctor # Diagnostika stanja (podatkovna mapa, zbirka podatkov, ponudniki, vrata) omniroute providers available # Prikaži podprte ponudnike omniroute providers list # Prikaži konfigurirane povezave omniroute providers test # Preizkusi povezavo s ponudnikom v živo omniroute combos list # Prikaži kombinacije omniroute combos switch # Nastavi privzeto kombinacijo omniroute models # Prikaži razpoložljive modele (--json, --search) omniroute keys add | list | remove # Upravljaj ključe API iz terminala omniroute backup # Ustvari posnetek konfiguracije in zbirke podatkov omniroute restore [] # Obnovi iz posnetka omniroute health # Podrobno stanje (odklopniki, predpomnilnik, pomnilnik) omniroute quota # Poraba kvote ponudnika omniroute mcp status # Stanje strežnika MCP omniroute a2a status # Stanje strežnika A2A omniroute tunnel list|create|stop # Predori Cloudflare/Tailscale/ngrok omniroute reset-password # Ponastavi skrbniško geslo omniroute --mcp # Zaženi strežnik MCP prek stdio omniroute --port 3000 # Zaženi strežnik na vratih po meri ``` Namig: povežite `omniroute doctor --json` s svojim orodjem za spremljanje, da vas opozori na nedelujoče povezave s ponudniki. --- ## 🖥️ Namizna aplikacija (Electron) OmniRoute je na voljo kot izvorna namizna aplikacija za Windows, macOS in Linux. ### Namestitev ```bash # Iz mape electron: cd electron npm install # Razvojni način (povezava z delujočim razvojnim strežnikom Next.js): npm run dev # Produkcijski način (uporablja samostojno gradnjo): npm start ``` ### Izdelava namestitvenih programov ```bash cd electron npm run build # Trenutna platforma npm run build:win # Windows (.exe NSIS) npm run build:mac # macOS (.dmg universal) npm run build:linux # Linux (.AppImage) ``` Izhod → `electron/dist-electron/` ### Ključne funkcije | Funkcija | Opis | | -------------------------------- | ------------------------------------------------------------------------------------- | | **Pripravljenost strežnika** | Preverja strežnik, preden prikaže okno (brez praznega zaslona) | | **Sistemska vrstica** | Minimiziranje v sistemsko vrstico, spreminjanje vrat in zapiranje prek menija | | **Upravljanje vrat** | Spreminjanje vrat strežnika iz sistemske vrstice (strežnik se samodejno znova zažene) | | **Pravilnik o varnosti vsebine** | Omejevalni CSP prek glav sej | | **En primerek** | Hkrati se lahko izvaja samo en primerek aplikacije | | **Način brez povezave** | Priloženi strežnik Next.js deluje brez internetne povezave | ### Spremenljivke okolja | Spremenljivka | Privzeto | Opis | | --------------------- | -------- | ------------------------------------- | | `OMNIROUTE_PORT` | `20128` | Vrata strežnika | | `OMNIROUTE_MEMORY_MB` | `512` | Omejitev kopice Node.js (64–16384 MB) | 📖 Celotna dokumentacija: [`electron/README.md`](../../electron/README.md)