# Remote Mode (Yorùbá) 🌐 **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) · 🇳🇬 [ig](../../../ig/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) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/REMOTE-MODE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/REMOTE-MODE.md) --- Ṣi `omniroute` CLI ṣiṣẹ́ lórí kọ̀ǹpútà alágbèéká rẹ nígbà tí OmniRoute fúnra rẹ̀ ń ṣiṣẹ́ níbòmíràn (VPS kan, olupin ilé kan, ẹ̀rọ míì lórí Tailnet rẹ). O wọlé lẹ́ẹ̀kan pẹ̀lú `omniroute connect`, láti ìgbà náà lọ, **gbogbo** àṣẹ CLI yóò tọ́ka sí olupin jíjìn yẹn — àwọn àṣẹ kan náà, àbájáde kan náà, àmọ́ a ó ṣiṣẹ́ wọn lórí olupin jíjìn náà. Kò sí irinṣẹ́ kejì láti fi sori ẹrọ: ipò jíjìn jẹ́ `omniroute` CLI déédéé pẹ̀lú àwọn **tóókì ìráyè** tí a ti fi ààlà sí. ```bash npm install -g omniroute # CLI déédéé omniroute connect 192.168.0.15 # wọlé (ọ̀rọ̀ aṣínà → tóókì tí a fi ààlà sí) omniroute models list # ← ó ti ń ṣàfihàn àwọn módẹ́ẹ̀lì olupin JÍJÌN báyìí omniroute configure codex # ← ó kọ prófáìlì Codex agbègbè láti inú àkójọ jíjìn ``` --- ## Bí ó ṣe ń ṣiṣẹ́ ``` kọ̀ǹpútà alágbèéká rẹ OmniRoute jíjìn (VPS) ┌────────────────────┐ ┌───────────────────────────────┐ │ omniroute CLI │ POST /api/cli/connect (ọ̀rọ̀ aṣínà → tóókì) │ │ context: vps │ ───────────────► │ ó ṣẹ̀dá tóókì ìráyè tí a ní ààlà │ │ baseUrl, token │ Authorization: Bearer oma_live_… │ │ │ ───────────────► │ gbogbo ipa-ọ̀nà ìṣàkóso, a ń │ │ kọ àtòpọ̀ ní │ ◄─────────────── │ yẹ ààlà tóókì náà wò │ │ AGBÈGBÈ │ └───────────────────────────────┘ └────────────────────┘ ``` - **Àwọn context** ń tọ́jú olupin kan ṣoṣo kọ̀ọ̀kan (`~/.omniroute/config.json`, `chmod 600`). `omniroute contexts use ` ń yí olupin tó ń ṣiṣẹ́ padà; `default` jẹ́ ti agbègbè. - **Àwọn tóókì ìráyè** (`oma_live_…`) ń fún àwọn àṣẹ ìṣàkóso láṣẹ. Wọ́n yàtọ̀ sí àwọn kọ́kọ́rọ́ API ìṣirò (`sk-…`, tí a ń lò fún `/v1/chat/completions`). - Háàṣì SHA-256 tóókì nìkan ni a ń tọ́jú sí ẹ̀gbẹ́ olupin. A ó fi ọ̀rọ̀ gangan hàn **lẹ́ẹ̀kan ṣoṣo**, nígbà tí a ṣẹ̀dá rẹ̀. --- ## Ṣíṣopọ̀ ### Pẹ̀lú ọ̀rọ̀ aṣínà ìṣàkóso (ìpilẹ̀ṣẹ̀) ```bash omniroute connect 192.168.0.15 # Ọ̀rọ̀ aṣínà ìṣàkóso fún http://192.168.0.15:20128: ******** # ✔ A ti sopọ̀ mọ́ http://192.168.0.15:20128 — context '192.168.0.15' (ààlà: admin) ``` Ìlànà ọ̀rọ̀ aṣínà máa ń ṣẹ̀dá tóókì **admin** ní àkọ́kọ́ (wọ́n ní ọ̀rọ̀ aṣínà náà, nítorí náà o ti ní ìṣàkóso kíkún tẹ́lẹ̀). Dín ààlà kù pẹ̀lú `--scope`: ```bash omniroute connect 192.168.0.15 --scope write ``` Àwọn àṣàyàn: `--port

` (nígbà tí host kò ní èyí kankan), `--name ` (orúkọ context), `--scope read|write|admin`. A ó tẹ̀lé URL kíkún gẹ́gẹ́ bí ó ṣe rí: `omniroute connect https://omni.example.com`. ### Pẹ̀lú tóókì tí a ti ṣẹ̀dá ṣáájú Ṣẹ̀dá tóókì tí a fi ààlà sí nínú dashboard (tàbí pẹ̀lú `omniroute tokens create`), lẹ́yìn náà lẹ̀ ẹ́ mọ́ ọn — kò nílò ọ̀rọ̀ aṣínà: ```bash omniroute connect 192.168.0.15 --key oma_live_xxxxxxxx ``` CLI náà máa ń fìdí rẹ̀ múlẹ̀ nípasẹ̀ `GET /api/cli/whoami`, ó sì máa ń tọ́jú rẹ̀ gẹ́gẹ́ bí context tó ń ṣiṣẹ́. --- ## Àwọn ààlà Ìpele mẹ́ta, ní ọ̀nà onípele (`admin ⊃ write ⊃ read`): | Ààlà | Ohun tí ó lè ṣe | | ------- | ----------------------------------------------------------------------------- | | `read` | ṣàkójọ̀/ṣàyẹ̀wò — `models list`, `providers status`, `logs`, `usage`, `cost` | | `write` | read **+** tò/fi sílò — `setup-codex`, `keys add`, `config set`, combos | | `admin` | write **+** ṣàkóso — `tokens` CRUD, fi providers kun, services, policy, oauth | Olupin máa ń mọ ààlà tí ipa-ọ̀nà kọ̀ọ̀kan nílò láti inú method HTTP (`GET`→read, àwọn ìyípadà→write), pẹ̀lú àtòjọ ìyọ̀nda admin fún àwọn abala tó ní ìfura (`/api/cli/tokens`, àwọn ìyípadà `/api/providers`, `/api/oauth`, `/api/services`, …). Tóókì tí ààlà rẹ̀ kò tó máa gba `403` pẹ̀lú ìfiránṣẹ́ tó ṣe kedere. > Àwọn ipa-ọ̀nà tí ń dá àwọn process sílẹ̀ (`/api/services/*`, `/api/mcp/*`, …) ṣì jẹ́ > **loopback-only** — tóókì jíjìn kò lè dé ọ̀dọ̀ wọn láé, láìka ààlà rẹ̀ sí. ## Ṣíṣopọ̀ Antigravity lórí ìfìdásílẹ̀ jíjìnnà Antigravity ń lo ojú-ìwé ìfọwọ́sí firstparty/nativeapp ti Google. Google máa ń tú kóòdù ìfúniláṣẹ sílẹ̀ nìkan nígbà tí **àtúndarí loopback** (`http://127.0.0.1:/callback`) bá **ṣeé dé láti inú aṣàwákiri tí ó fọwọ́sí ìwọlé náà**. Lórí ìfìdásílẹ̀ VPS jíjìnnà, loopback yẹn wà lórí apèsè, kì í ṣe lórí ẹ̀rọ rẹ, nítorí náà ojú-ìwé ìfọwọ́sí náà **máa dúró títí láé, kò sì ní fi kóòdù kankan jáde** — ọ̀nà ìrànwọ́ àtẹ̀yìnwá “lẹ URL callback náà” kò ní nǹkan kankan láti lẹ̀. (Èyí jẹ́ ìdíwọ́ láti ọ̀dọ̀ Google: ìdádúró kan náà máa ń ṣẹlẹ̀ nínú proxy èyíkéyìí tí ó bá lo desktop client Antigravity tí a so mọ́ ọn, kì í ṣe OmniRoute nìkan.) Dashboard náà máa ń ṣàwárí èyí kí o tó di mọ́lẹ̀: ṣíṣí **Providers → Antigravity → Connect** láti àdírẹ́sì tí kì í ṣe localhost máa rọ́pò àkíyèsí gbogbogbò “da URL callback kọ” pẹ̀lú àwọn ojútùú méjì tó wà nísàlẹ̀, tí host àti port rẹ ti kún sínú ọ̀kọ̀ọ̀kan. (Àdírẹ́sì LAN náà wúlò — `192.168.x.x` kì í ṣe localhost ní ti callback yìí.) Ọ̀nà méjì tí a ṣe àtìlẹ́yìn fún ló wà láti so Antigravity pọ̀ mọ́ OmniRoute jíjìnnà. ### Àṣàyàn A — olùrànlọ́wọ́ ìwọlé agbègbè (a dábàá rẹ̀) Ṣe OAuth náà lórí **kọ̀ǹpútà tirẹ**, níbi tí `127.0.0.1` ti ṣeé dé. Olùrànlọ́wọ́ náà máa ń bá Google sọ̀rọ̀ tààrà, nítorí náà ìfọwọ́sí náà máa parí níbi tí ẹ̀yà dashboard kò ti lè parí rẹ̀. **Tí o bá ti sopọ̀ tẹ́lẹ̀** (`omniroute connect `), kò sí ohun tí o nílò láti dà kọ — olùrànlọ́wọ́ náà máa fi ẹ̀rí ìdánimọ̀ náà ránṣẹ́ sí ìfìdásílẹ̀ yẹn fún ọ: ```bash # Lórí ẹ̀rọ AGBOGBÈ tirẹ (ó nílò Node.js + aṣàwákiri): omniroute connect 192.168.0.15 # lẹ́ẹ̀kan — ó ṣẹ̀dá context token tó ní àyè admin npx omniroute login antigravity # ↳ ó ṣí ìfọwọ́sí Google, ó gba callback náà lórí loopback port agbègbè, # ó pààrọ̀ rẹ̀, ó sì POST ẹ̀rí ìdánimọ̀ náà sí context tó ń ṣiṣẹ́: # # Antigravity ti sopọ̀ lórí http://192.168.0.15:20128 (àsopọ̀ abc123). # Kò sí ohun láti lẹ̀ — o lè ti terminal yìí. ``` Ìfiránṣẹ́ náà máa ń ṣẹlẹ̀ fúnra rẹ̀ nígbàkigbà tí context tó ń ṣiṣẹ́ bá tọ́ka sí ẹ̀rọ mìíràn. Fipá mú un lọ sí ọ̀nà èyíkéyìí pẹ̀lú `--push` / `--no-push`, tàbí darí rẹ̀ sí context pàtó pẹ̀lú `--context `. **Tí ẹ̀rọ rẹ kò bá lè dé VPS náà** (firewall dí i, kò sí SSH, tábìlì iṣẹ́ tí a yà sọ́tọ̀ kúrò nínú nẹ́tíwọ̀ọ̀kì), olùrànlọ́wọ́ náà ṣì máa ṣiṣẹ́ — Google nìkan ló _ní láti_ ní ìbánisọ̀rọ̀ pẹ̀lú. Lo `--no-push`, tàbí jẹ́ kí ìfiránṣẹ́ náà kùnà: yóò padà sí títẹ blob náà jáde dípò pípa ìfúniláṣẹ tí o ti parí rẹ̀ nù. ```bash npx omniroute login antigravity --no-push # omniroute-cred-v1.eyJ2IjoxLCJ... ``` Lẹ́yìn náà, nínú dashboard **jíjìnnà** náà: **Providers → Antigravity → Connect**, kí o sì lẹ̀ blob `omniroute-cred-v1.…` náà sínú ààyè **Step 2** (ó gba yálà URL callback tàbí blob ẹ̀rí ìdánimọ̀). OmniRoute máa tú ìtumọ̀ rẹ̀, ó máa ṣiṣẹ́ ìbẹ̀rẹ̀-lílo Cloud Code ní ẹ̀gbẹ́ apèsè, ó sì máa tọ́jú àsopọ̀ náà. > Blob náà ní refresh token nínú — tọ́jú rẹ̀ bí ọ̀rọ̀ aṣínà. Ní ọ̀nà ìfiránṣẹ́, a máa > rán án lẹ́ẹ̀kan ṣoṣo lórí àsopọ̀ context rẹ tí a ti jẹ́rìí sí; ní ọ̀nà lílẹ̀, lórí > àsopọ̀ dashboard rẹ. Ní ọ̀nà méjèèjì, a máa tọ́jú rẹ̀ ní ìpàrokò nígbà tí kò ṣiṣẹ́, > ìfiránṣẹ́ tó sì ṣàṣeyọrí kì í tẹ̀ ẹ́ jáde sí terminal rẹ. Àwọn flag: `--no-browser` (tẹ URL náà jáde dípò ṣíṣí i fúnra rẹ̀), `--port ` (fi loopback port náà dúró ṣinṣin), `--timeout `, `--push` / `--no-push` (borí ìfiránṣẹ́ aládàáṣiṣẹ́), `--context ` (darí rẹ̀ sí context pàtó). ### Àṣàyàn B — ojú-ọ̀nà local-forward SSH Tí o bá ní àyè SSH sí VPS náà, forward dashboard port náà kí loopback callback lè padà sí apèsè nípasẹ̀ ojú-ọ̀nà náà: ```bash # Lórí ẹ̀rọ AGBOGBÈ tirẹ: ssh -L 20128:127.0.0.1:20128 user@your-vps # lẹ́yìn náà, ṣí http://localhost:20128 nínú aṣàwákiri AGBOGBÈ rẹ, kí o sì so Antigravity pọ̀ # gẹ́gẹ́ bí ìṣe déédéé — àtúndarí 127.0.0.1:20128/callback ti ń dé VPS báyìí nípasẹ̀ SSH. ``` Nítorí pé o dé dashboard náà gẹ́gẹ́ bí `localhost:20128`, ìfọwọ́sí Google máa parí, callback náà sì máa dé apèsè nípasẹ̀ ojú-ọ̀nà kan náà — kò nílò blob. Jẹ́ kí ojú-ọ̀nà náà ṣí títí àsopọ̀ yóò fi hàn pé ó ń ṣiṣẹ́. Láìdàbí àwọn provider loopback tí a fi dúró ṣinṣin tó wà nísàlẹ̀, **forward kan ṣoṣo ti tó** níbí: callback Antigravity náà ń gba dashboard port fúnra rẹ̀ kọjá, nítorí náà kò sí provider-specific port kejì láti ṣe tunnel fún. > Ọ̀nà míràn tí kò nílò ìbáṣepọ̀ taara rárá (kò sí olùrànlọ́wọ́, kò sí tunnel) ni láti > ṣètò àwọn ẹ̀rí Google OAuth web **tirẹ** + URL ìpìlẹ̀ gbogbogbò; wo àwọn environment > variable OAuth ti provider náà. Àwọn àṣàyàn méjì tó wà lókè kò nílò àfikún ìṣètò Google. --- ## Ṣíṣopọ̀ Codex / Grok lórí ìfisórí ẹ̀rọ jíjìn (àwọn olùpèsè loopback tí a ti ṣètò dúró) Codex, xAI (`xai-oauth`) àti Grok CLI (`grok-cli`) forúkọsílẹ̀ `redirect_uri` loopback **tí a ti ṣètò dúró** pẹ̀lú ìṣàfilọ́lẹ̀ OAuth wọn. OmniRoute kò lè yí i padà — olùpèsè náà máa ń dá aṣàwákiri padà sí àdírẹ́sì kan náà tí a ti kọ sínú rẹ̀: | Olùpèsè | Callback tí a ti ṣètò dúró tí olùpèsè ń darí sí | | ----------- | ----------------------------------------------- | | `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` níbẹ̀ túmọ̀ sí **ẹ̀rọ tí aṣàwákiri ń ṣiṣẹ́ lórí rẹ̀**, nígbà tí olupin callback PKCE ti OmniRoute ń fetí sí loopback **olupin náà**. Ṣí dashboard náà ní àdírẹ́sì LAN bíi `http://192.168.0.15:20128`, àwọn méjèèjì kì yóò sì pàdé: kóòdù àṣẹ ni a máa fi ránṣẹ́ sí `localhost:1455` kọ̀ǹpútà alágbèéká tirẹ, níbi tí kò sí ohunkóhun tó ń fetí sí, olùpèsè náà yóò sì kuna láti wọlé láìfi àṣìṣe hàn. Dashboard náà máa ń ṣàwárí èyí kí ó tó ṣí popup, ó sì máa ń fi àṣẹ tunnel hàn dípò kí ó jẹ́ kí ìwọlé náà kuna láìsọ ohunkóhun (#8046). ### Àtúnṣe — darí àwọn port **méjèèjì** síwájú ```bash # Lórí ẹ̀rọ tí AṢÀWÁKIRI ń ṣiṣẹ́: ssh -L 20128:127.0.0.1:20128 -L 1455:127.0.0.1:1455 @192.168.0.15 # lẹ́yìn náà lọ sí http://localhost:20128 kí o sì so Codex pọ̀ láti ibẹ̀ ``` Àwọn ìdarí-síwájú méjì ni a nílò, ìdarí ọ̀kan ṣoṣo síwájú sì tún máa ń kuna: - **`20128`** (port dashboard) ń mú kí origin jẹ́ localhost gidi, èyí sì ni ohun tó ń mú kí OmniRoute bẹ̀rẹ̀ olupin callback PKCE rárá — origin LAN kì í dé ẹ̀ka yẹn. - **`1455`** (port callback tí olùpèsè ṣètò dúró) ni ibi tí a ti ń dá aṣàwákiri padà sí; ó gbọ́dọ̀ gba inú tunnel kọjá sí loopback olupin náà. Rọ́pò `1455` pẹ̀lú `56121`/`56122` nígbà tí o bá ń so xAI tàbí Grok CLI pọ̀, kí o sì rọ́pò `20128` pẹ̀lú port dashboard gangan rẹ. Jẹ́ kí tunnel náà wà ní ṣíṣí títí asopọ̀ náà yóò fi hàn bí èyí tó ń ṣiṣẹ́. > **O kò ní ààyè SSH?** Codex àti Grok CLI tún gba token tí a lẹ̀ mọ́ — taabu **Paste API > Key** / **Import auth.json** nínú dialog asopọ̀. Ọ̀nà yẹn kò ní callback loopback, > nítorí náà ó ń ṣiṣẹ́ láti origin èyíkéyìí. Codex tún gba access token lásán > tàbí blob session `~/.codex/auth.json`. --- ## Ṣíṣàkóso àwọn token ```bash omniroute tokens create --name "laptop" --scope write [--expires 30] # ↳ ó tẹ secret náà jáde LẸ́Ẹ̀KAN ṢOṢO — ṣe àdàkọ rẹ̀ báyìí omniroute tokens list # tí a bò mọ́lẹ̀: id, name, scope, prefix, status, expiry omniroute tokens revoke # fagilé lẹ́sẹ̀kẹsẹ̀ omniroute tokens scopes # ṣàlàyé àwọn scope mẹ́tẹ̀ẹ̀ta ``` Àwọn àṣẹ `tokens` nílò credential **admin**. O tún lè ṣàkóso àwọn token nínú dashboard lábẹ́ **Settings → Access Tokens** (ṣẹ̀dá, fagilé, ṣe àdàkọ lẹ́ẹ̀kan ṣoṣo). --- ## Ṣíṣètò CLI coding láti inú katalogi jíjìn `omniroute configure` máa ń ka katalogi model tó wà láàyè ti **olupin tó ń ṣiṣẹ́** ó sì máa ń kọ config sórí ẹ̀rọ **rẹ**. ```bash omniroute configure codex # Àwọn olùpèsè: glm, kmc, ollamacloud, opencode-go, … # Olùpèsè: glm # ID model: glm/glm-5.2 # ✔ Ti kọ ~/.codex/glm52.config.toml # Lo ó: codex --profile glm52 # láìsí ìbánisọ̀rọ̀ omniroute configure codex --provider glm --model glm/glm-5.2 --name glm52 # fi model tí a sábà ń lò sí òkè picker ìbánisọ̀rọ̀ omniroute configure codex --provider glm --model glm/glm-5.2 --favorite --yes ``` Picker náà ń pa àwọn ID model nìkan mọ́ (kì í ṣe URL tàbí credential láé) nínú fáìlì `model-preferences.json` agbègbè, tí a pín ní ìbámu pẹ̀lú context àti target CLI. Àwọn favorite máa ń hàn ṣáájú àwọn àṣàyàn àìpẹ́; lo `--unfavorite` láti yọ model tí a yàn kúrò nínú àkójọ context/target yẹn. Profile tí a kọ ń tọ́ka sí key inference nípasẹ̀ env var (`OMNIROUTE_API_KEY`) — a kì í kọ secret náà sí disk láé. Fún ìṣètò Codex ìpìlẹ̀ lẹ́ẹ̀kan ṣoṣo (block `[model_providers.omniroute]`), wo [CODEX-CLI-CONFIGURATION.md](./CODEX-CLI-CONFIGURATION.md). ### Ṣíṣe CLI kan lòdì sí ẹ̀rọ jíjìn (láìkọ config) `omniroute run ` tún ń bọ̀wọ̀ fún context tó ń ṣiṣẹ́: URL ìpìlẹ̀ jíjìn àti credential context ni a máa ń fi sínú process tí a ṣẹ̀dá nìkan. ```bash omniroute connect 192.168.0.15 omniroute run claude --model openai/gpt-5.4 # Claude Code → ẹ̀rọ jíjìn omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "hello" omniroute run opencode --model glm/glm-5.2 -- run "reply OK" # Ṣàyẹ̀wò ohun gangan tí a ó ṣẹ̀dá (ÀWỌN ORÚKỌ KEY env nìkan, kì í ṣe àwọn value láé): omniroute run codex --dry-run --json ``` Àwọn target: `claude`, `codex`, `aider`, `goose`, `opencode`, `qwen`, `gemini` (orísun kan ṣoṣo: `bin/cli/cli-manifest.mjs`). Qwen àti Gemini ń ṣiṣẹ́ pẹ̀lú home àdádó fún ìgbà díẹ̀ tí a máa yọ kúrò nígbà tí wọ́n bá jáde, nítorí náà ìbẹ̀rẹ̀ náà kì í fọwọ́ kan — tàbí jo sínú — config irinṣẹ́ ti ara ẹni rẹ. ### Àwọn àṣẹ ìṣètò fún CLI kọ̀ọ̀kan CLI kọ̀ọ̀kan tí a ṣe àtìlẹ́yìn fún ní àṣẹ ìṣètò tó mọ nípa ẹ̀rọ jíjìn (gbogbo wọn ń bọ̀wọ̀ fún context tó ń ṣiṣẹ́, tàbí `--remote --api-key `): | CLI | Àṣẹ | Ohun tí ó kọ | | ----------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Codex | `omniroute setup-codex` | àwọn prófáìlì `~/.codex/.config.toml` (fún awoṣe kọ̀ọ̀kan) | | Claude Code | `omniroute setup-claude` | `~/.claude/profiles//settings.json` (fún awoṣe kọ̀ọ̀kan) | | OpenCode | `omniroute setup-opencode` | `~/.config/opencode/opencode.json` — olùpèsè `omniroute` tó bá openai mu pẹ̀lú gbogbo awoṣe inú àkójọ (ṣiṣẹ́ `opencode -m omniroute/`) | | Cline | `omniroute setup-cline` | `~/.cline/data/{globalState,secrets}.json` (ipò CLI) + ó tẹ àwọn ètò ẹ̀kún VS Code jáde láti lẹ̀ mọ́ ọn (ó bá OpenAI mu, Base URL **láìsí** `/v1`) | | Kilo Code | `omniroute setup-kilo` | `~/.local/share/kilo/auth.json` (CLI) + àwọn ètò VS Code `kilocode.*` — ó bá OpenAI mu, Base URL **pẹ̀lú** `/v1` | | Continue | `omniroute setup-continue` | `~/.continue/config.yaml` (VS Code/JetBrains + `cn` CLI) — `provider: openai`, `apiBase` **pẹ̀lú** `/v1`, kọ́kọ́rọ́ nípasẹ̀ `${{ secrets.OMNIROUTE_API_KEY }}` | | Cursor | `omniroute setup-cursor` | ó tẹ àwọn ìgbésẹ̀ inú ètò jáde (Settings → Models → Override OpenAI Base URL **pẹ̀lú** `/v1` + kọ́kọ́rọ́ + awoṣe). Àtúnṣe Cursor jẹ́ SQLite tí kò ṣe kedere — pánẹ́ẹ̀lì ìfọ̀rọ̀wérọ̀ nìkan | | Roo Code | `omniroute setup-roo` | ó kọ JSON àgbéwọlé Roo (`~/.omniroute/roo-settings.json`) + ó ṣètò `roo-cline.autoImportSettingsPath` + ó tẹ àwọn ìgbésẹ̀ UI jáde (ó bá OpenAI mu, Base URL **pẹ̀lú** `/v1`) | | Crush | `omniroute setup-crush` | `~/.config/crush/crush.json` — olùpèsè `openai-compat`, `base_url` **pẹ̀lú** `/v1`, kọ́kọ́rọ́ nípasẹ̀ `$OMNIROUTE_API_KEY` | | Goose | `omniroute setup-goose` | `~/.config/goose/config.yaml` (`GOOSE_PROVIDER=openai` + `OPENAI_HOST` **láìsí** `/v1` + `GOOSE_MODEL`) + ìtọ́sọ́nà env | | Aider | `omniroute setup-aider` | `~/.aider.conf.yml` (`openai-api-base` **láìsí** `/v1` + `model: openai/`) + ìtọ́sọ́nà env (`aider --message --yes`) | | Qwen Code | `omniroute setup-qwen` | àkọọ́lẹ̀ V4 `modelProviders.openai` nínú `~/.qwen/settings.json` + `OMNIROUTE_API_KEY` nínú `~/.qwen/.env` | ```bash # OpenCode (olùpèsè tó bá openai mu, gbogbo awoṣe inú àkójọ, VPS jíjìn) omniroute setup-opencode --remote http://192.168.0.15:20128 --api-key oma_live_xxx omniroute setup-opencode --only glm,kimi # pa àwọn awoṣe tó bá mu nìkan mọ́ opencode -m omniroute/glm/glm-5.2 "..." # kọ́kọ́ ṣe export OMNIROUTE_API_KEY ``` > OpenCode tún ní ìṣọ̀kan **plugin** tó ní agbára púpọ̀ sí i: `omniroute setup opencode` > (tó ti mọ̀ nípa jíjìn báyìí nípasẹ̀ `--remote`) ń fi `@omniroute/opencode-plugin` sílẹ̀. > `setup-opencode` ni àṣàyàn tó fẹ́ẹ̀rẹ́ tó sì bá openai mu. A tọ́ka sí kọ́kọ́rọ́ API > nípasẹ̀ `{env:OMNIROUTE_API_KEY}` — a kì í kọ ọ́ sí disiki láéláé. > > Lórí OpenCode v2, lo `@omniroute/opencode-plugin-v2` dípò rẹ̀: àkójọ kan náà, > àdéhùn olùgbéjáde tó yàtọ̀. Ó máa ń ka kọ́kọ́rọ́ láti ibi ìpamọ́ ẹ̀rí OpenCode fúnra rẹ̀ > nígbà tí ìṣọ̀kan náà bá sopọ̀, nítorí náà gateway jíjìn kò nílò kọ́kọ́rọ́ kankan nínú > `opencode.json` rárá. --- ## Ṣiṣakoso awọn ipo (yipada laarin awọn olupin) Ìpò kan (context) jẹ́ olupin tí a ti fipamọ́ (baseUrl + credential + scope). `omniroute connect` nṣẹda ọkan ti o si mu u ṣiṣẹ; lati igba naa gbogbo aṣẹ yoo fojusi rẹ. Ṣakoso ati yipada laarin wọn pẹlu `omniroute contexts`: ```bash omniroute contexts list # gbogbo awọn ipo; eyi ti nṣiṣẹ lọwọ ni a samisi ● omniroute contexts current # olupin ti nṣiṣẹ lọwọ, ipo ijẹrisi, ipari ``` ```text | Name | Base URL | Auth | Scope | Description ● | vps | http://100.67.86.91:20128 | token | admin | Remote OmniRoute (…) | default | http://localhost:20128 | ✗ | | ``` **Yipada awọn olupin** — gbogbo aṣẹ ti o tẹle yoo tẹle ipo ti nṣiṣẹ lọwọ: ```bash omniroute contexts use vps # → gbogbo awọn aṣẹ bayi yoo lu VPS latọna jijin omniroute tokens list # (ṣiṣẹ lodi si VPS) omniroute contexts use default # → pada si localhost omniroute tokens list # (ṣiṣẹ lodi si olupin agbegbe) ``` **Fi ipo kan kun pẹlu ọwọ** (dipo `connect`), ṣayẹwo, tabi tun lorukọ: ```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 # awọn alaye kikun fun ipo kan omniroute contexts rename staging stg ``` **Yọ ipo kan kuro** — yoo beere fun ijẹrisi; kọja `--yes` lati foju rẹ (o nilo fun awọn iwe afọwọkọ / awọn ikarahun ti kii ṣe ibaraẹnisọrọ, eyiti yoo kọ lailewu bibẹẹkọ): ```bash omniroute contexts remove stg --yes ``` > `default` (localhost) ko le yọ kuro. Yiyọ ipo ti nṣiṣẹ lọwọ yoo pada si `default`. Imọran: yiyọ ipo kan kuro nikan npa iwe-ẹri ti a ti fipamọ **agbegbe** rẹ — fagilee ami-ẹri naa lori olupin pẹlu `omniroute tokens revoke ` lati pa iwọle patapata. **Ṣe okeere / gbe wọle awọn ipo** (fun apẹẹrẹ lati gbe wọn laarin awọn ẹrọ). Awọn okeere npa awọn iwe-ẹri kuro nipasẹ aiyipada, pẹlu awọn iwe-ẹri ti o fipamọ nipasẹ ifasẹhin faili. Lo `--include-secrets` ni gbangba nigbati o ba nilo afẹyinti ti o ni iwe-ẹri ti o le gbe: ```bash omniroute contexts export --out contexts.json # ti yọ kuro; ibi ti aiyipada: stdout omniroute contexts export --include-secrets --out private-contexts.json omniroute contexts import contexts.json # kọ lori; --merge lati tọju eyi ti o wa tẹlẹ omniroute contexts migrate --yes # gbe awọn ami-ẹri plaintext atijọ si keychain ``` `--include-secrets` nyanju awọn itọkasi keychain ṣaaju ṣiṣe okeere ati pe yoo kuna ti ko ba le ka iwe-ẹri eyikeyi ti a tọka si. `--no-secrets` nigbagbogbo ni ipo akọkọ. Awọn faili okeere ni a kọ ni atomiki pẹlu ipo `0600`. Tọju okeere ti o ni aṣiri ni gbangba bi ohun elo aṣiri. Lori awọn eto ti ko ni ori laisi keychain OS ti o wulo, CLI yoo pada si `config.json` pẹlu ipo `0600` ati pe yoo tẹ ikilọ ẹyọkan kan; okeere aiyipada yoo wa ni piparẹ ni ipo yii. --- ## Àyẹ̀wò kíákíá láti ìbẹ̀rẹ̀ dé òpin Ìgbésẹ̀ ìgbésí-ayé tí o lè ṣe ẹ̀dà rẹ̀ kí o sì lẹ̀ mọ́ láti ṣàyẹ̀wò ìṣètò jíjìnnà láti ìbẹ̀rẹ̀ — sopọ̀, ṣẹ̀dá token tó ní àyè ìwọlé pàtó, darí àṣẹ kan, padà sẹ́yìn, kí o sì tú ìṣètò náà ká. Rọ́pò `192.168.0.15` pẹ̀lú host/IP olupin rẹ (Tailscale, LAN, tàbí URL `https://…` ti gbogbo ènìyàn lè wọlé sí). ```bash # 1. Sopọ̀ (ọ̀rọ̀ aṣínà → token admin, tí a fipamọ́ gẹ́gẹ́ bí àyíká tí yóò bẹ̀rẹ̀ sí ṣiṣẹ́) omniroute connect 192.168.0.15 # tàbí: --key oma_live_xxxx (kò nílò ọ̀rọ̀ aṣínà) omniroute contexts current # ń ṣàfihàn olupin jíjìnnà + àyè ìwọlé # 2. Lò ó — àwọn àṣẹ ìṣàkóso yóò máa ṣiṣẹ́ lórí olupin jíjìnnà báyìí omniroute tokens create --name laptop --scope read # ṣẹ̀dá token tó ní àyè ìwọlé kékeré sí i omniroute tokens list # àtòjọ tí a bo apá rẹ̀, láti ọ̀dọ̀ olupin jíjìnnà # 3. Yípadà sẹ́yìn àti síwájú omniroute contexts use default # → agbègbè omniroute contexts use 192-168-0-15 # → jíjìnnà lẹ́ẹ̀kan sí i (orúkọ láti `contexts list`) # 4. Tú u ká. ÀKÍYÈSÍ: `contexts remove` ń pa ẹ̀rí ìdánimọ̀ AGBAÈGBÈ nìkan — # kò fagilé token náà lórí olupin. Kọ́kọ́ fagilé e ní ẹ̀gbẹ́ olupin bí o bá # fẹ́ fòpin sí ìwọlé náà ní tòótọ́. omniroute tokens revoke # ń fòpin sí ìwọlé lórí olupin omniroute contexts remove 192-168-0-15 --yes # yọ àyíká agbègbè kúrò (kódà bí ó bá ń ṣiṣẹ́ → yóò padà sí default), láìbéèrè ìmúdájú ``` > `--yes` ń mú kí `contexts remove` ṣiṣẹ́ láìsí ìbánisọ̀rọ̀ (ó pọn dandan nínú àwọn script/CI; láìsí > rẹ̀, shell tí kì í ṣe ìbánisọ̀rọ̀ yóò kọ̀ láìléwu dípò kí ó dúró láìnípẹ̀kun). Yíyọ àyíká > tí **ń ṣiṣẹ́** kúrò yóò mú kí ó padà sí `default` láìfọwọ́ṣe. --- ## Àwọn àkọsílẹ̀ ààbò - Ọ̀rọ̀ token tí kò paroko ni a máa ń fi hàn lẹ́ẹ̀kan ṣoṣo; hash SHA-256 nìkan ni a máa ń tọ́jú (gẹ́gẹ́ bí àwọn kọ́kọ́rọ́ API). - `omniroute connect` tún ń lo ìdènà ìgbìyànjú láti wọlé léraléra pẹ̀lú ìkọsílẹ̀ àyẹ̀wò. - Yan HTTPS tàbí Tailnet fún ìgbékalẹ̀ ìbánisọ̀rọ̀; host lásán máa ń lo `http://` gẹ́gẹ́ bí àiyípadà àkọ́kọ́ fún ìrọ̀rùn LAN/Tailscale — fi URL `https://…` kíkún ránṣẹ́ fún TLS. - Fáìlì context abẹ́lé tí a dámọ̀ràn ni `~/.omniroute/config.json` (`chmod 600`), tí ó ní `credentialRef` nìkan; token náà fúnra rẹ̀ ni a tọ́jú sínú keychain OS (`keytar`), a kì í sì í tẹ̀ ẹ́ jáde nínú àwọn log. Àwọn ìfìṣàgbékalẹ̀ headless tí kò ní keychain abinibi tí ń ṣiṣẹ́ máa ń lo fáìlì `0600` kan náà gẹ́gẹ́ bí ọ̀nà ìpadà sẹ́yìn tí a sọ ní kedere, wọ́n á sì fi ìkìlọ̀ hàn lẹ́ẹ̀kan. Lo `omniroute contexts migrate --yes` lẹ́yìn fífi backend keychain sílẹ̀. --- ## Àwọn endpoint API (ìtọ́kasí) | Ọ̀nà | Route | Ìfàṣẹsí | Scope | | ------ | --------------------- | ----------------- | ------------------------------------ | | POST | `/api/cli/connect` | ọ̀rọ̀ aṣínà ìṣàkóso | — (gbangba, ọ̀rọ̀ aṣínà ló dáàbò bò ó) | | GET | `/api/cli/whoami` | token ìwọlé | kíkà | | GET | `/api/cli/tokens` | token ìwọlé | admin | | POST | `/api/cli/tokens` | token ìwọlé | admin | | DELETE | `/api/cli/tokens/:id` | token ìwọlé | admin | Wo [openapi.yaml](../openapi.yaml) fún àwọn schema kíkún.