# CLI Tools — OmniRoute (မြန်မာ) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/CLI-TOOLS.md) · 🇪🇹 [am](../../../am/docs/reference/CLI-TOOLS.md) · 🇸🇦 [ar](../../../ar/docs/reference/CLI-TOOLS.md) · 🇦🇿 [az](../../../az/docs/reference/CLI-TOOLS.md) · 🇧🇬 [bg](../../../bg/docs/reference/CLI-TOOLS.md) · 🇧🇩 [bn](../../../bn/docs/reference/CLI-TOOLS.md) · 🇧🇦 [bs](../../../bs/docs/reference/CLI-TOOLS.md) · 🇨🇿 [cs](../../../cs/docs/reference/CLI-TOOLS.md) · 🇩🇰 [da](../../../da/docs/reference/CLI-TOOLS.md) · 🇩🇪 [de](../../../de/docs/reference/CLI-TOOLS.md) · 🇬🇷 [el](../../../el/docs/reference/CLI-TOOLS.md) · 🇪🇸 [es](../../../es/docs/reference/CLI-TOOLS.md) · 🇪🇪 [et](../../../et/docs/reference/CLI-TOOLS.md) · 🇮🇷 [fa](../../../fa/docs/reference/CLI-TOOLS.md) · 🇫🇮 [fi](../../../fi/docs/reference/CLI-TOOLS.md) · 🇫🇷 [fr](../../../fr/docs/reference/CLI-TOOLS.md) · 🇮🇪 [ga](../../../ga/docs/reference/CLI-TOOLS.md) · 🇮🇳 [gu](../../../gu/docs/reference/CLI-TOOLS.md) · 🇳🇬 [ha](../../../ha/docs/reference/CLI-TOOLS.md) · 🇮🇱 [he](../../../he/docs/reference/CLI-TOOLS.md) · 🇮🇳 [hi](../../../hi/docs/reference/CLI-TOOLS.md) · 🇭🇷 [hr](../../../hr/docs/reference/CLI-TOOLS.md) · 🇭🇺 [hu](../../../hu/docs/reference/CLI-TOOLS.md) · 🇦🇲 [hy](../../../hy/docs/reference/CLI-TOOLS.md) · 🇮🇩 [id](../../../id/docs/reference/CLI-TOOLS.md) · 🇳🇬 [ig](../../../ig/docs/reference/CLI-TOOLS.md) · 🇮🇹 [it](../../../it/docs/reference/CLI-TOOLS.md) · 🇯🇵 [ja](../../../ja/docs/reference/CLI-TOOLS.md) · 🇬🇪 [ka](../../../ka/docs/reference/CLI-TOOLS.md) · 🇰🇭 [km](../../../km/docs/reference/CLI-TOOLS.md) · 🇮🇳 [kn](../../../kn/docs/reference/CLI-TOOLS.md) · 🇰🇷 [ko](../../../ko/docs/reference/CLI-TOOLS.md) · 🇱🇹 [lt](../../../lt/docs/reference/CLI-TOOLS.md) · 🇱🇻 [lv](../../../lv/docs/reference/CLI-TOOLS.md) · 🇮🇳 [ml](../../../ml/docs/reference/CLI-TOOLS.md) · 🇮🇳 [mr](../../../mr/docs/reference/CLI-TOOLS.md) · 🇲🇾 [ms](../../../ms/docs/reference/CLI-TOOLS.md) · 🇲🇹 [mt](../../../mt/docs/reference/CLI-TOOLS.md) · 🇳🇵 [ne](../../../ne/docs/reference/CLI-TOOLS.md) · 🇳🇱 [nl](../../../nl/docs/reference/CLI-TOOLS.md) · 🇳🇴 [no](../../../no/docs/reference/CLI-TOOLS.md) · 🇮🇳 [or](../../../or/docs/reference/CLI-TOOLS.md) · 🇮🇳 [pa](../../../pa/docs/reference/CLI-TOOLS.md) · 🇵🇭 [phi](../../../phi/docs/reference/CLI-TOOLS.md) · 🇵🇱 [pl](../../../pl/docs/reference/CLI-TOOLS.md) · 🇵🇹 [pt](../../../pt/docs/reference/CLI-TOOLS.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/CLI-TOOLS.md) · 🇷🇴 [ro](../../../ro/docs/reference/CLI-TOOLS.md) · 🇷🇺 [ru](../../../ru/docs/reference/CLI-TOOLS.md) · 🇱🇰 [si](../../../si/docs/reference/CLI-TOOLS.md) · 🇸🇰 [sk](../../../sk/docs/reference/CLI-TOOLS.md) · 🇸🇮 [sl](../../../sl/docs/reference/CLI-TOOLS.md) · 🇷🇸 [sr](../../../sr/docs/reference/CLI-TOOLS.md) · 🇸🇪 [sv](../../../sv/docs/reference/CLI-TOOLS.md) · 🇰🇪 [sw](../../../sw/docs/reference/CLI-TOOLS.md) · 🇮🇳 [ta](../../../ta/docs/reference/CLI-TOOLS.md) · 🇮🇳 [te](../../../te/docs/reference/CLI-TOOLS.md) · 🇹🇭 [th](../../../th/docs/reference/CLI-TOOLS.md) · 🇹🇷 [tr](../../../tr/docs/reference/CLI-TOOLS.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/CLI-TOOLS.md) · 🇵🇰 [ur](../../../ur/docs/reference/CLI-TOOLS.md) · 🇺🇿 [uz](../../../uz/docs/reference/CLI-TOOLS.md) · 🇻🇳 [vi](../../../vi/docs/reference/CLI-TOOLS.md) · 🇳🇬 [yo](../../../yo/docs/reference/CLI-TOOLS.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/CLI-TOOLS.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/CLI-TOOLS.md) --- နောက်ဆုံး အပ်ဒိတ်လုပ်ထားသည့်ရက်: 2026-08-23 OmniRoute သည် သီးခြား dashboard စာမျက်နှာ သုံးခုတွင် ဖြန့်ကျက်ထားသော CLI ကိရိယာ အမျိုးအစား သုံးမျိုးနှင့် ပေါင်းစည်းအလုပ်လုပ်ပါသည်- | စာမျက်နှာ | Route | သဘောတရား | အရေအတွက် | | -------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------- | | **CLI Code's** | `/dashboard/cli-code` | OmniRoute သို့ ညွှန်ထားသော coding ကိရိယာများ (Client → CLI → OmniRoute → Provider) | 26 | | **CLI Agents** | `/dashboard/cli-agents` | OmniRoute သို့ ညွှန်ထားသော အလိုအလျောက် agent များ (စီးဆင်းပုံတူညီပြီး လုပ်ဆောင်နိုင်သည့် နယ်ပယ် ပိုကျယ်သည်) | 10 | | **ACP Agents** | `/dashboard/acp-agents` | OmniRoute က stdio/ACP မှတစ်ဆင့် backend အဖြစ် စတင်ပေးသော CLI များ (ပြောင်းပြန်စီးဆင်းမှု) | registry ကို ကြည့်ပါ | Legacy route များကို 308 ဖြင့် redirect လုပ်သည်- `/dashboard/cli-tools` → `/dashboard/cli-code`, `/dashboard/agents` → `/dashboard/acp-agents`။ --- ## အလုပ်လုပ်ပုံ ``` CLI Code's / CLI Agents (အသုံးပြုမှု စီးဆင်းပုံ): Claude / Codex / OpenCode / Cline / KiloCode / Continue / Hermes Agent / Goose / ... │ ▼ (အားလုံးသည် OmniRoute သို့ ညွှန်သည်) http://YOUR_SERVER:20128/v1 │ ▼ (OmniRoute က သင့်တော်သော provider ထံ route လုပ်ပေးသည်) Anthropic / OpenAI / Gemini / DeepSeek / Groq / Mistral / ... ACP Agents (ပြောင်းပြန် စတင်ပေးသည့် စီးဆင်းပုံ): Client request → OmniRoute → stdio/ACP မှတစ်ဆင့် CLI ကို စတင်သည် → response ``` **အကျိုးကျေးဇူးများ:** - ကိရိယာအားလုံးကို စီမံရန် API key တစ်ခုတည်းသာ လိုအပ်ခြင်း - dashboard တွင် CLI အားလုံး၏ ကုန်ကျစရိတ်ကို ခြေရာခံနိုင်ခြင်း - ကိရိယာတိုင်းကို ပြန်လည် configure မလုပ်ဘဲ model ပြောင်းနိုင်ခြင်း - Local နှင့် remote server များတွင် အလုပ်လုပ်ခြင်း (VPS, Docker, Akamai, Cloudflare Tunnel) --- ## `setup-*` ဖြင့် အလိုအလျောက် စီစဉ်သတ်မှတ်ခြင်း Tool တစ်ခုချင်းစီ၏ config ကို ကိုယ်တိုင်ရေးသားရန် မလိုအပ်ပါ။ OmniRoute တွင် ပံ့ပိုးထားသည့် CLI တစ်ခုချင်းစီအတွက် `setup-*` command တစ်ခုစီ ပါဝင်ပြီး၊ ၎င်းသည် လည်ပတ်နေသော OmniRoute (local သို့မဟုတ် remote) မှ **လက်ရှိအသုံးပြုနေသည့်** model catalog ကို ဖတ်ရှုပြီး သင့်စက်ပေါ်ရှိ သက်ဆိုင်ရာ tool ၏ ကိုယ်ပိုင် config ကို ရေးသားပေးသည်- ```bash omniroute setup-codex omniroute setup-claude omniroute setup-opencode omniroute setup-cline omniroute setup-kilo omniroute setup-continue omniroute setup-cursor omniroute setup-roo omniroute setup-crush omniroute setup-goose omniroute setup-qwen omniroute setup-aider omniroute setup-5dive omniroute setup-zed ``` တစ်ခုချင်းစီသည် `--remote --api-key ` (local tool တစ်ခုကို remote OmniRoute နှင့် အသုံးပြုရန် စီစဉ်သတ်မှတ်ခြင်း)၊ `--dry-run` (မရေးသားဘဲ အစမ်းကြည့်ရှုခြင်း) နှင့် `--port` တို့ကို လက်ခံသည်။ Model အလိုအလျောက်ရှာဖွေမှု မရှိသည့် tool များ (Cline, Kilo, Roo, Goose, Aider, Qwen, 5dive) သည် `--model ` (နှင့် အပြန်အလှန်တုံ့ပြန်မှုမရှိဘဲ လုပ်ဆောင်ရန် `--yes`) ကို လက်ခံသည်။ `setup-5dive` သည် `$HOME` အောက်တွင် မရေးသားသည့် တစ်ခုတည်းသော recipe ဖြစ်သည်။ ၎င်းသည် fleet host ပေါ်တွင် root ပိုင် auth profile တစ်ခုကို ရေးသားခြင်းဖြင့် 5dive agent fleet ကို စီစဉ်သတ်မှတ်သောကြောင့် `sudo` မှတစ်ဆင့် ပြန်လည် execute လုပ်ပြီး ၎င်းကိုယ်တိုင်အတွက် remote mode မရှိပါ။ မှန်ကန်သော env ကို ထည့်သွင်းပေးထားပြီး မည်သည့် config ကိုမျှ မရေးသားဘဲ CLI တစ်ခုကို စတင်ရန် ယေဘုယျ `omniroute run ` launcher (claude, codex, aider, goose, opencode, qwen, gemini — target များနှင့် alias များသည် `bin/cli/cli-manifest.mjs` မှ လာသည်) ကို အသုံးပြုပါ။ ယခင် tool အလိုက် launcher များဖြစ်သည့် `omniroute launch` (Claude Code) နှင့် `omniroute launch-codex` (Codex) တို့ကိုလည်း ဆက်လက်အသုံးပြုနိုင်သည်။ Gemini CLI ကို စတင်ရန်သာ အသုံးပြုနိုင်သည်။ ၎င်းသည် `omniroute run` target တစ်ခုဖြစ်သော်လည်း `setup-*`/`configure` recipe မရှိပါ။ > **အပြည့်အစုံ ကိုးကားချက်-** command တစ်ခုချင်းစီက ရေးသားသည့်အရာ၊ flag အားလုံး၊ local နှင့် remote ကွာခြားချက်၊ မည်သည့် tool များက `/v1` suffix လိုအပ်သည် စသည်တို့ပါဝင်သော ပင်မဇယားကို > **[CLI ပေါင်းစည်းမှုများ](../guides/CLI-INTEGRATIONS.md)** တွင် ကြည့်ရှုနိုင်သည်။ ### Container တစ်ခုအတွင်း ၎င်းတို့ကို လုပ်ဆောင်ခြင်း OmniRoute container အတွင်း လုပ်ဆောင်သော `setup-*` command သည် container ၏ ကိုယ်ပိုင် home ထဲသို့ ရေးသားသည်။ Host CLI မည်သည့်တစ်ခုကမျှ ထိုနေရာကို မဖတ်ရှုသည့်အပြင် container နှင့်အတူ ပျောက်ကွယ်သွားမည်ဖြစ်သည်။ OmniRoute သည် ယင်းအခြေအနေကို စစ်ဆေးသိရှိပြီး ရေးသားခြင်းမပြုဘဲ လမ်းညွှန်ချက်များနှင့်အတူ `2` ဖြင့် ထွက်သည်။ ပံ့ပိုးထားသည့် ရှေ့ဆက်လုပ်ဆောင်နိုင်သော နည်းလမ်းနှစ်ခုမှာ CLI ကို host ပေါ်တွင် install လုပ်ပြီး container သို့ `omniroute connect` လုပ်ခြင်း၊ သို့မဟုတ် config directory များကို bind-mount လုပ်ပြီး `CLI_CONFIG_HOME` (compose `host` profile) ကို သတ်မှတ်ခြင်းတို့ဖြစ်သည်။ Container ၏ ကိုယ်ပိုင် CLI များကို အမှန်တကယ် စီစဉ်သတ်မှတ်လိုခြင်းဖြစ်ပါက `setup-*` command တိုင်းအပြင် `omniroute configure` နှင့် `omniroute config set` တို့သည် `--allow-container-write` ကို လက်ခံသည်။ Server အတွက် `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE=true` ကလည်း အလားတူ လုပ်ဆောင်ပေးသည်။ [Docker လမ်းညွှန် → Host CLI tool များကို စီစဉ်သတ်မှတ်ခြင်း](../guides/DOCKER_GUIDE.md#configuring-host-cli-tools-when-omniroute-runs-in-docker) ကို ကြည့်ပါ။ Dashboard ၏ **apply endpoint** (`POST /api/cli-tools/apply`) သည်လည်း အလားတူ ကာကွယ်မှုကို အတည်ပြုအသုံးချသည်။ Container တစ်ခုအတွင်း ရေးသားမည့် target ကို host မှ bind-mount မလုပ်ထားပါက ဘေးကင်းသော error စာသား၊ `containerEphemeralTarget: true` တို့နှင့်အတူ **`422`** ကို တုံ့ပြန်သည်။ ထို့အပြင် host recipe ရှိသည့် tool များ (claude, codex, opencode, cline, kilo, continue) အတွက် host ပေါ်တွင် အစားထိုးလုပ်ဆောင်ရန် `hostSetupCommand` (ဥပမာ `omniroute setup-opencode`) ကို ပေးပြီး မည်သည့်အရာကိုမျှ မရေးသားပါ။ Container mode တွင် `dryRun: true` သည် ဆက်လက်အလုပ်လုပ်ပြီး disk ကို မထိတွေ့ဘဲ လျှို့ဝှက်အချက်အလက်များ ဖယ်ရှားထားသည့် အစမ်းကြည့်ရှုမှုနှင့် target path ကို ပြန်ပေးသည်။ အစမ်းကြည့်ရှုသည့် အကြောင်းအရာသည် ကူးယူရန် သို့မဟုတ် import လုပ်ရန်အတွက် အထောက်အထားများပါဝင်သော configuration မဟုတ်ပါ။ မူလ tool/base URL/API key/model input များဖြင့် host ပေါ်တွင် apply လုပ်ပါ၊ သို့မဟုတ် ဖော်ပြထားသော host-side setup command ကို အသုံးပြုပါ။ Preview header နှင့် request contract အတွက် [CLI configuration လုံခြုံရေး](../security/CLI-CONFIGURATION.md) ကို ကြည့်ပါ။ ဤအပြုအမူသည် ရည်ရွယ်ချက်ရှိရှိ သတ်မှတ်ထားပြီး `tests/unit/api/cli-tools/apply-container-guard.test.ts` ဖြင့် regression မဖြစ်စေရန် ကာကွယ်ထားသည် — guard ကို ဖယ်ရှားခြင်းဖြင့် 422 ကို မည်သည့်အခါမျှ "ပြင်ဆင်" ရန် မကြိုးစားပါနှင့်။ --- ## တစ်ခုတည်းသော မှန်ကန်သည့် အရင်းအမြစ် ပေါင်းစည်းထားသော catalog သည် `src/shared/constants/cliTools.ts` တွင် `CLI_TOOLS: Record` အဖြစ် တည်ရှိသည်။ Entry တစ်ခုစီတွင် အောက်ပါ field များ ပါဝင်သည် (`src/shared/schemas/cliCatalog.ts` တွင် သတ်မှတ်ထားသည်)- | Field | Type | Description | | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | `category` | `"code" \| "agent"` | Tool ပေါ်လာမည့် page | | `vendor` | `string` | Tool ၏ မူလရင်းမြစ် ("Anthropic", "OSS (P. Gauthier)") | | `acpSpawnable` | `boolean` | ACP Agent အဖြစ်လည်း အသုံးပြုနိုင်ခြင်း (badge ပြသသည်) | | `baseUrlSupport` | `"full" \| "partial" \| "none"` | စိတ်ကြိုက် endpoint ပံ့ပိုးမှုအဆင့်။ `"none"` = MITM backlog | | `configType` | `"env" \| "custom" \| "guide" \| "custom-builder" \| "mitm"` | Configuration ပြုလုပ်သည့် ယန္တရား | | `id`, `name`, `color`, `description`, `docsUrl` | standard | အဓိကပြသမှု field များ | `baseUrlSupport: "none"` ပါသော entry များကို dashboard page များတွင် **မပြသပါ** — ၎င်းတို့ကို plan 11 အတွက် MITM backlog တွင် စာရင်းသွင်းထားသည် (`_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md` ကို ကြည့်ပါ)။ ### လုပ်ဆောင်နိုင်စွမ်း အဆင့်များ (စာရင်းသွင်းထားမှု × ရှာဖွေသိရှိနိုင်မှု × ပြင်ဆင်သတ်မှတ်နိုင်မှု × စတင်အသုံးပြုနိုင်မှု) Catalog တွင် စာရင်းသွင်းထားသော tool တိုင်းကို ရှာဖွေသိရှိနိုင်ခြင်း၊ ပြင်ဆင်သတ်မှတ်နိုင်ခြင်း သို့မဟုတ် စတင်အသုံးပြုနိုင်ခြင်း မရှိပါ။ အဆင့်တစ်ခုစီတွင် ကြေညာသတ်မှတ်သည့် အရင်းအမြစ်တစ်ခုစီရှိပြီး drift test က ၎င်းတို့ကို တစ်ပြေးညီဖြစ်နေစေသည်- | Tier | Meaning | Declared in | | -------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------- | | **စာရင်းသွင်းထားမှု** | Dashboard catalog တွင် ပေါ်လာသည် (အမည်၊ vendor၊ docs၊ config type) | `src/shared/constants/cliTools.ts` (`CLI_TOOLS`) | | **ရှာဖွေသိရှိနိုင်မှု** | Binary/config ရှာဖွေသိရှိခြင်း၊ health check များ၊ config path များ | `src/shared/services/cliRuntime.ts` (`CLI_TOOLS` runtime catalog) | | **ပြင်ဆင်သတ်မှတ်နိုင်မှု** | `omniroute configure ` က ပံ့ပိုးသည် (setup recipe ရှိသည်) | `bin/cli/cli-manifest.mjs` (`configure: true`) | | **စတင်အသုံးပြုနိုင်မှု** | `omniroute run ` က ပံ့ပိုးသည် (env/args ထည့်သွင်းမှု သတ်မှတ်ထားသည်) | `bin/cli/cli-manifest.mjs` (`run: true`) | `bin/cli/cli-manifest.mjs` သည် CLI command မျက်နှာပြင်များအတွက် တရားဝင် executable manifest ဖြစ်သည်- `run`၊ `configure` နှင့် shell-completion generator များအားလုံးသည် ၎င်းတို့၏ target စာရင်းများ၊ alias ဖြေရှင်းမှု (ဥပမာ `kilocode`/`kilo-code`/`kilo_cli` → `kilo`) နှင့် `--model` flag ချိတ်ဆက်မှုတို့ကို ၎င်းမှ ရယူသည်။ Drift guard ဖြစ်သော `tests/unit/cli/cli-manifest-drift.test.ts` သည် manifest၊ runtime catalog၊ UI catalog နှင့် consumer မျက်နှာပြင်တိုင်း တစ်ပြေးညီရှိနေကြောင်း စစ်ဆေးအတည်ပြုသည် — အခြားမျက်နှာပြင်များတွင် မထည့်ဘဲ မျက်နှာပြင်တစ်ခုတည်းတွင် target တစ်ခုထည့်ပါက တိတ်တဆိတ် ကွဲလွဲသွားမည့်အစား test suite ပျက်ကွက်မည်ဖြစ်သည်။ --- ## 1. CLI Code ကိရိယာစာရင်း (ကိရိယာ 27 ခု) `/dashboard/cli-code` တွင် ပေါ်လာသော ကိရိယာအားလုံး။ `baseUrlSupport: none` ဖြစ်သော ကိရိယာများကို စိတ်ကြိုက် base URL အစား MITM သို့မဟုတ် လက်စွဲလမ်းညွှန်မှတစ်ဆင့် ချိတ်ဆက်ထားသည်- | id | name | vendor | baseUrlSupport | configType | acpSpawnable | | ------------ | ----------------------- | ------------------- | -------------- | -------------- | ------------ | | claude | Claude Code | Anthropic | full | env | true | | codex | OpenAI Codex CLI | OpenAI | full | custom | true | | zcode | ZCode (GLM Coding Plan) | Z.ai | none | custom | false | | cline | Cline | OSS (ex-Claude Dev) | full | custom | true | | kilo | Kilo Code | Kilo-Org | full | custom | false | | roo | Roo Code | Roo (OSS) | full | guide | false | | continue | Continue | continue.dev | full | guide | false | | aider | Aider | OSS (P. Gauthier) | full | guide | true | | forge | ForgeCode | Antinomy HQ | full | custom | true | | jcode | jcode | 1jehuang (OSS) | full | custom | false | | deepseek-tui | DeepSeek TUI | Hunter Bown (OSS) | full | custom | false | | codewhale | CodeWhale | Hmbown (OSS) | full | custom | false | | opencode | OpenCode | Anomaly (ex-SST) | full | guide | true | | droid | Factory Droid | Factory AI | partial | guide | false | | copilot | GitHub Copilot CLI | GitHub/MS | full | custom | false | | cursor-cli | Cursor CLI | Anysphere | partial | guide | true | | smelt | Smelt | leonardcser (OSS) | full | custom | false | | pi | Pi (pi-coding-agent) | M. Zechner (OSS) | full | custom | false | | grok-build | Grok Build | xAI | full | custom | false | | crush | Crush | OSS (Charm) | full | custom | false | | qwen | Qwen Code | Alibaba | full | guide | true | | zed | Zed | Zed Industries | full | guide | false | | cursor | Cursor | Anysphere | none | guide | false | | antigravity | Antigravity | Google | none | mitm | false | | hermes | Hermes | Nous Research | none | guide | false | | kiro | Kiro AI | Amazon | none | mitm | false | | custom | Custom CLI | — | full | custom-builder | false | `baseUrlSupport: "partial"` ဖြစ်သော ကိရိယာများ၏ dashboard ကတ်တွင် "⚠ တစ်စိတ်တစ်ပိုင်း Base URL" badge ကို ပြသသည်။ --- ## 2. CLI Agent များစာရင်း (ကိရိယာ 10 ခု) `/dashboard/cli-agents` တွင် ပေါ်လာသော အလိုအလျောက်လုပ်ဆောင်နိုင်သည့် agent များ- | id | အမည် | ထုတ်လုပ်သူ | baseUrl ပံ့ပိုးမှု | ACP ဖြင့် စတင်နိုင်မှု | | ------------ | ---------------- | ------------------------ | ------------------ | ---------------------- | | hermes-agent | Hermes Agent | Nous Research | full | false | | openclaw | OpenClaw | OSS (P. Steinberger) | full | true | | goose | Goose | Block / Linux Foundation | full | true | | interpreter | Open Interpreter | OSS | full | true | | warp | Warp AI | Warp Inc. | partial | true | | agent-deck | Agent Deck | asheshgoplani (OSS) | full | false | | omp | Oh My Pi | OSS | full | true | | letta | Letta CLI | Letta | full | false | | prime-agent | Prime Agent | Prime Intellect (OSS) | full | false | | 5dive | 5dive | OSS (5dive-ai) | full | false | --- ## 3. ACP Agent များ (/dashboard/acp-agents) ဤစာမျက်နှာ (`/dashboard/agents` မှ အမည်ပြောင်းထားသည်) တွင် OmniRoute က stdio/ACP protocol မှတစ်ဆင့် backend execution engine များအဖြစ် **စတင်ပေးနိုင်သော** CLI များကို ပြသထားသည်။ Catalog ကို `src/lib/acp/registry.ts` တွင် သီးခြားထိန်းသိမ်းထားပြီး `CLI_TOOLS` နှင့် **မတူပါ**။ --- ## 4. MITM လုပ်ဆောင်ရန်ကျန်စာရင်း (dashboard တွင် မပြသထားပါ) အောက်ပါ CLI များသည် စိတ်ကြိုက် base URL ကို မူလပုံစံအတိုင်း ပံ့ပိုးမထားသည့်အပြင် CLI Code သို့မဟုတ် CLI Agents စာမျက်နှာများတွင်လည်း **စာရင်းသွင်းမထားပါ**။ ၎င်းတို့သည် အစီအစဉ် 11 ရှိ MITM ကြားဖြတ်ဖမ်းယူမှုအတွက် ထည့်သွင်းစဉ်းစားမည့်အရာများဖြစ်သည်- | CLI | အကြောင်းရင်း | | ------------------- | ----------------------------------------------------------------------------------- | | windsurf | BYOK ကို ရွေးချယ်ထားသော Claude model များ + ကုမ္ပဏီ URL/token အတွက်သာ ကန့်သတ်ထားသည် | | amp | ပိတ်ထားသော ecosystem (Sourcegraph) | | amazon-q / kiro-cli | AWS SSO auth ကိုသုံးပြီး စိတ်ကြိုက် URL မရှိပါ | | cowork | Anthropic Desktop ဖြစ်ပြီး ပြင်ဆင်သတ်မှတ်နိုင်သော endpoint မရှိပါ | အပြည့်အစုံ အပြန်အလှန်ကိုးကားချက်အတွက် `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md` ကို ကြည့်ပါ။ --- ## 5. Batch Detection API ကိရိယာရှာဖွေစစ်ဆေးမှုအားလုံးကို endpoint တစ်ခုတည်းမှတစ်ဆင့် စုစည်းထားသည်- **`GET /api/cli-tools/all-statuses`** - Auth: `requireCliToolsAuth(request)` (အခြား `/api/cli-tools/` route များနှင့် အတူတူ) - ပြန်ပေးသည့်တန်ဖိုး- `Record` (type: `src/shared/types/cliBatchStatus.ts`) - နည်းဗျူဟာ- ကိရိယာအားလုံးအပေါ် `Promise.all` ကို အသုံးပြုပြီး ကိရိယာတစ်ခုစီအတွက် အချိန်ကန့်သတ်ချက် 5s သတ်မှတ်ထားသည် - Cache: config file `mtime` ဖြင့် index ပြုလုပ်ထားသည့် memory အတွင်းရှိ LRU ဖြစ်သည်။ mtime ပြောင်းလဲသည့်အခါ Cache ကို ပယ်ဖျက်သည်။ Server ပြန်လည်စတင်သည့်အခါ reset လုပ်သည်။ ကိရိယာတစ်ခုစီအတွက် response ပုံစံ- ```ts interface ToolBatchStatus { detection: { installed: boolean; runnable: boolean; version?: string; command?: string; commandPath?: string; reason?: string; }; config: { status: "configured" | "not_configured" | "not_installed" | "unknown" | "other"; endpoint?: string | null; lastConfiguredAt?: string | null; }; error?: string; // သန့်စင်ထားပြီး stack trace များ မပါဝင်ပါ } ``` --- ## 6. Tool အသစ်များအတွက် Settings Handler များ `configType: "custom"` ပါဝင်သော tool အသစ်များတွင် သီးသန့် settings API route များရှိသည်- | Route | Tool | | ------------------------------------------- | ------------------------------------------------------------------------------ | | `POST /api/cli-tools/forge-settings` | ForgeCode (.forge.toml) | | `POST /api/cli-tools/jcode-settings` | jcode (--base-url flag) | | `POST /api/cli-tools/deepseek-tui-settings` | DeepSeek TUI (OPENAI_BASE_URL၊ အဟောင်းပုံစံ) | | `POST /api/cli-tools/codewhale-settings` | CodeWhale (OPENAI_BASE_URL၊ အဓိက + အဟောင်းပုံစံ `~/.deepseek` ချိန်ကိုက်ခြင်း) | | `POST /api/cli-tools/smelt-settings` | Smelt | | `POST /api/cli-tools/pi-settings` | Pi coding agent | | `POST /api/cli-tools/grok-build-settings` | Grok Build (~/.grok/config.toml၊ `[model.omniroute]`) | | `POST /api/cli-tools/qwen-settings` | Qwen Code (`~/.qwen/settings.json` + သီးသန့် `.env` key) | Route အားလုံးသည် error response များအတွက် `sanitizeErrorMessage()` ကို အသုံးပြုသည် (မဖြစ်မနေလိုက်နာရမည့် စည်းမျဉ်း #12)။ --- ## 7. Dashboard Page များ၏ Architecture ### CLI Code ၏ (`/dashboard/cli-code`) - `src/app/(dashboard)/dashboard/cli-code/page.tsx` — server component - `src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx` — client grid - `src/app/(dashboard)/dashboard/cli-code/[id]/page.tsx` — tool အသေးစိတ် page - `src/app/(dashboard)/dashboard/cli-code/components/` — အထူးပြု tool card 12 ခု + `ToolDetailClient.tsx` ### CLI Agent များ (`/dashboard/cli-agents`) - `src/app/(dashboard)/dashboard/cli-agents/page.tsx` — server component - `src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx` — client grid - `src/app/(dashboard)/dashboard/cli-agents/[id]/page.tsx` — `ToolDetailClient` ကို ပြန်လည်အသုံးပြုသည် ### ACP Agent များ (`/dashboard/acp-agents`) - `src/app/(dashboard)/dashboard/acp-agents/page.tsx` — server component (`agents/` မှ ရွှေ့ထားသည်) ### မျှဝေအသုံးပြုသော UI Component များ (`src/shared/components/cli/`) | File | ရည်ရွယ်ချက် | | ----------------------- | ------------------------------------------------------------------ | | `CliToolCard.tsx` | အသိဉာဏ်ရှိသော status card (ရှာဖွေသတ်မှတ်ခြင်း + config + endpoint) | | `CliConceptCard.tsx` | Page တစ်ခုချင်းစီအလိုက် concept ရှင်းလင်းချက် card | | `CliComparisonCard.tsx` | CLI အမျိုးအစားများအကြား ကော်လံသုံးခုဖြင့် နှိုင်းယှဉ်မှု | | `BaseUrlSelect.tsx` | Endpoint dropdown (Local/Cloud/Custom) | | `ApiKeySelect.tsx` | API key ရွေးချယ်ကိရိယာ | | `ManualConfigModal.tsx` | ကူးယူနိုင်သော config snippet modal | ### မျှဝေအသုံးပြုသော Hook (`src/shared/hooks/cli/`) | File | ရည်ရွယ်ချက် | | ------------------------- | ---------------------------------------------------------------------------------- | | `useToolBatchStatuses.ts` | `/api/cli-tools/all-statuses` ကို ရယူပြီး loading/refresh state ကို စီမံခန့်ခွဲသည် | --- ## 8. i18n အစီအစဉ် 14 F9 တွင် namespace အသစ်များကို ထည့်သွင်းထားသည်- | Namespace | ရည်ရွယ်ချက် | | ----------- | ----------------------------------------------------------------------------------------------------------- | | `cliCommon` | မျှဝေသုံးစွဲသည့် စာသားများ (ကတ်အညွှန်းများ၊ အယူအဆ/နှိုင်းယှဉ်ချက် စာသားများ၊ အသေးစိတ်စာမျက်နှာ အညွှန်းများ) | | `cliCode` | CLI Code စာမျက်နှာ၏ စာသားများ | | `cliAgents` | CLI Agents စာမျက်နှာ၏ စာသားများ | | `acpAgents` | ACP Agents စာမျက်နှာ၏ စာသားများ | PT-BR နှင့် EN ဘာသာပြန်ဆိုချက် အပြည့်အစုံကို ပံ့ပိုးထားသည်။ အခြား locale 39 ခုသည် `src/i18n/request.ts` ရှိ namespace အဆင့် ပေါင်းစည်းမှုမှတစ်ဆင့် EN ကို အလိုအလျောက် အရန်အဖြစ် အသုံးပြုသည်။ --- ## 9. အမြန်စတင်ခြင်း ### အဆင့် 1 — OmniRoute API Key တစ်ခု ရယူပါ 1. `/dashboard/api-manager` ကိုဖွင့်ပါ → **API Key ဖန်တီးပါ** 2. ၎င်းကို အမည်တစ်ခုပေးပါ (ဥပမာ `cli-tools`)၊ ထို့နောက် ခွင့်ပြုချက်အားလုံးကို ရွေးချယ်ပါ 3. key ကို ကူးယူပါ — အောက်ပါ CLI တိုင်းအတွက် ၎င်းကို လိုအပ်ပါမည် > သင့် key သည် ဤပုံစံဖြစ်သည်- `sk-xxxxxxxxxxxxxxxx-xxxxxxxxx` --- ### အဆင့် 2 — CLI ကိရိယာများကို ထည့်သွင်းပါ npm အခြေပြု ကိရိယာအားလုံးသည် Node.js 22.22.2+ သို့မဟုတ် 24.x လိုအပ်သည်- ```bash # Claude Code (Anthropic) npm install -g @anthropic-ai/claude-code # OpenAI Codex npm install -g @openai/codex # OpenCode npm install -g opencode-ai # Cline npm install -g cline # KiloCode npm install -g kilocode # Qwen Code npm install -g @qwen-code/qwen-code # Google Gemini CLI (`omniroute run gemini` မှတစ်ဆင့် စတင်နိုင်သည် → /v1beta မျက်နှာပြင်) npm install -g @google/gemini-cli # Aider pip install aider-chat # Smelt cargo install smelt # Rust အခြေပြု # Pi coding agent # ထည့်သွင်းရန် https://github.com/zechnerj/pi-coding-agent ကို ကြည့်ပါ # jcode # ထည့်သွင်းရန် https://github.com/1jehuang/jcode ကို ကြည့်ပါ ``` --- ### အဆင့် 3 — Dashboard မှတစ်ဆင့် စီစဉ်သတ်မှတ်ပါ 1. `http://localhost:20128/dashboard/cli-code` သို့ သွားပါ 2. grid ထဲတွင် သင့်ကိရိယာကို ရှာပါ 3. ကိရိယာ၏ အသေးစိတ်စာမျက်နှာကို ဖွင့်ရန် ကတ်ကို နှိပ်ပါ 4. သင့် API key နှင့် base URL ကို ရွေးချယ်ပါ 5. **စီစဉ်သတ်မှတ်ချက်ကို အသုံးပြုပါ** ကို နှိပ်ပါ သို့မဟုတ် ကိုယ်တိုင်စီစဉ်သတ်မှတ်ရန် snippet ကို ကူးယူပါ --- ### အဆင့် 4 — Global Environment Variable များကို သတ်မှတ်ပါ ```bash # OmniRoute Universal Endpoint export OPENAI_BASE_URL="http://localhost:20128/v1" export OPENAI_API_KEY="sk-your-omniroute-key" export ANTHROPIC_BASE_URL="http://localhost:20128" export ANTHROPIC_AUTH_TOKEN="sk-your-omniroute-key" # Gemini CLI သည် GOOGLE_GEMINI_BASE_URL ကို ROOT တွင် ဖတ်သည် (၎င်း၏ SDK က /v1beta/... ကို ကိုယ်တိုင် နောက်တွဲထည့်သည်) export GOOGLE_GEMINI_BASE_URL="http://localhost:20128" export GEMINI_API_KEY="sk-your-omniroute-key" ``` > **အဝေးရှိ ဆာဗာ** အတွက် `localhost:20128` ကို ဆာဗာ IP သို့မဟုတ် domain ဖြင့် အစားထိုးပါ၊ > ဥပမာ `http://:20128`။ --- ### အဆင့် 4 — ကိရိယာတစ်ခုချင်းစီကို စီစဉ်သတ်မှတ်ပါ #### Claude Code ```bash # ~/.claude/settings.json ကို ဖန်တီးပါ- mkdir -p ~/.claude && cat > ~/.claude/settings.json << EOF { "env": { "ANTHROPIC_BASE_URL": "http://localhost:20128", "ANTHROPIC_AUTH_TOKEN": "sk-your-omniroute-key" } } EOF ``` Claude Code အတွက် ပေါင်းစည်းထားသော Anthropic gateway root ကို အသုံးပြုပါ။ ဤနေရာတွင် `/v1` ကို နောက်တွဲမထည့်ပါနှင့်။ **စမ်းသပ်ရန်-** `claude "say hello"` --- #### OpenAI Codex ခေတ်သစ် Codex (v0.137+) သည် `~/.codex/config.toml` ကိုသာ ဖတ်သည် — `config.yaml` အဟောင်းသည် ယခင် npm CLI နှင့် သက်ဆိုင်ပြီး မည်သည့်အသိပေးချက်မျှ မရှိဘဲ လျစ်လျူရှုခံရသည်။ API key သည် ဖိုင်အတွင်း ဘယ်သောအခါမျှ မရှိဘဲ `OMNIROUTE_API_KEY` environment variable (`env_key`) ထဲတွင်သာ ရှိသည်- ```bash mkdir -p ~/.codex && cat > ~/.codex/config.toml << EOF model_provider = "omniroute" [model_providers.omniroute] name = "OmniRoute" base_url = "http://localhost:20128/v1" env_key = "OMNIROUTE_API_KEY" requires_openai_auth = false EOF export OMNIROUTE_API_KEY="sk-your-omniroute-key" ``` ကိုးကားချက်အပြည့်အစုံ (profile များ၊ `wire_api`၊ context window များ)- [CODEX-CLI-CONFIGURATION.md](../guides/CODEX-CLI-CONFIGURATION.md)။ **စမ်းသပ်ရန်-** `codex "what is 2+2?"` --- #### OpenCode ```bash mkdir -p ~/.config/opencode && cat > ~/.config/opencode/opencode.json << EOF { "\$schema": "https://opencode.ai/config.json", "provider": { "omniroute": { "npm": "@ai-sdk/openai-compatible", "name": "OmniRoute", "options": { "baseURL": "http://localhost:20128/v1", "apiKey": "sk-your-omniroute-key" }, "models": { "claude-sonnet-4-5": { "name": "claude-sonnet-4-5" }, "claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" }, "gemini-3-flash": { "name": "gemini-3-flash" } } } } } EOF ``` **စမ်းသပ်ရန်-** `opencode` > thinking variant များကို ပေးပို့ရန် > `opencode run "your prompt" --model omniroute/claude-sonnet-4-5-thinking --variant high` ကို အသုံးပြုပါ။ --- #### Cline (CLI သို့မဟုတ် VS Code) **CLI mode-** ```bash mkdir -p ~/.cline/data && cat > ~/.cline/data/globalState.json << EOF { "apiProvider": "openai", "openAiBaseUrl": "http://localhost:20128/v1", "openAiApiKey": "sk-your-omniroute-key" } EOF ``` **VS Code mode-** Cline extension setting များ → API Provider: `OpenAI Compatible` → Base URL: `http://localhost:20128/v1` သို့မဟုတ် OmniRoute dashboard → **CLI Tools → Cline → စီစဉ်သတ်မှတ်ချက်ကို အသုံးပြုပါ** ကို အသုံးပြုပါ။ --- #### KiloCode (CLI သို့မဟုတ် VS Code) **CLI mode-** ```bash kilocode --api-base http://localhost:20128/v1 --api-key sk-your-omniroute-key ``` **VS Code setting များ-** ```json { "kilo-code.openAiBaseUrl": "http://localhost:20128/v1", "kilo-code.apiKey": "sk-your-omniroute-key" } ``` သို့မဟုတ် OmniRoute dashboard → **CLI Tools → KiloCode → စီစဉ်သတ်မှတ်ချက်ကို အသုံးပြုပါ** ကို အသုံးပြုပါ။ --- #### Continue (VS Code Extension) `~/.continue/config.yaml` ကို တည်းဖြတ်ပါ- ```yaml models: - name: OmniRoute provider: openai model: auto apiBase: http://localhost:20128/v1 apiKey: sk-your-omniroute-key default: true ``` တည်းဖြတ်ပြီးနောက် VS Code ကို ပြန်လည်စတင်ပါ။ --- #### VS Code Insiders (`chatLanguageModels.json`) VS Code Insiders ကို စိတ်ကြိုက် endpoint model များအတွက် စီစဉ်သတ်မှတ်ထားပြီး စိတ်ကြိုက် header field မပါဘဲ OmniRoute ကို အသုံးပြုလိုသည့်အခါ ဤနည်းလမ်းကို အသုံးပြုပါ။ **အကြံပြုထားသော တည်နေရာ-** - Linux: `~/.config/Code - Insiders/User/chatLanguageModels.json` - Windows: `%APPDATA%/Code - Insiders/User/chatLanguageModels.json` **တိုကင်ထည့်သွင်းထားသော OmniRoute alias ကို အသုံးပြုသည့် ဥပမာ:** ```json [ { "vendor": "customendpoint", "id": "auto", "name": "OmniRoute Auto", "family": "gpt-4", "version": "1.0.0", "url": "http://localhost:20128/api/v1/vscode/sk-your-omniroute-key/chat/completions", "modelsUrl": "http://localhost:20128/api/v1/vscode/sk-your-omniroute-key/models", "requestFormat": "openai-chat-completions", "contextWindow": 256000, "maxOutputTokens": 32768, "auth": { "type": "none" } } ] ``` **မှတ်ချက်များ:** - `sk-your-omniroute-key` ကို OmniRoute တွင် ဖန်တီးထားသော API key ဖြင့် အစားထိုးပါ။ - `url` field သည် `/api/v1/vscode/{token}/chat/completions` သို့ ညွှန်ပြသင့်သည်။ - `modelsUrl` field သည် `/api/v1/vscode/{token}/models` သို့ ညွှန်ပြသင့်သည်။ - client က စိတ်ကြိုက် header များကို ပံ့ပိုးသည့်အခါ ပုံမှန် `/v1` + Bearer header နည်းလမ်းကို ဦးစားပေးအသုံးပြုပါ။ - URL တွင် ထည့်သွင်းထားသော token များသည် လိုက်ဖက်ညီမှုအတွက် အရန်နည်းလမ်းတစ်ခုဖြစ်ပြီး editor log များ သို့မဟုတ် proxy history တွင် ပေါ်လာနိုင်သည်။ --- #### Kiro CLI (Amazon) ```bash # သင်၏ AWS/Kiro account သို့ ဝင်ရောက်ပါ: kiro-cli login # CLI သည် ၎င်း၏ကိုယ်ပိုင် auth ကို အသုံးပြုသည် — Kiro CLI ကိုယ်တိုင်အတွက် OmniRoute ကို backend အဖြစ် မလိုအပ်ပါ။ # အခြား tool များအတွက် OmniRoute နှင့်အတူ kiro-cli ကို အသုံးပြုပါ။ kiro-cli status ``` **Kiro IDE** desktop app အတွက် OmniRoute က ဖော်ထုတ်ပေးထားသော MITM endpoint ကို `/dashboard/cli-tools → Kiro` အောက်တွင် အသုံးပြုပါ။ --- ## 10. အတွင်းပိုင်း OmniRoute CLI `omniroute` binary သည် ဆာဗာ၏ အသက်တာစက်ဝန်း၊ စနစ်ထည့်သွင်းမှု၊ ပြဿနာရှာဖွေစစ်ဆေးမှုနှင့် provider စီမံခန့်ခွဲမှုတို့အတွက် command များကို ပံ့ပိုးပေးသည်။ စတင်ဝင်ရောက်သည့်နေရာ- `bin/omniroute.mjs`။ ```bash omniroute # ဆာဗာကို စတင်ရန် (မူလ port 20128) omniroute setup # အပြန်အလှန်တုံ့ပြန်နိုင်သော စနစ်ထည့်သွင်းမှု wizard omniroute doctor # config၊ DB၊ port များနှင့် runtime ကို စစ်ဆေးရန် omniroute providers list # ပြင်ဆင်သတ်မှတ်ထားသော provider ချိတ်ဆက်မှုများ omniroute providers test-all # လက်ရှိအသုံးပြုနေသော ချိတ်ဆက်မှုတိုင်းကို စမ်းသပ်ရန် omniroute reset-password # admin password ကို ပြန်လည်သတ်မှတ်ရန် omniroute logs # request log များကို ဆက်တိုက်ကြည့်ရှုရန် omniroute health # အသေးစိတ်အခြေအနေ (breakers၊ cache၊ memory) omniroute --version # version ကို ပြရန် omniroute --help # command အားလုံးကို ပြရန် ``` ### စနစ်ထည့်သွင်းခြင်းနှင့် အစပြုခြင်း ```bash omniroute setup # အပြန်အလှန်တုံ့ပြန်နိုင်သော စနစ်ထည့်သွင်းမှု wizard omniroute setup --non-interactive # CI/automation mode (env var များနှင့် flag များကို ဖတ်သည်) omniroute setup --password '' # admin password ကို တိုက်ရိုက်သတ်မှတ်ရန် omniroute setup --add-provider \ --provider openai \ --api-key '' \ --test-provider # provider တစ်ခုကို တစ်ကြိမ်တည်းဖြင့် ထည့်သွင်းပြီး စမ်းသပ်ရန် ``` အပြန်အလှန်တုံ့ပြန်မှုမရှိသော စနစ်ထည့်သွင်းမှုအတွက် အသိအမှတ်ပြုထားသည့် environment variable များ- | Var | ရည်ရွယ်ချက် | | ------------------- | -------------------------------------------------------------------------------- | | `OMNIROUTE_API_KEY` | Provider API key (Commander `.env()` မှတစ်ဆင့် `--api-key` နှင့် ချိတ်ဆက်ထားသည်) | | `DATA_DIR` | OmniRoute data directory ကို အစားထိုးသတ်မှတ်ရန် | အခြားအပြန်အလှန်တုံ့ပြန်မှုမရှိသော input အားလုံးကို environment variable များအဖြစ်မဟုတ်ဘဲ flag များအဖြစ် ပေးပို့သည်- `--password`, `--provider`, `--provider-name`, `--provider-base-url`, `--default-model` (အထက်ပါ `omniroute setup` option များကို ကြည့်ပါ)။ ### ပြဿနာရှာဖွေစစ်ဆေးမှု ```bash omniroute doctor # config၊ DB၊ port များ၊ runtime၊ memory နှင့် liveness ကို စစ်ဆေးရန် omniroute doctor --json # စက်ဖြင့်ဖတ်ရှုနိုင်သော JSON omniroute doctor --no-liveness # HTTP health probe ကို ကျော်ရန် omniroute doctor --host 0.0.0.0 # liveness host ကို အစားထိုးသတ်မှတ်ရန် omniroute doctor --liveness-url # health endpoint URL အပြည့်အစုံကို အစားထိုးသတ်မှတ်ရန် ``` doctor သည် ဤစစ်ဆေးမှုများကို လုပ်ဆောင်သည်- `Config`, `Database`, `Storage/encryption`, `Port availability`, `Node runtime`, `Native binary` (better-sqlite3), `Memory` နှင့် `Server liveness`။ စစ်ဆေးမှုတစ်ခုခုသည် `fail` ဖြစ်ပါက non-zero ဖြင့် ထွက်သည်။ ### Provider စီမံခန့်ခွဲမှု ```bash omniroute providers available # OmniRoute provider catalog omniroute providers available --search openai # id/name/alias/category ဖြင့် catalog ကို စစ်ထုတ်ရန် omniroute providers available --category api-key # category ဖြင့် စစ်ထုတ်ရန် (api-key၊ oauth၊ free၊ ...) omniroute providers available --json # စက်ဖြင့်ဖတ်ရှုနိုင်သော JSON omniroute providers list # ပြင်ဆင်သတ်မှတ်ထားသော provider ချိတ်ဆက်မှုများ omniroute providers list --json omniroute providers test # ပြင်ဆင်သတ်မှတ်ထားသော ချိတ်ဆက်မှုတစ်ခုကို စမ်းသပ်ရန် omniroute providers test-all # လက်ရှိအသုံးပြုနေသော ချိတ်ဆက်မှုတိုင်းကို စမ်းသပ်ရန် omniroute providers validate # local အတွင်းသာ တည်ဆောက်ပုံဆိုင်ရာ စစ်ဆေးအတည်ပြုမှု omniroute providers add --credential-env PROVIDER_KEY omniroute providers import ./providers.json --dry-run --json omniroute providers auth # ရှိပြီးသား OAuth flow omniroute providers edit --default-model omniroute providers remove --yes ``` `providers add/import/auth/edit/remove` သည် API ကို ဦးစားပေးအသုံးပြုသောကြောင့် လက်ရှိ local သို့မဟုတ် remote context နှင့် အလုပ်လုပ်သည်။ Credential input အတွက် `--credential-stdin` သို့မဟုတ် `--credential-env` ကို အသုံးပြုသင့်သည်။ `--dry-run --json` သည် ဖုံးကွယ်ထားသော တည်ရှိမှု/ပုံသဏ္ဌာန်ကိုသာ အစီရင်ခံသည်။ `providers available` သည် OmniRoute catalog ကို ဖတ်သည်။ `providers list/test/test-all/validate` သည် ၎င်းတို့၏ local SQLite အပြုအမူကို ဆက်လက်ထိန်းသိမ်းထားပြီး ဆာဗာ လည်ပတ်နေရန် မလိုအပ်ပါ။ စိတ်ကြိုက် OpenAI-compatible သို့မဟုတ် Anthropic-compatible node တစ်ခုအတွက် `omniroute nodes add` မှ ပြန်ပေးသော node ID နှင့် credential များကို `omniroute keys add "$NODE_ID" --stdin` သုံး၍ ချိတ်ဆက်ပါ။ ၎င်းအတွက် လည်ပတ်နေသော ဆာဗာတစ်ခုနှင့် လက်ရှိ context အတွက် management authentication လိုအပ်သည်။ CLI သည် node ကို စစ်ဆေးအတည်ပြုပြီး ၎င်း၏ endpoint setting များကို ချိတ်ဆက်မှုထဲသို့ ကူးယူပေးသည့် `POST /api/providers` ကို အသုံးပြုသည်။ node ပျောက်ဆုံးနေခြင်း၊ authorization မအောင်မြင်ခြင်း သို့မဟုတ် ဆာဗာ မရရှိနိုင်ခြင်းတို့ ဖြစ်ပါက local fallback credential မဖန်တီးဘဲ error ပြန်ပေးသည်။ `nodes add --base-url` သည် node endpoint ကို သတ်မှတ်ပေးသည်။ ၎င်းသည် `OMNIROUTE_BASE_URL` ရှိ ဆာဗာလိပ်စာနှင့် သီးခြားဖြစ်သည်။ OpenAPI file များအတွက် `omniroute openapi dump --format json --out ./openapi.json` ကို အသုံးပြုပါ။ global `--output` သည် destination filename ကို မဟုတ်ဘဲ CLI display formatting ကို ရွေးချယ်သည်။ ### ပြန်လည်ရယူခြင်းနှင့် ပြန်လည်သတ်မှတ်ခြင်း ```bash omniroute reset-password # admin password ကို ပြန်လည်သတ်မှတ်ရန် (ဤအမည်ဖြင့်လည်း ရသည်- omniroute-reset-password) omniroute reset-encrypted-columns # encrypted credential reset အတွက် သတိပေးချက် + dry-run ကို ပြရန် omniroute reset-encrypted-columns --force # SQLite ရှိ encrypted credential များကို အမှန်တကယ် null လုပ်ရန် ``` ### Credential ထုတ်ယူခြင်း (⚠ သတိဖြင့် ကိုင်တွယ်ပါ) ```bash omniroute auth export # သတိပေးချက် + အတည်ပြုမှုအဆင့်ကို ပြရန် — DB ကို မဝင်ရောက်ပါ omniroute auth export --force # ချိတ်ဆက်မှုအားလုံး၏ DECRYPTED credential များကို JSON အဖြစ် stdout သို့ ထုတ်ရန် omniroute auth export --force --id # ကိုက်ညီသော ချိတ်ဆက်မှုကိုသာ ထုတ်ရန် omniroute auth export --force --format env # OMNIROUTE__= လိုင်းများကို ထုတ်ရန် omniroute auth export --force --out creds.json # file တစ်ခုသို့ ရေးရန် (0600 permission ဖြင့် ဖန်တီးသည်) ``` `auth export` သည် **စက်တွင်းသီးသန့်** ဖြစ်သည် (SQLite ကို တိုက်ရိုက်ဖတ်ရှုခြင်းဖြစ်ပြီး HTTP route မရှိပါ)။ ထို့အပြင် **စာသားအတိုင်း** `apiKey`/`accessToken`/`refreshToken`/`idToken` တန်ဖိုးများကို ရည်ရွယ်ချက်ရှိရှိ ဖော်ပြ/ရေးသားသည် — ၎င်းသည် ချို့ယွင်းချက်မဟုတ်ဘဲ လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ `--force` မပါဘဲ database မှ မည်သည့်အရာကိုမျှ ဖတ်ရှုမည်မဟုတ်သကဲ့သို့ မည်သည့်အရာကိုမျှ စာဝှက်ဖြည်မည်မဟုတ်ပါ။ စာသားအတိုင်း တန်ဖိုးတစ်ခုခုကို မထုတ်မီ stderr တွင် သတိပေး banner ကို အမြဲဖော်ပြသည်။ `STORAGE_ENCRYPTION_KEY` ကို သတ်မှတ်ထားရန် လိုအပ်သည်။ စာဝှက်ဖြည်ရန် မအောင်မြင်သော field တစ်ခု (key အဟောင်း၊ ပျက်စီးနေသော ciphertext) ကို export တစ်ခုလုံး ရပ်တန့်ခြင်း သို့မဟုတ် အရင်းခံ error ကို ဖော်ထုတ်ခြင်းအစား `DecryptFailed: true` အဖြစ် အစီရင်ခံသည်။ ### အခြား subcommand များ အောက်ပါ command များသည် သီးခြားဖော်ပြထားခြင်းမရှိပါက လည်ပတ်နေသော OmniRoute server တစ်ခုရှိသည်ဟု ယူဆသည်- ```bash omniroute status # လုပ်ဆောင်နေမှုအခြေအနေ အပြည့်အစုံ omniroute logs # request log များကို ဆက်တိုက်ဖော်ပြရန် (--json, --search, --follow) omniroute config list # စီစဉ်သတ်မှတ်ထားသော CLI tool များကို ဖော်ပြရန် omniroute provider list # ရရှိနိုင်သော provider များကို စာရင်းပြုစုရန် (providers list ၏ alias) omniroute provider add # OmniRoute ကို tool တစ်ခုတွင် provider အဖြစ် မှတ်ပုံတင်ရန် omniroute keys add | list | remove # API key များကို စီမံရန် omniroute models [provider] # model များကို စာရင်းပြုစုရန် (--json, --search) omniroute combo list | switch | create | delete omniroute backup # config + DB ၏ snapshot ရယူရန် omniroute restore # ယခင် snapshot တစ်ခုမှ ပြန်လည်ရယူရန် omniroute health # အသေးစိတ် health အခြေအနေ (breaker များ၊ cache၊ memory) omniroute quota # Provider quota အသုံးပြုမှု omniroute cache # Cache အခြေအနေ omniroute cache clear # semantic + signature cache များကို ရှင်းလင်းရန် omniroute mcp status | restart # MCP server အခြေအနေ / ပြန်လည်စတင်ရန် omniroute a2a status | card # A2A server အခြေအနေ / agent card omniroute tunnel list | create | stop # tunnel များကို စီမံရန် (cloudflare/tailscale/ngrok) omniroute env show | get | set # env var များကို စစ်ဆေးရန် / သတ်မှတ်ရန် (ယာယီ) omniroute test # Provider ချိတ်ဆက်နိုင်မှု အခြေခံစမ်းသပ်ချက် omniroute update # update များ ရှိ/မရှိ စစ်ဆေးရန် omniroute completion # shell completion ထုတ်လုပ်ရန် ``` ### အသုံးများသော flag များ | Flag | ဖော်ပြချက် | | ------------------- | ----------------------------------------------------------- | | `--no-open` | စတင်ချိန်တွင် browser ကို အလိုအလျောက် မဖွင့်ရန် | | `--port ` | API port ကို ပြောင်းလဲသတ်မှတ်ရန် (မူလတန်ဖိုး 20128) | | `--mcp` | stdio မှတစ်ဆင့် MCP server အဖြစ် လည်ပတ်ရန် (IDE များအတွက်) | | `--non-interactive` | CI mode (prompt မရှိပါ၊ env/flag များမှ ဖတ်ရှုသည်) | | `--json` | စက်ဖြင့်ဖတ်ရှုနိုင်သော JSON output (doctor, providers စသည်) | | `--help`, `-h` | သက်ဆိုင်ရာ command အတွက် အကူအညီကို ဖော်ပြရန် | | `--version`, `-v` | ထည့်သွင်းထားသော version ကို ဖော်ပြရန် | --- ## ရရှိနိုင်သော API Endpoint များ | Endpoint | ဖော်ပြချက် | အသုံးပြုရန် | | -------------------------- | -------------------------------- | ------------------------------------------ | | `/v1/chat/completions` | ပုံမှန် chat (provider အားလုံး) | ခေတ်မီ tool အားလုံး | | `/v1/responses` | Responses API (OpenAI format) | Codex၊ agentic workflow များ | | `/v1/completions` | အဟောင်းသုံး text completion များ | `prompt:` ကို အသုံးပြုသော tool အဟောင်းများ | | `/v1/embeddings` | Text embedding များ | RAG၊ ရှာဖွေမှု | | `/v1/images/generations` | ပုံထုတ်လုပ်ခြင်း | GPT-Image၊ Flux စသည်တို့ | | `/v1/audio/speech` | စာသားမှအသံသို့ | ElevenLabs၊ OpenAI TTS | | `/v1/audio/transcriptions` | အသံမှစာသားသို့ | Deepgram၊ AssemblyAI | Token ထည့်သွင်းထားသော OmniRoute URL ပါဝင်ပြီး တိုက်ရိုက်ကူးထည့်အသုံးပြုနိုင်သည့် ဥပမာများ- ```txt Token ဥပမာ: sk-a3ab3c080beaee3a-69f4a4-070d71af ပုံမှန် OpenAI base: http://localhost:20128/v1 VS Code model များ: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/models VS Code chat: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/chat/completions VS Code response များ: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/responses Ollama tag များ: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/tags Ollama chat: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/chat ``` --- ## ပြဿနာဖြေရှင်းခြင်း | Error | အကြောင်းရင်း | ဖြေရှင်းနည်း | | --------------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------- | | `Connection refused` | OmniRoute အလုပ်မလုပ်နေပါ | `omniroute serve` | | `401 Unauthorized` | API key မှားနေသည် | `/dashboard/api-manager` တွင် စစ်ဆေးပါ | | `No combo configured` | လက်ရှိအသုံးပြုနေသော routing combo မရှိပါ | `/dashboard/combos` တွင် သတ်မှတ်ပါ | | CLI တွင် "not installed" ဟု ပြသည် | Binary သည် PATH ထဲတွင် မရှိပါ | `which ` ဖြင့် စစ်ဆေးပါ | | ထည့်သွင်းပြီးနောက် dashboard တွင် "not detected" ဟု ပြသည် | Cache အဟောင်းဖြစ်နေသည် | dashboard ရှိ "⟳ Refresh detection" ကို နှိပ်ပါ | | Link အဟောင်း `/dashboard/cli-tools` | v3.8.6 မတိုင်မီ bookmark | `/dashboard/cli-code` သို့ အလိုအလျောက် redirect လုပ်သည် (308) | | Link အဟောင်း `/dashboard/agents` | v3.8.6 မတိုင်မီ bookmark | `/dashboard/acp-agents` သို့ အလိုအလျောက် redirect လုပ်သည် (308) | ## OmniRoute CLI ဖြင့် inference-key policy ကို စီမံရန် အတည်ပြုထားသော management context ([Remote Mode](../guides/REMOTE-MODE.md) ကို ကြည့်ပါ) ကို အသုံးပြု၍ ရှိပြီးသား inference key တစ်ခုကို ၎င်း၏ ID ဖြင့် စစ်ဆေးရန် သို့မဟုတ် အပ်ဒိတ်လုပ်ရန်- ```bash omniroute --output json keys policy show KEY_ID omniroute keys policy set KEY_ID --unrestricted omniroute --output json keys policy show KEY_ID ``` `--unrestricted` သည် `--model-access-mode all` ၏ alias တစ်ခုဖြစ်သည်။ ဤအပ်ဒိတ်သည် model allowlist ကို ရှင်းလင်းသည်။ ၎င်းသည် scope များ၊ connection rule များ၊ blocked model များ၊ rate limit များ နှင့် cost limit များကို မပြောင်းလဲဘဲ ထိန်းသိမ်းထားသောကြောင့် အခြား control များက request တစ်ခုကို ဆက်လက်ငြင်းပယ်နိုင်သည်။ အတိအလင်း `--allowed-models ""` သတ်မှတ်ခြင်းသည်လည်း `all` ကို ရွေးချယ်သည်။ ခွင့်ပြုထားသော model မရှိသည့် restricted key အဖြစ် ဆက်ထားရန် ၎င်းကို `--model-access-mode restricted` နှင့် တွဲသုံးပါ။ ဗလာမဟုတ်သော ကော်မာဖြင့်ခွဲထားသည့် စာရင်းသည် အတိအလင်း သတ်မှတ်မထားပါက `restricted` ကို ရွေးချယ်သည်။ ဆန့်ကျင်နေသော `all` နှင့် ဗလာမဟုတ်သည့် allowlist ကို တွဲဖက်သတ်မှတ်ပါက request မပို့မီ ငြင်းပယ်ခံရမည်။ `--rate-limit 30` သည် တစ်မိနစ်လျှင် request အရေအတွက်ကို သတ်မှတ်ပြီး အခြားအချိန် window များအတွက် rule များကို ထိန်းသိမ်းထားသည်။ `--max-cost 5` သည် အပတ်စဉ် cap ကို မပြောင်းလဲဘဲ နေ့စဉ် USD cap ကို ဖွင့်ပေးသည်။ `--max-cost 0` သည် နေ့စဉ် cap ကို ဖယ်ရှားပြီး လက်ရှိ usage-limit toggle နှင့် အပတ်စဉ် cap ကို ထိန်းသိမ်းထားသည်။ ချန်လှပ်ထားသော policy field များသည် မပြောင်းလဲဘဲ ရှိနေမည်။ Rate ပြောင်းလဲမှုများသည် လက်ရှိ policy ကို ဦးစွာဖတ်ရှုသည်။ key တစ်ခုတည်း၏ rate-limit array ကို တစ်ပြိုင်နက်တည်း ပြင်ဆင်ခြင်းမှ ရှောင်ကြဉ်ပါ။ Policy command များသည် အတည်ပြုထားသော `GET`/`PATCH /api/keys/{id}` ကို အသုံးပြုပြီး လက်ရှိအသုံးပြုနေသော context နှင့် global `--api-key` option ကို လိုက်နာသည်။ JSON output တွင် policy field များသာ ပါဝင်ပြီး သိမ်းဆည်းထားသော key သို့မဟုတ် ၎င်း၏ masked ဖော်ပြချက် မပါဝင်ပါ။ inference အတွက်သာဖြစ်သော credential သည် management အပြောင်းအလဲများကို ခွင့်ပြုမပေးနိုင်ပါ။ 401/403 ဖြစ်ပေါ်ပါက management credential နှင့် context ကို စစ်ဆေးရန်လိုသည်။ ၎င်းသည် local CLI-token သို့မဟုတ် salt ချို့ယွင်းမှုဖြစ်ကြောင်း အတည်မပြုပါ။ သီးခြား local authentication contract အတွက် [CLI Token](../security/CLI_TOKEN.md) ကို ကြည့်ပါ။