# 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)