# Remote Mode (தமிழ்) 🌐 **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) · 🇮🇳 [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) --- உங்கள் லேப்டாப்பில் `omniroute` CLI-ஐ இயக்குங்கள்; அதே நேரத்தில் OmniRoute வேறொரு இடத்தில் (ஒரு VPS, வீட்டு சர்வர் அல்லது உங்கள் Tailnet-இல் உள்ள மற்றொரு கணினியில்) இயங்கலாம். நீங்கள் `omniroute connect` மூலம் ஒருமுறை உள்நுழைந்ததும், அதன்பிறகு **ஒவ்வொரு** CLI கட்டளையும் அந்தத் தொலைநிலை சர்வரையே இலக்காகக் கொள்ளும் — அதே கட்டளைகள், அதே வெளியீடு, ஆனால் தொலைநிலையில் செயல்படுத்தப்படும். நிறுவுவதற்கு இரண்டாவது கருவி எதுவும் இல்லை: தொலைநிலைப் பயன்முறை என்பது வழக்கமான `omniroute` CLI மற்றும் வரம்பிடப்பட்ட **அணுகல் டோக்கன்கள்** மட்டுமே. ```bash npm install -g omniroute # வழக்கமான CLI omniroute connect 192.168.0.15 # உள்நுழைக (கடவுச்சொல் → வரம்பிடப்பட்ட டோக்கன்) omniroute models list # ← இப்போது தொலைநிலை சர்வரின் மாடல்களைப் பட்டியலிடுகிறது omniroute configure codex # ← தொலைநிலைப் பட்டியலிலிருந்து உள்ளூர் Codex சுயவிவரத்தை எழுதுகிறது ``` --- ## இது எவ்வாறு செயல்படுகிறது ``` உங்கள் லேப்டாப் தொலைநிலை OmniRoute (VPS) ┌────────────────────┐ ┌───────────────────────────────┐ │ omniroute CLI │ POST /api/cli/connect (கடவுச்சொல் → டோக்கன்) │ │ சூழல்: vps │ ───────────────► │ வரம்பிடப்பட்ட அணுகல் டோக்கனை │ │ baseUrl, token │ Authorization: Bearer oma_live_… │ │ │ ───────────────► │ உருவாக்கி, ஒவ்வொரு மேலாண்மை │ │ உள்ளூரிலேயே │ ◄─────────────── │ வழித்தடத்தையும் டோக்கனின் │ │ அமைப்புகளை எழுதும் │ │ வரம்பின்படி சரிபார்க்கிறது │ └────────────────────┘ └───────────────────────────────┘ ``` - **சூழல்கள்** ஒவ்வொன்றும் ஒரு சர்வரைச் சேமிக்கின்றன (`~/.omniroute/config.json`, `chmod 600`). `omniroute contexts use ` செயலில் உள்ள சர்வரை மாற்றுகிறது; `default` என்பது உள்ளூர் சர்வர். - **அணுகல் டோக்கன்கள்** (`oma_live_…`) மேலாண்மைக் கட்டளைகளுக்கு அங்கீகாரம் வழங்குகின்றன. அவை இன்ஃபெரன்ஸ் API விசைகளிலிருந்து (`sk-…`, `/v1/chat/completions`-க்குப் பயன்படுத்தப்படுபவை) வேறுபட்டவை. - ஒரு டோக்கனின் SHA-256 ஹாஷ் மட்டுமே சர்வர் பக்கத்தில் சேமிக்கப்படுகிறது. எளிய உரை வடிவம் உருவாக்கும்போது **ஒருமுறை** மட்டுமே காட்டப்படும். --- ## இணைத்தல் ### மேலாண்மைக் கடவுச்சொல்லுடன் (தொடக்க அமைப்பு) ```bash omniroute connect 192.168.0.15 # http://192.168.0.15:20128-க்கான மேலாண்மைக் கடவுச்சொல்: ******** # ✔ http://192.168.0.15:20128 உடன் இணைக்கப்பட்டது — சூழல் '192.168.0.15' (வரம்பு: admin) ``` கடவுச்சொல் செயல்முறை இயல்பாக ஒரு **admin** டோக்கனை உருவாக்குகிறது (கடவுச்சொல் உங்களிடம் இருப்பதால், உங்களுக்கு ஏற்கெனவே முழுக் கட்டுப்பாடு உள்ளது). `--scope` மூலம் குறைந்த வரம்பை அமைக்கலாம்: ```bash omniroute connect 192.168.0.15 --scope write ``` விருப்பங்கள்: `--port

` (ஹோஸ்டில் போர்ட் குறிப்பிடப்படாதபோது), `--name ` (சூழலின் பெயர்), `--scope read|write|admin`. முழுமையான URL மாற்றமின்றி அப்படியே பயன்படுத்தப்படும்: `omniroute connect https://omni.example.com`. ### முன்கூட்டியே உருவாக்கப்பட்ட டோக்கனுடன் டாஷ்போர்டில் (அல்லது `omniroute tokens create` மூலம்) வரம்பிடப்பட்ட டோக்கனை உருவாக்கி, அதை ஒட்டுங்கள் — கடவுச்சொல் தேவையில்லை: ```bash omniroute connect 192.168.0.15 --key oma_live_xxxxxxxx ``` CLI அதை `GET /api/cli/whoami` மூலம் சரிபார்த்து, செயலில் உள்ள சூழலாகச் சேமிக்கிறது. --- ## வரம்புகள் படிநிலை அமைப்பிலான மூன்று நிலைகள் (`admin ⊃ write ⊃ read`): | வரம்பு | செய்யக்கூடியவை | | ------- | ------------------------------------------------------------------------------------------- | | `read` | பட்டியலிடுதல்/ஆய்வு — `models list`, `providers status`, `logs`, `usage`, `cost` | | `write` | read **+** உள்ளமைத்தல்/செயல்படுத்தல் — `setup-codex`, `keys add`, `config set`, சேர்க்கைகள் | | `admin` | write **+** நிர்வகித்தல் — `tokens` CRUD, வழங்குநர்களைச் சேர்த்தல், சேவைகள், கொள்கை, oauth | ஒவ்வொரு வழித்தடத்துக்கும் தேவையான வரம்பை HTTP முறைமையிலிருந்து (`GET`→read, மாற்றங்கள்→write), மேலும் முக்கியமான பகுதிகளுக்கான admin அனுமதிப்பட்டியலிலிருந்து (`/api/cli/tokens`, `/api/providers` மாற்றங்கள், `/api/oauth`, `/api/services`, …) சர்வர் தீர்மானிக்கிறது. போதுமான வரம்பு இல்லாத டோக்கனுக்கு தெளிவான செய்தியுடன் `403` கிடைக்கும். > செயல்முறைகளைத் தொடங்கும் வழித்தடங்கள் (`/api/services/*`, `/api/mcp/*`, …) > **loopback-only** ஆகவே இருக்கும் — வரம்பு எதுவாக இருந்தாலும், தொலைநிலை டோக்கனால் அவற்றை ஒருபோதும் அணுக முடியாது. --- ## தொலைநிலை நிறுவலில் Antigravity-ஐ இணைத்தல் Antigravity, Google-இன் firstparty/nativeapp ஒப்புதல் திரையைப் பயன்படுத்துகிறது. உள்நுழைவை அங்கீகரிக்கும் **உலாவியிலிருந்து loopback redirect** (`http://127.0.0.1:/callback`) **அணுகக்கூடியதாக இருந்தால் மட்டுமே** Google அங்கீகாரக் குறியீட்டை வெளியிடும். தொலைநிலை VPS நிறுவலில், அந்த loopback உங்கள் கணினியில் இல்லாமல் சேவையகத்தில் இருக்கும். எனவே ஒப்புதல் திரை **முடிவின்றித் தொங்கிக்கொண்டிருக்கும்; குறியீட்டை ஒருபோதும் வெளியிடாது** — வழக்கமான "callback URL-ஐ ஒட்டுக" என்ற மாற்று முறையில் ஒட்டுவதற்கு எதுவும் இருக்காது. (இது Google தரப்புக் கட்டுப்பாடு: தொகுப்பில் உள்ள Antigravity desktop client-ஐப் பயன்படுத்தும் எந்த proxy-யிலும் இதே தொங்கல் ஏற்படும்; OmniRoute-இல் மட்டும் அல்ல.) நீங்கள் சிக்கிக்கொள்வதற்கு முன்பே dashboard இதைக் கண்டறியும்: localhost அல்லாத முகவரியிலிருந்து **Providers → Antigravity → Connect** என்பதைத் திறந்தால், பொதுவான "callback URL-ஐ நகலெடுக்கவும்" அறிவிப்புக்குப் பதிலாக கீழே உள்ள இரண்டு தீர்வுகள் காட்டப்படும்; ஒவ்வொன்றிலும் உங்கள் host மற்றும் port ஏற்கெனவே நிரப்பப்பட்டிருக்கும். (LAN முகவரியும் இதில் அடங்கும் — இந்த callback-ஐப் பொறுத்தவரை `192.168.x.x` என்பது localhost அல்ல.) தொலைநிலை OmniRoute உடன் Antigravity-ஐ இணைக்க இரண்டு ஆதரிக்கப்படும் வழிகள் உள்ளன. ### விருப்பம் A — உள்ளூர் உள்நுழைவு உதவியாளர் (பரிந்துரைக்கப்படுகிறது) `127.0.0.1`-ஐ அணுகக்கூடிய **உங்கள் சொந்த கணினியில்** OAuth-ஐ இயக்கவும். உதவியாளர் Google உடன் நேரடியாகத் தொடர்புகொள்வதால், dashboard பதிப்பால் நிறைவு செய்ய முடியாத ஒப்புதல் அங்கே நிறைவடையும். **நீங்கள் ஏற்கெனவே இணைந்திருந்தால்** (`omniroute connect `), நகலெடுக்க எதுவும் இல்லை — உதவியாளர் அந்த நிறுவலுக்கான நற்சான்றை உங்களுக்காக வழங்கும்: ```bash # உங்கள் LOCAL கணினியில் (Node.js + ஓர் உலாவி தேவை): omniroute connect 192.168.0.15 # ஒருமுறை — admin வரம்புடைய context token-ஐ உருவாக்கும் npx omniroute login antigravity # ↳ Google ஒப்புதலைத் திறந்து, உள்ளூர் loopback port-இல் callback-ஐப் பெற்று, # அதைப் பரிமாற்றி, செயலிலுள்ள context-க்கு நற்சான்றை POST செய்கிறது: # # http://192.168.0.15:20128 இல் Antigravity இணைக்கப்பட்டது (இணைப்பு abc123). # ஒட்டுவதற்கு எதுவுமில்லை — இந்த terminal-ஐ மூடலாம். ``` செயலிலுள்ள context வேறொரு கணினியைச் சுட்டிக்காட்டும்போதெல்லாம் push தானாகவே நடைபெறும். எந்த வழியிலும் அதை வற்புறுத்த `--push` / `--no-push` பயன்படுத்தலாம்; அல்லது ஒரு குறிப்பிட்ட context-ஐக் குறிவைக்க `--context ` பயன்படுத்தலாம். **உங்கள் கணினியால் VPS-ஐ அணுக முடியாவிட்டாலும்** (firewall செய்யப்பட்டிருந்தால், SSH இல்லாவிட்டால், அல்லது கணினி தனிமைப்படுத்தப்பட்டிருந்தால்), உதவியாளர் தொடர்ந்து செயல்படும் — அதற்கு உண்மையில் _தேவைப்படுவது_ Google மட்டுமே. `--no-push` பயன்படுத்தவும், அல்லது push தோல்வியடைய அனுமதிக்கவும்: நீங்கள் ஏற்கெனவே முடித்த அங்கீகாரத்தை நிராகரிப்பதற்குப் பதிலாக, blob-ஐ அச்சிடுவதற்கு அது தானாக மாறும். ```bash npx omniroute login antigravity --no-push # omniroute-cred-v1.eyJ2IjoxLCJ... ``` பின்னர் **தொலைநிலை** dashboard-இல்: **Providers → Antigravity → Connect** என்பதற்குச் சென்று, `omniroute-cred-v1.…` blob-ஐ **Step 2** புலத்தில் ஒட்டவும் (அது callback URL அல்லது credential blob ஆகிய இரண்டில் ஏதேனும் ஒன்றை ஏற்றுக்கொள்ளும்). OmniRoute அதை decode செய்து, சேவையகத் தரப்பில் Cloud Code onboarding-ஐ இயக்கி, இணைப்பை நிரந்தரமாகச் சேமிக்கும். > அந்த blob-இல் refresh token உள்ளது — அதைக் கடவுச்சொல்லைப் போலக் கையாளவும். push வழியில், உங்கள் context-இன் அங்கீகரிக்கப்பட்ட இணைப்பின் மூலம் அது ஒருமுறை அனுப்பப்படும்; ஒட்டும் வழியில், உங்கள் dashboard இணைப்பின் மூலம் அனுப்பப்படும். எந்த வழியிலும், சேமிப்பகத்தில் அது மறைகுறியாக்கப்பட்ட நிலையில் சேமிக்கப்படும்; வெற்றிகரமான push அதை உங்கள் terminal-இல் ஒருபோதும் அச்சிடாது. கொடிகள்: `--no-browser` (தானாகத் திறப்பதற்குப் பதிலாக URL-ஐ அச்சிடும்), `--port ` (loopback port-ஐ நிலைநிறுத்தும்), `--timeout `, `--push` / `--no-push` (தானியங்கி வழங்கலை மீறும்), `--context ` (ஒரு குறிப்பிட்ட context-ஐக் குறிவைக்கும்). ### விருப்பம் B — SSH local-forward tunnel VPS-க்கான SSH அணுகல் உங்களிடம் இருந்தால், dashboard port-ஐ forward செய்யவும்; இதனால் loopback callback, tunnel வழியாக மீண்டும் சேவையகத்தை அடையும்: ```bash # உங்கள் LOCAL கணினியில்: ssh -L 20128:127.0.0.1:20128 user@your-vps # பின்னர் உங்கள் LOCAL உலாவியில் http://localhost:20128-ஐத் திறந்து, வழக்கம்போல # Antigravity-ஐ இணைக்கவும் — 127.0.0.1:20128/callback redirect இப்போது SSH வழியாக VPS-ஐ அடையும். ``` நீங்கள் dashboard-ஐ `localhost:20128` ஆக அணுகுவதால், Google ஒப்புதல் நிறைவடைந்து, அதே tunnel வழியாக callback சேவையகத்திற்கு வழங்கப்படும் — blob தேவையில்லை. இணைப்பு செயலிலுள்ளது எனக் காட்டப்படும் வரை tunnel-ஐத் திறந்தே வைத்திருக்கவும். கீழே உள்ள நிலையான-loopback providers போலல்லாமல், இங்கே **ஒரே ஒரு forward போதுமானது**: Antigravity callback, dashboard port வழியாகவே பயணிப்பதால், tunnel செய்ய இரண்டாவது provider-க்குரிய port தேவையில்லை. > முழுமையாக headless ஆன மாற்று வழியாக (உதவியாளர் இல்லை, tunnel இல்லை), உங்கள் **சொந்த** > Google OAuth web credentials + பொது base URL ஒன்றை உள்ளமைக்கலாம்; provider-இன் OAuth > environment variables-ஐப் பார்க்கவும். மேலே உள்ள இரண்டு விருப்பங்களுக்கும் கூடுதல் Google அமைப்பு தேவையில்லை. --- ## தொலைநிலை நிறுவலில் Codex / Grok-ஐ இணைத்தல் (நிலையான-loopback வழங்குநர்கள்) Codex, xAI (`xai-oauth`) மற்றும் Grok CLI (`grok-cli`) ஆகியவை தங்களின் upstream OAuth செயலியில் ஒரு **நிலையான** loopback `redirect_uri`-ஐப் பதிவு செய்கின்றன. OmniRoute-ஆல் அதை மாற்ற முடியாது — வழங்குநர் எப்போதும் உலாவியை அதே hardcoded முகவரிக்கே திருப்பி அனுப்புகிறார்: | வழங்குநர் | வழங்குநர் திருப்பிவிடும் நிலையான callback | | ----------- | ----------------------------------------- | | `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` என்பது **உலாவி இயங்கும் கணினியை**க் குறிக்கிறது; ஆனால் OmniRoute-இன் PKCE callback சேவையகம் **சேவையகத்தின்** loopback-இல் கேட்கிறது. `http://192.168.0.15:20128` போன்ற LAN முகவரியில் dashboard-ஐத் திறந்தால், இவை இரண்டும் ஒருபோதும் இணைவதில்லை: authorization code உங்கள் சொந்த laptop-இன் `localhost:1455`-க்கு அனுப்பப்படுகிறது; அங்கு எதுவும் கேட்காததால், பிழையை வெளிப்படுத்தாமலேயே வழங்குநரின் sign-in தோல்வியடைகிறது. Popup-ஐத் திறப்பதற்கு முன்பே dashboard இதைக் கண்டறிந்து, login அமைதியாகத் தோல்வியடைய அனுமதிப்பதற்குப் பதிலாக tunnel கட்டளையைக் காட்டுகிறது (#8046). ### தீர்வு — **இரண்டு** port-களையும் forward செய்யவும் ```bash # உலாவி இயங்கும் கணினியில்: ssh -L 20128:127.0.0.1:20128 -L 1455:127.0.0.1:1455 @192.168.0.15 # பின்னர் http://localhost:20128-க்குச் சென்று, அங்கிருந்து Codex-ஐ இணைக்கவும் ``` இரண்டு forward-களும் அவசியம்; ஒன்றை மட்டும் forward செய்தாலும் தோல்வியே ஏற்படும்: - **`20128`** (dashboard port) origin-ஐ உண்மையான localhost ஆக மாற்றுகிறது; இதுவே OmniRoute-ஐ PKCE callback சேவையகத்தைத் தொடங்கச் செய்கிறது — LAN origin ஒருபோதும் அந்த branch-ஐ அடையாது. - **`1455`** (வழங்குநரின் நிலையான callback port) என்பதற்கே உலாவி திருப்பி அனுப்பப்படுகிறது; அது tunnel வழியாகச் சேவையகத்தின் loopback-ஐ அடைய வேண்டும். xAI அல்லது Grok CLI-ஐ இணைக்கும்போது `1455` என்பதற்குப் பதிலாக `56121`/`56122`-ஐயும், `20128` என்பதற்குப் பதிலாக உங்கள் உண்மையான dashboard port-ஐயும் பயன்படுத்தவும். இணைப்பு active எனக் காட்டப்படும் வரை tunnel-ஐத் திறந்தே வைத்திருக்கவும். > **SSH அணுகல் இல்லையா?** Codex மற்றும் Grok CLI ஆகியவை ஒட்டப்படும் token-ஐயும் ஏற்றுக்கொள்கின்றன — connect dialog-இல் உள்ள **API Key-ஐ ஒட்டுக** / **auth.json-ஐ import செய்க** tab-ஐப் பயன்படுத்தவும். அந்தப் பாதையில் loopback callback இல்லை, எனவே அது எந்த origin-இலிருந்தும் செயல்படும். கூடுதலாக, Codex ஒரு தனித்த access token அல்லது `~/.codex/auth.json` session blob-ஐயும் ஏற்றுக்கொள்கிறது. --- ## டோக்கன்களை நிர்வகித்தல் ```bash omniroute tokens create --name "laptop" --scope write [--expires 30] # ↳ ரகசியத்தை ஒரேமுறை மட்டுமே காட்டும் — அதை இப்போதே நகலெடுக்கவும் omniroute tokens list # மறைக்கப்பட்டவை: அடையாளம், பெயர், அணுகல் வரம்பு, முன்னொட்டு, நிலை, காலாவதி omniroute tokens revoke # உடனடியாகத் திரும்பப் பெறவும் omniroute tokens scopes # மூன்று அணுகல் வரம்புகளையும் விளக்கவும் ``` `tokens` கட்டளைகளுக்கு **admin** நற்சான்று தேவை. டாஷ்போர்டிலும் **Settings → Access Tokens** என்பதன் கீழ் டோக்கன்களை நிர்வகிக்கலாம் (உருவாக்குதல், திரும்பப் பெறுதல், ஒருமுறை மட்டும் நகலெடுத்தல்). ஒரு டோக்கனை உருவாக்கியவருக்கு உள்ளதைவிட அதிகச் சலுகைகளுடன் அதை ஒருபோதும் உருவாக்க முடியாது. `admin` டோக்கனை இயக்குநரால் மட்டுமே உருவாக்க முடியும் — டாஷ்போர்டு அமர்வு, சேவையகத்திலேயே உள்ள உள்ளூர் CLI, கடவுச்சொல்லுடன் `omniroute connect`, அல்லது உள்நுழைவு முடக்கப்பட்ட ஓர் instance மூலம். இயந்திர நற்சான்றுகள் (`admin` அணுகல் டோக்கன், அல்லது `manage`/`admin` அணுகல் வரம்பைக் கொண்ட API விசை) `write` மற்றும் `read` டோக்கன்களை மட்டுமே உருவாக்க முடியும்; அவற்றிடம் `--scope admin` கோரினால் `403` திருப்பியளிக்கப்படும். ஒரு டோக்கனை அதன் உருவாக்குநரிடம் உள்ளதைவிட அதிக உரிமைகளுடன் ஒருபோதும் உருவாக்க முடியாது. `admin` டோக்கனை இயக்குநர் மட்டுமே உருவாக்க முடியும்: கட்டுப்பாட்டுப் பலகை அமர்வு, சேவையகத்திலேயே உள்ள உள்ளூர் CLI, கடவுச்சொல்லுடன் `omniroute connect` அல்லது உள்நுழைவு முடக்கப்பட்ட இன்ஸ்டன்ஸ் வழியாக. இயந்திரச் சான்றுகள் (`admin` அணுகல் டோக்கன் அல்லது `manage`/`admin` வரம்புள்ள API விசை) `write` மற்றும் `read` டோக்கன்களை மட்டுமே உருவாக்க முடியும்; அவற்றைக் கொண்டு `--scope admin` கோரினால் `403` திரும்பும். --- ## தொலைநிலை catalog-இலிருந்து coding CLI-ஐ உள்ளமைத்தல் `omniroute configure`, **active server-இன்** live model catalog-ஐப் படித்து, **உங்கள்** கணினியில் config ஒன்றை எழுதுகிறது. ```bash omniroute configure codex # வழங்குநர்கள்: glm, kmc, ollamacloud, opencode-go, … # வழங்குநர்: glm # Model id: glm/glm-5.2 # ✔ ~/.codex/glm52.config.toml-ஐ எழுதியது # இதைப் பயன்படுத்தவும்: codex --profile glm52 # interactive அல்லாத முறை omniroute configure codex --provider glm --model glm/glm-5.2 --name glm52 # அடிக்கடி பயன்படுத்தப்படும் model-ஐ interactive picker-இன் மேலே வைத்திருக்கவும் omniroute configure codex --provider glm --model glm/glm-5.2 --favorite --yes ``` Picker, உள்ளூர் `model-preferences.json` கோப்பில் model ID-களை மட்டும் வைத்திருக்கும் (URL-கள் அல்லது credential-களை ஒருபோதும் வைத்திருக்காது); இவை context மற்றும் CLI target அடிப்படையில் பிரிக்கப்படும். சமீபத்திய தேர்வுகளுக்கு முன் favorites காட்டப்படும்; அந்த context/target பட்டியலிலிருந்து தேர்ந்தெடுக்கப்பட்ட model-ஐ அகற்ற `--unfavorite`-ஐப் பயன்படுத்தவும். எழுதப்படும் profile, env var (`OMNIROUTE_API_KEY`) மூலமாக inference key-ஐக் குறிப்பிடுகிறது — ரகசியம் ஒருபோதும் disk-இல் எழுதப்படாது. ஒருமுறை செய்ய வேண்டிய அடிப்படை Codex setup (`[model_providers.omniroute]` block) குறித்து அறிய, [CODEX-CLI-CONFIGURATION.md](./CODEX-CLI-CONFIGURATION.md)-ஐப் பார்க்கவும். ### தொலைநிலைக்கு எதிராக CLI ஒன்றைத் தொடங்குதல் (config எழுதப்படாது) `omniroute run ` active context-ஐயும் மதிக்கிறது: தொலைநிலை base URL மற்றும் context credential ஆகியவை தொடங்கப்படும் process-இல் மட்டும் செலுத்தப்படுகின்றன. ```bash omniroute connect 192.168.0.15 omniroute run claude --model openai/gpt-5.4 # Claude Code → தொலைநிலை omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "hello" omniroute run opencode --model glm/glm-5.2 -- run "reply OK" # சரியாக எது தொடங்கப்படும் என்பதை preview செய்யவும் (env KEY பெயர்கள் மட்டும், மதிப்புகள் ஒருபோதும் இல்லை): omniroute run codex --dry-run --json ``` Target-கள்: `claude`, `codex`, `aider`, `goose`, `opencode`, `qwen`, `gemini` (ஒற்றை மூலம்: `bin/cli/cli-manifest.mjs`). Qwen மற்றும் Gemini ஆகியவை வெளியேறும்போது அகற்றப்படும் தற்காலிகமான, தனிமைப்படுத்தப்பட்ட home-உடன் இயங்குகின்றன; எனவே அவற்றைத் தொடங்குவது உங்கள் தனிப்பட்ட tool configuration-ஐத் தொடவோ — அதற்குள் கசியவோ — செய்யாது. ### ஒவ்வொரு CLI-க்குமான setup கட்டளைகள் ஆதரிக்கப்படும் ஒவ்வொரு CLI-க்கும் தொலைநிலையை உணரும் setup கட்டளை உள்ளது (அனைத்தும் active context-ஐ அல்லது `--remote --api-key `-ஐ மதிக்கும்): | CLI | கட்டளை | இது எழுதுவது | | ----------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Codex | `omniroute setup-codex` | `~/.codex/.config.toml` சுயவிவரங்கள் (ஒவ்வொரு மாதிரிக்கும்) | | Claude Code | `omniroute setup-claude` | `~/.claude/profiles//settings.json` (ஒவ்வொரு மாதிரிக்கும்) | | OpenCode | `omniroute setup-opencode` | `~/.config/opencode/opencode.json` — பட்டியலிலுள்ள ஒவ்வொரு மாதிரியையும் கொண்ட OpenAI-இணக்கமான `omniroute` வழங்குநர் (`opencode -m omniroute/`-ஐ இயக்கவும்) | | Cline | `omniroute setup-cline` | `~/.cline/data/{globalState,secrets}.json` (CLI பயன்முறை) + ஒட்டுவதற்கான VS Code நீட்டிப்பு அமைப்புகளை அச்சிடுகிறது (OpenAI-இணக்கமானது, `/v1` **இல்லாத** Base URL) | | Kilo Code | `omniroute setup-kilo` | `~/.local/share/kilo/auth.json` (CLI) + VS Code `kilocode.*` அமைப்புகள் — OpenAI-இணக்கமானது, `/v1` **உள்ள** Base URL | | Continue | `omniroute setup-continue` | `~/.continue/config.yaml` (VS Code/JetBrains + `cn` CLI) — `provider: openai`, `/v1` **உள்ள** `apiBase`, `${{ secrets.OMNIROUTE_API_KEY }}` வழியாக விசை | | Cursor | `omniroute setup-cursor` | பயன்பாட்டிற்குள் மேற்கொள்ள வேண்டிய படிகளை அச்சிடுகிறது (Settings → Models → `/v1` **உள்ள** OpenAI Base URL-ஐ Override செய்தல் + விசை + மாதிரி). Cursor உள்ளமைவு வெளிப்படாத SQLite வடிவில் உள்ளது — அரட்டை பலகைக்கு மட்டும் | | Roo Code | `omniroute setup-roo` | Roo இறக்குமதி JSON (`~/.omniroute/roo-settings.json`)-ஐ எழுதுகிறது + `roo-cline.autoImportSettingsPath`-ஐ அமைக்கிறது + UI படிகளை அச்சிடுகிறது (OpenAI-இணக்கமானது, `/v1` **உள்ள** Base URL) | | Crush | `omniroute setup-crush` | `~/.config/crush/crush.json` — `openai-compat` வழங்குநர், `/v1` **உள்ள** `base_url`, `$OMNIROUTE_API_KEY` வழியாக விசை | | Goose | `omniroute setup-goose` | `~/.config/goose/config.yaml` (`GOOSE_PROVIDER=openai` + `/v1` **இல்லாத** `OPENAI_HOST` + `GOOSE_MODEL`) + சூழல் மாறி வழிமுறை | | Aider | `omniroute setup-aider` | `~/.aider.conf.yml` (`/v1` **இல்லாத** `openai-api-base` + `model: openai/`) + சூழல் மாறி வழிமுறை (`aider --message --yes`) | | Qwen Code | `omniroute setup-qwen` | `~/.qwen/settings.json`-இல் V4 `modelProviders.openai` பதிவு + `~/.qwen/.env`-இல் `OMNIROUTE_API_KEY` | ```bash # OpenCode (OpenAI-இணக்கமான வழங்குநர், பட்டியலிலுள்ள அனைத்து மாதிரிகள், தொலைநிலை VPS) omniroute setup-opencode --remote http://192.168.0.15:20128 --api-key oma_live_xxx omniroute setup-opencode --only glm,kimi # பொருந்தும் மாதிரிகளை மட்டும் வைத்திருக்கவும் opencode -m omniroute/glm/glm-5.2 "..." # முதலில் OMNIROUTE_API_KEY-ஐ export செய்யவும் ``` > OpenCode மேலும் வசதிகள் நிறைந்த **செருகுநிரல்** ஒருங்கிணைப்பையும் கொண்டுள்ளது: `omniroute setup opencode` > (இப்போது `--remote` வழியாக தொலைநிலையை ஆதரிக்கிறது) `@omniroute/opencode-plugin`-ஐ நிறுவுகிறது. > `setup-opencode` என்பது எளிய OpenAI-இணக்கமான மாற்று வழியாகும். API விசை > `{env:OMNIROUTE_API_KEY}` வழியாகக் குறிப்பிடப்படுகிறது — ஒருபோதும் வட்டில் எழுதப்படாது. > > OpenCode v2-இல், அதற்குப் பதிலாக `@omniroute/opencode-plugin-v2`-ஐப் பயன்படுத்தவும்: அதே பட்டியல், > வேறுபட்ட ஏற்றி ஒப்பந்தம். ஒருங்கிணைப்பு இணைக்கப்பட்டிருக்கும்போது, இது OpenCode-இன் சொந்த நற்சான்று > சேமிப்பகத்திலிருந்து விசையைப் படிக்கிறது; எனவே தொலைநிலை நுழைவாயிலுக்கு > `opencode.json`-இல் விசை எதுவும் தேவையில்லை. --- ## சூழல்களை நிர்வகித்தல் (சர்வர்களுக்கு இடையில் மாறுதல்) ஒரு **சூழல் (context)** என்பது சேமிக்கப்பட்ட ஒரு சர்வர் (baseUrl + credential + scope). `omniroute connect` ஒரு சூழலை உருவாக்கி அதைச் செயலில் உள்ளதாக மாற்றுகிறது; அதன்பிறகு ஒவ்வொரு கட்டளையும் அதை இலக்காகக் கொள்ளும். `omniroute contexts` ஐப் பயன்படுத்தி அவற்றை நிர்வகிக்கவும் மற்றும் அவற்றுக்கிடையே மாறவும்: ```bash omniroute contexts list # அனைத்து சூழல்களும்; செயலில் உள்ள ஒன்று ● எனக் குறிக்கப்படும் omniroute contexts current # செயலில் உள்ள சர்வர், அங்கீகார நிலை, நோக்கம் ``` ```text | பெயர் | அடிப்படை URL | அங்கீகாரம் | நோக்கம் | விளக்கம் ● | vps | http://100.67.86.91:20128 | token | admin | ரிமோட் ஆம்னிரூட் (…) | default | http://localhost:20128 | ✗ | | ``` **சர்வர்களை மாற்றவும்** — ஒவ்வொரு அடுத்தடுத்த கட்டளையும் செயலில் உள்ள சூழலைப் பின்பற்றும்: ```bash omniroute contexts use vps # → இப்போது அனைத்து கட்டளைகளும் ரிமோட் VPS ஐ அடையும் omniroute tokens list # (VPS க்கு எதிராக இயங்கும்) omniroute contexts use default # → லோக்கல்ஹோஸ்டுக்குத் திரும்பவும் omniroute tokens list # (லோக்கல் சர்வருக்கு எதிராக இயங்கும்) ``` **ஒரு சூழலை கைமுறையாகச் சேர்க்கவும்** (`connect` க்குப் பதிலாக), ஆய்வு செய்யவும் அல்லது மறுபெயரிடவும்: ```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 # ஒரு சூழலுக்கான முழு விவரங்கள் omniroute contexts rename staging stg ``` **ஒரு சூழலை அகற்றவும்** — உறுதிப்படுத்தல் கேட்கும்; அதைத் தவிர்க்க `--yes` ஐ அனுப்பவும் (ஸ்கிரிப்ட்கள் / ஊடாடாத ஷெல்களுக்குத் தேவை, இல்லையெனில் பாதுகாப்பாக மறுக்கும்): ```bash omniroute contexts remove stg --yes ``` > `default` (localhost) ஐ அகற்ற முடியாது. செயலில் உள்ள சூழலை அகற்றுவது `default` க்குத் திரும்பும். குறிப்பு: ஒரு சூழலை அகற்றுவது **உள்ளூர்** சேமிக்கப்பட்ட நற்சான்றிதழை மட்டுமே நீக்கும் — அணுகலை முழுமையாக நிறுத்த `omniroute tokens revoke ` ஐப் பயன்படுத்தி சர்வரில் டோக்கனை ரத்து செய்யவும். **சூழல்களை ஏற்றுமதி / இறக்குமதி செய்யவும்** (எ.கா. அவற்றை இயந்திரங்களுக்கு இடையில் நகர்த்த). ஏற்றுமதிகள் இயல்புநிலையாக நற்சான்றிதழ்களைத் தவிர்த்துவிடும், கோப்பு பின்னடைவால் சேமிக்கப்பட்ட நற்சான்றிதழ்கள் உட்பட. போர்ட்டபிள் நற்சான்றிதழ் கொண்ட காப்புப்பிரதி தேவைப்படும்போது `--include-secrets` ஐ வெளிப்படையாகப் பயன்படுத்தவும்: ```bash omniroute contexts export --out contexts.json # திருத்தப்பட்டது; இயல்புநிலை இலக்கு: stdout omniroute contexts export --include-secrets --out private-contexts.json omniroute contexts import contexts.json # மேலெழுதவும்; ஏற்கனவே உள்ளதை வைத்திருக்க --merge omniroute contexts migrate --yes # பழைய தெளிவான டோக்கன்களை கீசெயினுக்கு நகர்த்தவும் ``` `--include-secrets` ஏற்றுமதி செய்வதற்கு முன் கீசெயின் குறிப்புகளைத் தீர்க்கிறது மற்றும் குறிப்பிடப்பட்ட எந்த நற்சான்றிதழையும் படிக்க முடியாவிட்டால் தோல்வியடையும். `--no-secrets` எப்போதும் முன்னுரிமை பெறும். ஏற்றுமதி கோப்புகள் `0600` பயன்முறையுடன் அணுத்தன்மையுடன் எழுதப்படுகின்றன. வெளிப்படையான ரகசியம் கொண்ட ஏற்றுமதியை ரகசியப் பொருளாகக் கருதவும். பயன்படுத்தக்கூடிய OS கீசெயின் இல்லாத ஹெட்லெஸ் சிஸ்டம்களில், CLI `0600` பயன்முறையுடன் `config.json` க்குத் திரும்புகிறது மற்றும் ஒரு முறை எச்சரிக்கையை அச்சிடுகிறது; இந்த பயன்முறையில் ஒரு இயல்புநிலை ஏற்றுமதி திருத்தப்பட்டதாகவே இருக்கும். --- ## விரைவான முழுமையான சரிபார்ப்பு தொலைநிலை அமைப்பை ஆரம்பத்திலிருந்து சரிபார்ப்பதற்கான நகலெடுத்து ஒட்டக்கூடிய வாழ்க்கைச் சுழற்சி — இணைத்தல், குறிப்பிட்ட வரம்புடைய token-ஐ உருவாக்குதல், ஒரு கட்டளையை வழிமாற்றுதல், மீண்டும் மாறுதல் மற்றும் அமைப்பை அகற்றுதல். `192.168.0.15`-ஐ உங்கள் சேவையகத்தின் host/IP-ஆல் (Tailscale, LAN அல்லது பொது `https://…` URL) மாற்றவும். ```bash # 1. இணைக்கவும் (கடவுச்சொல் → admin token, செயலில் உள்ள சூழலாகச் சேமிக்கப்படும்) omniroute connect 192.168.0.15 # அல்லது: --key oma_live_xxxx (கடவுச்சொல் இல்லை) omniroute contexts current # தொலைநிலைச் சேவையகம் + வரம்பைக் காட்டும் # 2. அதைப் பயன்படுத்தவும் — இப்போது மேலாண்மைக் கட்டளைகள் தொலைநிலைக்கு எதிராக இயங்கும் omniroute tokens create --name laptop --scope read # குறுகிய வரம்புடைய token-ஐ உருவாக்கும் omniroute tokens list # தொலைநிலையிலிருந்து மறைக்கப்பட்ட பட்டியல் # 3. முன்னும் பின்னும் மாறவும் omniroute contexts use default # → உள்ளூர் omniroute contexts use 192-168-0-15 # → மீண்டும் தொலைநிலை (`contexts list`-இலிருந்து பெயர்) # 4. அமைப்பை அகற்றவும். குறிப்பு: `contexts remove` உள்ளூர் நற்சான்றை மட்டுமே நீக்கும் — # அது சேவையகத்திலுள்ள token-ஐ ரத்துசெய்யாது. அணுகலை உண்மையில் # முடக்க விரும்பினால் முதலில் சேவையகப் பக்கத்தில் ரத்துசெய்யவும். omniroute tokens revoke # சேவையகத்திலுள்ள அணுகலை முடக்கும் omniroute contexts remove 192-168-0-15 --yes # உள்ளூர் சூழலை நீக்கும் (செயலில் இருந்தாலும் → default-க்குத் திரும்பும்), உறுதிப்படுத்தல் இல்லை ``` > `--yes` ஆனது `contexts remove`-ஐ ஊடாடாததாக மாற்றுகிறது (ஸ்கிரிப்ட்கள்/CI-இல் அவசியம்; அது இல்லாமல், > ஊடாடாத shell காத்துக்கொண்டிருப்பதற்குப் பதிலாகப் பாதுகாப்பாக மறுக்கும்). **செயலில் உள்ள** > சூழலை அகற்றினால் தானாகவே `default`-க்குத் திரும்பும். --- ## பாதுகாப்புக் குறிப்புகள் - டோக்கனின் எளிய உரை ஒருமுறை மட்டுமே காட்டப்படும்; SHA-256 ஹாஷ் மட்டுமே நிலையாகச் சேமிக்கப்படும் (API விசைகளைப் போலவே). - `omniroute connect`, உள்நுழைவு முரட்டுத் தாக்குதல் தடுப்பு + தணிக்கைப் பதிவைப் பயன்படுத்துகிறது. - போக்குவரத்துக்கு HTTPS அல்லது Tailnet-ஐப் பயன்படுத்துவது சிறந்தது; LAN/Tailscale வசதிக்காக வெறும் ஹோஸ்ட் இயல்பாக `http://` என்பதைப் பயன்படுத்தும் — TLS-க்கு முழுமையான `https://…` URL-ஐ வழங்கவும். - விரும்பத்தக்க உள்ளூர் சூழல் கோப்பு `~/.omniroute/config.json` (`chmod 600`); அதில் `credentialRef` மட்டுமே இருக்கும்; டோக்கன் OS சாவிக்கொத்தில் (`keytar`) சேமிக்கப்படும், மேலும் அது பதிவுகளில் ஒருபோதும் அச்சிடப்படாது. செயல்படும் சொந்த சாவிக்கொத்து இல்லாத திரையற்ற நிறுவல்கள், அதே `0600` கோப்பை வெளிப்படையான மாற்று ஏற்பாடாகப் பயன்படுத்தி, ஒருமுறை எச்சரிக்கையை வெளியிடும். சாவிக்கொத்து பின்தளத்தை நிறுவிய பிறகு `omniroute contexts migrate --yes`-ஐப் பயன்படுத்தவும். --- ## API முனைப்புள்ளிகள் (குறிப்பு) | முறை | வழித்தடம் | அங்கீகாரம் | அணுகல் வரம்பு | | ------ | --------------------- | -------------------- | ------------------------------------------ | | POST | `/api/cli/connect` | நிர்வாகக் கடவுச்சொல் | — (பொது, கடவுச்சொல்லால் பாதுகாக்கப்பட்டது) | | GET | `/api/cli/whoami` | அணுகல் டோக்கன் | படித்தல் | | GET | `/api/cli/tokens` | அணுகல் டோக்கன் | நிர்வாகம் | | POST | `/api/cli/tokens` | அணுகல் டோக்கன் | நிர்வாகம் | | DELETE | `/api/cli/tokens/:id` | அணுகல் டோக்கன் | நிர்வாகம் | முழுமையான திட்டவரைவுகளுக்கு [openapi.yaml](../openapi.yaml)-ஐப் பார்க்கவும்.