# Remote Mode (Igbo) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/REMOTE-MODE.md) · 🇪🇹 [am](../../../am/docs/guides/REMOTE-MODE.md) · 🇸🇦 [ar](../../../ar/docs/guides/REMOTE-MODE.md) · 🇦🇿 [az](../../../az/docs/guides/REMOTE-MODE.md) · 🇧🇬 [bg](../../../bg/docs/guides/REMOTE-MODE.md) · 🇧🇩 [bn](../../../bn/docs/guides/REMOTE-MODE.md) · 🇧🇦 [bs](../../../bs/docs/guides/REMOTE-MODE.md) · 🇨🇿 [cs](../../../cs/docs/guides/REMOTE-MODE.md) · 🇩🇰 [da](../../../da/docs/guides/REMOTE-MODE.md) · 🇩🇪 [de](../../../de/docs/guides/REMOTE-MODE.md) · 🇬🇷 [el](../../../el/docs/guides/REMOTE-MODE.md) · 🇪🇸 [es](../../../es/docs/guides/REMOTE-MODE.md) · 🇪🇪 [et](../../../et/docs/guides/REMOTE-MODE.md) · 🇮🇷 [fa](../../../fa/docs/guides/REMOTE-MODE.md) · 🇫🇮 [fi](../../../fi/docs/guides/REMOTE-MODE.md) · 🇫🇷 [fr](../../../fr/docs/guides/REMOTE-MODE.md) · 🇮🇪 [ga](../../../ga/docs/guides/REMOTE-MODE.md) · 🇮🇳 [gu](../../../gu/docs/guides/REMOTE-MODE.md) · 🇳🇬 [ha](../../../ha/docs/guides/REMOTE-MODE.md) · 🇮🇱 [he](../../../he/docs/guides/REMOTE-MODE.md) · 🇮🇳 [hi](../../../hi/docs/guides/REMOTE-MODE.md) · 🇭🇷 [hr](../../../hr/docs/guides/REMOTE-MODE.md) · 🇭🇺 [hu](../../../hu/docs/guides/REMOTE-MODE.md) · 🇦🇲 [hy](../../../hy/docs/guides/REMOTE-MODE.md) · 🇮🇩 [id](../../../id/docs/guides/REMOTE-MODE.md) · 🇮🇹 [it](../../../it/docs/guides/REMOTE-MODE.md) · 🇯🇵 [ja](../../../ja/docs/guides/REMOTE-MODE.md) · 🇬🇪 [ka](../../../ka/docs/guides/REMOTE-MODE.md) · 🇰🇭 [km](../../../km/docs/guides/REMOTE-MODE.md) · 🇮🇳 [kn](../../../kn/docs/guides/REMOTE-MODE.md) · 🇰🇷 [ko](../../../ko/docs/guides/REMOTE-MODE.md) · 🇱🇹 [lt](../../../lt/docs/guides/REMOTE-MODE.md) · 🇱🇻 [lv](../../../lv/docs/guides/REMOTE-MODE.md) · 🇮🇳 [ml](../../../ml/docs/guides/REMOTE-MODE.md) · 🇮🇳 [mr](../../../mr/docs/guides/REMOTE-MODE.md) · 🇲🇾 [ms](../../../ms/docs/guides/REMOTE-MODE.md) · 🇲🇹 [mt](../../../mt/docs/guides/REMOTE-MODE.md) · 🇲🇲 [my](../../../my/docs/guides/REMOTE-MODE.md) · 🇳🇵 [ne](../../../ne/docs/guides/REMOTE-MODE.md) · 🇳🇱 [nl](../../../nl/docs/guides/REMOTE-MODE.md) · 🇳🇴 [no](../../../no/docs/guides/REMOTE-MODE.md) · 🇮🇳 [or](../../../or/docs/guides/REMOTE-MODE.md) · 🇮🇳 [pa](../../../pa/docs/guides/REMOTE-MODE.md) · 🇵🇭 [phi](../../../phi/docs/guides/REMOTE-MODE.md) · 🇵🇱 [pl](../../../pl/docs/guides/REMOTE-MODE.md) · 🇵🇹 [pt](../../../pt/docs/guides/REMOTE-MODE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/REMOTE-MODE.md) · 🇷🇴 [ro](../../../ro/docs/guides/REMOTE-MODE.md) · 🇷🇺 [ru](../../../ru/docs/guides/REMOTE-MODE.md) · 🇱🇰 [si](../../../si/docs/guides/REMOTE-MODE.md) · 🇸🇰 [sk](../../../sk/docs/guides/REMOTE-MODE.md) · 🇸🇮 [sl](../../../sl/docs/guides/REMOTE-MODE.md) · 🇷🇸 [sr](../../../sr/docs/guides/REMOTE-MODE.md) · 🇸🇪 [sv](../../../sv/docs/guides/REMOTE-MODE.md) · 🇰🇪 [sw](../../../sw/docs/guides/REMOTE-MODE.md) · 🇮🇳 [ta](../../../ta/docs/guides/REMOTE-MODE.md) · 🇮🇳 [te](../../../te/docs/guides/REMOTE-MODE.md) · 🇹🇭 [th](../../../th/docs/guides/REMOTE-MODE.md) · 🇹🇷 [tr](../../../tr/docs/guides/REMOTE-MODE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/REMOTE-MODE.md) · 🇵🇰 [ur](../../../ur/docs/guides/REMOTE-MODE.md) · 🇺🇿 [uz](../../../uz/docs/guides/REMOTE-MODE.md) · 🇻🇳 [vi](../../../vi/docs/guides/REMOTE-MODE.md) · 🇳🇬 [yo](../../../yo/docs/guides/REMOTE-MODE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/REMOTE-MODE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/REMOTE-MODE.md) --- Mee ka `omniroute` CLI rụọ ọrụ na laptọọpụ gị ebe OmniRoute n’onwe ya na-arụ ọrụ n’ebe ọzọ (VPS, sava ụlọ, ma ọ bụ kọmputa ọzọ dị na Tailnet gị). Ị ga-eji `omniroute connect` banye otu ugboro, site mgbe ahụ gaa n’ihu, **iwu CLI niile** ga-elekwasị anya na sava ahụ dịpụrụ adịpụ — otu iwu ahụ, otu nsonaazụ ahụ, naanị na a na-eme ya megide sava ahụ dịpụrụ adịpụ. Enweghị ngwá ọrụ nke abụọ ị ga-etinye: ọnọdụ ime ihe n’ebe dịpụrụ adịpụ bụ `omniroute` CLI nkịtị tinyere **access tokens** nwere oke ikike. ```bash npm install -g omniroute # CLI nkịtị omniroute connect 192.168.0.15 # banye (okwuntughe → token nwere oke ikike) omniroute models list # ← ugbu a, ọ na-edepụta model ndị dị na sava DỊPỤRỤ ADỊPỤ omniroute configure codex # ← na-edepụta profaịlụ Codex n'ọrụ mpaghara site na katalọgụ dịpụrụ adịpụ ``` --- ## Otu o si arụ ọrụ ``` laptọọpụ gị OmniRoute dịpụrụ adịpụ (VPS) ┌────────────────────┐ ┌───────────────────────────────┐ │ omniroute CLI │ POST /api/cli/connect (okwuntughe → token) │ │ context: vps │ ───────────────► │ na-emepụta access token nwere │ │ baseUrl, token │ Authorization: Bearer oma_live_… │ │ │ ───────────────► │ ụzọ njikwa ọ bụla, a na-enyocha│ │ na-ede config │ ◄─────────────── │ ikike dịka scope nke token ahụ │ │ N'ỌRỤ MPAGHARA │ └───────────────────────────────┘ └────────────────────┘ ``` - **Contexts** na-echekwa otu sava n’otu (`~/.omniroute/config.json`, `chmod 600`). `omniroute contexts use ` na-agbanwe sava nọ n’ọrụ; `default` bụ nke mpaghara. - **Access tokens** (`oma_live_…`) na-enye ikike maka iwu njikwa. Ha dị iche na igodo inference API (`sk-…`, ndị a na-eji maka `/v1/chat/completions`). - Ọ bụ naanị hash SHA-256 nke token ka a na-echekwa n’akụkụ sava. A na-egosi plaintext **naanị otu ugboro**, mgbe e mepụtara ya. --- ## Ijikọta ### Iji okwuntughe njikwa (bootstrap) ```bash omniroute connect 192.168.0.15 # Okwuntughe njikwa maka http://192.168.0.15:20128: ******** # ✔ Ejikọtala na http://192.168.0.15:20128 — context '192.168.0.15' (scope: admin) ``` Usoro okwuntughe na-emepụta token **admin** na ndabara (ị nwere okwuntughe ahụ, ya mere ị nweelarị njikwa zuru ezu). Jiri `--scope` belata ikike ya: ```bash omniroute connect 192.168.0.15 --scope write ``` Nhọrọ: `--port

` (mgbe host enweghị nke e depụtara), `--name ` (aha context), `--scope read|write|admin`. A na-eji URL zuru ezu dịka ọ dị: `omniroute connect https://omni.example.com`. ### Iji token e mepụtara tupu oge eruo Mepụta token nwere oke ikike na dashboard (ma ọ bụ jiri `omniroute tokens create`) wee mado ya — okwuntughe adịghị mkpa: ```bash omniroute connect 192.168.0.15 --key oma_live_xxxxxxxx ``` CLI na-eji `GET /api/cli/whoami` enyocha ya ma chekwaa ya dịka context nọ n’ọrụ. --- ## Oke ikike Ọkwa atọ, nke ahaziri n’usoro ikike (`admin ⊃ write ⊃ read`): | Oke ikike | Ihe ọ nwere ike ime | | --------- | -------------------------------------------------------------------------------- | | `read` | depụta/nyochaa — `models list`, `providers status`, `logs`, `usage`, `cost` | | `write` | read **+** hazie/tinye n’ọrụ — `setup-codex`, `keys add`, `config set`, ngwakọta | | `admin` | write **+** jikwaa — `tokens` CRUD, tinye providers, services, policy, oauth | Sava na-achọpụta oke ikike ụzọ ọ bụla chọrọ site na HTTP method (`GET`→read, mgbanwe→write), tinyere admin allowlist maka akụkụ ndị nwere mmetụta pụrụ iche (mgbanwe `/api/cli/tokens`, `/api/providers`, `/api/oauth`, `/api/services`, …). Token na-enweghị oke ikike zuru ezu ga-enweta `403` tinyere ozi doro anya. > Ụzọ ndị na-amalite process (`/api/services/*`, `/api/mcp/*`, …) na-anọgide > **naanị maka loopback** — token dịpụrụ adịpụ enweghị ike iru ha, n’agbanyeghị oke ikike ya. --- ## Ijikọta Antigravity na nrụnye dịpụrụ adịpụ Antigravity na-eji ihuenyo nkwenye firstparty/nativeapp nke Google. Google na-ewepụta koodu ikike naanị mgbe **loopback redirect** (`http://127.0.0.1:/callback`) **nwere ike iru site na ihe nchọgharị nke kwadoro nbanye ahụ**. Na nrụnye VPS dịpụrụ adịpụ, loopback ahụ dị na sava, ọ bụghị na kọmputa gị, ya mere ihuenyo nkwenye ahụ **na-anọgide na-eche ruo mgbe ebighị ebi ma ọ naghị ewepụta koodu** — usoro ndabere a na-emebu nke “mado URL callback” enweghị ihe ọ bụla a ga-amado. (Nke a bụ mmachi sitere n'akụkụ Google: otu nkwụsị ahụ na-eme na proxy ọ bụla na-eji Antigravity desktop client e tinyere n'ime ya, ọ bụghị naanị OmniRoute.) Dashboard na-achọpụta nke a tupu ịrapara: imepe **Providers → Antigravity → Connect** site na adreesị na-abụghị localhost na-eji ụzọ ngwọta abụọ dị n'okpuru dochie ọkwa izugbe “detuo URL callback”, ebe e tinyelarị host na port gị na nke ọ bụla. (Adreesị LAN sokwa — `192.168.x.x` abụghị localhost n'ihe gbasara callback a.) E nwere ụzọ abụọ akwadoro iji jikọọ Antigravity na OmniRoute dịpụrụ adịpụ. ### Nhọrọ A — ihe enyemaka nbanye mpaghara (a tụrụ aro) Gbaa OAuth na **kọmputa nke gị**, ebe enwere ike iru `127.0.0.1`. Ihe enyemaka ahụ na Google na-ekwurịta okwu ozugbo, ya mere nkwenye ahụ na-agwụcha ebe ụdị nke dashboard enweghị ike ime ya. **Ọ bụrụ na ijikọlarị** (`omniroute connect `), ọ dịghị ihe ị ga-edetu — ihe enyemaka ahụ ga-ebunye credential ahụ na nrụnye ahụ maka gị: ```bash # Na kọmputa MPAGHARA gị (ọ chọrọ Node.js + ihe nchọgharị): omniroute connect 192.168.0.15 # otu ugboro — na-emepụta context token nwere ikike admin npx omniroute login antigravity # ↳ na-emepe nkwenye Google, na-ejide callback na loopback port mpaghara, # na-agbanwe ya, ma na-eziga credential ahụ site na POST gaa na context na-arụ ọrụ: # # Ejikọtala Antigravity na http://192.168.0.15:20128 (njikọ abc123). # Ọ dịghị ihe ị ga-amado — ị nwere ike imechi terminal a. ``` Push ahụ na-eme na-akpaghị aka mgbe ọ bụla context na-arụ ọrụ na-arụtụ aka na igwe ọzọ. Manye ya n'ụzọ ọ bụla site na `--push` / `--no-push`, ma ọ bụ jiri `--context ` rụtụ aka na context akọwapụtara. **Ọ bụrụ na kọmputa gị enweghị ike iru VPS** (firewall gbochiri ya, enweghị SSH, ma ọ bụ tebụl ọrụ kewapụrụ kpamkpam na netwọk), ihe enyemaka ahụ ka na-arụ ọrụ — naanị Google ka ọ _chọrọ_ n'ezie. Jiri `--no-push`, ma ọ bụ hapụ push ahụ ka ọ daa: ọ ga-alaghachi n'ibipụta blob kama ịtụfu ikike ị rụcharala. ```bash npx omniroute login antigravity --no-push # omniroute-cred-v1.eyJ2IjoxLCJ... ``` Mgbe ahụ, na dashboard **dịpụrụ adịpụ**: **Providers → Antigravity → Connect**, ma mado blob `omniroute-cred-v1.…` n'ime mpaghara **Nzọụkwụ 2** (ọ na-anabata ma URL callback ma ọ bụ credential blob). OmniRoute na-eme decode ya, na-agba Cloud Code onboarding n'akụkụ sava, ma na-echekwa njikọ ahụ. > Blob ahụ nwere refresh token — were ya dịka okwuntughe. N'ụzọ push, a na-eziga ya > otu ugboro site na njikọ context gị e ji nkwenye chebe; n'ụzọ mado, a na-eziga ya > site na njikọ dashboard gị. N'ụzọ ọ bụla, a na-echekwa ya n'ụdị ezoro ezo mgbe ọ > nọ na nchekwa, push gara nke ọma agaghịkwa ebipụta ya na terminal gị. Flags: `--no-browser` (bipụta URL kama imepe ya na-akpaghị aka), `--port ` (kpọchie loopback port), `--timeout `, `--push` / `--no-push` (gbanwee nnyefe akpaka), `--context ` (rụtụ aka na context akọwapụtara). ### Nhọrọ B — tunnel SSH local-forward Ọ bụrụ na ị nwere ohere SSH na VPS, zipụ dashboard port n'ihu ka loopback callback nwee ike ịlaghachi na sava site na tunnel ahụ: ```bash # Na kọmputa MPAGHARA gị: ssh -L 20128:127.0.0.1:20128 user@your-vps # wee mepee http://localhost:20128 na ihe nchọgharị MPAGHARA gị ma jikọọ Antigravity # dịka ọ na-adị — redirect 127.0.0.1:20128/callback ga-eru VPS ugbu a site na SSH. ``` Ebe ọ bụ na ị na-eru dashboard dịka `localhost:20128`, nkwenye Google na-agwụcha, a na-ebunyekwa callback ahụ na sava site n'otu tunnel ahụ — ọ dịghị blob achọrọ. Debe tunnel ahụ ka ọ ghe oghe ruo mgbe njikọ ahụ gosiri na ọ na-arụ ọrụ. N'adịghị ka providers nwere fixed-loopback dị n'okpuru, **otu forward ezuola** ebe a: callback Antigravity na-eji dashboard port ahụ n'onwe ya agafe, ya mere enweghị provider-specific port nke abụọ a ga-etinye na tunnel. > Ụzọ ọzọ na-enweghị interface kpamkpam (enweghị ihe enyemaka, enweghị tunnel) bụ > ịhazi **nke gị** Google OAuth web credentials + public base URL; lee environment > variables OAuth nke provider ahụ. Nhọrọ abụọ dị n'elu achọghị nhazi Google ọzọ. --- ## Ijikọta Codex / Grok na nrụnye dịpụrụ adịpụ (ndị na-eweta nwere loopback a kapịrị ọnụ) Codex, xAI (`xai-oauth`) na Grok CLI (`grok-cli`) na-edebanye **adreesị loopback a kapịrị ọnụ** `redirect_uri` n’ngwa OAuth ha dị n’elu. OmniRoute enweghị ike ịgbanwe ya — onye na-eweta na-ezighachi ihe nchọgharị mgbe niile n’otu adreesị ahụ e tinyere kpọmkwem: | Onye na-eweta | Callback a kapịrị ọnụ onye na-eweta na-ezigara ya | | ------------- | ------------------------------------------------- | | `codex` | `http://localhost:1455/auth/callback` | | `xai-oauth` | `http://127.0.0.1:56121/callback` | | `grok-cli` | `http://127.0.0.1:56122/callback` | `localhost` dị ebe ahụ pụtara **igwe na-agba ihe nchọgharị**, ebe sava callback PKCE nke OmniRoute na-ege ntị na loopback nke **sava ahụ**. Mepee ogwe njikwa na adreesị LAN dị ka `http://192.168.0.15:20128`, ha abụọ agaghị ezute: a na-ebuga koodu ikike na `localhost:1455` nke laptọọpụ gị, ebe ọ dịghị ihe na-ege ntị, onye na-ewetakwa agaghị enwe ike ịbanye n’egosighị njehie. Ogwe njikwa na-achọpụta nke a tupu o mepee windo popup ma gosipụta iwu tunnel kama ikwe ka nbanye daa nwayọ n’egosighị ihe ọ bụla (#8046). ### Ndozi — zipụ **ọdụ ụgbọ mmiri abụọ ahụ** n’ihu ```bash # N’igwe na-agba IHE NCHỌGHARỊ: ssh -L 20128:127.0.0.1:20128 -L 1455:127.0.0.1:1455 @192.168.0.15 # emesịa gaa na http://localhost:20128 ma jikọọ Codex site n’ebe ahụ ``` A chọrọ ntụgharị abụọ, ma ntụgharị naanị otu ka ga-ada: - **`20128`** (ọdụ ụgbọ mmiri ogwe njikwa) na-eme ka origin bụrụ localhost n’ezie, nke bụ ihe na-eme ka OmniRoute malite sava callback PKCE ma ọlị — origin LAN anaghị eru ngalaba ahụ. - **`1455`** (ọdụ ụgbọ mmiri callback a kapịrị ọnụ nke onye na-eweta) bụ ebe a na-ezighachi ihe nchọgharị na ya; ọ ga-agafe n’ime tunnel ruo loopback nke sava ahụ. Dochie `1455` na `56121`/`56122` mgbe ị na-ejikọta xAI ma ọ bụ Grok CLI, ma dochie `20128` na ọdụ ụgbọ mmiri ogwe njikwa gị n’ezie. Hapụ tunnel ahụ ka ọ ghe oghe ruo mgbe njikọ ahụ gosiri na ọ na-arụ ọrụ. > **Ị nweghị ohere SSH?** Codex na Grok CLI na-anabatakwa token e madooro — taabụ **Mado Igodo API > ** / **Bubata auth.json** dị na dialog njikọ ahụ. Ụzọ ahụ enweghị callback loopback, > ya mere ọ na-arụ ọrụ site na origin ọ bụla. Codex na-anabatakwa access token nkịtị > ma ọ bụ data nnọkọ `~/.codex/auth.json`. --- ## Ijikwa token ```bash omniroute tokens create --name "laptop" --scope write [--expires 30] # ↳ na-ebipụta ihe nzuzo ahụ OTU UGBO — detuo ya ugbu a omniroute tokens list # ezoro akụkụ ya: id, name, scope, prefix, status, expiry omniroute tokens revoke # kagbuo ya ozugbo omniroute tokens scopes # kọwaa scope atọ ahụ ``` Iwu `tokens` chọrọ nzere **admin**. Ị nwekwara ike ijikwa token na dashboard n'okpuru **Settings → Access Tokens** (mepụta, kagbuo, detuo naanị otu ugboro). A pụghị imepụta token nwere ikike karịrị nke onye kere ya nwere. Naanị onye na-ahụ maka sistemụ nwere ike ịmepụta token `admin` — site na nnọkọ dashboard, CLI mpaghara dị na sava ahụ n'onwe ya, `omniroute connect` site na iji okwuntughe, ma ọ bụ instance ebe agbanyụrụ nbanye. Nzere igwe (token nnweta `admin`, ma ọ bụ API key nwere scope `manage`/`admin`) nwere ike ịmepụta naanị token `write` na `read`; ịrịọ ha `--scope admin` ga-eweghachi `403`. A pụghị ịmepụta token nwere ikike karịrị nke onye mepụtara ya. Naanị onye na-ahụ maka sistemụ nwere ike ịmepụta token `admin`: site na nnọkọ dashboard, CLI dị n'ime sava ahụ n'onwe ya, `omniroute connect` na paswọọdụ, ma ọ bụ instance agbanyụrụ nbanye ya. Nkwenye njirimara igwe (token nnweta `admin` ma ọ bụ igodo API nwere oke `manage`/`admin`) nwere ike ịmepụta naanị token `write` na `read`; ịrịọ `--scope admin` site na ha na-eweghachi `403`. --- ## Ịhazigharị CLI ide koodu site na katalọgụ dịpụrụ adịpụ `omniroute configure` na-agụ katalọgụ model dị ndụ nke **sava na-arụ ọrụ** ma dee nhazi n’igwe **gị**. ```bash omniroute configure codex # Ndị na-eweta: glm, kmc, ollamacloud, opencode-go, … # Onye na-eweta: glm # ID model: glm/glm-5.2 # ✔ Edere ~/.codex/glm52.config.toml # Jiri ya: codex --profile glm52 # na-enweghị mmekọrịta omniroute configure codex --provider glm --model glm/glm-5.2 --name glm52 # debe model a na-ejikarị eme ihe n’elu ihe nhọpụta mmekọrịta omniroute configure codex --provider glm --model glm/glm-5.2 --favorite --yes ``` Ihe nhọpụta ahụ na-edobe naanị ID model (ọ bụghị URL ma ọ bụ nzere) n’ime faịlụ `model-preferences.json` mpaghara, nke e kewara dịka context na ebumnuche CLI si dị. A na-egosi ndị ọkacha mmasị tupu nhọrọ ndị na-adịbeghị anya; jiri `--unfavorite` wepụ model ahọpụtara na ndepụta context/ebumnuche ahụ. Profaịlụ e dere na-ezo aka na igodo inference site na env var (`OMNIROUTE_API_KEY`) — a naghị ede ihe nzuzo ahụ na diski. Maka nhazi mbụ nke Codex a na-eme naanị otu ugboro (ngọngọ `[model_providers.omniroute]`), lee [CODEX-CLI-CONFIGURATION.md](./CODEX-CLI-CONFIGURATION.md). ### Ịmalite CLI ka ọ rụọ ọrụ megide sava dịpụrụ adịpụ (edeghị nhazi) `omniroute run ` na-asọpụrụkwa context na-arụ ọrụ: a na-etinye URL ntọala dịpụrụ adịpụ na nzere context n’ime process e bidoro naanị. ```bash omniroute connect 192.168.0.15 omniroute run claude --model openai/gpt-5.4 # Claude Code → sava dịpụrụ adịpụ omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "hello" omniroute run opencode --model glm/glm-5.2 -- run "reply OK" # Lelee kpọmkwem ihe a ga-amalite (naanị AHA IGODO env, ọ bụghị uru ha): omniroute run codex --dry-run --json ``` Ebumnuche: `claude`, `codex`, `aider`, `goose`, `opencode`, `qwen`, `gemini` (otu isi mmalite: `bin/cli/cli-manifest.mjs`). Qwen na Gemini na-eji home nwa oge e kewapụrụ iche nke a na-ewepụ mgbe ọ kwụsịrị, ya mere mmalite ahụ anaghị emetụ — ma ọ bụ hapụ data n’ime — nhazi ngwaọrụ nkeonwe gị. ### Iwu nhazi maka CLI ọ bụla CLI ọ bụla akwadoro nwere iwu nhazi maara maka sava dịpụrụ adịpụ (ha niile na-asọpụrụ context na-arụ ọrụ, ma ọ bụ `--remote --api-key `): | CLI | Iwu | Ihe ọ na-ede | | ----------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Codex | `omniroute setup-codex` | profaịlụ `~/.codex/.config.toml` (otu maka model ọ bụla) | | Claude Code | `omniroute setup-claude` | `~/.claude/profiles//settings.json` (otu maka model ọ bụla) | | OpenCode | `omniroute setup-opencode` | `~/.config/opencode/opencode.json` — provider `omniroute` dakọtara na openai, nke nwere model katalọgụ niile (gbaa `opencode -m omniroute/`) | | Cline | `omniroute setup-cline` | `~/.cline/data/{globalState,secrets}.json` (ọnọdụ CLI) + na-ebipụta ntọala ndọtị VS Code a ga-mado (dakọtara na OpenAI, Base URL **na-enweghị** `/v1`) | | Kilo Code | `omniroute setup-kilo` | `~/.local/share/kilo/auth.json` (CLI) + ntọala VS Code `kilocode.*` — dakọtara na OpenAI, Base URL **nwere** `/v1` | | Continue | `omniroute setup-continue` | `~/.continue/config.yaml` (VS Code/JetBrains + CLI `cn`) — `provider: openai`, `apiBase` **nwere** `/v1`, igodo site na `${{ secrets.OMNIROUTE_API_KEY }}` | | Cursor | `omniroute setup-cursor` | na-ebipụta usoro a ga-eme n'ime ngwa (Settings → Models → Override OpenAI Base URL **nwere** `/v1` + igodo + model). Nhazi Cursor bụ SQLite zoro ezo — naanị panel nkata | | Roo Code | `omniroute setup-roo` | na-ede JSON mbubata Roo (`~/.omniroute/roo-settings.json`) + na-ahazi `roo-cline.autoImportSettingsPath` + na-ebipụta usoro UI (dakọtara na OpenAI, Base URL **nwere** `/v1`) | | Crush | `omniroute setup-crush` | `~/.config/crush/crush.json` — provider `openai-compat`, `base_url` **nwere** `/v1`, igodo site na `$OMNIROUTE_API_KEY` | | Goose | `omniroute setup-goose` | `~/.config/goose/config.yaml` (`GOOSE_PROVIDER=openai` + `OPENAI_HOST` **na-enweghị** `/v1` + `GOOSE_MODEL`) + usoro env | | Aider | `omniroute setup-aider` | `~/.aider.conf.yml` (`openai-api-base` **na-enweghị** `/v1` + `model: openai/`) + usoro env (`aider --message --yes`) | | Qwen Code | `omniroute setup-qwen` | ntinye V4 `modelProviders.openai` na `~/.qwen/settings.json` + `OMNIROUTE_API_KEY` n'ime `~/.qwen/.env` | ```bash # OpenCode (provider dakọtara na openai, model katalọgụ niile, VPS dị anya) omniroute setup-opencode --remote http://192.168.0.15:20128 --api-key oma_live_xxx omniroute setup-opencode --only glm,kimi # debe naanị model ndị dabara opencode -m omniroute/glm/glm-5.2 "..." # buru ụzọ export OMNIROUTE_API_KEY ``` > OpenCode nwekwara njikọta **plugin** bara ụba karị: `omniroute setup opencode` > (ugbu a ọ na-akwado nke dị anya site na `--remote`) na-etinye `@omniroute/opencode-plugin`. > `setup-opencode` bụ nhọrọ ọzọ dị mfe nke dakọtara na openai. A na-ezo aka na igodo API > site na `{env:OMNIROUTE_API_KEY}` — anaghị ede ya na diski ma ọlị. > > Na OpenCode v2, jiri `@omniroute/opencode-plugin-v2` kama: otu katalọgụ ahụ, > mana nkwekọrịta loader dị iche. Ọ na-agụ igodo ahụ site n'ebe OpenCode n'onwe ya > na-edobe nzere mgbe ejikọrọ njikọta ahụ, ya mere gateway dị anya anaghị achọ igodo > ọ bụla n'ime `opencode.json`. --- ## Ijikwaa contexts (ịgbanwe n'etiti sava) A **context** bụ sava echekwara (baseUrl + credential + scope). `omniroute connect` na-emepụta otu ma mee ka ọ rụọ ọrụ; site mgbe ahụ gaa n'ihu, iwu ọ bụla na-elekwasị anya na ya. Jikwaa ma gbanwee n'etiti ha na `omniroute contexts`: ```bash omniroute contexts list # all contexts; the active one is marked ● omniroute contexts current # the active server, auth status, scope ``` ```text | Name | Base URL | Auth | Scope | Description ● | vps | http://100.67.86.91:20128 | token | admin | Remote OmniRoute (…) | default | http://localhost:20128 | ✗ | | ``` **Gbanwee sava** — iwu ọ bụla na-esote na-agbaso context na-arụ ọrụ: ```bash omniroute contexts use vps # → all commands now hit the remote VPS omniroute tokens list # (na-agba ọsọ megide VPS) omniroute contexts use default # → back to localhost omniroute tokens list # (na-agba ọsọ megide sava mpaghara) ``` **Tinye context n'onwe gị** (n'ọnọdụ `connect`), nyochaa, ma ọ bụ gbanwee aha: ```bash omniroute contexts add staging --url https://staging.example.com:20128 \ --access-token oma_live_xxxx --scope write --description "staging box" omniroute contexts show staging # full details for one context omniroute contexts rename staging stg ``` **Wepụ context** — na-arịọ maka nkwenye; gafere `--yes` ka ịwụpụ ya (achọrọ maka scripts / shells na-abụghị interactive, nke na-ajụ n'enweghị nsogbu): ```bash omniroute contexts remove stg --yes ``` > `default` (localhost) enweghị ike iwepụ. Iwepụ context na-arụ ọrụ na-alaghachi na `default`. Ndụmọdụ: iwepụ context na-ewepụ naanị credential **mpaghara** echekwara — kagbuo token ahụ na sava ahụ na `omniroute tokens revoke ` iji gbuo ohere n'ezie. **Export / import** contexts (dịka ọmụmaatụ, iji bufee ha n'etiti igwe). Exports na-ewepụ credentials na ndabara, gụnyere credentials echekwara site na nkwado faịlụ. Jiri `--include-secrets` n'ụzọ doro anya mgbe achọrọ nkwado nwere ike ibugharị nke nwere credential: ```bash omniroute contexts export --out contexts.json # ezoro ezo; ebe nchekwa ndabara: stdout omniroute contexts export --include-secrets --out private-contexts.json omniroute contexts import contexts.json # dee n'elu; --merge iji debe ndị dị adị omniroute contexts migrate --yes # bufee tokens plaintext ochie na keychain ``` `--include-secrets` na-edozi ntụaka keychain tupu exporting ma na-ada ma ọ bụrụ na enweghị ike ịgụ credential ọ bụla akpọrọ aha. `--no-secrets` na-ebute ụzọ mgbe niile. A na-ede faịlụ export n'ụzọ atomic na mode `0600`. Were export nwere ihe nzuzo doro anya dị ka ihe nzuzo. Na sistemụ na-enweghị isi na-enweghị keychain OS nwere ike iji, CLI na-alaghachi na `config.json` na mode `0600` ma na-ebipụta ịdọ aka ná ntị otu oge; export ndabara na-anọgide na-ezoro ezo na mode a. --- ## Nnwale ọsọ ọsọ site na mmalite ruo na ngwụcha Usoro ndụ ị nwere ike idetuo ma mado iji nyochaa nhazi sava dị anya site na mbido — jikọọ, mepụta token nwere scope, duzie iwu, laghachi azụ, wee kwatuo nhazi ahụ. Dochie `192.168.0.15` na host/IP nke sava gị (Tailscale, LAN, ma ọ bụ URL ọha `https://…`). ```bash # 1. Jikọọ (password → admin token, echekwara dị ka context nke ga-amalite ịrụ ọrụ) omniroute connect 192.168.0.15 # ma ọ bụ: --key oma_live_xxxx (enweghị password) omniroute contexts current # na-egosi sava dị anya + scope # 2. Jiri ya — iwu njikwa na-arụ ọrụ ugbu a megide sava dị anya omniroute tokens create --name laptop --scope read # mepụta token nwere scope pere mpe omniroute tokens list # ndepụta ezobere akụkụ ya, sitere na sava dị anya # 3. Gbanwee gaa ma laghachi omniroute contexts use default # → mpaghara omniroute contexts use 192-168-0-15 # → sava dị anya ọzọ (aha sitere na `contexts list`) # 4. Kwatuo nhazi ahụ. RỊBA AMA: `contexts remove` na-ehichapụ naanị credential MPAGHARA — # ọ naghị akagbu token ahụ na sava. Buru ụzọ kagbuo ya n'akụkụ sava ma ọ bụrụ na # ịchọrọ ịkwụsị ohere n'ezie. omniroute tokens revoke # na-akwụsị ohere na sava omniroute contexts remove 192-168-0-15 --yes # wepụ context mpaghara (ọbụna ma ọ bụrụ na ọ na-arụ ọrụ → a ga-eji default dochie ya), enweghị arịrịọ nkwenye ``` > `--yes` na-eme ka `contexts remove` bụrụ nke na-abụghị interactive (a chọrọ ya na scripts/CI; ma ọ bụrụ na > enweghị ya, shell na-abụghị interactive ga-ajụ n'enweghị nsogbu kama ịnọgide na-eche). Iwepụ context > **na-arụ ọrụ** na-eme ka e jiri `default` dochie ya na-akpaghị aka. --- ## Ihe ndetu gbasara nchekwa - A na-egosi token n'ụdị ederede nkịtị naanị otu ugboro; naanị hash SHA-256 ka a na-echekwa (otu ihe ahụ dịkwa maka igodo API). - `omniroute connect` na-eji ọzọ mkpọchi megide ịnwale okwuntughe ọtụtụ ugboro + ndekọ nyocha nke nbanye. - Ọ ka mma iji HTTPS ma ọ bụ Tailnet maka mbufe ahụ; host nkịtị na-eji `http://` na ndabara maka ịdị mfe na LAN/Tailscale — nyefee URL `https://…` zuru ezu maka TLS. - Faịlụ context mpaghara a kacha akwado bụ `~/.omniroute/config.json` (`chmod 600`) nke nwere naanị `credentialRef`; a na-echekwa token ahụ n'onwe ya na keychain nke OS (`keytar`), a naghị ebipụta ya mgbe ọ bụla na ndekọ. Nwụnye headless ndị na-enweghị keychain native na-arụ ọrụ na-eji otu faịlụ `0600` ahụ dịka nhọrọ ndabere doro anya ma zipụta ịdọ aka ná ntị otu ugboro. Jiri `omniroute contexts migrate --yes` mgbe ị wụnyechara backend keychain. --- ## Endpoint API (ntụaka) | Usoro | Ụzọ | Nnyocha ikike | Oke | | ------ | --------------------- | ----------------- | -------------------------------- | | POST | `/api/cli/connect` | okwuntughe njikwa | — (ọha, okwuntughe na-echebe ya) | | GET | `/api/cli/whoami` | token nnweta | ịgụ | | GET | `/api/cli/tokens` | token nnweta | nchịkwa | | POST | `/api/cli/tokens` | token nnweta | nchịkwa | | DELETE | `/api/cli/tokens/:id` | token nnweta | nchịkwa | Lee [openapi.yaml](../openapi.yaml) maka schema niile.