# User Guide (Yorùbá)
🌐 **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) · 🇸🇮 [sl](../../../sl/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) · 🇨🇳 [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) · 🇸🇮 [sl](../../../sl/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) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md)
Ìtọ́sọ́nà pípé fún ṣíṣètò àwọn olùpèsè, ṣíṣẹ̀dá àwọn combo, ṣíṣepọ̀ àwọn irinṣẹ́ CLI, àti ṣíṣe ìmúṣiṣẹ́ OmniRoute.
---
## Àkójọ Àwọn Àkòrí
- [Àkótán Ìdíyelé](#-pricing-at-a-glance)
- [Àwọn Ọ̀nà Lílo](#-use-cases)
- [Ìṣètò Olùpèsè](#-provider-setup)
- [Ìṣọ̀kan CLI](#-cli-integration)
- [Ìmúṣiṣẹ́](#-deployment)
- [Àwọn Módelì Tó Wà](#-available-models)
- [Àwọn Ẹ̀ya Ìlọsíwájú](#-advanced-features)
- [Ìdarí Aládàáṣe (Kò nílò ìṣètò)](#-auto-routing-zero-config)
- [Ìṣọ̀kan MCP & A2A](#-mcp--a2a-integration)
- [Ètò Àwọn Òye](#-skills-system)
- [Ètò Ìrántí](#-memory-system)
- [Àwọn Webhook](#-webhooks)
- [Àwọn Aṣojú Àwọsánmà](#-cloud-agents)
- [Ìṣàkóso Nípasẹ̀ Ètò](#-programmatic-management)
- [CLI Abẹ́nú](#-internal-cli)
- [Ohun Èlò Orí Kọ̀ǹpútà (Electron)](#-desktop-application-electron)
---
## 💰 Àkótán Ìdíyelé
| Ìpele | Olùpèsè | Iye Owó | Ìtúnṣe Ìpín | Ó Dára Jù Fún |
| -------------------- | ----------------- | --------------- | ------------------------ | ------------------------------ |
| **💳 ÌṢẸ́-ALÁBÀÁPÍN** | Claude Code (Pro) | $20/oṣù | 5h + lọ́sọ̀ọ̀sẹ̀ | Àwọn tó ti ṣe alabapin |
| | Codex (Plus/Pro) | $20-200/oṣù | 5h + lọ́sọ̀ọ̀sẹ̀ | Àwọn olumulo OpenAI |
| | GitHub Copilot | $10-19/oṣù | Lóṣooṣù | Àwọn olumulo GitHub |
| **🔑 KỌ́KỌ́RỌ́ API** | DeepSeek | San gẹ́gẹ́ bí ìlò | Kò sí | Ìrònú tó wọ́pọ̀ |
| | Groq | San gẹ́gẹ́ bí ìlò | Kò sí | Ìmújáde tó yára gan-an |
| | xAI (Grok) | San gẹ́gẹ́ bí ìlò | Kò sí | Ìrònú Grok 4 |
| | Mistral | San gẹ́gẹ́ bí ìlò | Kò sí | Àwọn módelì tí a gbàlejò ní EU |
| | Perplexity | San gẹ́gẹ́ bí ìlò | Kò sí | Tí a fi ìṣàwárí kún |
| | Together AI | San gẹ́gẹ́ bí ìlò | Kò sí | Àwọn módelì orísun-ṣíṣi |
| | Fireworks AI | San gẹ́gẹ́ bí ìlò | Kò sí | Àwọn àwòrán FLUX tó yára |
| | Cerebras | San gẹ́gẹ́ bí ìlò | Kò sí | Iyára ní ìwọ̀n wafer |
| | Cohere | San gẹ́gẹ́ bí ìlò | Kò sí | Command R+ RAG |
| | NVIDIA NIM | San gẹ́gẹ́ bí ìlò | Kò sí | Àwọn módelì ilé-iṣẹ́ |
| | Baidu Qianfan | San gẹ́gẹ́ bí ìlò | Kò sí | Àwọn módelì ERNIE |
| **💰 OLÓWÓ-PỌ́KÚ** | GLM-4.7 | $0.6/1M | Ojoojúmọ́ 10AM | Àfẹ́yìntì oníwọ̀nba |
| | MiniMax M2.1 | $0.2/1M | Àkókò 5-wákàtí tó ń yí | Àṣàyàn tó din owó jù |
| | Kimi K2 | $9/oṣù péré | 10M token/oṣù | Iye owó tó ṣeé sọ tẹ́lẹ̀ |
| **🆓 Ọ̀FẸ́** | Qoder | $0 | Àwọn ààlà olùpèsè ló kan | Ṣàyẹ̀wò àkójọ lọ́wọ́lọ́wọ́ |
| | Kiro | $0 | ~50 kírẹ́díìtì/oṣù | Claude ọ̀fẹ́ |
---
## 🎯 Àwọn Ọ̀nà Lílo
### Ọ̀nà 1: "Mo ní ìṣẹ́-alábàápín Claude Pro"
**Ìṣòro:** Ìpín máa ń dópin láìlò, àwọn ààlà ìwọ̀n lílo sì máa ń dé nígbà kíkọ kóòdù lọ́pọ̀lọpọ̀
```
Àkójọpọ̀: "maximize-claude"
1. cc/claude-opus-4-7 (lo ìṣẹ́-alábàápín náà dé ẹ̀kúnrẹ́rẹ́)
2. glm/glm-4.7 (àfẹ́yìntì olówó-pọ́kú nígbà tí ìpín bá tán)
3. if/qwen3.8-max-preview (àfẹ́yìntì pajawiri ọ̀fẹ́)
Iye owó oṣooṣù: $20 (ìṣẹ́-alábàápín) + ~$5 (àfẹ́yìntì) = $25 lápapọ̀
dípò $20 + kí ààlà lílo dé = ìjákulẹ̀
```
### Ọ̀nà 2: "Mo fẹ́ kí ó jẹ́ ọ̀fẹ́ pátápátá"
**Ìṣòro:** Mi ò lè san owó ìṣẹ́-alábàápín, mo nílò AI tó ṣeé gbẹ́kẹ̀lé fún kíkọ kóòdù
```
Àkójọpọ̀: "zero-cost"
1. if/kimi-k2.7-code (a ṣe àkójọ rẹ̀ gẹ́gẹ́ bí ìwọlé ọ̀fẹ́; àwọn ààlà ìwọ̀n lílo lè kan)
2. kr/qwen3-coder-next (àfẹ́yìntì Kiro ọ̀fẹ́)
Iye owó oṣooṣù: $0
Didára: ṣàyẹ̀wò módelì náà, àwọn ààlà, àṣírí, àti SLA fún ẹrù iṣẹ́ rẹ
```
### Ọ̀nà 3: "Mo nílò kíkọ kóòdù 24/7, láìsí ìdádúró"
**Ìṣòro:** Àwọn ọjọ́ ìparí iṣẹ́, mi ò lè fara da àkókò àìṣiṣẹ́
```
Àkójọpọ̀: "always-on"
1. cc/claude-opus-4-7 (didára tó ga jù)
2. cx/gpt-5.5 (ìṣẹ́-alábàápín kejì)
3. glm/glm-4.7 (olówó-pọ́kú, ó ń tún ara rẹ̀ ṣe lojoojúmọ́)
4. minimax/MiniMax-M2.1 (ó din owó jù, ìtúnṣe 5h)
5. if/deepseek-v4-flash (a ṣe àkójọ rẹ̀ gẹ́gẹ́ bí ìwọlé ọ̀fẹ́; àwọn ààlà ìwọ̀n lílo lè kan)
Àbájáde: Ìpele àfẹ́yìntì 5 ń mú agbára ìfaradà gbòòrò sí i; a kò ṣe ìdánilójú wíwà àwọn iṣẹ́ orísun
Iye owó oṣooṣù: $20-200 (àwọn ìṣẹ́-alábàápín) + $10-20 (àfẹ́yìntì)
```
### Ọ̀nà 4: "Mo fẹ́ AI Ọ̀FẸ́ nínú OpenClaw"
**Ìṣòro:** Mo nílò olùrànlọ́wọ́ AI nínú àwọn ohun èlò ìfìwéránṣẹ́, lọ́fẹ̀ẹ́ pátápátá
```
Àkójọpọ̀: "openclaw-free"
1. if/qwen3.8-max-preview (a ṣe àkójọ rẹ̀ gẹ́gẹ́ bí ìwọlé ọ̀fẹ́; àwọn ààlà ìwọ̀n lílo lè kan)
2. if/deepseek-v4-flash (a ṣe àkójọ rẹ̀ gẹ́gẹ́ bí ìwọlé ọ̀fẹ́; àwọn ààlà ìwọ̀n lílo lè kan)
3. if/kimi-k2.7-code (a ṣe àkójọ rẹ̀ gẹ́gẹ́ bí ìwọlé ọ̀fẹ́; àwọn ààlà ìwọ̀n lílo lè kan)
Iye owó oṣooṣù: $0
Wọlé sí i nípasẹ̀: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
```
---
## 📖 Ìṣètò Olùpèsè
Láti ṣàfikún ọ̀pọ̀ ìsopọ̀ kọ́kọ́rọ́ API lẹ́ẹ̀kan náà láti inú fáìlì CSV tàbí JSON, lo **Pátákó ìṣàkóso → Àwọn Olùpèsè → Gbé wọlé láti inú fáìlì**. Ipò àwọn ọ̀wọ̀n ni a fi ń dá wọn mọ̀ (`provider,name,apiKey,baseUrl,priority`); `provider` gbọ́dọ̀ ti wà tẹ́lẹ̀ gẹ́gẹ́ bí olùpèsè tí a ń ṣàkóso tàbí node tó bá a mu. Wo [Gbé àwọn olùpèsè wọlé láti inú fáìlì CSV tàbí JSON](../providers/CSV-IMPORT.md).
### 🔐 Àwọn Olùpèsè Alabapin
#### Claude Code (Pro/Max)
```bash
Pátákó ìṣàkóso → Àwọn Olùpèsè → So Claude Code pọ̀
→ Wọlé pẹ̀lú OAuth → Ìmúdójúìwọ̀n token aládàáṣe
→ Títọpinpin iye-ààlà wákàtí 5 + ti ọ̀sẹ̀
Àwọn àwòṣe:
cc/claude-opus-4-7
cc/claude-sonnet-4-6
cc/claude-haiku-4-5-20251001
```
**Ìmọ̀ràn Amọ̀ṣẹ́:** Lo Opus fún àwọn iṣẹ́ tó díjú, Sonnet fún iyára. OmniRoute ń tọpinpin iye-ààlà fún àwòṣe kọ̀ọ̀kan!
Kò sí aṣàwákiri lórí ẹ̀rọ tó ń gbàlejò OmniRoute? Ṣiṣe `claude setup-token` ní ibikíbi tí a ti wọlé sí Claude Code, kí o sì lẹ token ọlọ́dún kan náà mọ́ inú taabu **Token Ìṣètò**. Wo [Claude Code pẹ̀lú token ìṣètò](../providers/CLAUDE_CODE_SETUP_TOKEN.md).
Àwọn ipa-ọ̀nà tó bá Claude àti Claude Code mu máa ń pa ìsapá ìrònú `max` mọ́ fún àwọn àwòṣe Opus àti Sonnet. Àwọn àwòṣe Haiku kò gba ipele ìsapá `max`, nítorí náà OmniRoute máa ń sọ ìbéèrè náà kalẹ̀ sí ìnáwó ìrònú gíga kí ó tó fi ránṣẹ́ sí olùpèsè òkè.
#### OpenAI Codex (Plus/Pro)
```bash
Pátákó ìṣàkóso → Àwọn Olùpèsè → So Codex pọ̀
→ Wọlé pẹ̀lú OAuth (port 1455)
→ Àtúntò lẹ́yìn wákàtí 5 + lọ́sọ̀ọ̀sẹ̀
Àwọn àwòṣe:
cx/gpt-5.5
cx/gpt-5.4
cx/gpt-5.3-codex
cx/gpt-5.3-codex-spark
```
#### GitHub Copilot
```bash
Pátákó ìṣàkóso → Àwọn Olùpèsè → So GitHub pọ̀
→ OAuth nípasẹ̀ GitHub
→ Àtúntò oṣooṣù (ọjọ́ kìíní oṣù)
Àwọn àwòṣe:
gh/gpt-5.5
gh/gpt-5.4
gh/claude-sonnet-4.6
gh/claude-opus-4.7
gh/gemini-3.1-pro-preview
```
### 💰 Àwọn Olùpèsè Olówó Pọ́ọ́kú
#### GLM-4.7 (Àtúntò ojoojúmọ́, $0.6/1M)
1. Forúkọsílẹ̀: [Zhipu AI](https://open.bigmodel.cn)
2. Gba kọ́kọ́rọ́ API láti Coding Plan
3. Pátákó ìṣàkóso → Ṣàfikún Kọ́kọ́rọ́ API: Olùpèsè: `glm`, Kọ́kọ́rọ́ API: `your-key`
**Lò ó:** `glm/glm-4.7` — **Ìmọ̀ràn Amọ̀ṣẹ́:** Coding Plan ń fúnni ní iye-ààlà 3× ní 1/7 iye owó! Ó máa ń tún ara rẹ̀ tò ní 10:00 àárọ̀ ojoojúmọ́.
#### MiniMax M2.1 (Àtúntò wákàtí 5, $0.20/1M)
1. Forúkọsílẹ̀: [MiniMax](https://www.minimax.io)
2. Gba kọ́kọ́rọ́ API → Pátákó ìṣàkóso → Ṣàfikún Kọ́kọ́rọ́ API
**Lò ó:** `minimax/MiniMax-M2.1` — **Ìmọ̀ràn Amọ̀ṣẹ́:** Èyí ni àṣàyàn tó din owó jù fún àyíká ọ̀rọ̀ gígùn (token mílíọ̀nù 1)!
#### Kimi K2 ($9/oṣù láìyípadà)
1. Di alabapin: [Moonshot AI](https://platform.kimi.ai?aff=omniroute)
2. Gba kọ́kọ́rọ́ API → Pátákó ìṣàkóso → Ṣàfikún Kọ́kọ́rọ́ API
**Lò ó:** `kimi/kimi-k2.5` — **Ìmọ̀ràn Amọ̀ṣẹ́:** $9/oṣù láìyípadà fún token mílíọ̀nù 10 = iye owó gidi $0.90/1M!
#### Baidu Qianfan / ERNIE
1. Forúkọsílẹ̀: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop)
2. Ṣẹ̀dá kọ́kọ́rọ́ API Qianfan → Pátákó ìṣàkóso → Ṣàfikún Kọ́kọ́rọ́ API: Olùpèsè: `qianfan`
**Lò ó:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1`, tàbí ID àwòṣe Qianfan mìíràn tó bá OpenAI mu.
### 🆓 Àwọn Olùpèsè Ọ̀FẸ́
Àwọn olùpèsè ọ̀fẹ́ tí kò nílò ìfàṣẹ̀sí ní bọ́tìnì ìtan-an/pípa lẹ́gbẹ̀ẹ́ **Kò nílò ìfàṣẹ̀sí** lójú-ìwé olùpèsè wọn.
Pípa á máa mú olùpèsè náà ṣiṣẹ́ mọ́, yóò yọ ọ́ kúrò nínú àwọn ìríran olùpèsè tí a ti ṣètò/ṣókí, yóò sì yọ àwọn àwòṣe rẹ̀ kúrò ní `/v1/models`.
#### Qoder (Àwòṣe Ọ̀FẸ́ 9)
```bash
Pátákó ìṣàkóso → So Qoder pọ̀ → Wọlé pẹ̀lú OAuth → Ìráyè sinmi lórí àwọn ààlà olùpèsè lọ́wọ́lọ́wọ́
Àwọn àwòṣe: 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 Ọ̀FẸ́)
```bash
Pátákó ìṣàkóso → So Kiro pọ̀ → AWS Builder ID tàbí Google/GitHub → ~50 kírẹ́díìtì/oṣù
Àwọn àwòṣe: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
```
---
## 🎨 Àwọn Àkójọpọ̀
O lè tún ìtòlẹ́sẹẹsẹ àwọn káàdì àkójọpọ̀ ṣe ní tààrà nínú **Dashboard → Combos** nípa fífa ohun ìmú káàdì kọ̀ọ̀kan. A máa ń fi ìtòlẹ́sẹẹsẹ náà pamọ́ sínú SQLite, a sì máa ń dá a padà nígbà tí a bá tún kojọpọ̀.
### Àpẹẹrẹ 1: Mú Ìforúkọsílẹ̀ Ga Jù → Àfẹ́yìntì Olówó Pọ́ọ́kú
```
Dashboard → Combos → Create New
Orúkọ: premium-coding
Àwọn Mọ́dẹ́lì:
1. cc/claude-opus-4-7 (Ìforúkọsílẹ̀ àkọ́kọ́)
2. glm/glm-4.7 (Àfẹ́yìntì olówó pọ́ọ́kú, $0.6/1M)
3. minimax/MiniMax-M2.7 (Àṣàyàn ìkẹyìn tó rọrùn jù, $0.3/1M)
Lò nínú CLI: premium-coding
```
### Àpẹẹrẹ 2: Ọ̀fẹ́-Nìkan (Kò Ná Ohunkóhun)
```
Orúkọ: free-combo
Àwọn Mọ́dẹ́lì:
1. if/kimi-k2.7-code (a ṣe àkọsílẹ̀ rẹ̀ pé ó ní ààyè ọ̀fẹ́; àwọn ààlà olùpèsè lè wúlò)
2. kr/qwen3-coder-next (Àfẹ́yìntì ọ̀fẹ́ Kiro)
Iye owó: a ṣe àkọsílẹ̀ rẹ̀ lọ́wọ́lọ́wọ́ bí $0; àwọn òfin àti wíwà-lárọ̀ọ́wọ́tó lè yí padà
```
---
## 🔧 Ìṣọ̀kan CLI
### Cursor IDE
**Lílo Cursor gẹ́gẹ́ bí oníbàárà OmniRoute** (darí ìfọ̀rọ̀wérọ̀ Cursor gba OmniRoute kọjá):
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [láti dashboard omniroute]
Model: cc/claude-opus-4-7
```
**Lílo OmniRoute gẹ́gẹ́ bí olùpèsè Cursor** (OmniRoute ń pe Cursor tó wà lókè): ó dára láti lo
**Dashboard → Providers → Cursor → Login with Cursor**. Nínú Docker, wo
[`docs/providers/CURSOR-DOCKER.md`](../providers/CURSOR-DOCKER.md).
### Claude Code
Ṣàtúnṣe `~/.claude/settings.json`:
```json
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:20128",
"ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key"
}
}
```
Lo endpoint gbòǹgbò tó bá Claude mu níbí. Má ṣe fi `/v1` kún `ANTHROPIC_BASE_URL`.
### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
### OpenClaw
Ṣàtúnṣe `~/.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" }]
}
}
}
}
```
**Tàbí lo Dashboard:** CLI Tools → OpenClaw → Auto-config
### Cline / Continue / RooCode
```
Olùpèsè: OpenAI Compatible
URL Ìpìlẹ̀: http://localhost:20128/v1
Kọ́kọ́rọ́ API: [láti dashboard]
Mọ́dẹ́lì: cc/claude-opus-4-7
```
---
## 🚀 Ìmúṣiṣẹ́
### Fífi npm sí gbogbo ètò (A Dámọ̀ràn)
```bash
npm install -g omniroute
# Ṣẹ̀dá àpò ìṣètò
mkdir -p ~/.omniroute
# Ṣẹ̀dá fáìlì .env (wo .env.example)
cp .env.example ~/.omniroute/.env
# Bẹ̀rẹ̀ olupin
omniroute
# Tàbí pẹ̀lú port àkànṣe:
omniroute --port 3000
```
CLI máa ń kojọpọ̀ `.env` láti `~/.omniroute/.env` tàbí `./.env` láìfọwọ́yí.
### Ipò tray
Bẹ̀rẹ̀ OmniRoute nínú tray ètò:
```bash
omniroute serve --tray
```
Àṣẹ náà máa padà lẹ́yìn tí olupin àti tray bá ti ṣetán.
Olupin náà máa tẹ̀síwájú láìsí terminal.
Ipò tray ń ṣe àtìlẹ́yìn fún macOS, Windows, àti àwọn session Linux aláwòrán. Ipò tray kì í ṣí dashboard láìfọwọ́yí.
Lo àkójọ aṣàyàn tray fún àwọn ìgbésẹ̀ wọ̀nyí:
- Ṣí dashboard.
- Ṣí `/dashboard/logs`.
- Yí ìbẹ̀rẹ̀-láìfọwọ́yí padà.
- Dá OmniRoute dúró.
Má ṣe darapọ̀ `--tray` mọ́ àwọn aṣàyàn wọ̀nyí:
- `--daemon`
- `--log`
- `--no-recovery`
Àwọn ipò wọ̀nyí nílò ìṣàkóso process tó yàtọ̀.
Mú ìbẹ̀rẹ̀ ṣiṣẹ́ ní ìwọlé ẹ̀rọ tó kàn:
```bash
omniroute autostart enable
```
Ìbẹ̀rẹ̀-láìfọwọ́yí máa ń lo ipò tray lórí macOS, Windows, àti àwọn session Linux aláwòrán. Linux tí kò ní ìfihàn máa ń lo iṣẹ́ onílò systemd tó ti wà tẹ́lẹ̀.
Mú ìbẹ̀rẹ̀ nígbà ìwọlé kúrò:
```bash
omniroute autostart disable
```
### Yíyọ Kúrò
Nígbà tí o kò bá nílò OmniRoute mọ́, a pèsè script kíákíá méjì fún yíyọ ọ́ kúrò lọ́nà mímọ́:
| Àṣẹ | Ìgbésẹ̀ |
| ------------------------ | -------------------------------------------------------------------------------- |
| `npm run uninstall` | Yọ app ètò náà kúrò ṣùgbọ́n ó **pa DB àti àwọn ìṣètò rẹ mọ́** sínú `~/.omniroute`. |
| `npm run uninstall:full` | Yọ app náà kúrò, Ó SÌ **pa gbogbo ìṣètò, kọ́kọ́rọ́, àti database rẹ́ pátápátá**. |
> Àkíyèsí: Láti ṣiṣẹ́ àwọn àṣẹ wọ̀nyí, lọ sí àpò iṣẹ́-àkànṣe OmniRoute (tí o bá ṣe clone rẹ̀), kí o sì ṣiṣẹ́ wọn. Ní ọ̀nà míì, tí o bá fi sí gbogbo ètò, o lè ṣiṣẹ́ `npm uninstall -g omniroute` nìkan.
### Ìmúṣiṣẹ́ 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
# Tàbí: pm2 start npm --name omniroute -- start
```
### Ìmúṣiṣẹ́ PM2 (Memory Kékeré)
Fún àwọn olupin tó ní RAM tó ní ààlà, lo aṣàyàn ààlà memory:
```bash
# Pẹ̀lú ààlà 512MB (àkọ́ṣe)
pm2 start npm --name omniroute -- start
# Tàbí pẹ̀lú ààlà memory àkànṣe
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
# Tàbí nípa lílo ecosystem.config.js
pm2 start ecosystem.config.js
```
Ṣẹ̀dá `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
# Kọ image (àkọ́ṣe = runner-cli pẹ̀lú codex/claude/droid tí a ti fi sí tẹ́lẹ̀)
docker build -t omniroute:cli .
# Ipò tó ṣeé gbé kiri (a dámọ̀ràn)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
```
Fún ipò tó darapọ̀ mọ́ host pẹ̀lú àwọn binary CLI, wo apá Docker nínú docs pàtàkì.
### Void Linux (xbps-src)
Àwọn olumulo Void Linux lè ṣe àkójọpọ̀ package OmniRoute kí wọ́n sì fi sí ẹ̀rọ wọn lọ́nà abinibi nípa lílo ìlànà àkójọpọ̀ agbelebu `xbps-src`. Èyí ń ṣe àkójọpọ̀ standalone Node.js àti àwọn binding abinibi `better-sqlite3` tí a nílò láìfọwọ́ṣe.
Wo template xbps-src
```bash
# Fáìlì template fún 'omniroute'
pkgname=omniroute
version=3.8.0
revision=1
hostmakedepends="nodejs python3 make"
depends="openssl"
short_desc="Ẹnu-ọ̀nà AI àgbáyé pẹ̀lú ìdarí ọlọ́gbọ́n fún ọ̀pọ̀ olùpèsè LLM"
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() {
# Ṣe ìdánimọ̀ faaji CPU àfojúsùn fún 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) Fi gbogbo deps sílẹ̀ – fo àwọn script
NODE_ENV=development npm ci --ignore-scripts
# 2) Kọ́ bundle standalone Next.js
npm run build
# 3) Da àwọn ohun èlò static sínú standalone
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) Ṣàkójọpọ̀ binding abinibi 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) Fi binding tí a ṣàkójọpọ̀ sínú bundle standalone
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) Yọ àwọn bundle sharp tí ó jẹ́ ti faaji pàtó kúrò
rm -rf .next/standalone/node_modules/@img
# 7) Da àwọn deps runtime pino tí ìṣàyẹ̀wò static Next.js kò fi sí:
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
# Dènà kí hook lẹ́yìn ìfiṣílẹ̀ má ba à yọ àwọn directory app router Next.js tí ó ṣófo
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
}
```
### Àwọn Àyípadà Àyíká
| Àyípadà | Àkọ́ṣe | Àpèjúwe |
| --------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | `omniroute-default-secret-change-me` | Àṣírí ìfọwọ́sí JWT (**yí i padà ní ìṣelọpọ**) |
| `INITIAL_PASSWORD` | `CHANGEME` | Ọ̀rọ̀ aṣínà fún ìwọlé àkọ́kọ́ |
| `DATA_DIR` | `~/.omniroute` | Àpò-ọ̀nà dátà (db, lílò, àwọn àkọsílẹ̀) |
| `PORT` | àkọ́ṣe framework | Port iṣẹ́ (`20128` nínú àwọn àpẹẹrẹ) |
| `HOSTNAME` | àkọ́ṣe framework | Host ìsopọ̀ (Docker máa ń lo `0.0.0.0` gẹ́gẹ́ bí àkọ́ṣe) |
| `NODE_ENV` | àkọ́ṣe runtime | Ṣètò sí `production` fún ìmúṣiṣẹ́ |
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | URL ìpìlẹ̀ gbogbogbò tí a fi hàn sí dashboard tí server sì lè ráyè sí (ó rọ́pò `BASE_URL` àtijọ́) |
| `NEXT_PUBLIC_CLOUD_URL` | `https://omniroute.dev` | URL ìpìlẹ̀ endpoint fún ìṣiṣẹ́pọ̀ cloud (ó rọ́pò `CLOUD_URL` àtijọ́) |
| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | Àṣírí HMAC fún àwọn kọ́kọ́rọ́ API tí a ṣẹ̀dá |
| `REQUIRE_API_KEY` | `false` | Fi ipa mú lílo kọ́kọ́rọ́ API Bearer lórí `/v1/*` |
| `ALLOW_API_KEY_REVEAL` | `false` | Gba àwọn olùlò dashboard tí a ti jẹ́rìí sí láyè láti fi gbogbo iye kọ́kọ́rọ́ API tí a tọ́jú hàn nígbà ìbéèrè |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | Àkókò ìmúdójúìwọ̀n ní ẹ̀gbẹ́ server fún dátà Provider Limits tí a fi pamọ́ sínú cache; àwọn bọ́tìnì ìmúdójúìwọ̀n UI ṣì ń fa ìṣiṣẹ́pọ̀ afọwọ́ṣe |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | Pa àwọn snapshot SQLite aládàáṣiṣẹ́ ṣáájú kíkọ/import/restore; àwọn backup afọwọ́ṣe ṣì ń ṣiṣẹ́ |
| `APP_LOG_TO_FILE` | `true` | Mú àbájáde àkọsílẹ̀ ohun èlò àti àyẹ̀wò lọ sí disk |
| `AUTH_COOKIE_SECURE` | `false` | Fi ipa mú cookie ìjẹ́rìí `Secure` (lẹ́yìn HTTPS reverse proxy) |
| `CLOUDFLARED_BIN` | kò ṣètò | Lo binary `cloudflared` tó ti wà dípò gbígbàsílẹ̀ tí a ń ṣàkóso |
| `CLOUDFLARED_PROTOCOL` | `http2` | Ọ̀nà ìgbékalẹ̀ fún àwọn Quick Tunnels tí a ń ṣàkóso (`http2`, `quic`, tàbí `auto`) |
| `OMNIROUTE_MEMORY_MB` | `512` | Òpin heap Node.js ní MB |
| `PROMPT_CACHE_MAX_SIZE` | `50` | Iye tó pọ̀ jù fún àwọn àkọọ́lẹ̀ prompt cache |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | Iye tó pọ̀ jù fún àwọn àkọọ́lẹ̀ semantic cache |
Fún àlàyé kíkún nípa àwọn àyípadà ayíká, wo [README](../README.md).
---
## 📊 Àwọn Àwòṣe Tó Wà
Wo gbogbo àwọn àwòṣe tó wà
> A ṣe àkójọ tó wà nísàlẹ̀ láti inú `open-sse/config/providerRegistry.ts` fún v3.8.0. Àwọn katalọ́ọ̀gù awọsánmà (Gemini, OpenRouter, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ) máa ń múṣiṣẹ́pọ̀ ní aládàáṣe — láti rí gbogbo katalọ́ọ̀gù tó wà lọ́wọ́lọ́wọ́, ṣí **Dashboard → Providers → [provider] → Available Models** tàbí pe `GET /api/models/catalog`.
>
> Tí àkójọ tí a kọ sínú olùpèsè kan bá ti yà kúrò nínú èyí tó wà lọ́wọ́lọ́wọ́, lo **Import from /models** lójú ewé yẹn (tàbí mú **Auto-Sync** ṣiṣẹ́) láti fa katalọ́ọ̀gù orísun òkè tó wà lọ́wọ́lọ́wọ́. A fìdí èyí múlẹ̀ nínú v3.8.50 fún LLM7.io (`gemini-3.1-flash-lite`) àti UncloseAI (`solidrust/Hermes-3-Llama-3.1-8B-AWQ`); ìráyè àìlórúkọ Pollinations ṣì ní ààlà láti ọ̀dọ̀ orísun òkè nígbà ìdánwò kan náà.
**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` (+ àwọn ìpele ìsapá: `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/`)** — OAuth Ọ̀FẸ́: lo katalọ́ọ̀gù tó wà lọ́wọ́lọ́wọ́ tí a fi hàn lábẹ́ **Dashboard → Providers → Kiro → Available Models**. Wíwà rẹ̀ sinmi lórí àkọọ́lẹ̀ àti ètò ìsanwó.
**Qoder (`if/`)** — OAuth Ọ̀FẸ́: `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/oṣù ní iye kan ṣoṣo tàbí gẹ́gẹ́ bí ìlò: `kimi/kimi-k2.6`, `kimi/kimi-k2.5`
**DeepSeek (`ds/`)** — kọ́kọ́rọ́ API: `ds/deepseek-v4-pro`, `ds/deepseek-v4-flash`
**Groq (`groq/`)** — Yára gan-an: `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/`)** — Grok abinibi: `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/`)** — A gbàlejò rẹ̀ ní EU: `mistral/mistral-large-latest`, `mistral/mistral-medium-3-5`, `mistral/mistral-small-latest`, `mistral/devstral-latest`, `mistral/codestral-latest`
**Perplexity (`pplx/`)** — Pẹ̀lú ìṣàfikún ìṣàwárí: `pplx/sonar-deep-research`, `pplx/sonar-reasoning-pro`, `pplx/sonar-pro`, `pplx/sonar`
**Together AI (`together/`)** — Orísun-ṣíṣí: `together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` (ọ̀fẹ́), `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/`)** — Ìṣirò ìdáhùn tó yára: `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/`)** — Ìwọ̀n wafer: `cerebras/zai-glm-4.7`, `cerebras/gpt-oss-120b`
**Cohere (`cohere/`)** — Fojú sí 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/`)** — Fún ilé-iṣẹ́: `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/`)**: A máa ń mú un ṣiṣẹ́pọ̀ lọ́wọ́lọ́wọ́ fún kọ́kọ́rọ́ API kọ̀ọ̀kan láti Google — kò sí àkójọ àìyípadà. So kọ́kọ́rọ́ kan pọ̀ ní **Dashboard → Providers**, lẹ́yìn náà lo **Available Models** láti ṣàgbéwọlé katalọ́ọ̀gù tó wà lọ́wọ́lọ́wọ́ (fún àpẹẹrẹ `gemini/gemini-3-pro`, `gemini/gemini-3-flash`).
**Àwọn olùpèsè míì tó bá a mu** (àwọn tí a yàn): `cohere`, `databricks`, `snowflake`, `together`, `vertex`, `alibaba`, `alibaba-cn`, `bedrock` (nípasẹ̀ `aws-bedrock`), `azure-ai`, `openrouter` (katalọ́ọ̀gù àgbéranṣẹ́ tààrà), `siliconflow`, `hyperbolic`, `huggingface`, `featherless-ai`, `cloudflare-ai`, `scaleway`, `deepinfra`, `vercel-ai-gateway`, `bazaarlink`, `friendliai`, `nous-research`, `reka`, `volcengine`, `ai21`, `gigachat`. Ọ̀kọ̀ọ̀kan ń tọ́jú àkójọ àwòṣe tirẹ̀ nínú `providerRegistry.ts`, a sì lè mú un ṣiṣẹ́pọ̀ ní aládàáṣe nígbà tí olùpèsè bá pèsè ojú òpin `/models`.
**Àkíyèsí nípa àwọn ID àwòṣe:** OmniRoute ń lo àwọn ID abinibi olùpèsè (`claude-opus-4-8`, `gpt-5.5`, `glm-5.1`, `MiniMax-M2.7`, `kimi-k2.5`, `grok-4.20-0309-reasoning`). Àwọn ID kan ní àwọn ẹ̀yà nọ́mbà onídọ̀tì nítorí pé bẹ́ẹ̀ ni API orísun òkè ṣe ń retí wọn. Tí àwòṣe kan kò bá sí nínú àkójọ òkè, ṣiṣẹ́ `omniroute models --search ` tàbí lo `GET /api/models/catalog` láti fìdí wíwà rẹ̀ múlẹ̀.
---
## 🧩 Àwọn Ẹ̀ya Ìlọsíwájú
### Àwọn Módẹ́ẹ̀lì Àkànṣe
Ṣàfikún ID módẹ́ẹ̀lì èyíkéyìí sí olupèsè èyíkéyìí láì dúró de ìmúdójúìwọ̀n app:
```bash
# Nípasẹ̀ API
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"}'
# Ṣe àtòjọ: curl http://localhost:20128/api/provider-models?provider=openai
# Yọ kúrò: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2"
```
Tàbí lo Dashboard: **Providers → [Provider] → Custom Models**.
Àwọn àkíyèsí:
- OpenRouter àti àwọn olupèsè tó bá OpenAI/Anthropic mu ni a ń ṣàkóso láti **Available Models** nìkan. Ìṣàfikún afọ́wọ́ṣe, ìgbéwọlé, àti ìmúdójúìwọ̀n aládàáṣiṣẹ́ gbogbo wọn máa ń wọ inú àtòjọ available-model kan náà, nítorí náà kò sí abala Custom Models ọ̀tọ̀ fún àwọn olupèsè wọ̀nyẹn.
- Abala **Custom Models** jẹ́ fún àwọn olupèsè tí kò pèsè ìgbéwọlé available-model tí a ń ṣàkóso.
### Àwọn Olupèsè Àkànṣe Tó Bá OpenAI Mu
Ẹnu-ọ̀nà èyíkéyìí tó ń lo OpenAI API (proxy tí o gbàlejò fúnra rẹ, vLLM, olùṣàkójọpọ̀ ẹnikẹ́ta)
ni a lè ṣàfikún gẹ́gẹ́ bí node olupèsè tirẹ̀:
1. **Providers → Add OpenAI Compatible**.
2. **Name**: àmì ìdánimọ̀ àfihàn fún node náà.
3. **Prefix**: orúkọ ìdarí. Àwọn client máa ń pe àwọn módẹ́ẹ̀lì gẹ́gẹ́ bí `/`, nítorí náà node kan tó ní
prefix `mygw` máa ń pèsè `mygw/gpt-4o-mini`. Ó pọndandan; kò sí ìdènà ohun kikọ.
4. **API Type**: ìdílé endpoint tí ẹnu-ọ̀nà náà ń pèsè (Chat Completions, Responses,
Embeddings, ohùn, àwọn àwòrán).
5. **Base URL**: gbòǹgbò API, títí dé `/v1` tó sì wà pẹ̀lú rẹ̀ (fún àpẹẹrẹ
`https://gateway.example.com/v1`), kì í ṣe path `/chat/completions` kíkún. Àwọn ẹnu-ọ̀nà tó ní
àwọn path tí kì í ṣe àṣà máa ń ṣètò wọn lábẹ́ **Advanced Settings** (chat path, models path).
6. Ààyè **API Key (for Check)** ń dán àsopọ̀ náà wò nìkan. Lẹ́yìn tí o bá ṣẹ̀dá node náà,
ṣí i, kí o sì lo **Add Connection** láti tọ́jú key tí àwọn ìbéèrè yóò lò.
Node náà máa gba id inú ti ìrísí rẹ̀ jẹ́ `openai-compatible--`; o kò ní
ní láti tẹ̀ ẹ́ rí, prefix náà ni orúkọ gbogbogbò.
#### Àwọn prefix tí a fi pamọ́
Prefix kò lè jẹ́ id tàbí alias olupèsè tí a ṣe sínú rẹ̀ (fún àpẹẹrẹ `openai`, `cf`), bẹ́ẹ̀ ni kò lè jẹ́
id olupèsè tí a ti yọ̀ lẹ́nu iṣẹ́. Olùyanjú módẹ́ẹ̀lì máa ń ṣàyẹ̀wò àwọn id àti alias tí a ṣe sínú rẹ̀ ṣáájú
àwọn node àkànṣe, nítorí náà node tó bá lo ọ̀kan lára àwọn prefix wọ̀nyẹn kò ní gba traffic láélá:
`/model` yóò lọ sí olupèsè tí a ṣe sínú rẹ̀ dípò bẹ́ẹ̀, tàbí yóò kọ̀ láìsí àyè míì tí a bá ti
yọ olupèsè náà lẹ́nu iṣẹ́. A máa kọ ìṣẹ̀dá tàbí àtúnṣe node pẹ̀lú irú prefix bẹ́ẹ̀, pẹ̀lú:
```text
prefix: "" jẹ́ prefix olupèsè tí a fi pamọ́ — yan prefix mìíràn (a kò lè lo àwọn id/alias tí a fi pamọ́ fún àwọn node àkànṣe nítorí àwọn ìbéèrè bíi /model máa ń darí sí olupèsè tí a ṣe sínú rẹ̀ tàbí kọ̀ láìsí àyè míì nígbà tí a bá yọ ọ́ lẹ́nu iṣẹ́)
```
Yan prefix tó yàtọ̀ (`mygw`, `acme-proxy`). Bí àwọn ìbéèrè sí node àkànṣe bá kùnà pẹ̀lú
àṣìṣe tó dárúkọ olupèsè tí a ṣe sínú rẹ̀ tàbí àwọn ẹ̀rí ìdánimọ̀ rẹ̀, ṣàyẹ̀wò bóyá prefix node náà jẹ́
èyí tí a fi pamọ́: àwọn node tí a fipamọ́ ṣáájú kí òfin yìí tó wà ṣì wà níbi ìtọ́jú, ṣùgbọ́n prefix wọn máa ń darí sí
olupèsè tí a ṣe sínú rẹ̀. Ṣàtúnṣe node náà, kí o sì fún un ní prefix tuntun.
### Ṣíṣe Àwọn Ẹlẹgbẹ́ OmniRoute Ní Ẹ̀wọ̀n
A lè ṣàfikún ẹnu-ọ̀nà OmniRoute mìíràn gẹ́gẹ́ bí olupèsè **Custom OpenAI-compatible**. Lo
base URL `/v1` ti ẹlẹgbẹ́ náà àti API key aláṣẹ-kékeré tó jẹ́ ti iṣẹ́ yìí nìkan tí ẹlẹgbẹ́ náà pèsè.
Fún àwọn ẹ̀wọ̀n tí ń dáhùn padà sí ara wọn tàbí tó ní ọ̀pọ̀ ìpele, mú ìdènà loop àṣàyàn ṣiṣẹ́ lórí gbogbo ẹnu-ọ̀nà:
```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
```
Àwọn ìbéèrè tí a fi ránṣẹ́ sí URL ẹlẹgbẹ́ tí a fi sínú àtòjọ ìyọ̀ǹda ní kedere nìkan ni yóò gba
header `X-OmniRoute-Peer-Trace`. Ẹnu-ọ̀nà kan máa kọ instance ID tí a tún lò tàbí ìwọ̀n hop
tí ó ti tán pẹ̀lú HTTP `508 Loop Detected`; àwọn olupèsè upstream lasán kì í gba metadata ẹlẹgbẹ́ kankan.
Ṣíṣe àwọn ẹlẹgbẹ́ ní ẹ̀wọ̀n kì í ṣe àdàkọ database tàbí failover host. Ẹnu-ọ̀nà kọ̀ọ̀kan ní state
SQLite, àwọn cache, àwọn counter rate, àti àwọn session tirẹ̀. Lo reverse proxy tí a ń ṣàyẹ̀wò ìlera rẹ̀ tàbí failover client
fún ìwàláàyè active/passive tàbí active/active, kí o má sì gbé database SQLite kan sórí
ọ̀pọ̀ instance OmniRoute tó ń ṣiṣẹ́ ní àkókò kan náà láéláé.
### Àwọn Ọ̀nà Olupèsè Tí A Yà Sọ́tọ̀
Darí àwọn ìbéèrè tààrà sí olupèsè kan pàtó pẹ̀lú ìfàṣẹsí módẹ́ẹ̀lì:
```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
```
A máa ṣàfikún prefix olupèsè náà láìfọwọ́sí bí ó bá sọnù. Àwọn módẹ́ẹ̀lì tí kò bá mu máa dá `400` padà.
### Ìṣètò Proxy Nẹ́tíwọ́ọ̀kì
```bash
# Ṣètò proxy gbogbogbò
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
# Proxy fún olupèsè kọ̀ọ̀kan
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
# Dán proxy wò
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
```
**Ètò ààyò:** Èyí tó jẹ́ ti key pàtó → Èyí tó jẹ́ ti combo pàtó → Èyí tó jẹ́ ti olupèsè pàtó → Gbogbogbò → Environment.
### API Kátálọ́ọ̀gù Módẹ́ẹ̀lì
```bash
curl http://localhost:20128/api/models/catalog
```
Ó máa dá àwọn módẹ́ẹ̀lì tí a pín ní ìṣọ̀kan gẹ́gẹ́ bí olupèsè padà, pẹ̀lú àwọn irú (`chat`, `embedding`, `image`).
### Ìmúdójúìwọ̀n Cloud
- Mú àwọn olupèsè, combo, àti ètò bá ara wọn mu láàárín àwọn ẹ̀rọ
- Ìmúdójúìwọ̀n aládàáṣiṣẹ́ ní abẹ́lẹ̀ pẹ̀lú timeout + fail-fast
- Yan `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` ti ẹ̀gbẹ́ server ní production
### Ojú Eefin Kíákíá Cloudflare
- Ó wà ní **Pátákó → Àwọn Ojú-ìparí** fún Docker àti àwọn ìmúlò tí ẹ ń gbàlejò fúnra yín
- Ó ṣẹ̀dá URL `https://*.trycloudflare.com` fún ìgbà díẹ̀, èyí tí ń darí sí ojú-ìparí `/v1` tó bá OpenAI mu lọ́wọ́lọ́wọ́
- Ìmúṣiṣẹ́ àkọ́kọ́ máa ń fi `cloudflared` sílẹ̀ nígbà tí ó bá pọn dandan nìkan; àwọn ìtunbẹ̀rẹ̀ tó tẹ̀lé máa tún binary tí a ń ṣàkóso náà lò
- Quick Tunnels kì í ṣe àtúnmúpadà láìfọwọ́yí lẹ́yìn tí OmniRoute tàbí container bá tún bẹ̀rẹ̀; tún mú wọn ṣiṣẹ́ láti inú pátákó nígbà tí ó bá yẹ
- Àwọn URL tunnel jẹ́ ti ìgbà díẹ̀, wọ́n sì máa ń yí padà ní gbogbo ìgbà tí o bá dá tunnel dúró/tún bẹ̀rẹ̀ rẹ̀
- Àwọn Quick Tunnels tí a ń ṣàkóso máa ń lo ìgbé-òkè HTTP/2 gẹ́gẹ́ bí àiyipada láti yẹra fún àwọn ìkìlọ̀ buffer QUIC UDP aláriwo nínú àwọn container tí agbára wọn ní ààlà
- Ṣètò `CLOUDFLARED_PROTOCOL=quic` tàbí `auto` bí o bá fẹ́ kọjá àṣàyàn ìgbé-òkè tí a ń ṣàkóso
- Ṣètò `CLOUDFLARED_BIN` bí o bá fẹ́ lo binary `cloudflared` tí a ti fi sílẹ̀ tẹ́lẹ̀ dípò ìgbàsílẹ̀ tí a ń ṣàkóso
- A lè fi àwọn pánẹ́ẹ̀lì Cloudflare Quick Tunnel, Tailscale Funnel, àti ngrok Tunnel hàn tàbí fi wọ́n pamọ́ nínú **Àwọn Ààtò → Ìrísí**. Fífi pánẹ́ẹ̀lì pamọ́ kì í dá tunnel tó ń ṣiṣẹ́ dúró.
### Ọgbọ́n Ìjìnlẹ̀ LLM Gateway (Ìpele 9)
- **Kaṣe Ìtumọ̀** — Máa ń kaṣe àwọn ìdáhùn tí kì í ṣe sísàn, tí temperature=0 láìfọwọ́yí (kọjá rẹ̀ pẹ̀lú `X-OmniRoute-No-Cache: true`)
- **Àìtúndá Ìbéèrè** — Máa ń yọ àwọn ìbéèrè àdáwòkọ kúrò láàárín 5s nípasẹ̀ àkọlé `Idempotency-Key` tàbí `X-Request-Id`
- **Ìtọ́pa Ìlọsíwájú** — Àwọn ìṣẹ̀lẹ̀ SSE `event: progress` tí a lè yàn láti lò nípasẹ̀ àkọlé `X-OmniRoute-Progress: true`
---
### Ibi Ìdánwò Atúmọ̀
Wọlé sí i nípasẹ̀ **Pátákó → Atúmọ̀**. Ṣàtúnṣe àṣìṣe kí o sì wo bí OmniRoute ṣe ń túmọ̀ àwọn ìbéèrè API láàárín àwọn olupèsè.
| Ìpo | Ète |
| ---------------------- | ------------------------------------------------------------------------------------------------ |
| **Ibi Ìdánwò** | Yan àwọn fọ́ọ̀mù orísun/ibi-àfojúsùn, lẹ ìbéèrè kan síbẹ̀, kí o sì rí àbájáde tí a túmọ̀ lẹ́sẹ̀kẹsẹ̀ |
| **Olùdánwò Ìfọ̀rọ̀wérọ̀** | Fi àwọn ìfiránṣẹ́ ìfọ̀rọ̀wérọ̀ aláàyè ránṣẹ́ nípasẹ̀ proxy, kí o sì ṣàyẹ̀wò gbogbo yíyípo ìbéèrè/ìdáhùn |
| **Àga Ìdánwò** | Ṣiṣe àwọn ìdánwò ìdìpọ̀ lórí ọ̀pọ̀ àpapọ̀ fọ́ọ̀mù láti jẹ́rìí pé ìtumọ̀ péye |
| **Alábòójútó Aláàyè** | Wo àwọn ìtumọ̀ ní àkókò gidi bí àwọn ìbéèrè ṣe ń ṣàn gba inú proxy |
**Àwọn ọ̀nà ìlò:**
- Ṣàtúnṣe ìdí tí àpapọ̀ client/olupèsè kan pàtó fi kùnà
- Jẹ́rìí pé àwọn tag ìrònú, àwọn ìpè irinṣẹ́, àti àwọn ìtọ́ni system ni a túmọ̀ lọ́nà tó tọ́
- Fi ìyàtọ̀ fọ́ọ̀mù láàárín àwọn fọ́ọ̀mù OpenAI, Claude, Gemini, àti Responses API wéra
---
### Àwọn Ìlànà Ìdarí Ọ̀nà
Ṣètò rẹ̀ nípasẹ̀ **Pátákó → Àwọn Ààtò → Ìdarí Ọ̀nà**. Pátákó náà ń fi àwọn ìlànà mẹ́fà tí a sábà máa ń lò jù lọ hàn; combos àti auto-router ń ṣe àtìlẹ́yìn fún àkójọpọ̀ tó gbòòrò sí i nínú.
**Àwọn ìlànà tí a lè rí lórí pátákó (ìdarí ọ̀nà ní ìpele account):**
| Ìlànà | Àpèjúwe |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Kún Àkọ́kọ́** | Ó máa ń lo àwọn account ní ìtòlẹ́sẹẹsẹ ààyò — account àkọ́kọ́ máa ń bójú tó gbogbo ìbéèrè títí tí kò fi sí nílẹ̀ mọ́ |
| **Yíyípo Lẹ́sẹẹsẹ** | Ó máa ń yí ká gbogbo àwọn account pẹ̀lú ààlà sticky tí a lè ṣètò (àiyipada: ìpè 3 fún account kọ̀ọ̀kan) |
| **P2C (Agbára Àṣàyàn Méjì)** | Ó yan account 2 láìròtẹ́lẹ̀, ó sì darí sí èyí tó ní ìlera jù — ó máa ń pín ẹrù dọ́gba pẹ̀lú ìmọ̀ nípa ìlera |
| **Láìròtẹ́lẹ̀** | Ó máa ń yan account kan láìròtẹ́lẹ̀ fún ìbéèrè kọ̀ọ̀kan ní lílo Fisher-Yates shuffle |
| **Èyí Tí A Lò Kéré Jù** | Ó máa ń darí sí account tó ní àmì-àkókò `lastUsedAt` tó pẹ́ jù, kí ó lè pín traffic dọ́gba |
| **Ìmúdára Iye Owó** | Ó máa ń darí sí account tó ní iye ààyò tó kéré jù, láti mú kí àwọn olupèsè olówó-pọ́ọ́kú ni a lò |
**Combo ìpele-gíga àti àwọn ìlànà auto** (a lè ṣètò fún combo kọ̀ọ̀kan tàbí nípasẹ̀ àwọn ìpele-ọ̀rọ̀ `auto/*` — wo [AUTO-COMBO.md](../routing/AUTO-COMBO.md)):
- `priority` — ìtòlẹ́sẹẹsẹ líle, kì í ṣe round-robin láé
- `weighted` — pípín traffic ní ìbámu pẹ̀lú àwọn ìwọ̀n fún model kọ̀ọ̀kan
- `fill-first` — lo model àkọ́kọ́ títí yóò fi dé ààlà
- `round-robin` / `strict-random` / `random`
- `p2c` (Agbára Àṣàyàn Méjì)
- `least-used` àti `cost-optimized`
- `auto` — èyí tí àmì ń darí láàárín gbogbo àwọn olùdíje
- `lkgp` (Olupèsè Tó Ṣiṣẹ́ Dáadáa Gbẹ̀yìn) — ó dì mọ́ olupèsè tó ṣàṣeyọrí gbẹ̀yìn, lẹ́yìn náà ó padà sí àwọn òfin
- `context-optimized` — ó yan model tó ní context window òfìfo tó tóbi jù
- `context-relay` — ó so àwọn model tó ní context gígùn pọ̀ fún àwọn ìyípo tó tẹ̀lé
#### Àkọlé Session Sticky Ìta
Fún ìbámu session ìta (fún àpẹẹrẹ, àwọn agent Claude Code/Codex lẹ́yìn àwọn reverse proxy), fi èyí ránṣẹ́:
```http
X-Session-Id: your-session-key
```
OmniRoute tún gba `x_session_id`, ó sì máa dá kọ́kọ́rọ́ session tó wúlò padà nínú `X-OmniRoute-Session-Id`.
Bí o bá lo Nginx, tí o sì ń fi àwọn àkọlé oní-underscore ránṣẹ́, mú èyí ṣiṣẹ́:
```nginx
underscores_in_headers on;
```
#### Àwọn Alias Model Wildcard
Ṣẹ̀dá àwọn pattern wildcard láti tún àwọn orúkọ model darí:
```
Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-6
Pattern: gpt-* → Target: gh/gpt-5.3-codex
```
Àwọn wildcard ń ṣe àtìlẹ́yìn fún `*` (àwọn àmì èyíkéyìí) àti `?` (àmì kan ṣoṣo).
#### Àwọn Ẹ̀wọ̀n Fallback
Ṣàlàyé àwọn ẹ̀wọ̀n fallback àgbáyé tí ó kan gbogbo ìbéèrè:
```
Chain: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.3-codex
3. glm/glm-4.7
```
---
### Àwọn Àpapọ̀ Olupèsè Tí Ó Wọ́pọ̀ & Àwọn Àpẹẹrẹ Ìdarí Ọ̀nà
Àwọn àpẹẹrẹ fún pípò ọ̀pọ̀ olupèsè pọ̀ àti dídarí ọ̀nà láàárín wọn nínú OmniRoute rèé:
#### 1. Combo Agent Kíkọ Kóòdù: Ìrònú Ìpele-Gíga pẹ̀lú Fallback Iye Owó/Ìyára
Ó dára fún àwọn agent kíkọ kóòdù (OpenCode, Claude Code, Cursor, Cline). Ní àkọ́kọ́, ó máa ń darí sí àwọn model ìrònú tó ti ní ìlọsíwájú jù lọ, ó sì máa ń padà sí àwọn model kíkọ kóòdù tó yára nígbà tí quota bá tán tàbí tí àṣìṣe bá ṣẹlẹ̀.
- **Pátákó**: Combos → Combo Tuntun → Orúkọ: `agent-coding` → Ìlànà: `Priority`
- **Àwọn Model**:
1. `claude/claude-sonnet-4-6` (Agent kíkọ kóòdù àkọ́kọ́)
2. `openai/gpt-4o` (Fallback kejì tó ní agbára gíga)
3. `deepseek/deepseek-v4-flash` (Fallback tó ní ìmúlò-gíga, tí iye owó rẹ̀ sì bọ́gbọ́n mu)
```bash
# Àpẹẹrẹ nípasẹ̀ API
curl -X POST http://localhost:20128/api/combos \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "agent-coding",
"strategy": "priority",
"models": [
{ "model": "claude/claude-sonnet-4-6" },
{ "model": "openai/gpt-4o" },
{ "model": "deepseek/deepseek-v4-flash" }
]
}'
```
#### 2. Àkójọpọ̀ Ìyípadà Aládàáṣiṣẹ́ ti Ìpele Ọ̀fẹ́
Ó so ọ̀pọ̀ olùpèsè ìpele-ọ̀fẹ́ àti àwọn olùpèsè tí kò nílò kọ́kọ́rọ́ pọ̀ láti mú àkókò ìṣiṣẹ́ pọ̀ sí i láìsí iye owó API.
- **Ọgbọ́n**: `Least Used` tàbí `Round Robin` (ń pín ẹrù káàkiri àwọn ìpín)
- **Àwọn Móṣe**:
1. `groq/llama-3.3-70b-versatile`
2. `gemini/gemini-2.5-flash`
3. `cerebras/gpt-oss-120b`
```bash
# Àpẹẹrẹ nípasẹ̀ CLI
omniroute combo create free-stack \
--models "groq/llama-3.3-70b-versatile,gemini/gemini-2.5-flash,cerebras/gpt-oss-120b" \
--strategy round-robin
```
#### 3. Pípẹ̀lú Ọ̀pọ̀ Irú Ìgbéwọlé / Ìlànà Ìríran & Ọ̀rọ̀
Ṣíṣe àpapọ̀ àwọn móṣe ìríran amọ̀ja pẹ̀lú ìṣẹ̀dá ọ̀rọ̀ tó yára fún àwọn ìṣàn iṣẹ́ tó kan òye àwòrán àti ìṣẹ̀dá kóòdù.
- **Àpẹẹrẹ**: Àkójọpọ̀ `Priority` kan tó kọ́kọ́ ṣàkọsílẹ̀ àwọn móṣe tó lè ṣiṣẹ́ pẹ̀lú ìríran, tó sì fi móṣe ọ̀rọ̀/kóòdù alágbára-gíga sí ìkẹyìn.
- **Àwọn Móṣe**:
1. `gemini/gemini-2.5-pro` (Òye àwòrán/ọ̀pọ̀-irú ìgbéwọlé tó lágbára)
2. `openai/gpt-4o` (Ìríran àti lílo irinṣẹ́ tó dọ́gba)
3. `deepseek/deepseek-v4-flash` (Ìṣẹ̀dá ọ̀rọ̀/kóòdù)
---
### Ìfaradà & Àwọn Olùdáwọ́lé Àyíká
Ṣètò rẹ̀ nípasẹ̀ **Dashboard → Settings → Resilience**.
OmniRoute ń ṣe ìmúlò ìfaradà ní ìpele olùpèsè pẹ̀lú àwọn èròjà márùn-ún:
1. **Ìlà Ìbéèrè & Ìṣètò Ìyára** — Ṣíṣe àtúnṣe ìbéèrè ní ìpele ètò:
- **Àwọn Ìbéèrè Fún Ìṣẹ́jú Kan (RPM)** — Iye ìbéèrè tó pọ̀ jù lọ fún ìṣẹ́jú kan lórí àkọọ́lẹ̀ kọ̀ọ̀kan
- **Àkókò Kéré Jù Lọ Láàárín Àwọn Ìbéèrè** — Àlàfo tó kéré jù lọ ní millisecond láàárín àwọn ìbéèrè
- **Àwọn Ìbéèrè Ìgbà-Kan-Náà Tó Pọ̀ Jù Lọ** — Iye ìbéèrè tó pọ̀ jù lọ tó lè ṣiṣẹ́ lẹ́ẹ̀kan náà lórí àkọọ́lẹ̀ kọ̀ọ̀kan
2. **Àkókò Ìsinmi Ìsopọ̀** — Ìṣètò fún irú ìfàṣẹsí kọ̀ọ̀kan lórí ìsopọ̀ kan lẹ́yìn àwọn ìkùnà tí a lè tún gbìyànjú:
- **Àkókò Ìsinmi Ìpìlẹ̀** — Àkókò ìsinmi àkọ́kọ́ fún àwọn ìkùnà olùpèsè òkè tí a lè tún gbìyànjú
- **Lo Àwọn Àmì Ìtọ́nisọ́nà Àtúngbìyànjú Láti Ọ̀dọ̀ Olùpèsè Òkè** — Tẹ̀lé `Retry-After` tó ṣeé gbẹ́kẹ̀lé tàbí àwọn àmì ìtọ́nisọ́nà àtúntò nígbà tí a bá pèsè wọn
- **Àwọn Ìpele Ìdádúró Tó Pọ̀ Jù Lọ** — Ìpele ìdádúró tó ń pọ̀ sí i tó ga jù lọ fún àwọn ìkùnà tó ń ṣẹlẹ̀ léraléra
3. **Olùdáwọ́lé Àyíká Olùpèsè** — Ń tọpinpin àwọn ìkùnà olùpèsè láti ìbẹ̀rẹ̀ dé òpin, ń samì sí olùpèsè kan gẹ́gẹ́ bí ẹni tí iṣẹ́ rẹ̀ ti dín kù nígbà tí ó bá dé òpin ìkìlọ̀ tí a ṣètò, ó sì ń ṣí olùdáwọ́lé náà nígbà tí ó bá dé òpin ìkùnà tí a ṣètò:
- **Òpin Ìdínkù Iṣẹ́** — Àwọn ìkùnà olùpèsè tó tẹ̀ lé ara wọn kí ó tó wọ `DEGRADED`
- **Òpin Ìkùnà** — Àwọn ìkùnà olùpèsè tó tẹ̀ lé ara wọn kí ó tó wọ `OPEN`
- **Àkókò Àtúntò** — Àkókò tí a ó dúró kí a tó dán olùpèsè náà wò lẹ́ẹ̀kan sí i
- **CLOSED** (Ní Ìlera) — Àwọn ìbéèrè ń ṣàn lọ bí ó ṣe yẹ
- **DEGRADED** — Àwọn ìbéèrè ṣì ń ṣàn lọ nígbà tí a ń tọpinpin àwọn ìkùnà tó pọ̀ sí i
- **OPEN** — A ti dènà olùpèsè náà fún ìgbà díẹ̀ lẹ́yìn àwọn ìkùnà tó ṣẹlẹ̀ léraléra
- **HALF_OPEN** — Ṣíṣe àyẹ̀wò bóyá olùpèsè náà ti padà bọ̀ sípò
Àwọn ìdíwọ̀n oṣùwọ̀n `429` tó jẹ mọ́ ìsopọ̀ yóò dúró sínú **Àkókò Ìsinmi Ìsopọ̀**, wọn kò sì ní kà sí olùdáwọ́lé olùpèsè.
Ipò ìṣiṣẹ́ olùdáwọ́lé olùpèsè hàn lórí **Dashboard → Health** nìkan.
4. **Dúró De Àkókò Ìsinmi** — Tí gbogbo ìsopọ̀ tí a lè yàn bá ti wà ní àkókò ìsinmi, OmniRoute lè dúró de èyí tí àkókò ìsinmi rẹ̀ yóò kọ́kọ́ parí, kí ó sì tún ìbéèrè oníbàárà kan náà gbìyànjú láìfọwọ́ṣe.
5. **Ìṣàwárí Aládàáṣiṣẹ́ ti Ìdíwọ̀n Oṣùwọ̀n** — Nígbà tí àwọn olùpèsè òkè bá dá àwọn àkókò ìdúró pàtó padà, àwọn àmì ìtọ́nisọ́nà wọ̀nyẹn yóò borí àkókò ìsinmi ìsopọ̀ agbègbè nígbà tí a bá ti mú ètò náà ṣiṣẹ́.
**Ìmọ̀ràn Ọ̀jọ̀gbọ́n:** Lo ojú-ewé **Health** láti ṣàyẹ̀wò àti láti tún àwọn olùdáwọ́lé olùpèsè tó ń ṣiṣẹ́ ṣe lẹ́yìn ìjáwọ́ iṣẹ́. Ojú-ewé Resilience ń yí ìṣètò padà nìkan.
---
### Gbigbe Àkójọ Dátà Jáde / Wọlé
Ṣàkóso àwọn àfẹ́yìntì àkójọ dátà ní **Dashboard → Settings → System & Storage**.
| Ìgbésẹ̀ | Àpèjúwe |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Gbé Àkójọ Dátà Jáde** | Ṣe ìgbàsílẹ̀ àkójọ dátà SQLite lọ́wọ́lọ́wọ́ gẹ́gẹ́ bí fáìlì `.sqlite` |
| **Gbé Gbogbo Rẹ̀ Jáde (.tar.gz)** | Ṣe ìgbàsílẹ̀ àpò àfẹ́yìntì kíkún tó ní: àkójọ dátà, àwọn ìṣètò, àwọn àkójọpọ̀, àwọn ìsopọ̀ olùpèsè (láìsí àwọn ẹ̀rí ìwọlé), metadata kọ́kọ́rọ́ API |
| **Gbé Àkójọ Dátà Wọlé** | Ṣàgbérù fáìlì `.sqlite` kan láti rọ́pò àkójọ dátà lọ́wọ́lọ́wọ́. A ó dá àfẹ́yìntì ṣáájú ìgbéwọlé sílẹ̀ láìfọwọ́ṣe àyàfi tí `DISABLE_SQLITE_AUTO_BACKUP=true` |
```bash
# API: Gbé àkójọ dátà jáde
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
# API: Gbé gbogbo rẹ̀ jáde (àpò kíkún)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
# API: Gbé àkójọ dátà wọlé
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
```
**Ìfọwọ́sí Ìgbéwọlé:** A ń fọwọ́sí fáìlì tí a gbé wọlé fún ìdúróṣinṣin (àyẹ̀wò pragma SQLite), àwọn tábìlì tí a nílò (`provider_connections`, `provider_nodes`, `combos`, `api_keys`), àti ìwọ̀n (tó pọ̀ jù lọ 100MB).
**Àwọn Ìlò:**
- Gbé OmniRoute láti ẹ̀rọ kan sí òmíràn
- Ṣẹ̀dá àwọn àfẹ́yìntì òde fún ìmúpadàbọ̀sípò lẹ́yìn àjálù
- Pín àwọn ìṣètò láàárín àwọn ọmọ ẹgbẹ́ (gbé gbogbo rẹ̀ jáde → pín àpò náà)
---
### Pátákó Ìṣètò
A ṣètò ojú-ewé ìṣètò sí **taabu 7** fún ìlọ kiri tó rọrùn:
| Táàbù | Àwọn àkóónú |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Gbogbogbò** | Àwọn irinṣẹ́ ìpamọ́ ètò, ìhùwàsí àìyípadà, híríhírí oju eefin Endpoint |
| **Ìrísí** | Àwọn ìṣàkóso àkòrí (ìmọ́lẹ̀/òkùnkùn/ètò), híríhírí àkójọ ẹ̀gbẹ́, àwọn àsàyàn pánẹ́ẹ̀lì fún àwọn káàdì oju eefin Cloudflare/Tailscale/ngrok |
| **AI** | Ìwọ̀n ìrònú (passthrough / auto-strip / custom / adaptive — wo [THINKING_BUDGET.md](./THINKING_BUDGET.md)), ìtọ́ni ètò àgbáyé, àwọn ìṣirò cache ìtọ́ni |
| **Ààbò** | Àwọn ètò Ìwọlé/Ọ̀rọ̀ aṣínà, Ìṣàkóso Ìráyè IP, ìfàṣẹ̀sí API fún `/models`, Dídènà Olùpèsè, àti olùṣọ́ ìfàbọ̀-ìtọ́ni |
| **Ìdarí ọ̀nà** | Ìlànà ìdarí ọ̀nà àgbáyé (Fill First / Round Robin / P2C / Random / Least Used / Cost Optimized), àwọn orúkọ àpèjúwe awoṣe wildcard, àwọn ẹ̀wọ̀n fallback, àwọn àìyípadà combo |
| **Ìfaradà** | Ìlà ìbéèrè, àkókò ìtútù àsopọ̀, àtòpọ̀ provider breaker, àti ìhùwàsí dídúró-fún-ìtútù |
| **Ìlọsíwájú** | Àtòpọ̀ proxy àgbáyé (HTTP/SOCKS5), àwọn ìyípadà proxy olùpèsè-kọ̀ọ̀kan |
Gbogbogbò kò tún ṣe àdàkọ àwọn àkíyèsí logging àti cache tí a lè kà nìkan mọ́. Àwọn ètò ìpamọ́ àti
ìṣàtúnṣe database ni a ń tọ́jú nípasẹ̀ `/api/settings/database`; fífi ọwọ́ pa cache rẹ́ ń lo
`DELETE /api/cache`. `CALL_LOGS_TABLE_MAX_ROWS` àti `PROXY_LOGS_TABLE_MAX_ROWS` ni
wọ́n ń ṣàkóso iye tó pọ̀ jù ti àwọn ìlà nínú request log àti proxy log.
---
### Ìṣàkóso Iye Owó & Ìnáwó
Wọlé sí i nípasẹ̀ **Dashboard → Costs**.
| Táàbù | Ète |
| ----------- | ------------------------------------------------------------------------------------------------------- |
| **Ìnáwó** | Ṣètò ààlà ìnáwó fún kọ́kọ́rọ́ API kọ̀ọ̀kan pẹ̀lú ìnáwó ojoojúmọ́/ọ̀sọ̀ọ̀sẹ̀/oṣooṣù àti ìtọ́pasẹ̀ ní àkókò gidi |
| **Ìdíyelé** | Wo kí o sì ṣàtúnṣe àwọn àkọsílẹ̀ ìdíyelé awoṣe — iye owó fún 1K token àbáwọlé/àbájáde fún olùpèsè kọ̀ọ̀kan |
```bash
# API: Ṣètò ìnáwó kan
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
# API: Gba ipò ìnáwó lọ́wọ́lọ́wọ́
curl http://localhost:20128/api/usage/budget
```
**Ìtọ́pasẹ̀ Iye Owó:** Ìbéèrè kọ̀ọ̀kan ń ṣàkọsílẹ̀ lílo token, ó sì ń ṣírò iye owó ní lílo tábìlì ìdíyelé. Wo àwọn ìpínsísọ́tọ̀ ní **Dashboard → Usage** gẹ́gẹ́ bí olùpèsè, awoṣe, àti kọ́kọ́rọ́ API.
---
### Ìkọsílẹ̀ Ọ̀rọ̀ Ohùn
OmniRoute ṣe àtìlẹ́yìn fún ìkọsílẹ̀ ọ̀rọ̀ ohùn nípasẹ̀ endpoint tó bá OpenAI mu:
```bash
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
# Àpẹẹrẹ pẹ̀lú 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` ni ọ̀nà Deepgram abinibi, ó sì nílò kọ́kọ́rọ́ API Deepgram kan.
Tí OpenRouter nìkan bá ni a ti tò, lo `openrouter/deepgram/nova-3`.
Àwọn olùpèsè **Ọ̀rọ̀-sí-Àkọsílẹ̀ (ìkọsílẹ̀ ọ̀rọ̀)**:
- `openai/` (ó bá whisper mu)
- `groq/` (Groq Whisper Turbo)
- `deepgram/` (ìdílé Nova)
- `assemblyai/`
- `nvidia/` (Parakeet, Canary)
- `huggingface/` (àwọn ẹ̀yà whisper)
- `qwen/`
Àwọn olùpèsè **Àkọsílẹ̀-sí-Ọ̀rọ̀ (`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/`
Àwọn fọ́ọ̀mù ohun tí a ṣe àtìlẹ́yìn fún ìkọsílẹ̀ ọ̀rọ̀: `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`. Àwọn fọ́ọ̀mù àbájáde TTS sinmi lórí olùpèsè (mp3, wav, opus, pcm, mulaw).
---
### Àwọn Ìlànà Ìwọ̀ntúnwọ̀nsì Combo
Ṣètò ìwọ̀ntúnwọ̀nsì combo kọ̀ọ̀kan ní **Dashboard → Combos → Create/Edit → Strategy**.
| Ìlànà | Àpèjúwe |
| ------------------ | ---------------------------------------------------------------------------------- |
| **Round-Robin** | Ń yí ká láàrín àwọn awoṣe ní ọ̀kọ̀ọ̀kan |
| **Priority** | Ń gbìyànjú awoṣe àkọ́kọ́ ní gbogbo ìgbà; ó máa ń lo fallback nígbà àṣìṣe nìkan |
| **Random** | Ń yan awoṣe kan láìròtẹ́lẹ̀ láti inú combo fún ìbéèrè kọ̀ọ̀kan |
| **Weighted** | Ń darí ọ̀nà ní ìbámu pẹ̀lú ìwọ̀n tí a fi fún awoṣe kọ̀ọ̀kan |
| **Least-Used** | Ń darí ọ̀nà sí awoṣe tí ó ní àwọn ìbéèrè àìpẹ́ díẹ̀ jù lọ (ó ń lo àwọn metrics combo) |
| **Cost-Optimized** | Ń darí ọ̀nà sí awoṣe tó rọrùn jù lọ tí ó wà (ó ń lo tábìlì ìdíyelé) |
A lè ṣètò àwọn àìyípadà combo àgbáyé ní **Dashboard → Settings → Routing → Combo Defaults**.
Àwọn timeout ibi-afẹ́ combo máa ń jogún timeout ìbéèrè lọ́wọ́lọ́wọ́ gẹ́gẹ́ bí àìyípadà. Lo **Target timeout
(seconds)** lórí àwọn àìyípadà combo tàbí combo kan ṣoṣo nígbà tí ààlà ibi-afẹ́ kọ̀ọ̀kan tó kúrú sí i bá yẹ
kí ó fa fallback yára sí i.
Àwọn ìṣàtúnṣe combo aláìláìpẹ́ jẹ́ ohun tí a gbọ́dọ̀ yàn láti mú ṣiṣẹ́. Fi **Zero-latency optimizations** sílẹ̀ ní pípa láti
dènà àwọn ẹ̀yà latency wọ̀nyí láti fi àwọn ibi-afẹ́ fallback dije, láti fo àwọn ibi-afẹ́ nítorí ìtàn TTFT,
tàbí láti fún àwọn ìbéèrè fallback pọ̀; mímú un ṣiṣẹ́ ń jẹ́ kí hedging tí a tò, àwọn fífo TTFT àsọtẹ́lẹ̀,
àti ìfúnpọ̀ fallback ṣáájú lè fi ìṣòtítọ́ ìdarí ọ̀nà/ìbéèrè pààrọ̀ fún latency ìpẹ̀kun tó kéré sí i.
Pa **ìfipamọ́ tóókì Ìrònú** tí àwọn olupèsè ìpele-òkè bá nílò ààlà `max_tokens` / `maxOutputTokens` tó muna. Nígbà tí a bá mú un ṣiṣẹ́, ìdarí combo yóò ṣàfikún ààyè ìrònú sí àwọn awoṣe tó ní ààlà àbájáde tí a mọ̀ nìkan, yóò sì fi ààlà tóókì oníbàárà sílẹ̀ láìyípadà tí iye ìfipamọ́ tó ní ààbò bá máa kọjá ààlà náà. Tí ààlà oníbàárà bá ti ga ju ààlà tí a mọ̀ lọ, OmniRoute yóò dín un kù sí ààlà náà kí ó tó fi ìbéèrè ránṣẹ́ sí olupèsè ìpele-òkè.
---
### Pátákó Ìlera
Wọlé sí i nípasẹ̀ **Dashboard → Health**. Àkótán ìlera ètò ní àkókò gidi pẹ̀lú káàdì 6:
| Káàdì | Ohun Tó Ń Ṣàfihàn |
| ------------------------ | ------------------------------------------------------------------- |
| **Ipò Ètò** | Àkókò tí ètò ti ń ṣiṣẹ́, ẹ̀yà, lílo ìrántí, àpótí ìpamọ́ dátà |
| **Ìlera Olupèsè** | Ipò iṣiṣẹ́ olùdádúró àyíká olupèsè àgbáyé |
| **Àwọn Ààlà Ìbéèrè** | Àwọn ìsinmi ìsopọ̀ tó ń ṣiṣẹ́ fún àkọọ́lẹ̀ kọ̀ọ̀kan pẹ̀lú àkókò tó kù |
| **Àwọn Ìdènà Tó Ń Ṣiṣẹ́** | Àwọn ìdènà tó dá lórí awoṣe tó ń ṣiṣẹ́ àti àwọn ìyọkúrò fún ìgbà díẹ̀ |
| **Kaṣe Ìfọwọ́sí** | Ìṣirò kaṣe ìmúkúrò-àdáwòkọ (àwọn kọ́kọ́rọ́ tó ń ṣiṣẹ́, ìwọ̀n àṣeyọrí) |
| **Tẹlifíṣọ̀nù Ìdádúró** | Àkójọpọ̀ ìdádúró p50/p95/p99 fún olupèsè kọ̀ọ̀kan |
**Ìmọ̀ràn Akọ́ṣẹ́mọṣẹ́:** Ojú-ìwé Health máa ń sọ ara rẹ̀ dọ̀tun ní gbogbo ìṣẹ́jú-àáyá 10. Lo káàdì olùdádúró àyíká láti mọ àwọn olupèsè tí wọ́n ń ní ìṣòro.
---
## 🤖 Ìdarí Aládàáṣiṣẹ́ (Àìní-àtúnṣe)
OmniRoute ní **olùdarí aládàáṣiṣẹ́ tí ìṣírò-ààmì ń darí**, èyí tí ń yan model tó dára jù fún ìbéèrè kọ̀ọ̀kan láàárín gbogbo provider tí a ti sopọ̀ — kò sí combo kankan láti máa bójú tó. Kàn fi ìbéèrè náà ránṣẹ́ pẹ̀lú ọ̀kan lára àwọn prefix `auto/*`, OmniRoute yóò sì ṣẹ̀dá combo àfojúrí lẹ́sẹ̀kẹsẹ̀, nípa fífún àwọn olùdíje ní ààmì lórí latency, iye owó, ìwọ̀n àṣeyọrí, bí context ṣe bá a mu, bí model ṣe yẹ fún iṣẹ́ náà, àwọn ìkùnà àìpẹ́, quota, àti ipò circuit-breaker.
| Prefix | Ohun tí ó ń mú dára sí i |
| -------------- | ------------------------------------------------------------------------------------------------- |
| `auto` | Ìwọ̀ntúnwọ̀nsì àiyípadà (latency × iye owó × ìwọ̀n àṣeyọrí) |
| `auto/coding` | Àwọn iṣẹ́ coding: ó fẹ́ràn Claude, GPT-5, GLM, Kimi, Qwen Coder, àwọn coder DeepSeek |
| `auto/cheap` | $/token tó kéré jù, ó gba latency tó ga sí i |
| `auto/fast` | Latency tó kéré jù, kò ka iye owó sí |
| `auto/offline` | Àwọn provider abẹ́lé nìkan (Ollama, vLLM, llama.cpp) — ó wúlò fún àwọn ètò air-gapped |
| `auto/smart` | Didára ìrònú ló ṣe pàtàkì jù (Opus, GPT-5 xhigh, R1, ìrònú GLM 5.1) |
| `auto/lkgp` | "Provider Rere Tí A Mọ̀ Kẹ́yìn" — ó dì mọ́ provider tó ṣàṣeyọrí kẹ́yìn, lẹ́yìn náà ó padà sí àwọn òfin |
Àpẹẹrẹ:
```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": "Refactor this Python function" }],
"stream": true
}'
```
A ṣàlàyé olùdarí aládàáṣiṣẹ́ náà ní kíkún nínú [AUTO-COMBO.md](../routing/AUTO-COMBO.md) — pẹ̀lú bí a ṣe lè ṣàtúnṣe àwọn ìwọ̀n fífún-ààmì, fi àwọn provider sínú àtòjọ-dúdú, àti ṣàyẹ̀wò àwọn ìpinnu ìdarí nínú **Dashboard → Auto Combo**.
---
## 🔌 Ìṣọ̀kan MCP & A2A
OmniRoute jẹ́ **server MCP** (Model Context Protocol) àti **server A2A** (Agent-to-Agent JSON-RPC 2.0). IDE tàbí ibi ìgbàlejò agent èyíkéyìí tó bá MCP mu lè pe àwọn irinṣẹ́ OmniRoute ní tààrà — kò nílò wrapper àfikún.
### Àwọn ọ̀nà ìgbékalẹ̀ MCP
- **SSE**: `http://localhost:20128/api/mcp/sse`
- **HTTP tí a lè ṣàn**: `http://localhost:20128/api/mcp/stream`
- **stdio**: `omniroute --mcp` (fún àwọn plugin IDE tí ó fẹ́ràn stdio)
### So Claude Desktop pọ̀
Ṣàtúnṣe `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) tàbí èyí tó bá a dọ́gba lórí Windows/Linux:
```json
{
"mcpServers": {
"omniroute": {
"command": "omniroute",
"args": ["--mcp"]
}
}
}
```
### So Cursor / Continue / VS Code MCP pọ̀
Lo URL SSE `http://localhost:20128/api/mcp/sse` àti kọ́kọ́rọ́ API Bearer tí a ṣẹ̀dá nínú **Dashboard → API Keys**.
### Àwọn ààlà-àṣẹ
MCP ń ṣàlàyé àwọn ààlà-àṣẹ 32 tí a dárúkọ lọ́wọ́lọ́wọ́. A lè fi kọ́kọ́rọ́ Bearer kọ̀ọ̀kan mọ́ àwọn ààlà-àṣẹ pàtó — wo [MCP-SERVER.md](../frameworks/MCP-SERVER.md) fún àkójọ àṣẹ àti irinṣẹ́ tó jẹ́ ìtọ́kasí pàtàkì, àti [A2A-SERVER.md](../frameworks/A2A-SERVER.md) fún schema JSON-RPC.
---
## 🧠 Ètò Àwọn Ọgbọ́n
OmniRoute ń pèsè **ìlànà ọgbọ́n** tí a lè mú gbòòrò sí i (`src/lib/skills/`) kí àwọn aṣojú àti endpoint A2A lè ṣiṣẹ́ àwọn ìlànà tó jẹ́ ti ẹ̀ka pàtó (fún àpẹẹrẹ `code-review`, `summarize`, `extract-facts`, `web-research`).
- **Ìrísí Marketplace** — Ṣàwárí kí o sì fi àwọn ọgbọ́n sílẹ̀ láti **Dashboard → Skills**
- **Àwọn scope fún kọ́kọ́rọ́ kọ̀ọ̀kan** — Dín àwọn ọgbọ́n tí kọ́kọ́rọ́ API kọ̀ọ̀kan lè pè lò kù
- **Àwọn ọgbọ́n àdáni** — Fi fáìlì TypeScript kan sínú `src/lib/a2a/skills/`, forúkọ rẹ̀ sílẹ̀, yóò sì lè jẹ́ pípè lẹ́sẹ̀kẹsẹ̀ lórí A2A
Ìtọ́kasí kíkún: [SKILLS.md](../frameworks/SKILLS.md).
---
## 💾 Ètò Ìrántí
OmniRoute ń tọ́jú **ìrántí ìjíròrò fún ìgbà pípẹ́** pẹ̀lú ìṣàwárí àdàpọ̀:
- **SQLite FTS5** fún wíwá ọ̀rọ̀ pàtàkì láàárín àwọn ìjíròrò àtijọ́
- **Ibi ìtọ́jú vector Qdrant** (àṣàyàn) fún ìrántí ìtumọ̀
- **Yíyọ òtítọ́ jáde láìfọwọ́ṣe** — a máa ń ṣe àkótán àwọn entity, ohun tí a fẹ́ràn, àti àwọn ìpinnu lẹ́yìn session kọ̀ọ̀kan, a ó sì tọ́jú wọn sínú tábìlì `memory_facts`
- A máa ń pín àwọn ìrántí ní ìbámu pẹ̀lú kọ́kọ́rọ́ API kọ̀ọ̀kan àti session kọ̀ọ̀kan
Ṣàkóso àwọn ìrántí ní **Dashboard → Memory** (wá, ṣàtúnṣe, gbé jáde, pa rẹ́ ráúráú). Ojú-ọ̀nà HTTP (`/api/memory/*`) ń jẹ́ kí àwọn aṣojú fi àwọn òtítọ́ ránṣẹ́ kí wọ́n sì béèrè wọn nípasẹ̀ ètò — wo [MEMORY.md](../frameworks/MEMORY.md).
---
## 🔔 Webhooks
Forúkọ sílẹ̀ fún àwọn ìṣẹ̀lẹ̀ OmniRoute láti ṣe àbójútó àti ìmúṣẹ aládàáṣiṣẹ́ ní àkókò gidi.
- Ṣẹ̀dá webhook kan ní **Dashboard → Webhooks** pẹ̀lú URL ibi-afẹ́ àti àṣírí ìfọwọ́sí HMAC
- Àwọn ìṣẹ̀lẹ̀ tó wà: `request.completed`, `request.failed`, `provider.unavailable`, `budget.exceeded`, `combo.switched`, `circuit_breaker.opened`, `circuit_breaker.closed`
- Payload kọ̀ọ̀kan ní `X-OmniRoute-Signature` (HMAC-SHA256) fún ìjẹ́rìísí
- Àwọn àtúngbìyànjú: ìgbìyànjú mẹ́ta pẹ̀lú ìdádúró tó ń pọ̀ sí i lọ́nà exponential, lẹ́yìn náà a ó fi sí dead-letter queue
Schema kíkún wà ní [WEBHOOKS.md](../frameworks/WEBHOOKS.md).
---
## ☁️ Àwọn Aṣojú Cloud
OmniRoute ń ṣiṣẹ́ pọ̀ mọ́ àwọn aṣojú ìkọ̀wé kóòdù lórí cloud (**OpenAI Codex Cloud**, **Devin**, **Jules**, **Antigravity**) kí o lè rán àwọn iṣẹ́ tó máa gba àkókò gígùn láti dashboard kan náà tó ń ṣàkóso routing abẹ́lé rẹ.
- Ṣẹ̀dá àwọn iṣẹ́ ní **Dashboard → Cloud Agents** tàbí nípasẹ̀ `POST /api/v1/agents/tasks`
- Tọpinpin ipò, àwọn log, àti àwọn artifact fún iṣẹ́ kọ̀ọ̀kan
- Mú kọ́kọ́rọ́ API tìrẹ fún provider kọ̀ọ̀kan — àwọn credential kì í fi instance OmniRoute sílẹ̀ láéláé
Ìtọ́kasí kíkún: [CLOUD_AGENT.md](../frameworks/CLOUD_AGENT.md).
---
## 🛠️ Ìṣàkóso Nípasẹ̀ Ètò
O lè ṣàkóso gbogbo resource OmniRoute (àwọn provider, combo, kọ́kọ́rọ́, àti ètò) lórí HTTP nípa lílo **kọ́kọ́rọ́ Bearer tó ní scope `manage`**.
Ṣẹ̀dá kọ́kọ́rọ́ náà ní **Dashboard → API Keys → New Key → Scope: manage**, lẹ́yìn náà:
```bash
# Ṣàtòjọ àwọn provider
curl http://localhost:20128/api/providers \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"
# Ṣàfikún ìsopọ̀ provider kan
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" }'
# Ṣẹ̀dá combo kan
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" }] }'
# Ṣàtòjọ/ṣẹ̀dá àwọn kọ́kọ́rọ́ 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"] }'
```
Wo [API_REFERENCE.md](../reference/API_REFERENCE.md) fún àkójọ endpoint kíkún àti àwọn schema request/response.
---
## 💻 CLI Abẹ́nú
OmniRoute ní CLI abẹ́nú (`omniroute …`) fún ìṣètò, àyẹ̀wò ìṣòro, àti ìṣàkóso nígbà ìṣiṣẹ́. Èyí **yàtọ̀ sí ojú-ìwé "Àwọn Irinṣẹ́ CLI" nínú dashboard**, èyí tí ń ṣètò àwọn CLI láti ọ̀dọ̀ ẹlòmíràn (Claude Code, Cursor, Codex, Cline, …) kí wọ́n lè bá OmniRoute sọ̀rọ̀.
```bash
omniroute setup # Olùrànlọ́wọ́ ìbánisọ̀rọ̀ (ọ̀rọ̀ aṣínà, àwọn olùpèsè, àwọn àkójọpọ̀)
omniroute setup --non-interactive # Ó bá CI mu
omniroute doctor # Àyẹ̀wò ìlera (àpò data, DB, àwọn olùpèsè, àwọn port)
omniroute providers available # Ṣàkójọ àwọn olùpèsè tí a ṣe àtìlẹ́yìn fún
omniroute providers list # Ṣàkójọ àwọn ìsopọ̀ tí a ti ṣètò
omniroute providers test # Ṣe àyẹ̀wò ìsopọ̀ olùpèsè ní tààrà
omniroute combos list # Ṣàkójọ àwọn àkójọpọ̀
omniroute combos switch # Ṣètò àkójọpọ̀ àiyipada
omniroute models # Ṣàkójọ àwọn model tó wà (--json, --search)
omniroute keys add | list | remove # Ṣàkóso àwọn kọ́kọ́rọ́ API láti terminal
omniroute backup # Ya àwòrán ìpamọ́ ìṣètò + DB
omniroute restore [] # Mú padà láti inú àwòrán ìpamọ́
omniroute health # Ìlera ní ẹ̀kúnrẹ́rẹ́ (breakers, cache, memory)
omniroute quota # Lílo ìwọ̀n olùpèsè
omniroute mcp status # Ipò server MCP
omniroute a2a status # Ipò server A2A
omniroute tunnel list|create|stop # Àwọn tunnel Cloudflare/Tailscale/ngrok
omniroute reset-password # Tún ọ̀rọ̀ aṣínà alákóso ṣètò
omniroute --mcp # Bẹ̀rẹ̀ server MCP lórí stdio
omniroute --port 3000 # Bẹ̀rẹ̀ server lórí port àkànṣe
```
Ìmọ̀ràn: so `omniroute doctor --json` pọ̀ mọ́ irinṣẹ́ àbójútó rẹ láti fi ìkìlọ̀ ránṣẹ́ nípa àwọn ìsopọ̀ olùpèsè tí kò ní ìlera.
---
## 🖥️ Ìṣàfilọ́lẹ̀ Orí Kọ̀ǹpútà (Electron)
OmniRoute wà gẹ́gẹ́ bí ìṣàfilọ́lẹ̀ abinibi orí kọ̀ǹpútà fún Windows, macOS, àti Linux.
### Fífìdí Rẹ̀ Múlẹ̀
```bash
# Láti inú àkójọpọ̀ electron:
cd electron
npm install
# Ipo ìdàgbàsókè (sopọ̀ mọ́ server ìdàgbàsókè Next.js tó ń ṣiṣẹ́):
npm run dev
# Ipo iṣẹ́-gidi (ń lo build standalone):
npm start
```
### Ṣíṣe Àwọn Installer
```bash
cd electron
npm run build # Platform tó ń lò lọ́wọ́lọ́wọ́
npm run build:win # Windows (.exe NSIS)
npm run build:mac # macOS (.dmg universal)
npm run build:linux # Linux (.AppImage)
```
Àbájáde → `electron/dist-electron/`
### Àwọn Ẹ̀ya Pàtàkì
| Ẹ̀ya | Àpèjúwe |
| --------------------- | ---------------------------------------------------------- |
| **Ìmúrasílẹ̀ Server** | Ó ń yẹ server wò kí ó tó fi window hàn (kò sí ojú òfo) |
| **System Tray** | Dín kù sínú tray, yí port padà, jáde láti inú àkójọ tray |
| **Ìṣàkóso Port** | Yí port server padà láti tray (server á tún bẹ̀rẹ̀ fúnra rẹ̀) |
| **Ìlànà Ààbò Àkóónú** | CSP tó le nípasẹ̀ àwọn header session |
| **Instance Kan Ṣoṣo** | Instance ìṣàfilọ́lẹ̀ kan ṣoṣo ló lè ṣiṣẹ́ lẹ́ẹ̀kan |
| **Ipo Àìsí Ìkànnì** | Server Next.js tí a kó sínú rẹ̀ ń ṣiṣẹ́ láìsí internet |
### Àwọn Àyípadà Àyíká
| Àyípadà | Àiyipada | Àpèjúwe |
| --------------------- | -------- | ------------------------------- |
| `OMNIROUTE_PORT` | `20128` | Port server |
| `OMNIROUTE_MEMORY_MB` | `512` | Òpin heap Node.js (64–16384 MB) |
📖 Ìwé ìtọ́nisọ́nà ní ẹ̀kúnrẹ́rẹ́: [`electron/README.md`](../../electron/README.md)