# 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... ``` --- ## 📖 ဝန်ဆောင်မှုပေးသူ စနစ်ထည့်သွင်းခြင်း CSV သို့မဟုတ် JSON ဖိုင်တစ်ခုမှ API-key ချိတ်ဆက်မှုများကို အစုလိုက်ထည့်ရန် **Dashboard → Providers → Import from file** ကို အသုံးပြုပါ။ ကော်လံများသည် အစီအစဉ်အလိုက် သတ်မှတ်ထားသည် (`provider,name,apiKey,baseUrl,priority`)။ `provider` သည် စီမံခန့်ခွဲထားသော ဝန်ဆောင်မှုပေးသူ သို့မဟုတ် ကိုက်ညီအသုံးပြုနိုင်သော node တစ်ခုအဖြစ် ရှိပြီးသားဖြစ်ရမည်။ [CSV သို့မဟုတ် JSON ဖိုင်တစ်ခုမှ ဝန်ဆောင်မှုပေးသူများ တင်သွင်းခြင်း](../providers/CSV-IMPORT.md) ကို ကြည့်ပါ။ ### 🔐 စာရင်းသွင်းမှုအခြေပြု ဝန်ဆောင်မှုပေးသူများ #### 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 ကို စောင့်ကြည့်ပေးသည်! Claude နှင့် Claude Code-compatible route များသည် Opus နှင့် Sonnet မော်ဒယ်များအတွက် `max` စဉ်းစားဆင်ခြင်မှုအဆင့်ကို ဆက်လက်ထိန်းသိမ်းပေးသည်။ Haiku မော်ဒယ်များသည် `max` အားထုတ်မှုအဆင့်ကို လက်မခံသောကြောင့် OmniRoute သည် အဆိုပါတောင်းဆိုမှုကို upstream သို့ မပို့မီ မြင့်မားသော စဉ်းစားဆင်ခြင်မှု 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 ``` ### 💰 စျေးသက်သာသော ဝန်ဆောင်မှုပေးသူများ #### 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 ၃ ဆ ပေးသည်! နေ့စဉ် နံနက် 10:00 AM တွင် ပြန်လည်သတ်မှတ်သည်။ #### MiniMax M2.1 (၅ နာရီတိုင်း ပြန်လည်သတ်မှတ်ခြင်း၊ $0.20/1M) 1. အကောင့်ဖွင့်ရန်: [MiniMax](https://www.minimax.io) 2. API key ရယူပါ → Dashboard → Add API Key **အသုံးပြုရန်:** `minimax/MiniMax-M2.1` — **အထူးအကြံပြုချက်:** ရှည်လျားသော context (token 1M) အတွက် စျေးအသက်သာဆုံး ရွေးချယ်မှုဖြစ်သည်! #### Kimi K2 (တစ်လလျှင် ပုံသေ $9) 1. စာရင်းသွင်းရန်: [Moonshot AI](https://platform.kimi.ai?aff=omniroute) 2. API key ရယူပါ → Dashboard → Add API Key **အသုံးပြုရန်:** `kimi/kimi-k2.5` — **အထူးအကြံပြုချက်:** Token 10M အတွက် တစ်လလျှင် ပုံသေ $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 တစ်ခု။ ### 🆓 အခမဲ့ ဝန်ဆောင်မှုပေးသူများ အထောက်အထားစိစစ်ရန် မလိုအပ်သော အခမဲ့ဝန်ဆောင်မှုပေးသူများ၏ စာမျက်နှာတွင် **No authentication required** ဘေး၌ ခလုတ်တစ်ခု ရှိသည်။ ၎င်းကို ပိတ်လိုက်ပါက အဆိုပါဝန်ဆောင်မှုပေးသူကို ပိတ်ထားပြီး Providers configured/compact မြင်ကွင်းများမှ ဖယ်ရှားကာ ၎င်း၏မော်ဒယ်များကိုလည်း `/v1/models` မှ ဖယ်ရှားပေးသည်။ #### Qoder (အခမဲ့ မော်ဒယ် ၉ ခု) ```bash Dashboard → Qoder ကို ချိတ်ဆက်ပါ → 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 ``` #### 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 များအတွက် ရည်ရွယ်ထားသည်။ ### OmniRoute Peer များကို ဆက်သွယ်ချိတ်ဆက်ခြင်း အခြား OmniRoute gateway တစ်ခုကို **Custom OpenAI-compatible** provider အဖြစ် ထည့်သွင်းနိုင်သည်။ Peer ၏ `/v1` base URL နှင့် ထို peer မှ ထုတ်ပေးထားသော သီးသန့်၊ အနည်းဆုံးလိုအပ်သည့် အခွင့်အရေးသာရှိသော API key ကို အသုံးပြုပါ။ အပြန်အလှန် သို့မဟုတ် multi-hop ချိတ်ဆက်မှုများအတွက် gateway တိုင်းတွင် ရွေးချယ်ဖွင့်နိုင်သော 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 ကို ရရှိသည်။ ထပ်နေသော instance ID သို့မဟုတ် hop အရေအတွက် ကုန်ဆုံးသွားပါက gateway သည် 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 ကို အသုံးပြုပြီး၊ SQLite database တစ်ခုတည်းကို လည်ပတ်နေသော OmniRoute instance အများအပြားတွင် မည်သည့်အခါမျှ mount မလုပ်ပါနှင့်။ ### သီးသန့် Provider Route များ Model validation ဖြင့် request များကို သတ်မှတ်ထားသော provider တစ်ခုသို့ တိုက်ရိုက် 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 ``` အမျိုးအစားများ (`chat`, `embedding`, `image`) ပါဝင်ပြီး provider အလိုက် အုပ်စုဖွဲ့ထားသော model များကို ပြန်ပေးသည်။ ### Cloud Sync - Provider များ၊ combo များနှင့် setting များကို device များအကြား sync လုပ်ခြင်း - Timeout + fail-fast ပါသော အလိုအလျောက် နောက်ခံ sync - Production တွင် server-side `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` ကို ဦးစားပေးအသုံးပြုရန် ### Cloudflare Quick Tunnel - Docker နှင့် အခြား self-hosted deployment များအတွက် **Dashboard → Endpoints** တွင် ရရှိနိုင်သည် - လက်ရှိ OpenAI-compatible `/v1` endpoint သို့ forward လုပ်ပေးသည့် ယာယီ `https://*.trycloudflare.com` URL တစ်ခုကို ဖန်တီးသည် - ပထမဆုံးဖွင့်သည့်အခါ လိုအပ်မှသာ `cloudflared` ကို ထည့်သွင်းပြီး၊ နောက်ပိုင်း restart များတွင် စီမံထားသော binary တစ်ခုတည်းကို ပြန်လည်အသုံးပြုသည် - OmniRoute သို့မဟုတ် container ကို restart လုပ်ပြီးနောက် Quick Tunnel များကို အလိုအလျောက် ပြန်ဖွင့်မပေးပါ။ လိုအပ်သည့်အခါ dashboard မှ ပြန်ဖွင့်ပါ - Tunnel URL များသည် ယာယီဖြစ်ပြီး tunnel ကို ရပ်တန့်/စတင်သည့်အခါတိုင်း ပြောင်းလဲသည် - အရင်းအမြစ်ကန့်သတ်ထားသော container များတွင် ဆူညံသော QUIC UDP buffer သတိပေးချက်များကို ရှောင်ရှားရန် စီမံထားသော Quick Tunnel များသည် မူလအတိုင်း 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 Intelligence (Phase 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 Playground **Dashboard → Translator** မှ ဝင်ရောက်ပါ။ OmniRoute က provider များအကြား API request များကို မည်သို့ ဘာသာပြန်ပြောင်းလဲပေးသည်ကို debug လုပ်ပြီး မြင်သာအောင် ကြည့်ရှုပါ။ | မုဒ် | ရည်ရွယ်ချက် | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------ | | **Playground** | Source/target format များကို ရွေးချယ်ပြီး request တစ်ခုကို paste လုပ်ကာ ဘာသာပြန်ပြောင်းလဲထားသော output ကို ချက်ချင်းကြည့်ရှုပါ | | **Chat Tester** | Proxy မှတစ်ဆင့် live chat message များ ပေးပို့ပြီး request/response cycle အပြည့်အစုံကို စစ်ဆေးပါ | | **Test Bench** | ဘာသာပြန်ပြောင်းလဲမှု မှန်ကန်ကြောင်း စစ်ဆေးရန် format ပေါင်းစပ်မှုအမျိုးမျိုးတွင် batch test များကို လုပ်ဆောင်ပါ | | **Live Monitor** | Request များ proxy မှတစ်ဆင့် စီးဆင်းနေချိန်တွင် အချိန်နှင့်တစ်ပြေးညီ ဘာသာပြန်ပြောင်းလဲမှုများကို စောင့်ကြည့်ပါ | **အသုံးပြုနိုင်သည့် အခြေအနေများ-** - သတ်မှတ်ထားသော client/provider ပေါင်းစပ်မှုတစ်ခု မအောင်မြင်ရသည့် အကြောင်းရင်းကို debug လုပ်ရန် - Thinking tag များ၊ tool call များနှင့် system prompt များကို မှန်ကန်စွာ ဘာသာပြန်ပြောင်းလဲထားကြောင်း စစ်ဆေးရန် - OpenAI၊ Claude၊ Gemini နှင့် Responses API format များအကြား format ကွာခြားချက်များကို နှိုင်းယှဉ်ရန် --- ### Routing မဟာဗျူဟာများ **Dashboard → Settings → Routing** မှတစ်ဆင့် စီစဉ်သတ်မှတ်ပါ။ Dashboard တွင် အသုံးအများဆုံး နည်းဗျူဟာ ခြောက်မျိုးကို ဖော်ပြထားပြီး combos နှင့် auto-router တို့က အတွင်းပိုင်း၌ ပိုမိုကျယ်ပြန့်သော နည်းဗျူဟာအစုကို ပံ့ပိုးထားသည်။ **Dashboard တွင် မြင်နိုင်သော နည်းဗျူဟာများ (အကောင့်အဆင့် routing):** | နည်းဗျူဟာ | ဖော်ပြချက် | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Fill First** | အကောင့်များကို ဦးစားပေးအစီအစဉ်အတိုင်း အသုံးပြုသည် — အဓိကအကောင့်သည် အသုံးမပြုနိုင်တော့သည့်အထိ request အားလုံးကို ကိုင်တွယ်သည် | | **Round Robin** | အကောင့်အားလုံးကို စီစဉ်သတ်မှတ်နိုင်သော sticky limit ဖြင့် အလှည့်ကျအသုံးပြုသည် (မူလသတ်မှတ်ချက်- အကောင့်တစ်ခုလျှင် 3 calls) | | **P2C (Power of Two Choices)** | အကောင့် 2 ခုကို ကျပန်းရွေးချယ်ပြီး ပိုမိုကောင်းမွန်စွာ အလုပ်လုပ်နေသည့်တစ်ခုသို့ route လုပ်သည် — ကျန်းမာရေးအခြေအနေကို ထည့်သွင်းစဉ်းစားကာ load ကို ချိန်ညှိသည် | | **Random** | Fisher-Yates shuffle ကို အသုံးပြု၍ request တစ်ခုစီအတွက် အကောင့်တစ်ခုကို ကျပန်းရွေးချယ်သည် | | **Least Used** | သက်တမ်းအကြာဆုံး `lastUsedAt` timestamp ရှိသည့် အကောင့်သို့ route လုပ်ကာ traffic ကို ညီမျှစွာ ဖြန့်ဝေသည် | | **Cost Optimized** | အနိမ့်ဆုံး priority value ရှိသည့် အကောင့်သို့ route လုပ်ပြီး ကုန်ကျစရိတ်အနည်းဆုံး provider များအတွက် အကောင်းဆုံးဖြစ်အောင် ချိန်ညှိသည် | **အဆင့်မြင့် combo နှင့် auto နည်းဗျူဟာများ** (combo တစ်ခုချင်းစီအလိုက် သို့မဟုတ် `auto/*` prefixes များမှတစ်ဆင့် စီစဉ်သတ်မှတ်နိုင်သည် — [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 ကို ဆက်လက်အသုံးပြုပြီး မအောင်မြင်ပါက rules များအတိုင်း fallback လုပ်သည် - `context-optimized` — လွတ်နေသော context window အကြီးဆုံးရှိသည့် model ကို ရွေးချယ်သည် - `context-relay` — နောက်ဆက်တွဲ turns များအတွက် long-context model များကို ချိတ်ဆက်အသုံးပြုသည် #### ပြင်ပ Sticky Session Header ပြင်ပ session affinity အတွက် (ဥပမာ၊ reverse proxy များနောက်ကွယ်ရှိ Claude Code/Codex agents များ) အောက်ပါတို့ကို ပေးပို့ပါ: ```http X-Session-Id: your-session-key ``` OmniRoute သည် `x_session_id` ကိုလည်း လက်ခံပြီး အမှန်တကယ်အသုံးပြုထားသော session key ကို `X-OmniRoute-Session-Id` တွင် ပြန်ပေးသည်။ Nginx ကို အသုံးပြုပြီး underscore ပုံစံ headers များ ပေးပို့ပါက အောက်ပါတို့ကို ဖွင့်ထားပါ: ```nginx underscores_in_headers on; ``` #### Wildcard Model Aliases Model အမည်များကို ပြန်လည်သတ်မှတ်ရန် wildcard patterns များ ဖန်တီးပါ: ``` Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-6 Pattern: gpt-* → Target: gh/gpt-5.3-codex ``` Wildcards များသည် `*` (မည်သည့် characters မဆို) နှင့် `?` (character တစ်လုံး) ကို ပံ့ပိုးသည်။ #### Fallback Chains Request အားလုံးတွင် အကျုံးဝင်မည့် global fallback chains များကို သတ်မှတ်ပါ: ``` Chain: production-fallback 1. cc/claude-opus-4-7 2. gh/gpt-5.3-codex 3. glm/glm-4.7 ``` --- ### ခံနိုင်ရည်ရှိမှုနှင့် Circuit Breakers **Dashboard → Settings → Resilience** မှတစ်ဆင့် စီစဉ်သတ်မှတ်ပါ။ OmniRoute သည် provider အဆင့် ခံနိုင်ရည်ရှိမှုကို အစိတ်အပိုင်း ငါးခုဖြင့် အကောင်အထည်ဖော်ထားသည်: 1. **Request Queue & Pacing** — System အဆင့် request စီးဆင်းမှု ထိန်းညှိခြင်း: - **Requests Per Minute (RPM)** — အကောင့်တစ်ခုလျှင် တစ်မိနစ်အတွင်း ခွင့်ပြုသည့် အများဆုံး request အရေအတွက် - **Min Time Between Requests** — Request များအကြား အနည်းဆုံးခြားနားချိန်ကို milliseconds ဖြင့် သတ်မှတ်ခြင်း - **Max Concurrent Requests** — အကောင့်တစ်ခုလျှင် တစ်ပြိုင်နက်တည်း လုပ်ဆောင်နိုင်သည့် အများဆုံး request အရေအတွက် 2. **Connection Cooldown** — ပြန်လည်ကြိုးစားနိုင်သော failure များဖြစ်ပြီးနောက် connection တစ်ခုတည်းအတွက် auth type အလိုက် စီစဉ်သတ်မှတ်ခြင်း: - **Base Cooldown** — ပြန်လည်ကြိုးစားနိုင်သော upstream failure များအတွက် မူလသတ်မှတ်ထားသည့် cooldown အချိန်ကာလ - **Use Upstream Retry Hints** — ပေးထားသည့်အခါ အတည်ပြုနိုင်သော `Retry-After` သို့မဟုတ် reset hints များကို လိုက်နာသည် - **Max Backoff Steps** — ထပ်ခါတလဲလဲဖြစ်သော failure များအတွက် အများဆုံး exponential backoff အဆင့် 3. **Provider Circuit Breaker** — အစမှအဆုံး provider failure များကို ခြေရာခံကာ စီစဉ်သတ်မှတ်ထားသော warning threshold သို့ ရောက်သည့်အခါ provider ကို အားနည်းနေသည်ဟု မှတ်သားပြီး၊ စီစဉ်သတ်မှတ်ထားသော failure threshold သို့ ရောက်သည့်အခါ breaker ကို ဖွင့်သည်: - **Degradation Threshold** — `DEGRADED` သို့ မဝင်မီ ဆက်တိုက်ဖြစ်နိုင်သည့် provider failure အရေအတွက် - **Failure Threshold** — `OPEN` သို့ မဝင်မီ ဆက်တိုက်ဖြစ်နိုင်သည့် provider failure အရေအတွက် - **Reset Timeout** — Provider ကို ထပ်မံစမ်းသပ်မည့်အချိန်မတိုင်မီ စောင့်ဆိုင်းရသော အချိန်ကာလ - **CLOSED** (ကောင်းမွန်နေသည်) — Request များ ပုံမှန်အတိုင်း စီးဆင်းသည် - **DEGRADED** — မြင့်တက်နေသော failure များကို ခြေရာခံနေစဉ် request များ ဆက်လက်စီးဆင်းသည် - **OPEN** — ထပ်ခါတလဲလဲဖြစ်သော failure များကြောင့် provider ကို ယာယီပိတ်ဆို့ထားသည် - **HALF_OPEN** — Provider ပြန်လည်ကောင်းမွန်လာခြင်း ရှိ၊ မရှိ စမ်းသပ်နေသည် Connection အလိုက်ဖြစ်သော `429` rate limit များသည် **Connection Cooldown** တွင်သာ ရှိနေပြီး provider breaker အတွက် ထည့်သွင်းရေတွက်ခြင်း မပြုပါ။ Provider breaker ၏ runtime state ကို **Dashboard → Health** တွင်သာ ပြသသည်။ 4. **Wait For Cooldown** — Candidate connection အားလုံးသည် cooldown ဝင်နေပြီးဖြစ်ပါက OmniRoute သည် အစောဆုံးပြီးဆုံးမည့် cooldown ကို စောင့်ဆိုင်းပြီး အလားတူ client request ကို အလိုအလျောက် ပြန်လည်ကြိုးစားနိုင်သည်။ 5. **Rate Limit Auto-Detection** — Upstream provider များက တိကျသော စောင့်ဆိုင်းချိန်များကို ပြန်ပေးသည့်အခါ setting ကို ဖွင့်ထားပါက အဆိုပါ hints များက local connection cooldown ကို အစားထိုးသတ်မှတ်သည်။ **ကျွမ်းကျင်သူ အကြံပြုချက်:** ပြတ်တောက်မှုဖြစ်ပြီးနောက် လက်ရှိအသုံးပြုနေသော provider breaker များကို စစ်ဆေးရန်နှင့် reset လုပ်ရန် **Health** စာမျက်နှာကို အသုံးပြုပါ။ Resilience စာမျက်နှာသည် configuration ကိုသာ ပြောင်းလဲပေးသည်။ --- ### Database Export / Import Database backup များကို **Dashboard → Settings → System & Storage** တွင် စီမံခန့်ခွဲပါ။ | လုပ်ဆောင်ချက် | ဖော်ပြချက် | | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **ဒေတာဘေ့စ် ထုတ်ယူရန်** | လက်ရှိ SQLite ဒေတာဘေ့စ်ကို `.sqlite` ဖိုင်အဖြစ် ဒေါင်းလုဒ်လုပ်ပေးသည် | | **အားလုံး ထုတ်ယူရန် (.tar.gz)** | ဒေတာဘေ့စ်၊ ဆက်တင်များ၊ combo များ၊ provider ချိတ်ဆက်မှုများ (အထောက်အထားများ မပါဝင်) နှင့် API key metadata တို့ပါဝင်သည့် အရန်သိမ်းဆည်းမှု archive အပြည့်အစုံကို ဒေါင်းလုဒ်လုပ်ပေးသည် | | **ဒေတာဘေ့စ် ထည့်သွင်းရန်** | လက်ရှိဒေတာဘေ့စ်ကို အစားထိုးရန် `.sqlite` ဖိုင်တစ်ခုကို အပ်လုဒ်လုပ်ပေးသည်။ `DISABLE_SQLITE_AUTO_BACKUP=true` ဟု သတ်မှတ်မထားပါက မထည့်သွင်းမီ အရန်သိမ်းဆည်းမှုကို အလိုအလျောက် ဖန်တီးပေးသည် | ```bash # API: ဒေတာဘေ့စ် ထုတ်ယူရန် curl -o backup.sqlite http://localhost:20128/api/db-backups/export # API: အားလုံး ထုတ်ယူရန် (archive အပြည့်အစုံ) curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll # API: ဒေတာဘေ့စ် ထည့်သွင်းရန် curl -X POST http://localhost:20128/api/db-backups/import \ -F "file=@backup.sqlite" ``` **ထည့်သွင်းမှု စစ်ဆေးအတည်ပြုခြင်း:** ထည့်သွင်းထားသောဖိုင်ကို မှန်ကန်ပြည့်စုံမှု (SQLite pragma စစ်ဆေးမှု)၊ လိုအပ်သော ဇယားများ (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) နှင့် ဖိုင်အရွယ်အစား (အများဆုံး 100MB) တို့အတွက် စစ်ဆေးအတည်ပြုသည်။ **အသုံးပြုနိုင်သည့် အခြေအနေများ:** - OmniRoute ကို စက်တစ်လုံးမှ အခြားစက်တစ်လုံးသို့ ရွှေ့ပြောင်းရန် - ဘေးအန္တရာယ်ဖြစ်ပွားပြီးနောက် ပြန်လည်ရယူနိုင်ရန် ပြင်ပအရန်သိမ်းဆည်းမှုများ ဖန်တီးရန် - အဖွဲ့ဝင်များအကြား ဖွဲ့စည်းသတ်မှတ်ချက်များ မျှဝေရန် (အားလုံး ထုတ်ယူရန် → archive ကို မျှဝေရန်) --- ### ဆက်တင် Dashboard သွားလာအသုံးပြုရလွယ်ကူစေရန် ဆက်တင်စာမျက်နှာကို **တဘ် 7 ခု** ဖြင့် ဖွဲ့စည်းထားသည်- | တဘ် | ပါဝင်သည့်အရာများ | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **အထွေထွေ** | စနစ်သိုလှောင်မှု ကိရိယာများ၊ မူလအပြုအမူ၊ Endpoint tunnel မြင်နိုင်မှု | | **အသွင်အပြင်** | Theme ထိန်းချုပ်မှုများ (အလင်း/အမှောင်/စနစ်)၊ sidebar မြင်နိုင်မှု၊ Cloudflare/Tailscale/ngrok tunnel ကတ်များအတွက် panel အဖွင့်အပိတ်များ | | **AI** | စဉ်းစားမှု budget (တိုက်ရိုက်ဖြတ်သန်း / အလိုအလျောက်ဖယ်ရှား / စိတ်ကြိုက် / လိုက်လျောညီထွေ — [THINKING_BUDGET.md](./THINKING_BUDGET.md) ကို ကြည့်ပါ)၊ ကမ္ဘာလုံးဆိုင်ရာ system prompt၊ prompt cache စာရင်းအင်းများ | | **လုံခြုံရေး** | အကောင့်ဝင်ခြင်း/စကားဝှက် ဆက်တင်များ၊ IP ဝင်ရောက်ခွင့်ထိန်းချုပ်မှု၊ `/models` အတွက် API အထောက်အထားစစ်ဆေးခြင်း၊ Provider ပိတ်ဆို့ခြင်း၊ prompt-injection ကာကွယ်မှု | | **လမ်းကြောင်းသတ်မှတ်ခြင်း** | ကမ္ဘာလုံးဆိုင်ရာ လမ်းကြောင်းသတ်မှတ်မှုဗျူဟာ (ဦးစွာဖြည့် / အလှည့်ကျ / P2C / ကျပန်း / အသုံးပြုမှုအနည်းဆုံး / ကုန်ကျစရိတ်အကောင်းဆုံး)၊ wildcard model alias များ၊ fallback chain များ၊ combo မူလသတ်မှတ်ချက်များ | | **ခံနိုင်ရည်ရှိမှု** | တောင်းဆိုမှုတန်းစီစနစ်၊ ချိတ်ဆက်မှု cooldown၊ provider breaker ဖွဲ့စည်းသတ်မှတ်ချက်နှင့် cooldown ကို စောင့်ဆိုင်းသည့် အပြုအမူ | | **အဆင့်မြင့်** | ကမ္ဘာလုံးဆိုင်ရာ proxy ဖွဲ့စည်းသတ်မှတ်ချက် (HTTP/SOCKS5)၊ provider တစ်ခုချင်းအလိုက် proxy override များ | အထွေထွေတဘ်တွင် ဖတ်ရှုရန်သက်သက်ဖြစ်သော logging နှင့် cache မှတ်ချက်များကို ထပ်မံဖော်ပြတော့မည် မဟုတ်ပါ။ ဒေတာဘေ့စ် ထိန်းသိမ်းထားရှိမှုနှင့် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်မှု ဆက်တင်များကို `/api/settings/database` မှတစ်ဆင့် အမြဲသိမ်းဆည်းထားပြီး cache ကို ကိုယ်တိုင်ရှင်းလင်းရန် `DELETE /api/cache` ကို အသုံးပြုသည်။ တောင်းဆိုမှုနှင့် proxy log အတန်းအရေအတွက် ကန့်သတ်ချက်များကို `CALL_LOGS_TABLE_MAX_ROWS` နှင့် `PROXY_LOGS_TABLE_MAX_ROWS` တို့ဖြင့် ထိန်းချုပ်သည်။ --- ### ကုန်ကျစရိတ်နှင့် Budget စီမံခန့်ခွဲမှု **Dashboard → ကုန်ကျစရိတ်များ** မှတစ်ဆင့် ဝင်ရောက်ပါ။ | တဘ် | ရည်ရွယ်ချက် | | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | **Budget** | နေ့စဉ်/အပတ်စဉ်/လစဉ် budget များနှင့် အချိန်နှင့်တစ်ပြေးညီ ခြေရာခံမှုကို အသုံးပြု၍ API key တစ်ခုချင်းအလိုက် သုံးစွဲမှုကန့်သတ်ချက်များ သတ်မှတ်ရန် | | **ဈေးနှုန်း** | Provider တစ်ခုချင်းအလိုက် input/output token 1K လျှင် ကုန်ကျစရိတ်ဖြစ်သော model ဈေးနှုန်းစာရင်းများကို ကြည့်ရှုပြင်ဆင်ရန် | ```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 → အသုံးပြုမှု** တွင် ကြည့်ရှုပါ။ --- ### အသံမှ စာသားသို့ ပြောင်းလဲခြင်း 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 route ဖြစ်ပြီး Deepgram API key တစ်ခု လိုအပ်သည်။ OpenRouter ကိုသာ ဖွဲ့စည်းသတ်မှတ်ထားပါက `openrouter/deepgram/nova-3` ကို အသုံးပြုပါ။ **အသံမှ စာသားသို့ (စာသားကူးပြောင်းခြင်း)** 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/` စာသားကူးပြောင်းခြင်းအတွက် ပံ့ပိုးထားသော အသံဖော်မတ်များမှာ `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm` တို့ဖြစ်သည်။ TTS output ဖော်မတ်များသည် provider ပေါ် မူတည်သည် (mp3, wav, opus, pcm, mulaw)။ --- ### Combo ချိန်ညှိမှုဗျူဟာများ Combo တစ်ခုချင်းအလိုက် ချိန်ညှိမှုကို **Dashboard → Combos → ဖန်တီးရန်/ပြင်ဆင်ရန် → ဗျူဟာ** တွင် ဖွဲ့စည်းသတ်မှတ်ပါ။ | မဟာဗျူဟာ | ဖော်ပြချက် | | ------------------ | -------------------------------------------------------------------------------------------------------------- | | **Round-Robin** | မော်ဒယ်များကို အစဉ်လိုက် အလှည့်ကျ အသုံးပြုသည် | | **Priority** | ပထမမော်ဒယ်ကို အမြဲ ဦးစွာ စမ်းသပ်ပြီး အမှားဖြစ်သည့်အခါမှသာ အရန်မော်ဒယ်သို့ ပြောင်းသည် | | **Random** | တောင်းဆိုမှုတစ်ခုစီအတွက် combo ထဲမှ မော်ဒယ်တစ်ခုကို ကျပန်းရွေးချယ်သည် | | **Weighted** | မော်ဒယ်တစ်ခုစီအတွက် သတ်မှတ်ထားသော အလေးချိန်များအပေါ် မူတည်၍ အချိုးကျ လမ်းကြောင်းခွဲပေးသည် | | **Least-Used** | လတ်တလော တောင်းဆိုမှုအနည်းဆုံးရှိသော မော်ဒယ်ထံ လမ်းကြောင်းခွဲပေးသည် (combo တိုင်းတာချက်များကို အသုံးပြုသည်) | | **Cost-Optimized** | ရရှိနိုင်သည့် မော်ဒယ်များအနက် ဈေးနှုန်းအနည်းဆုံး မော်ဒယ်ထံ လမ်းကြောင်းခွဲပေးသည် (ဈေးနှုန်းဇယားကို အသုံးပြုသည်) | စနစ်တစ်ခုလုံးဆိုင်ရာ combo မူလသတ်မှတ်ချက်များကို **Dashboard → Settings → Routing → Combo Defaults** တွင် သတ်မှတ်နိုင်သည်။ Combo ပစ်မှတ် အချိန်ကုန်ဆုံးမှုများသည် မူလအားဖြင့် လက်ရှိတောင်းဆိုမှု၏ အချိန်ကုန်ဆုံးမှုကို ဆက်ခံသည်။ ပစ်မှတ်တစ်ခုချင်းအတွက် ပိုတိုသော အချိန်ကန့်သတ်ချက်ကြောင့် အရန်မော်ဒယ်သို့ ပိုမြန်စွာ ပြောင်းစေလိုသည့်အခါမှသာ combo မူလသတ်မှတ်ချက်များ သို့မဟုတ် combo တစ်ခုချင်းတွင် **Target timeout (seconds)** ကို အသုံးပြုပါ။ Zero-latency combo အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်မှုများသည် ကိုယ်တိုင်ဖွင့်မှသာ အသုံးပြုနိုင်သည်။ ဤ latency လုပ်ဆောင်ချက်များက အရန်ပစ်မှတ်များနှင့် အပြိုင်လုပ်ဆောင်ခြင်း၊ TTFT မှတ်တမ်းအပေါ် အခြေခံ၍ ပစ်မှတ်များကို ကျော်ခြင်း သို့မဟုတ် အရန်တောင်းဆိုမှုများကို ချုံ့ခြင်းတို့ မပြုလုပ်စေရန် **Zero-latency optimizations** ကို ပိတ်ထားပါ။ ၎င်းကို ဖွင့်ထားပါက သတ်မှတ်ထားသော hedging၊ ကြိုတင်ခန့်မှန်းသည့် TTFT ကျော်ခြင်းများနှင့် ကြိုတင်အရန် ချုံ့ခြင်းတို့ကို အသုံးပြုနိုင်ပြီး လမ်းကြောင်းခွဲမှု/တောင်းဆိုမှု တိကျမှုကို အနည်းငယ် လျှော့ချကာ အမြင့်ဆုံးပိုင်း latency ကို လျှော့ချပေးနိုင်သည်။ Upstream provider များက တိကျသော `max_tokens` / `maxOutputTokens` ကန့်သတ်ချက်များ လိုအပ်သည့်အခါ **Reasoning token buffer** ကို ပိတ်ပါ။ ၎င်းကို ဖွင့်ထားသည့်အခါ combo လမ်းကြောင်းခွဲမှုသည် သိရှိထားသော အထွက်ကန့်သတ်ချက်ရှိသည့် မော်ဒယ်များအတွက်သာ reasoning-model အပိုနေရာကို ထည့်ပေးပြီး လုံခြုံသော buffer တန်ဖိုးက အဆိုပါကန့်သတ်ချက်ကို ကျော်လွန်မည့်အခါ client token ကန့်သတ်ချက်ကို မပြောင်းလဲဘဲ ထားသည်။ Client ကန့်သတ်ချက်က သိရှိထားသော ကန့်သတ်ချက်ထက် မြင့်နေပြီးသားဖြစ်ပါက OmniRoute သည် upstream တောင်းဆိုမှုကို မပို့မီ အဆိုပါကန့်သတ်ချက်အထိ လျှော့ချပေးသည်။ --- ### စနစ်ကျန်းမာရေး ဒက်ရှ်ဘုတ် **Dashboard → Health** မှတစ်ဆင့် ဝင်ရောက်ပါ။ ကတ် ၆ ခုဖြင့် အချိန်နှင့်တစ်ပြေးညီ စနစ်ကျန်းမာရေး ခြုံငုံသုံးသပ်ချက်ကို ပြသသည်- | ကတ် | ပြသသည့်အရာ | | --------------------- | --------------------------------------------------------------------------------------- | | **System Status** | အလုပ်လုပ်နေသည့်ကြာချိန်၊ ဗားရှင်း၊ မှတ်ဉာဏ်အသုံးပြုမှု၊ ဒေတာလမ်းညွှန် | | **Provider Health** | စနစ်တစ်ခုလုံးဆိုင်ရာ provider circuit breaker ၏ လက်ရှိလုပ်ဆောင်မှုအခြေအနေ | | **Rate Limits** | ကျန်ရှိချိန်နှင့်အတူ account တစ်ခုစီအတွက် လက်ရှိအသုံးပြုနေသော ချိတ်ဆက်မှု cooldown များ | | **Active Lockouts** | လက်ရှိအသုံးပြုနေသော မော်ဒယ်အလိုက် lockout များနှင့် ယာယီဖယ်ထုတ်မှုများ | | **Signature Cache** | မိတ္တူပွားမှုဖယ်ရှားရေး cache စာရင်းအင်းများ (အသုံးပြုနေသော key များ၊ hit rate) | | **Latency Telemetry** | Provider တစ်ခုစီအတွက် p50/p95/p99 latency စုစည်းမှု | **ကျွမ်းကျင်သူအကြံပြုချက်:** Health စာမျက်နှာသည် ၁၀ စက္ကန့်တိုင်း အလိုအလျောက် ပြန်လည်စတင်ပြသသည်။ ပြဿနာများ ကြုံတွေ့နေသော provider များကို ရှာဖွေရန် 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)