# Environment Variables Reference (தமிழ்)
🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/docs/reference/ENVIRONMENT.md) · 🇦🇿 [az](../../../az/docs/reference/ENVIRONMENT.md) · 🇧🇬 [bg](../../../bg/docs/reference/ENVIRONMENT.md) · 🇧🇩 [bn](../../../bn/docs/reference/ENVIRONMENT.md) · 🇧🇦 [bs](../../../bs/docs/reference/ENVIRONMENT.md) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇰 [sk](../../../sk/docs/reference/ENVIRONMENT.md) · 🇸🇮 [sl](../../../sl/docs/reference/ENVIRONMENT.md) · 🇷🇸 [sr](../../../sr/docs/reference/ENVIRONMENT.md) · 🇸🇪 [sv](../../../sv/docs/reference/ENVIRONMENT.md) · 🇰🇪 [sw](../../../sw/docs/reference/ENVIRONMENT.md) · 🇮🇳 [te](../../../te/docs/reference/ENVIRONMENT.md) · 🇹🇭 [th](../../../th/docs/reference/ENVIRONMENT.md) · 🇹🇷 [tr](../../../tr/docs/reference/ENVIRONMENT.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/ENVIRONMENT.md) · 🇵🇰 [ur](../../../ur/docs/reference/ENVIRONMENT.md) · 🇺🇿 [uz](../../../uz/docs/reference/ENVIRONMENT.md) · 🇻🇳 [vi](../../../vi/docs/reference/ENVIRONMENT.md) · 🇳🇬 [yo](../../../yo/docs/reference/ENVIRONMENT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md)
---
> OmniRoute அங்கீகரிக்கும் ஒவ்வொரு சூழல் மாறிக்குமான முழுமையான குறிப்பு.
> விரைவாகத் தொடங்குவதற்கான வார்ப்புருவுக்கு, [`.env.example`](../../.env.example)-ஐப் பார்க்கவும்.
> [!IMPORTANT]
> இங்கு ஆவணப்படுத்தப்பட்டுள்ள ஒவ்வொரு மாறியும் `.env.example`-இலும் இடம்பெற வேண்டும், மேலும்
> `.env.example`-இல் உள்ள ஒவ்வொரு மாறியும் இங்கும் இடம்பெற வேண்டும். `npm run check:env-doc-sync`
> இதை commit செய்யும்போதும் CI-இலும் கட்டாயப்படுத்துகிறது. ஒரு மாறியை வேண்டுமென்றே தவிர்க்க, அதை
> `scripts/check/check-env-doc-sync.mjs`-இல் உள்ள அனுமதிப்பட்டியலில் சேர்க்கவும்.
---
## உள்ளடக்க அட்டவணை
- [1. தேவையான இரகசியங்கள்](#1-required-secrets)
- [2. சேமிப்பகம் & தரவுத்தளம்](#2-storage--database)
- [3. பிணையம் & போர்ட்கள்](#3-network--ports)
- [4. பாதுகாப்பு & அங்கீகாரம்](#4-security--authentication)
- [5. உள்ளீட்டுத் தூய்மைப்படுத்தல் & PII பாதுகாப்பு](#5-input-sanitization--pii-protection)
- [6. கருவி & வழிமாற்றுக் கொள்கைகள்](#6-tool--routing-policies)
- [7. URL-கள் & மேக ஒத்திசைவு](#7-urls--cloud-sync)
- [8. வெளிச்செல்லும் பதிலாள்](#8-outbound-proxy)
- [9. CLI கருவி ஒருங்கிணைப்பு](#9-cli-tool-integration)
- [10. உள் முகவர் & MCP ஒருங்கிணைப்புகள்](#10-internal-agent--mcp-integrations)
- [11. OAuth வழங்குநர் நற்சான்றுகள்](#11-oauth-provider-credentials)
- [12. வழங்குநர் User-Agent மேலெழுதல்கள்](#12-provider-user-agent-overrides)
- [13. CLI கைரேகை இணக்கத்தன்மை](#13-cli-fingerprint-compatibility)
- [14. API விசை வழங்குநர்கள்](#14-api-key-providers)
- [15. காலக்கெடு அமைப்புகள்](#15-timeout-settings)
- [16. பதிவிடுதல்](#16-logging)
- [17. நினைவக உகப்பாக்கம்](#17-memory-optimization)
- [18. விலை ஒத்திசைவு](#18-pricing-sync)
- [19. மாதிரி ஒத்திசைவு (Dev)](#19-model-sync-dev)
- [20. வழங்குநர்-சார்ந்த அமைப்புகள்](#20-provider-specific-settings)
- [21. பதிலாள் ஆரோக்கியம்](#21-proxy-health)
- [22. பிழைத்திருத்தம்](#22-debugging)
- [23. GitHub ஒருங்கிணைப்பு](#23-github-integration)
- [24. திறன்கள் தனிமச்சூழல் (v3.8.0+)](#24-skills-sandbox-v380)
- [27. Radar ஊட்டம் (சுய-ஹோஸ்டிங்)](#27-radar-feed-self-hosting)
- [பயன்படுத்தல் சூழல்கள்](#deployment-scenarios)
- [தணிக்கை: அகற்றப்பட்ட / செயலற்ற மாறிகள்](#audit-removed--dead-variables)
---
## 1. தேவையான ரகசியங்கள்
**Yes** எனக் குறிக்கப்பட்ட, அமைக்கப்படாத ரகசியங்கள் முதல் இயக்கத்தில் தானாக உருவாக்கப்பட்டு (`JWT_SECRET`, `API_KEY_SECRET`) தரவு அடைவில் உள்ள `server.env`-க்கு நிலைநிறுத்தப்படும் — அந்த அடைவு நிலையற்றதாக இருந்தால் அவற்றை வெளிப்படையாக அமைக்கவும். விதிவிலக்கு `OMNIROUTE_WS_BRIDGE_SECRET`: இது `server.env`-க்கு நிலைநிறுத்தப்படுவதில்லை — சர்வர் நுழைவுப் புள்ளிகள் ஒவ்வொரு பூட்டிற்கும் ஒரு நிலையற்ற மதிப்பை உருவாக்குகின்றன, அதை in-process பிரிட்ஜ் மட்டுமே பயன்படுத்த முடியும், எனவே வெளிப்புற பிரிட்ஜ் கிளையண்டுகள் அதை வெளிப்படையாக அமைக்க வேண்டும்.
| மாறி | தேவை | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------- | -------------------- | ----------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | **Yes** | _(none)_ | `src/lib/auth` | அனைத்து டாஷ்போர்டு அமர்வு குக்கீகளையும் (JWT) கையொப்பமிடுகிறது/சரிபார்க்கிறது. `openssl rand -base64 48` மூலம் உருவாக்கவும். |
| `API_KEY_SECRET` | **Yes** | _(none)_ | `src/lib/db/apiKeys.ts` | SQLite-இல் ஓய்வு நிலையில் உள்ள API விசை மதிப்புகளுக்கான AES மறையாக்க விசை. `openssl rand -hex 32` மூலம் உருவாக்கவும். |
| `INITIAL_PASSWORD` | No | _(unset)_ | `src/lib/auth/managementPassword.ts` | இன்னும் எந்தக் கடவுச்சொல்லும் சேமிக்கப்படாத நிலையில், தொடக்கத்தில் டாஷ்போர்டு கடவுச்சொல்லை அமைக்கிறது; ஒரு கடவுச்சொல் சேமிக்கப்பட்ட பிறகு புறக்கணிக்கப்படும். npm மற்றும் மூல நிறுவல்கள் `.env.example`-ஐ `.env`-க்கு நகலெடுக்கின்றன, எனவே அவை அதன் பொதுவாக அறியப்பட்ட இடைநிலை மதிப்பான `CHANGEME`-உடன் தொடங்குகின்றன: முதல் பூட்டிற்கு முன் அதை மாற்றவும், அல்லது அந்த `.env`-இல் `INITIAL_PASSWORD=` (காலி) என அமைத்து, முதல் வருகையில் onboarding wizard-இல் கடவுச்சொல்லை உருவாக்கவும் — அமைக்கப்படாத மதிப்பு (Docker image-இன் இயல்புநிலை) செய்வது போல. சேமிக்கப்பட்ட கடவுச்சொல்லை Dashboard → Settings → Security-இல் மாற்றவும், அல்லது `DATA_DIR` சர்வரின் தரவு அடைவுக்கு அமைக்கப்பட்ட நிலையில் `omniroute reset-password` (மூல checkout-இல் `node bin/reset-password.mjs`) இயக்கவும். |
| `OMNIROUTE_WS_BRIDGE_SECRET` | **Yes** (production) | _(unset)_ | `src/app/api/internal/codex-responses-ws/route.ts` | உள் Codex Responses WebSocket பிரிட்ஜிற்கான பகிரப்பட்ட ரகசியம். Electron/உலாவி WS relay மற்றும் OmniRoute இடையேயான பிரிட்ஜ் கோரிக்கைகளை அங்கீகரிக்கிறது. ⚠️ **உற்பத்தியில் கட்டாயம் — அமைக்கப்படாவிட்டால், அனைத்து WS பிரிட்ஜ் கோரிக்கைகளும் நிராகரிக்கப்படும்.** `openssl rand -base64 32` மூலம் உருவாக்கவும். |
| `OMNIROUTE_SW_BUILD_ID` | No | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PWA ஷெல்லிற்கான வெளிப்படையான service-worker cache-busting id (#11779); தீர்மானச் சங்கிலியில் முதன்மையானது. |
| `SOURCE_VERSION` | No | _(unset)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | சங்கிலியில் இரண்டாவது — வெளியிடப்பட்ட commit ஆக PaaS பில்டர்களால் (எ.கா. Heroku-பாணி) அமைக்கப்படுகிறது. |
| `NEXT_PUBLIC_SW_BUILD_ID` | No | _(derived)_ | `src/shared/components/PwaRegister.tsx` | `/sw.js?v=…`-ஐப் பதிவு செய்ய கிளையண்ட் பயன்படுத்தும் பில்ட்-நேர பொது மதிப்பு; மேலே உள்ள இரண்டிலிருந்து பெறப்படுகிறது, பின்னர் git SHA. |
| `OMNIROUTE_PEER_STAMP_TOKEN` | No (auto) | _(auto per boot)_ | `src/server/authz/policies/management.ts` | நம்பகமான peer-IP முத்திரை OmniRoute-இன் சொந்த HTTP சர்வரிலிருந்து (`scripts/dev/peer-stamp.mjs`) வந்தது என நிரூபிக்கும் ஒவ்வொரு செயல்முறைக்குமான ரகசியம். authz மிடில்வேர் கோரிக்கை இருப்பிடத்தை (LOCAL_ONLY வழிகளின் loopback/LAN கட்டுப்பாடு) நம்புகிறது, முத்திரை இந்த டோக்கனைக் கொண்டிருக்கும்போது மட்டுமே. ஒவ்வொரு பூட்டிலும் தானாக உருவாக்கப்படும் — அமைக்காமல் விடவும்; முத்திரையைப் பகிர வேண்டிய பல-செயல்முறை அமைப்புகளுக்கு மட்டும் அதை நிலைநிறுத்தவும். |
| `OMNIROUTE_TRUSTED_PROXIES` | No | _(unset)_ | `scripts/dev/peer-stamp.mjs` | IP allow/deny பட்டியல் நம்பக்கூடிய reverse proxy-களின் காற்புள்ளியால் பிரிக்கப்பட்ட IP-கள் அல்லது CIDR வரம்புகள் — இவற்றின் `X-Forwarded-For` / `X-Real-IP` நம்பலாம்; loopback, தனியுரிம நெட்வொர்க் முகவரிகள் மற்றும் Cloudflare எட்ஜ்கள் எப்போதும் நம்பப்படும். வேறு எந்தப் பொது முகவரியிலும் உள்ள ப்ராக்சிக்கு மட்டுமே தேவை; இல்லையெனில் அந்தப் ப்ராக்சியின் சொந்த முகவரியையே வடிகட்டி மதிப்பிடும். relay-இன் ஒவ்வொரு-கிளையண்ட் throttle (`/api/v1/relay/chat/completions`) அதே தீர்க்கப்பட்ட கிளையண்ட் முகவரியை அடிப்படையாகக் கொள்கிறது, forward செய்யும் தலைப்புகளை மட்டும் ஒருபோதும் கொள்ளாது. |
### உருவாக்கும் கட்டளைகள்
```bash
# நான்கு ரகசியங்களையும் ஒரே நேரத்தில் உருவாக்கவும்:
echo "JWT_SECRET=$(openssl rand -base64 48)"
echo "API_KEY_SECRET=$(openssl rand -hex 32)"
echo "INITIAL_PASSWORD=$(openssl rand -base64 16)"
echo "OMNIROUTE_WS_BRIDGE_SECRET=$(openssl rand -base64 32)"
```
> [!CAUTION]
> உண்மையான ரகசியங்களைக் கொண்ட `.env` கோப்புகளை ஒருபோதும் பதிப்புக் கட்டுப்பாட்டில் commit செய்ய வேண்டாம். `.gitignore` ஏற்கனவே `.env`-ஐ விலக்குகிறது, ஆனால் push செய்வதற்கு முன் சரிபார்க்கவும்.
---
## 2. சேமிப்பு & தரவுத்தளம்
OmniRoute அனைத்து நிலைத்தன்மைக்கும் **SQLite** ஐப் பயன்படுத்துகிறது (`better-sqlite3` வழியாக). இந்த மாறிகள் தரவு இருப்பிடம், குறியாக்கம் மற்றும் வாழ்க்கைச்சுழற்சியைக் கட்டுப்படுத்துகின்றன.
| Variable | Default | Source File | Description |
| ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | SQLite DB, காப்புப்பிரதிகள் மற்றும் தரவுக் கோப்புகளுக்கான ரூட் கோப்பகம். Docker volumes அல்லது தனிப்பயன் பாதைகளுக்கு மேலெழுதவும். |
| `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(அமைக்கப்படவில்லை)_ | `src/lib/dataPaths.ts` | டெஸ்ட்/eval DATA_DIR பாதுகாப்பின் (#10428) தப்பிச்செல்வழி. `DATA_DIR` இல்லாத டெஸ்ட்கள் மற்றும் Node eval/print ஆய்வுகள் (`-e`/`--eval`/`-p`/`--print`, `--eval=`/`--print=` வடிவங்கள் உட்பட) ஒருமுறை-பயன்பாட்டு தற்காலிக கோப்பகத்திற்குத் திருப்பிவிடப்படுகின்றன, இதனால் அவை இயக்குநரின் உண்மையான தரவுத்தளத்தைத் திறக்க முடியாது; உண்மையான கோப்பகத்திற்கு மீண்டும் சேர `1` என அமைக்கவும். |
| `OMNIROUTE_BUILD_SHA` | _(அமைக்கப்படவில்லை)_ | `src/lib/monitoring/buildSha.ts` | இயங்கும் ஆர்டிஃபாக்ட்டின் Git SHA. `npm run build:release` மூலம் முத்திரையிடப்படுகிறது; `dist/BUILD_SHA` சென்டினெல் இல்லாமல் வழங்கப்படும் கண்டெய்னர்களில் செலுத்தக்கூடியது. `/api/monitoring/health` இல் `system.buildSha` ஆக வெளிப்படுகிறது. |
| `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | pack-artifact provenance கேட் பில்�ட் SHA ஐ ஒப்பிட்டுச் சரிபார்க்கும் ref (#10427). |
| `OMNIROUTE_ALLOW_CANARY_BUILD` | _(அமைக்கப்படவில்லை)_ | `scripts/build/buildProvenance.ts` | வெளியீட்டு வரிசையில் இல்லாத SHA கொண்ட பில்டை பேக் செய்ய அனுமதிக்க `1` என அமைக்கவும் — கேட்டைத் தோல்வியுறச் செய்வதற்குப் பதிலாக அதை வேண்டுமென்றே செய்யப்பட்ட canary ஆகப் பதிவு செய்கிறது (#10427). |
| `OMNIROUTE_SMOKE_API_KEY` | _(அமைக்கப்படவில்லை)_ | `scripts/ops/deploy-canary.mjs` | canary-deploy smoke ஆய்வுக்கான API key, `/v1/chat/completions` இல் `Authorization: Bearer` ஆக அனுப்பப்படுகிறது. deploy ஸ்கிரிப்ட் (#10429) மட்டுமே பயன்படுத்துகிறது, சர்வர் ஒருபோதும் அல்ல. opt-in CLI smoke harness இன் `OMNIROUTE_SMOKE_*` மாறிகளுடன் (`tests/integration/upstream-cli-smoke.int.test.ts` இல் `RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS`) தொடர்பில்லை — [CLI ஒருங்கிணைப்புகள் → நிஜ smoke sweep](../guides/CLI-INTEGRATIONS.md) ஐப் பார்க்கவும். |
| `OMNIROUTE_BUILDING` | _(அமைக்கப்படவில்லை)_ | `src/lib/buildPhase.ts` | பில்டு-கட்ட சமிக்ஞை (#10060): `scripts/build/build-next-isolated.mjs` மூலம் `1` என அமைக்கப்பட்டு, உருவாக்கப்படும் ஒவ்வொரு பில்டு worker உம் பெறுகிறது, இதனால் DB அடுக்கு நேட்டிவ் better-sqlite3 addon ஐ ஏற்றுவதற்குப் பதிலாக (அது worker வெளியேறும்போது அதை abort செய்துவிடும்) no-op stub ஐத் திருப்பிக் கொடுக்கிறது. இயங்கும் சர்வருக்கு ஒருபோதும் அமைக்காதீர்கள். |
| `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | அசாதாரணமான vendored tree களுக்கான விருப்ப நேட்டிவ்-சார்பு prebuild சரிபார்ப்பைத் தவிர்க்க `1` என அமைக்கவும். இது காணாமல் போன சார்பை பில்ட் செய்யக்கூடியதாக மாற்றாது; நேட்டிவ் சார்புகள் வெளிப்புறமாக வழங்கப்படும்போது மட்டுமே பயன்படுத்தவும். |
| `OMNIROUTE_DATA_DIR` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/promptql/threadSticky.ts` | `DATA_DIR` க்கான **மாற்று புனைப்பெயர்**, `DATA_DIR` அமைக்கப்படாதபோது மட்டுமே சரிபார்க்கப்படுகிறது. PromptQL executor இன் வட்டில்-உள்ள thread-sticky அமர்வு கேஷ் ஐ (`
/promptql-thread-sessions.json`) கண்டறியப் பயன்படுகிறது; இரண்டு மாறிகளும் அமைக்கப்படாவிட்டால், கேஷ் நினைவகத்தில் மட்டுமே இருக்கும் (மறுதொடக்கங்களுக்கு இடையில் நிலைத்திருக்காது). |
| `OMNIROUTE_PLUGINS_DIR` | _(அமைக்கப்படவில்லை)_ | `src/lib/plugins/scanner.ts` | **ரன்டைம் பிளகின் ஸ்கேனர்** படிக்கும் கோப்பகம் — மேலும் பிளகின் மேலாளர் நிறுவுகிற ரூட் — ஹோம்-சார்ந்த இயல்புநிலையை மேலெழுதுகிறது (#11827). ஸ்கேன் பாதையை மாற்றுவதற்காக மட்டும் HOME ஐ நகர்த்துவதற்குப் பதிலாக (HOME மற்ற அனைத்து ஹோம்-சார்ந்த நடத்தைகளையும் நிர்வகிக்கிறது), இதை Docker/K8s இல் bind-mount செய்யப்பட்ட பிளகின் tree க்கு நோக்கவும். அமைக்கப்படாதபோது = `~/.omniroute/plugins`, அல்லது செயல்முறை எந்த ஹோமையும் ஏற்றுமதி செய்யாதபோது `/tmp/.omniroute/plugins` — இதுவே இந்த மாறி நீக்கும் அமைதியான கண்டறியாமை. தீர்மானிக்கப்பட்ட கோப்பகம் தொடக்கத்தில் ஒருமுறை வெற்றிபெற்ற உள்ளீட்டுடன் `scanner.dir_resolved` எனப் பதிவு செய்யப்படுகிறது. சர்வர் பக்கம் மட்டும்: CLI கட்டளை பிளகின்கள் தங்கள் சொந்த `OMNIROUTE_PLUGIN_PATH` ஐ வைத்திருக்கின்றன (பிரிவு 9). |
| `STORAGE_ENCRYPTION_KEY` | _(வெற்று = முடக்கப்பட்டது)_ | `src/lib/db/encryption.ts` | ஓய்வு நிலையில் முழு SQLite தரவுத்தள என்க்ரிப்ஷனுக்கான AES விசை. `openssl rand -hex 32` மூலம் உருவாக்கவும். |
| `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | என்க்ரிப்ஷன் விசைக்கான பதிப்பு லேபிள். பழைய காப்புப்பிரதிகளை டிக்ரிப்ட் செய்வதை ஆதரிக்க விசை சுழற்சி (key rotation) செய்யும்போது இதை அதிகரிக்கவும். |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | `true` என இருக்கும்போது, வழக்கமான/எழுத்துக்கு முந்தைய SQLite கோப்பு காப்புப்பிரதிகளை (models.dev விலை சேமிப்பு/அழிப்பு, அமைப்பு எழுத்துகள்) தவிர்க்கிறது. கைமுறை மற்றும் மீட்டெடுப்புக்கு முந்தைய காப்புப்பிரதிகள் இன்னும் இயங்கும். இது ஏற்கனவே உள்ள நிரந்தர DB-க்கான migration runner-ன் கட்டாய நிலையான பாதுகாப்பு ஸ்னாப்ஷாட்டையோ அல்லது மாபெரும் migration காவலையோ **முடக்காது**. கைமுறை அல்லாத காப்புப்பிரதிகள் அதிகபட்சம் 60 நிமிடங்களுக்கு ஒருமுறை என கட்டுப்படுத்தப்படுகின்றன. டாஷ்போர்ட் **அமைப்புகள் → சேமிப்பகம்** வழக்கமான தானியங்கு காப்புப்பிரதியை சுயாதீனமாக முடக்கலாம். |
| `OMNIROUTE_SQLITE_SLOW_MS` | _(அமைக்கப்படவில்லை/அணைந்தது)_ | `src/lib/db/adapters/slowDiagnostics.ts` | மில்லிவினாடிகள்; 1-க்கு கீழான அல்லது எண்ணல்லாத மதிப்புகள் அணைந்த நிலையிலேயே இருக்கும்; அதிகபட்சம் 10 வினாடிகளுக்கு ஒருமுறை எச்சரிக்கிறது; லாக் வரியில் driver, operation மற்றும் elapsedMs மட்டுமே உள்ளது. |
| `OMNIROUTE_CRYPT_KEY` | _(அமைக்கப்படவில்லை)_ | `src/lib/db/encryption.ts` | `STORAGE_ENCRYPTION_KEY`-க்கான **பழைய மாற்றுப் பெயர்**. முதன்மை மாறி இல்லாதபோது மாற்றாக (fallback) ஏற்கப்படுகிறது. |
| `OMNIROUTE_API_KEY_BASE64` | _(அமைக்கப்படவில்லை)_ | `src/lib/db/encryption.ts` | **பழைய மாற்றுப் பெயர்** (Base64-குறியிடப்பட்ட வடிவம்) மாற்றாக ஏற்கப்படுகிறது. பயன்பாட்டுக்கு முன் தானாகவே டிகோட் செய்யப்படுகிறது. |
| `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(அமைக்கப்படவில்லை)_ | `src/lib/db/core.ts` | அவ்வப்போது நடைபெறும் SQLite ஹெல்த்செக் இடைவெளியை (ms) மேலெழுதுகிறது. அமைக்கப்படாதபோது, இயல்புநிலைகள் `NODE_ENV`-லிருந்து பெறப்படுகின்றன. |
| `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(நீக்கப்பட்டது)_ | `src/lib/db/walMaintenance.ts` | **நீக்கப்பட்டது.** அவ்வப்போது நேரடியாக இயங்கும் `wal_checkpoint(TRUNCATE)` பகிரப்பட்ட wal-index மேப்பிங்கை செல்லுபடியற்றதாக்கி SIGBUS (#13973) மூலம் செயல்முறையை செயலிழக்கச் செய்யலாம், எனவே ஷெட்யூலர் இனி இல்லை. இந்த மாறி செயலற்றது: நேர்மறை மதிப்பு ஒரு முறை மட்டும் நீக்கப்படும் எச்சரிக்கையை (deprecation warning) லாக் செய்கிறது, அதேசமயம் `0` அல்லது அமைக்கப்படாத நிலை அமைதியாக இருக்கும். WAL என்பது PASSIVE செக்பாயிண்டுகளால் (கீழே) பராமரிக்கப்பட்டு, ஷட்டவுன் செக்பாயிண்டால் truncate செய்யப்படுகிறது. |
| `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | அடிக்கடி நடைபெறும் `wal_checkpoint(PASSIVE)` இடைவெளியை (ms) மேலெழுதுகிறது. நிலுவையிலுள்ள WAL ஃபிரேம்களை சிறியதாக வைத்திருக்கிறது, இதனால் செக்பாயிண்டுகள் வேகமாக இருக்கும் மற்றும் ஷட்டவுன் truncate-களுக்கு இடையில் WAL கோப்பு எல்லைக்குள் இருக்கும். `0` முடக்குகிறது. |
| `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | PASSIVE டிக் ஒன்று WAL கோப்பை இந்த அளவுக்கு மேலே கண்டால், மேப் செய்யப்பட்ட wal-index-ஐ மீளெழுதாமல் WAL மீண்டும் தொடங்குமாறு `wal_checkpoint(RESTART)` ஐ இயக்குகிறது. நேரடி truncate-முறை செக்பாயிண்டுகள் நீக்கப்பட்டன (`OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` வரிசையைப் பார்க்கவும்). |
| `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | critical resource pressure `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` காலம் தொடர்ந்த பிறகு செயல்முறையிலிருந்து வெளியேற `1`/`true`/`yes`/`on` என அமைக்கவும்; இதனால் காலவரம்பின்றி 503-களை வழங்குவதற்குப் பதிலாக ஒரு supervisor (systemd `Restart=always`, Docker restart policy) சுத்தமான செயல்முறையை மீண்டும் கொண்டுவர அனுமதிக்கிறது. |
| `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | சுய-மறுதொடக்க வெளியேற்றம் செயல்படுவதற்கு முன் critical pressure எவ்வளவு நேரம் நீடிக்க வேண்டும். |
| `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | இந்த செயல்முறை நன்றாக இருக்கும்போது சத்தமான அண்டை (noisy neighbor) 503-களை ஏற்படுத்தும்போது, ஹோஸ்ட்-முழுவதுமான `/proc/pressure/memory` (`psi_some` / `psi_full`) ஐ புறக்கணிக்க `1`/`true`/`yes`/`on` என அமைக்கவும் (#13124). Cgroup மற்றும் V8 heap காவலர்கள் இயக்கத்திலேயே இருக்கும். PSI என்பது `cgroup_high`-க்கான kernel throttle ஆதாரமாக எண்ணப்படுவதையும் நிறுத்துகிறது: `memory.high`-க்கு மேலே உள்ள cgroup மொத்தம் பின்னர் `memory.events`-ல் `high`/`max` அதிகரிப்பில் மட்டுமே critical ஆக மாறும். `memory.events` இல்லாமல், மூல விகிதம் (raw ratio) அப்படியே வைத்திருக்கப்படுகிறது. |
| `OMNIROUTE_SQLJS_WASM_PATH` | _(தானியங்கு கண்டறிதல்)_ | `src/lib/db/adapters/sqljsAdapter.ts` | `sql.js` WASM fallback அடாப்டரைப் பயன்படுத்தும்போது `sql-wasm.wasm`-க்கான வெளிப்படையான பாதை (முழுமையானது அல்லது cwd-க்கு சார்பு). அமைக்கப்படாதபோது பேக்கேஜ் சார்புகள் மற்றும் வாய்ப்புள்ள அமைப்புகள் (candidate layouts) வழியாக தானாகவே கண்டறியப்படுகிறது. |
| `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | முடிவுற்ற (completed/failed/cancelled/expired) Batch API பணியின் checkpoints, குறிப்பிடப்பட்ட input/output/error கோப்புகள் மற்றும் row ஆகியவை தானியங்கி cleanup sweep ஆல் நீக்கப்படுவதற்கு முன் எத்தனை நாட்கள் வைக்கப்படும் என்பதைக் குறிக்கிறது. `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` இயக்கப்பட்ட பிறகே இது செயல்படும்; OpenAI-இன் சொந்த Batch API output retention window-ஐ இது ஒத்துள்ளது. ஆபரேட்டரால் தூண்டப்படும் `DELETE /api/v1/batches/delete-completed` route-ஐ இது பாதிக்காது; அது வடிவமைப்பின்படி நிபந்தனையற்றதாக (வயது வடிகட்டி இல்லாமல்) இருக்கும். |
| `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | `true` ஆக இருக்கும்போது, `OMNIROUTE_BATCH_RETENTION_DAYS`-ஐத் தாண்டிய முடிவுற்ற Batch API பணிகளையும் (அவற்றின் checkpoints-ஐயும்) தானியங்கி cleanup sweep நீக்க அனுமதிக்கும், மேலும் பதிவேற்றப்பட்ட கோப்புகளின் சொந்த `expires_at`-ஐத் தாண்டிய BLOB உள்ளடக்கத்தை அழிக்கும். இயல்பாக முடக்கப்பட்டுள்ளது: ஒரு ஆபரேட்டர் விருப்பம் தெரிவிக்கும் வரை ஒவ்வொரு தற்போதைய install-ம் இந்தத் தரவை முன்பு போலவே வைத்திருக்கும். இது dashboard-இல் திருத்தக்கூடிய feature flag-ம் ஆகும் — `docs/reference/FEATURE_FLAGS.md` → Runtime பார்க்கவும். |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | தொடக்கத்தில் DB healthcheck-ஐ முழுமையாகத் தவிர்க்க `1` ஆக அமைக்கவும். குறுகிய கால பணிகள் மற்றும் integration tests-க்கு பயனுள்ளது. |
| `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | சாதாரணமாகத் தவிர்க்கப்படும் நிலையிலும் (எ.கா., குறுகிய கால பணிகள்) DB healthcheck loop-ஐ கட்டாயம் இயக்க `1` ஆக அமைக்கவும். |
| `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | `npm install`-இன் போது native-runtime warm-up-ஐத் தவிர்க்க `1` ஆக அமைக்கவும். sqlite ஏற்கனவே build செய்யப்பட்ட CI/headless install-களில் பயனுள்ளது. |
| `OMNIROUTE_MIGRATIONS_DIR` | _(தானியங்கி கண்டறிதல்)_ | `src/lib/db/migrationRunner.ts` | migration runner scan செய்யும் directory-ஐ மேலெழுதலாம். custom builds-இல் bundled migrations வழங்கும்போது பயனுள்ளது. |
| `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(அமைக்கப்படவில்லை)_ | `src/lib/db/migrationRunner/extraDirs.ts` | platform path delimiter-ஆல் பிரிக்கப்பட்ட `namespace=dir` உள்ளீடுகளாக கூடுதல் migration directories (எ.கா. `ee=/opt/app/enterprise/db/migrations`). அங்கு காணப்படும் கோப்புகள் `-` எனப் பதிவு செய்யப்படும், எனவே தனது சொந்த migrations-ஐ வழங்கும் distribution upstream numeric slots-உடன் ஒருபோதும் மோதாது. தவறான உள்ளீடு, செல்லாத namespace அல்லது இல்லாத directory ஆகியவை schema-ஐ அமைதியாகத் தவிர்க்காமல் தொடக்கத்தில் throw செய்யும். |
| `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Mass-pending-migrations பாதுகாப்பு வரம்பு (#3416). ஏற்கனவே உள்ள DB-இல் இதை விட அதிக migrations pending-ஆக இருந்தால் startup abort ஆகும் (அழிக்கப்பட்ட tracking table-க்கு எதிரான பாதுகாப்பு). பழைய backup-ஐ மீட்டெடுக்க இதை உயர்த்தவும்; சரிபார்ப்பை முடக்க `0` ஆக அமைக்கவும். |
| `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | `check:install-upgrade` release gate-க்கான working directory. இதற்கு சுமார் 12 GB தேவை (இரண்டு ~3 GB install trees மற்றும் tarball), எனவே சிறிய tmpfs-இல் இது இயங்கக்கூடாது — self-hosted runner-இல் `/tmp` என்பது 12 GB RAM-backed tmpfs ஆகும், gate அதை நிரப்பி package-ஐ truncate செய்தது. |
| `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(குறியீட்டில் இயல்புநிலை)_ | `src/lib/spend/batchWriter.ts` | batched spend/cost writer-க்கான flush interval (ms). குறைந்த மதிப்புகள் write coalescing-ஐக் குறைக்கும்; அதிக மதிப்புகள் DB contention-ஐக் குறைக்கும். |
| `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(குறியீட்டில் இயல்புநிலை)_ | `src/lib/spend/batchWriter.ts` | கட்டாய flush-க்கு முன் max buffered spend entries. அதிக QPS deployments-இல் உயர்த்தவும்; bounded memory முக்கியமானபோது குறைக்கவும். |
| `OMNIROUTE_PROXY_FETCH_DEBUG` | _(அமைக்கப்படவில்லை)_ | `open-sse/utils/proxyFetch.ts` | Vercel relay path-இல் `[ProxyFetch]` debug logs வெளியிட `"true"` ஆக அமைக்கவும். routing hints கசிவதைத் தவிர்க்க இயல்பாக முடக்கப்பட்டுள்ளது. |
| `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(அமைக்கப்படவில்லை)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | adopted கோப்பை மாற்றுவதற்கு முன் உருவாக்கப்பட்ட core configuration-ஐ சரிபார்க்கும் local proxy core binary-இன் (`sing-box` எனப் பெயரிடப்பட்ட கோப்பு) absolute path. அமைக்கப்படாவிட்டால் adopted கோப்பின் அருகில் `.generated` மட்டும் எழுதப்படும். Host environment மட்டும்: binary execute செய்யப்படுவதால், ஒருபோதும் database-இல் சேமிக்கப்படாது; management API மூலமும் ஏற்கப்படாது. |
| `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(அமைக்கப்படவில்லை)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | சரிபார்க்கப்பட்ட config replacement-க்குப் பிறகு local proxy core எவ்வாறு reload ஆகும்: shell இல்லாமல் இயக்கப்படும் JSON argument array, அல்லது வெளிப்புற observer கோப்பைப் பயன்படுத்தும்போது சரியாக `external`. ஒருபோதும் database-இல் சேமிக்கப்படாது, API மூலமும் வெளிப்படுத்தப்படாது. |
| `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | விரிவான `[ProxyEgress]` செயல்முறை-பதிவு வரியில் client/egress IP முகவரிகள் மற்றும் கணக்கு முன்னொட்டை சேர்க்க `"true"` அல்லது `"1"` என அமைக்கவும். செயல்முறை பதிவு IP முகவரிகள் அல்லது கணக்கு முன்னொட்டை கசியவிடாமல் இருக்க, இயல்பாக முடக்கப்பட்டுள்ளது. |
| `OMNIROUTE_DEBUG` | _(அமைக்கப்படவில்லை)_ | `bin/cli/commands/quota.mjs` | CLI quota கட்டளைகளிலிருந்து stderr-ல் ஒவ்வொரு கோரிக்கைக்குமான நேர அளவீட்டு நோய்கண்டறிதலை (`[omniroute] GET completed in Nms`) அச்சிட `1` என அமைக்கவும். |
| `OMNIROUTE_HEALTHCHECK_PATH` | _(தானியங்கு)_ | `scripts/dev/healthcheck.mjs` | கொள்கலன் நலச் சோதனையால் ஆராயப்படும் வெளிப்படையான பாதை. அமைக்கப்படாவிட்டால், ஆராய்வு அதை `OMNIROUTE_BASE_PATH`-லிருந்து தருவிக்கும்; அமைத்தால் ஆழ்ந்த கண்காணிப்பு இறுதிப்புள்ளியை மீண்டும் தேர்ந்தெடுக்கும். |
| `OMNIROUTE_DEBUG_COMPLETION` | _(அமைக்கப்படவில்லை)_ | `bin/cli/commands/completion.mjs` | CLI shell-completion தற்காலிக சேமிப்பு பாதைகளிலிருந்து (படித்தல்/புதுப்பித்தல்/எழுதுதல்) `[omniroute completion]` நோய்கண்டறிதலை வெளியிட எந்த வெற்றற்ற மதிப்பையும் அமைக்கவும். இயல்பாக அணைக்கப்பட்டுள்ளது — அந்த தற்காலிக சேமிப்புகள் அமைதியாக தோல்வியடைவதால், காணாமல் போன/சிதைந்த தற்காலிக சேமிப்பு ஒருபோதும் tab-completion-ஐ உடைத்துவிடாது. |
| `BATCH_RETRY_DURATION_MS` | `86400000` (24h) | `open-sse/services/batchProcessor.ts` | தனிப்பட்ட தொகுப்பு உருப்படிகளுக்கான அதிகபட்ச மீள்முயற்சி சாளரம் (ms). இந்த காலத்தை தாண்டிய உருப்படிகள் தோல்வியடைந்ததாக குறிக்கப்படும். |
| `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | தொகுப்பு உருப்படி மீள்முயற்சிகளில் exponential backoff-க்கான அடிப்படை தாமதம் (ms). |
| `BATCH_BACKOFF_MAX_MS` | `3600000` (1h) | `open-sse/services/batchProcessor.ts` | தொகுப்பு உருப்படி மீள்முயற்சிகளுக்கு இடையிலான exponential backoff-க்கான உச்சவரம்பு (ms). |
| `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | ஒரே நேரத்தில் செயலாக்கப்படும் தொகுப்புகளின் அதிகபட்ச எண்ணிக்கை. செயல்திறனை அதிகரிக்க உயர்த்தவும்; வீத-வரம்பு புயல்களை தவிர்க்க குறைவாக வைக்கவும். |
> [!IMPORTANT]
> ஏற்கனவே உள்ள நிரந்தர தரவுத்தளத்தை மாற்றுவதற்கு முன், இடம்பெயர்வு இயங்கி `DATA_DIR/db_backups/`-ன்
> கீழ் முழுமையான, உள்ளடக்க-முகவரியிடப்பட்ட நிழற்படத்தை வெளியிடுகிறது. வெளியீட்டுக்கு ஒரே கோப்பு
> முறைமையில், மேலெழுதாத வன் இணைப்புகள் மற்றும் நிலையான கோப்பு ஒத்திசைவை ஆதரிக்கும் கோப்பு முறைமை
> தேவை. POSIX ஹோஸ்ட்களுக்கு அடைவு ஒத்திசைவும் தேவை; Windows-ல், Node அடைவு கைப்பிடிகளை
> நிராகரிக்கலாம், எனவே OmniRoute வெளியிடப்பட்ட கோப்பை flush செய்து, அடைவு-உள்ளீட்டு
> ஒத்திசைவை சிறந்த முயற்சியாகக் கருதுகிறது.
> ஏற்றப்பட்ட `DATA_DIR` அந்த உத்தரவாதங்களை வழங்க முடியாவிட்டால், இடம்பெயர்வை பயன்படுத்துவதற்கு முன்
> தொடக்கம் மூடப்பட்ட முறையில் தோல்வியடையும். `DATA_DIR`-ஐ அந்த அடிப்படை வசதிகள் உள்ள தொகுதிக்கு
> நகர்த்தவும்; இடம்பெயர்வு பாதுகாப்பை தவிர்க்க
> `DISABLE_SQLITE_AUTO_BACKUP`-ஐ பயன்படுத்த வேண்டாம்.
### சூழ்நிலைகள்
| சூழ்நிலை | கட்டமைப்பு |
| -------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **உள்ளக மேம்பாடு** | அனைத்து இயல்புநிலைகளையும் அப்படியே விடவும். DB `~/.omniroute/omniroute.db`-ல் இருக்கும். |
| **Docker** | `DATA_DIR=/data` + `/data`-ல் ஒரு தொகுதியை ஏற்றவும். |
| **ஓய்வில் மறைகுறியாக்கம்** | `STORAGE_ENCRYPTION_KEY` அமைக்கவும் + விசையின் காப்புப்பிரதிகளை வைத்திருங்கள்! அதை இழப்பது = தரவை இழப்பது. |
| **CI/சோதனை** | `DATA_DIR=/tmp/omniroute-test` — தற்காலிகமானது, மறைகுறியாக்கம் தேவையில்லை. |
---
## 3. நெட்வொர்க் & போர்ட்கள்
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PORT` | `20128` | `src/lib/runtime/ports.ts` | Dashboard UI மற்றும் API endpoints இரண்டிற்குமான முதன்மை போர்ட் (ஒற்றை-போர்ட் பயன்முறை). |
| `OMNIROUTE_BASE_PATH` | _(வெற்று = root)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | OmniRoute-ஐ reverse proxy-க்குப் பின்னால் வழங்குவதற்கான URL துணைப்பாதை (Next.js `basePath`-ஐ அமைக்கிறது; auth redirects basePath-ஐ உணர்ந்தவை). எ.கா. `/omniroute`. Docker-இல், `docker build` போது மதிப்பு உட்பொதிக்கப்படுகிறது (`ARG OMNIROUTE_BASE_PATH`); முன்கூட்டியே உருவாக்கப்பட்ட root images-இல், Next.js துவங்குவதற்கு முன் container தொடக்கத்தில் ஒருமுறை வேறு runtime மதிப்பைப் பயன்படுத்தலாம். அதே துணைப்பாதையை உள்ளடக்கிய பொது origin-ஐ `NEXT_PUBLIC_BASE_URL`-இல் அமைக்கவும். |
| `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(வெற்று = root)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | `OMNIROUTE_BASE_PATH`-ன் உலாவியில் தெரியும் பிரதிபலிப்பு, build நேரத்தில் inline செய்யப்படுகிறது, இதனால் dashboard endpoint காட்சி `https://host/v1`-க்குப் பதிலாக `https://host/omniroute/v1` எனக் காட்டுகிறது. அமைக்கப்படாத போது `OMNIROUTE_BASE_PATH`-க்குத் திரும்புகிறது. மாற்றிய பிறகு மீண்டும் build செய்யவும் (Next `basePath` build-நேரத்தில் நிர்ணயிக்கப்படுகிறது). |
| `DASHBOARD_ALLOW_EMBED` | _(அமைக்கப்படவில்லை = ஒருபோதும் frame செய்ய முடியாது)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | HTML பக்கங்களின் opt-in iframe embedding. அமைக்கப்படாத போது, ஒவ்வொரு route-யும் `frame-ancestors 'none'` + `X-Frame-Options: DENY` உடன் வழங்கப்படுகிறது. `vscode` என அமைத்தால், பக்கங்கள் (dashboard, login, docs, landing) `frame-ancestors 'self' vscode-webview:` உடனும் `X-Frame-Options` இல்லாமலும் வழங்கப்படும், இதனால் VS Code Simple Browser அவற்றை வழங்க முடியும் (OmniCopilot-ன் `dashboardOpen: "editor"` பயன்முறை). API மேற்பரப்பு (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, root-நிலை aliases) எவ்வாறாயினும் கண்டிப்பான headers-ஐத் தக்கவைத்துக்கொள்கிறது. `vscode` மட்டுமே அங்கீகரிக்கப்படுகிறது — `1`/`true` இதை இயக்காது. Build-நேரம்: மாற்றிய பிறகு மீண்டும் build செய்யவும் (images-க்கு `docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode`; முன்கூட்டியே build செய்யப்பட்ட install-இல் இதை அமைப்பது எந்த விளைவையும் ஏற்படுத்தாது). |
| `API_PORT` | _(அமைக்கப்படவில்லை)_ | `src/lib/runtime/ports.ts` | அமைக்கப்படும்போது, `/v1/*` proxy API-ஐ இந்தத் தனிப் போர்டில் வழங்குகிறது. |
| `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | API போர்டுக்கான bind முகவரி. |
| `DASHBOARD_PORT` | _(அமைக்கப்படவில்லை)_ | `src/lib/runtime/ports.ts` | அமைக்கப்படும்போது, Dashboard UI-ஐ இந்தத் தனிப் போர்டில் வழங்குகிறது. |
| `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(முடக்கப்பட்டது)_ | `src/sse/utils/backpressure.ts` | ஒரே நேரத்தில் நடந்துகொண்டிருக்கும் chat இணைப்புகளை வரம்புக்குட்படுத்துகிறது; வரம்பை மீறிய கோரிக்கைகள் `Retry-After` உடன் `503` பெறுகின்றன. நேர்ம முழு எண் பாதுகாப்பை இயக்குகிறது; அமைக்கப்படாமல்/`0` இருப்பது அதை முடக்குகிறது. |
| `OMNIROUTE_INSTANCE_ID` | _(அமைக்கப்படவில்லை)_ | `src/shared/resilience/peerRouting.ts` | OmniRoute instances-ஐ சங்கிலியாக இணைக்கும்போது இந்த gateway-க்கான நிலையான, தனித்துவமான ID. உள்வரும் peer-loop சரிபார்ப்புகளை இயக்குகிறது. அனுமதிக்கப்பட்ட எழுத்துக்கள்: எழுத்துகள், இலக்கங்கள், `.`, `_`, `:`, மற்றும் `-`; அதிகபட்சம் 64 எழுத்துக்கள். |
| `OMNIROUTE_PEER_URLS` | _(அமைக்கப்படவில்லை)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | `X-OmniRoute-Peer-Trace` ஐப் பெறக்கூடிய கமாவால் பிரிக்கப்பட்ட OmniRoute அடிப்படை URL-கள். வெளிப்படையாக அனுமதிப்பட்டியலில் உள்ள upstream URL-கள் மட்டுமே peer மெட்டாடேட்டாவைப் பெறும்; மற்ற அனைத்து வழங்குநர்களும் பாதிக்கப்பட மாட்டார்கள். |
| `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | சங்கிலி கோரிக்கையில் ஏற்றுக்கொள்ளப்படும், முன்பு பார்வையிட்ட OmniRoute நிகழ்வுகளின் அதிகபட்ச எண்ணிக்கை (`1`-`32`). மீண்டும் வரும் நிகழ்வுகள் அல்லது தீர்ந்துபோன ஒதுக்கீடு HTTP `508 Loop Detected` ஐத் திருப்பும். |
| `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Docker production பயன்முறையில் டாஷ்போர்டுக்கான host-பக்க வெளியிடப்பட்ட போர்ட். |
| `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Docker production பயன்முறையில் API-க்கான host-பக்க வெளியிடப்பட்ட போர்ட். |
| `OMNIROUTE_PORT` | _(அமைக்கப்படவில்லை)_ | `src/lib/runtime/ports.ts` | Electron அல்லது பிற wrapper-களுக்குள் இயங்கும்போது `PORT` ஐ விட முன்னுரிமை பெறுகிறது. |
| `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | நிகழ்நேர WebSocket நேரடி கண்காணிப்பு சேவையகத்திற்கான போர்ட். |
| `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | நேரடி WebSocket சேவையகத்திற்கான bind முகவரி. LAN-இல் வெளிப்படுத்த `0.0.0.0` ஆக அமைக்கவும் (`LIVE_WS_ALLOWED_ORIGINS` ஐயும் கட்டமைக்கவும்). இணைப்புகள் டாஷ்போர்டு அமர்வு cookie அல்லது மேலாண்மை scope (`manage`/`admin`) கொண்ட Bearer API விசை மூலம் அங்கீகரிக்கப்படுகின்றன. |
| `LIVE_WS_ALLOWED_ORIGINS` | _(அமைக்கப்படவில்லை)_ | `src/server/ws/liveServer.ts` | நேரடி WebSocket திறக்க அனுமதிக்கப்பட்ட கமாவால் பிரிக்கப்பட்ட கூடுதல் origin-கள். Loopback டாஷ்போர்டு origin-கள் ஏற்கனவே இயல்பாக அனுமதிக்கப்பட்டுள்ளன. |
| `LIVE_WS_ALLOWED_HOSTS` | _(அமைக்கப்படவில்லை)_ | `src/server/ws/liveServerAllowList.ts` | நேரடி WebSocket origin-களுக்கு அனுமதிக்கப்பட்ட கமாவால் பிரிக்கப்பட்ட கூடுதல் hostname-கள். `LIVE_WS_ALLOWED_ORIGINS` (முழு origin URL-கள்) போல் அல்லாமல், host பகுதியை மட்டுமே பொருத்துகிறது — LAN/Tailscale அமைப்புகளுக்கு பயனுள்ளது. |
| `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(அமைக்கப்படவில்லை)_ | `src/hooks/useLiveDashboard.ts` | நேரடி டாஷ்போர்டு WebSocket-க்கான பொது URL (உலாவி பக்கம்). WS சேவையகத்தை reverse proxy அல்லது Cloudflare Tunnel மூலம் முன்னிலைப்படுத்தும்போது அமைக்கவும் (எ.கா. `wss://ws.my-ai.com/live-ws`); உலாவி `ws://hostname:20132` க்குப் பதிலாக அங்கு இணைக்கிறது. pathname பகுதியும் WebSocket மேம்பாட்டுப் பாதையாகப் பயன்படுத்தப்படுகிறது (இயல்புநிலை: `/live-ws`). |
| `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` and `scripts/start-ws-server.mjs` | நிகழ்நேர WebSocket சேவையகத்தை முடக்க `0` அல்லது `false` ஆக அமைக்கவும் (இயல்பாக இயக்கப்பட்டுள்ளது, loopback-இல் கட்டப்பட்டுள்ளது). தனித்த நேரடி WebSocket உதவி ஸ்கிரிப்ட்டை முடக்கும் CI/harness மாற்று. |
| `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | ஒவ்வொரு-(டோக்கன், IP) ரிலே விகித வரம்பு, கோரிக்கைகள்/நிமிடம். நினைவகத்தில், ஒவ்வொரு நிகழ்வுக்கும். `0` அல்லது எதிர்மறை மதிப்பு IP-பரிமாண கேட்டை முடக்குகிறது (டோக்கன்-வாரியான DB வரம்பு இன்னும் பொருந்தும்). |
| `NODE_ENV` | `production` | Next.js core | பதிவு விவர அளவு, தற்காலிக சேமிப்பு, பிழை விவர வெளிப்பாடு மற்றும் Next.js உகப்பாக்கங்களைக் கட்டுப்படுத்துகிறது. |
| `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — குறியீட்டு இயல்புநிலை) | `package.json` / Next.js 16 | Turbopack என்பது `npm run dev` மற்றும் `npm run build` ஆகியவற்றின் இயல்புநிலை பண்ட்லர் ஆகும் (2-3× வேகமான பில்டுகள், பெஞ்ச்மார்க் செய்யப்பட்டது). Windows-இல் நேட்டிவ் பைண்டிங் / பண்ட்லர்-பொருந்தக்கூடிய தன்மை பிரச்சனைகள் ஏற்படும்போது, **அல்லது RAM கட்டுப்படுத்தப்பட்ட இயந்திரங்களில்** webpack-க்குத் திரும்ப `0` என அமைக்கவும் — இந்த Next.js பதிப்பு வரிசையில் (16.2.x) Turbopack production பில்டுகள் பெரிய தொகுதி வரைபடங்களில் webpack-ஐ விட நினைவகத்தில் மிக அதிகமாக உச்சமடைவது அப்ப்ஸ்ட்ரீமில் அறியப்படுகிறது (Next 16.3 இன் Turbopack நினைவக-வெளியேற்றத் திருத்தம் இன்னும் நிலையானதல்ல); webpack மாற்று மிகக் குறைவாக உச்சமடைகிறது. #6409 ஐப் பார்க்கவும். **Docker இமேஜ் பில்டுகள் இயல்பாக `0` (webpack) ஆகும்**: `Dockerfile` `ARG OMNIROUTE_USE_TURBOPACK=0` என அறிவிப்பதால், வெற்று `docker build .` (Railway மற்றும் பிற ஒரே-கிளிக் ஹோஸ்டுகள், தற்காலிக சுய-ஹோஸ்டர்கள்) நினைவக-வரம்புடைய பில்டரில் OOM-kill ஆகாது; Turbopack மூலம் இமேஜை உருவாக்க `--build-arg OMNIROUTE_USE_TURBOPACK=1` ஐ அனுப்பவும். `docs/guides/DOCKER_GUIDE.md` → பில்ட்-நேர வளங்கள் ஐப் பார்க்கவும். |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(அமைக்கப்படவில்லை)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | தொடக்கத்தில் SQLite ஒருமைப்பாட்டு சுகப் பரிசோதனையைத் தவிர்க்க `1` என அமைக்கவும். பெரிய தரவுத்தளங்களில் வேகமான துவக்கத்திற்குப் பயனுள்ளது. |
| `NOTIFY_SOCKET` | _(அமைக்கப்படவில்லை)_ | systemd (sd_notify நெறிமுறை) | sd_notify ஒருங்கிணைப்புடன் சேவை அலகின் கீழ் செயல்முறை இயங்கும்போது systemd ஆல் அமைக்கப்படுகிறது; READY/WATCHDOG அறிவிப்புகளை அனுப்ப OmniRoute அதைப் படிக்கிறது (`OMNIROUTE_DISABLE_SD_NOTIFY` ஐப் பார்க்கவும்). பயனரால் ஒருபோதும் அமைக்கப்படாது. |
| `OMNIROUTE_DISABLE_SD_NOTIFY` | _(அமைக்கப்படவில்லை)_ | `scripts/dev/systemd-notify.mjs` | systemd அலகின் கீழ் இயங்கும்போது கூட systemd sd_notify (Type=notify / WatchdogSec=) ஐ முடக்க `1` என அமைக்கவும். systemd-க்கு வெளியே அறிவிப்பான் எப்படியும் செயல்படாததாக (no-op) இருக்கும். |
| `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | பின்னணி சான்று சுகப் பரிசோதனை திட்டமிடலாளரின் இடைவெளி (ms). குறைந்தபட்சம்: 10000 (10s). |
| `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | தற்காலிக சேமிக்கப்பட்ட சான்று சுக நிலையின் TTL (ms). |
| `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | வழங்குநர் இணைப்புகளின் பின்னணி அவ்வப்போகைய சோதனையை முடக்க `1` அல்லது `true` என அமைக்கவும். தேடல் வழங்குநர்கள் (`src/lib/providers/validation/searchProviders.ts`-இல் SEARCH_VALIDATOR_CONFIGS, எ.கா. `tavily-search`) எப்போதும் சோதனையிலிருந்து விலக்கப்படுகின்றனர் — அவர்களின் "சரிபார்ப்பு" ஒரு உண்மையான கட்டண அப்ப்ஸ்ட்ரீம் வினவல், எனவே அவர்கள் ஒருபோதும் டைமரில் சுகப் பரிசோதிக்கப்படுவதில்லை (#9970). |
| `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | அங்கீகரிக்கப்பட்ட அழைப்பாளர் `/api/monitoring/health?deep=1` ஐக் கோர அனுமதிக்க `1` என அமைக்கவும்; இது ஒவ்வொரு TTL-க்கும் ஒருமுறை completions மேற்பரப்பை மாதிரியெடுக்கிறது. அநாமதேய அழைப்பாளர்கள் ஒருபோதும் ஆய்வைத் தூண்டுவதில்லை. |
| `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | துவக்க நிகழ்வு-லூப் பதிவியின் நிறுத்த வாசல் (ms): இதைவிட நீளமான உறைதல், மீண்டும் இயங்கத் தொடங்கும்போது நினைவகம் மற்றும் in-flight எண்ணிக்கைகளுடன் ஒரு `event loop stalled` வரியைப் பதிவு செய்கிறது, மற்றும் `/api/monitoring/health`-இல் `eventLoopStall` எண்ணிக்கை/அதிகபட்சத்தை உயர்த்துகிறது. முடக்க `0` என அமைக்கவும்; படிக்க முடியாத அல்லது எதிர்மறை மதிப்பு `5000`-க்குத் திரும்பும். |
| `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Next.js dev/start சேவையகத்தின் பைண்ட் முகவரி. அமைக்கப்பட்டால் இயல்புநிலை `0.0.0.0`-ஐ மேலெழுதுகிறது. |
| `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Next.js ஐத் தொடங்கும்போது Playwright runner பயன்படுத்தும் bind முகவரி. Hermetic சோதனைகளுக்கு இயல்பாக `127.0.0.1` ஆகும். **`omniroute serve` க்குப் பயன்படுத்த வேண்டாம்** — அதற்குப் பதிலாக `OMNIROUTE_SERVER_HOST` ஐப் பயன்படுத்தவும் (POSIX shells `HOSTNAME` ஐ இயந்திரப் பெயருக்குத் தானாகவே அமைக்கும்; `.env` அதை மேலெழுத முடியாது). |
| `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | `omniroute serve` க்கான bind முகவரி. POSIX shell `HOSTNAME` மாறியுடன் மோதலைத் தவிர்க்கிறது (bash/zsh மூலம் எப்போதும் இயந்திரப் பெயருக்கு அமைக்கப்படும்). அமைக்கப்படாதபோது `0.0.0.0` க்குத் திரும்பும். (#6194) |
### போர்ட் முறைகள்
```
┌─────────────────────────── Single Port (default) ──────────────────────────┐
│ PORT=20128 │
│ → Dashboard: http://localhost:20128 │
│ → API: http://localhost:20128/v1/chat/completions │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Split Ports ─────────────────────────────────────┐
│ DASHBOARD_PORT=20128 │
│ API_PORT=20129 │
│ API_HOST=0.0.0.0 │
│ → Dashboard: http://localhost:20128 │
│ → API: http://0.0.0.0:20129/v1/chat/completions │
│ Use case: Expose API to LAN while restricting Dashboard to localhost. │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Docker Production ──────────────────────────────┐
│ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │
│ → Maps container ports to host ports in docker-compose.prod.yml. │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 4. பாதுகாப்பு & அங்கீகாரம்
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | மெஷின் ஃபிங்கர்பிரிண்டிங் க்காக ஹார்டுவேர் அடையாளங்காட்டிகளுடன் இணைக்கப்படும் Salt. தனிமைப்படுத்தலுக்காக ஒவ்வொரு deployment-லும் மாற்றவும். |
| `OMNIROUTE_CLI_SALT` | _(அமைக்கப்படவில்லை = `/cli-token-salt.json`-ல் சேமிக்கப்படும் ஒவ்வொரு நிறுவலுக்குமான சீரற்ற salt)_ | `src/lib/machineToken.ts` | உள்ளூர் CLI அங்கீகார டோக்கனை உருவாக்குவதற்கான HMAC salt. இந்த மதிப்பை அமைப்பது மெஷினில் உள்ள அனைத்து CLI டோக்கன்களையும் சுழற்றும், மேலும் எப்போதும் சேமிக்கப்பட்ட salt-ஐ விட முன்னுரிமை பெறும். `docs/security/CLI_TOKEN.md` ஐப் பார்க்கவும். |
| `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | அமர்வு cookie-களில் `Secure` கொடியை அமைக்கிறது. HTTPS பின்னால் இயங்கும்போது **கண்டிப்பாக `true` ஆக இருக்க வேண்டும்**. |
| `REQUIRE_API_KEY` | `false` | API middleware | `true` ஆக இருக்கும்போது, அனைத்து `/v1/*` ப்ராக்ஸி கோரிக்கைகளும் செல்லுபடியாகும் API key-ஐ உள்ளடக்கியிருக்க வேண்டும். **இந்த கொடி `GET /v1/models`-ஐ கட்டுப்படுத்தாது** — அது அதற்குப் பதிலாக டாஷ்போர்டு உள்நுழைவு நிலையை (`requireAuthForModels`) பின்பற்றுகிறது. எனவே `/v1/models`-இலிருந்து வரும் `401` என்பது inference பாதுகாக்கப்பட்டிருக்கிறது என்று அர்த்தமல்ல. `docs/security/INFERENCE_AUTH_POSTURE.md` ஐப் பார்க்கவும் (#13695). |
| `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | டாஷ்போர்டு UI-யில் முழு API key மதிப்புகளையும் வெளிப்படுத்த அனுமதிக்கிறது. டாஷ்போர்டு Feature Flags-இலிருந்து கட்டமைக்கக்கூடியது; பகிரப்பட்ட நிகழ்வுகளில் பாதுகாப்பு அபாயம். |
| `NO_LOG_API_KEY_IDS` | _(வெற்றது)_ | `src/lib/compliance/index.ts` | கோரிக்கை பதிவேற்றத்தைத் தவிர்க்கும் கமா-பிரிக்கப்பட்ட API key ID-கள் (GDPR இணக்கம்). |
| `DEFAULT_RATE_LIMIT_PER_DAY` | _(அமைக்கப்படவில்லை = வரம்பற்றது)_ | `src/shared/utils/apiKeyPolicy.ts` | `rate_limits` நெடுவரிசை null ஆக உள்ள API key-களுக்குப் பயன்படுத்தப்படும் திருப்பி-விடும் (fallback) நாள்தோறும் கோரிக்கை ஒதுக்கீடு. அமைக்கப்படாதது அல்லது வெற்றது: மறைமுக வரம்பு இல்லை (#2289, #11017). `0` உம் அதே (வரம்பற்றது). நேர்மறை முழு எண் N என்பது N/day, 5N/week, 20N/month-ஐ இயக்குகிறது. தவறான வடிவமைப்பு கொண்ட வெற்றில்லா மதிப்புகள் பழைய 1000/day, 5000/week, 20000/month சாளரங்களுக்குத் திரும்பும். |
| `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | அனுமதிக்கப்பட்ட அதிகபட்ச கோரிக்கை உடல் அளவு. இந்த வரம்பை மீறும் payload-களை நிராகரிக்கிறது. |
| `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | இந்த வாசலில் அல்லது அதற்கு மேல் உள்ள உண்மையான கோரிக்கை உடல்கள், JSON parsing-க்கு முன் atomic process-local heavyweight admission lease-ஐ எடுக்கும் (BYTE path, `POST /v1/responses` உட்பட). structure-heavy போலவே [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) ஆரோக்கியமான-headroom தப்பிச்செல்லல்; இன்னும் `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) ஆல் கட்டுப்படுத்தப்படுகிறது, எனவே [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) திரும்பாது. |
| `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | வரையறுக்கப்பட்ட உள்நுழைவின் போது வாசிக்கப்பட்ட பைட்டுகளுக்கு எதிராக விதிப்பட்ட சாட்-ரூட் கடுமையான வரம்பு, இதில் காணாமல் போன, தவறான அல்லது ஏமாற்றமான `Content-Length` உடன் உள்ள கோரிக்கைகளும் அடங்கும்; அதிக அளவு கொண்டவை `413`ஐ பெறும். |
| `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(unset — no request-count cap)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** இந்த பழமையான request-COUNT வரம்பு தெளிவாக அமைக்கும்போது மட்டுமே பிணைக்கப்படுகிறது. இயல்பாக (unset) விட்டால், எடைபொருந்திய சாட் அனுமதி பதிலாக `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` மூலம் கட்டுப்படுத்தப்படுகிறது — இது **ஒரே process** (ஒரு V8 heap) இல் உள்ள செயல்முறையின் நிஜ நினைவக மேம்பாதையை அடிப்படையாகக் கொண்டு தானாக கணிக்கப்பட்ட BYTE பட்ஜெட் ஆகும். இரண்டு ~750k-token `/v1/responses` ஓவர்லேப் கள் ~12 Gi heapஐ நிறுத்துகின்றன (#7849) — இது ஒரு **memory-budget** எச்சரிக்கை, கடுமையாக 2 என்ற உற்பத்தி அதிகபட்சத்தை அல்ல. ஒரு ஆரோக்கியமான செயல்முறை (heap shed விகிதத்தின் கீழே) கூடுதல் ஒரே நேரத்தில் நீளமான `/v1/responses` ஐ `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` மூலம் அனுமதிக்கலாம். பத்து மிக்க நீளான SSE கிளையன்கள் (40–50) என்பது heap + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110 ஆகும், “max 2” அல்ல. இச்சிறப்பை “use the host” ஆக செல்லாமல் கோருவது #7849ஐ மீண்டும் கொண்டு வரும். **heaps** ஐ **N independent `DATA_DIR`s** உடன் गुणப்படுத்தவும் (#11024); ஒரே SQLite கோப்பில் ஒருபொழுது `replicas>1` பயன்படுத்த வேண்டாம். |
| `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(auto-derived)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** தானாக கணிக்கப்பட்ட ingest byte பட்ஜெட்டிற்கு மீறல் (சிறிய V8/cgroup நினைவக மேம்பாதையின் 25% ஐ 8x தற்காலிக உயர்த்தலால் பிரிக்கப்பட்டது). கணிக்கப்பட்ட மற்றும் வெளிப்படையான மதிப்புகள் 8 MiB–2 GiB என்பவரை கட்டடிக்கின்றன. ஒரு உடல் இந்த பயனுள்ள பட்ஜெட்டைவிட பெரியதாக இருந்தால் உடனடியாக `413 body_exceeds_budget` உடன் தோல்வியடையும்; தனியாக சேவை செய்யக்கூடிய உடல்களுக்கிடையில் மோதல் மீண்டும் முயற்சிக்கக்கூடிய `503` ஆகும். 40–50 ஒரே நேரத்தில் நீளமான SSE கிளையன்கள் இதே பட்ஜெட் + heap ஆகும், “max 2” என்ற கடுமையான வரம்பு அல்ல. சரிசெய்வதற்கு முன் `/api/monitoring/health` இல் `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` ஐப் படிக்கவும். |
| `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | BYTE மற்றும் STRUCTURE எடைபொருந்திய அனுமதிக்கான heap-அழுத்த அகற்றல் விகிதம் (`heapUsed / heap_size_limit`) (#10183, #10268, #10437). `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT`ஐ தாண்டிய ஒரே நேரத்தில் வரும் எடைபொருந்திய கோரிக்கை, heap இும் இந்த விகிதத்தில் அல்லது அதற்கும் மேல் இருக்கும்போது மட்டும் மீண்டும் முயற்சிக்கக்கூடிய `503` உடன் அகற்றப்படுகிறது; ஆரோக்கியமான heap-இல் இதை healthy-headroom மூலம் அனுமதிக்கப்படுகிறது. |
| `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (default `1`) | `src/shared/middleware/chatBodyAdmission.ts` | **both** STRUCTURE மற்றும் BYTE க்கான ஆரோக்கியமான heap வேக வழிக்கான வரையறுக்கப்பட்ட கூடுதல் திறன் (#10437) (`admitChatRequest`, உட்பட உடல்கள் ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). இந்த வரம்பில்லாமல், ஒவ்வொரு பிஸியான-ஆரோக்கியமான heap கோரிப்பும் தட்டுக்கோட்டை தாண்டி செல்லும். ஆரோக்கியமான heap வழியாக இதே அளவிலான சமகால லீசுகள் செயல்படும் போது, மேலதிக பிஸியான கோரிக்கைகள் உண்மையான heap அழுத்தத்தின் கீழ் பயன்படுத்தப்படும் அதே வரையறுக்கப்பட்ட-காத்திருப்பு/அகற்றல் வழிக்கு விழுகிறது. `0` முழுமையாக bypass ஐ முடக்கும். |
| `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | கோரிக்கையின் உடல் பைட் எல்லையின் கீழேயிருந்தாலும் அதனை எடைபொருந்தியதாக வகைப்படுத்தும் செய்தி எண்ணிக்கை. |
| `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | கோரிக்கையின் உடல் பைட் எல்லையின் கீழேயிருந்தாலும் அதனை எடைபொருந்தியதாக வகைப்படுத்தும் கருவி எண்ணிக்கை. |
| `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | ஒரு கோரிக்கையை எடைபொருந்தியதாக வகைப்படுத்துவதற்கான பாதுகாப்பான string அளவு token மதிப்பீடு; இது ஒரு அணுகல் செலவு பிரதிநிதியாகும், வழங்குநர் பில்லிங் tokenization அல்ல. |
| `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (disabled) | `src/shared/middleware/chatBodyAdmission.ts` | விருப்பமான opt-in சாட் வரலாறு வரம்பு. இயல்பாக முடக்கப்பட்டுள்ளது: ஒரு செய்தி எண்ணிக்கை என்பது அமைப்பு கொள்கை, ஒரு கோரிக்கையின் பொதுவான பண்பாக அல்ல, மேலும் இங்கு வரம்பு வைக்கப்படுவதால், compression pipeline சேவைக்கூடியதாக மாற்றுவதற்கு முன் கடைசி `413` உடன் உரையாடல்களை மறுக்கிறது. `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` மற்றும் heap-அழுத்த அகற்றலால் heap வளர்ச்சி கட்டுப்படுத்தப்படுகிறது. கடுமையான மேம்பாதை தேவைப்படும் நினைவக கட்டாய deployments க்கு ஒரு நேர்மறை மதிப்பை அமைக்கவும்; அதனை கடந்தவை கட்டமைக்கப்பட்ட, சுருக்கப்பட்ட `413` பெறும். |
| `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | முழுமையாக நினைவகத்தில் பஃபர் செய்யப்பட்ட non-streaming upstream பதிலுக்கு கடுமையான வரம்பு. இதனை தாண்டியதும் upstream வாசிப்பாளர் ரத்து செய்யப்படும் மற்றும் கோரிக்கை heap நிதானமாக எல்லையின்றி string ஆக வளராமல் உடனடியாக தோல்வியடையும். |
| `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | அப்ஸ்ட்ரீம் பதிலு ஹெடர்களிலிருந்து அனுப்பப்படும் அதிகபட்ச வயர் பைட்டுகள். பட்ஜெட் மீறப்படும்போது, பொதுவான ரிவர்ஸ்-ப்ராக்ஸி ஹெடர் வரம்புகளுக்குள் இருப்பதற்காக குறைந்த முன்னுரிமை ஹெடர்கள் (எ.கா., தனிப்பயன் `x-codex-*`, `x-oai-request-id`) கைவிடப்படுகின்றன. பெரிய பதிலு ஹெடர் அளவை விலையாகக் கொண்டு அதிக அப்ஸ்ட்ரீம் மெட்டாடேட்டாவை அனுப்ப அதிகமாக அமைக்கவும். |
| `CORS_ORIGIN` | _(அமைக்கப்படவில்லை)_ | `src/server/cors/origins.ts` | பழைய ஒற்றை-ஆரிஜின் CORS அனுமதிப்பட்டியல். புதிய வரிசைப்படுத்தல்களுக்கு `CORS_ALLOWED_ORIGINS` ஐ விரும்பவும். CORS என்பது கிராஸ்-ஆரிஜின் உலாவி API கிளையன்ட்களுக்கு மட்டுமே; அங்கீகரிக்கப்பட்ட டாஷ்போர்டு எழுத்துகள் அதற்குப் பதிலாக same-origin கோரிக்கைகள் மற்றும் அமர்வுடன் பிணைக்கப்பட்ட CSRF பாதுகாப்பைப் பயன்படுத்துகின்றன. |
| `CORS_ALLOWED_ORIGINS` | _(அமைக்கப்படவில்லை)_ | `src/server/cors/origins.ts` | கமாவால் பிரிக்கப்பட்ட CORS அனுமதிப்பட்டியல். `CORS_ALLOW_ALL=true` வெளிப்படையாகக் கட்டமைக்கப்படாத வரை எந்த வைல்டுகார்டும் அனுப்பப்படாது. |
| `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | ஏதேனும் உலாவி `Origin` ஐ எதிரொலிப்பதற்கான மேம்பாட்டிற்கு மட்டுமேயான எஸ்கேப் ஹேட்ச். பகிரப்பட்ட அல்லது உற்பத்தி வரிசைப்படுத்தல்களில் இதை இயக்க வேண்டாம். |
| `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | பழைய மாற்றுப் பெயர். இதன் டாஷ்போர்டு மாற்றி (ஒரு DB மேலெழுதல்) இந்த சூழல் மதிப்புக்கு முன் படிக்கப்படுகிறது; இரண்டில் ஏதேனும் ஒன்றில் `false`, `0`, `no`, அல்லது `off` என இருந்தால், அந்தக் கொடியின் டாஷ்போர்டு மாற்றி ஆஃப் ஆகச் சேமிக்கப்பட்டிருந்தாலும், `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` செய்வது போலவே ஹோஸ்ட் சரிபார்ப்புகளை அணைக்கிறது; மற்ற மதிப்புகள் பாதுகாப்பைக் கீழே உள்ள இரண்டு கொடிகளுக்கே விட்டுவிடுகின்றன. |
| `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | கார்டு பயன்முறையைப் பின்பற்றும் வழங்குநர் பாதைகளில், வெளிச்செல்லும் URL கார்டின் ஹோஸ்ட் சரிபார்ப்புகளை — கிளவுட்-மெட்டாடேட்டா தடை உட்பட (169.254.0.0/16 முழுவதும், metadata.google.internal) — அணைக்கிறது: URL சரிபார்ப்பு, மாடல் கண்டறிதல், வழங்குநர்-நோடு அடிப்படை URL-கள் (ரிமோட் rerank நோடுகள் உட்பட), மற்றும் ப்ராக்ஸி-ஃபால்பேக் சோதனை, ரிமோட் இமேஜ்/மீடியா ஃபெட்ச் போன்ற பிற வழங்குநர்-சார்ந்த வெளிச்செல்லும் பாதைகளுடன். இது தனிப்பட்ட webhook இலக்குகளையும் அனுமதிக்கிறது, கிளவுட்-மெட்டாடேட்டா/லிங்க்-லோக்கல் முனைப்புகள் தவிர — அவை இந்தக் கொடி இயக்கப்பட்டிருந்தாலும் தடுக்கப்பட்டே இருக்கும். `BaseExecutor.execute()` வழியாக அனுப்பப்படும் சாட் கோரிக்கைகள் தங்கள் கிளவுட்-மெட்டாடேட்டா சரிபார்ப்பைத் தக்கவைத்துக்கொள்கின்றன. உள்ளக வழங்குநர்கள் இயல்புநிலைகளுடன் வேலை செய்கின்றன: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (இயல்புநிலை `true`) ஏற்கனவே சரிபார்ப்பு, கண்டறிதல் மற்றும் வழங்குநர்-நோடு பாதைகளில் உள்ளக மற்றும் LAN URL-களை அனுமதிக்கிறது; ப்ராக்ஸி-ஃபால்பேக் சோதனையும் தனிப்பட்ட webhook இலக்குகளும் இந்தக் கொடியை மட்டுமே பார்க்கின்றன, அது அணைக்கப்பட்டிருக்கும்போது உள்ளக/LAN ஹோஸ்ட்களைத் தடுக்கின்றன. `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` ஐ மேலெழுதுகிறது. டாஷ்போர்டு மாற்றியிலிருந்து சேமிக்கப்பட்ட மதிப்பு இந்த மாறிக்கு மேல் முன்னுரிமை பெறுகிறது. |
| `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | வழங்குநர் சரிபார்ப்பு, மாடல் கண்டறிதல், சாட் மற்றும் கார்டு பயன்முறை நிர்வகிக்கும் பிற வழங்குநர்-சார்ந்த வெளிச்செல்லும் பாதைகளுக்கு, உள்ளக/தனிப்பட்ட முகவரிகளில் (127.0.0.1, localhost, LAN, தனிப்பட்ட வரம்புகள்) வழங்குநர் URL-களை அனுமதிக்கவும். **இயல்புநிலை `true`** (உள்ளகம்-முதலில்): பின்னர் கார்டு கிளவுட்-மெட்டாடேட்டா முனைப்புகளைத் தடுக்கிறது — 169.254.0.0/16 முழுவதும், மேலும் அறியப்பட்ட மெட்டாடேட்டா ஹோஸ்ட்பெயர்கள் (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254). தனிப்பட்ட மற்றும் லூப்பேக் ஹோஸ்ட்களையும் தடுக்கும் பொது-மட்டும் பயன்முறைக்கு `false` என அமைக்கவும். கார்டு எந்த DNS தேடலுக்கும் முன், எழுதப்பட்டபடியே ஹோஸ்ட்பெயர் அல்லது IP லிட்டரலைச் சரிபார்க்கிறது; பொது-மட்டும் பயன்முறையில் safe-fetch ரேப்பர் கூடுதலாக ஹோஸ்ட்பெயரைத் தீர்மானித்து, எந்தத் தனிப்பட்ட பதிலையும் மறுக்கிறது. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` இந்தச் சரிபார்ப்புகளை அதன் வரிசை பட்டியலிடும் பாதைகளில் அணைக்கிறது. LM Studio, Ollama, vLLM, Llamafile மற்றும் Triton போன்ற உள்ளமைக்கப்பட்ட உள்ளக வழங்குநர்கள், விசை சரிபார்ப்பு மற்றும் சாட்டிற்கு அனைத்து ஹோஸ்ட் சரிபார்ப்புகளையும் தவிர்க்கின்றன. டாஷ்போர்டு மாற்றியிலிருந்து சேமிக்கப்பட்ட மதிப்பு இந்த மாறிக்கு மேல் முன்னுரிமை பெறுகிறது. (#5066) |
| `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | `/v1/audio/*` ரூட்டுகள் (டிரான்ஸ்கிரிப்ஷன்கள், ஸ்பீச், மொழிபெயர்ப்புகள்) localhost-க்கு வெளியே ஹோஸ்ட் செய்யப்பட்ட OpenAI-இணக்கமான வழங்குநர் நோடைப் பயன்படுத்த அனுமதிக்கவும். இயல்பாக அணைக்கப்பட்டுள்ளது — ஆடியோவை ஒரு ரிமோட் ஹோஸ்டுக்கு ரூட்டிங் செய்வது எக்ரஸ் அடையாளத்தை மாற்றுகிறது, அது ஒரு வெளிப்படையான ஆபரேட்டர் முடிவாக இருக்க வேண்டும். லூப்பேக்/தனிப்பட்ட நோடுகள் (localhost, 127.0.0.1, 172.16-31.x) எப்போதும் அனுமதிக்கப்படுகின்றன, எந்தப் பாதிப்பும் இல்லாமல் இருக்கின்றன. (#3963) |
| `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | `POST /v1/rerank` (மற்றும் மெமரி எஞ்சினின் லூப்பேக் rerank படி) localhost-க்கு வெளியே ஹோஸ்ட் செய்யப்பட்ட OpenAI-இணக்கமான வழங்குநர் நோடைப் பயன்படுத்த அனுமதிக்கவும் — TEI, Infinity, vLLM போன்றவற்றை இயக்கும் ஒரு LAN பெட்டி அல்லது Tailscale பீயர். இயல்பாக அணைக்கப்பட்டுள்ளது — ஒரு ரிமோட் ஹோஸ்டுக்கு ரூட்டிங் செய்வது எக்ரஸ் அடையாளத்தை மாற்றுகிறது, அது ஒரு வெளிப்படையான ஆபரேட்டர் முடிவாக இருக்க வேண்டும். லூப்பேக் நோடுகள் (localhost, 127.0.0.1, 172.16-31.x) எப்போதும் அனுமதிக்கப்படுகின்றன, எந்தப் பாதிப்பும் இல்லாமல் இருக்கின்றன. ஒரு ரிமோட் நோடின் அடிப்படை URL வழங்குநர் வெளிச்செல்லும் URL கொள்கையையும் (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`) தேர்ச்சி பெற வேண்டும். |
| `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(வெற்று)_ | `src/shared/network/localNodeHosts.ts` | provider-node ரூட்டிங் உள்ளூராகக் கருதும் ஹோஸ்ட்பெயர்கள் (காற்புள்ளி அல்லது இடைவெளியால் பிரிக்கப்பட்டவை) — பொதுவாக OmniRoute-இன் சொந்த Docker நெட்வொர்க்கில் உள்ள ஒரு reranker, TEI அல்லது audio sidecar-இன் Docker/Compose சேவைப் பெயர் (`http://reranker:8080/v1`), இதனால் நோடுக்கு நிலையாகக் குறிப்பிடப்பட்ட கன்டெய்னர் IP தேவையில்லை. பட்டியலிடப்பட்ட ஹோஸ்ட்கள் ஒவ்வொரு ரிமோட் நோடிலும் `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` ஐ இயக்காமலேயே `/v1/rerank`, `/v1/audio/*` மற்றும் உள்ளூர் ஹெல்த் செக் ஆகியவற்றுக்குத் தகுதி பெறுகின்றன, மேலும் நேரடியாக அழைக்கப்படுகின்றன — ஒருபோதும் `HTTP(S)_PROXY` அல்லது கனெக்ஷனின் பின் செய்யப்பட்ட ப்ராக்ஸி வழியாக அல்ல. அவை இன்னும் கனெக்ஷனின் API key-ஐ அனுப்புகின்றன. ஒற்றை-லேபல் பெயர்கள் மற்றும் `.internal`/`.local` பெயர்கள் மட்டுமே ஏற்றுக்கொள்ளப்படுகின்றன; பொது FQDN-கள், IP லிட்டரல்கள் மற்றும் cloud-metadata பெயர்கள் எச்சரிக்கையுடன் புறக்கணிக்கப்படுகின்றன. (#14635) |
| `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | OIDC இயக்கப்பட்டிருக்கும்போது, பயனர்கள் OIDC Single Sign-On வழியாக மட்டுமே அங்கீகரிக்க முடியும் வகையில் பாஸ்வர்டு லாகினை முடக்குகிறது. `OIDC_DISABLE_PASSWORD_LOGIN` என்ற வெறும் alias-மும் ஏற்றுக்கொள்ளப்படுகிறது; அதே key-இன் Dashboard Feature Flag முன்னுரிமை பெறுகிறது. (#10889) |
| `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN`-இன் வெறும் alias (#10889). |
### கடினமாக்கல் சரிபார்ப்புப் பட்டியல்
```bash
# உற்பத்தி சூழலுக்கான குறைந்தபட்ச பாதுகாப்பு:
AUTH_COOKIE_SECURE=true # HTTPS தேவை
REQUIRE_API_KEY=true # அனைத்து ப்ராக்ஸி அழைப்புகளையும் அங்கீகரிக்கவும்
ALLOW_API_KEY_REVEAL=false # UI-இல் key-களை ஒருபோதும் வெளிப்படுத்த வேண்டாம்
CORS_ALLOWED_ORIGINS=https://your.domain.com
MAX_BODY_SIZE_BYTES=5242880 # 5 MB வரம்பு
```
---
## 5. உள்ளீட்டுத் தூய்மைப்படுத்தல் & PII பாதுகாப்பு
OmniRoute இரண்டு அடுக்குப் பாதுகாப்பை வழங்குகிறது: கோரிக்கைப் பக்கத்தில் உட்செலுத்தல் ஸ்கேனிங் மற்றும் பதில் பக்கத்தில் PII அகற்றுதல்.
> **⚠️ வரம்புகள்:** இந்தப் பாதுகாப்புக் கட்டுப்பாடுகள் _முடிந்தவரையிலான ஹியூரிஸ்டிக்_ கண்டறிதல்கள் மட்டுமே; இவை முழுமையான ப்ராம்ப்ட் உட்செலுத்தல் ஃபயர்வாலோ PII DLP அமைப்போ அல்ல. இவை தவறான நேர்மறை முடிவுகளையும் (தீங்கற்ற பெர்சோனா/RPG ப்ராம்ப்ட்கள் குறியிடப்படுதல்), தவறான எதிர்மறை முடிவுகளையும் (leetspeak, இடைவெளியிடல், ஆங்கிலமல்லாத வடிவங்கள்) உருவாக்கக்கூடும். இணக்கப்பாட்டிற்கு இவை மட்டும் போதுமானவை அல்ல. இவற்றைச் சார்ந்திருப்பதற்கு முன், பயன்முறைகளைச் சரிசெய்து உங்கள் போக்குவரத்திற்கு எதிராகச் சோதிக்கவும்.
### கோரிக்கைப் பக்கம்: ப்ராம்ப்ட் உட்செலுத்தல் பாதுகாப்பு
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| --------------------------------- | -------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | உள்வரும் செய்திகளில் ப்ராம்ப்ட் உட்செலுத்தல் வடிவங்கள் உள்ளனவா என ஸ்கேன் செய்வதை இயக்குகிறது. |
| `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | உட்செலுத்தல் கொள்கை: `warn` = பதிவுசெய்வது மட்டும், `block` = 400 உடன் கோரிக்கையை நிராகரிக்கும். பழைய `redact`, உட்செலுத்தல் உரையை **அகற்றாது**; கோரிக்கையிலுள்ள PII-ஐ மாற்றியமைக்க `PII_REDACTION_ENABLED`-ஐப் பயன்படுத்தவும். |
| `INJECTION_GUARD_MODE` | _(அமைக்கப்படவில்லை)_ | `src/middleware/promptInjectionGuard.ts` | `INPUT_SANITIZER_MODE`-க்கான பழைய மாற்றுப்பெயர் — அதே செயல்பாடு. |
| `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | `MODE=block` நிராகரிக்கும் குறைந்தபட்ச தீவிரம்: `high` (இயல்புநிலை), `medium`, அல்லது `low`. வரம்பு குறைக்கப்படாவிட்டால், நடுத்தரத் தீவிர வடிவங்கள் கண்காணிப்புக்கு மட்டுமே உரியவை. |
| `INJECTION_GUARD_BLOCK_THRESHOLD` | _(அமைக்கப்படவில்லை)_ | `src/shared/utils/injectionSeverity.ts` | `INPUT_SANITIZER_BLOCK_THRESHOLD`-க்கான பழைய மாற்றுப்பெயர் — அதே செயல்பாடு. |
| `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | `true` ஆக இருக்கும்போது, உள்வரும் கோரிக்கைகளிலுள்ள PII-ஐ மறைக்கிறது (உட்செலுத்தல் பயன்முறையைச் சாராதது). |
| `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | கோரிக்கை/பதில் பேலோடுகளிலிருந்து நன்கு அறியப்பட்ட API-key / secret-token வடிவங்களை மறைக்கிறது. விருப்பத்தேர்வு; `PII_REDACTION_ENABLED`-இன் செயல்பாட்டைப் பிரதிபலிக்கிறது. |
### பதில் பக்கம்: PII தூய்மைப்படுத்தி
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| -------------------------------- | ---------- | ------------------------- | ------------------------------------------------------------------------------------------------ |
| `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | கிளையண்டுக்குத் திருப்பி அனுப்புவதற்கு முன், கசிந்த PII உள்ளதா என LLM பதில்களை ஸ்கேன் செய்கிறது. |
| `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = PII-ஐ மறைக்கும், `warn` = பதிவுசெய்வது மட்டும், `block` = முழுப் பதிலையும் கைவிடும். |
### VS Code டோக்கனைஸ் செய்யப்பட்ட வழித்தடச் சூழல் தூய்மைப்படுத்தி
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ----------------------------------- | ---------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | `/v1/vscode/[token]/*` கோரிக்கைகளிலிருந்து மறைமுக செயலில்-உள்ள எடிட்டர் சூழலை (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) அகற்றி, வெளிப்படையாக இணைக்கப்பட்ட உணர்திறன் மிக்க கோப்புகளின் உள்ளடக்கத்தை மறைக்கிறது. இயல்பாகவே பாதுகாப்பானது; முடக்க `0` என அமைக்கவும். |
### பயன்பாட்டுச் சூழல்கள்
| பயன்பாட்டுச் சூழல் | உள்ளமைவு |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **நிறுவன இணக்கப்பாடு** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (உட்செலுத்தல்களைத் தடுத்தல் + கோரிக்கை/பதில் PII மறைப்பு; பயன்முறைகள் ஒன்றையொன்று சாராதவை) |
| **கண்காணிப்பு மட்டும்** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — பதிவுசெய்யும், ஆனால் ஒருபோதும் தடுக்காது |
| **தனிப்பட்ட பயன்பாடு** | அனைத்தையும் முடக்கப்பட்ட நிலையிலேயே விடவும் — கூடுதல் செயலாக்கச் சுமை இல்லை |
---
## 6. கருவி & வழிநடத்தல் கொள்கைகள்
| Variable | Default | Source File | Description |
| ----------------------------------------------------------- | ---------------------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | LLM கருவி/செயல்பாடு-அழைப்பு அணுகலைக் கட்டுப்படுத்துகிறது. `allowlist` = பட்டியலிடப்பட்ட கருவிகள் மட்டும், `denylist` = பட்டியலிடப்பட்டவை தவிர அனைத்தும், `disabled` = கட்டுப்பாடுகள் இல்லை. |
| `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | பேலோடு கையாளுதல் விதிகள் JSON கோப்பிற்கான பாதை (மாதிரி/நெறிமுறை வாரியான அப்ஸ்ட்ரீம் சரிசெய்தல்கள்). |
| `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | பேலோடு விதிகள் கோப்பை ஹாட்-ரீலோட் செய்வதற்கான மீளேற்ற இடைவெளி (ms). குறைந்தபட்சம் `1000`. |
| `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | விருப்பத் தேர்வு (opt-in): Claude Code கிளையன்ட்களிலிருந்து வரும் முன்னொட்டு இல்லாத `claude-*` மாதிரி ID-களை, வழங்குநர் முன்னொட்டு தேவைப்படுவதற்குப் பதிலாக Claude Code OAuth கணக்கு வழியாக வழிநடத்துகிறது. வெளிப்படையான வழங்குநர் முன்னொட்டுகள் இன்னும் முன்னுரிமை பெறும். Claude வழங்குநர் பக்கத்தில் உள்ள டாஷ்போர்டு நிலைமாற்றி வழியாகவும் கட்டமைக்கலாம். |
| `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | OmniRoute தானாகவே `redact-thinking-2026-02-12` Anthropic பீட்டாவைச் சேர்ப்பதை நிறுத்த `false` என அமைக்கவும் (வெற்று, கையொப்பம்-மட்டும் கொண்ட சிந்தனை தொகுதிகள்). `thinking.display: "summarized"` கொண்ட கோரிக்கைகள் எப்படியும் அதைத் தவிர்க்கும்; கிளையன்ட்-பேச்சுவார்த்தை செய்யப்பட்ட redact பீட்டா அல்லது CC-இணக்கமான `requestDefaults.redactThinking` விருப்பத் தேர்வு அதைத் தக்கவைக்கும். Claude OAuth கோரிக்கைகள் பீட்டாவைத் தக்கவைக்கும் (அது Claude Code OAuth கைரேகையின் ஒரு பகுதி), இயல்பாக அணைக்கப்பட்டிருக்கும் `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED` அம்சக் கொடி இயக்கப்பட்டிருந்தால் தவிர. |
| `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | பழைய `resolveBareModelToConnectionDefault` நடத்தை (#4825): ஏதேனும் வெற்று மாதிரி பெயரைத் தேர்ந்தெடுக்கப்பட்ட இணைப்பின் `defaultModel` மூலம் மாற்றுகிறது. இயல்பாக அணைக்கப்பட்டிருக்கும்; `auto` அல்லது வெற்று மாதிரி மட்டுமே மாற்றப்படும்; இயக்கப்பட்டிருக்கும்போது ஒவ்வொரு ஜோடிக்கும் ஒரு எச்சரிக்கையைப் பதிவு செய்கிறது. |
| `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | ரவுண்ட்-ராபின் காம்போக்களுக்கான மாதிரி-வாரியான ஒருங்கிணைப்பு வரம்பு (#9100). ரவுண்ட்-ராபின் காம்போ செமாஃபோர், மேலீடு எதுவும் இன்றி, ஒரு மாதிரிக்கு 3 ஒருங்கிணைந்த கோரிக்கைகளில் கடினமாக வரம்பிடப்பட்டிருந்தது; அதிக ஒருங்கிணைப்புப் போக்குவரத்தை அந்த வரம்பிற்குப் பின்னால் வரிசைப்படுத்தியது. `>= 1` எனச் சரிபார்க்கப்பட்டது, `<= 32` எனக் கட்டுப்படுத்தப்பட்டது. |
| `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | நேரடி ஒற்றை-மாதிரி கோரிக்கைகளுக்கு OmniRoute-ன் உள்ளூர் கான்டெக்ஸ்ட்-விண்டோ / அதிகபட்ச-உள்ளீட்டு-டோக்கன் சரிபார்ப்பைத் தவிர்க்கும் ஆபத்தான விருப்பத் தேர்வு. அப்ஸ்ட்ரீம் வழங்குநர்கள் தங்கள் உண்மையான வரம்புகளை இன்னும் நடைமுறைப்படுத்துகின்றனர்; ப்ராம்ட் சுருக்கமும் மாதிரியின் சொந்த வெளியீட்டு-டோக்கன் வரம்பும் தொடர்ந்து செயலில் இருக்கும். செயல்படும் முன்னுரிமை: Feature Flags DB மேலீடு > சூழல் மாறி > இயல்புநிலை; மறுதொடக்கம் தேவையில்லை. |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/selfHostedEntry.ts` | இன்லைன் YAML `providers:` ஆவணம் (RIC-738, D4). அமைக்கப்பட்டிருக்கும்போது (`strategy:` தொகுதியுடனோ அல்லது இல்லாமலோ), `/v1/chat/completions` கிளவுட் பைப்ப்லைனுக்குப் பதிலாக சுய-ஹோஸ்ட் செய்யப்பட்ட ஒருங்கிணைந்த OpenAI-இணக்க நுழைவுக்குத் திசைதிருப்பப்படும். அமைக்கப்படாத நிலையில் (இயல்புநிலை): ரூட் நேரடியாக ஏற்கனவே உள்ள கிளவுட் பைப்ப்லைனுக்குச் செல்லும். `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md` ஐப் பார்க்கவும். |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/selfHostedEntry.ts` | `OMNIROUTE_SELF_HOSTED_PROVIDERS`-ஐப் போலவே அதே `providers:` ஆவணத்தைக் கொண்ட YAML கோப்பிற்கான பாதை; இன்லைன் env மாறிக்குப் பதிலாக கோப்பை விரும்பும் வடிவமைப்புகளுக்கு. இரண்டில் ஏதேனும் ஒன்று சுய-ஹோஸ்ட் நுழைவைச் செயல்படுத்தும். |
| `OMNIROUTE_SELF_HOSTED_API_KEY` | _(அமைக்கப்படவில்லை — திறந்த ரூட்)_ | `open-sse/services/selfHostedEntry.ts` | ஒருங்கிணைந்த சுய-ஹோஸ்ட் நுழைவுக்கான விருப்பப் பகிரப்பட்ட API விசை (D5 சகாஃபோல்டு, ஒவ்வொரு விசைக்குமான கோட்டா அமைப்பிற்காக ஒதுக்கப்பட்டது). அமைக்கப்பட்டிருக்கும்போது, கோரிக்கைகள் `Authorization: Bearer ` ஐ உள்ளடக்கியிருக்க வேண்டும். அமைக்கப்படாத நிலையில்: ரூட் திறந்ததாக இருக்கும், ஏற்கனவே உள்ள சுய-ஹோஸ்ட் உள்ளூர்-வழங்குநர் முறையுடன் பொருந்தும் (லூப்பேக்/நம்பகமான-நெட்வொர்க் வடிவமைப்பு). |
| `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(அமைக்கப்படாதது)_ | `open-sse/services/routingStrategies.ts` | நிர்ணய ரூட்டிங் இயந்திரத்திற்கான (M2/RIC-740, D3) இன்லைன் YAML `strategy:` ஆவணம் — தடுப்புப்பட்டியல்/அனுமதிப்பட்டியல், கூல்டவுன் பிரேக்கர், செலவு-முன்னுரிமை, லேட்டன்சி-அறிந்த, ஃபால்பேக் சங்கிலி. `OMNIROUTE_SELF_HOSTED_PROVIDERS` உள்ளே உள்ள இன்லைன் `strategy:` தொகுதியை ஒவ்வொரு விசைக்கும் மேலெழுதுகிறது. `docs/routing/DETERMINISTIC_ROUTING.md` ஐப் பார்க்கவும். |
| `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(அமைக்கப்படாதது)_ | `open-sse/services/routingStrategies.ts` | `OMNIROUTE_SELF_HOSTED_STRATEGY` உடன் அதே `strategy:` ஆவணத்தைக் கொண்ட YAML கோப்பின் பாதை — இன்லைன் env மாறிக்குப் பதிலாக கோப்பை விரும்பும் வரிசைப்படுத்தல்களுக்கு. |
| `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(அமைக்கப்படாதது)_ | `open-sse/services/conversationTracker.ts` | உரையாடல் வரலாற்றைச் சேகரிப்பதை நிறுத்த `1` என அமைக்கவும். `resolveConversationId()` SQLite ஐப் படிப்பதற்கோ செய்தி வரலாற்றைப் பாகுபடுத்துவதற்கோ முன் கண்காணிக்கப்படாத முடிவைத் தருகிறது; கிளையன்ட் வழங்கிய அமர்வு ID களும் இதில் அடங்கும். ரூட்டிங்-அமர்வு கையாளுதல் மாறாது; ஏற்கனவே உள்ள பதிவுகள் நீக்கப்படாது. டாஷ்போர்டின் உரையாடல் காட்சியைப் பயன்படுத்தாத மற்றும் டர்ன் அட்டவணை வளர்வதை நிறுத்த விரும்பும் வரிசைப்படுத்தல்களுக்கு. |
| `OMNIROUTE_NADIR_API_KEY` | _(அமைக்கப்படாதது)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | ஆப்ட்-இன் `nadir` ஆட்டோ-காம்போ ரூட்டர் உத்திக்கான API விசை; காம்போவின் சொந்த `config.nadir.apiKey` அமைக்கப்படாத போது பயன்படுகிறது. விருப்பமானது: விசையின்றிச் செய்யப்படும் அழைப்புகள் Nadir இன் அநாமதேய அடுக்கில் செல்கின்றன; அது IP தோறும் விகித வரம்புக்குட்பட்டது, எனவே பகிரப்பட்ட கேட்வேக்குப் பின்னால் பயன்படுத்த முடியாது. உணர்திறன் கொண்டது; காம்போக்கள் வெவ்வேறு கணக்குகளைப் பயன்படுத்தும்போது காம்போ-தோறும் உள்ள புலத்தை விரும்பவும். |
| `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Nadir முடிவு API இன் அடிப்படை தோற்றம்; காம்போவின் சொந்த `config.nadir.baseUrl` அமைக்கப்படாத போது பயன்படுகிறது. சுய-ஹோஸ்ட் செய்யப்பட்ட Nadir க்கு மட்டுமே தேவை — அது ப்ராம்ட் ஹெட்களை உங்கள் சொந்த நெட்வொர்க்குக்குள் வைத்திருக்கும். இறுதியில் வரும் `/v1` சகித்துக்கொள்ளப்பட்டு நீக்கப்படும். |
| `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | API-விசை தோறும் USD பயன்பாட்டு வரம்புகளுக்கான வாராந்திர சாளரம் (கோரிக்கை செயலாக்கம், `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: விசை அடையக்கூடிய அப்ஸ்ட்ரீம் இணைப்புகளில் மிக ஆரம்ப வாராந்திர ரீசெட்டில் வாரம் முடிகிறது; எதுவும் தெரியாதபோது ரோலிங் 7 நாட்கள். `calendar`: திங்கள் 00:00 முதல் அடுத்த திங்கள் 00:00 வரை உள்ளூர் வாரம் — ஒவ்வொரு விசைக்கும் ஒரே மாதிரி. ஒரே அப்ஸ்ட்ரீம் கணக்குகளின் குளம் தனித்தனி பட்ஜெட் கொண்ட பல விசைகளால் பகிரப்படும்போது `calendar` பரிந்துரைக்கப்படுகிறது. தவறான மதிப்புகள் `provider` க்குத் திரும்பும். |
| `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(செயல்முறை நேர மண்டலம்)_ | `src/lib/usage/apiKeyUsageLimits.ts` | `calendar` வாராந்திர சாளரத்திற்கு திங்கள் 00:00 ஐ வரையறுக்கும் IANA நேர மண்டலம் (எடுத்துக்காட்டாக `Asia/Shanghai`). அமைக்கப்படாத அல்லது தவறான நிலையில்: OmniRoute செயல்முறையின் நேர மண்டலம் (ஹோஸ்ட் அல்லது கன்டெய்னரின் `TZ`; கன்டெய்னர் இமேஜ்களில் இது பெரும்பாலும் அமைக்கப்படாதது, அதாவது ஒருங்கிணைந்த சர்வதேச நேரம்). `provider` பயன்முறையில் புறக்கணிக்கப்படுகிறது. |
| `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | ஒரு கோரிக்கையில் அனுமதிக்கப்படும் கருவிகளின் இயல்புநிலை அதிகபட்ச எண்ணிக்கை (OpenAI இயல்புநிலை). நேர்மறை முழு எண்கள் மட்டுமே; அமைக்கப்படாத அல்லது தவறான மதிப்புகள் `128` ஐத் தக்க வைக்கும். அறியப்பட்ட/முன்னெச்சரிக்கை வரம்பு கொண்ட வழங்குநர் (`grok-cli` 200, `nvidia` 1536) இன்னும் தனது சொந்த வரம்பையே பயன்படுத்தும் — இது இயல்புநிலை உச்சவரம்பை மட்டுமே நகர்த்துகிறது. |
| `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(இயக்கத்தில்)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai ப்ராம்ட்-எமுலேட் செய்யப்பட்ட கருவி அழைப்பு: அமைக்கப்படாத அல்லது `1`/`true`/`on`/`yes` எனில் உள்ளூர் கருவி பட்டியல் ப்ராம்ட்டில் செலுத்தப்படுகிறது; வேறு எந்த மதிப்பும் (எ.கா. `0`) அந்த செலுத்துதலைத் தவிர்க்கிறது. |
---
## 7. URL-கள் & கிளவுட் ஒத்திசைவு
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | உள் ஒத்திசைவுப் பணிகள் `/api/sync/cloud`-ஐ அழைப்பதற்கான சர்வர்-பக்க URL. செயலி பொதுவாகப் ப்ராக்ஸி செய்யப்பட்டிருந்தாலும், இதை loopback/container URL ஆகவே வைத்திருக்கவும். |
| `CLOUD_URL` | _(காலி)_ | `src/lib/cloudSync.ts` | கிளவுட் ரிலே முனைப்புள்ளி URL (பிரீமியம் அம்சம்). |
| `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | கிளவுட் ஒத்திசைவுக் கோரிக்கைகளுக்கான HTTP காலக்கெடு. |
| `OMNIROUTE_BUILD_PROFILE` | `full` | Webpack உருவாக்க உள்ளமைவு | உருவாக்க-நேர சுயவிவரம் (`minimal` என அமைத்தால், சிறப்புரிமை பெற்ற தொகுதிகள் bundle-இலிருந்து நேரடியாக விலக்கப்படும்). |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ தனித்தியங்கும் வெளியீடு_ | `scripts/build/colocate-standalone.mjs` | உருவாக்கத்திற்குப் பிந்தைய இணை-இருப்பிடப் படிநிலை பயன்படுத்தும் தனித்தியங்கும் வெளியீட்டுக் கோப்பகத்திற்கான உருவாக்க-நேர மேலெழுதுதல். இது இயக்கநேர அமைப்பு அல்ல. |
| `OMNIROUTE_CLOUD_SYNC_SECRET` | _(காலி)_ | `src/lib/cloudSync.ts` | கிளவுட் ஒத்திசைவுப் பதில்களின் HMAC-SHA256 கையொப்பத்தைச் சரிபார்க்கப் பயன்படுத்தப்படும் பகிரப்பட்ட ரகசியம். |
| `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | கிளவுட் ஒத்திசைவு முனைப்புள்ளி உள்ளூர் நற்சான்றுகளை மேலெழுத அனுமதிக்க, `true` என அமைக்கவும். இயல்புநிலை `false`. |
| `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | உள்ளூர் ரகசியம் எதுவும் உள்ளமைக்கப்படாதபோது கையொப்பமிடப்படாத கிளவுட் ஒத்திசைவுப் பதிலை நிராகரிக்க, `true` என அமைக்கவும் (#13679). இந்தக் கொடியைப் பொருட்படுத்தாமல், உள்ள கையொப்பம் எப்போதும் சரிபார்க்கப்படும் — மேலும் `OMNIROUTE_CLOUD_SYNC_SECRET` அமைக்கப்படாதபோது எப்போதும் நிராகரிக்கப்படும். v3.9-இல் இயல்புநிலை கட்டாயப்படுத்தப்பட்டதாக மாறும். |
| `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | பயனர் உறுதிப்படுத்தல் இல்லாமல் v3.8.5-இன் ஒற்றைப் படி "அனைத்தையும் இறக்குமதி செய்" நடத்தைக்குப் பின்செல்ல, `true` என அமைக்கவும். |
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, முகப்புப்பலகை, ஒத்திசைவு | OAuth redirect_uri, முகப்புப்பலகை இணைப்புகள் மற்றும் உருவாக்கப்பட்ட பொது URL-களுக்கான பொதுமுக URL. OAuth திரும்பஅழைப்புகள் அல்லது உருவாக்கப்பட்ட உலாவி இணைப்புகள் அதிகாரப்பூர்வமான reverse-proxy host-ஐப் பயன்படுத்த வேண்டுமெனில், இதை நிலையான பொது URL-க்கு அமைக்கவும். |
| `NEXT_PUBLIC_CLOUD_URL` | _(காலி)_ | கிளையன்ட்-பக்கம் | `CLOUD_URL`-இன் கிளையன்ட்-பக்கப் பிரதி. |
| `NEXT_PUBLIC_APP_URL` | _(அமைக்கப்படவில்லை)_ | `src/shared/services/cloudSyncScheduler.ts` | `NEXT_PUBLIC_BASE_URL`-க்கான பழைய பின்னிருப்பு. |
| `NEXT_PUBLIC_PORT` | _(அமைக்கப்படவில்லை — `PORT`-க்குப் பின்னிருப்பாக மாறும்)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | மூலத் தோற்றம் தெரியாதபோது (SSR/சோதனைகள்), காட்சி URL-களுக்கான கிளையன்ட்-பக்க பின்னிருப்பு போர்ட்; `PORT`-க்கு முன் படிக்கப்படும். |
| `OMNIROUTE_PUBLIC_BASE_URL` | _(அமைக்கப்படவில்லை)_ | பொது மூலத் தோற்றத் தீர்வி, பட URL-கள் | பொது URL உருவாக்கத்திற்கும், டாஷ்போர்டு அல்லாத உலாவி மூலத் தோற்றச் சரிபார்ப்பிற்கும் பயன்படுத்தப்படும், உலாவி எதிர்கொள்ளும் மிக உயர்ந்த முன்னுரிமையுடைய OmniRoute மூலத் தோற்றம். OpenWebUI அல்லது மற்றொரு ரிலே OmniRoute-ஐ அக URL மூலம் அணுகும்போது, ஆனால் பயனரின் உலாவி உருவாக்கப்பட்ட ஊடகத்தை LAN, டன்னல் அல்லது பொது மூலத் தோற்றத்திலிருந்து பெற வேண்டியிருந்தால் இதை அமைக்கவும். `/v1`-ஐச் சேர்க்க **வேண்டாம்**. |
| `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(அமைக்கப்படவில்லை)_ | `open-sse/config/providerPluginManifestUrl.ts` | சைட்கார் கிளையன்ட்களுக்கு அறிவிக்கப்படும் முழுமையான வழங்குநர் செருகுநிரல் மேனிஃபெஸ்ட் URL. இது அமைக்கப்படாதபோது, கோரிக்கை மூலத் தோற்றம் அல்லது HOST/PORT இலிருந்து OmniRoute `/api/v1/provider-plugin-manifest`-ஐப் பெறுகிறது. |
| `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | கோரிக்கை மூலத் தோற்றம் இல்லாமல் HOST/PORT இலிருந்து வழங்குநர் செருகுநிரல் மேனிஃபெஸ்ட் URL-ஐப் பெறும்போது பயன்படுத்தப்படும் நெறிமுறை. வெளிப்படையான `OMNIROUTE_PROVIDER_MANIFEST_URL` அமைக்கப்படாதபோது, TLS-ஐ முடிவுறுத்தும் பொது ப்ராக்ஸிக்குப் பின்னால் இதை `https` என அமைக்கவும். |
| `OMNIROUTE_TRUST_PROXY` | _(அமைக்கப்படவில்லை)_ | `src/server/origin/publicOrigin.ts` | முன்னனுப்பப்பட்ட பொது மூலத் தோற்றத் தலைப்புகளுக்கான விருப்ப நம்பிக்கை முறை. அமைக்கப்படவில்லை = பாதுகாப்பு முடிவுகளுக்கு `Forwarded` / `X-Forwarded-*`-ஐ நம்ப வேண்டாம். `true` / `loopback` என்பது டோக்கன்-முத்திரையிடப்பட்ட லூப்பேக் ப்ராக்ஸியிலிருந்து வரும் முன்னனுப்பப்பட்ட ஹோஸ்ட்/நெறிமுறையை மட்டும் நம்பும். `private` / `lan` என்பது தனிப்பட்ட-LAN ப்ராக்ஸி பியர்களையும் நம்புவதுடன், அத்தகைய பியரின் `X-Forwarded-For`-ஐ `API_PORT` பிரிட்ஜ் தக்கவைக்கவும் அனுமதிக்கும். உற்பத்திச் சூழலில் வெளிப்படையான `NEXT_PUBLIC_BASE_URL`-ஐப் பயன்படுத்துவது விரும்பத்தக்கது. |
| `KIE_CALLBACK_URL` | _(அமைக்கப்படவில்லை)_ | `open-sse/utils/kieTask.ts` | ஒத்திசைவற்ற kie.ai பணிகளுக்கான பொது கால்பேக் URL. `OMNIROUTE_KIE_CALLBACK_URL` மற்றும் `OMNIROUTE_PUBLIC_URL`-க்கு முன் மிக உயர்ந்த முன்னுரிமையுடைய மேலெழுதுதல். |
| `OMNIROUTE_KIE_CALLBACK_URL` | _(அமைக்கப்படவில்லை)_ | `open-sse/utils/kieTask.ts` | `KIE_CALLBACK_URL`-இன் மாற்று எழுத்தாக்கம். முதன்மை மாறி அமைக்கப்படாதபோது பின்னிருப்பாகப் பயன்படுத்தப்படும். |
| `OMNIROUTE_PUBLIC_URL` | _(அமைக்கப்படவில்லை)_ | `open-sse/utils/kieTask.ts` | ஒத்திசைவற்ற கால்பேக் URL-களை உருவாக்கப் பயன்படுத்தப்படும் பொது மூலத் தோற்றம். kie.ai கால்பேக்குகளுக்கான மிகக் குறைந்த முன்னுரிமையுடைய பின்னிருப்பு; மற்ற ரிலேக்களுக்கான பொதுவான பொது URL ஆகவும் பயன்படுத்தப்படும். |
| `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | பயன்பாடு பக்கத்தால் பயன்படுத்தப்படும் CrofAI ஒதுக்கீடு தேடல் முனைப்புள்ளி. ரிலேக்கள் / சோதனைப் பொருத்துகளுக்காக மேலெழுதவும். |
| `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | பயன்பாடு பக்கத்தால் பயன்படுத்தப்படும் ClinePass 5-மணிநேர / வாராந்திர / மாதாந்திர ஒதுக்கீட்டு முனைப்புள்ளி. ரிலேக்கள் / சோதனைப் பொருத்துகளுக்காக மேலெழுதவும். |
| `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | பயன்பாடு பக்கத்தால் பயன்படுத்தப்படும், அதிகாரப்பூர்வ API-விசை அங்கீகரிப்புடனான OpenCode Go பயன்பாட்டு முனைப்புள்ளி. ரிலேக்கள் / சோதனைப் பொருத்துகளுக்காக மேலெழுதவும். |
| `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | கிளையன்ட் அனுப்பாத opencode-go/zen அப்ஸ்ட்ரீம் கோரிக்கைகளில் OpenCode CLI அடையாளத் தலைப்புகளை (User-Agent, x-opencode-client/project, கோரிக்கை/அமர்வு UUID-கள்) உருவாக்கவும்; இதனால் VPS வெளியேற்றத்தில் உள்ள Cloudflare அவற்றை ஏற்கும் (#6210/#5997). #10571 முதல் இயல்பாக இயக்கத்தில் உள்ளது; `false`/`0`/`no`/`off` மூலம் விலகலாம். |
| `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` இயக்கப்பட்டு, வழங்குநருக்கான தனிப்பட்ட `_USER_AGENT` மேலெழுதுதல் எதுவும் அமைக்கப்படாதபோது பயன்படுத்தப்படும் இயல்புநிலை User-Agent. opencode செயலாக்கிகளுக்கு மட்டுமே பயன்படுத்தப்படும். விசையில்லா கோரிக்கையை மேல்நிலைச் சேவைத் தடுப்புகள் சோதிக்கும்போது, `opencode/= 1.17>` இல்லாத கட்டமைக்கப்பட்ட மதிப்பு நிராகரிக்கப்படுவதற்குப் பதிலாக இந்த இயல்புநிலை மதிப்பால் மாற்றப்படும். |
| `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (இயக்கத்தில்) | `open-sse/utils/opencodeHeaders.ts` | கிளையன்ட் செயலியின் அடையாள-ஒதுக்கீட்டுத் தலைப்புகளை (`x-session-id`, `x-title`, `http-referer`) மேல்நிலை வழங்குநர்களுக்கு அனுப்புகிறது; இதனால் பட்டியலிடப்பட்ட harness ஒன்றிற்குள் தொடங்கும் கோரிக்கை, router வழியாகச் செல்லும்போதும் அதன் அடையாளத்தைத் தக்கவைத்துக்கொள்ளும் (OpenRouter வெளியீட்டாளர் தடுப்புகள் இவற்றை அடிப்படையாகக் கொண்டவை). `0`/`false`/`no`/`off` registry/operator அடையாளத்தைத் தக்கவைத்து, கிளையன்ட் வழங்கிய மதிப்புகளை நீக்குகிறது. இயக்குநர் கட்டமைத்த தனிப்பயன் தலைப்புகள் எப்போதும் கிளையன்ட் மதிப்புகளைவிட முன்னுரிமை பெறும். |
| `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` இயக்கப்பட்டிருக்கும்போது உருவாக்கப்படும் `x-opencode-client` தலைப்பிற்கான மதிப்பு. |
| `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` இயக்கப்பட்டிருக்கும்போது உருவாக்கப்படும் `x-opencode-project` தலைப்பிற்கான மதிப்பு. |
| `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(அமைக்கப்படவில்லை)_ | `open-sse/config/providerErrorRules.ts` | வெளியேற்ற IP அடிப்படையில் மேல்நிலைத் தோல்விகள் தொகுக்கப்படும் வழங்குநர்களின் நடைமுறைத் தொகுப்பு (ஒரு 429, அதே IP-ஐப் பகிரும் அனைத்து இணை இணைப்புகளையும் நிறுத்திவைக்கும்). அமைக்கப்படாதபோது இலவச அடுக்கின் இயல்புநிலையான `opencode,opencode-go,opencode-cli` பயன்படுத்தப்படும்; `none`/`off`/`false`/`0` இந்தத் தொடர் விளைவை முழுமையாக முடக்கும்; காற்புள்ளியால் பிரிக்கப்பட்ட பட்டியல் அந்தத் தொகுப்பை மாற்றியமைக்கும். கட்டணத் திட்டங்கள் மேல்நிலையில் கணக்கின் அடிப்படையில் தொகுக்கப்படுவதால், அவற்றில் இதைப் பாதுகாப்பாக முடக்கலாம் (#9611). |
| `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(அமைக்கப்படவில்லை)_ | `open-sse/config/providerErrorRules.ts` | ஒதுக்கீட்டு மறுப்புக்கான வெளியேற்றச் சுழற்சியின் வரம்பு. அமைக்கப்படாதபோது, மேலே உள்ள IP அடிப்படையில் தொகுக்கப்படும் குடும்பத்திற்கு மட்டும் 429 ஏற்பட்டால் pool உறுப்பினர் ஒதுக்கிவைக்கப்படுவார்; `all` அந்தப் பதிவை எல்லா வழங்குநர்களுக்கும் விரிவுபடுத்தும், எனவே ஓர் உறுப்பினர் வழியாகப் பெறப்பட்ட rate limit அடுத்த தேர்வை வேறொரு வெளியேற்றப் பாதைக்குத் திருப்பும். `all` அல்லாத வேறு எந்த மதிப்பும் புறக்கணிக்கப்படும். `PROXY_SKIP_RECENTLY_FAILED` தேவை (இயல்பாக இயக்கத்தில் இருக்கும்). store ஆனது (வழங்குநர், முகவரி) என்பதற்குப் பதிலாக வெளியேற்ற முகவரியால் key செய்யப்படுகிறது; எனவே விரிவுபடுத்தப்பட்ட 429, காலம் முடியும் வரை அந்த உறுப்பினரை எல்லா வழங்குநர்களுக்கும் நிறுத்திவைக்கும் (5 நிமிடம், பின்னர் இரட்டிப்பாகி 15 நிமிடம்). ஒவ்வொரு பதில் முடிவின்போதும் படிக்கப்படுவதால், மாற்றம் மறுதொடக்கம் இல்லாமலேயே செயல்படும். |
| `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/opencodeFreeTierContract.ts` | விசையில்லா OpenCode கோரிக்கைகளின் body-ஐ (streaming கொடி மற்றும் கருவிப் பட்டியல்) சரிசெய்வதை நிறுத்த `off` என அமைக்கவும். தலைப்புகள் தொடர்ந்து பயன்படுத்தப்படும். ஒவ்வொரு கோரிக்கையின்போதும் படிக்கப்படுவதால், மாற்றம் உடனடியாகச் செயல்படும். |
| `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/opencodeFreeTierContract.ts` | எந்தக் கருவியையும் கொண்டிராத விசையில்லா OpenCode கோரிக்கையில், அந்த model-க்காக இதுவரை எதுவும் கவனிக்கப்படாதபோது அறிவிக்க வேண்டிய காற்புள்ளியால் பிரிக்கப்பட்ட கருவிப் பெயர்கள். காலியாக இருந்தால், model அழைக்கக்கூடாது என்று அறிவுறுத்தப்படும் ஒற்றை placeholder பயன்படுத்தப்படும். அதிகபட்சம் 32 உள்ளீடுகள், `[A-Za-z_][A-Za-z0-9_-]{0,63}`; செல்லாத உள்ளீடுகள் புறக்கணிக்கப்படும். |
| `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | ஒதுக்கீட்டுத் தகவலைச் சேகரிக்கப் பயன்படுத்தப்படும் Ollama Cloud அமைப்புகள் URL. relay-கள் / சோதனை fixture-களுக்காக மேலெழுதலாம். |
| `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Ollama Cloud ஆவணப்படுத்திய மேல்நிலை இருப்பு endpoint (`GET https://ollama.com/api/balance`, `Authorization: Bearer `). module ஏற்றப்படும்போது ஒருமுறை படிக்கப்படும். இணைப்பில் API key இருக்கும்போது Ollama Cloud ஒதுக்கீட்டிற்காக முதலில் பயன்படுத்தப்படும்; அமைப்புப் பக்க cookie scraper மாற்று வழியாகத் தொடரும். relay-கள் / சோதனை fixture-களுக்காக மேலெழுதலாம். |
| `OLLAMA_USAGE_COOKIE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/usage.ts` | அமைப்புப் பக்க ஒதுக்கீட்டுத் தகவல் சேகரிப்புக்குப் பயன்படுத்தப்படும் Ollama Cloud `__Secure-session` cookie. இது உணர்வுபூர்வமானது; பல கணக்குகள் கட்டமைக்கப்பட்டிருந்தால், ஒவ்வொரு இணைப்பிற்குமான Dashboard புலத்தைப் பயன்படுத்துவது விரும்பத்தக்கது. |
| `OLLAMA_CLOUD_USAGE_COOKIE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/usage.ts` | மாற்று Ollama Cloud `__Secure-session` cookie சூழல் மாறி. இது உணர்வுபூர்வமானது; பல கணக்குகள் கட்டமைக்கப்பட்டிருந்தால், ஒவ்வொரு இணைப்பிற்குமான Dashboard புலத்தைப் பயன்படுத்துவது விரும்பத்தக்கது. |
| `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/usage.ts` | குறுகிய மாற்றுப் பெயர்களுக்கு முன் பயன்படுத்தப்படும் மாற்று Ollama Cloud `__Secure-session` குக்கீ சூழல் மாறி. உணர்திறன் மிக்கது; பல கணக்குகள் உள்ளமைக்கப்பட்டிருக்கும்போது, ஒவ்வொரு இணைப்புக்குமான Dashboard புலத்தைப் பயன்படுத்துவது விரும்பத்தக்கது. |
| `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | CodeWhisperer (AWS Kiro) பயன்பாட்டு வரம்புகளுக்கான முனைப்புள்ளி. ரிலேக்கள் / சோதனை நிலைப்பொருட்களுக்காக இதை மேலெழுதலாம். |
> [!IMPORTANT]
> ரிவர்ஸ் ப்ராக்ஸியின் (nginx, Caddy) பின்னால் பயன்படுத்தும்போது, OAuth திரும்பஅழைப்புகள் அல்லது உருவாக்கப்பட்ட பொது இணைப்புகள் அந்த ஹோஸ்ட்பெயரைப் பயன்படுத்த வேண்டுமெனில், `NEXT_PUBLIC_BASE_URL`-ஐ உங்கள் நிலையான பொது URL-க்கு (எ.கா., `https://omniroute.example.com`) அமைக்கவும். இது இல்லையெனில், redirect_uri பொருந்தாததால் OAuth திரும்பஅழைப்புகள் தோல்வியடையலாம்; மேலும், உருவாக்கப்பட்ட பொது இணைப்புகள் உள் கண்டெய்னர் மூலத்தைச் சுட்டிக்காட்டக்கூடும்.
>
> சர்வரிலிருந்து சர்வருக்கான பணிகளுக்கு `BASE_URL`-ஐ உள் லூப்பேக்/கண்டெய்னர் URL-ஆக வைத்திருக்கவும். நற்சான்றுகளைக் கொண்ட உள் சுய-பெறுதல்களுக்கு உலாவி `Origin` அல்லது பொது ஹோஸ்ட்பெயரைப் பயன்படுத்த வேண்டாம்.
>
> அங்கீகரிக்கப்பட்ட Dashboard எழுதுதல்களுக்கு நிலையான பொது அடிப்படை URL தேவையில்லை: Dashboard, அமர்வுடன் பிணைக்கப்பட்ட CSRF டோக்கனுடன் அதே மூலத்திற்கான பாதுகாப்பற்ற கோரிக்கைகளை அனுப்புகிறது. Dashboard அல்லாத உலாவி ஒருங்கிணைப்புகளுக்கான பொது-மூலச் சரிபார்ப்பை OmniRoute தொடர்ந்து மையப்படுத்துகிறது: வெளிப்படையான பொது URL சூழல் மாறிகள் முதலில் நம்பப்படுகின்றன; `OMNIROUTE_TRUST_PROXY` இயக்கப்பட்டு, உடனடி ப்ராக்ஸி இணை முனை நம்பகமானதாக டோக்கன்-முத்திரையிடப்பட்டிருந்தால் மட்டுமே மூல `Forwarded` / `X-Forwarded-*` தலைப்புகள் ஏற்கப்படும். அதே மூலத்திற்கான Dashboard கோரிக்கைகளைச் சரிசெய்ய CORS அமைப்புகளைப் பயன்படுத்த வேண்டாம்; CORS என்பது வெவ்வேறு மூலங்களிலிருந்து வரும் உலாவி கிளையண்டுகளுக்காக மட்டுமே.
---
## 8. வெளிச்செல்லும் பிராக்ஸி
வெளியேற்றக் கட்டுப்பாடு, புவியியல் வழிசெலுத்தல் அல்லது IP மறைப்பிற்காக மேல்நிலை LLM வழங்குநர் அழைப்புகளை HTTP அல்லது SOCKS5 பிராக்ஸி வழியாக வழிசெலுத்தவும்.
`OMNIROUTE_UPSTREAM_HTTP2_ENABLED` இயல்பாக `true` ஆகும். `open-sse/utils/proxyDispatcher.ts` மற்றும் `open-sse/utils/proxyFetch.ts` கோப்புகளில் உள்ள Undici டிஸ்பாச்சர்களில் HTTP/1.1 ஐ கட்டாயப்படுத்த இதை `false`, `0`, `no` அல்லது `off` என அமைக்கவும்: நேரடி வெளியேற்றம், HTTP(S)/SOCKS பிராக்ஸிகள், ரிலேக்கள் மற்றும் அவற்றின் புதிய சாக்கெட் மறுமுயற்சிகள் அனைத்திற்கும் இது பொருந்தும். இது TLS சான்றிதழ் சரிபார்ப்பு, பிராக்ஸி அங்கீகாரம், இணைப்பு வரம்புகள் மற்றும் keep-alive அமைப்புகளை மாற்றாமல் பாதுகாக்கிறது. டிஸ்பாச்சர்கள் தற்காலிக சேமிப்பில் வைக்கப்படுவதாலும், ரிலே முகவர்கள் தொடக்கத்தில் உருவாக்கப்படுவதாலும், இதை மாற்றிய பிறகு OmniRoute ஐ மறுதொடங்கவும். இந்த சுவிட்ச் wreq TLS கைரேகையையோ அல்லது வழங்குநருக்கே உரிய போக்குவரத்துகளையோ கட்டுப்படுத்தாது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------------------- | -------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | மேல்நோக்கு அழைப்புகளுக்கான SOCKS5 ப்ராக்ஸி ஏஜென்ட்டை இயக்குகிறது. `false` மூலம் விலக்கலாம். |
| `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | கிளையன்ட் பக்கம் | SOCKS5 கிடைக்கும் தன்மை குறித்த கிளையன்ட் பக்க அறிவு. |
| `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | இயல்புநிலையாக இயக்கப்பட்ட அம்சக் கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ஐப் பார்க்கவும்; டாஷ்போர்டு DB மேலெழுதல் முன்னுரிமை பெறும்). ப்ராக்ஸி குளங்களும் ஒவ்வொரு கணக்கு சுழற்சியும், இப்போதுதான் தோல்வியடைந்த உறுப்பினரை (மறுக்கப்பட்ட TCP ஆய்வு, அல்லது அதன் வழியாக வந்த 429) ஒவ்வொரு மீள்நிகழ்விலும் இருமடங்காகும் காலத்திற்கு, ஒரு உச்சவரம்பு வரை, மீண்டும் வழங்குவதை நிறுத்தும். `false` எளிய தேர்வை மீட்டெடுக்கும். |
| `SELECTOR_CONTROL_ALLOWLIST` | _(அமைக்கப்படவில்லை)_ | `src/lib/proxySubscription/selectorGuard.ts` | லூப்பேக்கைத் தாண்டிய லோக்கல்-கோர் செலெக்டர்-கட்டுப்பாட்டு இலக்குகளுக்கான அனுமதி-பட்டியல் (காற்புள்ளி/இடைவெளியால் பிரிக்கப்பட்ட ஹோஸ்ட்கள் அல்லது IPகள், `*` LAN/தனியார் நெட்வொர்க்கைத் திறக்கும் ஆனால் metadata/link-local ஐ ஒருபோதும் அல்ல). http/https வழியான லூப்பேக் இயல்புநிலையாக அனுமதிக்கப்படுகிறது. அமைக்கப்பட்டு வெற்றற்றதாக இருக்கும்போது, டாஷ்போர்டு DB மதிப்பு இந்த மாறியை விட முன்னுரிமை பெறும். |
| `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 ஒதுக்கீட்டின் அடிப்படைக் காலம் (ms), ஒவ்வொரு மீள்நிகழ்விலும் இருமடங்காகும். தொடக்கத்தில் ஒரு முறை மட்டுமே படிக்கப்படும். `1000..3600000` எல்லைக்குள் கட்டுப்படுத்தப்பட்டது; வரம்புக்கு வெளியே அல்லது படிக்க முடியாத நிலையில் எச்சரிக்கையுடன் இயல்புநிலைக்குத் திரும்பும். |
| `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 ஒதுக்கீட்டின் உச்சவரம்பு (ms). தொடக்கத்தில் ஒரு முறை மட்டுமே படிக்கப்படும். `1000..3600000` எல்லைக்குள் கட்டுப்படுத்தப்பட்டது; வரம்புக்கு வெளியே அல்லது படிக்க முடியாத நிலையில் எச்சரிக்கையுடன் இயல்புநிலைக்குத் திரும்பும். உச்சவரம்பு அடிப்படைக்குக் கீழே இருக்கும்போது, அது இயல்புநிலைக்குத் திரும்பும். உச்சவரம்பைக் குறைப்பது தொடர் மறதியையும் குறைக்கிறது: காலாவதியான பிறகு பதிவுகள் `2 x max` இல் அழிக்கப்படும். |
| `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | தேர்வுசெய்து இயக்கும் அம்சக் கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ஐப் பார்க்கவும்; டாஷ்போர்டு DB மேலெழுதல் முன்னுரிமை பெறும்). கோட்டா ஈகிரஸ் முகவரியால் குவிக்கப்படும் வழங்குநர்களுக்கு, சமீபத்தில் மறுக்கப்பட்ட உறுப்பினரின் கவனிக்கப்பட்ட ஈகிரஸ் முகவரியைப் பகிரும் குள உறுப்பினரை ஆரோக்கியமான உறுப்பினர்களுக்குச் சற்றுக் கீழே தரவரிசைப்படுத்தும். வரிசை மட்டுமே, ஒருபோதும் விலக்கப்படாது. இது படிக்கும் மறுப்பு சமிக்ஞையை உருவாக்கும் `PROXY_SKIP_RECENTLY_FAILED` தேவை. |
| `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | மீள்வெளியீட்டுச் சாளரம் (ms), ஒரு குள உறுப்பினருக்கான மீண்டும் மீண்டும் வரும் `proxy.set_aside` webhook எச்சரிக்கைகளை வரம்பிடுவதால், மறுப்புகளின் பீரிட்டு ஒரே நிகழ்வை அனுப்பும். ஒவ்வொரு வெளியீட்டிலும் படிக்கப்படும். `1000..3600000` எல்லைக்குள் கட்டுப்படுத்தப்பட்டது; வரம்புக்கு வெளியே அல்லது படிக்க முடியாத நிலையில் அமைதியாக இயல்புநிலைக்குத் திரும்பும். |
| `HTTP_PROXY` | _(அமைக்கப்படவில்லை)_ | Node.js தரநிலை | மேல்நோக்கு அழைப்புகளுக்கான HTTP ப்ராக்ஸி. |
| `HTTPS_PROXY` | _(அமைக்கப்படவில்லை)_ | Node.js தரநிலை | மேல்நோக்கு அழைப்புகளுக்கான HTTPS ப்ராக்ஸி. |
| `ALL_PROXY` | _(அமைக்கப்படவில்லை)_ | Node.js தரநிலை | பொதுவான ப்ராக்ஸி (`socks5://` ஐ ஆதரிக்கிறது). |
| `OMNIROUTE_PROXY_ECHO_URL` | _(அமைக்கப்படவில்லை)_ | `src/lib/proxyEchoTarget.ts` | ப்ராக்ஸி எக்ரஸ் ஆய்வுகள் (probes) பயன்படுத்தும் echo-IP இலக்கை ஒரே URL-ஆக நிலைநிறுத்துகிறது. அமைக்கப்படாவிட்டால், IPv4-மட்டும் டன்னல்கள் இறந்ததாகத் தவறாக அறிவிக்கப்படாதபடி, ஆய்வு முதலில் `api64.ipify.org` ஐயும் பின்னர் `api4.ipify.org` ஐயும் முயற்சிக்கும் (#9694). |
| `NO_PROXY` | _(அமைக்கப்படவில்லை)_ | Node.js standard | ப்ராக்ஸியைத் தவிர்க்க வேண்டிய, காற்புள்ளியால் பிரிக்கப்பட்ட ஹோஸ்ட்பெயர்கள்/IP முகவரிகள். |
| `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | தற்காலிக சேமிப்பிலுள்ள (cached) ஒவ்வொரு HTTP/SOCKS ப்ராக்ஸி டிஸ்பாச்சருக்கும் அதிகபட்ச ஒரேநேர சாக்கெட்டுகள். பல கோரிக்கைகள் ஒரே கணக்கு-நிலை ப்ராக்ஸியைப் பகிரும்போது, Codex `/v1/responses` போன்ற நீண்டகால SSE ஸ்ட்ரீம்களுக்கு ஒன்றுக்கு மேற்பட்ட இணைப்புகள் தேவைப்படும். `256`-க்கு மேலான மதிப்புகள் வரம்பிடப்படும். |
| `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | SOCKS5 ஹேண்ட்ஷேக் (இணைப்பு) நேரமுடிவு, மில்லிவிநாடிகளில். ஒரே ரெசிடென்ஷியல் கேட்வே ஹோஸ்ட் அதிக ஒருங்கிணைப்பால் (எ.கா. 100 ஒரேநேரக் கோரிக்கைகள்) பாதிக்கப்படும்போது இதை அதிகரிக்கவும் — ப்ராக்ஸி அணுகக்கூடியதாகவே இருந்தாலும், நிரம்பிய பூலில் உண்மையான ஹேண்ட்ஷேக் 10 வினாடிகளைத் தாண்டலாம்; இல்லையெனில் அது தவறான `[Proxy Fast-Fail] Proxy unreachable` ஆகத் தென்படும். `120000`-இல் வரம்பிடப்பட்டுள்ளது. |
| `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | `false` (இயல்புநிலை) எனில், ஒதுக்கப்பட்ட ப்ராக்ஸியைத் தீர்மானிக்க முடியாத கோரிக்கை நேரடி இணைப்பை நாடாமல் **நிராகரிக்கப்படும் (fail-closed)** — உண்மையான IP கசிவைத் தடுக்கிறது. பழைய DIRECT மாற்றுப்பாதையை மீட்டெடுக்க `true` என அமைக்கவும். |
| `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | wreq-js ஐப் பயன்படுத்தி TLS கைரேகையை மாற்றியமைக்கிறது (Chrome 124 ஐப் பிரதிபலிக்கிறது). JA3/JA4 தடையை எதிர்கொள்கிறது. |
| `TLS_FINGERPRINT_PROVIDERS` | _(அமைக்கப்படவில்லை)_ | `open-sse/utils/proxyFetch.ts` | புதிய ப்ராக்ஸி வழி TLS ரூட்டிங்கிற்கான (`open-sse/utils/proxyFetch.ts`) காற்புள்ளியால் பிரிக்கப்பட்ட வழங்குநர் அனுமதிப்பட்டியல். அமைக்கப்படாவிட்டால் நேரடி TLS தனது பழைய நடத்தையையே தொடரும்; இந்த வழங்குநர்கள் மட்டுமே Chrome-124 கைரேகை பாலம் வழியாகச் செல்வார்கள். native undici API ஐ அடைந்துவிடும்போதும் Chrome JA3 Cloudflare 1010 ஐத் தூண்டுவதால், அனுமதிப்பட்டியல் அமைக்கப்படாதபோதும் Groq (`api.groq.com`) விலக்கப்படுகிறது. |
| `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Claude Turnstile Playwright உலாவி சூழல் HTTPS சான்றிதழ் பிழைகளைப் புறக்கணிக்க அனுமதிக்கிறது. |
### சூழ்நிலைகள்
| சூழ்நிலை | உள்ளமைவு |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **SSH டன்னல் வழியாக SOCKS5** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` |
| **நிறுவன HTTP ப்ராக்ஸி** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` |
| **கைரேகை எதிர்ப்பு** | `ENABLE_TLS_FINGERPRINT=true` — `wreq-js` தேவை (சேர்க்கப்பட்டுள்ளது) |
| **எக்ரஸ்-கட்டுப்படுத்தப்பட்ட / நேரடி அணுகல் இல்லை** | `PROXY_FAIL_OPEN=false` (இயல்புநிலை) எனவே விடவும். நேரடி வழியாகக் கசிவதற்குப் பதிலாக, ப்ராக்ஸி கிடைக்காதபோது கோரிக்கைகள் கடினமாகத் தோல்வியடையும். |
| **பழைய / டெவ் — நேரடி மாற்றுப்பாதையை அனுமதி** | `PROXY_FAIL_OPEN=true`. கடினப்படுத்தலுக்கு முந்தைய நடத்தையை மீட்டெடுக்கிறது: ப்ராக்ஸி தீர்மானம் தோல்வியடையும்போது நேரடி இணைப்பு பயன்படுத்தப்படும். |
> **குறிப்பு (NVIDIA சரிபார்ப்பு பைபாஸ் — #3226):** NVIDIA-இன் API-key சரிபார்ப்பு முனைப்புள்ளி,
> உலகளாவிய ப்ராக்ஸி/TLS-இணைக்கப்பட்ட ஃபெட்ச் வழியாக அனுப்பப்படும்போது நிலைத்துவிடுகிறது
> (undici டிஸ்பாச்சர் → 504).
> `src/lib/providers/validation.ts::directHttpsRequest()` அந்த ஒரு சரிபார்ப்பு அழைப்புக்காக
> `safeOutboundFetch({ bypassProxyPatch: true })` ஐப் பயன்படுத்தி ப்ராக்ஸி இணைப்பை வேண்டுமென்றே தவிர்க்கிறது.
> இது ஆவணப்படுத்தப்பட்ட, வரம்பிடப்பட்ட விதிவிலக்கு — இது chat/usage எக்ரஸை **பாதிக்காது**.
> இந்த பைபாஸ் `tests/unit/proxy-bypass-scope-guard-3226.test.ts` ஆல் வரம்பில் நிலைநிறுத்தப்பட்டுள்ளது.
---
## 9. CLI கருவி ஒருங்கிணைப்பு
OmniRoute CLI சைட்கார்களை (Claude Code, Codex போன்றவை) எவ்வாறு கண்டறிந்து தொடங்குகிறது என்பதைக் கட்டுப்படுத்துகிறது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| --------------------------------- | -------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = கணினி PATH-இல் தேடும்; `manual` = வெளிப்படையான பாதைகளை மட்டுமே பயன்படுத்தும். |
| `CLI_EXTRA_PATHS` | _(அமைக்கப்படவில்லை)_ | `src/shared/services/cliRuntime.ts` | CLI பைனரி கண்டறிதலுக்கான கூடுதல் PATH பதிவுகள் (கோலனால் பிரிக்கப்பட்டவை). |
| `CLI_CONFIG_HOME` | _(அமைக்கப்படவில்லை)_ | `src/shared/services/cliRuntime.ts` | CLI கட்டமைப்புகளைப் (`~/.claude`, `~/.codex`) படிப்பதற்கான ஹோம் கோப்பகத்தை மேலெழுதுகிறது. முழுமையான (absolute) பாதையாகவும், செயல்முறை ஹோமுக்குள் இருக்க வேண்டும் — **அல்லது**, கண்டெய்னரில், bind-mounted பாதையாக இருக்க வேண்டும் (இதுவே `/host-home` செயல்படும் விதம்). வேறு எதுவும் ஹோம் கோப்பகத்திற்கே திரும்பும். |
| `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | OmniRoute-ஐ CLI கட்டமைப்புக் கோப்புகளை எழுத அனுமதிக்கிறது (டோக்கன் புதுப்பிப்பு, அமர்வு தரவு). ஒவ்வொரு CLI கட்டமைப்பு எழுத்தும் வெளிப்படையான "writes disabled" பிழையுடன் தோல்வியடைய `false` என அமைக்கவும். |
| `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Claude CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Codex CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Droid CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | OpenClaw CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_CURSOR_BIN` | `agent`, பின்னர் `cursor` | `src/shared/services/cliRuntime.ts` | Cursor agent பைனரிக்கான தனிப்பயன் பாதை. இது இல்லையென்றால், கண்டறிதல் முதலில் `agent`-ஐ முயற்சித்து, பின்னர் `cursor`-க்குத் திரும்பும். |
| `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Cline CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | 5dive CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | 5dive-ன் கணினி நிலை கோப்பகம் (root-உரிமை அங்கீகார சுயவிவரங்கள்); 5dive-ன் சொந்த STATE_DIR இயல்புநிலையைப் பிரதிபலிக்கிறது. |
| `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Continue CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Qoder CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Qwen Code CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Aider CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Goose CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Google Gemini CLI பைனரிக்கான தனிப்பயன் பாதை — சர்வர்-பக்க கண்டறிதல்/நிலை சரிபார்ப்புகளுக்கு மட்டுமே; `omniroute run gemini` கணினி PATH-இலிருந்து `gemini` பைனரியை தீர்மானிக்கிறது. |
| `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Kilo Code CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | OpenCode CLI பைனரிக்கான தனிப்பயன் பாதை. |
| `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Hermes binary-க்கான தனிப்பயன் பாதை. இரண்டு catalog entries (`hermes` மற்றும் `hermes-agent`) ஆலும் பகிரப்படுகிறது. |
| `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | ForgeCode CLI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | jcode CLI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | DeepSeek TUI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | CodeWhale CLI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Smelt CLI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Pi (pi-coding-agent) binary-க்கான தனிப்பயன் பாதை. |
| `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Crush CLI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Oh My Pi (`omp`) agent binary-க்கான தனிப்பயன் பாதை. |
| `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Letta CLI binary-க்கான தனிப்பயன் பாதை. |
| `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Prime Agent (Prime Intellect) binary-க்கான தனிப்பயன் பாதை. |
| `CLI_WINDSURF_BIN` | _(எதுவுமில்லை)_ | `src/shared/services/cliRuntime.ts` | Windsurf binary-க்கான தனிப்பயன் பாதை. Windsurf **இயல்புநிலைக் கட்டளை எதுவும்** வழங்குவதில்லை — இது அமைக்கப்படும் வரை binary கண்டறிதல் முடக்கப்பட்டே இருக்கும். |
| `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Devin CLI binary (v3.8.0)-க்கான தனிப்பயன் பாதை. Windsurf/Devin executor ஆல் பயன்படுத்தப்படுகிறது. |
| `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin Desktop `ide_version`. Overrides `x.y.z` வடிவத்தில் இருக்க வேண்டும்; தவறான மதிப்புகள் சரிபார்க்கப்பட்ட இயல்புநிலைக்குத் திரும்பும். |
| `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | Desktop `ide_version`-இலிருந்து வேறுபட்ட, bundled Codeium/language-server `extension_version`. Overrides `x.y.z`-இல் இருக்க வேண்டும்; தவறான மதிப்புகள் bundled இயல்புநிலையைப் பயன்படுத்தும். |
| `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Agentic bridge-க்கு மட்டுமேயான Devin CLI override. Executor உள்ளூர் ACP stdio upstream-ஐ மட்டுமே ஏற்கிறது. |
| `DEVIN_AGENTIC_HOME` | _(தேவை)_ | `open-sse/executors/devin-cli-agentic.ts` | Agentic Devin subprocess-க்கான முழுமையான தனிமைப்படுத்தப்பட்ட home; ஏற்கப்படும் bridge பாதைகள் `/home/bridge` மற்றும் task-local `.sandbox` பாதைகள் (Windows-இல், `C:\...\.sandbox\...`). |
| `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Bridge child-ஐ நிறுத்தி வெளிப்படையான timeout-ஐத் திருப்பும் முன், ஒரு Devin ACP turn-இன் அதிகபட்ச காலம். |
| `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | தனிமைப்படுத்தப்பட்ட bridge-க்கான முக்கிய Claude Code model alias. Live harness, தற்போதைய Devin account திருப்பும் model-ஆல் உதாரணத்தை மாற்றிவிடும். |
| `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code தனது Sonnet இயல்புநிலையைக் கோரும்போது பயன்படுத்தப்படும் தனிமைப்படுத்தப்பட்ட bridge alias. |
| `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code தனது Opus இயல்புநிலையைக் கோரும்போது பயன்படுத்தப்படும் தனிமைப்படுத்தப்பட்ட bridge alias. |
| `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code தனது Haiku இயல்புநிலையைக் கோரும்போது பயன்படுத்தப்படும் தனிமைப்படுத்தப்பட்ட bridge alias. |
| `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code subagents-க்குப் பயன்படுத்தப்படும் தனிமைப்படுத்தப்பட்ட bridge alias. |
| `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Devin CLI quota (`GetUserStatus`) பயன்படுத்தும் Codeium seat-management APIக்கான விருப்ப மேலெழுதல் (override). |
| `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | உள்ளூர் `auggie` வழங்குநர் பயன்படுத்தும் Augment (Auggie) CLI binaryக்கான முழுப் பாதை மேலெழுதல். இது இல்லையெனில் `CLI_AUGGIE_BIN`, பின்னர் PATH தேடல் என மாற்றுப் பயன்படும். |
| `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Augment (Auggie) CLI binary பாதைக்கான மாற்றுப் பெயர் (alias) மேலெழுதல் (`AUGGIE_BIN`க்குப் பிறகு சரிபார்க்கப்படும்). |
| `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | உள்ளூர் `zcode` வழங்குநரின் stdio clientக்காகப் பயன்படுத்தப்படும் binary. இது இல்லையெனில் PATH இல் உள்ள `zcode` பயன்படும். |
| `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | `cliTools` வழியாக தொடங்கப்படும்போது `zcode` binaryக்கு அனுப்பப்படும் கூடுதல் argumentsகளின் JSON array (≤16 சரங்கள்). |
| `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | ZCode app-server துணைச் செயல்முறையின் (subprocess) பணி அடைவு. |
| `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | app-serverக்கு அனுப்பப்படும் provider idக்கான மேலெழுதல். |
| `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | ZCode app-server runtime இன் மூல அடைவு (உள்ளடக்கிய `node` மற்றும் `zcode-server.cjs` இருக்கும் இடம்). |
| `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | ZCode app-serverஐ இயக்கப் (host) பயன்படுத்தப்படும் Node executable. |
| `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | ZCode serverஐ இயக்கப் பயன்படுத்தப்படும் app-server நுழைவு ஸ்கிரிப்ட் (entry script). |
| `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | ZCode app-server தொடக்கம் தோல்வியடைந்ததாகக் கருதப்படுவதற்கு முந்தைய தொடக்க காலக்கெடு (ms). |
| `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | ZCode app-server அழைப்பிற்கான ஒவ்வொரு கோரிக்கைக்குமான RPC காலக்கெடு (ms). |
| `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | மேற்பார்வையாளர் (supervisor) காலக்கெடு முடிப்பதற்கு முன் ஒரு ZCode turn இன் அதிகபட்ச கால அளவு (ms). |
| `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | ZCode turn நிறைவுக்கான polling இடைவெளி (ms). |
| `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | OmniRoute Hermes CLI configஐப் படிக்கும்/எழுதும் Hermes Agent முகப்பு அடைவு. Windows இல் Hermes PowerShell installer அமைக்கும் env var (`%LOCALAPPDATA%\hermes`) உடன் பொருந்துகிறது. |
### CLI சுயவிவர தானியங்கு ஒத்திசைவு
இந்த feature flagகள் opt-in ஆகும், மேலும் இயல்பாக அணைக்கப்பட்டிருக்கும். அவற்றை
CLI Code டாஷ்போர்டிலிருந்தும் மாற்றலாம் (toggle).
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------- | ---------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | வழங்குநர் மாதிரி ஒத்திசைவுக்குப் பிறகு, நேரடி பட்டியலில் இருந்து `~/.codex/*.config.toml` சுயவிவரக் கோப்புகளை தானாகவே மீண்டும் எழுதும். `CLI_ALLOW_CONFIG_WRITES` தேவை; செயலில் உள்ள/இயல்புநிலை Codex config, auth, Codex-lb அமைப்புகள் அல்லது வழங்குநர் தேர்வை ஒருபோதும் மாற்றாது. |
| `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | வழங்குநர் மாதிரி ஒத்திசைவுக்குப் பிறகு, நேரடி பட்டியலில் இருந்து `~/.claude/profiles//settings.json` Claude Code சுயவிவரக் கோப்புகளை தானாகவே மீண்டும் எழுதும். `CLI_ALLOW_CONFIG_WRITES` தேவை; செயலில் உள்ள/இயல்புநிலை Claude config, auth அல்லது வழங்குநர் தேர்வை ஒருபோதும் மாற்றாது. |
### Docker உதாரணம்
```bash
# host binaryகளை container இல் இணைத்து (mount), அவை எங்கே உள்ளன என்பதை OmniRouteக்குத் தெரிவிக்கவும்:
CLI_EXTRA_PATHS=/host-cli/bin
CLI_CONFIG_HOME=/host-home
CLI_ALLOW_CONFIG_WRITES=true
CLI_CLAUDE_BIN=/host-cli/bin/claude
```
`CLI_CONFIG_HOME` என்பது பாதை ஹோஸ்டிலிருந்து உண்மையில் bind-mount செய்யப்பட்டிருக்கும்போது மட்டுமே செயல்படும் — அதை `~/.codex:/host-home/.codex:rw` போன்ற mount-களுடன் இணைக்கவும் (`docker-compose.yml`-இல் உள்ள `host` profile-ஐப் பார்க்கவும்). கன்டெய்னர் பயனரின் ஹோமுக்குள் இல்லாமலும் bind mount-ஆகவும் இல்லாத பாதை புறக்கணிக்கப்படும், ஏனெனில் கன்டெய்னர் மீண்டும் உருவாக்கப்படும்போது அங்கு எழுதப்பட்டவை களையப்படும்.
இந்த இமேஜ் `USER node` ஆக இயங்குகிறது, எனவே mount செய்யப்படாத `/root` என்பது சரியான override **அல்ல**.
| மாறி | இயல்புநிலை | மூல கோப்பு | விளக்கம் |
| ---------------------------------------- | ---------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CONTAINER` | _(தானியங்கு)_ | `src/shared/utils/containerEnv.ts` | கன்டெய்னர் கண்டறிதலை ஆன் (`1`/`true`) அல்லது ஆஃப் (`0`/`false`) என கட்டாயப்படுத்துகிறது. தானியங்கு கண்டறிதல் தவறவிடும் ரன்டைம்களில் மட்டுமே தேவை. |
| `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | mount செய்யப்படாத கன்டெய்னர் பாதையிலும் CLI-கருவி கன்ஃபிக் எழுதுதல்களை எப்படியும் அனுமதிக்கிறது. இதற்கு சமமான CLI விருப்பம் `--allow-container-write`. |
| `DOCKER_UPDATE_TRIGGER_FILE` | அமைக்கப்படவில்லை | `src/lib/system/autoUpdate.ts` | Docker இமேஜ் மட்டும்: ஹோஸ்ட்-பக்க watcher கன்டெய்னரை pull செய்து மீண்டும் உருவாக்குவதற்காக, டாஷ்போர்டு **இப்போது புதுப்பி** இந்த கோப்பில் ஒரு JSON கோரிக்கையை எழுதுகிறது (`DATA_DIR`-க்குள் இருக்க வேண்டும்). [Docker வழிகாட்டி](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker)-ஐப் பார்க்கவும். |
### CLI பைனரி (`omniroute`) உதவியாளர்கள்
இந்த மாறிகள் `omniroute` CLI பைனரியின் சொந்த நடத்தையை சரிசெய்கின்றன (மேலே உள்ள sidecar கண்டறிதலை அல்ல).
| மாறி | இயல்புநிலை | மூல கோப்பு | விளக்கம் |
| ------------------------------------- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_LANG` | _(சிஸ்டம்)_ | `bin/cli/i18n.mjs` | CLI வெளியீட்டு மொழியை கட்டாயப்படுத்துகிறது. BCP-47 locale (எ.கா. `en`, `pt-BR`). சிஸ்டம் locale env மாறிகளை (LC_ALL, LC_MESSAGES) மேலெழுதுகிறது. |
| `OMNIROUTE_SHOW_LOG` | _(அமைக்கப்படவில்லை)_ | `bin/cli/runtime/processSupervisor.mjs` | மேற்பார்வை முறையில் சர்வர் stdout/stderr-ஐ டெர்மினலுக்கு அனுப்ப `1` என அமைக்கவும். `omniroute serve`-இல் உள்ள `--log` flag-க்கு சமம். |
| `OMNIROUTE_CLI_TOKEN` | _(அமைக்கப்படவில்லை)_ | `bin/cli/api.mjs` | `x-omniroute-cli-token` header ஆக செலுத்தப்படும் மெஷின்-அங்கீகார டோக்கன். பணி 8.12-இல் தானாக உருவாக்கப்படுகிறது. |
| `GEMINI_CLI_HOME` | _(அமைக்கப்படவில்லை)_ | `bin/cli/commands/setup-gemini.mjs` | நிரந்தர Gemini ஹோம் ரூட்; ஒரு-முறை இயக்கம் தற்காலிகமான தனிமைப்படுத்தப்பட்ட ஹோமைப் பயன்படுத்துகிறது. |
| `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | signal செய்யப்பட்ட CLI சைல்டை கட்டாயமாக முடிப்பதற்கு முன் மில்லிவினாடிகளில் grace காலம். |
| `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(அமைக்கப்படவில்லை)_ | `bin/omniroute.mjs` | இயல்புநிலை பயனரின் டேட்டா டைரக்டரி சூழல் கோப்பைத் தவிர்க்க, வெளிப்படையான DATA_DIR உடன் 1 என அமைக்கவும். |
| `OMNIROUTE_SYNC_TOKEN` | _(அமைக்கப்படவில்லை)_ | `bin/cli/commands/sync.mjs` | `omniroute sync bundle`-க்கான சிங்க் டோக்கன் (`GET /api/sync/bundle` API key-ஐ அல்ல, சிங்க் டோக்கனை மட்டுமே ஏற்கும்). `--token`-க்கு சமம். |
| `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | CLI → சர்வர் கோரிக்கைகளுக்கான ஒவ்வொரு முயற்சிக்குமான HTTP டைம்அவுட் (ms). |
| `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | டைம்அவுட் எச்சரிக்கையை அச்சிடுவதற்கு முன் சர்வர் ஹெல்த் எண்ட்பாயிண்டுக்காக CLI காத்திருக்கும் அதிகபட்ச நேரம் (ms). மெதுவான கோல்டு ஸ்டார்ட்களுக்கு பயனுள்ளது (எ.கா. Windows). `--ready-timeout` மூலமும் அமைக்கலாம். |
| `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | CLI கட்டளைகளின் போது மீள்முயற்சி/backoff நோயறிதல் தகவல்களை stderr-இல் அச்சிட `1` என அமைக்கவும். |
| `OMNIROUTE_PLUGIN_PATH` | _(அமைக்கப்படவில்லை)_ | `bin/cli/plugins.mjs` | CLI பிளகின் கண்டறிதலுக்கான தனிப்பயன் டைரக்டரி (`omniroute-cmd-*` தொகுப்புகள்). அமைக்கப்படாதபோது `~/.omniroute/plugins/` இயல்புநிலையாகும். CLI-மட்டும் — இது `OMNIROUTE_PLUGINS_DIR` (பிரிவு 2) சுட்டிக்காட்டும் சர்வர்-பக்க பிளகின் ஸ்கேனரை ஒருபோதும் அடையாது. |
| `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(அமைக்கப்படவில்லை)_ | `bin/omniroute.mjs` | வெற்றற்ற எந்த மதிப்பாகவும் அமைக்கப்பட்டிருக்கும்போது ப்ராசஸ் வெளியேற்றத்தில் CLI புதுப்பிப்பு அறிவிப்பை அடக்குகிறது. CI, quiet முறை மற்றும் உரை-அல்லாத வெளியீட்டு முறைகளிலும் இந்த அறிவிப்பு தனித்தனியாக முடக்கப்பட்டே இருக்கும். |
| `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(தருவிக்கப்பட்டது)_ | `bin/cli/commands/doctor.mjs` | `omniroute doctor` சோதிக்கும் லைவ்னஸ் URL. ப்ரோகிரம்மேட்டிக் `livenessUrl` விருப்பம் முன்னுரிமை பெறும்; இல்லையெனில் இந்த மதிப்பு அப்படியே பயன்படுத்தப்படுகிறது. அமைக்கப்படாதபோது, CLI உள்ளூர் டாஷ்போர்டின் `/api/health/degradation` எண்ட்பாயிண்டைத் தருவிக்கிறது. |
| `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | CLI provider கட்டளைகளால் பயன்படுத்தப்படும் provider கேட்டலாக் பாதை. ப்ரோகிரம்மேட்டிக் `catalogPath` விருப்பம் முன்னுரிமை பெறும். முழுமையான பாதைகள் அப்படியே பயன்படுத்தப்படும்; சார்பு பாதைகள் ப்ராஜெக்ட் ரூட்டிலிருந்து தீர்க்கப்படும். அமைக்கப்படாதபோது, CLI provider constants டைரக்டரியைப் பயன்படுத்துகிறது, பழைய `providers.ts` கோப்பு fallback-ஆக இருக்கும். |
| `OMNIROUTE_PROVIDER_TEST_MODEL` | _(provider இயல்புநிலை)_ | `bin/cli/provider-test.mjs` | CLI provider இணைப்பு சோதனைகளுக்கான உலகளாவிய fallback மாடல். முன்னுரிமை வரிசை: கன்ஃபிகர் செய்யப்பட்ட கனெக்ஷன் மாடல், provider-குறிப்பிட்ட மாடல் override, இந்த மதிப்பு, பின்னர் provider-இன் உள்ளமைந்த சோதனை மாடல். |
---
## 10. உள் ஏஜெண்ட் & MCP ஒருங்கிணைப்புகள்
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_BASE_URL` | தானியங்கு கண்டறிதல் | `open-sse/mcp-server/server.ts` | OmniRoute-ஐ அடைய MCP/A2A கருவிகளுக்கான வெளிப்படையான URL. localhost தானியங்கு கண்டறிதலை மேலெழுதுகிறது. |
| `OMNIROUTE_API_KEY` | _(அமைக்கப்படவில்லை)_ | MCP/A2A தொகுதிகள் | உள் MCP கருவி மற்றும் A2A திறன் அழைப்புகளுக்கான API விசை. |
| `OMNIROUTE_API_KEY_ID` | _(அமைக்கப்படவில்லை)_ | `open-sse/mcp-server/audit.ts` | MCP தணிக்கை பதிவு பணியாக்கத்திற்கான (attribution) விசை ID. |
| `ROUTER_API_KEY` | _(அமைக்கப்படவில்லை)_ | பழைய | `OMNIROUTE_API_KEY`-க்கான பழைய மாற்றுப் பெயர். |
| `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | தினசரி சுத்தம் ஒரு வரிசையை நீக்குவதற்கு முன் உள்ளூர் தரவுத்தளத்தில் வைத்திருக்கப்படும் A2A பணி வரலாற்றின் நாட்கள். அமைக்கப்படாதது, எண் அல்லாதது, அல்லது `<= 0` எனில் `30`-க்குத் திரும்பும். |
| `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | A2A memory-hits கண்காணிப்பு அம்சத்திற்கான கில்-சுவிட்ச். ஒரு பணிக்கான நினைவக திரும்பப்பெறல் தேடலை முழுவதுமாகத் தவிர்க்க `0` என அமைக்கவும்; வேறு எந்த மதிப்பும் (அமைக்கப்படாதது உட்பட) அதை இயக்கப்பட்ட நிலையில் வைக்கும். |
| `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | ஆஃப்லைன்/உள்ளூர் Issue Agent பதிவுசெய்யப்பட்ட-மதிப்பாய்வு முனைப்பை (endpoint) இயக்குகிறது. உள்ளூர் பதிவுசெய்யப்பட்ட-மதிப்பாய்வு பணிப்பாய்வுகளை வெளிப்படையாக இயக்காத வரை முடக்கியே வைக்கவும். |
| `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(அமைக்கப்படவில்லை)_ | `src/lib/issueAgent/execution.ts` | ஒரு Issue Agent பதிவுசெய்யப்பட்ட-மதிப்பாய்வு இயக்கத்திற்கான காலக்கெடு (ms). உள் அதிகபட்சத்தில் வரம்புபடுத்தப்படுகிறது; அமைக்கப்படாத போது அல்லது தவறானதாக இருந்தால் உள்ளமைந்த இயல்புநிலைக்குத் திரும்பும். |
| `OMNIROUTE_CONTEXT` | _(செயலில் உள்ள சூழல்)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | `omniroute` கட்டளைகளுக்கான CLI தொலை-பயன்முறை சூழல்/சுயவிவரம்; உள்ளூர் சூழல் சேமிப்பகத்தில் உள்ள செயலில் உள்ள சூழலை மேலெழுதுகிறது. `--context `-க்கு சமம். |
| `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | CLI சூழல் நற்சான்றுகளுக்கான விருப்ப `keytar` OS-keychain பின்தளத்தை முடக்குகிறது. இயக்கப்பட்டிருக்கும்போது, நற்சான்றுகள் `config.json` முறை `0600`-இலேயே இருக்கும், மேலும் CLI ஒரு முறை fallback எச்சரிக்கையை வெளியிடுகிறது; வேண்டுமென்றே திட்டமிட்ட headless/கொள்கலன் (container) இயக்கத்திற்காக உத்தேசிக்கப்பட்டது. |
| `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | MCP கருவி அழைப்புகளில் நோக்கு-அடிப்படையிலான அணுகல் கட்டுப்பாட்டை செயல்படுத்துகிறது. |
| `OMNIROUTE_MCP_SCOPES` | _(அனைத்தும்)_ | `open-sse/mcp-server/server.ts` | காற்புள்ளியால் பிரிக்கப்பட்ட நோக்கங்கள்: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. |
| `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | விவரிப்பை (manifest) தொடரமைப்பதற்கு முன் MCP கருவி விளக்கங்களை சுருக்குகிறது. இயக்கும் மதிப்புகள்: `1`, `true`, `on`. |
| `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | சுருக்க வழிமுறை/சுயவிவரம். முடக்கும் மதிப்புகள்: `0`, `false`, `off`. |
| `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | MCP-சேவையக உள் மேலாண்மை வாசிப்புகளுக்கான (நலம், மீள்தன்மை, combos, ஒதுக்கீடு, பயன்பாடு) நிறுத்த வரம்பு (ms). |
| `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | ஒரு வழங்குநரை நம்பி காத்திருக்கும் MCP ஹாப்களுக்கான நிறுத்தும் (abort) கால எல்லை (ms) (`route_request`, `web_search`, `web_fetch`). |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | நினைவகத்தில் தேக்கமாக வைக்கப்படும் உள்ளக-கார்பஸ் (local-corpus) குறியீட்டு நிகழ்வுகளின் அதிகபட்ச எண்ணிக்கை (LRU, ஒவ்வொரு குறியீடு செய்யப்பட்ட ரூட் அடைவுக்கும் ஒன்று). குறைந்தபட்சம் `1` ஆகக் கட்டுப்படுத்தப்படுகிறது. |
| `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | மாதிரி பட்டியல் ஒத்திசைவு இடைவெளி (மணிநேரங்களில்). |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | வழங்குநர் விகித வரம்பு மற்றும் ஒதுக்கீட்டு வாக்கெடுப்பு (polling) இடைவெளி. |
| `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | மொத்த ஒத்திசைவில் தொடர்ச்சியான OAuth ஒதுக்கீட்டு பெறுதல்களுக்கு இடையிலான இடைவெளி (ms); அப்ஸ்ட்ரீமில் சுமை மொத்தமாக ஏற்படுவதைத் தவிர்க்க OAuth இணைப்புகள் ஒரு நேரத்தில் ஒன்றாகப் பெறப்படுகின்றன. `0` இதை விலக்கிவிடும் (ஒரேநேர இயக்கம்). |
| `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | ஒவ்வொரு-கோரிக்கை முன்சரிபார்ப்பு/கண்காணிப்பு (preflight/monitor) பாதையில் தொடர்ச்சியான அப்ஸ்ட்ரீம் ஒதுக்கீட்டு பெறுதல்களுக்கு இடையிலான குறைந்தபட்ச இடைவெளி (ms); ஒரே IP-யில் உள்ள பல கணக்குகள் அப்ஸ்ட்ரீமில் சுமையை மொத்தமாக ஏற்படுத்தாமல் இருக்க ஒரேநேர நெட்வொர்க் அழைப்புகளை இடைவெளியிடுகிறது. Codex (`/wham/usage`), DeepSeek, Bailian (இரண்டு பெறும் தளங்களும்), OpenCode மற்றும் Crof ஒதுக்கீட்டு பெறுவோருடன் இணைக்கப்பட்டுள்ளது (#6009, #6911). பொதுவான `usage.ts::getUsageForProvider` அனுப்பும் பாதை (github/glm/minimax/nanogpt/xai/etc.) இன்னும் உள்ளடக்கப்படவில்லை — தனித்தனியாகக் கண்காணிக்கப்படுகிறது. தேக்ககத் தாக்கங்கள் (cache hits) பாதிக்கப்படாது. `0` முடக்கும்; `0..60000` வரம்பில் கட்டுப்படுத்தப்படுகிறது. |
| `OMNIROUTE_QUOTA_FETCH_JITTER_MS` | `120` | `open-sse/services/quotaFetchThrottle.ts` | கூடுதல் ஒவ்வொரு-கோரிக்கை சீரற்ற இடைவெளி (ms), ஒவ்வொரு ஒதுக்கப்பட்ட அப்ஸ்ட்ரீம் ஒதுக்கீட்டு பெறுதலிலும் மாதிரி எடுக்கப்படுகிறது. இயல்பாக 120; `0..60000` வரம்பில் கட்டுப்படுத்தப்படுகிறது; `0` ஜிட்டரை மட்டும் நீக்குகிறது. முழு திராட்டலையும் முடக்க `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS=0` என அமைக்கவும். ஜிட்டர் அப்ஸ்ட்ரீம் தடைகளைத் தடுப்பதற்கு உத்தரவாதம் அளிக்காது. |
| `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | உண்மையான பயன்பாட்டு நிகழ்வுக்குப் பிறகு வழங்குநர் வரம்புகளைப் புதுப்பிப்பதற்கு முன்னுள்ள தாமதம் (ms), அப்ஸ்ட்ரீம் ஒதுக்கீட்டு API-க்கு நுகர்வைப் பதிவுசெய்ய நேரம் தருகிறது. |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | தானியங்கு கண்டறிதல் | `open-sse/services/adobeFireflyBrowserLogin.ts` | ஊடாடும் Adobe Firefly உள்நுழைவு மற்றும் திரைக்கு வெளியே புதுப்பிப்பதற்காகப் பயன்படுத்தப்படும் கணினி Chrome அல்லது Edge இயங்கக்கூடியதன் முழுமையான பாதை. |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | இயக்கப்பட்டது | `open-sse/services/adobeFireflySession.ts` | கணக்கு-எல்லை Chrome CDP அமர்வுகளுடன் IMS மற்றும் உலாவி-அபாய நிலையைப் புத்துணர்வாக வைத்திருக்கிறது. உலாவி புதுப்பிப்பை முடக்க `0` என அமைக்கவும். |
| `ADOBE_FIREFLY_SESSION_DISK` | இயக்கப்பட்டது | `open-sse/services/adobeFireflySession.ts` | செயல்முறை மறுதொடக்கங்களிலும் `DATA_DIR`-க்குக் கீழ் சரிசெய்யப்பட்ட Adobe அமர்வுகளை நிலைநிறுத்துகிறது. அமர்வுகளை நினைவகத்தில் மட்டுமே வைத்திருக்க `0` என அமைக்கவும். |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly உருவாக்க சமர்ப்பிப்புகளுக்கு இடையிலான குறைந்தபட்ச இடைவெளி (மில்லிவிநாடிகளில்); `0` இடைவெளியை முடக்கும். |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | ஒவ்வொரு மூன்றாவது வெற்றிகரமான Adobe சமர்ப்பிப்புக்குப் பிறகும் கூடுதல் அமைதிக் காலம் (மில்லிவிநாடிகளில்). |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | தற்காலிக Adobe 408 பதில்களுக்குப் பிறகு அடிப்படை பின்வாங்கல் (backoff) மில்லிவிநாடிகளில்; அதிகபட்சம் ஐந்து முயற்சிகளில் சமர்ப்பிப்பு இடைவெளியுடன் இணைக்கப்படுகிறது. |
| `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | அனைத்து பின்னணி சேவைகளையும் முடக்கு (ஒத்திசைவு, விலை நிர்ணயம், மாதிரி புதுப்பிப்பு). CI/test-க்குப் பயனுள்ளது. |
| `OMNIROUTE_HEADLESS` | _(அமைக்கப்படவில்லை)_ | `src/lib/system/headless.ts` | ப்ராக்ஸி-எஞ்சின்-மட்டும் துவக்கம்: விருப்ப துணை அமைப்புகளைத் தவிர்க்கிறது, `/dashboard` → 404. `omniroute serve --headless`-ஐப் போலவே. [HEADLESS.md](../guides/HEADLESS.md)-ஐப் பார்க்கவும். |
| `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(அமைக்கப்படவில்லை)_ | `src/lib/config/runtimeSettings.ts` | தானியக்கச் சோதனை கண்டறியப்படும்போது பின்னணிப் பணிகளைக் கட்டாயமாக இயக்கும். சோதனை heuristic-ஐ மீற `1` என அமைக்கவும். |
| `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | பட்ஜெட் மீட்டமைப்புச் சரிபார்ப்பின் இடைவெளி (ms). குறைந்தபட்சம் `10000`. |
| `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | முன்செயலாக்க இணைப்பு cooldown மீட்பு இடைவெளி (ms): தற்காலிக `rate_limited_until` காலாவதியான இணைப்புகளைக் கோரிக்கையின் முக்கிய செயல்பாட்டுப் பாதைக்கு வெளியே மீண்டும் சரிபார்க்கும். குறைந்தபட்சம் `5000`. |
| `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | முன்செயலாக்க இணைப்பு cooldown மீட்பு திட்டமிடியை முடக்கும் (`getProviderCredentials`-இல் உள்ள சோம்பேறி மீட்பு இன்னும் பொருந்தும்). |
| `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | பகுத்தறிதல் cache தூய்மைப்படுத்தல் இடைவெளி (ms). குறைந்தபட்சம் `60000`. |
| `OMNIROUTE_REASONING_MIN_BUDGET` | _அமைக்கப்படவில்லை (முடக்கப்பட்டது)_ | `open-sse/services/reasoningTokenBuffer.ts` | சிந்தனை மாதிரி வெளியீட்டு பட்ஜெட்டுகளுக்கான விருப்பத்தேர்வு குறைந்தபட்ச வரம்பு: அழைப்பவரின் `[256, floor)` வரம்பிலுள்ள `max_tokens`, குறைந்தபட்ச வரம்புக்கு உயர்த்தப்படும் (மாதிரியின் வெளியீட்டு உச்சவரம்புக்குள் கட்டுப்படுத்தப்படும்). அமைக்கப்படவில்லை = கிளையன்ட் பட்ஜெட்டுகள் ஒருபோதும் பெரிதாக்கப்படாது (#9507). |
| `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _அமைக்கப்படவில்லை (முடக்கப்பட்டது)_ | `open-sse/services/learnedReasoningEffortCaps.ts` | விருப்பத்தேர்வான, காற்புள்ளியால் பிரிக்கப்பட்ட வழங்குநர் ID-கள் (அல்லது `*`): ஒரு `reasoning_effort` 400/422 பதில் ஏற்றுக்கொள்ளப்படும் தொகுப்பைக் குறிப்பிடாதபோது, ஒரு நிலை கீழாக ஒருமுறை மீண்டும் முயலும் (`low`-க்குக் கீழே ஒருபோதும் செல்லாது); ஆய்வுக்கு பதில் கிடைத்தால் மட்டுமே அந்த நிலையைக் கற்றுக்கொள்ளும் (#14895). |
| `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | இயக்கப்பட்டுள்ள ஒவ்வொரு பதிவு ஏற்றுமதி இலக்கையும் காலி செய்யும் அழைப்புப் பதிவு ஏற்றுமதிப் பணிக்கான Cron கோவை (UTC). உள்ளடக்கப் பகுதிகளை ஏற்றுமதி செய்யும்போது `*/5 * * * *`-ஐ விரும்பத்தக்கதாகக் கொள்ளவும். |
| `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | ஒவ்வொரு இலக்கிற்குமான child process wall-clock காலாவதி நேரம், மில்லிவினாடிகளில். காலாவதியானால் தோல்வி பதிவு செய்யப்பட்டு, ஒப்புதல் பெறாத தொகுதியை முன்னகர்த்தாமல் process நிறுத்தப்படும். செல்லாத/நேர்மறையற்ற/முழு எண்ணல்லாத மதிப்புகள் இயல்புநிலையைப் பயன்படுத்தும். |
| `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | Node ஏற்றுமதி child process-க்கான V8 old-space வரம்பு, MB-இல் (மொத்த RSS அல்ல). இயல்புநிலை, உள்ளடக்கப் பகுதிகளுடன் வரம்பிடப்பட்ட கலைப்பொருட்களின் 500 வரிசைகளுக்குத் தேவையான கூடுதல் இடத்தை விட்டுவைக்கும்; அளவுக்கு மீறிய தொகுதிகள் இன்னும் child heap-ஐத் தீர்த்துவிடக்கூடும். தோல்வி ஏற்பட்டால் தொகுதி அளவைக் குறைக்கவோ இந்த வரம்பை உயர்த்தவோ அறிவுறுத்தப்படும். செல்லாத/நேர்மறையற்ற/முழு எண்ணல்லாத மதிப்புகள் இயல்புநிலையைப் பயன்படுத்தும். இந்த வரம்பு இல்லாதபோது Bun ஏற்றுமதிகள் அதே process-க்குள் செயல்படும் மாற்று முறைக்குத் திரும்பும். |
| `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | உள்ளமைவு hot-reload-க்கான வாக்கெடுப்பு இடைவெளி (ms). `1000`-ஐவிடக் குறைவான மதிப்பு நிராகரிக்கப்படும். |
| `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(இயக்கப்பட்டது)_ | `src/lib/db/apiKeys.ts` | Redis ஆதரவு கொண்ட API-key அங்கீகார cache-ஐத் தவிர்க்க `1` என அமைக்கவும் (DB வாசிப்புகளைக் கட்டாயப்படுத்தும்). |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | கடுமையான கையொப்பச் சரிபார்ப்புகள் இல்லாமல் பயனர் நிர்வகிக்கும் RTK திட்ட வடிகட்டி விதிகளை நம்பும். |
| `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | `lite.maxToolLength` அமைக்கப்படாதபோது Lite முன்செயலாக்கக் கருவி-முடிவு துண்டிப்புக்கான எழுத்து உச்சவரம்பு. வரம்பு 256–1000000. இந்தச் சூழல் மாறியைவிட dashboard அமைப்புக்கே முன்னுரிமை. |
| `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | ஒரே நேரத்தில் இயங்கக்கூடிய ஒத்திசைவான RTK/Caveman worker-களின் அதிகபட்ச எண்ணிக்கை; கூடுதல் பணிகள் FIFO வரிசையில் காத்திருக்கும். |
| `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | ஒவ்வொரு பணிக்குமான காலாவதி நேரம், மில்லிவினாடிகளில். காலாவதியான worker-கள் நிறுத்தப்பட்டு, கோரிக்கை மாற்றமின்றி fail-open ஆகும். |
| `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | பயன்படுத்தப்படாத compression worker நிறுத்தப்படுவதற்கு முந்தைய செயலற்ற வாழ்நாள், மில்லிவினாடிகளில். |
| `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | ஒவ்வொரு சுருக்கப் பணியாளருக்கும் அனைத்து முறைகளிலும் பொருந்தும், MB அலகில் V8 old-generation heap-ன் உச்ச வரம்பு (குறைந்த எல்லை `128`). இந்த வரம்பை மீறும் பணி, நுழைவாயில் (gateway) heap-ஐ வளர்ப்பதற்குப் பதிலாக திறந்த நிலையில் தோல்வியடையும் (சுருக்கம் செய்யப்படாது). |
| `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 அடுக்குப் பைப்லைனுக்கான, ஒவ்வொரு இயந்திரத்திற்குமான சர்க்யூட்-பிரேக்கர் முதன்மை சுவிட்ச். **இயக்கம் தேர்வு செய்தால் மட்டும் (இயல்பாக அணைக்கப்பட்டது)** — இயக்கத்தில் இருக்கும்போது, கோரிக்கைகள் முழுவதும் மீண்டும் மீண்டும் பிழை எழுப்பும் இயந்திரம் ஒரு cooldown காலத்திற்கு தவிர்க்கப்படும் (fail-open); அணைக்கப்பட்டிருந்தால் = பழைய முறையுடன் பைட்-அளவில் ஒத்த நடத்தை. |
| `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | ஒரு இயந்திரத்தின் பிரேக்கர் திறப்பதற்கு முன் தேவையான, கோரிக்கைகள் கடந்த தொடர்ச்சியான தோல்விகளின் எண்ணிக்கை. |
| `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | அரை-திறந்த (half-open) சோதனை முயற்சிக்கு முன், திறக்கப்பட்ட இயந்திரம் தவிர்க்கப்பட்ட நிலையில் நிலைத்திருக்கும் நேரம் (மில்லி வினாடிகளில்). |
| `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR மீட்பு-கருத்து ரேம்ப்: சேமிக்கப்பட்ட தொகுதி ஒன்றின் ஒவ்வொரு முந்தைய மீட்பும் அதன் நடைமுறை `minChars` மதிப்பை நேரியல் முறையில் உயர்த்துகிறது (அடிக்கடி மீட்கப்படும் உள்ளடக்கம் குறைவாக சுருக்கப்படும்; `>=3` மீட்புகள் = ஒருபோதும் சுருக்கப்படாது). `1` என்றால் ரேம்ப் முடக்கப்படும் (வரம்பில் பைனரி தவிர்ப்பு மட்டும்). |
| `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | CCR நிலைத்தன்மையான தொகுதி சேமிப்பகம் (#9061). உள்-நினைவக சேமிப்பை SQLite மூலம் ஆதரிப்பதால், LRU வெளியேற்றம், TTL, மறுதொடக்கம், அல்லது மீட்பு வேறொரு நிகழ்வில் (instance) சென்றாலும் தொகுதி நிலைத்திருக்கும். தொகுதிகளை நினைவகத்தில் மட்டும் வைத்திருக்க `false` என அமைக்கவும். 512KB-ஐ விடப் பெரிய தொகுதிகளும் கிளவுட் இயங்குதளங்களும் எப்போதும் நினைவகத்தில் மட்டுமே இருக்கும். |
| `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 பயன்பாட்டு-கண்காணிப்பு அடிப்படையிலான முன்னொட்டு (prefix) உறைதல் முதன்மை சுவிட்ச். **இயக்கம் தேர்வு செய்தால் மட்டும் (இயல்பாக அணைக்கப்பட்டது)** — இயக்கத்தில் இருக்கும்போது, வரம்புக்கு `>=` முறை கவனிக்கப்பட்ட கணினி வழியூட்டு (system prompt), நிலையான தேக்ககத்திற்கேற்ப (cacheable) முன்னொட்டாகக் கருதப்பட்டு, நிலையான தேக்கக ஊகம் (static cache heuristic) கண்டறியத் தவறும் வழங்குநர்களுக்கும் கூட சுருக்கத்திலிருந்து பாதுகாக்கப்படுகிறது (உறைதல் _பாதுகாப்பது_ மட்டுமே; ஒருபோதும் மாற்றாது). |
| `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | ஒரு கணினி வழியூட்டு (system prompt) உறைந்த நிலையான முன்னொட்டாகக் கருதப்படுவதற்கு முன் அது கவனிக்கப்பட வேண்டிய முறைகளின் எண்ணிக்கை. |
| `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | ஆரம்ப அமைப்பு முடிந்த பிறகு bootstrap ஸ்கிரிப்ட் மூலம் `true` என அமைக்கப்படுகிறது. அமைப்பு வழிகாட்டியின் (setup wizard) தெரிவுநிலையைக் கட்டுப்படுத்துகிறது. |
| `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | விடுபடு வழி (escape hatch): கோரிக்கை உடல் (request body) Antigravity திட்ட (project) புலத்தை மேலெழுத அனுமதிக்கிறது. |
| `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Google One AI கிரெடிட் கொள்கை: `off` கிரெடிட்டுகளை ஒருபோதும் செலுத்தாது, `retry` தகுதியான quota 429-க்குப் பிறகு ஒருமுறை மட்டும் செலுத்தும், மேலும் `always` முதல் கோரிக்கையிலேயே செலுத்தும். |
| `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | அப்ஸ்ட்ரீம் உண்மையான கையொப்பங்களை நிராகரிக்கும்போது, Antigravity கோரிக்கை மொழிபெயர்ப்பி தனது கண்டிப்பான CLI கோரிக்கை-கையொப்ப சரிபார்ப்பை தவிர்க்க அனுமதிக்கிறது (debug/பழைய-CLI முறை). பூஜ்ஜியம் அல்லாத மதிப்பு இந்தத் தவிர்ப்பை இயக்குகிறது. |
| `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | தானியங்கு-கண்டறிதல் உள்ளூர் உள்நுழைவு இறக்குமதிக்கான Antigravity CLI (agy) டோக்கன்-கோப்பு பாதையை மேலெழுதுகிறது. |
### OAuth CLI பாலம் (உள்)
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------- | -------------------- | ------------------------------- | ------------------------------------------------- |
| `OMNIROUTE_SERVER` | தானியங்கு கண்டறிதல் | `src/lib/oauth/config/index.ts` | CLI↔OmniRoute அங்கீகாரப் பாலத்திற்கான சர்வர் URL. |
| `OMNIROUTE_TOKEN` | _(அமைக்கப்படவில்லை)_ | `src/lib/oauth/config/index.ts` | CLI பாலத்திற்கான அங்கீகார டோக்கன். |
| `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | CLI பால அமர்வுகளுக்கான பயனர் ID. |
| `SERVER_URL` | _(அமைக்கப்படவில்லை)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_SERVER`-ன் பழைய மாற்றுப் பெயர். |
| `CLI_TOKEN` | _(அமைக்கப்படவில்லை)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_TOKEN`-ன் பழைய மாற்றுப் பெயர். |
| `CLI_USER_ID` | _(அமைக்கப்படவில்லை)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_USER_ID`-ன் பழைய மாற்றுப் பெயர். |
---
## 11. OAuth வழங்குநர் நறுச்சான்றுகள்
**localhost மேம்பாட்டிற்கான** உள்ளமைக்கப்பட்ட நறுச்சான்றுகள். தொலைநிலை பணியமைப்புகளுக்கு, ஒவ்வொரு வழங்குநரின் டெவலப்பர் கன்சோலிலும் உங்கள் சொந்த நறுச்சான்றுகளைப் பதிவு செய்யவும்.
| மாறி | வழங்குநர் | குறிப்புகள் |
| ------------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | பொது கிளையன்ட் — ரகசியம் தேவையில்லை. |
| `CLAUDE_CODE_REDIRECT_URI` | Claude Code | திசைமாற்று URI-ஐ மேலெழுதுகிறது. இயல்புநிலை: `https://platform.claude.com/oauth/code/callback` |
| `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | பொது கிளையன்ட். |
| `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | பொருந்தக்கூடிய `_SECRET` தேவை. |
| `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — |
| `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | பொது கிளையன்ட். |
| `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | பொது Muse CLI சாதன-ஓட்ட கிளையன்ட் ஐடிக்கான விருப்ப மேலெழுதல். உள்ளமைக்கப்பட்ட பொது கிளையன்டைப் பயன்படுத்த அமைக்காமல் விடவும். |
| `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | பொருந்தக்கூடிய `_SECRET` தேவை. |
| `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — |
| `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | பொது கிளையன்ட். |
| `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | GitHub Enterprise Copilot-இன் OAuth கிளையன்ட் ஐடிக்கான விருப்ப மேலெழுதல். அமைக்கப்படாத போது `GITHUB_OAUTH_CLIENT_ID`-இன் பொது இயல்புநிலைக்குத் திரும்பும். |
| `COPILOT_INTEGRATION_ID` | GitHub Copilot | `Copilot-Integration-Id` மற்றும் `Editor-Plugin-Version` தலைப்புகளில் அனுப்பப்படும் GitHub Copilot கிளையன்ட் ஒருங்கிணைப்பு ஐடிக்கான விருப்ப மேலெழுதல். இயல்புநிலை `copilot-developer-cli`. |
| `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | இணைப்பு-வாரியான நறுச்சான்று எதுவும் கிடைக்காத போது `open-sse/executors/devin-cli.ts` ஆல் பயன்படுத்தப்படும் API விசை மாற்று. விருப்பமானது. |
| `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Devin CLI பைனரிக்கான (`devin`) தனிப்பயன் பாதை. `open-sse/executors/devin-cli.ts` ஆல் தீர்மானிக்கப்படுகிறது. |
| `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | GitLab Duo-க்கான OAuth கிளையன்ட் ஐடி. `/callback` திசைமாற்று URI மற்றும் `api, read_user, openid, profile, email` ஸ்கோபுகளுடன் `https://gitlab.com/-/profile/applications`-இல் ஒரு ஆப்பைப் பதிவு செய்யவும். `GITLAB_OAUTH_CLIENT_ID`-க்குத் திரும்பும். |
| `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | GitLab Duo-க்கான OAuth கிளையன்ட் ரகசியம். விருப்பமானது — PKCE ஓட்டத்திற்கு ரகசியம் தேவையில்லை. `GITLAB_OAUTH_CLIENT_SECRET`-க்குத் திரும்பும். |
| `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | GitLab அடிப்படை URL-ஐ மேலெழுதுகிறது (சுய-ஹோஸ்ட் செய்யப்பட்ட GitLab). இயல்புநிலை `https://gitlab.com`. `GITLAB_BASE_URL`-க்குத் திரும்பும். |
| `GITLAB_BASE_URL` | GitLab Duo (v3.8) | `GITLAB_DUO_BASE_URL`-க்கான பழைய மாற்று மாறி. `_DUO_` வகை மாறி அமைக்கப்படாதபோது பயன்படுத்தப்படுகிறது. |
| `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` ஆல் பயன்படுத்தப்படும் `GITLAB_DUO_OAUTH_CLIENT_ID`-க்கான பழைய மாற்று மாறி. |
| `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` ஆல் பயன்படுத்தப்படும் `GITLAB_DUO_OAUTH_CLIENT_SECRET`-க்கான பழைய மாற்று மாறி. |
| `QODER_OAUTH_CLIENT_SECRET` | Qoder | — |
| `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Qoder OAuth-ஐ இயக்க அமைக்கவும். |
| `QODER_OAUTH_TOKEN_URL` | Qoder | — |
| `QODER_OAUTH_USERINFO_URL` | Qoder | — |
| `QODER_OAUTH_CLIENT_ID` | Qoder | — |
| `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | நேரடி API விசை மாற்று (OAuth-ஐ தவிர்க்கிறது). |
| `QODER_CLI_WORKSPACE` | Qoder | Qoder CLI-க்கான பணியிடம் (workspace) ID. |
| `OMNIROUTE_QODER_WORKSPACE` | Qoder | `QODER_CLI_WORKSPACE`-க்கான மாற்றுப் பெயர். |
| `QODER_CLI_CONFIG_DIR` | Qoder | Qoder CLI கட்டமைப்பு அடைவை மேலெழுதுகிறது (தனிமைப்படுத்தப்பட்ட PAT அமர்வு, உலாவி உள்நுழைவை சேதப்படுத்துவதைத் தவிர்க்கிறது). |
| `QODER_CLI_MAX_CONCURRENCY` | Qoder | ஒரே நேரத்தில் இயங்கும் qodercli இயக்கங்களின் அதிகபட்ச எண்ணிக்கை (print spawn-கள் அல்லது ACP prompt-கள்); கூடுதல் கோரிக்கைகள் FIFO வரிசையில் காத்திருக்கும். அமைக்கப்படாதிருப்பின் (இயல்புநிலை) = வரம்பு இல்லை. |
| `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | ஒரு Qoder கோரிக்கை qodercli இடத்திற்காக எவ்வளவு நேரம் காத்திருக்கும் (வரம்பு அமைக்கப்பட்டிருக்கும்போது மட்டும்), அதன் பின் 429 `qodercli_busy` + `Retry-After` உடன் தோல்வியடையும். இயல்புநிலை `120000`. |
| `QODER_CLI_TRANSPORT` | Qoder | `print` (இயல்புநிலை) ஒவ்வொரு கோரிக்கைக்கும் `qodercli --print` ஐ உருவாக்குகிறது; `acp` ஒவ்வொரு PAT-க்கும் ஒரு நிலையான `qodercli --acp` செயல்முறையை வைத்திருக்கிறது. |
| `QODER_CLI_ACP_IDLE_TIMEOUT_MS` | Qoder | ACP போக்குவரத்து: இவ்வளவு செயலற்ற நேரத்திற்குப் பிறகு நிலையான qodercli செயல்முறையை நிறுத்துகிறது. இயல்புநிலை `600000`. |
| `QODER_CLI_ACP_STARTUP_TIMEOUT_MS` | Qoder | ACP போக்குவரத்து: qodercli ACP `initialize`-க்கு பதிலளிக்க வேண்டிய காலக்கெடு. இயல்புநிலை `60000`. |
| `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | ACP போக்குவரத்து: இத்தனை அமர்வுகளுக்குப் பிறகு நிலையான qodercli செயல்முறையை மறுசுழற்சி செய்கிறது. இயல்புநிலை `500`. |
| `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | `/api/chat`-இல் `validated` ஆக அனுப்ப வேண்டிய முன்பக்க `tk` டோக்கன். Blackbox டோக்கன் பொருத்தத்தை கட்டாயப்படுத்தும்போது தேவை; இல்லையெனில் OmniRoute ஒரு சீரற்ற UUID-க்கு மாறும். issue #2252 ஐப் பார்க்கவும். |
| `VISION_BRIDGE_BASE_URL` | Vision Bridge கார்ட்ரெயில் | Anthropic அல்லாத vision-bridge அழைப்புகளுக்கான OpenAI-இணக்கமான அடிப்படை URL. இயல்புநிலையாக பழைய OpenAI URL env மாறி அல்லது api.openai.com ஆகும். OmniRoute-ன் `/v1` செல்ஃப்-லூப் அல்லது ஏதேனும் OpenAI-இணக்க முனைப்பைச் (Gemini OpenAI-compat, OpenRouter) சுட்டிக்காட்டவும். Issue #2232. URL ஆனது OmniRoute-ன் சொந்த `/v1` ஆக இருக்கும்போது, describe துணை-கோரிக்கை `x-omniroute-admission-bypass: internal` தலைப்பை அனுப்பி, தீர்க்கப்பட்ட செல்ஃப்-லூப் சான்றுகளுடன் (உள்ளூர் பயன்முறையில் `sk_omniroute` சென்டினல், அல்லது `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350) அங்கீகரிக்கிறது, இதனால் `REQUIRE_API_KEY=true` பயன்பாடுகள் செயல்படுகின்றன. |
| `VISION_BRIDGE_API_KEY` | Vision Bridge கார்ட்ரெயில் | மேற்கண்ட URL-க்கான API விசை. Anthropic அல்லாத vision-bridge அழைப்புகளுக்கு வழங்குநர் வாரியான OpenAI / Google env மாறிகளை மேலெழுதுகிறது. Anthropic மாதிரிகள் தங்களுக்கென அர்ப்பணிக்கப்பட்ட Anthropic விசைப் பாதையைத் தக்கவைத்துக் கொள்கின்றன. Issue #2232. |
| `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Vision Bridge கார்ட்ரெயில் | "பயனுள்ள வேட்பாளர் இல்லை" என்ற ரூட்டிங் முடிவு எவ்வளவு நேரம் தற்காலிகமாகச் சேமிக்கப்படுகிறது என்பது, மில்லி வினாடிகளில் (இயல்புநிலை `30000`). தவறான அல்லது எதிர்மறை மதிப்புகள் இயல்புநிலைக்குத் திரும்பும்; `0` எதிர்மறை தற்காலிக சேமிப்பை முடக்கும். மூலம்: `src/lib/guardrails/visionBridgeRouter.ts`. |
> [!WARNING]
>
> 1. [Google Cloud Console → சான்றுகள்](https://console.cloud.google.com/apis/credentials) என்பதற்குச் செல்லவும்
> 2. ஒரு OAuth 2.0 Client ID ஐ உருவாக்கவும் (வகை: "Web application")
> 3. உங்கள் சேவையக URL ஐ Authorized redirect URI ஆகச் சேர்க்கவும்
> 4. `.env` கோப்பில் உள்ள சான்று மதிப்புகளை மாற்றவும்.
---
## 12. வழங்குநர் User-Agent மேலெழுதல்கள்
ஒவ்வொரு அப்ஸ்ட்ரீம் வழங்குநருக்கும் அனுப்பப்படும் `User-Agent` தலைப்பை (header) மேலெழுதலாம். இது இயக்க நேரத்தில் executor அடிப்படை வகுப்பால் மாறும் முறையில் தீர்மானிக்கப்படுகிறது:
```
process.env[`${PROVIDER_ID}_USER_AGENT`]
```
> **மூலம்:** `open-sse/executors/base.ts` → `buildHeaders()`
| மாறி | இயல்புநிலை மதிப்பு | எப்போது புதுப்பிக்க வேண்டும் |
| -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Anthropic புதிய CLI பதிப்பை வெளியிடும் போது |
| `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Anthropic-நோக்கி செல்லும் இரு பாதைகளிலும் (நேட்டிவ் OAuth மற்றும் CLIProxyAPI) மூன்றாம் தரப்பு harness கருவி பெயர்களை அப்படியே Anthropic-க்கு அனுப்ப `1`/`true` என அமைக்கவும். இயல்பாக, executor Claude Code-அல்லாத கருவி பெயர்களை தீர்மானமாக மாற்றுப்பெயரிடுகிறது (canonical mapping இருக்கும் இடத்தில் Claude Code canonical mapping, இல்லையெனில் PascalCase) மற்றும் `_toolNameMap` வழியாக பதிலில் அவற்றை மீண்டும் மாற்றுகிறது; இதனால் snake_case கருவிகளைக் கொண்ட harness-கள் கைரேகை காணப்பட்ட மூன்றாம் தரப்பு கிளையன்டுகளாக நிராகரிக்கப்படுவதில்லை. Debugging-க்கு மட்டுமே. |
| `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | OpenAI Codex CLI ஐப் புதுப்பிக்கும் போது |
| `CODEX_CLIENT_VERSION` | `0.155.0` | முழு UA சரத்திலிருந்து சுயாதீனமாக Codex கிளையன்ட் பதிப்பை மேலெழுத |
| `GROK_CLI_CLIENT_VERSION` | `1.0.41` | inference, model sync மற்றும் device-code OAuth ஆகியவற்றிற்கான `x-grok-client-version` ஐ மேலெழுதவும்; மேலும் inference மற்றும் model sync ஆகியவற்றிற்கான இயல்புநிலை Grok CLI User-Agent ஐயும் மேலெழுதுகிறது. சுற்றியுள்ள வெற்று இடத்தை நீக்கிய பிறகு அதிகபட்சம் 128 எழுத்துகள் வரை, விருப்ப prerelease/build metadata உடன் SemVer ஐ ஏற்கிறது. அமைக்கப்படாத, வெற்று, தவறான அல்லது வரி முறிவுகளைக் கொண்ட மதிப்புகள் அனுப்பப்பட்ட (shipped) pin ஐப் பயன்படுத்தும். ஏற்கனவே உள்ள முழு inference User-Agent மேலெழுதல் தொடர்ந்து முன்னுரிமை பெறும். |
| `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | `CLAUDE_USER_AGENT`-லிருந்து சுயாதீனமாக அறிவிக்கப்படும் Claude Code பதிப்பை மேலெழுதவும். Anthropic இந்த மதிப்பின் அடிப்படையில் சில மாதிரிகளைக் (models) கட்டுப்படுத்துகிறது (#12417). |
| `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Claude billing தொகுதியில் `cc_version=`-க்கு OmniRoute சேர்க்கும் 3-எழுத்து பின்னொட்டை மேலெழுதவும். `CLAUDE_CODE_CLIENT_VERSION` உடன் சேர்த்து இதையும் உயர்த்தவும் — பதிப்பை மட்டும் pin செய்தால், எந்த உண்மை binary-யும் வெளியிடாத ஒரு `version.revision` ஜோடி அறிவிக்கப்படும். |
| `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | `GITHUB_USER_AGENT`-லிருந்து சுயாதீனமாக அறிவிக்கப்படும் Copilot CLI பதிப்பை மேலெழுதவும் |
| `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | GitHub Copilot Chat புதுப்பிக்கப்படும் போது |
| `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Antigravity IDE புதுப்பிக்கப்படும் போது |
| `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Kiro IDE புதுப்பிக்கப்படும் போது |
| `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Kiro social device-code `clientId` (பொது id) ஐ மேலெழுதவும் |
| `KIRO_VERIFY_FULL_CRC` | `false` | தேர்வு-சேர்க்கை (Opt-in): Kiro நிகழ்வு ஸ்ட்ரீமில் முழுமையான ஃபிரேம்-தோறும் செய்தி CRC சரிபார்ப்பு (சிதைந்த ஸ்ட்ரீம்களை debug செய்ய) |
| `KIRO_CREDIT_PRICE_USD` | `0.02` | ஒரு Kiro credit-க்கான USD; `meteringEvent` credit-களை சரியான கோரிக்கை-தோறும் செலவாக மாற்றுகிறது |
| `KIRO_REQUIRE_CREDITS` | `false` | credit metering எதுவும் அறிவிக்காத Kiro பதிலை, பில் செய்யப்படாமல் பதிவு செய்வதற்குப் பதிலாக தோல்வியடையச் செய்யவும் |
| `QODER_USER_AGENT` | `Qoder-Cli` | Qoder CLI புதுப்பிக்கப்படும் போது |
| `CURSOR_USER_AGENT` | `Cursor/3.3` | Cursor புதுப்பிக்கப்படும் போது |
> [!TIP]
> `{PROVIDER_ID}_USER_AGENT` என்ற வடிவத்தைப் பயன்படுத்தி **எந்த** வழங்குநருக்கும் User-Agent மேலெழுதல்களைச் சேர்க்கலாம். executor env var பெயரை மாறும் முறையில் உருவாக்குகிறது.
---
## 13. CLI கைரேகை இணக்கத்தன்மை
இயக்கப்பட்டிருக்கும்போது, அதிகாரப்பூர்வ CLI கருவிகளின் துல்லியமான கையொப்பத்துடன் பொருந்தும் வகையில் OmniRoute HTTP தலைப்புகளையும் JSON உடல் புலங்களையும் மறுவரிசைப்படுத்துகிறது. இது உங்கள் ப்ராக்ஸி IP-ஐப் பாதுகாக்கும் அதே நேரத்தில், கணக்கு குறியிடப்படும் அபாயத்தைக் குறைக்கிறது.
**மூலம்:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts`
### வழங்குநர் வாரியாக
| மாறி | செயல்படுத்தல் | விளைவு |
| ------------------------ | ------------- | ------------------------------------------------------ |
| `CLI_COMPAT_CODEX` | `=1` | Codex CLI கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_CLAUDE` | `=1` | Claude Code கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_GITHUB` | `=1` | GitHub Copilot கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_ANTIGRAVITY` | `=1` | Antigravity கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_CURSOR` | `=1` | Cursor கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_KIMI_CODING` | `=1` | Kimi Coding கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_KILOCODE` | `=1` | Kilo Code கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
| `CLI_COMPAT_CLINE` | `=1` | Cline கோரிக்கைக் கையொப்பத்தைப் பின்பற்றுகிறது |
### உலகளாவிய
| மாறி | செயல்படுத்தல் | விளைவு |
| ---------------- | ------------- | ------------------------------------------------------------------------------- |
| `CLI_COMPAT_ALL` | `=1` | **அனைத்து** வழங்குநர்களுக்கும் கைரேகை இணக்கத்தன்மையை ஒரே நேரத்தில் இயக்குகிறது. |
### Kimi Coding CLI அடையாள மேலெழுதல்கள்
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ----------------------- | ------------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------- |
| `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | OAuth/API அழைப்புகளின்போது அனுப்பப்படும் Kimi CLI பதிப்பை மேலெழுதுகிறது. |
| `KIMI_CODING_DEVICE_ID` | _(பதிவுசெய்யப்பட்ட இயல்புநிலை)_ | `src/lib/oauth/providers/kimi-coding.ts` | கிளையன்ட் தலைப்புகளில் பயன்படுத்தப்படும் பதிவுசெய்யப்பட்ட Kimi சாதன ID-ஐ மேலெழுதுகிறது. |
> [!NOTE]
> இந்த அம்சம் User-Agent மேலெழுதல்களுடன் (§12) இணைந்து செயல்படுகிறது. கைரேகை அமைப்பு தலைப்பு வரிசைப்படுத்தலையும் உடல் புல வரிசைப்படுத்தலையும் கையாள்கிறது; User-Agent மேலெழுதல்கள் குறிப்பிட்ட UA சரத்தைக் கையாள்கின்றன. இரண்டையும் தனித்தனியாக இயக்கலாம்.
---
## 14. API விசை வழங்குநர்கள்
நேரடி அங்கீகாரத்தைப் பயன்படுத்தும் வழங்குநர்களுக்கான API விசைகள். **விருப்பமான அமைப்பு:** கட்டுப்பாட்டுப் பலகம் → வழங்குநர்கள் → API விசையைச் சேர்.
Docker அல்லது முகப்பில்லா நிறுவல்களுக்கு, சூழல் மாறிகள் மூலம் அமைப்பது ஒரு மாற்று வழியாகும்.
அங்கீகரிக்கப்பட்ட வடிவம்: `{PROVIDER_ID}_API_KEY`
| மாறி | வழங்குநர் |
| ------------------ | -------------------------------------------------------------- |
| `DEEPSEEK_API_KEY` | DeepSeek |
| `NVIDIA_API_KEY` | NVIDIA NIM |
| `JINA_AI_API_KEY` | Jina AI (Foundation API + Reader மாற்று ஏற்பாடு) |
| `JINA_API_KEY` | Jina AI (`JINA_AI_API_KEY`-க்கான மாற்றுப்பெயர்) |
| `GEMINI_API_KEY` | Gemini (Google AI Studio) உட்பொதிவுகள் + அரட்டை மாற்று ஏற்பாடு |
| `GOOGLE_API_KEY` | Gemini (`GEMINI_API_KEY`-க்கான மாற்றுப்பெயர்) |
> [!NOTE]
> Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius மற்றும் Qianfan ஆகியவற்றுக்கான நிலையான `${PROVIDER}_API_KEY` உள்ளீடுகள் v3.8.0-இல் அகற்றப்பட்டன; ஏனெனில் இயக்கநேரம் இனி அவற்றைப் படிப்பதில்லை — அந்த வழங்குநர்கள் கட்டுப்பாட்டுப் பலகம் / `data/provider-credentials.json` / குறியாக்கப்பட்ட DB ஆகியவற்றை மட்டுமே சார்ந்துள்ளனர். இடம்பெயர்வு வழிமுறைக்கு இந்த ஆவணத்தின் கீழ்ப்பகுதியில் உள்ள _தணிக்கை: அகற்றப்பட்ட / செயலற்ற மாறிகள்_ பிரிவைப் பார்க்கவும்.
> [!TIP]
> கட்டுப்பாட்டுப் பலகம் வழியாக அமைக்கப்படும் விசைகள் SQLite-இல் குறியாக்கப்பட்டுச் சேமிக்கப்பட்டு, சூழல் மாறிகளைவிட முன்னுரிமை பெறுகின்றன.
>
> **Jina:** கட்டுப்பாட்டுப் பலகத்தில் `jina-ai` (அல்லது பகிரப்பட்ட `jina-reader`) இணைப்பு இருக்கும்போது, `jina-ai/…` உட்பொதிவுகள், மறுதரவரிசைப்படுத்தல், வகைப்படுத்தல், துண்டாக்கல் மற்றும் `jina-search` ஆகியவை கிளஸ்டர் சூழல் விசையில் கட்டணம் விதிக்காது — `getProviderCredentials` முதலில் நிரப்பும் முறையைப் பயன்படுத்துகிறது. பயன்படுத்தக்கூடிய கட்டுப்பாட்டுப் பலக விசை இல்லாதபோது மட்டுமே `JINA_AI_API_KEY` / `JINA_API_KEY` பயன்படுத்தப்படும். அழைப்புப் பதிவுகள் சூழல் மாற்று ஏற்பாட்டை `connection_id=env:JINA_AI_API_KEY` எனக் குறிப்பிடுகின்றன. Reader அட்டை (`jina-reader`, `r.jina.ai`) ஒருபோதும் `/v1/embeddings` அல்லது `/v1/rerank`-ஐ வழங்காது.
>
> **Gemini:** `gemini/gemini-embedding-2` (`google/gemini-embedding-2` என்ற மாற்றுப்பெயர்) முதலில் கட்டுப்பாட்டுப் பலகத்தின் `gemini` இணைப்பைப் பயன்படுத்துகிறது. பயன்படுத்தக்கூடிய கட்டுப்பாட்டுப் பலக விசை இல்லாதபோது மட்டுமே `GEMINI_API_KEY` / `GOOGLE_API_KEY` பயன்படுத்தப்படும். அழைப்புப் பதிவுகள் சூழல் மாற்று ஏற்பாட்டை `connection_id=env:GEMINI_API_KEY` எனக் குறிப்பிடுகின்றன. நேட்டிவ் பல்மாதிரி போக்குவரத்து, `:embedContent` / `:batchEmbedContents` உடன் `x-goog-api-key`-ஐப் பயன்படுத்துகிறது — N OpenAI `input` உருப்படிகள் N வெக்டர்களாக மாறுகின்றன.
---
## 15. காலக்கெடு அமைப்புகள்
அனைத்து மதிப்புகளும் **மில்லி விநாடிகளில்** உள்ளன. `src/shared/utils/runtimeTimeouts.ts` இல் மையப்படுத்தப்பட்ட தீர்வு.
### காலக்கெடு படிநிலை
```
REQUEST_TIMEOUT_MS (உலகளாவிய மேலெழுதல்)
├─→ FETCH_TIMEOUT_MS (மேல்நோக்கு வழங்குநர் அழைப்புகள், இயல்புநிலை: 600000)
│ ├─→ FETCH_HEADERS_TIMEOUT_MS (FETCH_TIMEOUT_MS இலிருந்து பெறப்படுகிறது)
│ ├─→ FETCH_BODY_TIMEOUT_MS (FETCH_TIMEOUT_MS இலிருந்து பெறப்படுகிறது)
│ ├─→ TLS_CLIENT_TIMEOUT_MS (FETCH_TIMEOUT_MS இலிருந்து பெறப்படுகிறது)
│ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (சுயாதீனமானது, இயல்புநிலை: 10000)
│ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (சுயாதீனமானது, இயல்புநிலை: 15000)
│ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (சுயாதீனமானது, இயல்புநிலை: 0 = அணைப்பு, பரிந்துரைக்கப்பட்டது: 30000)
│ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (சுயாதீனமானது, இயல்புநிலை: 2)
│ ├── FETCH_CONNECT_TIMEOUT_MS (சுயாதீனமானது, இயல்புநிலை: 30000)
│ └── FETCH_KEEPALIVE_TIMEOUT_MS (சுயாதீனமானது, இயல்புநிலை: 4000)
├─→ STREAM_IDLE_TIMEOUT_MS (REQUEST_TIMEOUT_MS இலிருந்து பெறப்படுகிறது, இயல்புநிலை: 600000)
├─→ STREAM_ACTIVE_TIMEOUT_MS (சுயாதீனமானது, இயல்புநிலை: 1260000; 0 முடக்குகிறது)
├─→ STREAM_READINESS_TIMEOUT_MS (REQUEST_TIMEOUT_MS இலிருந்து பெறப்படுகிறது, இயல்புநிலை: 80000)
├─→ STREAM_READINESS_MAX_TIMEOUT_MS (தகவமைப்பு தயார்நிலை நீட்புகளுக்கு உச்சவரம்பு விதிக்கிறது, இயல்புநிலை: 180000)
└─→ API_BRIDGE_PROXY_TIMEOUT_MS (REQUEST_TIMEOUT_MS இலிருந்து பெறப்படுகிறது, இயல்புநிலை: 30000)
├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (பெறப்பட்டது, இயல்புநிலை: 300000)
├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (இயல்புநிலை: 60000)
├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (இயல்புநிலை: 5000)
└── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (இயல்புநிலை: 0 = முடக்கப்பட்டது)
```
| மாறி | இயல்புநிலை | விளக்கம் |
| ----------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | _(அமைக்கப்படவில்லை)_ | உலகளாவிய குறுக்குவழி — `FETCH_TIMEOUT_MS` மற்றும் `STREAM_IDLE_TIMEOUT_MS` இரண்டின் இயல்புநிலைகளையும் மேலெழுதுகிறது. |
| `FETCH_TIMEOUT_MS` | `600000` | அப்ஸ்ட்ரீம் வழங்குநர் அழைப்புகளுக்கான மொத்த HTTP கோரிக்கை காலக்கெடு. |
| `STREAM_IDLE_TIMEOUT_MS` | `600000` | நிறுத்துவதற்கு முன் மூல அப்ஸ்ட்ரீம் பைட்டுகளுக்கு இடையிலான அதிகபட்ச அமைதி. நீட்டிக்கப்பட்ட-சிந்தனை மாதிரிகள் அரிதிலேயே >90வி-க்கு மேல் இடைநிறுத்தம் செய்கின்றன. |
| `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | செயலில் உள்ள SSE ஸ்ட்ரீமின் மொத்த அதிகபட்ச ஆயுள்; அப்ஸ்ட்ரீம் பைட்டுகளில் ஒருபோதும் மீட்டமைக்கப்படாது, மேலும் `REQUEST_TIMEOUT_MS`-இலிருந்து சுயாதீனமானது. ரெஜிஸ்ட்ரியில் உள்ள மிகப்பெரிய ஒவ்வொரு-மாதிரி `timeoutMs`-இலிருந்து (1200000, Codex) 60000 விளிம்புடன் பெறப்பட்டது, எனவே தனது முழு பட்ஜெட்டையும் இயக்க அனுமதிக்கப்பட்ட மாதிரி பதிலின் நடுவில் ஒருபோதும் நிறுத்தப்படாது. முடக்க `0` என அமைக்கவும். |
| `OMNIROUTE_SSE_COMMENTS` | _(முடக்கப்பட்டது)_ | OmniRoute SSE `:` கருத்து வரிகளை (எ.கா. `: keepalive` ஹார்ட்பீட் மற்றும் `x-omniroute-*` மெட்டாடேட்டா டிரெய்லர்கள்) வெளியிடலாமா என்பது. இயல்பாக முடக்கப்பட்டுள்ளது (#10524), ஏனெனில் கண்டிப்பான OpenAI-இணக்கமான கிளையன்ட்கள் ஒவ்வொரு SSE வரியையும் JSON.parse செய்து `:` கருத்துகளில் செயலிழக்கும்; `data:` ஹார்ட்பீட்டுகள் பாதிக்கப்படாது. மீண்டும் ஒப்புக்கொள்ள `on`/`true`/`1`/`yes` என அமைக்கவும். `open-sse/utils/sseHeartbeat.ts`-ஆல் பயன்படுத்தப்படுகிறது. |
| `SSE_COALESCE_MS` | `0` (முடக்கப்பட்டது) | ஒப்புதல்-தேர்வு: Claude கிளையன்ட்களுக்கு அனுப்பப்படும் அடுத்தடுத்த Claude `content_block_delta` நிகழ்வுகளை (அதே பிளாக் குறியீடு மற்றும் டெல்டா வகை) இணைத்து, குறைந்தது ஒவ்வொரு N மி.வி.-க்கும் ஃப்ளஷ் செய்கிறது. இழப்பற்றது; `signature_delta` மற்றும் எல்லை நிகழ்வுகள் ஒருபோதும் இணைக்கப்படாது. கீழே உள்ள ஒவ்வொரு-வகை மாறி அமைக்கப்படாவிட்டால் ஒவ்வொரு டெல்டா வகைக்கும் பொருந்தும். `open-sse/utils/sseDeltaCoalesce.ts`-ஆல் பயன்படுத்தப்படுகிறது. |
| `SSE_COALESCE_THINKING_MS` | `0` (முடக்கப்பட்டது) | `thinking_delta`-க்கான `SSE_COALESCE_MS`-இன் ஒவ்வொரு-வகை மேலெழுதல். |
| `SSE_COALESCE_TEXT_MS` | `0` (முடக்கப்பட்டது) | `text_delta`-க்கான `SSE_COALESCE_MS`-இன் ஒவ்வொரு-வகை மேலெழுதல். |
| `SSE_COALESCE_INPUT_JSON_MS` | `0` (முடக்கப்பட்டது) | `input_json_delta`-க்கான `SSE_COALESCE_MS`-இன் ஒவ்வொரு-வகை மேலெழுதல். |
| `SSE_FRAME_COALESCE_MS` | `0` (முடக்கப்பட்டது) | ஒப்புதல்-தேர்வு: N மி.வி.-க்குள் அனுப்பப்படும் SSE ஃபிரேம்களை கிளையன்டுக்கு ஒரே எழுத்தாக தொகுக்கிறது. முதல் ஃபிரேம் மற்றும் இறுதி ஃபிரேம்கள் (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) ஒருபோதும் தாமதப்படுத்தப்படாது; தொகுப்பு இயக்கத்தில் இருக்கும்போது, ITL தொகுப்பு இடைவெளிகளை அளக்கிறது. `open-sse/utils/sseOutputSink.ts`-ஆல் பயன்படுத்தப்படுகிறது. |
| `SSE_STALL_WATCHDOG` | `timer` | ஸ்ட்ரீம் செய்யப்பட்ட பதில்களுக்கான பைட்-ஸ்டால் watchdog செயலாக்கம். `timer` ஒவ்வொரு அப்ஸ்ட்ரீம் துண்டுக்கும் ஒரு டைமரை மீண்டும் ஆயுதமேற்றுகிறது (ஸ்டால் பட்ஜெட்டில் சரியாக செயல்படுகிறது); `interval` ஒவ்வொரு ஸ்ட்ரீமுக்கும் `clamp(budget/4, 1s, 5s)` காலத்துடன் ஒரு சரிபார்ப்பை வைத்திருக்கிறது, எனவே ஸ்டால் பட்ஜெட் + காலத்திற்குள் செயல்படும். `open-sse/utils/streamStallWatchdog.ts`-ஆல் பயன்படுத்தப்படுகிறது. |
| `STREAM_READINESS_TIMEOUT_MS` | `80000` | முதல் பிங்-அல்லாத SSE நிகழ்வைப் பெறுவதற்கான நேரம். அமைக்கப்பட்டிருந்தால் `REQUEST_TIMEOUT_MS`-ஐப் பெறுகிறது. |
| `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | பெரிய, கருவி-அதிகமான, அல்லது உயர்-பகுத்தறிவு ஸ்ட்ரீமிங் கோரிக்கைகளுக்கான அதிகபட்ச தகவமைப்பு முதல்-நிகழ்வு தயார்நிலை சாளரம். |
| `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | `/goal` ஹியூரிஸ்டிக்கிற்கான கில்-ஸ்விட்ச். கண்டறிதலை முழுமையாக முடக்க `false`/`0`/`off` என அமைக்கவும் — தயார்நிலை காலக்கெடுக்களும் ஸ்ட்ரீம் மீட்பும் கோரிக்கை உடல்/தலைப்புகளால் ஒருபோதும் உயர்த்தப்படாது, இது கிளையன்ட்-கட்டுப்படுத்தப்படும் காலக்கெடு பெருக்கத்தைத் தணிக்கிறது. |
| `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | கண்டறியப்பட்ட `/goal` ஏஜென்ட் இயக்கங்கள் அல்லது `x-omniroute-agent-goal` மூலம் கட்டாயப்படுத்தப்பட்ட கோரிக்கைகளுக்கான அதிகபட்ச முதல்-நிகழ்வு தயார்நிலை சாளரம். |
| `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | கண்டறியப்பட்ட `/goal` ஏஜென்ட் இயக்கங்களுக்கு ஆரம்ப ஸ்ட்ரீம் மீட்பை தானாகவே இயக்கு. இலக்கு-குறிப்பிட்ட ஒப்புதலை முடக்க `false`/`0`/`off` என அமைக்கவும். இது ஆபரேட்டர் இயல்புநிலையின் மேல் மீட்பை மட்டுமே சேர்க்க முடியும் — இது வெளிப்படையான `STREAM_RECOVERY_ENABLED`/DB அமைப்புகள் விலகலை ஒருபோதும் மேலெழுதாது. |
| `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | OpenAI SDK-யின் `responses.stream()`-ஐ 502-உடன் உடைக்கும் தரமற்ற `codex.*` SSE நிகழ்வுகளை (எ.கா. `codex.rate_limits`) நீக்குகிறது. இயல்பாக இயக்கத்தில் (#11014). அவற்றை அனுப்ப `0`/`false`/`no`/`off` என அமைக்கவும். |
| `OMNIROUTE_CODEX_APPSERVER_WS` | _(அமைக்கப்படவில்லை)_ | ஒப்புதல்-தேர்வு Codex app-server போக்குவரத்து. உள்ளூர் `codex app-server` சைட்காரின் WebSocket முனைப்பு (`ws://`/`wss://`). டோக்கனுடன் சேர்த்து அமைக்கப்படும்போது, Codex கோரிக்கைகள் HTTP Responses API-க்குப் பதிலாக JSON-RPC வழியாக சைட்காருக்கு வழிநடத்தப்படுகின்றன. `providerSpecificData.codexAppServerUrl` வழியாகவும் ஒவ்வொரு இணைப்பிற்கும் அமைக்கலாம். `open-sse/executors/codex/appServerConfig.ts`-ஆல் பயன்படுத்தப்படுகிறது. |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(அமைக்கப்படவில்லை)_ | app-server-க்கு வழங்கப்படும் இன்லைன் திறன்/பியரர் டோக்கன். ஒவ்வொரு-இணைப்பு மேலெழுதல்: `providerSpecificData.codexAppServerToken`. |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(unset)_ | app-server திறன் டோக்கனைக் கொண்ட கோப்பின் பாதை (`codex app-server --ws-token-file` இலிருந்து). `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` அமைக்கப்படாதபோது பயன்படுத்தப்படுகிறது. இணைப்பு வாரியான மேலெழுதல்: `providerSpecificData.codexAppServerTokenFile`. |
| `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | app-server டர்ன் இயங்கும் பணி அடைவு. இணைப்பு வாரியான மேலெழுதல்: `providerSpecificData.codexAppServerCwd`. |
| `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(unset)_ | app-server டர்னுக்கு அனுப்பப்படும் ஒப்புதல் கொள்கை (எ.கா. `never`, `on-request`). இணைப்பு வாரியான மேலெழுதல்: `providerSpecificData.codexAppServerApprovalPolicy`. |
| `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(unset)_ | app-server டர்னுக்கு அனுப்பப்படும் sandbox கொள்கை (எ.கா. `read-only`, `workspace-write`, `danger-full-access`). அமைக்கப்படாதபோது executor இயல்புநிலையாக `workspace-write` ஆகும் (கடினப்படுத்தப்பட்டது; முன்னர் `danger-full-access`). இணைப்பு வாரியான மேலெழுதல்: `providerSpecificData.codexAppServerSandbox`. |
| `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | app-server இன் சொந்த ஒப்புதல் வினவல்களை தானாக ஒப்புதல் அளிக்கும் (ஹோஸ்டில் கட்டளை/கோப்பு/அனுமதி செயல்படுத்தல்). இயல்புநிலையாக அணைக்கப்பட்டுள்ளது — வினவல்கள் தானாக நிராகரிக்கப்படும்; harness கருவி அழைப்புகள் பாதிக்கப்படாது (அவை தனித்த `item/tool/call` passthrough வழியாகச் செல்கின்றன). `true`/`1`/`yes` ஐ ஏற்கிறது. இணைப்பு வாரியான மேலெழுதல்: `providerSpecificData.codexAppServerAutoApprove`. |
| `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | பதில் ஹெடர்களைப் பெறும் நேரம். |
| `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | ஸ்ட்ரீமிங் கோரிக்கைகளில் பதில் ஹெடர்களுக்கான அதிகபட்ச காத்திருப்பு (ms). `0` இந்த வரம்பை முடக்கும்; வெளிப்படையான provider `fetchStartTimeoutCapMs` முன்னுரிமை பெறும். |
| `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | ஒவ்வொரு நேரடி no-proxy முயற்சிக்கும் அதிகபட்ச பதில்-தொடக்க காத்திருப்பு (ms). காலாவதியானால் புதிய socket இல் ஒருமுறை மீண்டும் முயற்சிக்கும்; வரம்பை முடக்கி முந்தைய நடத்தையைத் தக்கவைக்க `0` என அமைக்கவும். |
| `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 min) | இலக்கு ஹோஸ்ட் private/LAN/loopback ஆக இருக்கும் நேரடி no-proxy முயற்சிகளுக்கான பதில்-தொடக்க அடித்தளம் (ms) (எடுத்துக்காட்டாக `localhost`, `host.docker.internal`, `192.168.x.x`), இதனால் நேட்டிவ் Ollama கோல்ட் ஸ்டார்ட் மேற்பட்ட 30s இயல்புநிலையால் துண்டிக்கப்படாது. அடித்தளமாகச் செயல்படுகிறது: பயனுள்ள காத்திருப்பு இந்த மதிப்புக்கும் `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` க்கும் இடையே பெரியது ஆகும்; `0` அல்லது தவறான மதிப்பு உள்ளூர் அடித்தளத்தை நீக்கும். தொலை ஹோஸ்ட்கள் பாதிக்கப்படாது. |
| `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 min) | மேற்பட்ட pooled-முயற்சி பதில்-தொடக்க காலாவதிக்குப் பிறகு புதிய-socket RETRY முயற்சிக்கான உச்சவரம்பு (ms) (#13703). அழைப்பாளர் ஏற்கனவே தனது சொந்த காலக்கெடு சிக்னலை இணைத்திருக்கும்போது மட்டுமே பொருந்தும் (தீர்மானிக்கப்பட்ட connection/model/provider/`FETCH_TIMEOUT_MS` காஸ்கேட்); அந்த சிக்னலே உண்மையான வரம்பு மற்றும் விரும்பப்பட்ட பாதையில் முதலில் செயல்படுகிறது, எனவே இது ஒரு தட்டையான வரம்பை விட தாராளமான பின்னடைவு பாதுகாப்பாகும் — இது இல்லையென்றால், மறுமுயற்சி pooled முயற்சியின் அதே குறுகிய `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` சாளரத்தை மீண்டும் பயன்படுத்தி, ஆரோக்கியமான மெதுவான-TTFB reasoning மாடல்களை 504 ஆக்கும். மேற்பட்ட தட்டையான அடித்தளத்திற்குக் கீழே ஒருபோதும் அனுமதிக்கப்படாது; அழைப்பாளர் எந்த காலக்கெடு சிக்னலையும் வழங்காதபோது, மறுமுயற்சி தட்டையான அடித்தளத்தை மாற்றாமல் வைத்திருக்கும். |
| `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | முழு பதில் உடலையும் பெறும் நேரம். |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | TCP இணைப்பு நிறுவல் காலாவதி. |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Keep-alive socket செயலற்ற காலாவதி. |
| `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | TLS ஃபிங்கர்பிரிண்ட் ப்ராக்ஸி (wreq-js) காலாவதி. |
| `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | wreq-js TLS-ஃபிங்கர்பிரிண்ட் டிரான்ஸ்போர்ட்டின் உடலில் (body) குறிப்பிட்டு முதல்-பைட்-நேரத்தை வரம்புபடுத்துகிறது; ஹெடர்கள் வந்தவுடன் அது நிறைவேறுவதால் `TLS_CLIENT_TIMEOUT_MS` மட்டும் நிறுத்தப்பட்ட உடலைப் பிடிக்க முடியாது (#12656). காலாவதியானால் wreq ரீடரை ரத்து செய்து நேரடி/ப்ராக்ஸி டிஸ்பேச்சருக்குத் திரும்புகிறது; `0` watchdog ஐ முடக்கும். |
| `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | OpenCode executor மட்டும், மற்றும் `OPENCODE_RESPONSES_STALL_ROTATION` ஃபீச்சர் ஃபிளாக் இயக்கத்தில் இருக்கும்போது மட்டும் (இயல்புநிலையாக அணைக்கப்பட்டது): ஸ்ட்ரீம் செய்யப்பட்ட Responses பதிலின் ஹெடர்களுக்குப் பிறகு முதல் உடல் பைட்டுக்கான காத்திருப்பை வரம்புபடுத்துகிறது (#13484). Responses ஸ்ட்ரீம் `response.created` உடன் திறக்கப்படுகிறது, எனவே இந்த சாளரத்திற்கு அப்பால் அமைதி என்பது ஸ்டால் ஆகும்: அக்கவுண்ட் கூல் டவுன் செய்யப்பட்டு, கோரிக்கை ஒருமுறை அடுத்த அக்கவுண்டுக்கு மாற்றப்படுகிறது; இரண்டாவது ஸ்டால் விரைவாக தோல்வியடையும். ஃபிளாக் இயக்கத்தில் இருந்தாலும் `0` கார்டை முடக்கும். |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= off) | OpenCode executor மட்டும்: மற்றொரு அக்கவுண்ட் இன்னும் கிடைக்கும்போது ஸ்ட்ரீம் செய்யப்பட்ட Responses அழைப்பில் அப்ஸ்ட்ரீம் பதில் ஹெடர்களுக்கான காத்திருப்பை வரம்புபடுத்துகிறது — வரிசையில் உள்ள கோரிக்கை முழு ஹெடர்கள் சாளரத்தை வைத்திருக்காமல் காத்திருப்பதை நிறுத்தி முன்னேறுகிறது. ஸ்ட்ரீம் செய்யப்பட்ட Responses அழைப்புகள் மட்டுமே பாதிக்கப்படுகின்றன (Responses ஸ்ட்ரீம் `response.created` உடன் திறக்கப்படுகிறது, எனவே அங்குள்ள அமைதி ஒரு வரிசை, ஜெனரேஷன் அல்ல); chat completions மற்றும் ஸ்ட்ரீம் செய்யப்படாத அழைப்புகள் பாதிக்கப்படாது, மேலும் சாளரம் பயனுள்ள fetch-start உச்சவரம்பை குறைக்கும் மட்டுமே, ஒருபோதும் நீட்டிக்காது. இயக்கும்போது பரிந்துரைக்கப்பட்ட மதிப்பு: `30000`. `0` முடக்கும். |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | OpenCode executor மட்டும்: ஒரு கோரிக்கையில் மேலே உள்ள headers-wait வரம்பு எத்தனை முறை அடுத்த கணக்குக்கு நகரலாம். கடைசியாக மீதமுள்ள கணக்கு எப்போதும் முழு headers சாளரத்தையும் தக்கவைத்துக்கொள்ளும். |
| `OPENCODE_PARK_AND_RESUME` | `false` | OpenCode executor மட்டும்: தொடர்ச்சியான தற்காலிக 429 பிழைகளுக்குப் பிறகு (அல்லது புதிய pool-strain குறிப்பு ஏற்பட்டால்) heartbeat உடன் கோரிக்கையை நிறுத்திவைத்து, முழு fleet ஐயும் பரப்புவதற்குப் பதிலாக அதிகபட்சம் 3 தொடர்ச்சியான கணக்குகள் வரை ஒரு வரம்புறுத்தப்பட்ட பகுதியை மீளிசைக்கவும் (#13924). இயல்புநிலையாக அணைக்கப்பட்டுள்ளது: ஒவ்வொரு 429 ம் முன்பு போலவே அடுத்த கணக்குக்கு மாறும். |
| `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | OpenCode executor மட்டும்: park-and-resume மீளிசைவுப் பகுதியில் உள்ள ஒவ்வொரு cooldown-தயார் கணக்கும் proxy-refusal நினைவகத்தால் ஒதுக்கப்பட்டிருந்தால், எதுவும் மீளிசையாமல் விடுவதற்குப் பதிலாக அவற்றை எப்படியும் வழங்கவும் (#14851, #14750 இன் தொடர்ச்சி). இயல்புநிலையாக அணைக்கப்பட்டுள்ளது: அந்த நிலையில் மீளிசைவுப் பகுதி காலியாக இருக்கும், #14750 க்கு முன் இருந்தது போல. |
| `STREAM_READINESS_STALL_RETRY` | `false` | ஸ்ட்ரீமிங் அரட்டை மட்டும்: முதல் upstream body பயன்படுத்தக்கூடிய நிகழ்வை உருவாக்குவதற்கு முன் முடங்கினால், அதே routing பாதை வழியாக அதே readiness பட்ஜெட்டுடனும் கணக்குத் தண்டனை இல்லாமலும் ஒரு வரம்புறுத்தப்பட்ட இரண்டாவது முயற்சியை மேற்கொள்ளவும். இயல்புநிலையாக அணைக்கப்பட்டுள்ளது: முடங்கிய முதல் body மீள்முயற்சி இல்லாமல் கோரிக்கையைத் தோல்வியடையச் செய்யும். |
| `OPENCODE_POOL_RESELECT` | `false` | OpenCode executor மட்டும்: ambient pool சூழலில் proxy-இல்லாத கணக்கில் egress-bucketed வழங்குநரிடமிருந்து 429 வந்த பிறகு, அதே egress முகவரியை மீண்டும் முயற்சிப்பதற்குப் பதிலாக அடுத்த முயற்சிக்கு connection pool இலிருந்து வேறொரு உறுப்பினரைக் கேட்கவும். வரிசைப்படுத்துகிறது, ஒருபோதும் விலக்குவதில்லை: தீர்ந்துபோன pool தற்போதைய நடத்தையையே கடைப்பிடிக்கும். இயல்புநிலையாக அணைக்கப்பட்டுள்ளது: ஒவ்வொரு 429 ம் முன்பு போலவே அடுத்த கணக்குக்கு மாறும். |
| `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(அமைக்கப்படவில்லை)_ | OpenCode executor மட்டும்: நிறுத்திவைப்பதற்கு முன் படிக்கப்படும் pool-strain குறிப்பின் பாதையை மேலெழுதவும் (`{since, reason, ttl_s}`, இயல்புநிலை `/tmp/opencode-pool-strain.json`, #13924). புதிய குறிப்பு மீண்டும் எண்ணிக்கை இல்லாமல் நிறுத்திவைக்கும்; இல்லாத அல்லது காலாவதியான குறிப்பு burst கவுண்டருக்குத் திரும்பும். |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | `/v1` bridge கோரிக்கைகளுக்கான proxy hop காலக்கெடு. |
| `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Firecrawl web-fetch executor ஐ சுயமாக ஹோஸ்ட் செய்யப்பட்ட இன்ஸ்டன்ஸை நோக்கச் செய்யவும் (கிளவுடுக்கு வெளியே API key விருப்பமானது). |
| `FIRECRAWL_TIMEOUT_MS` | `30000` | Firecrawl web-fetch executor க்கான ஒவ்வொரு கோரிக்கையின் காலக்கெடு. |
| `TAVILY_BASE_URL` | _(அமைக்கப்படவில்லை)_ | Tavily `/usage` quota fetcher (Provider Limits) க்கான அடிப்படை URL; அது `api.tavily.com` ஐச் சுட்டிக்காட்டும்போது புறக்கணிக்கப்படும். அமைக்கப்படாதபோது இணைப்பின் அடிப்படை URL க்குத் திரும்பும். |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | bridge க்கான ஒட்டுமொத்த சர்வர் கோரிக்கை காலக்கெடு. |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | bridge வழியாக response headers ஐ அனுப்புவதற்கான நேரம். |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Bridge keep-alive செயலற்ற காலக்கெடு. |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Raw socket காலக்கெடு (0 = முடக்கப்பட்டது). |
| `SHUTDOWN_TIMEOUT_MS` | `30000` | கட்டாயமாக வெளியேறுவதற்கு முன் SIGTERM/SIGINT இல் காத்திருப்பு காலம். |
| `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | `FETCH_TIMEOUT_MS` அமைக்கப்படாதபோது `src/shared/utils/fetchTimeout.ts` பயன்படுத்தும் மாற்று மதிப்பு. |
| `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | `src/shared/network/safeOutboundFetch.ts` இல் உள்ள `validationRead` மற்றும் `modelsProbe` presets க்கான காலக்கெடு (ms). டாஷ்போர்டில் active/error இடையே ஏற்ற இறக்கம் நடைபெறுவதைத் தடுக்க மெதுவான முனைப்புகளுக்கு (Cerebras, Cloudflare AI, Groq) இதை உயர்த்தவும். செல்லாத (<1000) அல்லது எண்ணற்ற மதிப்புகளுக்கு 8000ms க்குத் திரும்பும். |
| `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | `open-sse/utils/proxyFetch.ts` இல் relay-க்குரிய fetch காலக்கெடு (#9158). ஒட்டிக்கொண்ட relay கிளையண்ட்/ஏஜென்ட் காலக்கெடுவிற்கு (~30s) முன் தோல்வியடைய வேண்டும், இதனால் அழைப்பாளர்கள் பொதுவான upstream காலக்கெடுவிற்குப் பதிலாக relay-க்குரிய தோல்வியைக் காண்பார்கள். எப்போதும் முதலில் செயல்படும் வகையில் `29000` இல் வரம்புறுத்தப்பட்டுள்ளது. |
| `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | `open-sse/utils/proxyFetch.ts` இல் உள்ள direct/relay/proxy retry-once பாதைகளுக்கான பகிரப்பட்ட மீள்முயற்சி backoff (#9158). `0` = உடனே மீள்முயற்சி. |
| `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Native wreq-js கோரிக்கை காலக்கெடு (`claudeTlsClient.ts`). |
| `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | native காலக்கெடுவின் மேல் சேர்க்கப்படும் முழுமையான JS hard-deadline காத்திருப்பு நேரம். |
| `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Native wreq-js கோரிக்கை காலக்கெடு (`perplexityTlsClient.ts`). |
| `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | நேட்டிவ் காலக்கெடுவுடன் சேர்க்கப்படும் முழுமையான JS கடின-காலக்கெடு தயவு அவகாசம். |
| `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (அணை) | அழைப்பாளரின் சிஸ்டம் செய்தியில் "You have built-in web search. Answer questions directly using search results." என்ற வாக்கியத்தைச் சேர்க்கிறது (`perplexity-web/protocol.ts`). இயல்புநிலையில் அணைக்கப்பட்டுள்ளது — Perplexity எப்படியும் தேடும், மேலும் இந்த வாக்கியம் கோடிங் கிளையன்ட்களுக்கு மெட்டா-கருத்துரையாகப் பதில்களில் கசிந்துவிடும். மீட்டெடுக்க `1`/`true`/`yes`/`on` என அமைக்கவும். |
| `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | நேட்டிவ் wreq-js கோரிக்கை காலக்கெடு (`grokTlsClient.ts`). |
| `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | நேட்டிவ் காலக்கெடுவுடன் சேர்க்கப்படும் முழுமையான JS கடின-காலக்கெடு தயவு அவகாசம். |
| `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | நேட்டிவ் wreq-js கோரிக்கை காலக்கெடு (`notionTlsClient.ts`); நீண்ட உருவாக்கங்களுக்காக `notion-web` இதை ஒவ்வொரு கோரிக்கையிலும் `180000` ஆக உயர்த்துகிறது. |
| `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | நேட்டிவ் காலக்கெடுவுடன் சேர்க்கப்படும் முழுமையான JS கடின-காலக்கெடு தயவு அவகாசம். |
| `OMNIROUTE_BROWSER_POOL` | `on` | உலாவி-ஆதரவு வெப்-குக்கீ அரட்டைக்கான பகிரப்பட்ட Playwright உலாவி குளம் (`browserPool.ts`); முடக்க `off` என அமைக்கவும். |
| `OBSCURA_BIN` | `auto-detect` | உலாவி குளம் மற்றும் Cloudflare Playground செயலாக்கியால் முதன்மை இயந்திரமாகப் பயன்படுத்தப்படும் `obscura` பைனரியின் பாதை (`open-sse/services/obscura.ts`); அமைக்கப்படாதபோது கணினி PATH-இலிருந்து தானாகக் கண்டறியப்படும். |
| `OBSCURA_CDP_ENDPOINT` | _(அமைக்கப்படவில்லை)_ | புதிதாக ஒன்றை உருவாக்குவதற்குப் பதிலாக ஏற்கனவே இயங்கும் Obscura-வை (`http://host:port`) சுட்டிக்காட்டவும்; அந்தச் செயல்முறை இத்தொகுதியின் உரிமையில் இருக்காது (`open-sse/services/obscura.ts`). |
| `OBSCURA_PORT` | `random free port` | உருவாக்கப்பட்ட `obscura serve`-க்கான வெளிப்படையான போர்ட்; அமைக்கப்படாதபோது இலவச போர்ட் தானாகத் தேர்ந்தெடுக்கப்படும் (`open-sse/services/obscura.ts`). |
| `WEB_COOKIE_USE_BROWSER` | `0` | வெப்-குக்கீ அரட்டைக் கோரிக்கையை உலாவி-ஆதரவுப் பாதையில் சேர்க்கத் தேர்வு செய்ய (`browserBackedChat.ts`); இயக்க `1` என அமைக்கவும். |
| `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Kimi Web (சர்வதேச kimi.ai Connect-RPC) செயலாக்கியின் அடிப்படை URL (`kimi-web.ts`); மிரர்/ப்ராக்ஸி முனைப்புகளுக்கு மட்டுமே மேலெழுதவும். |
| `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Kimi Web செயலாக்கியின் முழு அரட்டை முனைப்பு (`kimi-web.ts`). |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | _(தானாகக் கண்டறியப்பட்டது)_ | Adobe Firefly ஊடாடும் உலாவி உள்நுழைவுக்கான கணினி Chrome/Edge இயங்குநிரலின் பாதை (`adobeFireflyBrowserLogin.ts`); OS வாரியான தானியங்கு-கண்டறிதலை மேலெழுதுகிறது. |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ standalone வெளியீடு_ | பில்டுக்குப் பிந்தைய கோலொகேஷன் படியால் (`scripts/build/colocate-standalone.mjs`) பயன்படுத்தப்படும் standalone வெளியீட்டு அடைவுக்கான பில்ட்-நேர மேலெழுதல்; இது இயக்கநேரம் அல்ல, பில்ட் கருவித்தொகுப்பு. |
காம்போ இலக்கு முயற்சிகள் தீர்வு செய்யப்பட்ட அப்ஸ்ட்ரீம் கோரிக்கை காலக்கெடுவைப்
(`FETCH_TIMEOUT_MS`, அல்லது அது fetch இயல்புநிலையை வழங்கும்போது `REQUEST_TIMEOUT_MS`)
பெறுகின்றன. காம்போ ஃபால்பேக்கை வேகமாக்குவதற்காக மட்டுமே காம்போ, காம்போ இயல்புநிலைகள்
அல்லது வழங்குநர் மேலெழுதலில் `targetTimeoutMs` ஐ அமைக்கவும்; தற்போதைய அப்ஸ்ட்ரீம்
காலக்கெடுவுக்கு மேலுள்ள மதிப்புகள் அப்ஸ்ட்ரீம் காலக்கெடுவிற்கு வரம்பிடப்படும்.
`comboTimeoutMs` என்பது ஃபெயிலோவர் இலக்குகள் முழுவதும் பொருந்தும் தனி
முழு-காம்போ சுவர்-கடிகார ஒதுக்கீடு ஆகும். வரம்பற்ற மறுசெய்தலைத் தொடர
இதை அமைக்காமலோ அல்லது `0` ஆகவோ விடவும் (`comboPredicates.ts`-இல் உள்ள
ஹார்ட்கோடு செய்யப்பட்ட 10 நிமிட ஹேங்-ஸ்டாப் இன்னும் பொருந்தும்). நேர்மறை மதிப்பு
காம்போவுக்கான அந்தப் பாதுகாப்பு வலையை மாற்றிவிடும். மெதுவான முதல் இலக்குக்குப்
பிறகும் ஃபெயிலோவருக்கு நேரம் இருக்குமாறு `comboTimeoutMs` ஐ `targetTimeoutMs` ஐ விட
நீளமாக வைத்திருங்கள்.
### சர்க்யூட் பிரேக்கர் வாசல் மதிப்புகள்
வழங்குநர்-நிலை சர்க்யூட் பிரேக்கர் சரிசெய்தல். இயல்புநிலைகள் 500+ இணைப்புகளுக்கு v3.6 முதல் பயன்படுத்தப்பட்டு வரும் அளவிடப்பட்ட மதிப்புகளைப் பிரதிபலிக்கின்றன.
| மாறி | இயல்புநிலை | மூல கோப்பு | விவரணை |
| ------------------------------------------------------------- | ---------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | பிரேக்கர் திரிப்பதற்கு முன் OAuth வழங்குநர்களுக்கான தொடர்ச்சியான தோல்வி வரம்பு. |
| `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | OAuth வழங்குநர் பிரேக்கருக்கான மீட்டமைப்பு சாளரம் (ms). |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | API-key வழங்குநர்களுக்கான தொடர்ச்சியான தோல்வி வரம்பு. |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | API-key வழங்குநர் பிரேக்கருக்கான மீட்டமைப்பு சாளரம் (ms). |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | உள்ளூர் வழங்குநர்களுக்கான (Ollama, LM Studio, ...) தொடர்ச்சியான தோல்வி வரம்பு. |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | உள்ளூர் வழங்குநர் பிரேக்கருக்கான மீட்டமைப்பு சாளரம் (ms). |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: முழு OAuth வழங்குநரும் குளிர்விப்பில் நுழைவதற்கு முன் சாளரத்திற்குள் ஏற்படும் தோல்விகள். |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: OAuth வழங்குநர்களுக்கான உருண்டை தோல்வி-எண்ணிக்கை சாளரம் (ms). |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: OAuth வழங்குநர் வரம்பை எட்டியதும் குளிர்விப்பு (ms). |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | இத்தனை தோல்விகளில் OAuth வழங்குநர் DEGRADED நிலையில் நுழைகிறார். |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | OAuth வழங்குநர் அதிகபட்ச resetTimeout தீவிரமாக்கல் பெருக்கி. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | இத்தனை திறந்த சுழற்சிகளுக்குப் பிறகு OAuth வழங்குநர் தீவிரமாக்கப்படுகிறார். |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: முழு API-key வழங்குநரும் குளிர்விப்பில் நுழைவதற்கு முன் சாளரத்திற்குள் ஏற்படும் தோல்விகள். |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: API-key வழங்குநர்களுக்கான உருண்டை தோல்வி-எண்ணிக்கை சாளரம் (ms). |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: API-key வழங்குநர் வரம்பை எட்டியதும் குளிர்விப்பு (ms). |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | இத்தனை தோல்விகளில் API-key வழங்குநர் DEGRADED நிலையில் நுழைகிறார். |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | API-key வழங்குநர் அதிகபட்ச resetTimeout தீவிரமாக்கல் பெருக்கி. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | இத்தனை திறந்த சுழற்சிகளுக்குப் பிறகு API-key வழங்குநர் தீவிரமாக்கப்படுகிறார். |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: முழு உள்ளூர் வழங்குநரும் குளிர்விப்பில் நுழைவதற்கு முன் ஏற்படும் தோல்விகள். |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: உள்ளூர் வழங்குநர்களுக்கான உருண்டை தோல்வி-எண்ணிக்கை சாளரம் (ms). |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | வழங்குநர்-நிலை பிரேக்கர்: உள்ளூர் வழங்குநர் வரம்பை எட்டியதும் குளிர்விப்பு (ms). |
| `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | அப்ஸ்ட்ரீம் 429 எண் `Retry-After` இல்லாமல் வரும்போது (#14573) பல-கீ API-key சுழற்சி பயன்படுத்தும் கீ தோறும் குளிர்விப்பு (ms). நேர்மறையற்ற அல்லது எண் அல்லாத மதிப்புகள் இயல்புநிலைக்குத் திரும்பும். |
| `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | ஒரு கான்டெக்ஸ்ட்-கேச் பின்னின் வழங்குநர் நிலையாக உடல்நலமற்றதாகக் கருதப்பட்டு, ஃபெயில்ஓவருக்காக அந்த பின் கைவிடப்படும் பேக்ஆஃப் ஆழம். |
| `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | ஒரு கான்டெக்ஸ்ட்-கேச் பின்னை கைவிடுவதற்கு முன் குறுகிய தற்காலிக குளிர்விப்புகளைப் பொறுத்துக்கொள்ளும் ஃப்ளாப் எதிர்ப்பு சாளரம் (ms). |
### சூழ்நிலைகள்
| சூழ்நிலை | கட்டமைப்பு |
| -------------------------------------------- | ---------------------------------------------------------------- |
| **நீண்ட நேரம் இயங்கும் குறியீடு உருவாக்கம்** | `REQUEST_TIMEOUT_MS=900000` (15 நிமிடம்) |
| **மொத்த ஸ்ட்ரீம் ஆயுளுக்கு வரம்பு** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 நிமிடம்) |
| **தயாரிப்பு API-க்கான விரைவு தோல்வி** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` |
| **விரிவான சிந்தனை மாதிரிகள்** | `STREAM_IDLE_TIMEOUT_MS=300000` (துரிதங்களுக்கு இடையே 5 நிமிடம்) |
---
## 16. பதிவித்தல்
பதிவித்தல் அமைப்பு stdout மற்றும் சுழற்சி செய்யப்பட்ட பதிவுக் கோப்புகள் ஆகிய இரண்டிலும் எழுதுகிறது. அனைத்து உள்ளமைவுகளும் `src/lib/logEnv.ts` மூலம் படிக்கப்படுகின்றன.
| மாறி | இயல்புநிலை | விளக்கம் |
| ----------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `APP_LOG_LEVEL` | `info` | குறைந்தபட்ச பதிவுநிலை: `debug`, `info`, `warn`, `error`. |
| `APP_LOG_FORMAT` | `text` | வெளியீட்டு வடிவம்: `text` (மனிதர்கள் படிக்கக்கூடியது) அல்லது `json` (கட்டமைக்கப்பட்டது). |
| `APP_LOG_TO_FILE` | `true` | stdout உடன் சேர்த்து பதிவுகளைக் கோப்பிலும் எழுதும். |
| `APP_LOG_FILE_PATH` | `logs/application/app.log` | பதிவுக் கோப்புப் பாதை (திட்ட மூலத்திற்கோ அல்லது `DATA_DIR`-க்கோ சார்பானது). |
| `APP_LOG_MAX_FILE_SIZE` | `50M` | சுழற்சிக்கு முந்தைய அதிகபட்சக் கோப்பு அளவு. ஏற்கப்படும் மதிப்புகள்: `50M`, `1G`, `512K`, அல்லது சாதாரண பைட்டுகள். |
| `APP_LOG_RETENTION_DAYS` | `7` | சுழற்சி செய்யப்பட்ட பயன்பாட்டுப் பதிவுக் கோப்புகளை வைத்திருக்கும் நாட்கள். |
| `APP_LOG_MAX_FILES` | `20` | சுழற்சி செய்யப்பட்ட பதிவுக் கோப்புகளின் அதிகபட்சக் காப்புப்பிரதிகள். |
| `CALL_LOG_RETENTION_DAYS` | `7` | தரவுத்தளத்தில் கோரிக்கை/அழைப்புப் பதிவுகளை வைத்திருக்கும் நாட்கள். |
| `CALL_LOG_MAX_ENTRIES` | `10000` | நினைவக இடையகத்திலுள்ள அழைப்புப் பதிவுகளின் அதிகபட்ச எண்ணிக்கை. |
| `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | சீரமைப்பதற்கு முன் `call_logs` SQLite அட்டவணையில் இருக்கக்கூடிய அதிகபட்ச வரிசைகள். |
| `ENABLE_REQUEST_LOGS` | _(அமைக்கப்படவில்லை)_ | முகப்புப்பலகை அமைப்பை மீறி, விரிவான கோரிக்கைப் பதிவை இயக்கவோ முடக்கவோ கட்டாயப்படுத்தும். |
| `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 மணி நேரம்) | நினைவகச் சுத்தப்படுத்தலுக்கு முன், தொடர்பிழந்த செயலில் உள்ள கோரிக்கைப் பதிவு உள்ளீடுகளுக்கான அதிகபட்ச வயது. |
| `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | `call_log_pipeline_enabled=true` ஆக இருக்கும்போது பைப்லைன் கலைப்பொருட்களில் ஸ்ட்ரீம் துண்டுகளைச் சேமிக்கும். விருப்பத்தேர்வு (`true`) — வட்டிடத்தைச் சேமிக்க இயல்புநிலையில் முடக்கப்பட்டுள்ளது. |
| `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | `call_log_pipeline_enabled=true` ஆக இருக்கும்போது பைப்லைன் அழைப்புப் பதிவுக் கலைப்பொருளின் அதிகபட்ச அளவு, KB-இல். |
| `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | சீரமைப்பதற்கு முன் `proxy_logs` SQLite அட்டவணையில் இருக்கக்கூடிய அதிகபட்ச வரிசைகள். |
| `PROXY_LOG_INCLUDE_IPS` | `false` | `[ProxyEgress]` கன்சோல் பதிவுகளில் கிளையன்ட்/வெளியேற்ற IP-களையும் கணக்கு முன்னொட்டுகளையும் சேர்க்கும். முகப்புப்பலகை/தரவுத்தள ப்ராக்ஸி-பதிவு பதிவுகள் முழு விவரங்களையும் தக்கவைத்துக்கொள்ளும். |
| `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | ப்ராக்ஸி-பதிவு வரிசைகளில் `first_chunk_ms`-ஐப் (அனுப்பத் தொடங்கியதிலிருந்து முதல் பயனுள்ள உடற்பகுதி பைட் வரையிலான நேரம்) பதிவுசெய்ய `"true"` அல்லது `"1"` என அமைக்கவும். ஒவ்வொரு மேல்நிலை உடற்பகுதியையும் தாமதமான பாஸ்த்ரூ ஸ்ட்ரீமில் சுற்றி, பைட் வந்ததும் வரிசையைத் திருத்துகிறது; பதில்கள் மாற்றமின்றிக் கடந்து செல்ல இயல்புநிலையில் இது முடக்கப்பட்டுள்ளது. |
| `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 நிமிடம்) | செயலில் உள்ள பதிவுக் கோப்பின் அளவை `src/lib/logRotation.ts` எவ்வளவு அடிக்கடி மீண்டும் சரிபார்க்கும். |
| `CHAT_LOG_TEXT_LIMIT` | `65536` | அரட்டைப் பதிவுக் கலைப்பொருட்களில் தக்கவைக்கப்படும் அதிகபட்ச சர நீளம் (இயல்புநிலை 64 KB). |
| `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | அரட்டைப் பதிவுப் பேலோடுகளைத் துண்டிக்கும்போது, அணிவரிசையின் இறுதியிலிருந்து தக்கவைக்கப்படும் உருப்படிகளின் எண்ணிக்கை. |
| `CHAT_LOG_MAX_DEPTH` | `6` | அரட்டைப் பதிவுப் பேலோடுகள் துண்டிக்கப்படுவதற்கு முந்தைய அதிகபட்ச உள்ளமைவு ஆழம். |
| `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | அரட்டைப் பதிவுப் பேலோடுகளில் தக்கவைக்கப்படும் அதிகபட்ச பொருள் விசைகள் (0 = வரம்பற்றது). |
| `CHAT_LOG_MAX_BODY_KB` | `1024` | முழுமையான நகலுக்குப் பதிலாக வெறும் சுருக்கத்தால் மாற்றப்படுவதற்கு முன், முழுக் கோரிக்கை/பதில் உடற்பகுதியின் அளவு (KB). நீண்ட முகவர்-சார்ந்த உரையாடல்களில், முகப்புப்பலகையில் உண்மையான செய்திகளுக்குப் பதிலாக இடநிரப்பி காட்டப்பட்டால் இதை உயர்த்தவும். |
| `CHAT_DEBUG_FILE` | `false` | true ஆக இருக்கும்போது, `serializeArtifactForStorage` அளவு சார்ந்த துண்டிப்பைத் தவிர்க்கும். பிழைத்திருத்தத்திற்கு மட்டும். |
---
## 17. நினைவக உகப்பாக்கம்
| மாறி | இயல்புநிலை | விளக்கம் |
| ----------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_MEMORY_MB` | _தானியங்கு_ (பேர் மெட்டல்); **Docker பிம்பத்தில் `1024`** | **பரிந்துரைக்கப்படும்** Docker/standalone V8 heap வரம்பு (MB). அமைக்கப்படாதபோது, டைனமிக்காக அளவீடு செய்யப்படுகிறது (கணினி RAM-இல் ~35%, `[512, 4096]` வரம்பில் கட்டுப்படுத்தப்பட்டது); மொத்த நினைவகத்தைப் படிக்க முடியாதபோது மட்டுமே `512` கீழ் வரம்பாகும். `run-standalone.mjs`-இல் (Docker CMD), **வெளிப்படையான** மதிப்பு `--max-old-space-size` ஆக இணைக்கப்பட்டு, முரண்படும் NODE_OPTIONS heap கொடியை (V8 கடைசி-கொடி விதி) **வெல்லும்**. `omniroute serve` ஏற்கனவே உள்ள NODE_OPTIONS heap-ஐயே விரும்புகிறது (#5238). இரண்டையும் வெவ்வேறு எண்களில் அமைக்க வேண்டாம் — செயல்முறை இரு மதிப்புகளையும் வெல்லும் மதிப்பையும் பெயரிட்டு ஒரு எச்சரிக்கையைப் பதிவு செய்யும். **அதிகாரப்பூர்வ Docker பிம்பம் எப்போதும் `1024`-ஐ அமைக்கிறது, எனவே அங்கு அளவீடு ஒருபோதும் இயங்காது.** Coding-agent `/v1/responses`-க்கு `8192`–`12288` மற்றும் கூடுதல் cgroup headroom தேவை — [Docker வழிகாட்டி — இயக்க நேர RAM](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents)-ஐப் பார்க்கவும். |
| `OMNIROUTE_RSS_PRESSURE_MB` | _தானியங்கு_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; `OMNIROUTE_MEMORY_MB` அமைக்கப்படாதபோது அணைப்பு) | `open-sse/utils/resourcePressure.ts` | V8 `heapUsed` காண முடியாத நேட்டிவ்/வெளிப்புற நினைவகத்திற்கான முழுமையான செயல்முறை-RSS பியூஸ் (MB); அதற்கு மேல் புதிய கோரிக்கைகள் 503 `resource_pressure` பெறும். திடீர் உயர்வுக்குப் பிறகு RSS அரிதில் மட்டுமே குறையும், எனவே அதை `OMNIROUTE_PRESSURE_SELF_RESTART` உடன் இணைக்கவும். |
| `PROMPT_CACHE_MAX_SIZE` | `50` | தற்காலிகமாகச் சேமிக்கப்பட்ட சிஸ்டம் ப்ராம்ட் பதிவுகளின் அதிகபட்ச எண்ணிக்கை. |
| `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | ப்ராம்ட் கேச்சின் அதிகபட்ச மொத்த அளவு. |
| `PROMPT_CACHE_TTL_MS` | `300000` (5 நிமிடம்) | ப்ராம்ட் கேச் பதிவின் TTL. |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | தற்காலிகமாகச் சேமிக்கப்பட்ட temperature=0 பதில்களின் அதிகபட்ச எண்ணிக்கை. |
| `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | சிமாண்டிக் கேச்சின் அதிகபட்ச மொத்த அளவு. |
| `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 நிமிடம்) | சிமாண்டிக் கேச் பதிவின் TTL. |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | ஒரே நேரத்தில் செயலிலுள்ள உள்-நினைவக குறியீட்டை வைத்திருக்கும் லோக்கல்-கார்பஸ் ரூட்டுகள் (`src/lib/localCorpus/configured.ts`). LRU: வரம்பை அடையும்போது, மிகக் குறைவாகச் சமீபத்தில் பயன்படுத்தப்பட்ட ரூட்டின் குறியீடு வெளியேற்றப்பட்டு, அதன் அடுத்த வினவலில் மீண்டும் உருவாக்கப்படுகிறது. குறைந்தபட்சம் `1` ஆகக் கட்டுப்படுத்தப்படுகிறது; எண் அல்லாத மதிப்பு இயல்புநிலைக்குத் திரும்புகிறது. |
| `STREAM_HISTORY_MAX` | `50` | டாஷ்போர்டு நேரடி காட்சி பஃப்பரில் சமீபத்திய ஸ்ட்ரீம் நிகழ்வுகளின் அதிகபட்ச எண்ணிக்கை. |
| `CONTEXT_LENGTH_DEFAULT` | _(அமைக்கப்படவில்லை)_ | `CONTEXT_LENGTH_` மாறி இல்லாத ஒவ்வொரு வழங்குநருக்கும் உலகளாவிய கான்டெக்ஸ்ட்-நீள மேலெழுதல் (டோக்கன்கள்). அமைக்கப்பட்டிருக்கும்போது, அந்த வழங்குநர்களுக்கான கேட்டலாக், டாஷ்போர்டு மேலெழுதல் மற்றும் ரெஜிஸ்ட்ரி மதிப்புகளை இது **மாற்றிவிடும்**; அமைக்கப்படாதபோது, OmniRoute தனது உள்ளமைந்த சங்கிலியைப் பயன்படுத்துகிறது, அதன் இறுதி வழி `128000`. [வழங்குநர் வாரியான கான்டெக்ஸ்ட் நீளம்](#per-provider-context-length-context_length_provider)-ஐப் பார்க்கவும். |
| `USAGE_TOKEN_BUFFER` | `100` | பயன்பாட்டு கோட்டாக்களைக் கண்காணிக்கும்போது ஒதுக்கப்படும் கூடுதல் டோக்கன் headroom. |
### வழங்குநர் வாரியான கான்டெக்ஸ்ட் நீளம் (`CONTEXT_LENGTH_`)
`open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) ஒரு
**வழங்குநர் வாரியான** வடிவத்தையும் படிக்கிறது; அதன் பெயர் இயக்க நேரத்தில் வழங்குநர் ID-இலிருந்து
உருவாக்கப்படுவதால், அதை மேலே உள்ள அட்டவணையிலோ அல்லது `.env.example`-இலோ வரிசை வரிசையாகப்
பட்டியலிட முடியாது.
**பெயர்.** `CONTEXT_LENGTH_` — இங்கு `` என்பது வழங்குநர் ID-யின் முழு பெரியெழுத்து வடிவம்; `A-Z` / `0-9` வரம்புக்கு வெளியே உள்ள ஒவ்வொரு எழுத்தும் `_` ஆல் மாற்றப்படுகிறது. வழங்குநர் ID என்பது alias தீர்வுக்குப் பிந்தைய நியம ID ஆகும் (ஒரு குறுகிய alias தீர்க்கப்பட்ட பின் `provider/model` சரத்தின் `provider` பகுதி). தனிப்பயன் OpenAI- அல்லது Anthropic-இணக்க நோடுகள் தங்கள் உருவாக்கப்பட்ட node ID-ஐப் பயன்படுத்துகின்றன, எனவே UUID மாறிப் பெயரின் ஒரு பகுதியாக இருக்கும். மதிப்பு டோக்கன்களின் நேர்மறை முழு எண் எண்ணிக்கை; வேறு எதுவும் (வெற்று, `0`, எதிர்மறை, எண் அல்லாதது) புறக்கணிக்கப்படுகிறது, தீர்வு அடுத்த படிக்கு நகர்கிறது.
| வழங்குநர் ID | மாறி பெயர் |
| ----------------------------------------------------------- | -------------------------------------------------------------------------- |
| agentrouter | CONTEXT_LENGTH_AGENTROUTER |
| openrouter | CONTEXT_LENGTH_OPENROUTER |
| openai-compatible-chat-0f8e2c1a-5b7d-4e3f-9a6c-2d1b8e4f7a90 | CONTEXT_LENGTH_OPENAI_COMPATIBLE_CHAT_0F8E2C1A_5B7D_4E3F_9A6C_2D1B8E4F7A90 |
**முன்னுரிமை.** ஒரு `provider/model` ஜோடிக்கு, மதிப்பைத் தரும் முதல் படி வெல்லும்:
1. அந்த வழங்குநருக்கான `CONTEXT_LENGTH_`.
2. `CONTEXT_LENGTH_DEFAULT` (உலகளாவிய சூழல் மேலெழுதல்).
3. மாதிரி-வாரியான சாளரம்: நிலைத்திருக்கும் context மேலெழுதல் (டாஷ்போர்டில் அமைக்கப்பட்டது, அல்லது
discovery reconciler மூலம் தானாகப் பின் செய்யப்பட்டது, `CONTEXT_WINDOW_RECONCILE_INTERVAL` ஐப்
பார்க்கவும்), இல்லையெனில் ஒத்திசைக்கப்பட்ட பட்டியல் / models.dev மதிப்பு.
4. வழங்குநரின் registry `defaultContextLength`.
5. மாதிரி-பெயர் heuristic-கள் (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` /
`codex` 400000).
6. உள்ளமைந்த வழங்குநர்-வாரியான இயல்புநிலைகள், பின்னர் `128000`.
இரண்டு சூழல் படிகளும் **முழு வழங்குநருக்கும்** பொருந்தும்: அந்த வழங்குநரின் ஒவ்வொரு மாதிரிக்கும் ஒரே வரம்பு கிடைக்கும், மேலும் அவை மாதிரி-வாரியான டாஷ்போர்டு மேலெழுதல்களை வெல்லும். ஒரு வழங்குநரின் ஒரே ஒரு மாதிரிக்கு மட்டும் வேறு சாளரம் தேவைப்பட்டால், அதற்குப் பதிலாக டாஷ்போர்டில் மாதிரி-வாரியான மேலெழுதலைப் பயன்படுத்தவும்.
**செயல்வீச்சு.** இந்த சங்கிலி கோரிக்கை-நேர context-சாளர சரிபார்ப்பை
(`open-sse/handlers/chatCore.ts`-இல் உள்ள `context_length_exceeded` / "Input exceeds context window"
நிராகரிப்பு), prompt சுருக்கப் பட்ஜெட்டுகள் மற்றும் combo context வரம்புகளை இயக்குகிறது.
`GET /v1/models` விளம்பரப்படுத்தும் `context_length` இன்னும் பட்டியல் அல்லது registry
மெட்டாடேட்டாவிலிருந்தே வரலாம்; அது சூழல் மேலெழுதலைப் பிரதிபலிக்கும் என்று உத்தரவாதம் இல்லை.
**உதாரணம்.** பட்டியல் 128,000 என அறிவிக்கும்போது, அதன் மாதிரி 1,050,000-டோக்கன் சாளரத்தை ஏற்கும் ஒரு வழங்குநர்:
```dotenv
CONTEXT_LENGTH_AGENTROUTER=1050000
```
மாற்றிய பின் சர்வரை மறுதொடக்கம் செய்யவும்: மதிப்பு சர்வர் செயல்முறையின் சூழலிலிருந்து படிக்கப்படுகிறது.
**டெஸ்க்டாப் ஆப்பில்** சர்வர் ஒரு child process ஆக இயங்குகிறது; ஆப் தொடங்கப்பட்ட பின் அமைக்கப்பட்ட
கணினி மாறியை அது காணாது. ஆப் ஏற்றும் `.env` கோப்பில் அந்த வரியை இடவும் (தேடல் வரிசை
[Electron வழிகாட்டி: சூழல் கோப்பு தேடல்](../guides/ELECTRON_GUIDE.md#environment-file-lookup)-இல்),
பின்னர் ஆப்பை முழுமையாக மூடி மீண்டும் தொடங்கவும்.
### சுருக்கம்
| மாறி | இயல்புநிலை | விளக்கம் |
| ------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | அமைக்கப்படவில்லை | `.rtk/trust.json` ஹாஷ் இல்லாமலேயே திட்டத்தின் `.rtk/filters.json`-ஐ நம்பவும். கட்டுப்படுத்தப்பட்ட உள்ளக மேம்பாட்டில் மட்டும் பயன்படுத்தவும். |
### நினைவக இயந்திரம் (திட்டம் 21)
### நினைவகம், திறன்கள் மற்றும் டோக்கன் புதுப்பிப்பின் event-loop செலவு (#10349)
OmniRoute ஒரு **ஒற்றை Node செயல்முறை**. நினைவக பிரித்தெடுப்பு/மீட்டெடுப்பு, திறன்கள் உட்செலுத்தல் மற்றும் வழங்குநர் டோக்கன் புதுப்பிப்பு ஆகியவை `GET /healthz` மற்றும் டாஷ்போர்டு இயங்கும் **அதே event loop**-இல்தான் இயங்குகின்றன. அவை ஒரு worker thread அல்ல.
| பணி | குறியீடு | இயல்புநிலை | ஆபரேட்டர் கட்டுப்பாடு |
| ------------------------------------ | ---------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| நினைவக பிரித்தெடுப்பு / மீட்டெடுப்பு | `src/lib/memory/` | டாஷ்போர்டு **memoryEnabled** (இயல்பாக இயக்கம்) | **Settings → Memory**-இல் அணைக்கவும். அமைப்புகளில் அம்சத்தை முடக்குவதைத் தவிர தனி env kill switch இல்லை. |
| திறன்கள் உட்செலுத்தல் | `src/lib/skills/injection.ts` | டாஷ்போர்டு **skillsEnabled** (இயல்பாக இயக்கம்) | **Settings → Memory/Skills**-இல் அணைக்கவும் (`skillsEnabled`). கீழே உள்ள sandbox கட்டுப்பாடுகள், உட்செலுத்தல் ஏற்கனவே இயக்கத்தில் இருந்த பின் செயலாக்கத்தை மட்டுமே வரம்புபடுத்தும். |
| டோக்கன் புதுப்பிப்பு | `src/sse/services/tokenRefresh.ts` | இணைக்கப்பட்ட OAuth/வெப் வழங்குநர்களுக்கு இயக்கம் | வழங்குநரைத் துண்டிக்கவும் அல்லது டோக்கன்கள் செல்லுபடியாகவே இருக்கட்டும்; இன்று `TOKEN_REFRESH=0` env இல்லை. |
`/healthz` அமைதியான கணினியில் மெதுவாக இருந்தால், முதலில் நினைவகம் + திறன்களை முடக்கவும், பின்னர் பட்டியல்/சுருக்கச் சுமையைச் சரிபார்க்கவும் (#10303, #9685). இந்த அம்சங்கள் `await` புள்ளிகளில் வழிவிட்டாலும், இன்னும் அந்த ஒரே thread-க்காகப் போட்டியிடுகின்றன.
நிலைத்திருக்கும் நினைவக துணை அமைப்பின் (`src/lib/memory/`) embedding அடுக்கு, vector store மற்றும் reranking கட்டுப்பாடுகள்.
| மாறி | இயல்புநிலை | விளக்கம் |
| ------------------------------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 நிமிடம்) | உள்-நினைவக உட்பொதிவு தற்காலிக சேமிப்பிற்கான TTL (ஒவ்வொரு மூலம்/மாதிரி/dim கையொப்பத்திற்கும்). |
| `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | உட்பொதிவு தற்காலிக சேமிப்பில் வைத்திருக்கப்படும் அதிகபட்ச LRU பதிவுகள். |
| `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | தேர்வு-செய்யக்கூடிய (opt-in) `@huggingface/transformers` உள்ளூர் MiniLM பைப்லைனுக்கான HF repo ஐடி (~23 MB int8, ~400 MB RAM). |
| `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | நிலையான potion/Model2Vec lookup-table உட்பொதிவாக்கிக்கான HF repo ஐடி. தேவைப்படும்போது தாமதமாக (lazily) தற்காலிக சேமிப்புக் கோப்பகத்தில் பதிவிறக்கம் செய்யப்படுகிறது. |
| `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | நிலையான potion மாதிரிக் கோப்புகளைத் தற்காலிகமாகச் சேமிக்கப் பயன்படும் கோப்பகம். அமைக்கப்படாதபோது `DATA_DIR`-க்குக் கீழ் இயல்புநிலையாகிறது. |
| `HF_HUB_ENDPOINT` | `https://huggingface.co` | `staticPotion.ts` பயன்படுத்தும் Hugging Face Hub அடிப்படை URL-ஐ மீளமைக்கிறது (எ.கா. air-gapped அமைப்புகளுக்கான மிரர் முனைப்புள்ளி). |
| `MEMORY_VEC_TOP_K` | `20` | `src/lib/memory/vectorStore.ts`-இல் உள்ள `sqlite-vec` brute-force வெக்டர் தேடல் பயன்படுத்தும் இயல்புநிலை top-K. |
| `MEMORY_RRF_K` | `60` | கலப்பு FTS5 + வெக்டர் மீட்பிற்கான Reciprocal Rank Fusion மாறிலி `k` (sqlite-vec செய்முறை). |
| `VECTOR_STORE_DISABLE_VEC` | `false` | `getVectorStore()` (`src/lib/memory/vectorStore.ts`)-இல் உள்ள சோதனை/நோயறிதல் இணைப்புப்புள்ளி: `true` எனில், வெக்டர் சேமிப்பை `null`-ஆகக் கட்டாயப்படுத்துகிறது (`sqlite-vec` இல்லாத கிளவுட்/WASM சூழலை உருவகப்படுத்துகிறது), நினைவக மீட்பை FTS5 முக்கியச்சொல் தேடலாகத் தரமிறக்குகிறது. தயாரிப்புச் சூழலில் அமைக்காமல் விடவும். |
| `NOTION_API_KEY` | _(அமைக்கப்படவில்லை)_ | Notion பின்தளத்திற்கான API விசை (`genericBackend.ts` அறியப்பட்ட பின்தள முன்னமைவால் பயன்படுத்தப்படுகிறது). |
| `NOTION_API_URL` | `https://api.notion.com/v1` | Notion API-க்கான அடிப்படை URL (தன்-ஹோஸ்ட் செய்யப்பட்ட Notion மாற்றீடுகளுக்காக மீளமைக்கலாம்). |
| `OBSIDIAN_API_KEY` | _(அமைக்கப்படவில்லை)_ | Obsidian Vault பின்தளத்திற்கான API விசை (`genericBackend.ts` அறியப்பட்ட பின்தள முன்னமைவால் பயன்படுத்தப்படுகிறது). |
| `OBSIDIAN_API_URL` | `http://localhost:27123` | Obsidian Vault API-க்கான அடிப்படை URL (தொலைநிலை vault-க்காக மீளமைக்கலாம்). |
| `MEMORY_TYPED_DECAY_ENABLED` | `false` | TV6 வகைப்படுத்தப்பட்ட நினைவகச் சிதைவின் முதன்மை சுவிட்ச். **Opt-in (இயல்பாக அணைக்கப்பட்டது)** — ஸ்வீப் சிதைந்த நினைவுகளை **நீக்குகிறது**. அது அணைக்கப்பட்டிருக்கும்போது, `access_count`/`last_accessed_at` தூய தொலைஅளவியல் (telemetry) மட்டுமே; எதுவும் ஒருபோதும் நீக்கப்படாது. |
| `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | பயன்படுத்தப்படாத `episodic` நினைவு சிதைவதற்கான TTL (நாட்கள்). `0` எனில் episodic-ம் விலக்குரிமை பெறுகிறது. நிலையான வகைகள் (`factual`/`procedural`/`semantic`) எப்போதும் விலக்குரிமையுடையவை. சிதைவுக் கடிகாரம் `last_accessed_at`-ஐ அடிப்படையாகக் கொண்டு மீண்டும் தொடங்குகிறது. |
| `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | ஒரு நினைவு இத்தனை முறை அல்லது அதற்கு மேல் (`>=`) உட்செலுத்தப்பட்டால், வகையைப் பொருட்படுத்தாமல் சிதைவிலிருந்து விலக்குரிமை பெறுகிறது. `0` அணுகல் விலக்குரிமையை முடக்குகிறது. |
| `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (முடக்கப்பட்டது) | `src/lib/memory/typedDecay.ts`-இல் உள்ள விருப்ப காலாவகாச சிதைவு ஸ்வீப்பிற்கான இடைவெளி (வினாடிகள்). `0`/அமைக்கப்படாதது = காலாவகாச ஸ்வீப் இல்லை. இருமடங்கு opt-in: `MEMORY_TYPED_DECAY_ENABLED=true` ஆகவும் இருக்க வேண்டும். |
| `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(அமைக்கப்படவில்லை)_ | `system` செய்தியை **index 0-இல் மட்டுமே** ஏற்கும் வழங்குநர் ஐடிகளின் கமா-பிரிக்கப்பட்ட பட்டியல் (எழுத்து வேறுபாடு உணராதது) (`src/lib/memory/injection.ts`). இவற்றுக்கு, பல-சுற்று உரையாடல்களில் தற்காலிக சேமிப்பு-பாதுகாப்பான நடு-வரிசை நினைவக splice பாதுகாப்பற்றது, எனவே நினைவு முன்னணி system செய்தியாக இணைக்கப்பட்டு/முன்னிணைக்கப்படுகிறது. இயல்பாக `xiaomi-mimo`/`mimo` மட்டும்; அதே ஒற்றை-முன்னணி-system-செய்தி கட்டுப்பாட்டைச் செயல்படுத்தும் தன்-ஹோஸ்ட் செய்யப்பட்ட OpenAI-இணக்கமான முனைப்புள்ளிகளுக்காக (எ.கா. Qwen3.5+/3.6) விரிவாக்கவும். |
### குறைந்த-RAM Docker உதாரணம்
`128` டாஷ்போர்டுக்கு மட்டும். இந்த heap-இல் இயங்கும் கோடிங் முகவர்கள் நீண்ட `/v1/responses`-இன் போது `FATAL ERROR`-ஐ எதிர்கொள்கின்றன. இந்த உதாரணத்தை Claude/Codex/Grok கேட்வேயாகப் பயன்படுத்த வேண்டாம்.
```bash
OMNIROUTE_MEMORY_MB=128
PROMPT_CACHE_MAX_SIZE=20
PROMPT_CACHE_MAX_BYTES=524288 # 512 KB
SEMANTIC_CACHE_MAX_SIZE=25
SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MB
STREAM_HISTORY_MAX=10
```
---
## 18. விலை ஒத்திசைவு
வெளிப்புற மூலங்களிலிருந்து மாதிரி விலைத் தரவைத் தானாக ஒத்திசைத்தல்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ----------------------- | --------------------- | ------------------------ | ----------------------------------------------------- |
| `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | விருப்பத்தேர்வாக இயக்கக்கூடிய காலமுறை விலை ஒத்திசைவு. |
| `PRICING_SYNC_INTERVAL` | `86400` (24 மணிநேரம்) | `src/lib/pricingSync.ts` | ஒத்திசைவு இடைவெளி, விநாடிகளில். |
| `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | காற்புள்ளியால் பிரிக்கப்பட்ட தரவு மூலங்கள். |
---
## Arena ELO ஒத்திசைவு
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------- | --------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | காலமுறை Arena AI முன்னிலைப் பட்டியல் ELO ஒத்திசைவு; Dashboard Feature Flags-இலிருந்து இதை உள்ளமைக்கலாம் அல்லது விலகுவதற்கு `false` என அமைக்கலாம். |
| `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | `GET /v1/models`-இல் மாதிரி ID-களுக்குப் பயன்படுத்தப்படும் முன்னொட்டு வடிவம். ஒவ்வொரு மாதிரிக்கும் குறுகிய மாற்றுப்பெயர் முன்னொட்டு மற்றும் நியம வழங்குநர் முன்னொட்டு ஆகிய இரண்டையும் `dual` வெளியிடுகிறது (பின்தங்கிய இணக்கத்தன்மை — பட்டியலின் அளவை ஏறக்குறைய இரட்டிப்பாக்கும்); `alias` ஒவ்வொரு மாதிரிக்கும் ஓர் ID-ஐ வெளியிடுகிறது; `canonical` முழுமையான வழங்குநர்-ID முன்னொட்டை மட்டும் வெளியிடுகிறது (மாற்றுப்பெயரே ஏற்கனவே நியம ID-ஆக உள்ள வழங்குநர்கள் தங்களின் ஒற்றைப் பதிவைத் தக்கவைத்துக்கொள்கின்றனர்). கிளையன்ட்கள் ஒவ்வொரு கோரிக்கையிலும் `?prefix=alias` மூலம் இதை மீறியமைக்கலாம். [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix)-ஐப் பார்க்கவும். |
| `ARENA_ELO_SYNC_INTERVAL` | `86400` (24 மணிநேரம்) | `src/lib/arenaEloSync.ts` | ஒத்திசைவு இடைவெளி, விநாடிகளில். |
---
## PromptQL Playground வழங்குநர் (அதிகாரப்பூர்வமற்றது/சோதனைநிலை)
prompt.ql.app-க்கான தலைகீழ் பொறியமைக்கப்பட்ட GraphQL அமர்வுப் பாலம் (`src/shared/constants/providers/web-cookie.ts`). அனைத்தும் விருப்பத்தேர்வானவை — இயல்புநிலைகள் பொதுப் playground முனைப்புள்ளிகளைக் குறிக்கின்றன; சுயமாக ஹோஸ்ட் செய்யப்பட்ட/மாற்று PromptQL பயன்பாட்டிற்கு மட்டுமே இவற்றை மீறியமைக்கவும்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | அரட்டை/அமர்வு செயல்பாடுகளுக்குப் பயன்படுத்தப்படும் GraphQL முனைப்புள்ளி. |
| `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | கிரெடிட் இருப்பு/பயன்பாட்டை வினவுவதற்குப் பயன்படுத்தப்படும் GraphQL முனைப்புள்ளி. |
| `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | இயன்றவரை சிறப்பாக டோக்கனைப் புதுப்பிக்கப் பயன்படுத்தப்படும் முனைப்புள்ளி. |
| `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | நேரம் முடிவதற்கு முன் `thread_events`-ஐ வாக்கெடுப்பதற்கான அதிகபட்ச நேரம் (ms). |
---
## HyperAgent வலை வழங்குநர் (அதிகாரப்பூர்வமற்றது/சோதனைநிலை)
hyperagent.com-க்கான ரிவர்ஸ்-எஞ்சினியர் செய்யப்பட்ட அமர்வுப் பாலம் (`src/shared/constants/providers/web-cookie.ts`). விருப்பத்தேர்வு — இயல்புநிலை பொது பில்லிங்/பயன்பாட்டு முனைப்புள்ளியைச் சுட்டுகிறது; சுயமாக ஹோஸ்ட் செய்யப்பட்ட/மாற்று HyperAgent நிறுவலுக்கு மட்டும் மேலெழுதவும்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------- | --------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------- |
| `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | பில்லிங்/பயன்பாட்டுக் கிரெடிட் தொகுதிகளைப் பெறப் பயன்படுத்தப்படும் முனைப்புள்ளி. |
---
## Kilo Code பயன்பாட்டு ஒதுக்கீடுகள்
Kilo Code வழங்குநருக்கான தனிப்பட்ட USD இருப்பு மற்றும் Kilo Pass பயன்பாட்டுத் தேடல். விருப்பத்தேர்வு — இயல்புநிலை பொது Kilo API-ஐச் சுட்டுகிறது; ரிலே/சோதனை நிலைப்பொருளுக்கு மட்டும் மேலெழுதவும். அங்கீகாரம் இணைப்பின் ஏற்கெனவே உள்ள OAuth அணுகல் டோக்கனைப் பயன்படுத்துகிறது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| -------------- | --------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | தனிப்பட்ட Kilo Code இருப்பு மற்றும் Kilo Pass பயன்பாட்டைப் பெறப் பயன்படுத்தப்படும் அடிப்படை URL. |
---
## Adobe Firefly வலை வழங்குநர் (அதிகாரப்பூர்வமற்றது/சோதனைநிலை)
Adobe Firefly வலை வழங்குநருக்கான உலாவி-இயக்கப்படும் அமர்வுப் புதுப்பிப்பு
(`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`,
`open-sse/services/adobeFireflyClient.ts`). விருப்பத்தேர்வு — அனைத்து இயல்புநிலைகளும் ஒரு வழக்கமான
டெஸ்க்டாப் நிறுவலுக்கேற்ப அமைக்கப்பட்டுள்ளன.
> **#9255-இல் அகற்றப்பட்டது.** பழைய CDP-இணைக்கப்பட்ட Chrome இயக்கநேரம் (adobeFireflyChromeRuntime.ts)
> Playwright உலாவி-உள்நுழைவுச் சேவையால் மாற்றப்பட்டது, மேலும் அதன் கட்டுப்பாடுகள் இனி இல்லை.
> ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART மாறிகளுடன்
> ADOBE_FIREFLY_LOGIN_WAIT_MS மற்றும் ADOBE_FIREFLY_FORTER_WAIT_MS ஆகியவையும்
> குறியீட்டுத்தொகுப்பில் எங்கும் படிக்கப்படுவதில்லை — அவற்றை அமைப்பதால் எந்த விளைவும் ஏற்படாது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------ | -------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | உண்மையான ஹெட்லெஸ் Chrome-க்கு `1` என அமைக்கவும் (உருவாக்கத்திற்குச் செயலிழப்பது அறியப்பட்டது; பிழைத்திருத்தத்திற்கு மட்டும்). |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | முன்செயலாக்க உலாவி தயார்நிலைக்கான சேர்தல்/விலகல். `0` முன்செயலாக்கத் தயார்நிலையை முடக்கும் (தொகுப்பின் நடுவிலான 408 மீட்பு இன்னும் பொருந்தும்). |
| `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly அமர்வு வட்டில் நிலைநிறுத்தப்படுவதை முடக்க `0` என அமைக்கவும். |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/adobeFireflySession.ts` | அடுத்தடுத்த சமர்ப்பிப்புகளுக்கு இடையே அமல்படுத்தப்படும் குறைந்தபட்ச இடைவெளி (ms); உள்ளமைந்த இயல்புநிலையை மேலெழுதும். |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/adobeFireflySession.ts` | வெற்றிகரமான தொகுப்புக்குப் பிறகு சேர்க்கப்படும் கூடுதல் இடைவெளி (ms); உள்ளமைந்த இயல்புநிலையை மேலெழுதும். |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/adobeFireflyClient.ts` | உருவாக்கக் கோரிக்கையைச் சமர்ப்பிப்பதற்கு முந்தைய அடிப்படைத் தாமதம் (ms); உள்ளமைந்த இயல்புநிலையை மேலெழுதும். |
---
## 19. மாதிரி ஒத்திசைவு (Dev)
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ----------------------------------- | -------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MODELS_DEV_SYNC_ENABLED` | _(அமைக்கப்படவில்லை)_ | `src/lib/modelsDevSync.ts` | models.dev விலை நிர்ணய ஒத்திசைவுக்கான கட்டாய மேலெழுதுகை. அமைக்கப்படவில்லை = அமைப்புகள் > AI (`modelsDevSyncEnabled`) என்பதைப் பின்பற்றும். `0`/`false`/`off`/`no` **DB-ஐ விட முன்னுரிமை பெறும்** மற்றும் காலமுறை ஒத்திசைவு, `getModelsDevPricing()` SQL/JSON ஸ்கேன்கள் ஆகிய இரண்டையும் தவிர்க்கும் (அதே event loop-இல் dashboard சிக்கிக்கொள்ளும்போது மீட்டெடுப்பதற்காக). `1`/`true`/`on`/`yes` ஒத்திசைவை கட்டாயமாக இயக்கும். விலை நிர்ணயத்தைச் சேமித்தல்/அழித்தல் இன்னும் `backupDbFile("pre-write")`-ஐ அழைக்கும்; 60 நிமிடத் தடுப்புக் காலத்தின்போது அல்லது `DISABLE_SQLITE_AUTO_BACKUP` அமைக்கப்பட்டிருக்கும்போது இது எந்தச் செயலையும் செய்யாது. |
| `MODELS_DEV_SYNC_INTERVAL` | `86400` (24ம) | `src/lib/modelsDevSync.ts` | உருவாக்க நேர மாதிரி பட்டியல் ஒத்திசைவு இடைவெளி, வினாடிகளில். |
| `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24ம) | `src/lib/contextWindowResolver.ts` | தானாகத் திருத்திக்கொள்ளும் சூழல்-சாளர ஒத்திசைவிக்கான (5004) இடைவெளி (வினாடிகளில்): `/models` கண்டறிதலிலிருந்து வழங்குநர் அறிவித்த சாளரங்கள் பட்டியலிலிருந்து வேறுபடும்போது, அவற்றை `auto:discovery` மேலெழுதுகைகளாக நிலைநிறுத்தும். முடக்குவதற்கு `0` என அமைக்கவும். ஏற்கனவே ஒத்திசைக்கப்பட்ட தரவை மீண்டும் பயன்படுத்தும் (புதிய fetch இல்லை); `manual` மேலெழுதுகைகளை ஒருபோதும் மாற்றி எழுதாது. |
---
## 20. வழங்குநர் சார்ந்த அமைப்புகள்
| Variable | Default | Source File | Description |
| ---------------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterCatalog.ts` | OpenRouter மாதிரி பட்டியல் தற்காலிக சேமிப்பின் TTL. |
| `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | `/v1/models` பதில்களில் காட்சிக்கு ஏற்ற `name` புலங்களைச் சேர்க்கிறது. IDகளை மட்டுமே எதிர்பார்க்கும் கிளையன்டுகளுக்கு முடக்கவும். |
| `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | ஒருங்கிணைக்கப்பட்ட `GET /v1/models` பட்டியல் மறுகட்டமைப்புக்கான cold-path காத்திருப்பு வரம்பு (#12627). காலாவதியானால், கடைசியாகச் சரியாக இருந்த 200 பதில் இருப்பின் அது வழங்கப்படும். |
| `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 நாட்கள்) | `src/lib/db/models/activeSyncedCatalog.ts` | இந்த வயதுக்குப் பிறகு ஒரு இணைப்பின் ஒத்திசைக்கப்பட்ட மாதிரி பட்டியல் ரூட்டிங்கிற்கு அதிகாரப்பூர்வமானதாக இருப்பதை நிறுத்தி, ரிஜிஸ்ட்ரியை நோக்கி fail-open ஆகிறது (#12849). ஒருபோதும் timestamp செய்யப்படாத வரிசைகள் stale ஆகக் கருதப்படும். |
| `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | அதே query stringக்கு மெதுவான `GET /api/usage/analytics` பதில் எவ்வளவு காலம் மீண்டும் பயன்படுத்தப்படுகிறது என்பது (#15629). `0` தற்காலிக சேமிப்பை முடக்கும். |
| `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | உருவாக்க குறைந்தது இந்த அளவு நேரம் எடுத்த analytics பதில்கள் மட்டுமே தற்காலிக சேமிக்கப்படும், எனவே சிறிய நிறுவல்கள் எப்போதும் புதிய தரவையே காணும். |
| `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | அமைக்கப்படவில்லை (ஆஃப்) | `src/app/api/cache/route.ts` via `src/lib/usage/analyticsResponseCache.ts` | தேர்வுசெய்யப்பட வேண்டிய அமைப்பு (#16361). எதிர்மறையல்லாத முழு எண் N ஆக அமைக்கப்பட்டிருக்கும்போது, `GET /api/cache` இன் பயன்பாட்டு-வரலாற்றுப் பகுதி (prompt-cache மொத்தங்கள் + போக்கு), கட்டுப்படுத்தப்பட்ட `trendHours` சாளரத்திற்கு ஏற்ப, உருவாக்க குறைந்தது N ms எடுத்திருந்தால், பகிரப்பட்ட analytics பதில் தற்காலிக சேமிப்பிலிருந்து `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` காலத்திற்கு வழங்கப்படும் (வரலாறு அந்த TTL வரை தாமதமாகலாம்; `DELETE /api/cache` அதை செல்லாததாக்கும்). அமைக்கப்படாதது அல்லது தவறான மதிப்பு = ஒவ்வொரு கோரிக்கையிலும் வரலாறு நேரடியாகப் படிக்கப்படும். |
| `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | NanoBanana படம் உருவாக்க வேலைகளுக்கான அதிகபட்ச காத்திருப்பு. |
| `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | NanoBanana வேலைகளின் polling இடைவெளி. |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Adobe Firefly upscale submit-retry exponential backoffக்கான அடிப்படை தாமதம். |
| `AWS_REGION` | _(அமைக்கப்படவில்லை)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | AWS Bedrock இறுதிப்புள்ளிகளை (endpoints) உருவாக்கப் பயன்படும் பிராந்தியம் (Kiro, audio). |
| `AWS_DEFAULT_REGION` | _(அமைக்கப்படவில்லை)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | `AWS_REGION` அமைக்கப்படாதபோது பயன்படும் மாற்று மதிப்பு. |
| `CLOUDFLARE_ACCOUNT_ID` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/cloudflare-ai.ts` | Cloudflare Workers AIக்கான கணக்கு ID. |
| `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/cloudflare-playground.ts` | Cloudflare AI Playground executorக்கான முழு டெஸ்க்டாப் Chrome binary பாதை; headless fingerprint சோதனை Playwright இன் தொகுக்கப்பட்ட Chromiumயைத் தடுக்கும்போது பயன்படுத்தப்படுகிறது. |
| `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _(அமைக்கப்படவில்லை = நீள வரம்பு இல்லை)_ | `open-sse/executors/codebuddy/shared.ts` | CodeBuddyக்கு (CN மற்றும் International) அனுப்பப்படும் அழைப்பாளர் system promptகளுக்கான விருப்ப நீள வரம்பு. இயல்பாக, coding-agent அடையாளக் குறிப்பைக் கொண்ட prompt மட்டுமே நடுநிலையான ஒன்றால் மாற்றப்படும் (Tencent இன் உள்ளடக்க வடிகட்டி அவற்றை நிராகரிக்கிறது); நீளமான promptகள் அப்படியே வைக்கப்படும். 0 ஐ விடப் பெரிய முழு எண், அந்த எண்ணிக்கையிலான எழுத்துகளை விட நீளமான எந்த system promptஐயும் மாற்றும்; அமைக்கப்படாதது, `0` அல்லது முழு எண் அல்லாத மதிப்பு வரம்பை முடக்கும். ஒவ்வொரு மாற்றமும் எந்த விதி செயல்பட்டது (அடையாளக் குறிப்பு அல்லது நீளம்) என்பதைப் பதிவு செய்யும். |
| `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | proxy-pool Workers relay deployer பயன்படுத்தும் Cloudflare REST API தளத்தை மேலெழுதுகிறது (#4640 / 9router#1360). |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | ப்ராக்ஸி-பூல் "Deploy Relay" மாடலில் பரிந்துரைக்கப்படும் இயல்புநிலை worker திட்டப் பெயர். |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Proxy Pool தாவலில் இருந்து Cloudflare Workers ரிலே விருப்பத்தை மறைக்க `false` என அமைக்கவும். |
| `CLOUDFLARED_BIN` | தானாகக் கண்டறிதல் | `src/lib/cloudflaredTunnel.ts` | `cloudflared` பைனரிக்கான தனிப்பயன் பாதை. |
| `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | டன்னல் போக்குவரத்து நெறிமுறை: `http2` (இயல்புநிலை), `quic`, அல்லது `auto`. |
| `CLOUDFLARED_CONFIG` | _(அமைக்கப்படவில்லை)_ | `src/lib/cloudflaredTunnel.ts` | உள்ளூரில் நிர்வகிக்கப்படும் cloudflared `config.yml` க்கான பாதை (`tunnel:`, `credentials-file:`, `ingress:` உடன்). அமைக்கப்பட்டிருந்தால், OmniRoute தற்காலிக quick tunnel க்குப் பதிலாக `tunnel --config run` (பெயரிடப்பட்ட டன்னல்) ஐ இயக்குகிறது. |
| `CLOUDFLARED_HOSTNAME` | _(கட்டமைப்பு ingress இலிருந்து)_ | `src/lib/cloudflaredTunnel.ts` | பெயரிடப்பட்ட டன்னலின் பொது ஹோஸ்ட்பெயருக்கான மேலெழுதல் (எ.கா. `ai.example.com`), `publicUrl`/`apiUrl` ஆகத் தெரிவிக்கப்படுகிறது. அமைக்கப்படாத போது, கட்டமைப்பின் முதல் `ingress` ஹோஸ்ட்பெயரிலிருந்து படிக்கப்படுகிறது. |
| `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | ப்ராக்ஸி-பூல் ரிலே டிப்ளாயர் பயன்படுத்தும் Deno Deploy REST API அடித்தளத்தை மேலெழுதுகிறது (#4643 / 9router#1437). |
| `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | ப்ராக்ஸி-பூல் "Deploy Relay" மாடலில் பரிந்துரைக்கப்படும் இயல்புநிலை Deno Deploy ஆப் பெயர். |
| `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Proxy Pool தாவலில் இருந்து Deno Deploy ரிலே விருப்பத்தை மறைக்க `false` என அமைக்கவும். |
| `SEARCH_CACHE_TTL_MS` | `300000` (5 நிமிடம்) | `open-sse/services/searchCache.ts` | தேடல் API (Perplexity, Brave போன்றவை) பதில் கேச்சிங்கிற்கான TTL. |
| `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Claude Code-மட்டும் ரிலேக்களுக்கான சோதனைமுறை CC-இணக்க வழங்குநர் UI ஐ வெளிப்படுத்துகிறது. |
| `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | உட்பொதிந்த 9router நிகழ்வு கவனிக்கும் ஹோஸ்டை மேலெழுதுகிறது. |
| `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | உட்பொதிந்த 9router நிகழ்வு கவனிக்கும் போர்ட்டை மேலெழுதுகிறது. |
| `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | உட்பொதிந்த-சேவை WebSocket ப்ராக்ஸிக்கான பைண்ட் ஹோஸ்ட் (இயல்புநிலையாக loopback மட்டும்). |
| `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | உட்பொதிந்த-சேவை WebSocket ப்ராக்ஸி சர்வருக்கான போர்ட். |
| `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI பிரிட்ஜ் ஹோஸ்ட் (பழைய ஒருங்கிணைப்பு). |
| `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI பிரிட்ஜ் போர்ட். |
| `CLIPROXYAPI_API_KEY` | _(வெற்று)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | `cliproxyapi_api_key` அமைப்பு இல்லாத போது டேட்டா-ப்ளேன் விசை மாற்று. |
| `CLIPROXYAPI_MANAGEMENT_KEY` | _(வெற்று)_ | `src/lib/services/cliproxyAccountHealth.ts` | வெளிப்புறமாக நிர்வகிக்கப்படும் CLIProxyAPI நிகழ்விலிருந்து கணக்கு-ஆரோக்கிய வாசிப்புகளுக்கான மேலாண்மை விசை. |
| `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | CLIProxyAPI கட்டமைப்பு அடைவு. |
| `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose `cliproxyapi` சைட்காரை வெளியிடும் ஹோஸ்ட் இன்டர்ஃபேஸ் (#12578). அதன் டேட்டா வால்யூம் வழங்குநர் OAuth/API சான்றுகளைக் கொண்டுள்ளது மற்றும் பின் செய்யப்பட்ட இமேஜில் env-அடிப்படையிலான டேட்டா-பிளேன் `api-keys` மேலெழுதல் இல்லை (மவுண்ட் செய்யப்பட்ட `config.yaml` மட்டுமே), எனவே `0.0.0.0` என்பது சான்றுகள் கொண்ட சேவையை முழு LAN-க்கும் அம்பலப்படுத்தும். |
| `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | உட்பொதிக்கப்பட்ட Mux (coder/mux) ஏஜெண்ட்-ஒருங்கிணைப்பு டீமான் கேட்கும் போர்ட்டை மேலெழுதுகிறது (எப்போதும் 127.0.0.1). |
| `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | உட்பொதிக்கப்பட்ட open-wa (WhatsApp Web ஆட்டோமேஷன்) டீமான் கேட்கும் போர்ட்டை மேலெழுதுகிறது (எப்போதும் 127.0.0.1). |
| `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario உட்பொதிக்கப்பட்ட சேவையின் bind/connect ஹோஸ்ட் (இயல்பாக லூப்பேக் மட்டும்). |
| `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario உட்பொதிக்கப்பட்ட சேவையின் போர்ட். |
| `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario உட்பொதிக்கப்பட்ட சேவையின் bind/connect ஹோஸ்ட் (இயல்பாக லூப்பேக் மட்டும்). |
| `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario உட்பொதிக்கப்பட்ட சேவையின் போர்ட். |
| `LOCAL_HOSTNAMES` | _(காலி)_ | `open-sse/config/providerRegistry.ts` | "லோக்கல்" ஆகக் கருதப்படும் கமாவால் பிரிக்கப்பட்ட கூடுதல் ஹோஸ்ட் பெயர்கள் (Docker சேவை பெயர்கள் போன்றவை). |
`ENABLE_CC_COMPATIBLE_PROVIDER` என்பது Claude Code கிளையன்டுகளைப் பிரத்தியேகமாக ஏற்கும் மூன்றாம் தரப்பு ரிலேக்களுக்கு மட்டுமே. OmniRoute கோரிக்கைகளை மறுஎழுதுகிறது, இதனால் அந்த ரிலேக்கள் அவற்றை ஏற்கும். நீங்கள் Claude Code CLI-ஐ மட்டுமே பயன்படுத்த விரும்பினால், அல்லது இந்த ரிலேக்கள் என்னவென்று உறுதியாகத் தெரியவில்லை என்றால், இதனை முடக்கியபடியே வைத்து, அதற்குப் பதிலாக வழக்கமான Anthropic-பொருந்தக்கூடிய வழங்குநரைச் சேர்க்கவும்.
---
## 21. ப்ராக்ஸி நலம்
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | விரைவு-தோல்வி (fast-fail) நலச் சோதனை காலக்கெடு. |
| `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | லேட்டன்சி-மேம்படுத்தப்பட்ட குள (pool) உத்தியில் வேட்பாளர் ப்ராக்ஸிகளின் சராசரி லேட்டன்சியைக் கணக்கிடுவதற்கான நேரச் சாளரம் (மணிநேரங்களில்). |
| `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | நலச் சோதனை முடிவுகளின் தற்காலிக சேமிப்பக (cache) TTL. |
| `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | தோல்வியுற்ற ப்ராக்ஸி நல ஆய்வுகளுக்கான தற்காலிக சேமிப்பக TTL. அதிக ஒருங்கிணைப்புச் சூழலில் ஏற்படும் தற்காலிக ப்ராக்ஸி காலக்கெடுகள் விரைவாக மீண்டும் முயற்சிக்கப்படவும், உண்மையிலேயே செயலிழந்த ப்ராக்ஸிகளுக்கான fast-fail முடக்கப்படாமல் இருக்கவும், இதை `PROXY_HEALTH_CACHE_TTL_MS`-ஐ விடக் குறைவாக வைத்திருங்கள். |
| `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | பதிவுசெய்யப்பட்ட ப்ராக்ஸிகளை அவ்வப்போது ஆய்வு செய்யும் பின்னணி ப்ராக்ஸி நல திட்டமிடியை (scheduler) முடக்க `false` என அமைக்கவும். |
| `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | பின்னணி நல-திட்டமிடி ஸ்வீப் இடைவெளி, மி.வி.யில் (குறைந்தபட்சம் `60000`). |
| `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | edge-relay ப்ராக்சிகளுக்கான (`deno`/`vercel`/`cloudflare`) ms-ல் ஆய்வு இடைவெளி; இவற்றின் ஆய்வுகள் கட்டணம் வசூலிக்கப்படும் சர்வர்லெஸ் ஐசோலேட்டை எழுப்பும் (குறைந்தபட்சம் `60000`). |
| `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | ms-ல் பின்னணி மீட்பு-சுற்று இடைவெளி: மீட்கப்பட்ட ப்ராக்சி மறுதொடக்கம் இல்லாமல் சுழற்சிக்குத் திரும்ப, முன்னர் ஆரோக்கியமற்றதாக இருந்த ப்ராக்சிகள் எவ்வளவு அடிக்கடி மீண்டும் ஆய்வு செய்யப்படுகின்றன என்பதைக் குறிக்கிறது. `60000`-க்குக் கீழான மதிப்புகள் இயல்புநிலைக்குத் திரும்பும். |
| `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | ஷெட்யூலர் மற்றும் `/api/settings/proxies/auto-test` முனைப்பால் பயன்படுத்தப்படும் அணுகல்தன்மை ஆய்வு இலக்கு. பொது இயல்புநிலையைத் தவிர்க்க, இதை ஒரு உள்/சுய-ஹோஸ்ட் செய்யப்பட்ட URL-ஐ நோக்கி அமைக்கவும். |
| `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | ஒரு தொகுப்பிற்கு ஒரே நேரத்தில் தொடங்கப்படும் ஆய்வுகளின் எண்ணிக்கை; ஷெட்யூலர் மற்றும் `/api/settings/proxies/auto-test` முனைப்பு இரண்டாலும் பகிரப்படுகிறது. குறைந்தபட்சம் 1 எனவும் அதிகபட்சம் 50 எனவும் வரம்பிடப்பட்டுள்ளது. |
| `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | ஒரு தொகுப்பிற்குள் அடுத்தடுத்த இரண்டு ஆய்வு புறப்பாடுகளுக்கு இடையிலான ms-ல் தாமதம். இது இல்லையெனில் முழுத் தொகுப்பும் ஒரே நேரத்தில் புறப்படும், மேலும் பகிரப்பட்ட egress IP ஒன்று விகித-வரம்புடைய இலக்கைத் தூண்டிவிடலாம். இடைவெளியை முடக்க `0` என அமைக்கவும்; அதிகபட்சம் 5000. |
| `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | ப்ராக்சியின் ஒதுக்கப்பட்ட வழங்குநரின் உண்மையான ஹோஸ்டை ஆய்வு செய்வதை (`GET /models`, API விசை இல்லாமல்) நிறுத்த "false" என அமைக்கவும்; அதற்குப் பதிலாக எப்போதும் `PROXY_HEALTH_TEST_URL` பயன்படுத்தப்படும். |
| `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | `false` (இயல்புநிலை) எனில், தானியங்கு அணுகல்தன்மை ஆய்வுகள் (ஷெட்யூலர் + `/api/settings/proxies/auto-test` "Test All" பட்டன்) **படிக்க-மட்டும்** ஆக இருக்கும், ஒருபோதும் ப்ராக்சியின் நிலையை எழுதாது — செயலில்/செயலற்ற நிலையை ஆபரேட்டர் மட்டுமே அமைக்கிறார், எனவே நிலையற்ற ஒரு ஆய்வு ஒதுக்கப்பட்ட ப்ராக்சியைச் சிக்கவைக்க முடியாது (#6246). பழைய test-and-set நடத்தையை மீட்டெடுக்க `true` என அமைக்கவும். |
| `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | ஆப்ட்-இன் அம்சக் கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) பார்க்கவும்; டாஷ்போர்டு DB மேலெழுதலே வெல்லும்). `true` (அல்லது `1`, `yes`) எனில், வெற்று 200 அல்லது வெற்று-உள்ளடக்க 502-ஐ வெளிப்படுத்துவதற்குப் பதிலாக, வெற்று மொழிபெயர்க்கப்பட்ட ஸ்ட்ரீமிங் சுற்றுகளை வழக்கமான சான்று பாதை வழியாக மீண்டும் முயற்சிக்கும் (அதிகபட்சம் `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` முயற்சிகள் வரை). |
| `EMPTY_STREAM_SIBLING_RECOVERY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | ஆப்ட்-இன் அம்சக் கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) பார்க்கவும்; டாஷ்போர்டு DB மேலெழுதலே வெல்லும்). `true` (அல்லது `1`, `yes`) எனில், Claude/Codex வெற்று-ஸ்ட்ரீம் உள்ளடக்க ஆய்வை இயக்கி, `empty_content` சுற்றுக்குப் பிறகு கூல்டவுன் அல்லது மாடல் லாக்அவுட் இன்றி, ஏற்கனவே உள்ள வரம்புக்குட்பட்ட மீள்முயற்சியை மற்றொரு தகுதியான இணைப்பில் செலவிடும். |
| `STREAM_LATE_OUTPUT_PROBE_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | ஆப்ட்-இன் அம்சக் கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) பார்க்கவும்; டாஷ்போர்டு DB மேலெழுதலே வெல்லும்). `true` (அல்லது `1`, `yes`) எனில், முதல் 64 துண்டுகளுக்குப் பிறகு அனுப்பப்படும் ஒவ்வொரு 16 துண்டுகளிலும் ஒன்றை மாதிரியெடுத்துக்கொண்டே இருக்கும், இதனால் தாமதமாகத் தோன்றும் புலனாகும் வெளியீடும் ஸ்ட்ரீம் வெளியீட்டை வெளியிட்டதாகக் குறிக்கும் (வெளியீட்டிற்குப் பிந்தைய ஒற்றை 5xx ஒன்று மாடல்-மட்டும் லாக்அவுட் ஆகாமல் கோரிக்கை-அளவிலானதாகவே இருக்கும்). |
| `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | விருப்ப அம்ச கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) பார்க்கவும்; டேஷ்போர்டு DB மேலெழுதல் வெல்லும்). `true` (அல்லது `1`, `yes`) என அமைத்தால், டேஷ்போர்டில் ஒரு ப்ராக்ஸி பூலின் கீழ் படிக்க-மட்டும் பூல் எக்ரஸ் கண்காணிப்பைக் காட்டுகிறது (தனித்த எக்ரஸ் IPகள், இணைப்புகள் மற்றும் கடந்த 24 மணி நேரத்தில் ஒரு IPக்குப் பின்னால் அதிகமாகக் காணப்பட்டவை, ப்ராக்ஸி பதிவிலிருந்து). ரூட்டிங்கிற்கு ஒருபோதும் பயன்படுத்தப்படாது. |
| `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | விருப்ப அம்ச கொடி ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) பார்க்கவும்; டேஷ்போர்டு DB மேலெழுதல் வெல்லும்). `true` (அல்லது `1`, `yes`) என அமைத்தால், ஒவ்வொரு பூல் உறுப்பினருக்கும் ஆபரேட்டர் தள்ளிய தேதியிட்ட கண்காணிக்கப்பட்ட முகவரிகளை ஏற்று, காட்சி மற்றும் பூல் வரிசைக்காக அவற்றை ஜர்னல் வாசிப்புடன் இணைக்கிறது. |
| `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | ஆபரேட்டர் தள்ளிய எக்ரஸ் வரிசைகளுக்கான மணி நேர கண்காணிப்பு சாளரம் (ஒவ்வொரு வாசிப்பிலும் படிக்கப்படுகிறது; மறுதொடக்கம் தேவையில்லை). 1..168 என வரம்பிடப்பட்டுள்ளது; வரம்புக்கு வெளியே, எண் அல்லாத, அல்லது வெற்று மதிப்பு 24 ஆகத் திரும்புகிறது — ஒரே செயல்முறை அளவிலான எச்சரிக்கையுடன், ஒருபோதும் throw அல்ல. |
| `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | தொடர்ச்சியான அடுத்தடுத்த தோல்விகளுக்குப் பிறகு ஷெட்யூலர் ப்ராக்ஸிகளை தானாக அகற்ற அனுமதிக்க `true` என அமைக்கவும். |
| `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | ஷெட்யூலர் ஒரு ப்ராக்ஸியை தானாக அகற்றுவதற்கு முன் தேவையான அடுத்தடுத்த தோல்விகளின் எண்ணிக்கை (`PROXY_AUTO_REMOVE=true` ஆக இருக்கும்போது). |
| `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | தொடர்ச்சியான அடுத்தடுத்த தோல்விகளுக்குப் பிறகு, ஷெட்யூலர் ஒரு ப்ராக்ஸியை அகற்றுவதற்குப் பதிலாக மென்மையாக முடக்க (நிலை `dead`, ஒருபோதும் நீக்கப்படாது) அனுமதிக்க `true` என அமைக்கவும். `PROXY_AUTO_REMOVE`-க்கு அழிவற்ற மாற்று: ப்ராக்ஸி உடனடியாக பூல்/ரோட்டேஷன் தீர்மானத்திலிருந்து விலகுகிறது (ஸ்கோப்-பூல் தீர்மானம் பயன்படுத்தும் alive-நிலை வடிப்பான் ஏற்கனவே அதை விலக்குகிறது) மற்றும் மீண்டும் ஆய்வுகளில் தேர்ச்சி பெறத் தொடங்கியதும் தானாகவே மீண்டும் செயல்படுத்தப்படுகிறது. `PROXY_AUTO_REMOVE_AFTER` விடுப்புள்ளியைப் பகிர்ந்து கொள்கிறது. இரண்டு கொடிகளும் `true` எனில், `PROXY_AUTO_REMOVE` வெல்லும். |
| `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | விருப்ப செயலற்ற தவிர்ப்பு: `true` ஆக இருக்கும்போது, சமீபத்திய உற்பத்தி ட்ராஃபிக் ஏற்கனவே நிரூபித்த ஒரு எண்ட்பாயிண்டுக்கு (சாளரத்தில் குறைந்தது ஒரு வெற்றி மற்றும் ப்ராக்ஸிக்கு ஏற்றப்பட்ட தோல்வி எதுவும் இல்லை, சரியாக ஒரு வழங்குநர் கண்காணிக்கப்பட்டது) ஷெட்யூலர் நேரடி ஆய்வைத் தவிர்க்கிறது. இயல்பாக அணைந்திருக்கும்: ஒவ்வொரு ப்ராக்ஸியும் ஆய்வு செய்யப்படுகிறது. |
| `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | செயலற்ற தவிர்ப்பு பார்க்கும் உற்பத்தி ட்ராஃபிக்கின் ms சாளரம் (`60000..599999` என வரம்பிடப்பட்டுள்ளது). சமீபத்திய தோல்வி நீர்த்துப் போகாமல் ஆதிக்கம் செலுத்தும் வகையில் 10-நிமிட ஸ்வீப் இடைவெளியை விடக் குறைவானது. |
| `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | ப்ராக்ஸி அணுகல்தன்மை முன்-சோதனைகள் தோல்வியடையும்போது OAuth மற்றும் வழங்குநர் சரிபார்ப்பு ஓட்டங்கள் ஒரு பிண் செய்யப்பட்ட ப்ராக்ஸியைத் தவிர்த்து நேரடியாக இணைக்க அனுமதிக்கவும். செயலில் உள்ள முன்னுரிமை: Feature Flags DB மேலெழுதல் > env மாறி > இயல்புநிலை. |
| `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30 வினாடி) | `src/lib/resilience/settings.ts` | இயல்புநிலை **வரிசை-காத்திருப்பு** பட்ஜெட்: ஒரு கோரிக்கை வழங்குநர் இடத்திற்காக (provider slot) எவ்வளவு நேரம் காத்திருக்கலாம் மற்றும் வரிசையில் இருக்கலாம்; அதற்குள் நிராகரிக்கப்பட்டால் அது அப்ஸ்ட்ரீமை அடையாது. வேலை செயல்படத் தொடங்கியதும் டைமர் நீக்கப்படுகிறது — செயல்பாடு தனித்தனியாக `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` மூலம் வரையறுக்கப்படுகிறது. Env இயல்புநிலையை மட்டுமே அமைக்கிறது: நிலைநிறுத்தப்பட்ட `resilienceSettings.requestQueue.maxWaitMs`, பின்னர் இணைப்பு-வாரியான `rateLimitOverrides.maxWaitMs` ஆகியவை ஒவ்வொன்றும் அதனை மேலெழுதும். |
| `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 நிமிடம்) | `open-sse/services/rateLimitManager.ts` | அனுமதிக்கப்பட்ட கோரிக்கை ஒன்று, அதன் rate-limit reservation காலாவதியாகும் முன் செயல்பாட்டில் எவ்வளவு நேரம் இருக்கலாம் என்பதற்கான உச்சவரம்பு — non-incremental gateway-களில் மெதுவான fetch-start timeout ஆகாமல் இருப்பதற்காக queue-wait பட்ஜெட்டிலிருந்து பிரிக்கப்பட்டது (#12027). |
| `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (முடக்கப்பட்டது) | `open-sse/services/rateLimitManager.ts` | வரிசை அனுமதி வரம்பு: இத்தனை கோரிக்கைகள் ஏற்கனவே வரிசையில் இருந்தால், 429 `queue_full` உடன் நிராகரிக்கவும். `0` = வரம்பற்றது (இயல்புநிலை). |
| `RATE_LIMIT_AUTO_ENABLE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/rateLimitManager.ts` | நிலைநிறுத்தப்பட்ட Dashboard அமைப்பைப் (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`) பொருட்படுத்தாமல், தானியங்கு-இயக்க rate limit பாதுகாப்பு வலையை ஆன்/ஆஃப் செய்ய கட்டாயப்படுத்துகிறது. ஆன் செய்ய `true`/`1`/`on`, ஆஃப் செய்ய `false`/`0`/`off` என ஏற்கிறது. செயலில் இருக்கும்போது (இயல்புநிலை), செயலில் உள்ள API-key இணைப்புகள் தானாகவே rate-limit பாதுகாப்பு பெறும். இணைப்பு-வாரியாக `rateLimitProtection: false` அமைப்பது வெளிப்படை பாதுகாப்பை முடக்கும், ஆனால் இந்தப் பாதுகாப்பு வலையிலிருந்து விலக்காது; rate-limit வரிசைகள் இல்லாமல் API-key இணைப்புகளை இயக்குவதற்கான உலகளாவிய வழிமுறை இந்த env மாறியை `false` என அமைப்பதே ஆகும். |
| `PROVIDER_COOLDOWN_ENABLED` | _(அமைக்கப்படவில்லை → ஆஃப்)_ | `open-sse/services/providerCooldownTracker.ts` | தேர்வு-செய்யக்கூடிய (opt-in) உலகளாவிய, கோரிக்கைகள்-கடந்த வழங்குநர்/இணைப்பு cooldown கண்காணிப்பு. இயல்பாக ஆஃப் (Connection Cooldown / Provider Circuit Breaker உடன் ஒத்துப்போகிறது). இயக்குவதற்கு `true`/`1`/`on` ஏற்கும். |
| `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | தோல்வியடைந்த வழங்குநர்/இணைப்பு மீண்டும் முயற்சிக்கப்படுவதற்கு முன் குறைந்தபட்ச cooldown (ms). தொடர்ச்சியான தோல்விகளுடன் அடுக்கு விகிதமாக அதிகரிக்கிறது. `PROVIDER_COOLDOWN_ENABLED` இருந்தால் மட்டுமே பயன்படும். |
| `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 நிமிடம்) | `open-sse/services/providerCooldownTracker.ts` | தோல்வியடைந்த வழங்குநர்/இணைப்பு எப்படியும் மீண்டும் முயற்சிக்கப்படுவதற்கு முன் அதிகபட்ச cooldown (ms) வரம்பு. `PROVIDER_COOLDOWN_ENABLED` இருந்தால் மட்டுமே பயன்படும். |
| `STREAM_RECOVERY_ENABLED` | _(அமைக்கப்படவில்லை → ஆஃப்)_ | `src/lib/resilience/settings.ts` (விதைப்பு) → `open-sse/services/streamRecovery.ts` (தர்க்கம்) | **என்ன:** துண்டிக்கப்பட்ட அப்ஸ்ட்ரீம் ஸ்ட்ரீம்களின் வெளிப்படையான மீட்பு (free-claude-code போர்ட்). தொடக்க SSE சாளரத்தை `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) வரை பிடித்து வைக்கிறது, இதனால் ஒரு _pre-commit_ துண்டிப்பு — எந்தப் பைட்டும் கிளையன்டை அடைவதற்கு முன் நடக்கும் துண்டிப்பு — மீண்டும் திறக்கப்பட்டு, புலனாகாமல் மீண்டும் முயற்சிக்கப்படுகிறது. **எப்போது இயக்க வேண்டும்:** ஸ்ட்ரீம் தொடக்கத்தில் அடிக்கடி 0-பைட் துண்டிக்கும் நிலையற்ற அப்ஸ்ட்ரீம்களுக்கு; ஒவ்வொரு ஸ்ட்ரீமிலும் 750 ms வரை கூடுதல் time-to-first-token சேர்ப்பதை ஏற்க முடியாவிட்டால் ஆஃப்லேயே விடவும். `true`/`1`/`on` ஏற்கும். நிலைநிறுத்தப்பட்ட Resilience அமைப்பை விதைக்கிறது; அமைக்கப்பட்டதும் Dashboard அமைப்பே முன்னுரிமை பெறும். |
| `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(அமைக்கப்படவில்லை → அணைப்பு)_ | `src/lib/resilience/settings.ts` (seed) → `open-sse/services/streamRecovery.ts` (logic) | **என்ன:** ஸ்ட்ரீமின் நடுவில் தொடர்தல் (கட்டம் 4.4) — ஒரு _கமிட்டுக்குப் பிந்தைய_ துண்டிப்புக்குப் பிறகு (பைட்டுகள் ஏற்கனவே கிளையன்டை அடைந்துவிட்டன), பகுதி உரையை அசிஸ்டன்ட் முன்நிரப்பாகக் (prefill) கொண்டு மீண்டும் கோரிக்கை செய்து, விடுபட்ட பின்னொட்டைத் (suffix) தைத்து இணைக்கிறது. வெற்று-உரை OpenAI-இணக்கமான ஸ்ட்ரீம்களில் மட்டுமே; tool call நடைபெற்றுக்கொண்டிருக்கும்போது ஒருபோதும் தூண்டப்படாது. **எப்போது இயக்கலாம்:** பதிலின் நடுவில் துண்டிக்கப்படும் நீண்ட ஜெனரேஷன்களுக்கு, மீட்கப்பட்ட முடிவுப் பகுதி டோக்கன்-வாரியாக அல்லாமல் ஒரே வெடிப்பாக வருவதை நீங்கள் ஏற்கும்போது. `STREAM_RECOVERY_ENABLED`-இலிருந்து சுயாதீனமானது (வேறுபட்ட அபாய விவரம்). `true`/`1`/`on` மதிப்புகளை ஏற்கிறது. |
| `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(அமைக்கப்படவில்லை → அணைப்பு)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | ஆப்ட்-இன் செயலில் உள்ள ஸ்ட்ரீம் பயனுள்ள-வெளியீட்டு கண்காணிப்பான் (watchdog). துண்டுகளைத் தொடர்ந்து அனுப்பிக்கொண்டே இருந்தாலும், உள்ளமைக்கப்பட்ட அசிஸ்டன்ட்-வெளியீட்டு வீதத்திற்குக் கீழேயே இருக்கும் ஸ்ட்ரீம்களைக் கண்டறிகிறது; heartbeats, usage நிகழ்வுகள், வெற்று டெல்டாக்கள், மற்றும் tool/ரீசனிங் கட்டங்கள் முன்னேற்றமாக மறைத்துக் காட்டப்படாது. idle மற்றும் hard-deadline காலக்கெடுக்களிலிருந்து தனித்தது. |
| `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | துளைப்பாய்ச்சல் (throughput) மதிப்பீட்டுக்கு முன்னால் உள்ள இரக்கக் காலம், 0–600000 ms என வரம்பிடப்பட்டது. |
| `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | உருட்டல் பயனுள்ள-வெளியீட்டு சாளரம், 1000–600000 ms என வரம்பிடப்பட்டது; நிறுத்துவதற்கு (abort) முன் ஒரு முழுமையான சாளரம் தேவை. |
| `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | குறைந்தபட்ச UTF-8 அசிஸ்டன்ட்-வெளியீட்டு பைட் வீதம் (பழமைவாத டோக்கன் மாற்றீட்டு அளவுகோல்), 1–1000000 என வரம்பிடப்பட்டது. |
| `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | அளவிடக்கூடியதாகக் கருதப்படும் குறைந்தபட்ச பூஜ்ஜியம் அல்லாத பயனுள்ள-வெளியீட்டு மாதிரி, 1–1000000 பைட்டுகள் என வரம்பிடப்பட்டது. |
| `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | தொடக்கத்தில் வழங்குநர் டோக்கன் சுகப்பரிசோதனைகளுக்கு இடையே உள்ள படிநிலை இடைவெளி (ms). |
| `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | வெடிப்பைத் (bursting) தடுக்க, வழங்குநர் டோக்கன் சுகப்பரிசோதனைகளுக்கு இடையே `HEALTHCHECK_STAGGER_MS`-இன் மேல் சேர்க்கப்படும் குறைந்தபட்ச சீரற்ற ஜிட்டர் (ms) (Issue #1220). |
| `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | வெடிப்பைத் (bursting) தடுக்க, வழங்குநர் டோக்கன் சுகப்பரிசோதனைகளுக்கு இடையே `HEALTHCHECK_STAGGER_MS`-இன் மேல் சேர்க்கப்படும் அதிகபட்ச சீரற்ற ஜிட்டர் (ms) (Issue #1220). |
| `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | தொடக்க டோக்கன்-சுகப்பரிசோதனை ஸ்வீப்பிற்கான ஒரேநேர-சோதனை தொகுதி அளவு; பெரிய மதிப்புகள் அதிக இணைப்புகளை இணையாகச் சோதிக்கும், சிறிய மதிப்புகள் வெடிப்பு சுமையைக் குறைக்கும் (Issue #7875, #7719-இன் பின்னடைவு). |
| `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | கிளையன்டிற்கு பிழையைத் திருப்பித் தருவதற்கு முன், மாடல்-அளவிலான கூல்டவுன் பதில்களில் மேற்கொள்ளப்படும் தானியங்கு மீள்முயற்சிகளின் எண்ணிக்கை. |
| `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | கூல்டவுன் மீள்முயற்சிகளுக்கு இடையிலான அதிகபட்ச பேக்ஆஃப் இடைவெளி (வினாடிகள்). அப்ஸ்ட்ரீம் `Retry-After` எதுவாக இருந்தாலும் இந்த மதிப்பால் வரம்பிடப்படும். |
| `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | Headroom டோக்கன்-சேமிப்பு ப்ராக்ஸி URL. டாஷ்போர்டு வாழ்க்கைச்சுழற்சி (`api/headroom/*`) இயல்பாக லூப்பேக்கில் உள்ளூர் `headroom-ai` CLI-ஐத் தொடங்குகிறது; வெளிப்புற Docker sidecar ப்ராக்ஸியைச் சுட்டிக்காட்ட மட்டுமே இதை மேலெழுதவும். |
### ஸ்ட்ரீம்-மீட்பு டியூனிங் மாறிலிகள்
மீட்பு holdback நடத்தை `open-sse/config/constants.ts`-இல் (`STREAM_RECOVERY`)
ஹார்ட்கோட் செய்யப்பட்ட மாறிலிகளால் டியூன் செய்யப்படுகிறது; குறிப்புக்காக இங்கே
காட்டப்பட்டுள்ளது — அவற்றை மாற்ற env மாறி அல்ல, குறியீடு திருத்தம் தேவை:
- `STREAM_RECOVERY.HOLDBACK_MS = 750` — எந்தப் பைட்டும் கிளையன்டுக்கு ஒப்படைக்கப்படுவதற்கு
முன் ஆரம்ப துண்டிப்பை மீள்முயற்சிக்க முடியுமாறு, திறக்கும் SSE சாளரம் எவ்வளவு நேரம்
தாமதப்படுத்தப்படுகிறது.
- `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — தாமதப்படுத்தப்பட்ட சாளரத்தின் கடுமையான
வரம்பு; டைமரைப் பொருட்படுத்தாமல், இத்தனை பைட்டுகள் சேர்ந்தவுடன் ஒப்படைப்பு
(flush + passthrough) நடக்கும்.
- `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — holdback இன்னும் ஒப்படைக்கப்படாத நிலையில்
அப்ஸ்ட்ரீம் ஸ்ட்ரீமின் அதிகபட்ச வெளிப்படையான மறு-திறப்புகள்.
> **ஒவ்வொரு வழங்குநருக்குமான sliding-window வீத வரம்பு (env மாறி இல்லை):** FCC-இலிருந்து
> போர்ட் செய்யப்பட்ட ஒவ்வொரு வழங்குநர் sliding-window வீத-வரம்பு _fallback_ குறியீட்டில்
> உள்ளது (`open-sse/services/providerDefaultRateLimit.ts`,
> `open-sse/services/rateLimitManager.ts` வழியாக இணைக்கப்பட்டுள்ளது), ஆனால் அது
> **வெற்று இயல்புநிலை வரைபடத்துடன்** வழங்கப்படுகிறது மற்றும் இன்று **ஆபரேட்டர் env மாறி
> இல்லை** — அது சோதனை ஹுக் / குறியீடு திருத்தம் மூலம் மட்டுமே இயக்கப்படுகிறது. அது
> வேண்டுமென்றே மேற்கண்ட அட்டவணையில் பட்டியலிடப்படவில்லை. உண்மையில் கட்டுப்பாட்டு முளை
> (knob) உள்ள ஒவ்வொரு `(token, IP)` ரிலே வரம்பானது `RELAY_IP_PER_MINUTE`
> (§3 நெட்வொர்க் & போர்ட்கள்).
---
## 22. பிழைத்திருத்தம்
> [!CAUTION]
> இந்த மாறிகள் **விரிவான வெளியீட்டை** உருவாக்குவதுடன், முக்கியத் தரவைக் கசியவிடக்கூடும். **உற்பத்திச் சூழலில் ஒருபோதும் இயக்க வேண்டாம்.**
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CURSOR_DEBUG` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/cursor.ts` | விரிவான Cursor executor பதிவுகளை (குறியாக்கம் நீக்கப்பட்ட SSE துண்டுகள் போன்றவை) இயக்க `1` என அமைக்கவும். |
| `CURSOR_STREAM_DEBUG` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG`-இன் பின்னோக்கிய இணக்கத்தன்மை கொண்ட மாற்றுப்பெயர். |
| `CURSOR_DUMP_FILE` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG=1` ஆக இருக்கும்போது, குறியாக்கம் நீக்கப்பட்ட மூல Cursor துண்டுகளைப் பெறும் விருப்பக் கோப்புப் பாதை. |
| `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Cursor executor-க்கான ஸ்ட்ரீம் செயலற்ற காலாவதி (ms). |
| `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | bytes தொடர்ந்து buffer செய்யப்பட்டிருக்கும்போது, composer kv_after_text மென்மையான முடிப்பிற்குப் பிந்தைய சலுகைச் சாளரம் (ms) — பின்தொடரும் exec_mcp கருவி அழைப்பு அதன் frame-ஐ நிறைவுசெய்ய நேரமளிக்கிறது. |
| `CURSOR_TOOL_DIRECTIVE` | இயக்கப்பட்டது (`!== "0"`) | `open-sse/executors/cursor.ts` | composer-2.5 நம்பகமாகக் கருவி அழைப்புகளை வெளியிடச் செய்யும் tool-commit directive. முடக்க `0` என அமைக்கவும். |
| `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(அமைக்கப்படவில்லை)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | மொழிபெயர்ப்புக்குப் பிறகு system message-உடன் சேர்க்கப்படும் இயக்குநர் வரையறுத்த system prompt உரை (மொழிபெயர்ப்புக்குப் பிந்தைய உட்செலுத்தல்); இது codex/Responses மற்றும் `/v1/messages` பாதைகளைச் சென்றடையும். மீண்டும் எதிரொலிக்கப்படும் system preamble தொகுதிகளிலிருந்து நீக்கப்படும் directive prefix ஆகவும் பயன்படுத்தப்படுகிறது. முடக்க, இதை அமைக்காமல் விடவும். |
| `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (முடக்கம்) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | openai→claude ஸ்ட்ரீமின் தொடக்கத்திலிருந்து மீண்டும் எதிரொலிக்கப்படும் system-prompt preamble தொகுதிகளை நீக்க `1` என அமைக்கவும். இயல்பாக இது முடக்கப்பட்டுள்ளது — இந்த heuristics ஆங்கில உரைநடை வடிவமைப்பை அடிப்படையாகக் கொண்டவை மற்றும் response payload-ஐ மாற்றுகின்றன; எனவே, அத்தகைய பிரிவுடன் சட்டபூர்வமாகத் தொடங்கும் பதில் அதை இழக்கக்கூடும். |
| `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | தொலைநிலை `image_url` vision input-க்கான ஒவ்வொரு படத்திற்குமான பெறுதல் காலாவதி (ms). |
| `CURSOR_STATE_DB_PATH` | _(ஆய்வு செய்யப்பட்டது)_ | `open-sse/utils/cursorVersionDetector.ts` | IDE பதிப்பைக் கண்டறியப் பயன்படுத்தப்படும் Cursor IDE state DB தேடலை மேலெழுதுகிறது. |
| `CURSOR_AGENT_CLI_VERSION` | _(கண்டறிதல் / நிலைநிறுத்தல்)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Agent Run-இல் `x-cursor-client-version: cli-…`-க்கான Agent CLI build id (`YYYY.MM.DD-`). |
| `CURSOR_AGENT_BIN` | _(அமைக்கப்படவில்லை)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | பட உருவாக்கத்திற்குப் பயன்படுத்தப்படும் Cursor Agent binary-க்கான பாதை. அமைக்கப்படாதபோது, handler முதலில் `providerSpecificData.agentBin`-ஐயும், பின்னர் PATH-ஐயும் பயன்படுத்தும். |
| `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor Agent படப் பணிகளுக்கான ஒவ்வொரு படத்திற்குமான மொத்த நேர வரம்பு (ms). |
| `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor படப் பணிகளுக்கான பகிரப்பட்ட-seat ஒரேநேரச் செயலாக்கக் கட்டுப்பாடு. |
| `CURSOR_IMG_MODEL` | கோரிக்கை / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | படப் பணிகளுக்கான Cursor CLI `--model`-ஐ மேலெழுதுகிறது. |
| `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC (uncensored.com) பட உருவாக்க முடிவின் polling இடைவெளி (ms). |
| `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC பட உருவாக்க முடிவின் polling-க்கான மொத்த நேர வரம்பு (ms). |
| `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC (uncensored.com) காணொளி உருவாக்க முடிவின் polling இடைவெளி (ms). |
| `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC காணொளி உருவாக்க முடிவின் polling-க்கான மொத்த நேர வரம்பு (ms). |
| `CURSOR_DATA_DIR` | _(ஆய்வு செய்யப்பட்டது)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Cursor Agent CLI தரவுக் கோப்பகத்தை (`…/versions/`) மேலெழுதுகிறது; அதிகாரப்பூர்வ agent பயன்படுத்தும் அதே மாறி. |
| `CURSOR_TOKEN` | _(அமைக்கப்படவில்லை)_ | `scripts/ad-hoc/cursor-tap.cjs` | உருவாக்குநர் கருவிகள் பயன்படுத்தும் நேரடி Cursor bearer token. |
| `OMNIROUTE_LOG_REQUEST_SHAPE` | முடக்கப்பட்டது (`"1"` மூலம் விருப்பத் தேர்வு) | `src/app/api/v1/chat/completions/route.ts` | `"1"` அமைக்கப்பட்டிருக்கும்போது, பெரிய chat payload-களுக்கான content-type/length குறியீடுகளைப் பதிவுசெய்கிறது. பதிவு இரைச்சலைக் குறைக்க இயல்பாக முடக்கப்பட்டுள்ளது. |
| `DEBUG_RESPONSES_SSE_TO_JSON` | _(அமைக்கப்படவில்லை)_ | `open-sse/handlers/responseTranslator.ts` | Responses API SSE→JSON மொழிபெயர்ப்பு விவரங்களைப் பதிவுசெய்ய `true` என அமைக்கவும். |
| `DEBUG_CLAUDE_NONSTREAM` | _(அமைக்கப்படவில்லை)_ | `open-sse/handlers/responseTranslator.ts` | Claude response மொழிபெயர்ப்புப் பாதையில் காலியான textContent துண்டுகளை வெளிப்படுத்த `true` என அமைக்கவும் (பிழைத்திருத்தத்திற்கு மட்டும்). |
| `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(அமைக்கப்படவில்லை)_ | E2E சோதனைக் கட்டமைப்பு | E2E சோதனைப் பயன்முறையை (தளர்த்தப்பட்ட அங்கீகாரம், சோதனை hooks) இயக்க `true` என அமைக்கவும். |
---
## 23. GitHub ஒருங்கிணைப்பு
Dashboard-இலிருந்து நேரடியாகச் சிக்கல்களைப் புகாரளிக்கப் பயனர்களை அனுமதிக்கவும்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| --------------------- | -------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GITHUB_ISSUES_REPO` | _(அமைக்கப்படவில்லை)_ | `src/app/api/v1/issues/report/route.ts` | `owner/repo` வடிவமைப்பிலுள்ள களஞ்சியம். |
| `GITHUB_ISSUES_TOKEN` | _(அமைக்கப்படவில்லை)_ | `src/app/api/v1/issues/report/route.ts` | `issues:write` வரம்பைக் கொண்ட GitHub தனிப்பட்ட அணுகல் டோக்கன். |
| `GITHUB_TOKEN` | _(அமைக்கப்படவில்லை)_ | சிக்கல் வகைப்படுத்தல் / கிளவுட் முகவர் உதவிகள் | `GITHUB_ISSUES_TOKEN`-க்கான மாற்றாகப் பயன்படுத்தப்படும் பொதுவான GitHub அணுகல் டோக்கன்; மேலும் `src/lib/cloudAgent/*`-இல் உள்ள கிளவுட் முகவர் உதவிகளால் பயன்படுத்தப்படுகிறது. |
---
## நிறுவல் சூழல்கள்
ரிலே பின்தள SRE வழிகாட்டுதலுக்கு (ts/bifrost/auto செயல்பாடு, 9router மற்றும் CLIProxyAPI அமைவிடம், மேலும் அதிகத் தரவோட்டத்திற்கான மாற்று உத்தி), [ரிலே பின்தள உத்தி](/docs/reference/RELAY_BACKEND_STRATEGY.md) என்பதைப் பார்க்கவும்.
### குறைந்தபட்ச உள்ளூர் உருவாக்கம்
```bash
JWT_SECRET=$(openssl rand -base64 48)
API_KEY_SECRET=$(openssl rand -hex 32)
INITIAL_PASSWORD=dev123
PORT=20128
NODE_ENV=development
```
### Docker உற்பத்திச் சூழல்
```bash
JWT_SECRET=<உருவாக்கப்பட்டது>
API_KEY_SECRET=<உருவாக்கப்பட்டது>
INITIAL_PASSWORD=<உருவாக்கப்பட்டது>
STORAGE_ENCRYPTION_KEY=<உருவாக்கப்பட்டது>
DATA_DIR=/data
PORT=20128
API_PORT=20129
NODE_ENV=production
AUTH_COOKIE_SECURE=true
REQUIRE_API_KEY=true
NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
BASE_URL=http://localhost:20128
OMNIROUTE_MEMORY_MB=8192
CORS_ORIGIN=https://your-frontend.example.com
```
### இணையத் தொடர்பற்ற சூழல் / CI
```bash
JWT_SECRET=test-jwt-secret-for-ci
API_KEY_SECRET=test-api-key-secret-for-ci
INITIAL_PASSWORD=testpass
NODE_ENV=production
OMNIROUTE_DISABLE_BACKGROUND_SERVICES=true
APP_LOG_TO_FILE=false
```
### எதிர்மறைப் பதிலி கொண்ட VPS (nginx + Cloudflare)
```bash
JWT_SECRET=<உருவாக்கப்பட்டது>
API_KEY_SECRET=<உருவாக்கப்பட்டது>
STORAGE_ENCRYPTION_KEY=<உருவாக்கப்பட்டது>
PORT=20128
AUTH_COOKIE_SECURE=true
REQUIRE_API_KEY=true
NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
BASE_URL=http://127.0.0.1:20128
CORS_ORIGIN=https://omniroute.example.com
ENABLE_TLS_FINGERPRINT=true
CLI_COMPAT_ALL=1
```
---
## 24. திறன்கள் சாண்ட்பாக்ஸ் (v3.8.0+)
Skills கட்டமைப்பு (`src/lib/skills/`) பயனர் வரையறுத்த தானியக்கங்களை சாண்ட்பாக்ஸ் சூழலில் இயக்கும்போது பயன்படுத்தப்படும் வரம்புகள் மற்றும் பாதுகாப்புக் கட்டுப்பாடுகள்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| --------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 வி) | `src/lib/skills/builtins.ts` | சாண்ட்பாக்ஸ் செய்யப்பட்ட திறன் நிரலுக்கான ஒவ்வொரு இயக்கத்தின் நிகழ்நேர காலவரம்பு. இது கடுமையான உச்சவரம்பு; இதைவிட நீண்ட நேரம் இயங்கும் எதுவும் நிறுத்தப்படும். |
| `SKILLS_EXECUTION_TIMEOUT_MS` | _(`SKILLS_SANDBOX_TIMEOUT_MS`-ஐ மாற்றாகப் பயன்படுத்தும்)_ | `src/lib/skills/` | உயர்நிலைத் திறன் ஒருங்கிணைப்புக் காலவரம்பு. பலபடி பணிப்பாய்வுகளை அனுமதிக்க, இதை `SKILLS_SANDBOX_TIMEOUT_MS`-ஐ விட அதிகமாக அமைக்கவும். |
| `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | சாண்ட்பாக்ஸ் செய்யப்பட்ட எந்தவொரு தனிக் கோப்பிலிருந்தும் ஒரு திறன் படிக்கக்கூடிய அதிகபட்ச பைட்டுகள். |
| `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | ஒரு திறனுக்குள் எந்தவொரு தனிப்பட்ட HTTP பதிலிலிருந்தும் சேகரிக்கப்படும் அதிகபட்ச பைட்டுகள். |
| `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | சாண்ட்பாக்ஸ் அழைப்பிலிருந்து திருப்பி அனுப்பப்படும் stdout/stderr எழுத்துகளுக்கான கடுமையான உச்சவரம்பு. |
| `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | சாண்ட்பாக்ஸுக்குள் இருந்து வெளிச்செல்லும் பிணைய அணுகலை அனுமதிக்க `1`/`true` என அமைக்கவும். பாதுகாப்புக்காக இயல்பாக **தனிமைப்படுத்தப்பட்டிருக்கும்**. |
| `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(காலி)_ | `src/lib/skills/builtins.ts` | சாண்ட்பாக்ஸ் இயக்கத்திற்கு அனுமதிக்கப்பட்ட கண்டெய்னர் படங்களின் காற்புள்ளியால் பிரிக்கப்பட்ட அனுமதிப்பட்டியல். காலியாக இருந்தால் உள்ளமைக்கப்பட்ட இயல்புநிலை மட்டுமே பயன்படுத்தப்படும். |
| `SKILLS_SANDBOX_DOCKER_IMAGE` | _(உள்ளமைக்கப்பட்ட இயல்புநிலை)_ | `src/lib/skills/` | Docker ஆதரவுள்ள சாண்ட்பாக்ஸைத் தொடங்கும்போது பயன்படுத்தப்படும் கண்டெய்னர் படம். தனிப்பயன் பாதுகாப்புக் கடுமையாக்கப்பட்ட அடிப்படைப் படத்தை நிலைநிறுத்த இதை மேலெழுதவும். |
| `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | திறன் சாண்ட்பாக்ஸிங்கிற்கான கண்டெய்னர் இயக்கச்சூழல்: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. ஒவ்வொரு ஹோஸ்ட் OS-இலும் நிறுவப்பட்டுள்ள சிறந்த இயக்கச்சூழலை `auto` தேர்ந்தெடுக்கிறது (macOS-இல் Apple Container/OrbStack, Windows-இல் WSL Container, Linux-இல் Podman); அவை கிடைக்காவிட்டால் Docker-ஐப் பயன்படுத்துகிறது. |
> [!CAUTION]
> `SKILLS_SANDBOX_NETWORK_ENABLED=true`-ஐ இயக்குவது, எந்தவொரு திறன் நிரலிலிருந்தும் வெளிச்செல்லும் பாதையைத் திறக்கிறது. பகிரப்பட்ட நிறுவல்களில் இதை `OUTBOUND_SSRF_GUARD_ENABLED=true` மற்றும் கடுமையான `CORS_ORIGIN`/ப்ராக்ஸி கொள்கையுடன் இணைத்துப் பயன்படுத்தவும்.
---
## 25. வழங்குநர் ஒதுக்கீடுகள், டன்னல்கள், காப்புப்பிரதிகள் & பல்தரப்பட்ட ரன்டைம்
வழங்குநர் ஒதுக்கீட்டு முனைப்புகள், நெட்வொர்க் டன்னல்கள் (Tailscale, Ngrok, MITM பிழைத்திருத்த ப்ராக்ஸி), 1Proxy வெளிப்போக்குக் குளம், தரவுத்தள காப்புப்பிரதிகள் மற்றும் எக்ஸிக்யூட்டர் அடுக்கு அல்லது ஸ்கிரிப்டுகளால் குறிப்பிடப்படும் சிறிய அம்சவாரியான மேலெழுதல்கள்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | வீத வரம்புக் கருவியின் பின்தளத்திற்கான Redis இணைப்புச் சரம். |
| `ALIBABA_CODING_PLAN_HOST` | _(தயாரிப்பு ஹோஸ்ட்)_ | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian coding-plan ஒதுக்கீடுகளைப் பெறப் பயன்படும் ஹோஸ்டை மேலெழுதுகிறது. |
| `ALIBABA_CODING_PLAN_QUOTA_URL` | ஹோஸ்டிலிருந்து பெறப்பட்டது | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian-க்கான முழு ஒதுக்கீட்டு URL மேலெழுதல். |
| `QWEN_CLOUD_COOKIE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Qwen Cloud / Model Studio தனிப்பட்ட Token Plan ஒதுக்கீட்டு நுழைவாயிலுக்கான கன்சோல் அமர்வு குக்கீ (அனுமான API விசையால் அதைப் படிக்க முடியாது). home.qwencloud.com › Billing › Subscription (F12 › Network) இல் `cs-data.qwencloud.com`-க்கான எந்தவொரு `api.json` அழைப்பிலிருந்தும் முழு `Cookie` கோரிக்கைத் தலைப்பையும் நகலெடுக்கவும் — அதில் `login_qwencloud_ticket` உள்ளது. உணர்திறன் மிக்கது மற்றும் அமர்வு வரம்புக்குட்பட்டது; இணைப்பு வாரியான `qwenCloudCookie` டாஷ்போர்டு புலத்தையே விரும்பவும். |
| `QWEN_CLOUD_SEC_TOKEN` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Token Plan கன்சோல் நுழைவாயிலுக்கான கைமுறை `sec_token` மேலெழுதல். உணர்திறன் மிக்கது; அமைக்கப்படாதிருந்தால், பெறுநர் குக்கீயைப் பயன்படுத்தி டாஷ்போர்டு HTML-இலிருந்து அதைத் தீர்த்துப் பெறுகிறது. |
| `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | தனிப்பட்ட Token Plan ஒதுக்கீட்டுப் பெறுநருக்கான நுழைவாயில் ஹோஸ்ட் மேலெழுதல் (எ.கா. Model Studio கன்சோலுக்கு `bailian-singapore-cs.alibabacloud.com`). |
| `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | உள்நுழைந்த HTML-இலிருந்து `sec_token`-ஐத் தீர்த்துப் பெறப் பயன்படும் டாஷ்போர்டு URL. |
| `XIAOMI_MIMO_CONSOLE_COOKIE` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Xiaomi MiMo Token Plan ஒதுக்கீட்டு API-க்கான கன்சோல் அமர்வு குக்கீ (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — அனுமான API விசையால் அதைப் படிக்க முடியாது). Token Plan பக்கத்தில் (F12 › Network) `platform.xiaomimimo.com`-க்கான எந்தவொரு கோரிக்கையிலிருந்தும் முழு `Cookie` கோரிக்கைத் தலைப்பையும் நகலெடுக்கவும் — அதில் `api-platform_serviceToken` மற்றும் `userId` உள்ளன. உணர்திறன் மிக்கது மற்றும் அமர்வு வரம்புக்குட்பட்டது; இணைப்பு வாரியான `xiaomiMimoConsoleCookie` டாஷ்போர்டு புலத்தையே விரும்பவும். |
| `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | கன்சோல் குக்கீ எதுவும் கட்டமைக்கப்படாத போது பயன்படுத்தப்படும், OmniRoute மூலம் கண்காணிக்கப்படும் Xiaomi MiMo தற்காலிக மாற்றுக்கான மாதாந்திர பட்ஜெட் (Credits). Lite அடுக்கின் 4.1B ஆக இயல்பாக அமைந்துள்ளது; திட்டத்தின் Credits (Standard 11B / Pro 38B / Max 82B) ஆக அமைக்கவும். இணைப்பு வாரியான `providerSpecificData.monthlyTokenLimit` மேலெழுதல் இந்த env மாறியை விட முன்னுரிமை பெறும். |
| `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio இலவச-அடுக்கு vision/media ஒதுக்கீட்டைப் பெறுவதற்கான கன்சோல் front-end பாதை மேலெழுதல். |
| `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio இலவச-அடுக்கு multimodal ஒதுக்கீட்டைப் பெறுவதற்கான கன்சோல் front-end பாதை மேலெழுதல். |
| `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio இலவச-அடுக்கு audio ஒதுக்கீட்டைப் பெறுவதற்கான கன்சோல் front-end பாதை மேலெழுதல். |
| `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | உள்ளமைக்கப்பட்ட Alibaba இலவச-அடுக்கு text-model அனுமதிப் பட்டியலுக்கான உள்ளூர் JSON மேலெழுதலுக்கான விருப்பப் பாதை. முதலில் `$DATA_DIR/alibaba-free-tier-allowlist.json` க்கும், பின்னர் `config/alibaba-free-tier-allowlist.json` க்கும் திரும்பும். |
| `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | prompt பட்ஜெட்களைக் கணக்கிடும்போது completion வெளியீட்டிற்காக ஒதுக்கப்படும் டோக்கன்கள். |
| `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | சூழல் சாளரத்திற்குள் பொருந்தச் செய்ய பழையவற்றை நீக்கும்போது, மிகப் புதிய inline படங்களில் எத்தனையைத் தக்கவைத்துக் கொள்ள வேண்டும் (#8560). |
| `MODEL_ALIAS_COMPAT_ENABLED` | இயக்கப்பட்டது | `open-sse/services/model.ts` | பழைய கிளையன்டுகளால் பயன்படுத்தப்படும் பழமையான model-alias பொருந்தக்கூடிய அடுக்கை நிலைமாற்று. |
| `OMNIROUTE_EMERGENCY_FALLBACK` | இயக்கப்பட்டது | `open-sse/services/emergencyFallback.ts` | தோல்வியடைந்த கோரிக்கைகளை இலவச `nvidia`/`openai/gpt-oss-120b` மாதிரிக்கு மீள்வழிமாற்றும் அவசர பட்ஜெட்-தீர்வு மாற்றை முடக்க `false` (அல்லது `0`) என அமைக்கவும். பயனுள்ள முன்னுரிமை: Feature Flags DB மேலெழுதல் > env மாறி > இயல்புநிலை; இது கிடைக்காவிட்டால், சேவை மூல env மதிப்புக்குத் திரும்பும். |
| `COMMAND_CODE_CALLBACK_PORT` | _(அமைக்கப்படவில்லை)_ | `src/app/api/providers/command-code/auth/shared.ts` | Command Code CLI உதவியாளரிலிருந்து வரும் OAuth-பாணி திருப்ப அழைப்புகளுக்குப் பயன்படுத்தப்படும் உள்ளூர் போர்ட். |
| `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Command Code அப்ஸ்ட்ரீமுக்கு `x-command-code-version` ஹெடராக அனுப்பப்படும் மதிப்பு. CLI பதிப்பை உயர்த்த மேலெழுதவும். |
| `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | ஸ்மார்ட்ஃபோன் quota-fetcher டெலிமெட்ரி பயன்படுத்தும் Command Code பயன்பாடு/quota அப்ஸ்ட்ரீமின் அடிப்படை URL. சுயமாக ஹோஸ்ட் செய்யப்பட்ட/மாற்று Command Code API-க்கு மேலெழுதவும். |
| `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | MITM டீபக் ப்ராக்ஸிக்கான உள்ளூர் பைண்ட் போர்ட். |
| `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | அப்ஸ்ட்ரீம் TLS சரிபார்ப்பை முடக்க `1` என அமைக்கவும் (மேம்பாட்டிற்கு மட்டும்). |
| `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | ப்ராக்ஸி செய்யப்பட்ட இணைப்புகளுக்கான செயலற்ற சாக்கெட் காலக்கெடு (ms); இதைத் தாண்டிய செயலற்ற சாக்கெட்டுகள், அரை-திறந்த டன்னல்கள் கசிவதைத் தவிர்க்க அகற்றப்படும். |
| `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Antigravity MITM பிரிட்ஜ் கவனிக்கும் போர்ட். |
| `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | பிரிட்ஜ் Antigravity ட்ராஃபிக்கை அனுப்பும் ரவுட்டர் எண்ட்பாயிண்ட். |
| `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | பிரிட்ஜ் தனது TLS பொருட்களைப் படிக்கும் கோப்பகத்தை மேலெழுதுகிறது. சான்றிதழ் மாதிரி AgentBridge சர்வர் போலவே தேர்ந்தெடுக்கப்படுகிறது: பழைய லீஃப் இன்ஸ்டாலுக்கு `server.crt`/`server.key`, இல்லையெனில் `ca.crt`/`ca.key` (root CA, இடைமறிக்கப்பட்ட ஒவ்வொரு ஹோஸ்ட்டுக்கும் ஒரு லீஃப்; `MITM_ROOT_CA_ENABLED=true` மூலம் கட்டாயப்படுத்தப்படுகிறது). செயலில் உள்ள மாதிரியின் கோப்புகள் இல்லையெனில் பிரிட்ஜ் தொடக்கத்தில் வெளியேறும். |
| `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | ரவுட்டிங்-முடிவு லாக் விரிவுத்தன்மை: `0` மௌனமாக்கும், அதிக மதிப்புகள் அதிக பைபாஸ்/ரூட் முடிவுகளைப் பதிவு செய்யும். |
| `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | root-CA + ஹோஸ்ட்-வாரியான லீஃப் சான்றிதழ் மாதிரியைத் தேர்வு செய்ய `true` என அமைக்கவும் (#6684). புதிய இன்ஸ்டால்கள் தானாகவே இதைப் பெறும்; ஏற்கனவே நம்பகமான பழைய லீஃப் உள்ள இன்ஸ்டால்கள், தேர்வு செய்யாத வரை பழைய நிலையான-SAN சான்றிதழையே வைத்திருக்கும். |
| `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | உருவாக்கப்பட்ட ப்ராக்ஸி செயல்முறைக்காக MITM மேலாளரால் அமைக்கப்படுகிறது (`root-ca` \| `legacy`) — சான்றிதழ் இடம்பெயர்வு முடிவைப் பிரதிபலிக்கிறது; கைமுறையாக அமைக்க வேண்டியதில்லை. |
| `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | MITM சான்றிதழ்-நம்பிக்கை கட்டளைகளிலிருந்து முன்னிலை `sudo` ஐ நீக்க `1` (truthy) என அமைக்கவும் — ரூட் இல்லாத / பயனர்-பெயர்வெளி வரிசைப்படுத்தல்களுக்கானது, அங்கு நிர்வாகி CA-ஐ கைமுறையாக நம்புகிறார் (எ.கா. Node-இன் extra-CA-certs வழிமுறை வழியாக). |
| `SKIP_ANTIGRAVITY_DNS` | _(அமைக்கப்படவில்லை)_ | `src/mitm/dns/provision.ts` | Antigravity ப்ராக்ஸி ஹோஸ்ட்பெயர்களுக்கான `/etc/hosts` DNS பதிவுகளை முழுமையாக வழங்குவதைத் தவிர்க்க `true` என அமைக்கவும் — sudo/root கிடைக்காத கண்டெய்னர்களுக்கானது. |
| `OMNIROUTE_SKIP_DNS_WRITE` | _(அமைக்கப்படவில்லை)_ | `src/mitm/dns/dnsConfig.ts` | DNS பதிவுகளைச் சேர்க்கும்போது/நீக்கும்போது hosts கோப்பில் எழுதுவதைத் தவிர்க்க `1` என அமைக்கவும் — sandbox செய்யப்பட்ட அல்லது வாசிப்பு-மட்டும் சோதனை சூழல்களுக்கானது. |
| `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | சோதனை/CI-மட்டும் பாதுகாப்பு: சான்றிதழ் நம்பிக்கை நிறுவல்/நீக்கம் எதுவும் செய்யாததாக (no-op) மாற்ற `1` என அமைக்கவும், இதனால் சோதனைத் தொகுப்பு OS நம்பிக்கைச் சேமிப்பை ஒருபோதும் மாற்றாது. சோதனை அமைப்பு மற்றும் CI பணிப்பாய்வுகளால் தானாகவே அமைக்கப்படுகிறது. |
| `CHANGELOG_BASE_REF` | _(தானியங்கு)_ | `scripts/check/check-changelog-integrity.mjs` | anti CHANGELOG-eat கேட்டுக்கான வெளிப்படையான அடிப்படை ref (CI-இல் PR அடிப்படைக் கிளை அல்லது மிக உயர்ந்த `release/v*` இயல்புநிலையாகும்). |
| `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | பின்னணி இலவச-ப்ராக்ஸி குள தானியங்கு-ஒத்திசைவு திட்டமிடலாளரை இயக்க `true` என அமைக்கவும். விருப்பத்தேர்வு (opt-in), இயல்பாக அணைக்கப்பட்டது. |
| `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | மில்லிவினாடிகளில் தானியங்கு-ஒத்திசைவு இடைவெளி (இயல்புநிலை 30 நிமிடம்). |
| `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy இலவச ப்ராக்ஸி மூலத்தை இயக்கவும். முடக்க `false` என அமைக்கவும். |
| `FREE_PROXY_1PROXY_API_URL` | _(oneproxy.ts ஐப் பார்க்கவும்)_ | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy API URL மேலெழுதல் (override). |
| `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy-இலிருந்து ஒவ்வொரு ஒத்திசைவிலும் பெறப்படும் அதிகபட்ச ப்ராக்ஸிகள். |
| `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy இறக்குமதிகளுக்கான குறைந்தபட்ச தர மதிப்பெண் வரம்பு. |
| `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly இலவச ப்ராக்ஸி மூலத்தை இயக்கு. முடக்க `false` என அமைக்கவும். |
| `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | ஒவ்வொரு Proxifly ஒத்திசைவிலும் பெற வேண்டிய ப்ராக்ஸிகளின் எண்ணிக்கை. |
| `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly-க்கான அநாமதேய நிலை வடிப்பான் (`elite`, `anonymous`, `transparent`). |
| `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate இலவச ப்ராக்ஸி மூலத்தை இயக்கு. தேர்வு செய்யும் (opt-in) முறையில் மட்டுமே. |
| `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate ப்ராக்ஸி பட்டியல் அடிப்படை URL மேலெழுதல். |
| `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Webshare ப்ராக்ஸி குள மூலத்தை இயக்கு. முடக்க `false` என அமைக்கவும்; மேலும் `FREE_PROXY_WEBSHARE_API_KEY` அமைக்கப்பட்டிருக்க வேண்டும். |
| `FREE_PROXY_WEBSHARE_API_KEY` | _(எதுவுமில்லை)_ | `src/lib/freeProxyProviders/webshare.ts` | Webshare கணக்கு API டோக்கன் (`Authorization: Token `). தேவை — இது இல்லாமல் வழங்குநர் முடக்கப்பட்ட நிலையிலேயே இருக்கும். |
| `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Webshare ப்ராக்ஸி பட்டியல் API URL மேலெழுதல். |
| `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | ஒவ்வொரு Webshare ஒத்திசைவிலும் இறக்குமதி செய்யப்படும் அதிகபட்ச ப்ராக்ஸிகள். |
| `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Proxy Pool தாவலில் Deploy Vercel Relay பொத்தானைக் காட்டு/மறை. |
| `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Vercel API அடிப்படை URL மேலெழுதல் (சோதனைக்காக). |
| `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Vercel Relay வரிசைப்படுத்தல் மாடலில் முன்கூட்டியே நிரப்பப்படும் இயல்புநிலை திட்டப் பெயர். |
| `TAILSCALE_BIN` | _(தானாகக் கண்டறியப்படும்)_ | `src/lib/tailscaleTunnel.ts` | `tailscale` பைனரிக்கான வெளிப்படையான பாதை. |
| `TAILSCALED_BIN` | _(தானாகக் கண்டறியப்படும்)_ | `src/lib/tailscaleTunnel.ts` | `tailscaled` டீமன் பைனரிக்கான வெளிப்படையான பாதை. |
| `TAILSCALE_AUTHKEY` | _(அமைக்கப்படவில்லை)_ | `src/lib/tailscaleTunnel.ts` | அந்நியோஷன் அற்ற / headless `tailscale up` க்கான முன்-பகிரப்பட்ட Tailscale அங்கீகார விசை (`--auth-key=` வழியாக அனுப்பப்படுகிறது). அமைக்கப்படாதபோது, உள்நுழைவு ஊடாடும் உலாவி அங்கீகார URL க்கு மாறும். |
| `NGROK_AUTHTOKEN` | _(அமைக்கப்படவில்லை)_ | `src/lib/ngrokTunnel.ts` | வெளிச்செல்லும் ngrok சுரங்கங்களை அங்கீகரிக்கிறது. |
| `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | கைமுறை/திட்டமிடப்பட்ட காப்புப்பிரதி துப்புரவால் தக்கவைக்கப்படும் அதிகபட்ச SQLite காப்புப்பிரதி கோப்புகள். இடம்பெயர்வு ஸ்னாப்ஷாட்கள் உள்ளடக்க-முகவரியிடப்பட்டவை; ஒரே DB நிலைக்கு மீண்டும் பயன்படுத்தப்படுகின்றன. அவை ஒரேநேர இடம்பெயர்வு சாளரத்திற்குள் நீக்கப்படாது. அமைப்புகள் → தரவுத்தள காப்புப்பிரதி தக்கவைப்பில் சேமிக்கப்பட்ட மதிப்பை மேலெழுதுகிறது. |
| `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | கைமுறை/திட்டமிடப்பட்ட காப்புப்பிரதி துப்புரவால் தக்கவைக்கப்படும் அதிகபட்ச வயது (நாட்கள்). `0` வயது அடிப்படையிலான நீக்கத்தை முடக்குகிறது. இடம்பெயர்வு ஸ்னாப்ஷாட்கள் ஒரேநேர இடம்பெயர்வு சாளரத்திற்குள் நீக்கப்படாது. அமைப்புகள் → தரவுத்தள காப்புப்பிரதி தக்கவைப்பில் சேமிக்கப்பட்ட மதிப்பை மேலெழுதுகிறது. |
| `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | `backup-schedule.json` ஐ இயக்கும் சர்வர்-பக்க வேலையின் டிக் இடைவெளி (ms). 1-நிமிட cron தரத்தை விடக் குறைவாகவே இருக்க வேண்டும்; `5000` க்குக் கீழான அல்லது பார்ஸ் செய்ய முடியாத மதிப்புகள் `30000` க்குத் திரும்பும். |
| `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | என்ட்ரிபாயிண்ட் அனுமதி சரிபார்ப்புக்கான கன்டெய்னர் ரன்டைம் குறிப்பு. எந்தவொரு Podman இடவியலுக்கும் (topology) `podman` என அமைக்கவும். எஞ்சின் உள்ளூரில் உள்ளதா அல்லது Podman Machine வழியாக அணுகப்படுகிறதா என்பதை கன்டெய்னரால் தீர்மானிக்க முடியாததால், எச்சரிக்கை இடவியல்-நடுநிலையாகவே இருந்து `contrib/podman/README.md` ஐச் சுட்டிக்காட்டுகிறது. |
| `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | கோட்டா-பங்கு நுகர்வு சேமிப்பகப் பின்தளம்: `sqlite` (இயல்புநிலை) அல்லது `redis`. |
| `QUOTA_STORE_REDIS_URL` | _(அமைக்கப்படவில்லை)_ | `src/lib/quota/storeFactory.ts` | `QUOTA_STORE_DRIVER=redis` ஆக இருக்கும்போது பயன்படுத்தப்படும் Redis இணைப்புச் சரம் (எ.கா. `redis://localhost:6379`). |
| `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | குள (pool) செறிவு விகிதம் (0..1); இதை அடையும்போது அல்லது மீறும்போது குளம் கண்டிப்பான பயன்முறையில் (strict mode) நுழைகிறது (கடன் எடுப்பது இல்லை). |
| `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | மென்மையான கோட்டா கொள்கை ஒரு இலக்கை முன்னுரிமையிழக்கச் செய்யும்போது அதற்குப் பயன்படுத்தப்படும் மதிப்பெண் பெருக்கி (0..1). |
| `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | preflight கோட்டா வெட்டு (cutoff) அணைக்கப்பட்டிருக்கும்போது (#4540), தானியங்கு-காம்போ மதிப்பீட்டில் தீர்ந்துபோன வழங்குநருக்கு (`credits_exhausted`/`rate_limited`) பயன்படுத்தப்படும் மதிப்பெண் பெருக்கி (0..1). |
| `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | GC (`gcQuotaConsumption`) செய்வதற்கு முன் `quota_consumption` bucket-களுக்கான தக்கவைப்புக் காலம் (நாட்கள்). |
| `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | தேர்வுசார் இயக்கம் (இயல்புநிலையாக அணைக்கப்பட்டது): மதிப்பீட்டுக்கு முன் குறைந்த கோட்டா கொண்ட வேட்பாளர்களை நீக்கும் தானியங்கு-வழிநடத்தல் கடின கோட்டா வெட்டை இயக்குகிறது. |
| `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | தேர்வுசார் இயக்கம் (இயல்புநிலையாக அணைக்கப்பட்டது): `auto/:` வடிப்பான் இணைக்கப்பட்ட எந்த வேட்பாளர்களுடனும் பொருந்தாதபோது, வெற்றுக் குளத்தைத் திருப்பித் தருவதற்குப் பதிலாக முழு (வடிகட்டப்படாத) குளத்திற்குத் திரும்பும் பழைய நடத்தையை மீட்டமைக்கிறது. இயல்புநிலையாக அணைக்கப்பட்டிருப்பது `:free` என்பதை "இலவச அடுக்கு மட்டும்" என்று பொருள்படச் செய்கிறது. |
| `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | `auto/*:chaos` ஒளிபரப்பு மாறுபாட்டிற்கான குழு-அளவு வரம்பு (1–10 ஆகக் கட்டுப்படுத்தப்பட்டது) — ஒரு கோரிக்கை அதிகபட்சம் இத்தனை வழங்குநர்-பன்முக மாதிரிகளுக்குப் பரவுகிறது. |
| `OMNIROUTE_CHAOS_MIN_PANEL` | _(இயந்திர இயல்புநிலை)_ | `open-sse/services/autoCombo/virtualFactory.ts` | குழப்ப ஒளிபரப்பு கையாளுபவருக்கு அனுப்பப்படும் குறைந்தபட்ச பேனல் அளவு சரிசெய்தல்; அமைக்கப்படாவிட்டால் இயந்திர இயல்புநிலை நிலைத்திருக்கும். |
| `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(இயந்திர இயல்புநிலை)_ | `open-sse/services/autoCombo/virtualFactory.ts` | முழு குழப்ப பேனல் விரிவாக்கத்திற்குமான கடினமான காலக்கெடு (ms); அமைக்கப்படாவிட்டால் இயந்திர இயல்புநிலை நிலைத்திருக்கும். |
| `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | grok-web வாராந்திர கோட்டாவைப் பெறப் பயன்படும் Grok CLI `auth.json`-இன் பாதை; சோதனைகள் அல்லது தரநிலையல்லாத CLI நிறுவலுக்காக மேலெழுதவும். |
| `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(அமைக்கப்படவில்லை)_ | `src/mitm/manager.ts` | AgentBridge அப்ஸ்ட்ரீம் TLS இணைப்புகளுக்கு நம்பப்படும் கூடுதல் CA சான்றிதழ் (PEM). |
| `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Traffic Inspector வளைய இடையகத்தில் வைத்திருக்கப்படும் அதிகபட்ச பிடிக்கப்பட்ட கோரிக்கைகள். |
| `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | துண்டிக்கப்படுவதற்கு முன் அதிகபட்ச பிடிக்கப்பட்ட கோரிக்கை/பதில் உள்ளடக்க அளவு (KB). |
| `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Traffic Inspector HTTP ப்ராக்ஸிக்கான உள்ளூர் போர்ட். |
| `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | துவக்கத்தின் போது இன்ஸ்பெக்டர் HTTP ப்ராக்ஸியை தானாகத் தொடங்கவும். |
| `INSPECTOR_LLM_HOSTS_EXTRA` | _(அமைக்கப்படவில்லை)_ | `src/lib/inspector/captureState.ts` | பிடிப்புக்காக LLM இறுதிப்புள்ளிகளாகக் கருதப்படும் கூடுதல் ஹோஸ்ட்பெயர்கள் (காற்புள்ளியால் பிரிக்கப்பட்டவை). |
| `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | பிடிக்கப்பட்ட ட்ராஃபிக்கில் ரகசியங்களை (அங்கீகார ஹெடர்கள் / API விசைகள்) மறைக்கவும். |
| `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | system-proxy பாதுகாப்பு OS ப்ராக்ஸி அமைப்புகளைத் தானாக மீட்டமைப்பதற்கு முன் உள்ள நிமிடங்கள். |
| `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(தானியங்கு)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | இன்ஸ்பெக்டருக்குள் நுழையும் உள் கேப்சர் இன்ஜெஸ்ட்டை அங்கீகரிக்கும் டோக்கன். |
| `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Playground ஒப்பீட்டு பயன்முறையில் ஒன்றன் அருகே ஒன்றாகக் காட்டப்படும் நிரல்களின் அதிகபட்ச எண்ணிக்கை. |
| `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(அமைக்கப்படவில்லை)_ | `src/app/(dashboard)/dashboard/playground/` | Playground 'improve prompt' செயலுக்கான இயல்புநிலை மாடல் (அமைக்கப்படாதிருந்தால் செயலில் உள்ள மாடலுக்குத் திரும்பும்). |
| `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | bifrost sidecar ப்ராக்ஸிக்கான முதன்மை கில் சுவிட்ச். `0` என அமைக்கப்பட்டால், ரூட் `X-Bifrost-Killswitch` ஹெட்டருடன் 503 ஐத் திருப்பும், மேலும் ஆபரேட்டர் TS பாதைக்குத் திருப்பப்படுவார். மீள்விநியோகம் இன்றி sidecar ஐ முடக்கப் பயன்படுத்தவும் (tier-1 ரூட்டர் சம்பவம், key rotation). |
| `BIFROST_BASE_URL` | _(அமைக்கப்படவில்லை)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | அமைக்கப்பட்டிருந்தால், Bifrost sidecar ப்ராக்ஸி ரூட் `/v1/chat/completions` டிராஃபிக்கை TS ரிலே ஹேண்ட்லருக்குப் பதிலாக இந்த Go கேட்வேக்கு அனுப்பும். அமைக்கப்படாதிருந்தால் → 503-with-fallback. இறுதி ஸ்லாஷ் நீக்கப்படும். |
| `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | OmniRoute Bifrost sidecar வாழ்க்கைச் சுழற்சியை நிர்வகிக்கும்போது, மேற்பார்வையிடப்படும் Bifrost உட்பொதிந்த சேவை இணைக்கும் போர்ட் (`127.0.0.1:`). இயல்புநிலை `8080`. |
| `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | மேற்பார்வையிடப்படும் LLMLingua சுருக்க சேவை இணைக்கும் போர்ட் (`127.0.0.1:`). இயல்புநிலை `20135`. |
| `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | உள்ளூர் LLMLingua HTTP சுருக்க மைக்ரோசர்விஸ் டீமனுக்கான அடிப்படை URL. இயல்புநிலை `http://127.0.0.1:20135`. |
| `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | மேற்பார்வையிடப்படும் LLMLingua sidecar ஏற்றும் Hugging Face மாடல் ஐடி (child process env க்கு அனுப்பப்படும்). |
| `BIFROST_API_KEY` | _(அமைக்கப்படவில்லை)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost கேட்வேக்கான API key (`Authorization: Bearer ...` என அனுப்பப்படும்). அமைக்கப்படாதிருந்தால், ரூட் கோரிக்கையில் செல்லுபடியாகும் OmniRoute API key இருக்கும் என எதிர்பார்க்கிறது; இந்த key கேட்வே-புற அங்கீகாரத்திற்கு மட்டுமே. |
| `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `true` ஆக இருக்கும்போது, Bifrost sidecar வழி, TS streaming executor ஐப் பயன்படுத்தாமல் gateway வழியாக SSE மூலம் பதில்களை stream செய்கிறது. Gateway வழியாக streaming அல்லாத JSON பதில்களைக் கட்டாயப்படுத்த `0` என அமைக்கவும். |
| `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost gateway க்கு proxy செய்யும்போது ஒவ்வொரு கோரிக்கைக்குமான timeout (ms). Timeout ஏற்பட்டால், அந்த route `X-Bifrost-Fallback` header வழியாக TS relay பாதையைத் திருப்புகிறது. |
| `OMNIROUTE_BIFROST_KEY` | _(அமைக்கப்படவில்லை)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `BIFROST_API_KEY` இன் மாற்றுப் பெயர் (env ஐ `OMNIROUTE_*` வழியாகப் படிக்கும் scriptகளால் பயன்படுத்தப்படுகிறது). இரண்டும் அமைக்கப்பட்டிருந்தால் `BIFROST_API_KEY` முன்னுரிமை பெறும். |
| `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `/api/v1/relay/chat/completions` க்கான relay backend: `ts \| bifrost \| auto`. `ts` = TypeScript relay (Bifrost கட்டமைக்கப்படாத போது இயல்புநிலை); `auto` என்பது `BIFROST_BASE_URL` அமைக்கப்பட்டிருந்து `BIFROST_ENABLED` ≠ `0` ஆக இருக்கும்போது Bifrost ஐத் தேர்ந்தெடுக்கும், sidecar ஐ அடைய முடியாவிட்டால் தானியங்கு TS fallback உடன்; `bifrost` என்பது Bifrost ஐக் கட்டாயப்படுத்தும் (கண்டிப்பானது, fallback இல்லை). Auth/rate-limit/injection-guard/allowlist எப்போதும் முதலில் Next route இலேயே இயங்கும். பதில்கள் `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason` ஆகியவற்றைக் கொண்டிருக்கும். |
| `RELAY_ROUTING_BACKEND` | _(அமைக்கப்படவில்லை)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `OMNIROUTE_RELAY_BACKEND` க்கான ஏற்றுக்கொள்ளப்பட்ட மாற்றுப் பெயர் (அதே `ts \| bifrost \| auto` மதிப்புகள்). இரண்டும் அமைக்கப்பட்டிருந்தால் `OMNIROUTE_RELAY_BACKEND` முன்னுரிமை பெறும். |
| `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | `auto` mode இல் Bifrost sidecar hop தோல்வியடைந்த பிறகு, relay sidecar ஐ மீண்டும் முயற்சிப்பதற்கு முன் உள்ள cooldown (ms); cooldown நீடிக்கும் வரை அது நேரடியாக TS பாதைக்கு route செய்யும், பின்னர் மீண்டும் probe செய்யும். `0` முடக்கும். `OMNIROUTE_RELAY_BACKEND=auto` ஆக இருக்கும்போது மட்டுமே பொருந்தும். |
| `OMNIROUTE_TLS_CERT` | _(அமைக்கப்படவில்லை)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` ஐ HTTPS மூலம் வழங்குவதற்கான PEM TLS சான்றிதழின் பாதை (`--tls-cert` க்கு சமம்). `OMNIROUTE_TLS_KEY` உடன் இணைக்கப்பட்டிருக்க வேண்டும்; பின்னர் standalone சேவையகம் அதே listener இல் TLS ஐ நிறைவேற்றும் (`wss://` மாற்றமின்றி செயல்படும்). அமைக்கப்படாவிட்டால் → சாதாரண HTTP. cert/key இல் ஒன்றை மட்டும் வழங்கினால் அல்லது படிக்க முடியாத பாதையாக இருந்தால், எச்சரிக்கையைப் பதிவு செய்து HTTP இலேயே இருக்கும். |
| `OMNIROUTE_TLS_KEY` | _(அமைக்கப்படவில்லை)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` HTTPS க்கான PEM TLS தனிப்பட்ட விசையின் பாதை (`--tls-key` க்கு சமம்). `OMNIROUTE_TLS_CERT` உடன் இணைக்கப்பட்டிருக்க வேண்டும். `OMNIROUTE_TLS_CERT` ஐப் பார்க்கவும். |
| `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | `/api/local/*` routeகளுக்கான முதன்மை சுவிட்ச். அமைக்கப்படாத போது அல்லது `0` ஆக இருக்கும்போது, production இல் அனைத்து `/api/local/*` routeகளும் 503 ஐத் திருப்பும். Redis launcher மற்றும் அதுபோன்ற 1-click உள்ளக சேவை தொடங்கிகளை இயக்க, loopback அல்லாத deployகளில் `1` ஆக இருக்க வேண்டும். `isLocalOnlyPath()` route-guard வகைப்பாட்டுடன் இரட்டைப் பாதுகாப்பு (`src/server/authz/routeGuard.ts` இல் `LOCAL_ONLY_API_PREFIXES`). |
| `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(அமைக்கப்படவில்லை)_ | `src/lib/security/localEndpoints.ts` | loopback இல் இல்லாத `/api/local/*` அழைப்பாளர்களுக்கான (உதாரணமாக desktop செயலி) Bearer token. அமைக்கப்பட்டிருக்கும்போது, loopback அல்லாத IPகளிலிருந்து வரும் கோரிக்கைகள் `Authorization: Bearer ` ஐக் கொண்டிருக்க வேண்டும். loopback அல்லாத deploymentகளில் `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` ஆக இருக்கும்போது தேவை. |
| `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | 1-கிளிக் Redis லாஞ்சரின் (`omniroute redis up`) கண்டெய்னர் பெயர். CLI மற்றும் `RedisLauncherPanel` GUI இரண்டாலும் பயன்படுத்தப்படுகிறது. |
| `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | 1-கிளிக் Redis லாஞ்சரின் ஹோஸ்ட் போர்ட். ஹோஸ்ட் ஏற்கனவே 6379-ஐ பைண்ட் செய்திருந்தால் இதை மாற்றவும். கண்டெய்னரின் உள் போர்ட் 6379 ஆகவே இருக்கும். |
| `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | 1-கிளிக் Redis லாஞ்சர் வெளியிடும் ஹோஸ்ட் இன்டர்ஃபேஸ். லாஞ்சர் Redis-ஐ கடவுச்சொல் இல்லாமல் தொடங்குகிறது, எனவே `0.0.0.0`-ஐ பைண்ட் செய்தால் உங்கள் LAN-ல் உள்ள ஒவ்வொரு ஹோஸ்டுக்கும் அங்கீகரிக்கப்படாத Redis கிடைத்துவிடும் — நீங்களே அந்த இன்ஸ்டன்ஸில் கடவுச்சொல்லை அமைத்திருந்தால் மட்டுமே இதை விரிவாக்கவும். |
| `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose Redis சைட்காரை வெளியிடும் ஹோஸ்ட் இன்டர்ஃபேஸ் (#9286). compose Redis `requirepass` இல்லாமல் இயங்குகிறது; ஆப் கண்டெய்னர்கள் அதை compose நெட்வொர்க் வழியாக (`redis:6379`) அடைகின்றன — வெளியிடப்பட்ட போர்ட் ஹோஸ்ட் பக்க கருவிகளுக்காக மட்டுமே உள்ளது. `0.0.0.0` அங்கீகரிக்கப்படாத Redis-ஐ முழு LAN-க்கும் வெளிப்படுத்தும். |
| `REDIS_PORT` | `6379` | `docker-compose.yml` | compose Redis சைட்காரின் ஹோஸ்ட் போர்ட். |
| `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | docker-compose ஆப்பின் சொந்த டாஷ்போர்டு/API/live-WS போர்ட்களை வெளியிடும் ஹோஸ்ட் இன்டர்ஃபேஸ் (#12568). `REQUIRE_API_KEY=false` `.env.example` இயல்புநிலையாக வழங்கப்படுவதால், `0.0.0.0` அநாமதேய `/v1` LLM ப்ராக்ஸியை முழு LAN/WAN-க்கும் வெளிப்படுத்தும் — `REQUIRE_API_KEY=true` ஆக்கிய பிறகோ அல்லது முன்னால் உள்ள ரிவர்ஸ் ப்ராக்ஸி தனது சொந்த அங்கீகாரத்தை செயல்படுத்திய பிறகோ மட்டுமே விரிவாக்கவும். |
| `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose Qdrant மெமரி சைட்காரை வெளியிடும் ஹோஸ்ட் இன்டர்ஃபேஸ் (#12578). `REDIS_BIND_HOST` போலவே LAN வெளிப்பாட்டு காரணம். |
| `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose Bifrost ரவுட்டர் சைட்காரை வெளியிடும் ஹோஸ்ட் இன்டர்ஃபேஸ் (#12578). `REDIS_BIND_HOST` போலவே LAN வெளிப்பாட்டு காரணம். |
| `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | ஒவ்வொரு OmniRoute Redis கீக்கும் (ரேட் லிமிட்டர், ஆத் கேஷ், கோட்டா ஸ்டோர், வார்ம்அப் சர்க்யூட் பிரேக்கர்) பயன்படுத்தப்படும் நேம்ஸ்பேஸ் முன்னொட்டு. Redis இன்ஸ்டன்ஸ் மற்ற ஆப்களுடன் பகிரப்படும்போது கீ மோதல்களைத் தடுக்கிறது (#11042). |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(அமைக்கப்படவில்லை — வழிமுறை முடக்கப்பட்டது)_ | `src/lib/api/internalServiceAuth.ts` | அடையாளத்தைப் பாதுகாக்கும் உள் REST ஹாப்களுக்கான பகிரப்பட்ட ரகசியம் (#9260): மற்ற உள்ள OmniRoute ரூட்டுகளை அழைக்கும் OmniRoute கூறுகள் அதை `x-omniroute-internal-service-token` ஆக அனுப்புகின்றன, இதனால் அசல் அழைப்பாளர் அடையாளம் பாதுகாக்கப்படுகிறது. `timingSafeEqual` மூலம் ஒப்பிடப்படுகிறது. |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(அமைக்கப்படவில்லை)_ | `src/lib/api/internalServiceAuth.ts` | உள் சேவை டோக்கனின் ரகசிய-கோப்பு மாறுபாடு: ஒரு கோப்பின் பாதை; அதன் ஒழுங்குபடுத்தப்பட்ட (trimmed) உள்ளடக்கமே டோக்கனாகும். இன்லைன் மாறி அமைக்கப்படாதபோது மட்டுமே பார்க்கப்படுகிறது. |
| `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | டாஷ்போர்டு வழங்குநர்கள் பட்டியலை OpenRouter வாராந்திர தரவரிசைப் புள்ளிவிவரங்களுடன் வளப்படுத்துகிறது (#9324). இயல்பாக இயக்கப்பட்டுள்ளது; பின்னணிப் பெறுதலை முழுமையாகத் தவிர்க்க `false` என அமைக்கவும் (தடையின்றிச் செயல்படும், ஒருபோதும் அபாயகரமானதல்ல). |
| `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterProviderStats.ts` | OpenRouter வழங்குநர்-புள்ளிவிவர ஸ்னாப்ஷாட்டின் கேஷ் TTL, மில்லி வினாடிகளில். |
| `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | 1-கிளிக் Redis துவக்கியால் பயன்படுத்தப்படும் Redis இமேஜ். தேவைக்கேற்ப `redis:8-alpine` அல்லது ஒரு தனியார் ரெஜிஸ்ட்ரி மிரராக மேலெழுதலாம். |
| `QDRANT_HOST` | `qdrant` | _(விருப்ப கிளஸ்டர் சுயவிவரம்)_ | `--profile memory` செயலில் இருக்கும்போது Qdrant sidecar-இன் ஹோஸ்ட்பெயர். இயல்பாக நெட்வொர்க்குக்குள் உள்ள qdrant சேவைப் பெயரைச் சுட்டிக்காட்டுகிறது; வெளிப்புற விநியோகத்திற்கு மேலெழுதலாம். குறியீட்டில் `qdrantEnabled` `true` ஆக இருக்கும்போது மட்டுமே பயன்படுத்தப்படுகிறது (`src/lib/memory/vectorStore.ts:108`). |
| `QDRANT_PORT` | `6333` | _(விருப்ப கிளஸ்டர் சுயவிவரம்)_ | Qdrant sidecar-இன் REST போர்ட். |
| `QDRANT_GRPC_PORT` | `6334` | _(விருப்ப கிளஸ்டர் சுயவிவரம்)_ | Qdrant sidecar-இன் gRPC போர்ட். ஸ்ட்ரீமிங் செயல்பாடுகளுக்கு REST-க்குப் பதிலாக gRPC-ஐ விரும்பும் கிளையன் நூலகங்களால் பயன்படுத்தப்படுகிறது. |
| `QDRANT_API_KEY` | _(அமைக்கப்படவில்லை)_ | _(விருப்ப கிளஸ்டர் சுயவிவரம்)_ | Qdrant Cloud அல்லது அங்கீகாரம் செய்யப்பட்ட ஆன்-ப்ரெம் நிகழ்வுக்கான விருப்ப API விசை. காலியாக இருந்தால் → `api-key` ஹெட்டர் அனுப்பப்படாது. |
| `QDRANT_COLLECTION` | `omniroute-memory` | _(விருப்ப கிளஸ்டர் சுயவிவரம்)_ | OmniRoute-இன் உரையாடல் நினைவக எம்பெடிங்களுக்கான தொகுப்புப் பெயர். முதல் இயக்கத்தில் `QDRANT_VECTOR_SIZE` பரிமாணங்களுடன் உருவாக்கப்படுகிறது. |
| `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(விருப்ப கிளஸ்டர் சுயவிவரம்)_ | Qdrant தொகுப்பு மெட்டாடேட்டாவில் பதிவுசெய்யப்படும் இயல்புநிலை எம்பெடிங் மாதிரிப் பெயர். உண்மையான எம்பெடிங்கள், OmniRoute அமைப்புகளில் உள்ள `embeddingModel` புலம் சுட்டிக்காட்டும் வழங்குநரால் உருவாக்கப்படுகின்றன. |
| `QDRANT_VECTOR_SIZE` | `1536` | _(விருப்பச் சேர்ப்பு கிளஸ்டர் சுயவிவரம்)_ | எம்பெடிங் வெக்டர் பரிமாணம். நீங்கள் எம்பெட் செய்யும் மாதிரியுடன் பொருந்த வேண்டும் (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). |
| `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(விருப்பச் சேர்ப்பு கிளஸ்டர் சுயவிவரம்)_ | HNSW குறியீட்டு கட்டுமான நேரத் துல்லியம். அதிகம் = மெதுவான கட்டுமானம், வேகமான தேடல். |
| `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | ஆபரேட்டர் கட்டமைக்கக்கூடிய கணக்கு சுழற்சிக்கான முதன்மை சுவிட்ச். `false` ஆக இருக்கும்போது, கீழே உள்ள `OMNIROUTE_ROTATE_*` வகுப்புகள் எதுவும் கணக்கு fallback-ஐத் தூண்டாது (முதன்மை-ஆஃப் நிலை இயல்பாக இயக்கப்பட்ட 429/500/502 வகுப்புகளையும் தடுக்கிறது). மேற்பார்வையிடும் முன்பக்கம் (எ.கா. VibeProxy டெஸ்க்டாப் செயலி) தனது சொந்த சுழற்சி விதிகளை பின்பக்கத்தின் கணக்கு-fallback இயந்திரத்தில் பிரதிபலிக்க அனுமதிக்கிறது. |
| `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | அப்ஸ்ட்ரீம் வெளிப்படையான மீட்டமைப்புக் குறிப்பை வழங்காதபோது, விகித வரம்புக்கு உட்படுத்தப்பட்ட கணக்கில் பயன்படுத்தப்படும் கூல்டவுன் (வினாடிகள்). `0` = நிலையான மீளமைப்புக்குப் பதிலாக இயந்திரத்தின் இயல்புநிலை கூல்டவுனைப் பயன்படுத்தவும். |
| `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | முன்பக்கத்தின் "மீட்டமைப்பு நேரம் இல்லாமல் விகித வரம்பு எனக் குறிக்க வேண்டாம்" என்ற விருப்பத்தின் பிரதிபலிப்பு. |
| `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | `429` பிழைகளுக்கான நிலை-வாரியான fallback இயக்கம். `false` ஆக இருக்கும்போது (மற்றும் `OMNIROUTE_ROTATION_ENABLED=true`), `429` இனி கணக்கு சுழற்சியைத் தூண்டாது, மாறாக கிளையன்டுக்குத் திருப்பி அனுப்பப்படும். |
| `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | கணக்கு சுழற்றப்படுவதற்கு முன் `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` இல் தேவைப்படும் `429` பிழைகளின் எண்ணிக்கை. `1` (இயல்புநிலை) உடனடியாகச் சுழற்றுகிறது, வரலாற்று நடத்தையைப் பாதுகாக்கிறது. |
| `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `429` பிழைகள் `OMNIROUTE_ROTATE_429_THRESHOLD` கணக்கில் எண்ணப்படும் நகரும் சாளரம் (வினாடிகள்). |
| `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | `5xx` சர்வர் பிழைகளுக்கான நிலை-வாரியான fallback இயக்கம் (`502` விலக்கப்பட்டுள்ளது, அதற்கு அதன் சொந்த வகுப்பு உள்ளது). `false` ஆக இருக்கும்போது, இந்தப் பிழைகள் இனி கணக்கு சுழற்சியைத் தூண்டாது. |
| `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | கணக்கு சுழற்றப்படுவதற்கு முன் `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` இல் தேவைப்படும் `5xx` பிழைகளின் எண்ணிக்கை. `1` (இயல்புநிலை) உடனடியாகச் சுழற்றுகிறது. |
| `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `OMNIROUTE_ROTATE_500_THRESHOLD` எண்ணிக்கையில் கணக்கிடப்படும் `5xx` பிழைகளுக்கான நகரும் சாளரம் (வினாடிகள்). |
| `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | `502` (bad gateway) பிழைகளுக்கான நிலை-வாரியான மாற்று (fallback) இயக்கம். `false` என்றால், `502` பிழைகள் இனி கணக்கு சுழற்சியை (rotation) தூண்டாது. |
| `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | கணக்கு சுழற்றப்படுவதற்கு முன் `OMNIROUTE_ROTATE_502_WINDOW_SECONDS`-க்குள் தேவைப்படும் `502` பிழைகளின் எண்ணிக்கை. `1` (இயல்புநிலை) உடனடியாகச் சுழற்றுகிறது. |
| `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `OMNIROUTE_ROTATE_502_THRESHOLD` எண்ணிக்கையில் கணக்கிடப்படும் `502` பிழைகளுக்கான நகரும் சாளரம் (வினாடிகள்). |
| `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | தேர்வு-சேர்க்கை (இயல்புநிலை OFF): `true` என்றால், ஒரு சாதாரண `400` (bad request) பிழையும் கணக்கு சுழற்சியைத் தூண்டுகிறது. இது கூடுதல் மட்டுமே — விகித-வரம்பு/கோட்டா உரையைக் கொண்ட `400` இந்தக் கொடியைப் பொருட்படுத்தாமல் இன்னும் மாற்றத்தைத் (fall over) தூண்டும் எஞ்சினின் தற்போதைய நடத்தையை இது ஒருபோதும் தடுக்காது. |
| `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | கணக்கு சுழற்றப்படுவதற்கு முன் `OMNIROUTE_ROTATE_400_WINDOW_SECONDS`-க்குள் தேவைப்படும் `400` பிழைகளின் எண்ணிக்கை (`OMNIROUTE_ROTATE_ON_400=true` ஆக இருக்கும்போது மட்டுமே பரிசீலிக்கப்படும்). |
| `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `OMNIROUTE_ROTATE_400_THRESHOLD` எண்ணிக்கையில் கணக்கிடப்படும் `400` பிழைகளுக்கான நகரும் சாளரம் (வினாடிகள்). |
### Claude Warmup அட்டவணைப்படுத்தி
சம்மதம் பெற்ற Anthropic OAuth இணைப்புகளுக்கான Cron-இயக்க warmup — இதனால் 5-மணிநேர விகித-வரம்புச் சாளரம், முதல் உண்மையான கோரிக்கைக்குப் பதிலாக ஒரு எளிய திட்டமிடப்பட்ட கோரிக்கையால் திறக்கப்படுகிறது (#8848). `OMNIROUTE_WARMUP_ENABLED` உண்மை மதிப்புடன் (truthy) இருந்து, **மற்றும்** அந்த இணைப்பு `settings.claudeWarmup.connections`-இல் குறிக்கப்பட்டிருந்தால் மட்டுமே அட்டவணைப்படுத்தி இயங்கும்; env மாறி இயக்கத்தில் இருந்தாலும், இணைப்புப் பட்டியல் வெற்றதாக இருந்தால் எதுவும் warmup செய்யப்படாது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------ | ------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_WARMUP_ENABLED` | _(அமைக்கப்படவில்லை → அணைக்கப்பட்டது)_ | `src/lib/warmupScheduler.ts` | வார்ம்அப் திட்டமிடிக்கான முதன்மை சுவிட்ச். `1`/`true`/`yes`/`on` ஆகியவற்றை ஏற்கிறது (பேரெழுத்து பாகுபாடின்றி, இடைவெளிகள் நீக்கப்பட்டு). வேறு எந்த மதிப்பும், அல்லது அமைக்கப்படாமல் இருப்பதும், திட்டமிடியை அணைக்கப்பட்ட நிலையிலேயே வைத்திருக்கும். |
| `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | வார்ம்அப் டிக்கிற்கான ஐந்து-புல cron வெளிப்பாடு, ஹோஸ்ட் கடிகாரத்தைப் பொருட்படுத்தாமல் `America/Los_Angeles` (Anthropic இன் மீளமைப்பு நேர மண்டலம்) இல் மதிப்பிடப்படுகிறது. |
| `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | ஒரு டிக்கில் எத்தனை இணைப்புகள் இணையாகச் சூடேற்றப்படுகின்றன. `1`-`10` எனக் கட்டுப்படுத்தப்படுகிறது; எண் அல்லாத மதிப்பு `3` ஐ நோக்கித் திரும்பும். |
| `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | வார்ம்அப் கோரிக்கைக்குப் பயன்படுத்தப்படும் மாதிரி. இயல்புநிலை உங்கள் திட்டத்தில் கிடைக்காதபோது மட்டுமே மேலெழுதவும்; சாளரத்தைத் திறக்கும் மிக மலிவான மாதிரியைத் தேர்ந்தெடுக்கவும். |
### பிரவுசர்-உள்நுழைவு VNC அமர்வுகள் & Data-Dir மாற்றுப் பெயர்
ஊடாடும் பிரவுசர்-உள்நுழைவு நற்சான்று பிடிப்புக்காக (`/api/vnc-session`) பயன்படுத்தப்படும் கொள்கலன் Chromium+VNC, மேலும் பழைய `DATA_DIR` மாற்றுப் பெயர். அனைத்தும் விருப்பமானவை — VNC இயல்புநிலைகள் தொகுக்கப்பட்ட `omniroute-vnc-chromium:local` பிம்பத்தை இலக்காகக் கொண்டுள்ளன, மேலும் தனிப்பயன் கொள்கலன் பிம்பம், போர்ட்கள் அல்லது வாழ்க்கைச்சுழற்சி சரிசெய்தலுக்காக மட்டுமே மேலெழுதப்படுகின்றன.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Chromium+VNC உள்நுழைவு கொள்கலனுக்கான Docker பிம்பக் குறிச்சொல். `docker/vnc-browser/chromium` ஐ உருவாக்கவும் அல்லது இதை ஒரு தனிப்பயன் பிம்பத்தை நோக்கி அமைக்கவும். |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC கொள்கலனைத் தொடங்கப் பயன்படுத்தப்படும் கொள்கலன் ரன்டைம் பைனரி (எ.கா. `podman` என அமைக்கவும்). |
| `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் வெளிப்படுத்தப்படும் VNC/noVNC போர்ட். |
| `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் உள்ள Chrome DevTools Protocol போர்ட். |
| `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் உள்ள Chromium சுயவிவர அடைவுப் பாதை. |
| `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | நிலைத்திருக்கும் பிரவுசர்-உள்நுழைவு சுயவிவரங்களைக் கொண்டுள்ள ஹோஸ்ட் அடைவு. |
| `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 நிமிடங்கள்) | `src/lib/vncSession/manifest.ts` | செயலற்ற VNC அமர்வு அகற்றப்படுவதற்கு முன்னுள்ள செயலற்ற காலக்கெடு (ms). |
| `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 நிமிடங்கள்) | `src/lib/vncSession/manifest.ts` | ஒரு VNC அமர்வின் வாழ்நாளுக்கான கடுமையான உச்சவரம்பு (ms). |
| `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | ஒரே நேரத்தில் இயங்கக்கூடிய VNC அமர்வுகளின் அதிகபட்ச எண்ணிக்கை. |
| `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | கொள்கலன் பிரவுசர் CDP-தயார் நிலையை அடையக் காத்திருக்கும் காலக்கெடு (ms). |
| `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | உள்நுழைவு முடிந்ததும் பிடிக்கப்பட்ட அமர்வு/குக்கீகளைச் சேகரிப்பதற்கான காலக்கெடு (ms). |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | கொள்கலன் Chromium க்கு அனுப்பப்படும் கூடுதல் கட்டளை-வரிக் கொடிகள். |
| `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | இயல்புநிலை பிரிட்ஜுக்குப் பதிலாக VNC உள்நுழைவு கொள்கலன் சேரும் பிரத்யேக Docker நெட்வொர்க் (#12571); இதனால் அருகிலுள்ள பிற கொள்கலன்களால் அதன் CDP பிரிட்ஜ் போர்ட்டை அடைய முடியாது. |
| `VIBEPROXY_DATA_DIR` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/notionThreadSessions.ts` | `DATA_DIR` க்கான **பழைய மாற்றுப் பெயர்**; `DATA_DIR` மற்றும் `OMNIROUTE_DATA_DIR` இரண்டும் அமைக்கப்படாத பிறகு மட்டுமே சரிபார்க்கப்படுகிறது. Notion வெப்-த்ரெட் அமர்வு தற்காலிகச் சேமிப்பை (`/notion-web-thread-sessions.json`) கண்டறிகிறது. |
---
## 26. டெஸ்ட் & E2E ஹார்னஸ்
`scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`,
`scripts/dev/run-ecosystem-tests.mjs`, மற்றும் `scripts/build/uninstall.mjs` ஆகியவற்றால் பயன்படுத்தப்படுகிறது. புரொடக்ஷன் டிப்ளாய்மென்ட்டுகளில் கீழே உள்ள ஒவ்வொரு மதிப்பையும் அன்செட் செய்தே விடவும்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| -------------------------------------- | ------------------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Playwright ரன்னருக்கான E2E பூட்ஸ்ட்ராப் பயன்முறை (`auth`, `fresh`, `reuse`). |
| `OMNIROUTE_E2E_PASSWORD` | `INITIAL_PASSWORD`-இல் திரும்புகிறது | `scripts/dev/run-next-playwright.mjs` | Playwright சூழலில் செலுத்தப்படும் நிர்வாகி கடவுச்சொல். |
| `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright இயக்கங்களின் போது உள்ளூர் ஹெல்த்செக் போலிங்கை முடக்கு. |
| `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | டெஸ்ட்களின் போது OAuth டோக்கன் ஹெல்த்செக் லூப்பை முடக்கு. |
| `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(அமைக்கப்படவில்லை)_ | `src/lib/tokenHealthCheck.ts` | முன்னெச்சரிக்கை டோக்கன்-ரீஃப்ரெஷ் ஸ்வீப்பிலிருந்து விலக்கப்பட்ட கமா-பிரிக்கப்பட்ட புரோவைடர்கள் (எ.கா. `codex,openai`). ஹெல்த்செக்கை முழுவதுமாக முடக்குவதற்கான இலக்கு மாற்று — குறுகிய-TTL புரோவைடர்கள் ரீஃப்ரெஷ் செய்யத் தொடர, கேஸ்கேட் புரோவைடர்கள் ரியாக்டிவ்-மட்டும் நிலையில் இருக்கும். |
| `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright stdout-இல் ஹெல்த்செக் சத்தத்தை அமைதியாக்கு. |
| `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Playwright தொடங்குவதற்கு முன் Next.js புரொடக்ஷன் பில்டை தவிர்க்க (CI தேர்வுமுறை). |
| `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | OmniRoute அன்இன்ஸ்டால் ஹூக்கை தவிர்க்க (`node_modules`-ஐ மாற்றமின்றி வைத்திருக்க CI ஆல் பயன்படுத்தப்படுகிறது). |
| `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | ஈகோசிஸ்டம்/புரோட்டோகால் டெஸ்ட்களை இயக்குவதற்கு முன் சர்வர் ஆரோக்கியமாகும் வரை காத்திருக்கும் நேரம் (ms). |
| `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | பேக்கேஜ் செய்யப்பட்ட ஆப் வழங்குவதாக Electron ஸ்மோக் ஹார்னஸ் எதிர்பார்க்கும் URL. |
| `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | ஸ்மோக் ஹார்னஸ் கைவிடுவதற்கு முன்னால் மொத்த டைம்அவுட் (ms). |
| `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | பக்கம் ஏற்றப்பட்ட பிறகு நிலைபெறும் சாளரம் (ms). |
| `ELECTRON_SMOKE_APP_EXECUTABLE` | _(தானியங்கி)_ | `scripts/dev/smoke-electron-packaged.mjs` | பேக்கேஜ் செய்யப்பட்ட Electron எக்ஸிகியூட்டபிளுக்கான வெளிப்படை பாதை. |
| `ELECTRON_SMOKE_DATA_DIR` | _(tmpdir)_ | `scripts/dev/smoke-electron-packaged.mjs` | Electron ஸ்மோக் ரன்னுக்கான டேட்டா டைரக்டரி. |
| `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | ரன் முடிந்த பிறகு smoke தரவு கோப்பகத்தைப் பாதுகாக்க `1` என அமைக்கவும். |
| `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | ரன் போது Electron லாக்களை stdout-க்கு ஸ்ட்ரீம் செய்ய `1` என அமைக்கவும். |
| `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: அதே தரவு கோப்பகத்தில் மீண்டும் தொடங்கி, இரண்டாவது தொடக்கம் நேட்டிவ் SQLite டிரைவரைத் தேர்ந்தெடுக்கிறது என்பதை உறுதிப்படுத்தவும். |
| `CLI_DEVIN_BIN` | _(PATH தேடல்)_ | `open-sse/executors/devin-cli.ts` | Devin CLI பைனரி பாதையை மேலெழுதவும். |
### டாக்ஸ் மொழிபெயர்ப்பு பைப்லைன்
`scripts/i18n/run-translation.mjs` ஆல் பயன்படுத்தப்படுகிறது (`npm run i18n:run` கட்டளை).
ஆறு மாறிகளும் இயல்பாக அமைக்கப்படாமல் உள்ளன — டாக்ஸ் மொழிபெயர்ப்பாளரை
இயக்கக்கூடிய இயந்திரங்களில் மட்டும் `.env`-இல் அவற்றை அமைக்கவும்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------------------- | -------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_TRANSLATION_API_URL` | _(அமைக்கப்படவில்லை)_ | `scripts/i18n/run-translation.mjs` | மொழிபெயர்ப்பு பேக்கெண்டிற்கான OpenAI-இணக்கமான அடிப்படை URL. |
| `OMNIROUTE_TRANSLATION_API_KEY` | _(அமைக்கப்படவில்லை)_ | `scripts/i18n/run-translation.mjs` | மொழிபெயர்ப்பு பேக்கெண்டிற்கான Bearer டோக்கன் (ஒருபோதும் லாக் செய்யப்படாது). |
| `OMNIROUTE_TRANSLATION_MODEL` | _(அமைக்கப்படவில்லை)_ | `scripts/i18n/run-translation.mjs` | மாடல் ஐடி, எ.கா. `gpt-4o-mini` அல்லது `cx/gpt-5.4-mini`. |
| `OMNIROUTE_TRANSLATION_FALLBACK_MODELS` | _(அமைக்கப்படவில்லை)_ | `scripts/i18n/lib/translate-backend.mjs` | முதன்மை மாடல் தோல்வியடையும் போது (429 quota, 401/402, 5xx, timeout, network) வரிசையாக முயற்சிக்கப்படும் விருப்பக் கமா-பிரிக்கப்பட்ட மாடல் சங்கிலி; தவறான வடிவமைப்புடைய கோரிக்கை (400/413/422) வேறு இடத்தில் மீண்டும் முயற்சிக்கப்படாது. |
| `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | ஒவ்வொரு கோரிக்கைக்குமான டைம்அவுட், மில்லிவினாடிகளில். |
| `OMNIROUTE_TRANSLATION_REASONING_EFFORT` | _(அமைக்கப்படவில்லை)_ | `scripts/i18n/lib/translate-backend.mjs` | விருப்ப ரீசனிங் கட்டுப்பாடு, அமைக்கப்பட்டிருந்தால் பேக்கெண்டிற்கு அப்படியே அனுப்பப்படும். |
| `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | பல கோப்புகள் / லோகேல்கள் மீது இயக்கும் போது இணையான மொழிபெயர்ப்பு கோரிக்கைகள். |
---
## 27. Radar ஊட்டம் (சுய-ஹோஸ்டிங்)
RADAR_ENABLED அம்சக் கொடியால் கட்டுப்படுத்தப்படும் விருப்பச் சேர்க்கை (இயல்பாக முடக்கப்பட்டுள்ளது — இது Settings/DB வழியாக மாற்றப்படும் அம்சக் கொடி, env var அல்ல; பார்க்கவும்
[docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)).
கீழே உள்ள முதல் நான்கு மாறிகள், சுயமாக ஹோஸ்ட் செய்யப்பட்ட அல்லது fork செய்யப்பட்ட ஊட்டம் மற்றும்
ஆதரவாளர்-விசை செயல்முறைகளுக்கான விருப்ப மேலெழுதல்களாகும். ஐந்தாவது மாறியான `RADAR_ADMIN_URL`, உரிமையாளரின்
தனிப்பட்ட செயல்பாட்டுப் பலகைக்கான இயல்புநிலை இல்லாத தனி இணைப்பாகும். முழுமையான
தொகுதிக்கான ஆவணம் மற்றும் அதன்
[தொடக்கம் முதல் முடிவு வரையிலான செயல்படுத்தல் மற்றும் வழிகாட்டப்பட்ட அமைவு வரிசை](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup) ஆகியவற்றுக்கு [docs/frameworks/RADAR.md](../frameworks/RADAR.md)-ஐப் பார்க்கவும்.
பொதுவான Home/Changelog அறிவிப்பு வாசிப்பான் ஓர் சூழல்
மாறியால் உள்ளமைக்கப்படுவதில்லை; மேலும், அது RADAR_ENABLED அம்சக் கொடியைச் சார்ந்ததல்ல. அது
`src/shared/utils/releaseNotes.ts`-இல் அறிவிக்கப்பட்டுள்ள பொது களஞ்சியத்தின்
`news.json` URL-ஐ GET மூலம் மட்டுமே வாசிக்கிறது; நிராகரிப்பு ID-கள் உலாவியின் உள்ளகச் சேமிப்பகத்திலேயே இருக்கும்.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | தனித்தனியாகக் கையொப்பமிடப்பட்ட பட்டியல், பரிந்துரைகள், ஆதரவாளர்-சலுகைகள் மற்றும் Intel ஊட்டங்கள் பகிர்ந்து கொள்ளும் அடிப்படை URL. சுயமாக ஹோஸ்ட் செய்யப்பட்ட அல்லது fork செய்யப்பட்ட சேவையைச் சுட்டிக்காட்ட இதை மேலெழுதவும். |
| `RADAR_FEED_PUBKEY` | _(நிலைப்படுத்தப்பட்ட இயல்புநிலை விசை)_ | `src/lib/radar/pinnedKeys.ts` | தனிப்பயன் ஊட்டத்திலிருந்து வரும் ஊட்டக் கையொப்பங்களைச் சரிபார்க்கப் பயன்படுத்தப்படும் Ed25519 பொது விசை (base64-DER SPKI அல்லது PEM). |
| `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | "நான் ஒரு பங்களிப்பாளர்" என்ற dashboard பொத்தான் திறக்கும் URL (GitHub OAuth ஆதரவாளர்-விசை கோரல் செயல்முறை). |
| `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | "திட்டத்தை ஆதரிக்கவும்" என்ற dashboard பொத்தான் திறக்கும் URL (கட்டணம்/திட்டங்கள் பக்கம்). |
| `RADAR_ADMIN_URL` | _(அமைக்கப்படவில்லை)_ | `src/lib/radar/links.ts` | உரிமையாளருக்கு மட்டுமான தனிப்பட்ட செயல்பாட்டுப் பலகை இணைப்பு. HTTP loopback SSH forward தவிர மற்றவற்றுக்கு HTTPS அவசியம்; அமைக்கப்படாத அல்லது செல்லாத மதிப்புகள் வழிசெலுத்தல் உருப்படியை உருவாக்காது. |
---
## தணிக்கை: அகற்றப்பட்ட / செயலற்ற மாறிகள்
பின்வரும் மாறிகள் `.env.example`-இன் முந்தைய பதிப்புகளில் இடம்பெற்றிருந்தன; ஆனால் தற்போதைய codebase-இல் அவற்றுக்கு **runtime குறிப்புகள் எதுவும் இல்லை**. அவை அகற்றப்பட்டுள்ளன:
| மாறி | காரணம் |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `STORAGE_DRIVER=sqlite` | எந்த மூலக் கோப்பாலும் வாசிக்கப்படுவதில்லை. SQLite மட்டுமே ஆதரிக்கப்படும் இயக்கி — தேர்வு தேவையில்லை. |
| `INSTANCE_NAME=omniroute` | பழைய ஆவணங்கள்/env வார்ப்புருக்களில் உள்ளது, ஆனால் இயக்கநேரத்தில் பயன்படுத்தப்படுவதில்லை. எதிர்கால பல-நிகழ்வு அம்சத்தில் மீண்டும் வரக்கூடும். |
| `SQLITE_MAX_SIZE_MB=2048` | மூலக் குறியீட்டில் குறிப்பிடப்படவில்லை. தரவுத்தள அளவு செயற்கையாக வரம்பிடப்படவில்லை. |
| `SQLITE_CLEAN_LEGACY_FILES=true` | மூலக் குறியீட்டில் குறிப்பிடப்படவில்லை. பழைய கோப்புகளைச் சுத்தப்படுத்தும் செயல்பாடு அகற்றப்பட்டிருக்கலாம். |
| `CLI_ROO_BIN` | `src/shared/services/cliRuntime.ts`-இல் பதிவுசெய்யப்படவில்லை. |
| `CLI_KIMI_CODING_BIN` | `src/shared/services/cliRuntime.ts`-இல் பதிவுசெய்யப்படவில்லை (Kimi Coding ஒரு CLI பைனரியை அல்லாமல் OAuth-ஐப் பயன்படுத்துகிறது). |
| `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | மூலக் குறியீட்டில் எங்கும் குறிப்பிடப்படவில்லை. |
| `CEREBRAS_API_KEY` / `COHERE_API_KEY` / `FIREWORKS_API_KEY` / `GROQ_API_KEY` / `MISTRAL_API_KEY` / `NEBIUS_API_KEY` / `PERPLEXITY_API_KEY` / `TOGETHER_API_KEY` / `XAI_API_KEY` | v3.8.0-இல் அகற்றப்பட்டது. இயக்கநேரம் இனி இந்த env மாறிகளை வாசிப்பதில்லை — நற்சான்றுகள் Dashboard / `data/provider-credentials.json` / மறைகுறியாக்கப்பட்ட DB ஆகியவற்றிலிருந்து வருகின்றன. |
| `CURSOR_PROTOBUF_DEBUG` | v3.8.0-இல் அகற்றப்பட்டது. Cursor இயக்கி `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` ஆகியவற்றைப் பயன்படுத்துகிறது (§22-ஐப் பார்க்கவும்). |
| `CLI_COMPAT_KIRO` | v3.8.0-இல் அகற்றப்பட்டது. Kiro, `CLI_COMPAT_OMITTED_PROVIDER_IDS`-இல் உள்ளது — அதன் மாற்றிக்கு எந்த விளைவும் இல்லை. |
| `QIANFAN_API_KEY` | v3.8.0-இல் பயன்படுத்தப்படாத பிற வழங்குநர் API விசை நிரப்பிடங்களுடன் சேர்த்து அகற்றப்பட்டது. |
### இயல்புநிலை மதிப்புத் திருத்தங்கள்
| மாறி | பழைய `.env.example` மதிப்பு | குறியீட்டின் உண்மையான இயல்புநிலை | திருத்தம் |
| ------------------------- | --------------------------- | -------------------------------- | --------------------------------------------------------------------------------- |
| `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ தவறாக வழிநடத்தும் மதிப்பு அகற்றப்பட்டது; `7` இயல்புநிலையாக ஆவணப்படுத்தப்பட்டது |
| `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ தவறாக வழிநடத்தும் மதிப்பு அகற்றப்பட்டது; `7` இயல்புநிலையாக ஆவணப்படுத்தப்பட்டது |
### OpenCode கட்டமைப்பு மறுஉருவாக்கம் (தற்காலிகக் கருவிகள்)
இயங்கிக்கொண்டிருக்கும் OmniRoute நிகழ்விலிருந்து பெறப்பட்ட துல்லியமான `limit.context`
மற்றும் `limit.output` மதிப்புகளுடன் ஒரு `opencode.json`-ஐ மறுஉருவாக்குவதற்கு
`scripts/ad-hoc/regen-opencode-config.ts` இதைப் பயன்படுத்துகிறது. இயல்பான செயல்பாட்டிற்கு இவற்றில்
எதுவும் தேவையில்லை — இந்த ஸ்கிரிப்ட் உருவாக்குநர் கருவிக்காக மட்டுமே உள்ளது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------ | ------------------------ | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | `/v1/models` குறித்து வினவுவதற்கான OmniRoute நிகழ்வின் அடிப்படை URL. |
| `OMNIROUTE_KEY` | _(அமைக்கப்படவில்லை)_ | `scripts/ad-hoc/regen-opencode-config.ts` | OmniRoute `/v1/models` முனைப்புள்ளியுடன் அங்கீகரிப்பதற்கான API விசை. அமைக்கப்படாதபோது `OPENCODE_API_KEY` பயன்படுத்தப்படும். |
| `OPENCODE_API_KEY` | _(அமைக்கப்படவில்லை)_ | `scripts/ad-hoc/regen-opencode-config.ts` | மீண்டும் உருவாக்கப்பட்ட `opencode.json`-இல் எழுதப்படும் OpenCode-பாணி API விசை (`sk-...`). அமைக்கப்படாதபோது `OMNIROUTE_KEY` பயன்படுத்தப்படும். |
### சுருக்கத்திற்கான ஆஃப்லைன் மதிப்பீட்டுச் சட்டகம் (தற்காலிகக் கருவிகள்)
ஆஃப்லைன் சுருக்க மதிப்பீட்டு CLI ஆன `scripts/compression-eval/index.ts` மூலம் பயன்படுத்தப்படுகிறது.
இயல்பான செயல்பாட்டிற்கு இது தேவையில்லை — உருவாக்குநர் கருவிகளுக்கு மட்டுமே.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ---------------------------- | ---------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (காலியானது) | `scripts/compression-eval/index.ts` | ஆஃப்லைன் சுருக்க மதிப்பீட்டு CLI மூலம் சோதிக்கப்படும் வழங்குநருக்காக இயக்குநர் வழங்கும் JSON சான்றுகள் (`JSON.parse` மூலம் பகுக்கப்படும்). உலர் இயக்கத்திற்கு இதை அமைக்காமல் விடவும். |
### VNC உலாவி அமர்வுகள்
உலாவி-தானியக்க வழங்குநர்களுக்கான Docker-அடிப்படையிலான திரையற்ற Chromium அமர்வுகளை உள்ளமைக்க `src/lib/vncSession/manifest.ts` மூலம் பயன்படுத்தப்படுகிறது. அனைத்தும் விருப்பத்திற்குரியவை — இயல்புநிலைகள் கீழே காட்டப்பட்டுள்ளன.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| ------------------------------------- | ------------------------------ | ------------------------------------------- | -------------------------------------------------------------------------------------- |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC கொள்கலன்களைத் தொடங்கப் பயன்படுத்தப்படும் Docker இருமக் கோப்பிற்கான பாதை. |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | VNC Chromium கொள்கலனுக்கான Docker படிமம். |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(உள்ளமைந்த கொடிகள்)_ | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் உள்ள உலாவிக்கு அனுப்பப்படும் கூடுதல் Chromium CLI அளவுருக்கள். |
| `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் உள்ள VNC துறை. |
| `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் உள்ள Chrome DevTools Protocol துறை. |
| `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | கொள்கலனுக்குள் உள்ள சுயவிவரக் கோப்பகம். |
| `OMNIROUTE_VNC_PROFILE_DIR` | _(அமைக்கப்படவில்லை)_ | `src/lib/vncSession/manifest.ts` | நிலையான உலாவிச் சுயவிவரங்களுக்கான புரவலன்-பக்க கோப்பகம். |
| `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | VNC அமர்வு அகற்றப்படுவதற்கு முந்தைய செயலற்ற காலக்கெடு (ms). |
| `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | அதிகபட்ச அமர்வு கால அளவு (ms). |
| `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | ஒரே நேரத்தில் இயங்கக்கூடிய VNC அமர்வுகளின் அதிகபட்ச எண்ணிக்கை. |
| `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | உலாவி தயார்நிலைக்கான காலக்கெடு (ms). |
| `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | அகற்றல்/தூய்மைப்படுத்தலுக்கான காலக்கெடு (ms). |
| `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | இயல்புநிலைப் பாலத்திலிருந்து விலகி, கொள்கலன் இணையும் பிரத்யேக Docker பிணையம் (#12571). |
| `VIBEPROXY_DATA_DIR` | _(அமைக்கப்படவில்லை)_ | `open-sse/services/notionThreadSessions.ts` | Notion இழை அமர்வு நிலைத்தன்மைக்கான கோப்பகம். |
### உள் சேவை அங்கீகாரம்
| மாறி | இயல்புநிலை | விளக்கம் |
| --------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | மேலாண்மைத் தள சேவைகளுக்கிடையேயான அங்கீகாரத்திற்கான நேரடி டோக்கன். |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | உள் சேவை டோக்கனைக் கொண்ட கோப்பிற்கான பாதை (கொள்கலன்களில் விரும்பத்தக்கது; நேரடி மாறியை மீறுகிறது). |
### OpenRouter வழங்குநர் புள்ளிவிவரங்கள்
| மாறி | இயல்புநிலை | விளக்கம் |
| ----------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- |
| `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | பட்டியல் செறிவூட்டலுக்கான ஒவ்வொரு வழங்குநரின் OpenRouter புள்ளிவிவரங்களைப் பெறுவதைத் தவிர்க்க `false` என அமைக்கவும். |
| `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | பெறப்பட்ட OpenRouter வழங்குநர் புள்ளிவிவரங்களுக்கான தற்காலிகச் சேமிப்பு TTL (ms). |
### உட்பொதிக்கப்பட்ட Redis பிணைப்பு
| மாறி | இயல்புநிலை | விளக்கம் |
| --------------------------- | ----------- | ---------------------------------------------------------------------------------- |
| `REDIS_BIND_HOST` | `127.0.0.1` | உட்பொதிக்கப்பட்ட Redis சேவைக்கான பிணைப்பு முகவரி. |
| `REDIS_PORT` | `6379` | உட்பொதிக்கப்பட்ட Redis சேவைக்கான போர்ட். |
| `OMNIROUTE_REDIS_BIND_HOST` | – | உட்பொதிக்கப்பட்ட Redis பிணைப்பு முகவரிக்கான OmniRoute வரம்பிற்குட்பட்ட மேலெழுதுகை. |
---
## 24. Release v3.8.50 சேர்ப்புகள்
இந்த அமைப்புகள் முந்தைய சூழல்-ஒப்பந்த ஸ்னாப்ஷாட்டிற்குப் பிறகு அறிமுகப்படுத்தப்பட்டன.
| மாறி | இயல்புநிலை | மூல கோப்பு | விளக்கம் |
| ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | மீண்டும் முயற்றிக்கக்கூடிய `503` பிழைக்கு முன் ஒரு கனமான அரட்டை அனுமதி இடத்திற்கான அதிகபட்ச காத்திருப்பு; உடனடி `503` பிழைக்குப் பதிலாக குறுகிய வரையறுக்கப்பட்ட காத்திருப்பு ஏஜென்ட் வெடிப்புகளை வரிசைப்படுத்துகிறது. `0` உடனடி நிராகரிப்பை மீட்டெடுக்கும். |
| `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | அனுமதி காத்திருப்புக்கான வரிசைப்படுத்தப்பட்ட பைட்டுகள் பட்ஜெட்: காத்திருப்பு heap-ஐ பெருக்காதவாறு செயல்முறை முழுவதும் நிறுத்தப்பட்டுள்ள மொத்த தற்காலிகமாக சேமிக்கப்பட்ட body பைட்டுகளை வரம்புக்குட்படுத்துகிறது (#4380). பட்ஜெட்டை மீறிய காத்திருப்புகள் உடனடியாக மீண்டும் முயற்றிக்கக்கூடிய `503` பிழையைப் பெறுகின்றன. |
| `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 வி) | `src/shared/middleware/chatBodyAdmission.ts` | #10110 முதல் கைவிடப்பட்ட no-op: ஒரு செயல்முறை-தழுவிய பட்ஜெட்டின் பொருட்டு அமர்வு-தலா அனுமதி வழித்தடங்கள் நீக்கப்பட்டன. உள்ளமைவு இணக்கத்திற்காக ஏற்றுக்கொள்ளப்படுகிறது; புறக்கணிக்கப்படுகிறது. |
| `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | #10110 முதல் கைவிடப்பட்ட no-op: ஒரு செயல்முறை-தழுவிய பட்ஜெட்டின் பொருட்டு அமர்வு-தலா அனுமதி வழித்தடங்கள் நீக்கப்பட்டன. உள்ளமைவு இணக்கத்திற்காக ஏற்றுக்கொள்ளப்படுகிறது; புறக்கணிக்கப்படுகிறது. |
| `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (அணை) | `open-sse/services/admission/runtime.ts` | தகவமைப்பு இயக்கநேர மெய்நிகர் அனுமதி வழித்தடங்கள் (#9654): tenant-தலா தகவமைப்பு வாயிலுக்கான (அமைப்பு 2) முதன்மை சுவிட்ச். மேலே உள்ள கைவிடப்பட்ட இணைப்பு-தலா வழித்தட மாறிகளிலிருந்து (TTL_MS / MAX_SESSIONS, #10110 முதல் no-ops) வேறுபட்டது. அதே பெயரில் உள்ள டாஷ்போர்டு அம்சக் கொடி; env மாறி டாஷ்போர்டு மேலெழுதலை வெல்லும்; மறுதொடக்கம் தேவை. |
| `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | வரிசையிலுள்ள இயக்கத்தைத் தொடங்குவதற்கு முன் ஒரு run-now அழைப்பு நடைபெற்றுக்கொண்டிருக்கும் பணிக்காக எவ்வளவு நேரம் காத்திருக்கிறது என்பதை வரம்புக்குட்படுத்துகிறது. |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | இயக்கப்பட்டது | `open-sse/services/adobeFireflySession.ts` | கணக்கு-நோக்கமுடைய Chrome CDP அமர்வுகள் மூலம் IMS மற்றும் உலாவி-அபாய நிலையை புதிதாக வைத்திருக்கும்; முடக்க `0` என அமைக்கவும். |
| `ADOBE_FIREFLY_SESSION_DISK` | இயக்கப்பட்டது | `open-sse/services/adobeFireflySession.ts` | சரிசெய்யப்பட்ட Adobe அமர்வுகளை `DATA_DIR`-ன் கீழ் நிலைத்தன்மைப்படுத்துகிறது; நினைவகம்-மட்டும் நிலைக்கு `0` என அமைக்கவும். |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly உருவாக்கச் சமர்ப்பிப்புகளுக்கு இடையேயான குறைந்தபட்ச இடைவெளி. |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | ஒவ்வொரு மூன்றாவது வெற்றிகரமான Adobe சமர்ப்பிப்பிற்குப் பிறகு கூடுதல் அமைதிக் காலம். |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | பிழைத்திருத்தம்-மட்டும் உண்மையான headless பயன்முறை; Adobe colligo பொதுவாக அதன் விளைவாக உருவாகும் அபாய அமர்வை நிராகரிக்கிறது. |
| `CHROME_PATH` | தானியங்கு கண்டறிதல் | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | இயங்குதள தானியங்கு கண்டறிதல் போதாதபோது உலாவி-இயக்கப்படும் executors ஆல் பயன்படுத்தப்படும் விருப்பமான முழுமையான Chrome executable. |
| `TELEGRAM_BOT_TOKEN` | _(அமைக்கப்படவில்லை)_ | `src/lib/telegram/config.ts` | உள்வரும் webhook-ஐ இயக்கி Mini App `initData`-ஐ கையொப்பமிடும் BotFather டோக்கன். |
| `TELEGRAM_WEBHOOK_SECRET` | _(அமைக்கப்படவில்லை)_ | `src/lib/telegram/config.ts` | `setWebhook` வழியாகப் பதிவு செய்யப்பட்டு, ஒவ்வொரு webhook டெலிவரியிலும் `X-Telegram-Bot-Api-Secret-Token` தலைப்புக்கு எதிராகச் சரிபார்க்கப்படும் பகிரப்பட்ட ரகசியம். webhook பாதைக்குத் தேவை; அமைக்கப்படாவிட்டால் webhook டெலிவரிகள் 503 உடன் நிராகரிக்கப்படும். |
| `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Telegram அரட்டைப் பதில்களுக்குப் பயன்படுத்தப்படும் மாதிரி. |
| `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | ப்ராக்சிகள் அல்லது சுய-ஹோஸ்ட் செய்யப்பட்ட Bot API சர்வர்களுக்கான Bot API அடிப்படை URL மேலெழுதல். |
| `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | வெளிச்செல்லும் Bot API அழைப்புகளுக்கான மில்லிவினாடிகளில் காலக்கெடு. |
| `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (இயக்கப்பட்டது) | `scripts/build/optionalPackStaging.mjs` | Electron standalone மரத்திற்கான விருப்ப ML/உலாவி பேக்குகளை நிலைநிறுத்தும்போது `.tar.gz` tarballs வெளியிடுவதைத் தவிர்க்க `0` என அமைக்கவும் (பேக் அடைவுகள் மற்றும் `optional-packs.index.json` இன்னும் உருவாக்கப்படுகின்றன). ஆர்டிஃபாக்ட் பதிவேற்ற அளவைக் குறைக்க டெஸ்க்டாப் வெளியீட்டுப் பணிப்பாய்வால் பயன்படுத்தப்படுகிறது. |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | xAI சந்தாப் பட வழிகளின் பதிவை இயக்குகிறது; API-key படப் பாதை மாறாமல் இருப்பதற்காக இயல்பாக முடக்கப்பட்டுள்ளது. |
| `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | `429` பதிலில் பயன்படுத்தக்கூடிய `Retry-After` குறிப்பு இல்லாதபோது விசை-தலா கூல்டவுன் (மில்லிவினாடிகளில்). |
| `OMNIROUTE_ESTIMATOR_CALIBRATION` | இயக்கப்பட்டது | `open-sse/services/estimatorCalibration.ts` | நினைவக-உள் மதிப்பீட்டாளர் அளவுத்திருத்தப் பதிவு மற்றும் பயன்பாட்டை முடக்க `off`, `0`, அல்லது `false` என அமைக்கவும். |
| `NEXT_MANUAL_SIG_HANDLE` | _(உள்ளக)_ | `scripts/dev/standalone-server-ws.mjs` | உள்ளக standalone-சர்வர் சிக்னல்-ஹேண்ட்லர் மேலெழுதல்; பொதுவாக ஆபரேட்டர்களால் கட்டமைக்கப்படாமல் லாஞ்சரால் அமைக்கப்பட்டு அழிக்கப்படுகிறது. |
### ChatGPT Web (Codex)
headless உலாவி மற்றும் வெளிச்செல்லும் கருவி-சுரங்கத்திற்கான ஒட்டுமொத்த இயல்புநிலைகள். டாஷ்போர்டில் அமைக்கப்பட்ட இணைப்பு மதிப்புகளுக்கு முன்னுரிமை உள்ளது.
| மாறி | இயல்புநிலை | மூலக் கோப்பு | விளக்கம் |
| --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHATGPT_WEB_CODEX_CHROME_PATH` | _(தானியங்கு கண்டறிதல்)_ | `open-sse/executors/chatgpt-web-codex.ts` | npm, systemd மற்றும் PM2 இயக்கத்திற்கான வெளிப்படையான Chrome-/Chromium பாதை. |
| `CHROME_PATH` | _(தானியங்கு கண்டறிதல்)_ | `open-sse/executors/chatgpt-web-codex.ts` | வெளிப்படையான Chrome-/Chromium பாதைக்கான பொதுவான fallback. |
| `CHATGPT_WEB_CODEX_CDP_URL` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/chatgpt-web-codex.ts` | உள் CDP முனைப்புள்ளி; Docker போர்ட் `9223`-இல் உள்ள sidecar-ஐப் பயன்படுத்துகிறது. |
| `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _(அமைக்கப்படவில்லை — அணைப்பு)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | ஒவ்வொரு டர்னிலும் தனிமைப்படுத்தப்பட்ட கான்டெக்ஸ்டுக்குப் பதிலாக, வெளிப்புறமாக நிர்வகிக்கப்படும் உள்நுழைந்த உலாவி சுயவிவரத்தின் ஏற்கனவே உள்ள ChatGPT பக்கத்தை மீண்டும் பயன்படுத்த `1` என அமைக்கவும் (CDP முனைப்புள்ளி கட்டமைக்கப்பட்டிருக்கும் போது); ஒரே நேரத்தில் இயங்கும் ChatGPT டேப்களையும் 1 ஆக வரம்பிடுகிறது. இயல்பாக அணைக்கப்பட்டுள்ளது. [நிலையான CDP சுயவிவரம்](../guides/CHATGPT-WEB-PERSISTENT-CDP.md) ஐப் பார்க்கவும். |
| `CDP_PROXY_TOKEN` | _(அமைக்கப்படவில்லை)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | அமைக்கப்பட்டிருந்தால், CDP ப்ராக்ஸி sidecar-க்கு அனுப்பப்படும் ஒவ்வொரு கோரிக்கையும் `X-Omni-Cdp-Token` ஹெடரில் இந்த மதிப்பை அனுப்ப வேண்டும் (#13679). மதிப்பு இல்லையெனில், ப்ராக்ஸி அங்கீகரிப்பின்றி அனுப்பிவைக்கிறது — அப்போது `chatgpt-web-codex-net` Compose நெட்வொர்க்கின் நெட்வொர்க் தனிமைப்படுத்தல் மட்டுமே பாதுகாப்பு அளிக்கிறது. `openssl rand -hex 32` மூலம் உருவாக்கவும். |
| `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/chatgpt-web-codex.ts` | உள்ளக Codex டூல் ரவுண்டுகளுக்கான உலகளாவிய OpenAI டன்னல் ID. |
| `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(அமைக்கப்படவில்லை)_ | `open-sse/executors/chatgpt-web-codex.ts` | உலகளாவிய டன்னல் ரன்டைம் விசை; ஒருபோதும் லாக்களில் வெளியிட வேண்டாம். |
| `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | MCP பிரிட்ஜுக்கான புதிதாக உருவாக்கப்பட்ட ChatGPT கஸ்டம் கனெக்டரின் சரியான பெயர். |
| `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | பிரவுசர், புரோக்கர் மற்றும் டன்னல் நிலைக்கான அர்ப்பணிக்கப்பட்ட டைரக்டரி. |
| `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | `1` எனில், ஒவ்வொரு செக்பாயிண்டிலும் பிரவுசர் டயக்னாஸ்டிக் படங்கள் பதிவு செய்யப்படும். |
| `CODEX_CHATGPT_WEB_LAUNCHER` | _(அமைக்கப்படவில்லை)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | நிரந்தர லாஞ்சர் பைனரிக்கான விருப்ப முழு பாதை. |
| `CODEX_CHATGPT_WEB_BUN` | _(தானியங்கு கண்டறிதல்)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Bun ரன்டைம் பைனரிக்கான விருப்ப முழு பாதை. |
| `CODEX_WEB_GPT_BUN` | _(அமைக்கப்படவில்லை)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | `CODEX_CHATGPT_WEB_BUN`-க்கான பழைய (legacy) fallback; புதிய அமைப்புகள் அதிகாரப்பூர்வ பெயரைப் பயன்படுத்துகின்றன. |
---
## OmniConductor பிரிட்ஜ்
OmniConductor ஹப் பணிகளை உள்ளூர் A2A TaskManager (`src/lib/conductor/`) உள் பிரதிபலிக்கும் நீண்டகால SSE நுகர்வோர். விருப்பத் தேர்வு — `CONDUCTOR_HUB_URL` அமைக்கப்பட்டிருந்தால் மட்டுமே பிரிட்ஜ் தொடங்கும். சர்வர் பக்கம் மட்டும்: ஹப் டோக்கன் உலாவியை ஒருபோதும் அடையக்கூடாது.
| மாறி | இயல்புநிலை | மூல கோப்பு | விளக்கம் |
| ------------------------------ | ----------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `CONDUCTOR_HUB_URL` | _(காலியாக)_ | `src/lib/conductor/boot.ts` | OmniConductor ஹப்பின் அடிப்படை URL (எ.கா. `http://127.0.0.1:7910`). அமைக்கப்படாவிட்டால் = பிரிட்ஜ் முடக்கப்படும். |
| `CONDUCTOR_HUB_TOKEN` | _(காலியாக)_ | `src/lib/conductor/boot.ts` | SSE ஃபீடுக்கான ஹப் சான்று — ஹப்பில் `spokesperson` வகை பியரை உருவாக்கவும் (`POST /v1/peers`, நிர்வாகி). |
| `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(காலியாக)_ | `src/lib/conductor/hubProxy.ts` | உள்வரும் A2A→ஹப் பணி ஒப்படைப்புக்கான சான்று (`POST /v1/tasks`); அமைக்கப்படாவிட்டால் `CONDUCTOR_HUB_TOKEN`-க்குத் திரும்பும். |
| `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | டாஷ்போர்டு சாட் ப்ராக்ஸியின் (`/api/conductor/ask`) பின்னால் உள்ள spokesperson (Faro) சேவையின் அடிப்படை URL. |
### கோட்டா-அறிவு அட்டவணைப்படுத்தல்
கோரிக்கைக்கு முந்தைய டோக்கன்-பட்ஜெட் சரிபார்ப்புகளுக்காக `open-sse/services/combo.ts` மற்றும் `src/lib/quota/quotaScheduler.ts` ஆல் பயன்படுத்தப்படுகிறது. விருப்பத் தேர்வு — அமைக்கப்படாவிட்டால் இயல்புநிலை ரூட்டிங் நடத்தை மாறாது.
| மாறி | இயல்புநிலை | மூல கோப்பு | விளக்கம் |
| ---------------------------------- | --------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | `1` ஆக இருக்கும்போது, அனுப்புவதற்கு முன் மதிப்பிடப்பட்ட கோரிக்கை செலவை ஏற்க முடியாத சாளர-வாரியான டோக்கன் பட்ஜெட் (`rateLimitOverrides.tpm`, அட்டவணை `provider_quota_state`) கொண்ட இணைப்புகளை தவிர்க்கவும். பட்ஜெட் எதுவும் கட்டமைக்கப்படாத போது fail-open ஆக செயல்படும். |
| `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(இயக்கத்தில்)_ | `open-sse/services/estimatorCalibration.ts` | கான்டெக்ஸ்ட்-கார்டு டோக்கன் மதிப்பீட்டாளரின் கருத்து அளவுத்திருத்தம் (#14931): ஒவ்வொரு (வழங்குநர், மாடல், கருவிகள் உள்ளன) இணைக்கும் `usage.prompt_tokens` / மதிப்பீட்டின் EMA, 0.15–2.0 வரம்புக்குள் கட்டுப்படுத்தப்பட்டது, நினைவகத்தில் மட்டும். `off`, `0` அல்லது `false` பதிவு செய்வதையும் பயன்படுத்துவதையும் முடக்கும். |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | `xai-oauth` (`xao`) மற்றும் `grok-cli` பட ரூட்டுகளை பதிவு செய்கிறது. அதே பெயரைக் கொண்ட டாஷ்போர்டு அம்சக் கொடி; DB மேலெழுதல் இந்த மதிப்பை விட முன்னுரிமை பெறும். |