# User Guide (မြန်မာ)
🌐 **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) · 🇳🇵 [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) · 🇳🇬 [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) · 🇳🇵 [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) · 🇳🇬 [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)
ပံ့ပိုးသူများကို စီစဉ်သတ်မှတ်ခြင်း၊ ပေါင်းစပ်မှုများ ဖန်တီးခြင်း၊ CLI ကိရိယာများ ချိတ်ဆက်အသုံးပြုခြင်းနှင့် OmniRoute ကို ဖြန့်ချထားခြင်းတို့အတွက် ပြည့်စုံသော လမ်းညွှန်။
---
## မာတိကာ
- [ဈေးနှုန်းများကို အကျဉ်းချုပ်ကြည့်ရှုခြင်း](#-pricing-at-a-glance)
- [အသုံးပြုမှုများ](#-use-cases)
- [ပံ့ပိုးသူ စနစ်ထည့်သွင်းခြင်း](#-provider-setup)
- [CLI ပေါင်းစပ်အသုံးပြုခြင်း](#-cli-integration)
- [ဖြန့်ကျက်အသုံးပြုခြင်း](#-deployment)
- [ရရှိနိုင်သော မော်ဒယ်များ](#-available-models)
- [အဆင့်မြင့် လုပ်ဆောင်ချက်များ](#-advanced-features)
- [အလိုအလျောက် လမ်းကြောင်းရွေးချယ်ခြင်း (ပြင်ဆင်မှုမလို)](#-auto-routing-zero-config)
- [MCP နှင့် A2A ပေါင်းစပ်အသုံးပြုခြင်း](#-mcp--a2a-integration)
- [ကျွမ်းကျင်မှုစနစ်](#-skills-system)
- [မှတ်ဉာဏ်စနစ်](#-memory-system)
- [Webhooks](#-webhooks)
- [Cloud Agents](#-cloud-agents)
- [ပရိုဂရမ်ဖြင့် စီမံခန့်ခွဲခြင်း](#-programmatic-management)
- [အတွင်းပိုင်း CLI](#-internal-cli)
- [Desktop အပလီကေးရှင်း (Electron)](#-desktop-application-electron)
---
## 💰 ဈေးနှုန်းများကို အကျဉ်းချုပ်ကြည့်ရှုခြင်း
| အဆင့် | ပံ့ပိုးသူ | ကုန်ကျစရိတ် | ခွဲတမ်း ပြန်လည်သတ်မှတ်ချိန် | အသင့်တော်ဆုံး အသုံးပြုမှု |
| --------------------- | ----------------- | --------------------- | -------------------------------------- | ------------------------------------------- |
| **💳 စာရင်းသွင်းမှု** | Claude Code (Pro) | $20/လ | 5 နာရီ + အပတ်စဉ် | စာရင်းသွင်းထားပြီးသူများ |
| | Codex (Plus/Pro) | $20-200/လ | 5 နာရီ + အပတ်စဉ် | OpenAI အသုံးပြုသူများ |
| | GitHub Copilot | $10-19/လ | လစဉ် | GitHub အသုံးပြုသူများ |
| **🔑 API KEY** | DeepSeek | အသုံးပြုသလောက် ပေးချေ | မရှိ | ဈေးသက်သာသော ဆင်ခြင်သုံးသပ်မှု |
| | Groq | အသုံးပြုသလောက် ပေးချေ | မရှိ | အလွန်မြန်ဆန်သော inference |
| | xAI (Grok) | အသုံးပြုသလောက် ပေးချေ | မရှိ | Grok 4 ဆင်ခြင်သုံးသပ်မှု |
| | Mistral | အသုံးပြုသလောက် ပေးချေ | မရှိ | EU တွင် လက်ခံထားသော မော်ဒယ်များ |
| | Perplexity | အသုံးပြုသလောက် ပေးချေ | မရှိ | ရှာဖွေမှုဖြင့် အားဖြည့်ထားသော လုပ်ဆောင်ချက် |
| | Together AI | အသုံးပြုသလောက် ပေးချေ | မရှိ | Open-source မော်ဒယ်များ |
| | Fireworks AI | အသုံးပြုသလောက် ပေးချေ | မရှိ | မြန်ဆန်သော FLUX ပုံများ |
| | Cerebras | အသုံးပြုသလောက် ပေးချေ | မရှိ | Wafer-scale အမြန်နှုန်း |
| | Cohere | အသုံးပြုသလောက် ပေးချေ | မရှိ | Command R+ RAG |
| | NVIDIA NIM | အသုံးပြုသလောက် ပေးချေ | မရှိ | လုပ်ငန်းသုံး မော်ဒယ်များ |
| | Baidu Qianfan | အသုံးပြုသလောက် ပေးချေ | မရှိ | ERNIE မော်ဒယ်များ |
| **💰 ဈေးသက်သာ** | GLM-4.7 | $0.6/1M | နေ့စဉ် နံနက် 10 နာရီ | ဘတ်ဂျက်သုံး အရန်စနစ် |
| | MiniMax M2.1 | $0.2/1M | 5 နာရီ လည်ပတ်ကာလ | ဈေးအနည်းဆုံး ရွေးချယ်မှု |
| | Kimi K2 | တစ်လလျှင် $9 ပုံသေ | တစ်လလျှင် token 10M | ကြိုတင်ခန့်မှန်းနိုင်သော ကုန်ကျစရိတ် |
| **🆓 အခမဲ့** | Qoder | $0 | ပံ့ပိုးသူ၏ ကန့်သတ်ချက်များ သက်ရောက်သည် | လက်ရှိ catalog ကို စစ်ဆေးပါ |
| | Kiro | $0 | တစ်လလျှင် credit ~50 | အခမဲ့ Claude |
---
## 🎯 အသုံးပြုမှုများ
### အခြေအနေ 1: "ကျွန်ုပ်တွင် Claude Pro စာရင်းသွင်းမှုရှိသည်"
**ပြဿနာ:** ခွဲတမ်းကို မသုံးမိဘဲ သက်တမ်းကုန်သွားခြင်း၊ coding အများအပြားလုပ်ချိန်တွင် rate limit များ ကြုံတွေ့ရခြင်း
```
ပေါင်းစပ်မှု: "maximize-claude"
1. cc/claude-opus-4-7 (စာရင်းသွင်းမှုကို အပြည့်အဝ အသုံးပြုရန်)
2. glm/glm-4.7 (ခွဲတမ်းကုန်သွားချိန်တွင် ဈေးသက်သာသော အရန်)
3. if/qwen3.8-max-preview (အရေးပေါ် အခမဲ့ အရန်ရွေးချယ်မှု)
လစဉ်ကုန်ကျစရိတ်: $20 (စာရင်းသွင်းမှု) + ~$5 (အရန်) = စုစုပေါင်း $25
$20 ပေးပြီး ကန့်သတ်ချက်များနှင့် ကြုံတွေ့ကာ စိတ်ပျက်ရခြင်းထက် ပိုကောင်းသည်
```
### အခြေအနေ 2: "ကုန်ကျစရိတ် သုညဖြစ်စေချင်သည်"
**ပြဿနာ:** စာရင်းသွင်းမှုအတွက် မတတ်နိုင်ဘဲ ယုံကြည်စိတ်ချရသော AI coding လိုအပ်ခြင်း
```
ပေါင်းစပ်မှု: "zero-cost"
1. if/kimi-k2.7-code (အခမဲ့အသုံးပြုခွင့်ရှိသည်ဟု ဖော်ပြထားပြီး rate limit များ သက်ရောက်နိုင်သည်)
2. kr/qwen3-coder-next (Kiro အခမဲ့ အရန်ရွေးချယ်မှု)
လစဉ်ကုန်ကျစရိတ်: $0
အရည်အသွေး: သင့် workload အတွက် မော်ဒယ်၊ ကန့်သတ်ချက်များ၊ ကိုယ်ရေးလုံခြုံမှုနှင့် SLA ကို စစ်ဆေးပါ
```
### အခြေအနေ 3: "အနှောင့်အယှက်မရှိဘဲ 24/7 coding လုပ်ရန် လိုအပ်သည်"
**ပြဿနာ:** နောက်ဆုံးသတ်မှတ်ရက်များရှိပြီး စနစ်ရပ်နားချိန်ကို လက်မခံနိုင်ခြင်း
```
ပေါင်းစပ်မှု: "always-on"
1. cc/claude-opus-4-7 (အကောင်းဆုံး အရည်အသွေး)
2. cx/gpt-5.5 (ဒုတိယ စာရင်းသွင်းမှု)
3. glm/glm-4.7 (ဈေးသက်သာပြီး နေ့စဉ် ပြန်လည်သတ်မှတ်သည်)
4. minimax/MiniMax-M2.1 (ဈေးအနည်းဆုံးဖြစ်ပြီး 5 နာရီတိုင်း ပြန်လည်သတ်မှတ်သည်)
5. if/deepseek-v4-flash (အခမဲ့အသုံးပြုခွင့်ရှိသည်ဟု ဖော်ပြထားပြီး rate limit များ သက်ရောက်နိုင်သည်)
ရလဒ်: အရန်အလွှာ 5 ခုက ခံနိုင်ရည်ကို တိုးမြှင့်ပေးသော်လည်း upstream ရရှိနိုင်မှုကို အာမမခံပါ
လစဉ်ကုန်ကျစရိတ်: $20-200 (စာရင်းသွင်းမှုများ) + $10-20 (အရန်)
```
### အခြေအနေ 4: "OpenClaw တွင် အခမဲ့ AI အသုံးပြုလိုသည်"
**ပြဿနာ:** စာတိုပေးပို့ရေး အက်ပ်များတွင် လုံးဝအခမဲ့ AI assistant လိုအပ်ခြင်း
```
ပေါင်းစပ်မှု: "openclaw-free"
1. if/qwen3.8-max-preview (အခမဲ့အသုံးပြုခွင့်ရှိသည်ဟု ဖော်ပြထားပြီး rate limit များ သက်ရောက်နိုင်သည်)
2. if/deepseek-v4-flash (အခမဲ့အသုံးပြုခွင့်ရှိသည်ဟု ဖော်ပြထားပြီး rate limit များ သက်ရောက်နိုင်သည်)
3. if/kimi-k2.7-code (အခမဲ့အသုံးပြုခွင့်ရှိသည်ဟု ဖော်ပြထားပြီး rate limit များ သက်ရောက်နိုင်သည်)
လစဉ်ကုန်ကျစရိတ်: $0
ဤအရာများမှတစ်ဆင့် အသုံးပြုနိုင်သည်: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
```
---
## 📖 Provider စနစ်ထည့်သွင်းခြင်း
CSV သို့မဟုတ် JSON ဖိုင်တစ်ခုမှ API-key ချိတ်ဆက်မှုများကို အစုလိုက်ထည့်ရန် **Dashboard → Providers → Import from file** ကို အသုံးပြုပါ။ ကော်လံများကို အစဉ်လိုက် သတ်မှတ်ထားသည် (`provider,name,apiKey,baseUrl,priority`)။ `provider` သည် စီမံခန့်ခွဲထားသော provider သို့မဟုတ် ကိုက်ညီမှုရှိသော node တစ်ခုအဖြစ် ရှိနှင့်ပြီးသား ဖြစ်ရမည်။ [CSV သို့မဟုတ် JSON ဖိုင်မှ provider များ ထည့်သွင်းခြင်း](../providers/CSV-IMPORT.md) ကို ကြည့်ပါ။
### 🔐 စာရင်းသွင်းမှုအခြေပြု Provider များ
#### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Claude Code ကို ချိတ်ဆက်ပါ
→ OAuth ဖြင့် ဝင်ရောက်ပါ → Token အလိုအလျောက် ပြန်လည်စတင်ခြင်း
→ ၅ နာရီစာ + အပတ်စဉ် quota စောင့်ကြည့်ခြင်း
မော်ဒယ်များ:
cc/claude-opus-4-7
cc/claude-sonnet-4-6
cc/claude-haiku-4-5-20251001
```
**ကျွမ်းကျင်သူ အကြံပြုချက်:** ရှုပ်ထွေးသော လုပ်ငန်းများအတွက် Opus ကို အသုံးပြုပြီး မြန်နှုန်းအတွက် Sonnet ကို အသုံးပြုပါ။ OmniRoute သည် မော်ဒယ်တစ်ခုချင်းစီအလိုက် quota ကို စောင့်ကြည့်ပေးသည်!
OmniRoute host ပေါ်တွင် browser မရှိပါသလား။ Claude Code ဖြင့် ဝင်ရောက်ထားသည့် မည်သည့်နေရာတွင်မဆို `claude setup-token` ကို လုပ်ဆောင်ပြီး တစ်နှစ်သက်တမ်းရှိ token ကို **Setup Token** tab ထဲသို့ ကူးထည့်ပါ။ [Setup token ဖြင့် Claude Code အသုံးပြုခြင်း](../providers/CLAUDE_CODE_SETUP_TOKEN.md) ကို ကြည့်ပါ။
Claude နှင့် Claude Code နှင့် ကိုက်ညီသော route များသည် Opus နှင့် Sonnet
မော်ဒယ်များအတွက် `max` thinking effort ကို ဆက်လက်ထိန်းသိမ်းထားသည်။ Haiku မော်ဒယ်များသည် `max` effort အဆင့်ကို လက်မခံသောကြောင့် OmniRoute သည်
ထို request ကို upstream သို့ မပို့မီ high thinking budget အဖြစ် လျှော့ချပေးသည်။
#### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Codex ကို ချိတ်ဆက်ပါ
→ OAuth ဖြင့် ဝင်ရောက်ပါ (port 1455)
→ ၅ နာရီစာ + အပတ်စဉ် ပြန်လည်သတ်မှတ်ခြင်း
မော်ဒယ်များ:
cx/gpt-5.5
cx/gpt-5.4
cx/gpt-5.3-codex
cx/gpt-5.3-codex-spark
```
#### GitHub Copilot
```bash
Dashboard → Providers → GitHub ကို ချိတ်ဆက်ပါ
→ GitHub မှတစ်ဆင့် OAuth
→ လစဉ် ပြန်လည်သတ်မှတ်ခြင်း (လတိုင်း၏ ၁ ရက်နေ့)
မော်ဒယ်များ:
gh/gpt-5.5
gh/gpt-5.4
gh/claude-sonnet-4.6
gh/claude-opus-4.7
gh/gemini-3.1-pro-preview
```
### 💰 စျေးသက်သာသော Provider များ
#### GLM-4.7 (နေ့စဉ် ပြန်လည်သတ်မှတ်ခြင်း၊ $0.6/1M)
1. စာရင်းသွင်းရန်: [Zhipu AI](https://open.bigmodel.cn)
2. Coding Plan မှ API key ရယူပါ
3. Dashboard → Add API Key: Provider: `glm`, API Key: `your-key`
**အသုံးပြုရန်:** `glm/glm-4.7` — **ကျွမ်းကျင်သူ အကြံပြုချက်:** Coding Plan သည် ကုန်ကျစရိတ် 1/7 ဖြင့် quota 3× ပေးသည်! နေ့စဉ် နံနက် 10:00 တွင် ပြန်လည်သတ်မှတ်သည်။
#### MiniMax M2.1 (၅ နာရီတိုင်း ပြန်လည်သတ်မှတ်ခြင်း၊ $0.20/1M)
1. စာရင်းသွင်းရန်: [MiniMax](https://www.minimax.io)
2. API key ရယူပါ → Dashboard → Add API Key
**အသုံးပြုရန်:** `minimax/MiniMax-M2.1` — **ကျွမ်းကျင်သူ အကြံပြုချက်:** ရှည်လျားသော context (1M tokens) အတွက် စျေးအသက်သာဆုံး ရွေးချယ်မှုဖြစ်သည်!
#### Kimi K2 (တစ်လလျှင် ပုံသေ $9)
1. စာရင်းသွင်းရန်: [Moonshot AI](https://platform.kimi.ai?aff=omniroute)
2. API key ရယူပါ → Dashboard → Add API Key
**အသုံးပြုရန်:** `kimi/kimi-k2.5` — **ကျွမ်းကျင်သူ အကြံပြုချက်:** 10M tokens အတွက် တစ်လလျှင် ပုံသေ $9 ဖြစ်သဖြင့် ထိရောက်သော ကုန်ကျစရိတ်မှာ $0.90/1M ဖြစ်သည်!
#### Baidu Qianfan / ERNIE
1. စာရင်းသွင်းရန်: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop)
2. Qianfan API key တစ်ခု ဖန်တီးပါ → Dashboard → Add API Key: Provider: `qianfan`
**အသုံးပြုရန်:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1` သို့မဟုတ် အခြား Qianfan OpenAI-compatible model ID တစ်ခု။
### 🆓 အခမဲ့ Provider များ
Authentication မလိုအပ်သော အခမဲ့ provider များ၏ provider စာမျက်နှာတွင် **No authentication required** ဘေး၌ ခလုတ်တစ်ခု ရှိသည်။
၎င်းကို ပိတ်လိုက်ပါက ထို provider ကို ပိတ်ထားမည်ဖြစ်ပြီး Providers configured/compact view များမှ ဖယ်ရှားကာ
၎င်း၏ မော်ဒယ်များကိုလည်း `/v1/models` မှ ဖယ်ရှားမည်ဖြစ်သည်။
#### Qoder (အခမဲ့ မော်ဒယ် ၉ ခု)
```bash
Dashboard → Qoder ကို ချိတ်ဆက်ပါ → OAuth ဖြင့် ဝင်ရောက်ပါ → အသုံးပြုခွင့်သည် provider ၏ လက်ရှိ ကန့်သတ်ချက်များအပေါ် မူတည်သည်
မော်ဒယ်များ: 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 အခမဲ့)
```bash
Dashboard → Kiro ကို ချိတ်ဆက်ပါ → AWS Builder ID သို့မဟုတ် Google/GitHub → တစ်လလျှင် credit ~50
မော်ဒယ်များ: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
```
---
## 🎨 ကွန်ဘိုများ
ကတ်တစ်ခုစီရှိ လက်ကိုင်ကို ဆွဲခြင်းဖြင့် **Dashboard → Combos** တွင် ကွန်ဘိုကတ်များကို တိုက်ရိုက် ပြန်လည်စီစဉ်နိုင်သည်။ အစီအစဉ်ကို SQLite တွင် သိမ်းဆည်းထားပြီး ပြန်လည်ဖွင့်သည့်အခါ မူလအတိုင်း ပြန်လည်ရယူပေးသည်။
### ဥပမာ 1: စာရင်းသွင်းမှုကို အများဆုံးအသုံးချခြင်း → စျေးသက်သာသော အရန်
```
Dashboard → Combos → အသစ်ဖန်တီးရန်
အမည်: premium-coding
မော်ဒယ်များ:
1. cc/claude-opus-4-7 (စာရင်းသွင်းမှု၏ အဓိကမော်ဒယ်)
2. glm/glm-4.7 (စျေးသက်သာသော အရန်၊ $0.6/1M)
3. minimax/MiniMax-M2.7 (စျေးအသက်သာဆုံး အရန်၊ $0.3/1M)
CLI တွင် အသုံးပြုရန်: premium-coding
```
### ဥပမာ 2: အခမဲ့သီးသန့် (ကုန်ကျစရိတ် သုည)
```
အမည်: free-combo
မော်ဒယ်များ:
1. if/kimi-k2.7-code (အခမဲ့အသုံးပြုခွင့်ရှိသည်ဟု ဖော်ပြထားသည်၊ ဝန်ဆောင်မှုပေးသူ၏ ကန့်သတ်ချက်များ သက်ရောက်နိုင်သည်)
2. kr/qwen3-coder-next (Kiro အခမဲ့အရန်)
ကုန်ကျစရိတ်: လက်ရှိတွင် $0 ဟု ဖော်ပြထားသည်၊ စည်းကမ်းချက်များနှင့် ရရှိနိုင်မှုသည် ပြောင်းလဲနိုင်သည်
```
---
## 🔧 CLI ပေါင်းစပ်အသုံးပြုမှု
### Cursor IDE
**Cursor ကို OmniRoute ကလိုင်းယင့်အဖြစ် အသုံးပြုခြင်း** (Cursor ချတ်ကို OmniRoute မှတစ်ဆင့် လမ်းကြောင်းပြောင်းခြင်း):
```
ဆက်တင်များ → မော်ဒယ်များ → အဆင့်မြင့်:
OpenAI API အခြေခံ URL: http://localhost:20128/v1
OpenAI API သော့: [omniroute ဒက်ရှ်ဘုတ်မှ]
မော်ဒယ်: cc/claude-opus-4-7
```
**OmniRoute ကို Cursor ဝန်ဆောင်မှုပေးသူအဖြစ် အသုံးပြုခြင်း** (OmniRoute က Cursor အထက်ပိုင်းဝန်ဆောင်မှုကို ခေါ်ယူသည်): **Dashboard → Providers → Cursor → Login with Cursor** ကို ဦးစားပေးအသုံးပြုပါ။ Docker တွင်
[`docs/providers/CURSOR-DOCKER.md`](../providers/CURSOR-DOCKER.md) ကို ကြည့်ပါ။
### Claude Code
`~/.claude/settings.json` ကို ပြင်ဆင်ပါ:
```json
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:20128",
"ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key"
}
}
```
ဤနေရာတွင် Claude နှင့် တွဲဖက်အသုံးပြုနိုင်သော root endpoint ကို အသုံးပြုပါ။ `ANTHROPIC_BASE_URL` တွင် `/v1` ကို မထည့်ပါနှင့်။
### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
### OpenClaw
`~/.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" }]
}
}
}
}
```
**သို့မဟုတ် Dashboard ကို အသုံးပြုပါ:** CLI Tools → OpenClaw → Auto-config
### Cline / Continue / RooCode
```
ဝန်ဆောင်မှုပေးသူ: OpenAI နှင့် တွဲဖက်အသုံးပြုနိုင်သော
အခြေခံ URL: http://localhost:20128/v1
API သော့: [ဒက်ရှ်ဘုတ်မှ]
မော်ဒယ်: cc/claude-opus-4-7
```
---
## 🚀 ဖြန့်ကျက်တပ်ဆင်ခြင်း
### Global npm ထည့်သွင်းခြင်း (အကြံပြုထားသည်)
```bash
npm install -g omniroute
# ဖွဲ့စည်းမှုလမ်းညွှန်ကို ဖန်တီးပါ
mkdir -p ~/.omniroute
# .env ဖိုင်ကို ဖန်တီးပါ (.env.example ကို ကြည့်ပါ)
cp .env.example ~/.omniroute/.env
# ဆာဗာကို စတင်ပါ
omniroute
# သို့မဟုတ် စိတ်ကြိုက် port ဖြင့်:
omniroute --port 3000
```
CLI သည် `~/.omniroute/.env` သို့မဟုတ် `./.env` မှ `.env` ကို အလိုအလျောက် ဖွင့်ပေးသည်။
### Tray မုဒ်
OmniRoute ကို စနစ် tray တွင် စတင်ပါ:
```bash
omniroute serve --tray
```
ဆာဗာနှင့် tray အသင့်ဖြစ်ပြီးနောက် command သည် ပြန်လည်ပြီးဆုံးသည်။
ဆာဗာသည် terminal မရှိဘဲ ဆက်လက်လည်ပတ်နေသည်။
Tray မုဒ်သည် macOS၊ Windows နှင့် ဂရပ်ဖစ် Linux session များကို ပံ့ပိုးသည်။ Tray မုဒ်သည် dashboard ကို အလိုအလျောက် မဖွင့်ပေးပါ။
အောက်ပါလုပ်ဆောင်ချက်များအတွက် tray မီနူးကို အသုံးပြုပါ:
- Dashboard ကို ဖွင့်ရန်။
- `/dashboard/logs` ကို ဖွင့်ရန်။
- အလိုအလျောက်စတင်မှုကို ပြောင်းလဲရန်။
- OmniRoute ကို ရပ်တန့်ရန်။
`--tray` ကို အောက်ပါရွေးချယ်စရာများနှင့် တွဲဖက်မသုံးပါနှင့်:
- `--daemon`
- `--log`
- `--no-recovery`
ဤမုဒ်များသည် မတူညီသော process ပိုင်ဆိုင်မှု လိုအပ်သည်။
စက်ထဲသို့ နောက်တစ်ကြိမ် login ဝင်သည့်အခါ စတင်ရန် ဖွင့်ပါ:
```bash
omniroute autostart enable
```
အလိုအလျောက်စတင်မှုသည် macOS၊ Windows နှင့် ဂရပ်ဖစ် Linux session များတွင် tray မုဒ်ကို အသုံးပြုသည်။ မျက်နှာပြင်မဲ့ Linux သည် လက်ရှိ systemd အသုံးပြုသူဝန်ဆောင်မှုကို အသုံးပြုသည်။
Login ဝင်ချိန် စတင်မှုကို ပိတ်ပါ:
```bash
omniroute autostart disable
```
### ဖယ်ရှားခြင်း
OmniRoute ကို မလိုအပ်တော့သည့်အခါ ရှင်းလင်းစွာဖယ်ရှားရန် အမြန် script နှစ်ခု ပံ့ပိုးထားသည်:
| Command | လုပ်ဆောင်ချက် |
| ------------------------ | ------------------------------------------------------------------------------------------------------ |
| `npm run uninstall` | စနစ်အက်ပ်ကို ဖယ်ရှားသော်လည်း `~/.omniroute` ရှိ **သင့် DB နှင့် ဖွဲ့စည်းမှုများကို ထိန်းသိမ်းထားသည်**။ |
| `npm run uninstall:full` | အက်ပ်ကို ဖယ်ရှားပြီး **ဖွဲ့စည်းမှုများ၊ သော့များနှင့် database အားလုံးကို အပြီးတိုင် ဖျက်ပစ်သည်**။ |
> မှတ်ချက်: ဤ command များကို လုပ်ဆောင်ရန် OmniRoute ပရောဂျက်ဖိုင်တွဲသို့ သွားပြီး (clone ပြုလုပ်ထားပါက) ၎င်းတို့ကို လုပ်ဆောင်ပါ။ သို့မဟုတ် global အဖြစ် ထည့်သွင်းထားပါက `npm uninstall -g omniroute` ကို ရိုးရှင်းစွာ လုပ်ဆောင်နိုင်သည်။
### 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
# သို့မဟုတ်: pm2 start npm --name omniroute -- start
```
### PM2 ဖြန့်ကျက်တပ်ဆင်ခြင်း (Memory နည်းပါးမှု)
RAM ကန့်သတ်ထားသော ဆာဗာများအတွက် memory limit ရွေးချယ်စရာကို အသုံးပြုပါ:
```bash
# 512MB ကန့်သတ်ချက်ဖြင့် (မူလသတ်မှတ်ချက်)
pm2 start npm --name omniroute -- start
# သို့မဟုတ် စိတ်ကြိုက် memory ကန့်သတ်ချက်ဖြင့်
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
# သို့မဟုတ် ecosystem.config.js ကို အသုံးပြု၍
pm2 start ecosystem.config.js
```
`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
# Image တည်ဆောက်ပါ (မူလသတ်မှတ်ချက် = codex/claude/droid ကြိုတင်ထည့်သွင်းထားသော runner-cli)
docker build -t omniroute:cli .
# သယ်ဆောင်အသုံးပြုနိုင်သော မုဒ် (အကြံပြုထားသည်)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
```
CLI binary များပါဝင်သော host-integrated မုဒ်အတွက် ပင်မစာရွက်စာတမ်းများရှိ Docker ကဏ္ဍကို ကြည့်ပါ။
### Void Linux (xbps-src)
Void Linux အသုံးပြုသူများသည် `xbps-src` ဖြတ်ကျော်ကွန်ပိုင်လုပ်ခြင်း မူဘောင်ကို အသုံးပြု၍ OmniRoute ကို မူရင်းစနစ်နှင့် ကိုက်ညီသည့် ပက်ကေ့ချ်အဖြစ် ဖန်တီးပြီး ထည့်သွင်းနိုင်သည်။ ၎င်းသည် လိုအပ်သော `better-sqlite3` မူရင်း bindings များနှင့်အတူ Node.js standalone build ကို အလိုအလျောက် ပြုလုပ်ပေးသည်။
xbps-src template ကို ကြည့်ရန်
```bash
# 'omniroute' အတွက် template ဖိုင်
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() {
# node-gyp အတွက် ပစ်မှတ် CPU architecture ကို သတ်မှတ်ပါ
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) မှီခိုပက်ကေ့ချ်အားလုံးကို ထည့်သွင်းပါ – scripts များကို ကျော်ပါ
NODE_ENV=development npm ci --ignore-scripts
# 2) Next.js standalone bundle ကို build လုပ်ပါ
npm run build
# 3) static assets များကို standalone ထဲသို့ ကူးယူပါ
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) better-sqlite3 မူရင်း binding ကို compile လုပ်ပါ
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) compile လုပ်ထားသော binding ကို standalone bundle ထဲသို့ ထည့်ပါ
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) architecture အလိုက် သီးခြားဖြစ်သော sharp bundles များကို ဖယ်ရှားပါ
rm -rf .next/standalone/node_modules/@img
# 7) Next.js static analysis က ချန်လှပ်ထားသည့် pino runtime မှီခိုပက်ကေ့ချ်များကို ကူးယူပါ-
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
# ထည့်သွင်းပြီးနောက် hook ကြောင့် အလွတ် Next.js app router လမ်းညွှန်များကို ဖယ်ရှားခြင်းမှ ကာကွယ်ပါ
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
}
```
### ပတ်ဝန်းကျင် ကိန်းရှင်များ
| Variable | Default | Description |
| --------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | `omniroute-default-secret-change-me` | JWT လက်မှတ်ရေးထိုးခြင်းအတွက် လျှို့ဝှက်ချက် (**ထုတ်လုပ်ရေးပတ်ဝန်းကျင်တွင် ပြောင်းလဲပါ**) |
| `INITIAL_PASSWORD` | `CHANGEME` | ပထမဆုံး ဝင်ရောက်အသုံးပြုရန် စကားဝှက် |
| `DATA_DIR` | `~/.omniroute` | ဒေတာလမ်းညွှန် (ဒေတာဘေ့စ်၊ အသုံးပြုမှု၊ မှတ်တမ်းများ) |
| `PORT` | မူဘောင်၏ မူလသတ်မှတ်ချက် | ဝန်ဆောင်မှု ပေါ့တ် (`20128` ကို နမူနာများတွင် အသုံးပြုထားသည်) |
| `HOSTNAME` | မူဘောင်၏ မူလသတ်မှတ်ချက် | ချိတ်ဆက်မည့် ဟို့စ် (Docker တွင် မူလအတိုင်း `0.0.0.0`) |
| `NODE_ENV` | လည်ပတ်မှုပတ်ဝန်းကျင်၏ မူလသတ်မှတ်ချက် | ဖြန့်ကျက်အသုံးပြုရန် `production` ဟု သတ်မှတ်ပါ |
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | ဒက်ရှ်ဘုတ်တွင် ပြသပြီး ဆာဗာသို့လည်း ဖော်ထုတ်ပေးသည့် အများသုံး အခြေခံ URL (အမွေဆက်ခံထားသော `BASE_URL` ကို အစားထိုးသည်) |
| `NEXT_PUBLIC_CLOUD_URL` | `https://omniroute.dev` | Cloud စင့်ခ် အဆုံးမှတ်၏ အခြေခံ URL (အမွေဆက်ခံထားသော `CLOUD_URL` ကို အစားထိုးသည်) |
| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | ထုတ်လုပ်ထားသော API key များအတွက် HMAC လျှို့ဝှက်ချက် |
| `REQUIRE_API_KEY` | `false` | `/v1/*` တွင် Bearer API key ကို မဖြစ်မနေ အသုံးပြုစေသည် |
| `ALLOW_API_KEY_REVEAL` | `false` | အထောက်အထားစိစစ်ပြီးသော ဒက်ရှ်ဘုတ်အသုံးပြုသူများအား သိမ်းဆည်းထားသည့် API key တန်ဖိုးအပြည့်အစုံကို လိုအပ်ချိန်တွင် ဖော်ပြခွင့်ပြုသည် |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | ကက်ရှ်လုပ်ထားသော Provider Limits ဒေတာအတွက် ဆာဗာဘက်မှ ပြန်လည်စစ်ဆေးသည့် ကြိမ်နှုန်း၊ UI ပြန်လည်စစ်ဆေးရေး ခလုတ်များက ကိုယ်တိုင် စင့်ခ်လုပ်ခြင်းကို ဆက်လက်စတင်ပေးသည် |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | ရေးသားခြင်း/တင်သွင်းခြင်း/ပြန်လည်ရယူခြင်းမပြုမီ အလိုအလျောက် SQLite snapshot များဖန်တီးခြင်းကို ပိတ်သည်၊ ကိုယ်တိုင် အရန်သိမ်းခြင်းမှာ ဆက်လက်အလုပ်လုပ်သည် |
| `APP_LOG_TO_FILE` | `true` | အပလီကေးရှင်းနှင့် စာရင်းစစ်မှတ်တမ်း ရလဒ်များကို ဒစ်ခ်သို့ ရေးသားခြင်း ဖွင့်ပေးသည် |
| `AUTH_COOKIE_SECURE` | `false` | `Secure` အထောက်အထားစိစစ်ရေး cookie ကို မဖြစ်မနေ အသုံးပြုစေသည် (HTTPS reverse proxy နောက်ကွယ်တွင်) |
| `CLOUDFLARED_BIN` | မသတ်မှတ်ထားပါ | စီမံထိန်းချုပ်ထားသော ဒေါင်းလုဒ်အစား ရှိပြီးသား `cloudflared` binary ကို အသုံးပြုသည် |
| `CLOUDFLARED_PROTOCOL` | `http2` | စီမံထိန်းချုပ်ထားသော Quick Tunnels အတွက် ပို့ဆောင်ရေး ပရိုတိုကော (`http2`၊ `quic` သို့မဟုတ် `auto`) |
| `OMNIROUTE_MEMORY_MB` | `512` | Node.js heap ကန့်သတ်ချက်ကို MB ဖြင့် သတ်မှတ်သည် |
| `PROMPT_CACHE_MAX_SIZE` | `50` | prompt cache ထည့်သွင်းချက် အများဆုံးအရေအတွက် |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | semantic cache ထည့်သွင်းချက် အများဆုံးအရေအတွက် |
ပတ်ဝန်းကျင် variable အပြည့်အစုံကို ကိုးကားရန် [README](../README.md) ကို ကြည့်ပါ။
---
## 📊 ရရှိနိုင်သော မော်ဒယ်များ
ရရှိနိုင်သော မော်ဒယ်အားလုံးကို ကြည့်ရန်
> အောက်ပါစာရင်းကို v3.8.0 အတွက် `open-sse/config/providerRegistry.ts` မှ စိစစ်ရွေးချယ်ထားပါသည်။ Cloud catalog များ (Gemini၊ OpenRouter စသည်) ကို အလိုအလျောက် တစ်ပြေးညီဖြစ်အောင် ချိန်ညှိပေးထားပါသည် — လက်ရှိ catalog အပြည့်အစုံအတွက် **Dashboard → Providers → [provider] → Available Models** ကို ဖွင့်ပါ သို့မဟုတ် `GET /api/models/catalog` ကို ခေါ်ပါ။
>
> Provider တစ်ခု၏ ပင်မစာရင်းသည် လက်ရှိအခြေအနေနှင့် ကွဲလွဲသွားပါက၊ upstream catalog အရှင်ကို ရယူရန် ထိုစာမျက်နှာရှိ **Import from /models** ကို အသုံးပြုပါ (သို့မဟုတ် **Auto-Sync** ကို ဖွင့်ပါ)။ ၎င်းကို LLM7.io (`gemini-3.1-flash-lite`) နှင့် UncloseAI (`solidrust/Hermes-3-Llama-3.1-8B-AWQ`) တို့အတွက် v3.8.50 တွင် စစ်ဆေးအတည်ပြုခဲ့ပြီး၊ တူညီသော စမ်းသပ်မှုအတွင်း Pollinations ၏ အမည်မဖော်ဘဲ အသုံးပြုခွင့်မှာ upstream ကန့်သတ်ချက်အတိုင်း ဆက်လက်ရှိနေခဲ့သည်။
**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` (+ အားထုတ်မှုအဆင့်များ: `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: **Dashboard → Providers → Kiro → Available Models** အောက်တွင် ပြသထားသော လက်ရှိ catalog ကို အသုံးပြုပါ။ ရရှိနိုင်မှုသည် အကောင့်နှင့် အစီအစဉ်ပေါ် မူတည်ပါသည်။
**Qoder (`if/`)** — အခမဲ့ 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 နှုန်းထားတစ်ခုတည်း သို့မဟုတ် အသုံးပြုမှုအလိုက်: `kimi/kimi-k2.6`, `kimi/kimi-k2.5`
**DeepSeek (`ds/`)** — API key: `ds/deepseek-v4-pro`, `ds/deepseek-v4-flash`
**Groq (`groq/`)** — အလွန်မြန်ဆန်သော: `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: `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/`)** — EU တွင် host လုပ်ထားသော: `mistral/mistral-large-latest`, `mistral/mistral-medium-3-5`, `mistral/mistral-small-latest`, `mistral/devstral-latest`, `mistral/codestral-latest`
**Perplexity (`pplx/`)** — ရှာဖွေမှုဖြင့် ဖြည့်စွက်ထားသော: `pplx/sonar-deep-research`, `pplx/sonar-reasoning-pro`, `pplx/sonar-pro`, `pplx/sonar`
**Together AI (`together/`)** — Open-source: `together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` (အခမဲ့), `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/`)** — မြန်ဆန်သော inference: `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/`)** — Wafer အရွယ်အစား: `cerebras/zai-glm-4.7`, `cerebras/gpt-oss-120b`
**Cohere (`cohere/`)** — 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/`)** — လုပ်ငန်းသုံး: `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/`)**: Google မှ API key တစ်ခုချင်းစီအလိုက် လက်ရှိအခြေအနေနှင့် တစ်ပြေးညီ ချိန်ညှိထားသည် — တည်ငြိမ်သောစာရင်း မရှိပါ။ **Dashboard → Providers** တွင် key တစ်ခုကို ချိတ်ဆက်ပြီး လက်ရှိ catalog ကို ထည့်သွင်းရန် **Available Models** ကို အသုံးပြုပါ (ဥပမာ `gemini/gemini-3-pro`, `gemini/gemini-3-flash`)။
**အခြား တွဲဖက်အသုံးပြုနိုင်သော provider များ** (ရွေးချယ်ထားသော): `cohere`, `databricks`, `snowflake`, `together`, `vertex`, `alibaba`, `alibaba-cn`, `bedrock` (`aws-bedrock` မှတစ်ဆင့်), `azure-ai`, `openrouter` (တိုက်ရိုက်ဖြတ်သန်းပေးသော catalog), `siliconflow`, `hyperbolic`, `huggingface`, `featherless-ai`, `cloudflare-ai`, `scaleway`, `deepinfra`, `vercel-ai-gateway`, `bazaarlink`, `friendliai`, `nous-research`, `reka`, `volcengine`, `ai21`, `gigachat`။ တစ်ခုချင်းစီသည် `providerRegistry.ts` တွင် ကိုယ်ပိုင် မော်ဒယ်စာရင်းကို ထိန်းသိမ်းထားပြီး provider က `/models` endpoint ကို ပံ့ပိုးပေးသည့်အခါ အလိုအလျောက် တစ်ပြေးညီဖြစ်အောင် ချိန်ညှိနိုင်ပါသည်။
**မော်ဒယ် ID များနှင့်ပတ်သက်သည့် မှတ်ချက်:** OmniRoute သည် provider မူရင်း ID များ (`claude-opus-4-8`, `gpt-5.5`, `glm-5.1`, `MiniMax-M2.7`, `kimi-k2.5`, `grok-4.20-0309-reasoning`) ကို အသုံးပြုပါသည်။ Upstream API က ထိုပုံစံအတိုင်း လိုအပ်သောကြောင့် အချို့ ID များတွင် အစက်ဖြင့်ရေးထားသော version များ ပါဝင်ပါသည်။ မော်ဒယ်တစ်ခုကို အထက်တွင် စာရင်းမပြုထားပါက ရရှိနိုင်မှုကို အတည်ပြုရန် `omniroute models --search ` ကို လုပ်ဆောင်ပါ သို့မဟုတ် `GET /api/models/catalog` ကို ခေါ်ပါ။
---
## 🧩 အဆင့်မြင့် လုပ်ဆောင်ချက်များ
### စိတ်ကြိုက် မော်ဒယ်များ
အက်ပ်အပ်ဒိတ်ကို စောင့်စရာမလိုဘဲ မည်သည့် provider တွင်မဆို မည်သည့် model ID ကိုမဆို ထည့်သွင်းနိုင်သည်-
```bash
# 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"}'
# စာရင်းပြရန်- curl http://localhost:20128/api/provider-models?provider=openai
# ဖယ်ရှားရန်- curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2"
```
သို့မဟုတ် Dashboard ရှိ **Providers → [Provider] → Custom Models** ကို အသုံးပြုပါ။
မှတ်ချက်များ-
- OpenRouter နှင့် OpenAI/Anthropic-compatible provider များကို **Available Models** မှသာ စီမံခန့်ခွဲသည်။ ကိုယ်တိုင်ထည့်သွင်းခြင်း၊ import လုပ်ခြင်းနှင့် အလိုအလျောက် sync လုပ်ခြင်းအားလုံးသည် တူညီသော available-model စာရင်းထဲသို့ ရောက်ရှိသောကြောင့် အဆိုပါ provider များအတွက် သီးခြား Custom Models ကဏ္ဍ မရှိပါ။
- **Custom Models** ကဏ္ဍသည် စီမံခန့်ခွဲနိုင်သော available-model import များကို မပေးသည့် provider များအတွက် ရည်ရွယ်သည်။
### စိတ်ကြိုက် OpenAI-Compatible Provider များ
OpenAI API ကို အသုံးပြုနိုင်သည့် မည်သည့် gateway ကိုမဆို (ကိုယ်တိုင် host လုပ်ထားသော proxy၊ vLLM သို့မဟုတ် ပြင်ပ aggregator)
သီးခြား provider node အဖြစ် ထည့်သွင်းနိုင်သည်-
1. **Providers → Add OpenAI Compatible**။
2. **Name**: node အတွက် ပြသမည့် အမည်။
3. **Prefix**: routing အမည်။ Client များက model များကို `/` ပုံစံဖြင့် ခေါ်ယူသဖြင့်
prefix `mygw` ရှိသော node သည် `mygw/gpt-4o-mini` ကို ဝန်ဆောင်မှုပေးသည်။ မဖြစ်မနေ လိုအပ်ပြီး စာလုံးအက္ခရာ ကန့်သတ်ချက် မရှိပါ။
4. **API Type**: gateway က ဝန်ဆောင်မှုပေးသည့် endpoint အုပ်စု (Chat Completions၊ Responses၊
Embeddings၊ audio၊ images)။
5. **Base URL**: `/v1` အထိ ပါဝင်သော API root (ဥပမာ
`https://gateway.example.com/v1`) ဖြစ်ပြီး `/chat/completions` လမ်းကြောင်းအပြည့် မဟုတ်ပါ။ စံမဟုတ်သော
လမ်းကြောင်းများရှိသည့် gateway များအတွက် ၎င်းတို့ကို **Advanced Settings** အောက်တွင် သတ်မှတ်ပါ (chat path၊ models path)။
6. **API Key (for Check)** အကွက်သည် ချိတ်ဆက်မှုကိုသာ စမ်းသပ်သည်။ Node ကို ဖန်တီးပြီးနောက်
၎င်းကိုဖွင့်ကာ request များက အသုံးပြုမည့် key ကို သိမ်းဆည်းရန် **Add Connection** ကို အသုံးပြုပါ။
Node သည် `openai-compatible--` ပုံစံရှိသည့် အတွင်းပိုင်း id တစ်ခု ရရှိမည်ဖြစ်သည်။ ၎င်းကို မည်သည့်အခါမျှ
ရိုက်ထည့်ရန် မလိုအပ်ဘဲ prefix သည် အများသုံးအမည် ဖြစ်သည်။
#### သီးသန့်ဖယ်ထားသော prefix များ
Prefix တစ်ခုသည် built-in provider ၏ id သို့မဟုတ် alias (ဥပမာ `openai`၊ `cf`) မဖြစ်ရသကဲ့သို့
ရပ်ဆိုင်းထားသော provider ၏ id လည်း မဖြစ်ရပါ။ Model resolver သည် custom node များမတိုင်မီ
built-in id များနှင့် alias များကို စစ်ဆေးသောကြောင့် ထို prefix မျိုးကို အသုံးပြုသည့် node သည် traffic ကို မည်သည့်အခါမျှ လက်ခံရရှိမည် မဟုတ်ပါ-
`/model` သည် built-in provider ထံသို့သာ သွားမည် သို့မဟုတ် ထို provider ကို ရပ်ဆိုင်းထားပါက fail closed ဖြစ်မည်။
ထိုသို့သော prefix ဖြင့် node တစ်ခု ဖန်တီးခြင်း သို့မဟုတ် တည်းဖြတ်ခြင်းကို အောက်ပါ error ဖြင့် ငြင်းပယ်မည်-
```text
prefix: "" သည် သီးသန့်ဖယ်ထားသော provider prefix ဖြစ်သည် — အခြား prefix တစ်ခုကို ရွေးချယ်ပါ (သီးသန့်ဖယ်ထားသော id/alias များကို custom node များအတွက် အသုံးမပြုနိုင်ပါ၊ အကြောင်းမှာ /model ကဲ့သို့ request များသည် built-in provider တစ်ခုသို့ route လုပ်မည် သို့မဟုတ် ရပ်ဆိုင်းထားပါက fail closed ဖြစ်မည်)
```
မတူညီသော prefix တစ်ခု (`mygw`၊ `acme-proxy`) ကို ရွေးချယ်ပါ။ Custom node တစ်ခုထံ ပေးပို့သော request များသည်
built-in provider သို့မဟုတ် ၎င်း၏ credential များကို အမည်ဖော်ပြသည့် error ဖြင့် မအောင်မြင်ပါက node ၏ prefix သည်
သီးသန့်ဖယ်ထားခြင်း ရှိမရှိ စစ်ဆေးပါ။ ဤစည်းမျဉ်း မရှိမီက သိမ်းဆည်းထားသော node များကို ဆက်လက်သိမ်းဆည်းထားသော်လည်း ၎င်းတို့၏ prefix သည်
built-in provider သို့ route လုပ်မည်ဖြစ်သည်။ Node ကို တည်းဖြတ်ပြီး prefix အသစ်တစ်ခု သတ်မှတ်ပါ။
### OmniRoute Peer များကို ဆက်တိုက်ချိတ်ဆက်ခြင်း
အခြား OmniRoute gateway တစ်ခုကို **Custom OpenAI-compatible** provider အဖြစ် ထည့်သွင်းနိုင်သည်။
Peer ၏ `/v1` base URL နှင့် ထို peer မှ ထုတ်ပေးထားသော သီးသန့်၊ အနည်းဆုံးအခွင့်အရေးရှိသည့် API key ကို အသုံးပြုပါ။
အပြန်အလှန် သို့မဟုတ် multi-hop chain များအတွက် gateway တိုင်းတွင် opt-in loop guard ကို ဖွင့်ပါ-
```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
```
အတိအလင်း allowlist ထည့်ထားသော peer URL ထံ ပေးပို့သည့် request များသာ
`X-OmniRoute-Peer-Trace` header ကို ရရှိသည်။ Gateway သည် ထပ်နေသော instance ID သို့မဟုတ် ကုန်ဆုံးသွားသော hop
အကန့်အသတ်ကို HTTP `508 Loop Detected` ဖြင့် ငြင်းပယ်သည်။ ပုံမှန် upstream provider များသည် peer metadata ကို မရရှိပါ။
Peer chaining သည် database replication သို့မဟုတ် host failover မဟုတ်ပါ။ Gateway တစ်ခုစီသည် သီးခြား
SQLite state၊ cache များ၊ rate counter များနှင့် session များကို ထိန်းသိမ်းထားသည်။ Active/passive သို့မဟုတ် active/active availability အတွက် health-check ပါသော reverse proxy သို့မဟုတ် client
failover ကို အသုံးပြုပြီး လည်ပတ်နေသော OmniRoute instance အများအပြားတွင် SQLite database တစ်ခုတည်းကို မည်သည့်အခါမျှ mount မလုပ်ပါနှင့်။
### Provider သီးသန့် Route များ
Model validation ဖြင့် သတ်မှတ်ထားသော provider တစ်ခုထံ request များကို တိုက်ရိုက် route လုပ်ပါ-
```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
```
Provider prefix မပါရှိပါက အလိုအလျောက် ထည့်သွင်းပေးသည်။ ကိုက်ညီမှုမရှိသော model များအတွက် `400` ကို ပြန်ပေးသည်။
### Network Proxy ဖွဲ့စည်းသတ်မှတ်ခြင်း
```bash
# Global proxy ကို သတ်မှတ်ရန်
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
# Provider အလိုက် proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
# Proxy ကို စမ်းသပ်ရန်
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
```
**ဦးစားပေးအစဉ်:** Key-specific → Combo-specific → Provider-specific → Global → Environment။
### Model Catalog API
```bash
curl http://localhost:20128/api/models/catalog
```
Provider အလိုက် အမျိုးအစားများ (`chat`၊ `embedding`၊ `image`) ဖြင့် အုပ်စုဖွဲ့ထားသော model များကို ပြန်ပေးသည်။
### Cloud Sync
- စက်များအကြား provider များ၊ combo များနှင့် setting များကို sync လုပ်ခြင်း
- Timeout + fail-fast ပါဝင်သော အလိုအလျောက် နောက်ခံ sync
- Production တွင် server-side `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` ကို ဦးစားပေးအသုံးပြုပါ
### Cloudflare Quick Tunnel
- Docker နှင့် အခြား ကိုယ်တိုင်ဟို့စ်လုပ်ထားသော deployment များအတွက် **Dashboard → Endpoints** တွင် ရရှိနိုင်သည်
- သင့်လက်ရှိ OpenAI-compatible `/v1` endpoint သို့ လွှဲပို့ပေးသည့် ယာယီ `https://*.trycloudflare.com` URL တစ်ခုကို ဖန်တီးပေးသည်
- ပထမဆုံး ဖွင့်သည့်အခါ လိုအပ်မှသာ `cloudflared` ကို ထည့်သွင်းပေးပြီး နောက်ပိုင်း restart များတွင် အလားတူ စီမံထားသော binary ကို ပြန်လည်အသုံးပြုသည်
- OmniRoute သို့မဟုတ် container ကို restart လုပ်ပြီးနောက် Quick Tunnels များကို အလိုအလျောက် ပြန်လည်ဖွင့်ပေးမည်မဟုတ်ပါ။ လိုအပ်သည့်အခါ dashboard မှ ပြန်လည်ဖွင့်ပါ
- Tunnel URL များသည် ယာယီသာဖြစ်ပြီး tunnel ကို ရပ်တန့်/စတင်သည့်အခါတိုင်း ပြောင်းလဲသည်
- အရင်းအမြစ်ကန့်သတ်ထားသော container များတွင် ဆူညံသော QUIC UDP buffer သတိပေးချက်များကို ရှောင်ရှားရန် စီမံထားသော Quick Tunnels များသည် ပုံသေအားဖြင့် HTTP/2 transport ကို အသုံးပြုသည်
- စီမံထားသော transport ရွေးချယ်မှုကို ပြောင်းလဲအသုံးပြုလိုပါက `CLOUDFLARED_PROTOCOL=quic` သို့မဟုတ် `auto` ဟု သတ်မှတ်ပါ
- စီမံထားသော download အစား ကြိုတင်ထည့်သွင်းထားသည့် `cloudflared` binary ကို အသုံးပြုလိုပါက `CLOUDFLARED_BIN` ကို သတ်မှတ်ပါ
- Cloudflare Quick Tunnel၊ Tailscale Funnel နှင့် ngrok Tunnel panel များကို **Settings → Appearance** တွင် ပြသနိုင်သလို ဖျောက်ထားနိုင်သည်။ Panel တစ်ခုကို ဖျောက်ခြင်းသည် လည်ပတ်နေသော tunnel ကို ရပ်တန့်စေမည်မဟုတ်ပါ။
### LLM Gateway ဉာဏ်ရည်မြှင့်လုပ်ဆောင်ချက်များ (အဆင့် 9)
- **Semantic Cache** — Streaming မဟုတ်သော temperature=0 response များကို အလိုအလျောက် cache လုပ်သည် (`X-OmniRoute-No-Cache: true` ဖြင့် ကျော်နိုင်သည်)
- **Request Idempotency** — `Idempotency-Key` သို့မဟုတ် `X-Request-Id` header မှတစ်ဆင့် 5s အတွင်းရှိ request အထပ်များကို ဖယ်ရှားသည်
- **Progress Tracking** — `X-OmniRoute-Progress: true` header မှတစ်ဆင့် ရွေးချယ်ဖွင့်နိုင်သော SSE `event: progress` event များ
---
### Translator စမ်းသပ်ကွင်း
**Dashboard → Translator** မှ ဝင်ရောက်ပါ။ OmniRoute က provider များအကြား API request များကို မည်သို့ ဘာသာပြန်ပေးသည်ကို အမှားရှာပြီး ပုံဖော်ကြည့်ရှုပါ။
| မုဒ် | ရည်ရွယ်ချက် |
| ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Playground** | မူရင်း/ပစ်မှတ် format များကို ရွေးချယ်ပြီး request တစ်ခုကို ကူးထည့်ကာ ဘာသာပြန်ထားသော output ကို ချက်ချင်းကြည့်ရှုပါ |
| **Chat Tester** | Proxy မှတစ်ဆင့် တိုက်ရိုက် chat message များ ပေးပို့ပြီး request/response စက်ဝန်းအပြည့်အစုံကို စစ်ဆေးပါ |
| **Test Bench** | ဘာသာပြန်မှုမှန်ကန်ကြောင်း အတည်ပြုရန် format ပေါင်းစပ်မှုများစွာအတွက် batch test များကို လုပ်ဆောင်ပါ |
| **Live Monitor** | Proxy မှတစ်ဆင့် request များ စီးဆင်းနေစဉ် အချိန်နှင့်တစ်ပြေးညီ ဘာသာပြန်မှုများကို ကြည့်ရှုပါ |
**အသုံးပြုနိုင်သော အခြေအနေများ:**
- သတ်မှတ်ထားသော client/provider ပေါင်းစပ်မှုတစ်ခု အဘယ်ကြောင့် မအောင်မြင်သည်ကို အမှားရှာရန်
- Thinking tag များ၊ tool call များနှင့် system prompt များ မှန်ကန်စွာ ဘာသာပြန်ထားကြောင်း အတည်ပြုရန်
- OpenAI၊ Claude၊ Gemini နှင့် Responses API format များအကြား format ကွာခြားချက်များကို နှိုင်းယှဉ်ရန်
---
### Routing နည်းဗျူဟာများ
**Dashboard → Settings → Routing** မှတစ်ဆင့် ပြင်ဆင်သတ်မှတ်ပါ။ Dashboard တွင် အသုံးအများဆုံး နည်းဗျူဟာ ခြောက်ခုကို ဖော်ပြထားပြီး combo များနှင့် auto-router သည် အတွင်းပိုင်း၌ ပိုမိုကျယ်ပြန့်သော နည်းဗျူဟာများကို ပံ့ပိုးသည်။
**Dashboard တွင် မြင်ရသော နည်းဗျူဟာများ (account အဆင့် routing):**
| နည်းဗျူဟာ | ဖော်ပြချက် |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Fill First** | Account များကို ဦးစားပေးအစီအစဉ်အတိုင်း အသုံးပြုသည် — မရနိုင်တော့သည့်အချိန်အထိ ပင်မ account က request အားလုံးကို ကိုင်တွယ်သည် |
| **Round Robin** | ပြင်ဆင်သတ်မှတ်နိုင်သော sticky ကန့်သတ်ချက်ဖြင့် account အားလုံးကို အလှည့်ကျအသုံးပြုသည် (ပုံသေ- account တစ်ခုလျှင် call 3 ကြိမ်) |
| **P2C (Power of Two Choices)** | ကျပန်း account 2 ခုကို ရွေးချယ်ပြီး ပိုမိုကျန်းမာသောတစ်ခုသို့ route လုပ်သည် — ကျန်းမာရေးအခြေအနေကို ထည့်သွင်းစဉ်းစားကာ load ကို ချိန်ညှိပေးသည် |
| **Random** | Fisher-Yates shuffle ကို အသုံးပြု၍ request တစ်ခုစီအတွက် account တစ်ခုကို ကျပန်းရွေးချယ်သည် |
| **Least Used** | သက်တမ်းအကြာဆုံး `lastUsedAt` timestamp ရှိသော account သို့ route လုပ်ပြီး traffic ကို ညီမျှစွာ ဖြန့်ဝေသည် |
| **Cost Optimized** | ဦးစားပေးတန်ဖိုး အနိမ့်ဆုံးရှိသော account သို့ route လုပ်ကာ ကုန်ကျစရိတ်အနည်းဆုံး provider များအတွက် အကောင်းဆုံးဖြစ်အောင် ဆောင်ရွက်သည် |
**အဆင့်မြင့် combo နှင့် auto နည်းဗျူဟာများ** (combo တစ်ခုစီအလိုက် သို့မဟုတ် `auto/*` prefix များမှတစ်ဆင့် ပြင်ဆင်သတ်မှတ်နိုင်သည် — [AUTO-COMBO.md](../routing/AUTO-COMBO.md) ကို ကြည့်ပါ):
- `priority` — တင်းကျပ်သောအစီအစဉ်ကို အသုံးပြုပြီး round-robin လုံးဝမလုပ်ပါ
- `weighted` — model တစ်ခုစီ၏ weight အလိုက် traffic ကို အချိုးကျခွဲဝေသည်
- `fill-first` — ကန့်သတ်ချက်ပြည့်သည်အထိ ပထမ model ကို အပြည့်အဝ အသုံးပြုသည်
- `round-robin` / `strict-random` / `random`
- `p2c` (Power of Two Choices)
- `least-used` နှင့် `cost-optimized`
- `auto` — candidate အားလုံးကို score အခြေခံ၍ ရွေးချယ်သည်
- `lkgp` (Last Known Good Provider) — နောက်ဆုံးအောင်မြင်ခဲ့သော provider ကို ဆက်လက်အသုံးပြုပြီးနောက် မအောင်မြင်ပါက စည်းမျဉ်းများအတိုင်း fallback လုပ်သည်
- `context-optimized` — လွတ်နေသော context window အကြီးဆုံးရှိသည့် model ကို ရွေးချယ်သည်
- `context-relay` — နောက်ဆက်တွဲ turn များအတွက် long-context model များကို ဆက်တိုက်ချိတ်ဆက်သည်
#### ပြင်ပ Sticky Session Header
ပြင်ပ session affinity အတွက် (ဥပမာ reverse proxy များ၏ နောက်ကွယ်ရှိ Claude Code/Codex agent များ) အောက်ပါတို့ကို ပေးပို့ပါ:
```http
X-Session-Id: your-session-key
```
OmniRoute သည် `x_session_id` ကိုလည်း လက်ခံပြီး အမှန်တကယ်အသုံးပြုသည့် session key ကို `X-OmniRoute-Session-Id` တွင် ပြန်ပေးသည်။
Nginx ကို အသုံးပြုပြီး underscore ပုံစံ header များ ပေးပို့ပါက အောက်ပါတို့ကို ဖွင့်ပါ:
```nginx
underscores_in_headers on;
```
#### Wildcard Model Alias များ
Model အမည်များကို ပြန်လည်သတ်မှတ်ရန် wildcard pattern များကို ဖန်တီးပါ:
```
Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-6
Pattern: gpt-* → Target: gh/gpt-5.3-codex
```
Wildcard များသည် `*` (မည်သည့် character မဆို) နှင့် `?` (character တစ်လုံး) ကို ပံ့ပိုးသည်။
#### Fallback Chain များ
Request အားလုံးတွင် သက်ရောက်မည့် global fallback chain များကို သတ်မှတ်ပါ:
```
Chain: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.3-codex
3. glm/glm-4.7
```
---
### အသုံးများသော Provider ပေါင်းစပ်မှုများနှင့် Routing Pattern များ
OmniRoute တွင် provider များစွာကို ပေါင်းစပ်ပြီး ၎င်းတို့အကြား route လုပ်ရန် နမူနာ pattern များမှာ အောက်ပါအတိုင်းဖြစ်သည်:
#### 1. Coding Agent Combo: ကုန်ကျစရိတ်/မြန်နှုန်း Fallback ပါဝင်သော အဆင့်မြင့် ကျိုးကြောင်းဆင်ခြင်မှု
Coding agent များ (OpenCode၊ Claude Code၊ Cursor၊ Cline) အတွက် အထူးသင့်လျော်သည်။ ကနဦးတွင် frontier reasoning model များသို့ route လုပ်ပြီး quota ကုန်ဆုံးသွားသည့်အခါ သို့မဟုတ် error ဖြစ်သည့်အခါ မြန်ဆန်သော coding model များသို့ fallback လုပ်သည်။
- **Dashboard**: Combos → New Combo → Name: `agent-coding` → Strategy: `Priority`
- **Models**:
1. `claude/claude-sonnet-4-6` (ပင်မ coding agent)
2. `openai/gpt-4o` (ဒုတိယအဆင့် စွမ်းဆောင်ရည်မြင့် fallback)
3. `deepseek/deepseek-v4-flash` (ထိရောက်မှုမြင့်ပြီး ကုန်ကျစရိတ်သက်သာသော fallback)
```bash
# 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. အခမဲ့အဆင့် အလိုအလျောက် အစားထိုးအသုံးပြုသည့် Combo
API ကုန်ကျစရိတ်မရှိဘဲ ရရှိနိုင်မှုကို အမြင့်ဆုံးဖြစ်စေရန် အခမဲ့အဆင့်နှင့် key မလိုအပ်သော provider များစွာကို ဆက်တိုက်ချိတ်ဆက်အသုံးပြုသည်။
- **နည်းဗျူဟာ**: `Least Used` သို့မဟုတ် `Round Robin` (quota များတစ်လျှောက် load ကို ဖြန့်ဝေသည်)
- **မော်ဒယ်များ**:
1. `groq/llama-3.3-70b-versatile`
2. `gemini/gemini-2.5-flash`
3. `cerebras/gpt-oss-120b`
```bash
# 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. မာလ်တီမိုဒယ် / ရုပ်ပုံနှင့် စာသား Pipeline
ပုံများကို နားလည်ခြင်းနှင့် code ထုတ်လုပ်ခြင်း ပါဝင်သည့် workflow များအတွက် အထူးပြု vision မော်ဒယ်များကို မြန်နှုန်းမြင့် စာသားထုတ်လုပ်မှုနှင့် တွဲဖက်အသုံးပြုခြင်း။
- **ပုံစံ**: vision စွမ်းရည်ရှိသော မော်ဒယ်များကို ဦးစွာစာရင်းပြုစုပြီး throughput မြင့်မားသော စာသား/code မော်ဒယ်ကို နောက်ဆုံးထားသည့် `Priority` combo တစ်ခု။
- **မော်ဒယ်များ**:
1. `gemini/gemini-2.5-pro` (ပုံနှင့် မာလ်တီမိုဒယ်အကြောင်းအရာများကို နားလည်နိုင်စွမ်းကောင်းမွန်သည်)
2. `openai/gpt-4o` (ရုပ်ပုံနားလည်မှုနှင့် tool အသုံးပြုမှု မျှတသည်)
3. `deepseek/deepseek-v4-flash` (စာသား/code ထုတ်လုပ်မှု)
---
### ခံနိုင်ရည်ရှိမှုနှင့် Circuit Breaker များ
**Dashboard → Settings → Resilience** မှတစ်ဆင့် စီစဉ်သတ်မှတ်ပါ။
OmniRoute သည် အစိတ်အပိုင်းငါးခုဖြင့် provider အဆင့် ခံနိုင်ရည်ရှိမှုကို အကောင်အထည်ဖော်ထားသည်-
1. **တောင်းဆိုမှု Queue နှင့် အရှိန်ထိန်းညှိခြင်း** — စနစ်အဆင့် တောင်းဆိုမှု ပုံသွင်းခြင်း-
- **တစ်မိနစ်လျှင် တောင်းဆိုမှုများ (RPM)** — account တစ်ခုစီအတွက် တစ်မိနစ်လျှင် အများဆုံး တောင်းဆိုမှုအရေအတွက်
- **တောင်းဆိုမှုများကြား အနည်းဆုံးအချိန်** — တောင်းဆိုမှုများကြား millisecond ဖြင့် သတ်မှတ်ထားသော အနည်းဆုံးအချိန်ကွာဟချက်
- **တစ်ပြိုင်နက် တောင်းဆိုမှု အများဆုံးအရေအတွက်** — account တစ်ခုစီအတွက် တစ်ပြိုင်နက် ပြုလုပ်နိုင်သော တောင်းဆိုမှု အများဆုံးအရေအတွက်
2. **ချိတ်ဆက်မှု Cooldown** — ပြန်လည်ကြိုးစားနိုင်သော ချို့ယွင်းမှုများပြီးနောက် ချိတ်ဆက်မှုတစ်ခုအတွက် auth type တစ်ခုစီအလိုက် စီစဉ်သတ်မှတ်မှု-
- **အခြေခံ Cooldown** — ပြန်လည်ကြိုးစားနိုင်သော upstream ချို့ယွင်းမှုများအတွက် မူလ cooldown ကာလ
- **Upstream Retry Hint များကို အသုံးပြုရန်** — ပေးထားပါက တရားဝင် `Retry-After` သို့မဟုတ် reset hint များကို လိုက်နာသည်
- **Backoff အဆင့် အများဆုံး** — ထပ်ခါတလဲလဲ ချို့ယွင်းမှုများအတွက် exponential backoff အမြင့်ဆုံးအဆင့်
3. **Provider Circuit Breaker** — provider ၏ အစမှအဆုံး ချို့ယွင်းမှုများကို ခြေရာခံပြီး စီစဉ်သတ်မှတ်ထားသော သတိပေးချက်အဆင့်သို့ ရောက်သောအခါ provider ကို အရည်အသွေးကျဆင်းနေသည်ဟု သတ်မှတ်ကာ စီစဉ်သတ်မှတ်ထားသော ချို့ယွင်းမှုအဆင့်သို့ ရောက်သောအခါ breaker ကို ဖွင့်သည်-
- **အရည်အသွေးကျဆင်းမှု အဆင့်သတ်မှတ်ချက်** — `DEGRADED` သို့ မဝင်မီ ဆက်တိုက်ဖြစ်ပေါ်သော provider ချို့ယွင်းမှု အရေအတွက်
- **ချို့ယွင်းမှု အဆင့်သတ်မှတ်ချက်** — `OPEN` သို့ မဝင်မီ ဆက်တိုက်ဖြစ်ပေါ်သော provider ချို့ယွင်းမှု အရေအတွက်
- **Reset ကြာချိန်** — provider ကို ထပ်မံစမ်းသပ်ခြင်းမပြုမီ စောင့်ဆိုင်းရမည့် အချိန်ကာလ
- **CLOSED** (ကောင်းမွန်သည်) — တောင်းဆိုမှုများ ပုံမှန်အတိုင်း စီးဆင်းသည်
- **DEGRADED** — မြင့်တက်နေသော ချို့ယွင်းမှုများကို ခြေရာခံနေစဉ် တောင်းဆိုမှုများ ဆက်လက်စီးဆင်းသည်
- **OPEN** — ထပ်ခါတလဲလဲ ချို့ယွင်းမှုများဖြစ်ပြီးနောက် provider ကို ယာယီပိတ်ဆို့ထားသည်
- **HALF_OPEN** — provider ပြန်လည်ကောင်းမွန်လာခြင်းရှိမရှိ စမ်းသပ်နေသည်
ချိတ်ဆက်မှုတစ်ခုချင်းနှင့် သက်ဆိုင်သော `429` rate limit များသည် **ချိတ်ဆက်မှု Cooldown** ထဲတွင်သာ ရှိနေပြီး provider breaker တွင် ထည့်သွင်းရေတွက်မည်မဟုတ်ပါ။
provider breaker ၏ လက်ရှိ runtime အခြေအနေကို **Dashboard → Health** တွင်သာ ပြသသည်။
4. **Cooldown ကို စောင့်ဆိုင်းရန်** — ရွေးချယ်နိုင်သော ချိတ်ဆက်မှုအားလုံး cooldown ဖြစ်နေပြီးသားဆိုလျှင် OmniRoute သည် အစောဆုံးပြီးဆုံးမည့် cooldown ကို စောင့်ဆိုင်းပြီး တူညီသော client တောင်းဆိုမှုကို အလိုအလျောက် ပြန်လည်ကြိုးစားနိုင်သည်။
5. **Rate Limit အလိုအလျောက် ရှာဖွေခြင်း** — upstream provider များက တိကျသော စောင့်ဆိုင်းရမည့်အချိန်ကာလကို ပြန်ပေးသောအခါ ထို setting ကို ဖွင့်ထားပါက ယင်း hint များသည် local connection cooldown ကို အစားထိုးအသုံးပြုသည်။
**ကျွမ်းကျင်သူ အကြံပြုချက်:** ပြတ်တောက်မှုတစ်ခုဖြစ်ပြီးနောက် လက်ရှိအသုံးပြုနေသော provider breaker များကို စစ်ဆေးရန်နှင့် reset လုပ်ရန် **Health** စာမျက်နှာကို အသုံးပြုပါ။ Resilience စာမျက်နှာသည် စီစဉ်သတ်မှတ်မှုများကိုသာ ပြောင်းလဲပေးသည်။
---
### Database Export / Import
Database backup များကို **Dashboard → Settings → System & Storage** တွင် စီမံပါ။
| လုပ်ဆောင်ချက် | ဖော်ပြချက် |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Database ကို Export လုပ်ရန်** | လက်ရှိ SQLite database ကို `.sqlite` file အဖြစ် download လုပ်ပေးသည် |
| **အားလုံးကို Export လုပ်ရန် (.tar.gz)** | database၊ setting များ၊ combo များ၊ provider ချိတ်ဆက်မှုများ (credential မပါဝင်ပါ) နှင့် API key metadata တို့ပါဝင်သော backup archive အပြည့်အစုံကို download လုပ်ပေးသည် |
| **Database ကို Import လုပ်ရန်** | လက်ရှိ database ကို အစားထိုးရန် `.sqlite` file တစ်ခုကို upload လုပ်သည်။ `DISABLE_SQLITE_AUTO_BACKUP=true` မဟုတ်ပါက import မလုပ်မီ backup တစ်ခုကို အလိုအလျောက် ဖန်တီးပေးသည် |
```bash
# API: Database ကို Export လုပ်ရန်
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
# API: အားလုံးကို Export လုပ်ရန် (archive အပြည့်အစုံ)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
# API: Database ကို Import လုပ်ရန်
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
```
**Import စစ်ဆေးအတည်ပြုခြင်း:** Import လုပ်ထားသော file ကို မှန်ကန်ပြည့်စုံမှု (SQLite pragma စစ်ဆေးမှု)၊ လိုအပ်သော table များ (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) နှင့် အရွယ်အစား (အများဆုံး 100MB) အတွက် စစ်ဆေးအတည်ပြုသည်။
**အသုံးပြုနိုင်သည့် အခြေအနေများ:**
- OmniRoute ကို စက်များအကြား ရွှေ့ပြောင်းခြင်း
- ဘေးအန္တရာယ်ဖြစ်ပြီးနောက် ပြန်လည်ရယူရန် ပြင်ပ backup များ ဖန်တီးခြင်း
- အဖွဲ့ဝင်များအကြား စီစဉ်သတ်မှတ်မှုများကို မျှဝေခြင်း (အားလုံးကို export လုပ်ရန် → archive ကို မျှဝေရန်)
---
### Settings Dashboard
လွယ်ကူစွာ လမ်းညွှန်ကြည့်ရှုနိုင်ရန် settings စာမျက်နှာကို **tab 7 ခု** အဖြစ် စီစဉ်ထားသည်-
| တက်ဘ် | အကြောင်းအရာ |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **အထွေထွေ** | စနစ်သိုလှောင်မှုကိရိယာများ၊ မူလအပြုအမူ၊ Endpoint tunnel မြင်နိုင်မှု |
| **အသွင်အပြင်** | Theme ထိန်းချုပ်မှုများ (အလင်း/အမှောင်/စနစ်)၊ ဘေးဘားမြင်နိုင်မှု၊ Cloudflare/Tailscale/ngrok tunnel ကတ်များအတွက် panel အဖွင့်အပိတ်များ |
| **AI** | စဉ်းစားမှု budget (passthrough / auto-strip / custom / adaptive — [THINKING_BUDGET.md](./THINKING_BUDGET.md) ကိုကြည့်ပါ)၊ ကမ္ဘာလုံးဆိုင်ရာ system prompt၊ prompt cache စာရင်းအင်းများ |
| **လုံခြုံရေး** | အကောင့်ဝင်ခြင်း/စကားဝှက် ဆက်တင်များ၊ IP ဝင်ရောက်ခွင့်ထိန်းချုပ်မှု၊ `/models` အတွက် API စစ်မှန်ကြောင်းအတည်ပြုမှု၊ Provider ပိတ်ဆို့ခြင်း၊ prompt-injection ကာကွယ်မှု |
| **လမ်းကြောင်းသတ်မှတ်ခြင်း** | ကမ္ဘာလုံးဆိုင်ရာ လမ်းကြောင်းသတ်မှတ်မှုနည်းဗျူဟာ (Fill First / Round Robin / P2C / Random / Least Used / Cost Optimized)၊ wildcard model alias များ၊ fallback အစဉ်များ၊ combo မူလတန်ဖိုးများ |
| **ခံနိုင်ရည်ရှိမှု** | တောင်းဆိုမှုတန်းစီစနစ်၊ ချိတ်ဆက်မှု cooldown၊ provider breaker ဖွဲ့စည်းမှုနှင့် cooldown ပြီးဆုံးသည်အထိ စောင့်ဆိုင်းသည့် အပြုအမူ |
| **အဆင့်မြင့်** | ကမ္ဘာလုံးဆိုင်ရာ proxy ဖွဲ့စည်းမှု (HTTP/SOCKS5)၊ provider တစ်ခုချင်းအလိုက် proxy override များ |
အထွေထွေကဏ္ဍတွင် ဖတ်ရှုရန်သီးသန့် logging နှင့် cache မှတ်ချက်များကို ထပ်မံဖော်ပြတော့မည်မဟုတ်ပါ။ Database ထိန်းသိမ်းထားမှုနှင့်
အကောင်းဆုံးဖြစ်အောင်လုပ်ဆောင်မှု ဆက်တင်များကို `/api/settings/database` မှတစ်ဆင့် သိမ်းဆည်းထားပြီး၊ cache ကို ကိုယ်တိုင်ရှင်းလင်းရန်
`DELETE /api/cache` ကို အသုံးပြုသည်။ တောင်းဆိုမှုနှင့် proxy log row အများဆုံးကန့်သတ်ချက်များကို
`CALL_LOGS_TABLE_MAX_ROWS` နှင့် `PROXY_LOGS_TABLE_MAX_ROWS` တို့ဖြင့် ထိန်းချုပ်သည်။
---
### ကုန်ကျစရိတ်နှင့် Budget စီမံခန့်ခွဲမှု
**Dashboard → Costs** မှတစ်ဆင့် ဝင်ရောက်ပါ။
| တက်ဘ် | ရည်ရွယ်ချက် |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Budget** | နေ့စဉ်/အပတ်စဉ်/လစဉ် budget များနှင့် အချိန်နှင့်တစ်ပြေးညီ ခြေရာခံမှုကို အသုံးပြု၍ API key တစ်ခုချင်းအလိုက် သုံးစွဲမှုကန့်သတ်ချက်များ သတ်မှတ်ပါ |
| **စျေးနှုန်း** | Model စျေးနှုန်းစာရင်းများကို ကြည့်ရှုပြင်ဆင်ပါ — provider တစ်ခုချင်းအလိုက် input/output token 1K အတွက် ကုန်ကျစရိတ် |
```bash
# API: Budget တစ်ခု သတ်မှတ်ရန်
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
# API: လက်ရှိ budget အခြေအနေကို ရယူရန်
curl http://localhost:20128/api/usage/budget
```
**ကုန်ကျစရိတ်ခြေရာခံခြင်း:** တောင်းဆိုမှုတိုင်းသည် token အသုံးပြုမှုကို မှတ်တမ်းတင်ပြီး စျေးနှုန်းဇယားကို အသုံးပြု၍ ကုန်ကျစရိတ်ကို တွက်ချက်သည်။ Provider၊ model နှင့် API key အလိုက် ခွဲခြမ်းစိတ်ဖြာချက်များကို **Dashboard → Usage** တွင် ကြည့်ရှုပါ။
---
### အသံမှ စာသားသို့ ပြောင်းလဲခြင်း
OmniRoute သည် OpenAI နှင့် တွဲဖက်အသုံးပြုနိုင်သော endpoint မှတစ်ဆင့် အသံမှ စာသားသို့ ပြောင်းလဲခြင်းကို ပံ့ပိုးသည်-
```bash
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
# 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` သည် မူရင်း Deepgram လမ်းကြောင်းဖြစ်ပြီး Deepgram API key လိုအပ်သည်။
OpenRouter ကိုသာ ဖွဲ့စည်းထားပါက `openrouter/deepgram/nova-3` ကို အသုံးပြုပါ။
**အသံမှ စာသားသို့ (transcription)** provider များ-
- `openai/` (whisper နှင့် တွဲဖက်အသုံးပြုနိုင်သည်)
- `groq/` (Groq Whisper Turbo)
- `deepgram/` (Nova မိသားစု)
- `assemblyai/`
- `nvidia/` (Parakeet, Canary)
- `huggingface/` (whisper မူကွဲများ)
- `qwen/`
**စာသားမှ အသံသို့ (`POST /v1/audio/speech`)** provider များ-
- `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/`
Transcription အတွက် ပံ့ပိုးထားသော အသံဖော်မတ်များမှာ `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm` ဖြစ်သည်။ TTS output ဖော်မတ်များသည် provider ပေါ်မူတည်သည် (mp3, wav, opus, pcm, mulaw)။
---
### Combo ချိန်ညှိမှုနည်းဗျူဟာများ
Combo တစ်ခုချင်းအလိုက် ချိန်ညှိမှုကို **Dashboard → Combos → Create/Edit → Strategy** တွင် ဖွဲ့စည်းပါ။
| နည်းဗျူဟာ | ဖော်ပြချက် |
| ------------------ | ------------------------------------------------------------------------------------------------------- |
| **Round-Robin** | Model များကို အစဉ်လိုက် အလှည့်ကျ အသုံးပြုသည် |
| **Priority** | ပထမ model ကို အမြဲဦးစွာ စမ်းသပ်ပြီး error ဖြစ်သည့်အခါမှသာ fallback ပြုလုပ်သည် |
| **Random** | တောင်းဆိုမှုတစ်ခုစီအတွက် combo ထဲမှ ကျပန်း model တစ်ခုကို ရွေးချယ်သည် |
| **Weighted** | Model တစ်ခုချင်းအလိုက် သတ်မှတ်ထားသော weight များအပေါ် အချိုးကျ လမ်းကြောင်းပေးသည် |
| **Least-Used** | လတ်တလော တောင်းဆိုမှုအနည်းဆုံးရှိသော model သို့ လမ်းကြောင်းပေးသည် (combo metric များကို အသုံးပြုသည်) |
| **Cost-Optimized** | ရရှိနိုင်သော model များထဲမှ စျေးအသက်သာဆုံး model သို့ လမ်းကြောင်းပေးသည် (စျေးနှုန်းဇယားကို အသုံးပြုသည်) |
ကမ္ဘာလုံးဆိုင်ရာ combo မူလတန်ဖိုးများကို **Dashboard → Settings → Routing → Combo Defaults** တွင် သတ်မှတ်နိုင်သည်။
Combo target timeout များသည် မူလအားဖြင့် လက်ရှိတောင်းဆိုမှု timeout ကို ဆက်ခံသည်။ Target တစ်ခုချင်းအလိုက် ပိုတိုသောကန့်သတ်ချက်က
ပိုမိုမြန်ဆန်သော fallback ကို စတင်စေလိုသည့်အခါမှသာ combo မူလတန်ဖိုးများ သို့မဟုတ် combo တစ်ခုချင်းစီတွင် **Target timeout
(seconds)** ကို အသုံးပြုပါ။
Zero-latency combo အကောင်းဆုံးဖြစ်အောင်လုပ်ဆောင်မှုများသည် ကိုယ်တိုင်ရွေးချယ်ဖွင့်ရသော လုပ်ဆောင်ချက်များဖြစ်သည်။ ဤ latency လုပ်ဆောင်ချက်များက fallback target များနှင့်
အပြိုင်လုပ်ဆောင်ခြင်း၊ TTFT မှတ်တမ်းအပေါ် အခြေခံ၍ target များကို ကျော်ခြင်း သို့မဟုတ် fallback တောင်းဆိုမှုများကို ချုံ့ခြင်းတို့ မဖြစ်စေရန် **Zero-latency optimizations** ကို ပိတ်ထားပါ။
၎င်းကို ဖွင့်ထားပါက ဖွဲ့စည်းထားသော hedging၊ ကြိုတင်ခန့်မှန်းသည့် TTFT ကျော်ခြင်းနှင့် တက်ကြွသော fallback ချုံ့ခြင်းတို့က routing/request တိကျမှုနှင့် အစားထိုး၍ tail
latency ကို လျှော့ချနိုင်သည်။
အထက်ပိုင်းပံ့ပိုးသူများက တိကျသော `max_tokens` / `maxOutputTokens` ကန့်သတ်ချက်များ လိုအပ်သည့်အခါ **Reasoning token buffer** ကို ပိတ်ပါ။ ဖွင့်ထားသည့်အခါ ပေါင်းစပ်လမ်းကြောင်းရွေးချယ်မှုသည် သိရှိထားသော output အများဆုံးကန့်သတ်ချက်ရှိသည့် မော်ဒယ်များအတွက်သာ reasoning-model အပိုနေရာကို ထည့်ပေးပြီး၊ လုံခြုံသော ကြားခံတန်ဖိုးသည် ထိုကန့်သတ်ချက်ကို ကျော်လွန်မည့်အခြေအနေတွင် client token ကန့်သတ်ချက်ကို မပြောင်းလဲဘဲ ထားရှိသည်။ Client ကန့်သတ်ချက်သည် သိရှိထားသော အများဆုံးကန့်သတ်ချက်ထက် ကျော်လွန်နေပြီးသားဖြစ်ပါက၊ OmniRoute သည် အထက်ပိုင်းတောင်းဆိုချက်ကို မပို့မီ ထိုကန့်သတ်ချက်အထိ လျှော့ချသတ်မှတ်ပေးသည်။
---
### စနစ်ကျန်းမာရေး ဒက်ရှ်ဘုတ်
**Dashboard → Health** မှတစ်ဆင့် ဝင်ရောက်ပါ။ ကတ် ၆ ခုဖြင့် အချိန်နှင့်တစ်ပြေးညီ စနစ်ကျန်းမာရေး အခြေအနေခြုံငုံသုံးသပ်ချက်ကို ပြသသည်-
| ကတ် | ပြသသည့်အကြောင်းအရာ |
| ------------------------- | --------------------------------------------------------------------------------------------- |
| **စနစ်အခြေအနေ** | အလုပ်လုပ်နေသည့်ကြာချိန်၊ ဗားရှင်း၊ မမ်မိုရီအသုံးပြုမှု၊ ဒေတာလမ်းညွှန် |
| **ပံ့ပိုးသူ ကျန်းမာရေး** | ကမ္ဘာလုံးဆိုင်ရာ ပံ့ပိုးသူ circuit breaker ၏ လက်ရှိ runtime အခြေအနေ |
| **နှုန်းကန့်သတ်ချက်များ** | အကောင့်တစ်ခုချင်းစီအလိုက် လက်ကျန်အချိန်နှင့်အတူ လက်ရှိအသုံးပြုနေသော ချိတ်ဆက်မှု cooldown များ |
| **လက်ရှိ Lockout များ** | လက်ရှိအသုံးပြုနေသော မော်ဒယ်အလိုက် lockout များနှင့် ယာယီဖယ်ထုတ်မှုများ |
| **Signature Cache** | ထပ်တူဖယ်ရှားရေး cache စာရင်းအင်းများ (လက်ရှိ key များ၊ hit rate) |
| **Latency Telemetry** | ပံ့ပိုးသူတစ်ခုချင်းစီအလိုက် p50/p95/p99 latency စုစည်းချက် |
**ကျွမ်းကျင်သူအကြံပြုချက်:** Health စာမျက်နှာသည် ၁၀ စက္ကန့်တိုင်း အလိုအလျောက် ပြန်လည်စတင်ပြသသည်။ ပြဿနာများ ကြုံတွေ့နေသည့် ပံ့ပိုးသူများကို ဖော်ထုတ်ရန် circuit breaker ကတ်ကို အသုံးပြုပါ။
---
## 🤖 အလိုအလျောက် လမ်းကြောင်းသတ်မှတ်ခြင်း (ပြင်ဆင်သတ်မှတ်ရန်မလို)
OmniRoute တွင် ချိတ်ဆက်ထားသော provider အားလုံးမှတစ်ဆင့် request တစ်ခုချင်းစီအတွက် အကောင်းဆုံး model ကို ရွေးချယ်ပေးသည့် **ရမှတ်အခြေပြု auto-router** ပါဝင်ပြီး ထိန်းသိမ်းရမည့် combo မလိုအပ်ပါ။ `auto/*` prefix များထဲမှ တစ်ခုဖြင့် request ကို ပေးပို့ရုံဖြင့် OmniRoute သည် latency၊ ကုန်ကျစရိတ်၊ အောင်မြင်မှုနှုန်း၊ context ကိုက်ညီမှု၊ လုပ်ဆောင်ချက်အတွက် model သင့်လျော်မှု၊ မကြာသေးမီက ကျရှုံးမှုများ၊ quota နှင့် circuit-breaker အခြေအနေတို့အပေါ် မူတည်၍ candidate များကို အမှတ်ပေးကာ virtual combo တစ်ခုကို ချက်ချင်းဖွဲ့စည်းပေးပါမည်။
| Prefix | ဦးစားပေး အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်သည့်အရာ |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `auto` | မျှတသော မူလသတ်မှတ်ချက် (latency × ကုန်ကျစရိတ် × အောင်မြင်မှုနှုန်း) |
| `auto/coding` | Coding လုပ်ဆောင်ချက်များ- Claude၊ GPT-5၊ GLM၊ Kimi၊ Qwen Coder၊ DeepSeek coder များကို ဦးစားပေးသည် |
| `auto/cheap` | အနိမ့်ဆုံး $/token၊ ပိုမြင့်သော latency ကို လက်ခံသည် |
| `auto/fast` | အနိမ့်ဆုံး latency၊ ကုန်ကျစရိတ်ကို ထည့်သွင်းစဉ်းစားခြင်းမရှိ |
| `auto/offline` | စက်တွင်းသုံး provider များသာ (Ollama, vLLM, llama.cpp) — air-gapped setup များအတွက် အသုံးဝင်သည် |
| `auto/smart` | ကျိုးကြောင်းဆင်ခြင်မှု အရည်အသွေးကို ဦးစားပေးသည် (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) |
| `auto/lkgp` | "နောက်ဆုံး အောင်မြင်စွာ အသုံးပြုခဲ့သော Provider" — နောက်ဆုံးအောင်မြင်ခဲ့သည့် provider ကို ပုံသေရွေးချယ်ပြီးနောက် မအောင်မြင်ပါက စည်းမျဉ်းများအတိုင်း အရန်ပြောင်းလဲသည် |
ဥပမာ-
```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
}'
```
ရမှတ်တွက်ချက်မှု weight များကို ချိန်ညှိနည်း၊ provider များကို blacklist ထည့်သွင်းနည်းနှင့် **Dashboard → Auto Combo** တွင် လမ်းကြောင်းရွေးချယ်မှု ဆုံးဖြတ်ချက်များကို စစ်ဆေးနည်းတို့အပါအဝင် auto-router အကြောင်း အပြည့်အစုံကို [AUTO-COMBO.md](../routing/AUTO-COMBO.md) တွင် ဖော်ပြထားသည်။
---
## 🔌 MCP နှင့် A2A ပေါင်းစပ်အသုံးပြုမှု
OmniRoute သည် **MCP server** (Model Context Protocol) နှင့် **A2A server** (Agent-to-Agent JSON-RPC 2.0) နှစ်မျိုးစလုံးဖြစ်သည်။ MCP နှင့် ကိုက်ညီသော မည်သည့် IDE သို့မဟုတ် agent host မဆို OmniRoute tool များကို တိုက်ရိုက်ခေါ်ယူအသုံးပြုနိုင်ပြီး အပို wrapper မလိုအပ်ပါ။
### MCP ပို့ဆောင်မှုနည်းလမ်းများ
- **SSE**: `http://localhost:20128/api/mcp/sse`
- **Streamable HTTP**: `http://localhost:20128/api/mcp/stream`
- **stdio**: `omniroute --mcp` (stdio ကို ပိုမိုနှစ်သက်သော IDE plugin များအတွက်)
### Claude Desktop ကို ချိတ်ဆက်ခြင်း
`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) သို့မဟုတ် Windows/Linux ရှိ အလားတူဖိုင်ကို ပြင်ဆင်ပါ-
```json
{
"mcpServers": {
"omniroute": {
"command": "omniroute",
"args": ["--mcp"]
}
}
}
```
### Cursor / Continue / VS Code MCP ကို ချိတ်ဆက်ခြင်း
SSE URL `http://localhost:20128/api/mcp/sse` နှင့် **Dashboard → API Keys** တွင် ဖန်တီးထားသော Bearer API key ကို အသုံးပြုပါ။
### Scope များ
လက်ရှိတွင် MCP က အမည်သတ်မှတ်ထားသော scope 32 ခုကို သတ်မှတ်ပေးထားသည်။ Bearer key တစ်ခုချင်းစီကို သီးခြား scope များအတွက်သာ အသုံးပြုနိုင်ရန် ကန့်သတ်နိုင်သည် — တရားဝင်သတ်မှတ်ထားသော scope နှင့် tool စာရင်းအတွက် [MCP-SERVER.md](../frameworks/MCP-SERVER.md) ကို ကြည့်ရှုပြီး JSON-RPC schema အတွက် [A2A-SERVER.md](../frameworks/A2A-SERVER.md) ကို ကြည့်ရှုပါ။
---
## 🧠 Skills စနစ်
OmniRoute သည် agent များနှင့် A2A endpoint တို့က သက်ဆိုင်ရာနယ်ပယ်အလိုက် routine များ (ဥပမာ `code-review`, `summarize`, `extract-facts`, `web-research`) ကို လုပ်ဆောင်နိုင်ရန် တိုးချဲ့နိုင်သော **skill framework** (`src/lib/skills/`) ကို ပံ့ပိုးပေးသည်။
- **Marketplace UI** — **Dashboard → Skills** မှ skill များကို ရှာဖွေကြည့်ရှုပြီး ထည့်သွင်းပါ
- **Key တစ်ခုချင်းအလိုက် scope များ** — မည်သည့် API key များက မည်သည့် skill များကို ခေါ်ယူအသုံးပြုနိုင်သည်ကို ကန့်သတ်ပါ
- **စိတ်ကြိုက် skill များ** — TypeScript ဖိုင်တစ်ခုကို `src/lib/a2a/skills/` ထဲသို့ ထည့်၍ register လုပ်လိုက်သည်နှင့် A2A မှတစ်ဆင့် ချက်ချင်းခေါ်ယူအသုံးပြုနိုင်မည်ဖြစ်သည်
အပြည့်အစုံကို [SKILLS.md](../frameworks/SKILLS.md) တွင် ကြည့်ပါ။
---
## 💾 Memory စနစ်
OmniRoute သည် ပေါင်းစပ်ရှာဖွေရယူမှုဖြင့် **ရေရှည် စကားဝိုင်းမှတ်ဉာဏ်** ကို အမြဲတမ်းသိမ်းဆည်းထားသည်-
- ယခင်အပြန်အလှန်ပြောဆိုမှုများအတွင်း keyword ဖြင့် ရှာဖွေရန် **SQLite FTS5**
- အဓိပ္ပာယ်ဆက်စပ်မှုအလိုက် ပြန်လည်မှတ်မိရန် **Qdrant vector store** (ချန်လှပ်နိုင်)
- **အချက်အလက်များ အလိုအလျောက်ထုတ်ယူခြင်း** — session တစ်ခုစီပြီးနောက် entity များ၊ နှစ်သက်မှုများနှင့် ဆုံးဖြတ်ချက်များကို အကျဉ်းချုပ်၍ `memory_facts` table တွင် သိမ်းဆည်းသည်
- Memory များကို API key တစ်ခုချင်းနှင့် session တစ်ခုချင်းအလိုက် သီးခြားကန့်သတ်ထားသည်
**Dashboard → Memory** တွင် memory များကို စီမံပါ (ရှာဖွေခြင်း၊ တည်းဖြတ်ခြင်း၊ ထုတ်ယူခြင်း၊ အပြီးဖျက်ခြင်း)။ HTTP interface (`/api/memory/*`) မှတစ်ဆင့် agent များသည် အချက်အလက်များကို ပရိုဂရမ်ဖြင့် ပေးပို့ပြီး မေးမြန်းရှာဖွေနိုင်သည် — [MEMORY.md](../frameworks/MEMORY.md) ကို ကြည့်ပါ။
---
## 🔔 Webhook များ
အချိန်နှင့်တစ်ပြေးညီ စောင့်ကြည့်ခြင်းနှင့် အလိုအလျောက်လုပ်ဆောင်ခြင်းအတွက် OmniRoute event များကို စာရင်းသွင်းရယူပါ။
- ဦးတည်ရာ URL နှင့် HMAC signing secret ကို အသုံးပြု၍ **Dashboard → Webhooks** တွင် webhook တစ်ခု ဖန်တီးပါ
- ရရှိနိုင်သော event များ- `request.completed`, `request.failed`, `provider.unavailable`, `budget.exceeded`, `combo.switched`, `circuit_breaker.opened`, `circuit_breaker.closed`
- အတည်ပြုစစ်ဆေးရန် payload တိုင်းတွင် `X-OmniRoute-Signature` (HMAC-SHA256) ပါဝင်သည်
- ပြန်လည်ကြိုးပမ်းမှုများ- exponential backoff ဖြင့် 3 ကြိမ် ကြိုးပမ်းပြီးနောက် dead-letter queue သို့ ပို့သည်
Schema အပြည့်အစုံကို [WEBHOOKS.md](../frameworks/WEBHOOKS.md) တွင် ကြည့်ပါ။
---
## ☁️ Cloud Agent များ
OmniRoute သည် cloud coding agent များ (**OpenAI Codex Cloud**, **Devin**, **Jules**, **Antigravity**) နှင့် ပေါင်းစပ်ထားသောကြောင့် local routing ကို ကိုင်တွယ်သည့် dashboard တစ်ခုတည်းမှ အချိန်ကြာမြင့်စွာ လုပ်ဆောင်ရသော task များကိုလည်း ပေးပို့လုပ်ဆောင်နိုင်သည်။
- **Dashboard → Cloud Agents** တွင် သို့မဟုတ် `POST /api/v1/agents/tasks` မှတစ်ဆင့် task များ ဖန်တီးပါ
- Task တစ်ခုချင်းအလိုက် အခြေအနေ၊ log များနှင့် artifact များကို ခြေရာခံပါ
- Provider တစ်ခုချင်းအတွက် သင့်ကိုယ်ပိုင် API key ကို အသုံးပြုပါ — credential များသည် OmniRoute instance ပြင်ပသို့ မည်သည့်အခါမျှ ထွက်မသွားပါ
အပြည့်အစုံကို [CLOUD_AGENT.md](../frameworks/CLOUD_AGENT.md) တွင် ကြည့်ပါ။
---
## 🛠️ ပရိုဂရမ်ဖြင့် စီမံခန့်ခွဲခြင်း
**`manage` scope ပါသော Bearer key** ကို အသုံးပြု၍ OmniRoute resource အားလုံး (provider များ၊ combo များ၊ key များ၊ setting များ) ကို HTTP မှတစ်ဆင့် စီမံခန့်ခွဲနိုင်သည်။
**Dashboard → API Keys → New Key → Scope: manage** တွင် key ကို ဖန်တီးပြီးနောက်-
```bash
# Provider များကို စာရင်းပြုစုပါ
curl http://localhost:20128/api/providers \
-H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"
# Provider ချိတ်ဆက်မှုတစ်ခု ထည့်ပါ
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" }'
# Combo တစ်ခု ဖန်တီးပါ
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" }] }'
# API key များကို စာရင်းပြုစုပါ/ဖန်တီးပါ
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"] }'
```
Endpoint catalog အပြည့်အစုံနှင့် request/response schema များအတွက် [API_REFERENCE.md](../reference/API_REFERENCE.md) ကို ကြည့်ပါ။
---
## 💻 အတွင်းပိုင်း CLI
OmniRoute တွင် စနစ်ထည့်သွင်းခြင်း၊ ပြဿနာရှာဖွေစစ်ဆေးခြင်းနှင့် လည်ပတ်ချိန်ထိန်းချုပ်ခြင်းတို့အတွက် အတွင်းပိုင်း CLI (`omniroute …`) ပါဝင်သည်။ ၎င်းသည် ပြင်ပအဖွဲ့အစည်း CLI များ (Claude Code, Cursor, Codex, Cline, …) ကို OmniRoute နှင့် ဆက်သွယ်နိုင်စေရန် ပြင်ဆင်သတ်မှတ်ပေးသည့် dashboard ရှိ **"CLI Tools" စာမျက်နှာနှင့် သီးခြားဖြစ်သည်**။
```bash
omniroute setup # အဆင့်လိုက် တုံ့ပြန်ဆောင်ရွက်နိုင်သည့် wizard (စကားဝှက်၊ provider များ၊ combo များ)
omniroute setup --non-interactive # CI အတွက် အဆင်ပြေသည်
omniroute doctor # စနစ်ကျန်းမာရေး စစ်ဆေးခြင်း (data dir၊ DB၊ provider များ၊ port များ)
omniroute providers available # ပံ့ပိုးထားသော provider များကို စာရင်းပြုစုရန်
omniroute providers list # ပြင်ဆင်သတ်မှတ်ထားသော ချိတ်ဆက်မှုများကို စာရင်းပြုစုရန်
omniroute providers test # provider ချိတ်ဆက်မှုကို တိုက်ရိုက်စမ်းသပ်ရန်
omniroute combos list # combo များကို စာရင်းပြုစုရန်
omniroute combos switch # မူလ combo ကို သတ်မှတ်ရန်
omniroute models # ရရှိနိုင်သော model များကို စာရင်းပြုစုရန် (--json, --search)
omniroute keys add | list | remove # terminal မှ API key များကို စီမံခန့်ခွဲရန်
omniroute backup # config + DB ကို snapshot ပြုလုပ်ရန်
omniroute restore [] # snapshot တစ်ခုမှ ပြန်လည်ရယူရန်
omniroute health # အသေးစိတ်စနစ်ကျန်းမာရေး (breaker များ၊ cache၊ memory)
omniroute quota # provider quota အသုံးပြုမှု
omniroute mcp status # MCP server အခြေအနေ
omniroute a2a status # A2A server အခြေအနေ
omniroute tunnel list|create|stop # Cloudflare/Tailscale/ngrok tunnel များ
omniroute reset-password # admin စကားဝှက်ကို ပြန်လည်သတ်မှတ်ရန်
omniroute --mcp # stdio မှတစ်ဆင့် MCP server ကို စတင်ရန်
omniroute --port 3000 # စိတ်ကြိုက် port ပေါ်တွင် server ကို စတင်ရန်
```
အကြံပြုချက်- ကျန်းမာရေးမကောင်းသော provider ချိတ်ဆက်မှုများအတွက် သတိပေးချက်ရရှိရန် `omniroute doctor --json` ကို သင်၏ monitoring tool နှင့် တွဲဖက်အသုံးပြုပါ။
---
## 🖥️ Desktop အပလီကေးရှင်း (Electron)
OmniRoute ကို Windows၊ macOS နှင့် Linux အတွက် မူရင်း desktop အပလီကေးရှင်းအဖြစ် ရရှိနိုင်သည်။
### ထည့်သွင်းခြင်း
```bash
# electron directory မှ-
cd electron
npm install
# Development mode (လည်ပတ်နေသော Next.js dev server သို့ ချိတ်ဆက်သည်)-
npm run dev
# Production mode (standalone build ကို အသုံးပြုသည်)-
npm start
```
### Installer များ တည်ဆောက်ခြင်း
```bash
cd electron
npm run build # လက်ရှိ platform
npm run build:win # Windows (.exe NSIS)
npm run build:mac # macOS (.dmg universal)
npm run build:linux # Linux (.AppImage)
```
Output → `electron/dist-electron/`
### အဓိကလုပ်ဆောင်ချက်များ
| လုပ်ဆောင်ချက် | ဖော်ပြချက် |
| --------------------------- | ---------------------------------------------------------------------------- |
| **Server အဆင်သင့်ဖြစ်မှု** | window မပြသမီ server ကို အခါအားလျော်စွာ စစ်ဆေးသည် (မျက်နှာပြင်အလွတ် မပေါ်ပါ) |
| **System Tray** | tray သို့ ချုံ့ရန်၊ port ပြောင်းရန်နှင့် tray menu မှ ထွက်ရန် |
| **Port စီမံခန့်ခွဲမှု** | tray မှ server port ကို ပြောင်းရန် (server ကို အလိုအလျောက် ပြန်လည်စတင်သည်) |
| **Content Security Policy** | session header များမှတစ်ဆင့် တင်းကျပ်သော CSP |
| **တစ်ခုတည်းသော Instance** | တစ်ကြိမ်လျှင် app instance တစ်ခုသာ လည်ပတ်နိုင်သည် |
| **Offline Mode** | ထည့်သွင်းပေးထားသော Next.js server သည် အင်တာနက်မရှိဘဲ အလုပ်လုပ်သည် |
### Environment Variable များ
| Variable | မူလတန်ဖိုး | ဖော်ပြချက် |
| --------------------- | ---------- | -------------------------------------- |
| `OMNIROUTE_PORT` | `20128` | Server port |
| `OMNIROUTE_MEMORY_MB` | `512` | Node.js heap ကန့်သတ်ချက် (64–16384 MB) |
📖 စာရွက်စာတမ်းအပြည့်အစုံ- [`electron/README.md`](../../electron/README.md)