# 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) · 🇳🇱 [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) · 🇮🇳 [ta](../../../ta/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` कमिट र 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. URLs र क्लाउड सिंक](#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. प्रदायक प्रयोगकर्ता-एजेन्ट ओभरराइडहरू](#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-model-sync-dev)
- [20. प्रदायक-विशेष सेटिङहरू](#20-provider-specific-settings)
- [21. प्रोक्सी स्वास्थ्य](#21-proxy-health)
- [22. डिबगिङ](#22-debugging)
- [23. GitHub एकीकरण](#23-github-integration)
- [24. Skills Sandbox (v3.8.0 +)](#24-skills-sandbox-v380)
- [27. रडार फिड (सेल्फ-होस्टिङ)](#27-radar-feed-self-hosting)
- [परिनियोजन परिदृश्यहरू](#deployment-scenarios)
- [अडिट: हटाइयो / मृत चर](#audit-removed--dead-variables)
---
## 1. आवश्यक रहस्यहरू
अनसेट रहस्य चिन्ह लगाइयो** हो** पहिलो रन (`JWT_SECRET`, `API_KEY_SECRET`) मा स्वतः उत्पन्न हुन्छ र डाटा डाइरेक्टरीमा `server.env` मा रहन्छ — तिनीहरूलाई स्पष्ट रूपमा सेट गर्दछ जब त्यो डाइरेक्टरी क्षणिक हुन्छ। अपवाद `OMNIROUTE_WS_BRIDGE_SECRET` हो: यो सर्भर प्रविष्टि पोइन्टहरू `server.env` — गर्न जारी राखिएको छैन एक क्षणिक प्रति-बुट मान मात्र इन-प्रोसेस ब्रिजले प्रयोग गर्न सक्छ, त्यसैले बाह्य ब्रिज क्लाइन्टहरूले यसलाई स्पष्ट रूपमा सेट गर्न आवश्यक छ।
| चर | आवश्यक छ | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------- | ---------------- | ------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | **हो** | _(कुनै पनि छैन)_ | `src/lib/auth` | Signs/verifies सबै ड्यासबोर्ड सत्र कुकीहरू (JWT)। `openssl rand -base64 48` को साथ उत्पन्न गर्नुहोस्। |
| `API_KEY_SECRET` | **हो** | _(कुनै पनि छैन)_ | `src/lib/db/apiKeys.ts` | API कुञ्जी मानहरूको लागिAES एन्क्रिप्शन कुञ्जी SQLite मा बाँकी छ। `openssl rand -hex 32` सँग उत्पन्न गर्नुहोस्। |
| `INITIAL_PASSWORD` | छैन | _(अनसेट)_ | `src/lib/auth/managementPassword.ts` | स्टार्टअपमा ड्यासबोर्ड पासवर्ड सेट गर्दछ जबकि कुनै पनि बचत गरिएको छैन; पासवर्ड सुरक्षित भएपछि बेवास्ता गरियो। npm र स्रोतले `.env.example` लाई `.env` मा प्रतिलिपि गर्दछ, त्यसैले तिनीहरू यसको सार्वजनिक रूपमा ज्ञात प्लेसहोल्डर `CHANGEME` सँग सुरु गर्छन्: यसलाई पहिलो बुट गर्नु अघि बदल्नुहोस्, वा पहिलो भ्रमणमा अनबोर्डिङ विजार्डमा पासवर्ड सिर्जना गर्न त्यो `.env` मा `INITIAL_PASSWORD=` (खाली) सेट गर्नुहोस्, अनसेट मान ( Docker छविको पूर्वनिर्धारित) जस्तै। ड्यासबोर्ड → सेटिङहरू → सुरक्षामा सुरक्षित गरिएको पासवर्ड परिवर्तन गर्नुहोस्, वा सर्भरको डेटा डाइरेक्टरीमा `DATA_DIR` सेट गरी `omniroute reset-password` (स्रोत चेकआउटमा`node bin/reset-password.mjs` ) चलाउनुहोस्। |
| `OMNIROUTE_WS_BRIDGE_SECRET` | **हो** (उत्पादन) | _(अनसेट)_ | `src/app/api/internal/codex-responses-ws/route.ts` | आन्तरिक Codex प्रतिक्रियाहरू WebSocket पुलको लागि साझा गोप्य। Electron/browser WS रिले र OmniRoute बीच ब्रिज अनुरोधहरू प्रमाणीकरण गर्दछ। ⚠️**REQUIRED उत्पादन — मा सेट नभएको बेला, सबै WS ब्रिज अनुरोधहरू अस्वीकार गरिन्छ।** `openssl rand -base64 32` को साथ उत्पन्न गर्नुहोस्। |
| `OMNIROUTE_SW_BUILD_ID` | छैन | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PWA शेलको लागि स्पष्ट सेवा-कार्यकर्ता क्यास-बस्टिङ आईडी (#11779); संकल्प श्रृंखला मा पहिलो। |
| `SOURCE_VERSION` | छैन | _(अनसेट)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PaaS निर्माणकर्ताहरू (जस्तै Heroku-शैली) द्वारा डिप्लोइड कमिटको रूपमा सेट गरिएको चेन — मा दोस्रो। |
| `NEXT_PUBLIC_SW_BUILD_ID` | छैन | _(व्युत्पन्न)_ | `src/shared/components/PwaRegister.tsx` | ग्राहकले `/sw.js?v=…` दर्ता गर्न प्रयोग गर्ने बिल्ड-टाइम सार्वजनिक मूल्य; माथिको दुईबाट व्युत्पन्न, त्यसपछि git SHA। |
| `OMNIROUTE_PEER_STAMP_TOKEN` | होइन (स्वचालित) | _(स्वत: प्रति बुट)_ | `src/server/authz/policies/management.ts` | विश्वसनीय पियर-आईपी स्ट्याम्प प्रमाणित गर्ने प्रति-प्रक्रिया गोप्य OmniRoute को आफ्नै HTTP सर्भर (`scripts/dev/peer-stamp.mjs`) बाट आएको हो। authz मिडलवेयर ट्रस्टहरूले स्थानीयता अनुरोध गर्दछ ( LOCAL_ONLY मार्गहरूकोloopback/LAN गेटिङ) जब स्ट्याम्पले यो टोकन बोक्छ। स्वत: उत्पन्न प्रत्येक बुट — छोड्नुहोस् सेट नगरिएको; यसलाई बहु-प्रक्रिया सेटअपहरूको लागि मात्र पिन गर्नुहोस् जुन स्ट्याम्प साझा गर्नुपर्छ। |
| `OMNIROUTE_TRUSTED_PROXIES` | छैन | _(अनसेट)_ | `scripts/dev/peer-stamp.mjs` | अल्पविराम-विभाजित IPs वा CIDR रिभर्स प्रोक्सीहरूको दायराहरू जसको `X-Forwarded-For` / `X-Real-IP` IP allow/deny सूचीले विश्वास गर्न सक्छ, लुपब्याकको शीर्षमा, निजी-सञ्जाल ठेगानाहरू र Cloudflare किनारहरू, जुन सधैं विश्वसनीय हुन्छन्। कुनै अन्य सार्वजनिक ठेगानामा प्रोक्सीको लागि मात्र आवश्यक छ; अन्यथा त्यो प्रोक्सीको आफ्नै ठेगाना फिल्टरले न्याय गर्छ। रिलेको प्रति क्लाइन्ट थ्रोटल (`/api/v1/relay/chat/completions`) कुञ्जीहरू उही समाधान गरिएको क्लाइन्ट ठेगानामा, हेडरहरू एक्लै फर्वार्डिङमा होइन। |
### जेनेरेसन कमाण्डहरू
```bash
# Generate all four secrets at once:
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` फाइलहरू कहिल्यै नदिनुहोस्। `.gitignore` ले `.env` पहिले नै समावेश गर्दछ, तर पुश गर्नु अघि प्रमाणित गर्नुहोस्।
---
## 2. भण्डारण र डाटाबेस
OmniRoute प्रयोग गर्दछ**SQLite** ( `better-sqlite3` मार्फत) सबै दृढताका लागि। यी चरहरूले डेटा स्थान, इन्क्रिप्सन, र जीवनचक्र नियन्त्रण गर्दछ।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | SQLite DB, ब्याकअप, र डाटा फाइलहरूको लागि रूट डाइरेक्टरी। Docker भोल्युम वा अनुकूलन पथहरूको लागि ओभरराइड गर्नुहोस्। |
| `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(अनसेट)_ | `src/lib/dataPaths.ts` | test/eval DATA_DIR गार्ड (#10428) को लागि एस्केप ह्याच। परीक्षण र नोड eval/print प्रोबहरू (`-e`/`--eval`/`-p`/`--print`, `--eval=`/`--print=` फारमहरू सहित) `DATA_DIR` बिना थ्रोअवे temp dir मा रिडिरेक्ट गरिन्छ ताकि तिनीहरूले अपरेटरको वास्तविक डाटाबेस खोल्न सक्दैनन्; वास्तविक डाइरेक्टरीमा फिर्ता अप्ट इन गर्न `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` | रेफ द प्याक-आर्टिफ्याक्ट प्रोभेन्स गेटले बिल्ड SHA बिरूद्ध (#10427) जाँच गर्दछ। |
| `OMNIROUTE_ALLOW_CANARY_BUILD` | _(अनसेट)_ | `scripts/build/buildProvenance.ts` | Set to `1` to allow packing a build whose SHA is not on the release line, recording it as a deliberate canary instead of failing the gate (#10427). |
| `OMNIROUTE_SMOKE_API_KEY` | _(अनसेट)_ | `scripts/ops/deploy-canary.mjs` | क्यानरी-डिप्लोय स्मोक प्रोबको लागिAPI कुञ्जी, `/v1/chat/completions` मा `Authorization: Bearer` को रूपमा पठाइयो। डिप्लोय स्क्रिप्ट (#10429) द्वारा मात्र प्रयोग गरिन्छ, सर्भरद्वारा कहिल्यै हुँदैन। अप्ट-इन CLI स्मोक हार्नेसको `OMNIROUTE_SMOKE_*` चरहरूसँग सम्बन्धित छैन (`RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS` मा `tests/integration/upstream-cli-smoke.int.test.ts`) — हेर्नुहोस् [CLI Integrations → वास्तविक धुवाँ स्वीप](../guides/CLI-INTEGRATIONS.md) । |
| `OMNIROUTE_BUILDING` | _(अनसेट)_ | `src/lib/buildPhase.ts` | बिल्ड-फेज सिग्नल (#10060): `scripts/build/build-next-isolated.mjs` द्वारा `1` मा सेट गरिएको छ र प्रत्येक निर्माण कार्यकर्ताद्वारा इनहेरिट गरिएको छ त्यसैले DB लेयरले नेटिभ better-sqlite3 addon लोड गर्नुको सट्टा नो-अप स्टब फर्काउँछ (जसले कामदारलाई बाहिर निस्कने बेला रोक्छ)। चलिरहेको सर्भरको लागि कहिल्यै सेट नगर्नुहोस्। |
| `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | विदेशी विक्रेता रूखहरूको लागि वैकल्पिक नेटिभ-डिपेन्डेन्सी प्रिबिल्ड चेक छोड्न `1` मा सेट गर्नुहोस्। यसले हराइरहेको निर्भरता निर्माणयोग्य बनाउँदैन; नेटिभ निर्भरताहरू ब्यान्ड बाहिर आपूर्ति गर्दा मात्र प्रयोग गर्नुहोस्। |
| `OMNIROUTE_DATA_DIR` | _(अनसेट)_ | `open-sse/executors/promptql/threadSticky.ts` | **फलब्याक उपनाम** `DATA_DIR` को लागि, `DATA_DIR` सेट नभएको बेला मात्र जाँच गरियो। PromptQL निष्पादकको अन-डिस्क थ्रेड-स्टिकी सेसन क्यास (`
/promptql-thread-sessions.json`) पत्ता लगाउन प्रयोग गरिन्छ; यदि कुनै पनि var सेट गरिएको छैन भने, क्यास मेमोरीमा मात्र रहन्छ (पुन: सुरुमा जारी रहँदैन)। |
| `OMNIROUTE_PLUGINS_DIR` | _(अनसेट)_ | `src/lib/plugins/scanner.ts` | निर्देशिका** रनटाइम प्लगइन स्क्यानर** — पढ्छ र प्लगइन प्रबन्धकले गृह-व्युत्पन्न पूर्वनिर्धारित (#11827) लाई ओभरराइड गर्दै — मा स्थापना गर्दछ। यसलाई Docker/K8s मा बाइन्ड-माउन्ट गरिएको प्लगइन रूखमा देखाउनुहोस् HOME स्क्यान मार्ग पुन: स्थानान्तरण गर्नको सट्टा (HOME अन्य घर-सम्बन्धित व्यवहारलाई पनि नियन्त्रण गर्दछ)। अनसेट गर्नुहोस् = `~/.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` | एन्क्रिप्शन कुञ्जीको लागि संस्करण लेबल। पुरानो ब्याकअपहरूको डिक्रिप्शन समर्थन गर्न कुञ्जी रोटेशन प्रदर्शन गर्दा वृद्धि। |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | जब `true`, routine/pre-write SQLite फाइल ब्याकअपहरू छोड्छ (models.dev मूल्य निर्धारण save/clear, सेटिङहरू लेख्छन्)। म्यानुअल र पूर्व-पुनर्स्थापना ब्याकअपहरू अझै चल्छन्। यसले गर्छ** होइन** अवस्थित निरन्तर DB को लागि माइग्रेसन धावकको अनिवार्य टिकाऊ सुरक्षा स्न्यापसट वा मास-माइग्रेसन गार्ड असक्षम पार्नुहोस्। गैर-म्यानुअल ब्याकअपहरू प्रति ६० मिनेटमा एक पटकमा थ्रोटल गरिन्छ। ड्यासबोर्ड** सेटिङहरू → भण्डारण** नियमित स्वत: ब्याकअप स्वतन्त्र रूपमा असक्षम गर्न सक्छ। |
| `OMNIROUTE_SQLITE_SLOW_MS` | _(unset/off)_ | `src/lib/db/adapters/slowDiagnostics.ts` | मिलिसेकेन्ड; १ भन्दा कम मानहरू वा गैर-संख्यात्मक बन्द रहन्छन्; प्रति 10s मा एक पटक चेतावनी दिन्छ; लग लाइनमा ड्राइभर, अपरेशन र elapsedMs मात्र छ। |
| `OMNIROUTE_SQLITE_OPTIMIZE_ENABLED` | `true` | `src/lib/db/sqlitePlannerStats.ts` | ब्याकग्राउन्ड प्लानर तथ्याङ्क मर्मतसम्भार, रिटेन्सन क्लिनअपबाट स्वतन्त्र: पहिलो सक्षम सफा पास (सामान्यतया स्टार्टअप पछि, माइग्रेसन पछि) `PRAGMA optimize=0x10002` चल्छ; त्यसपछिको प्रत्येक 6h रन `PRAGMA optimize` (वा असीमित विश्लेषणको लागि `PRAGMA optimize=0x00002` ) पास हुन्छ। `false` वा `0` सबै मर्मतसम्भारलाई असक्षम पार्छ (केस-संवेदनशील, ह्वाइटस्पेस ट्रिम गरिएको)। मेमोरी डाटाबेस र पढ्ने-मात्र ब्याकअप पथहरू अप्रभावित छन्। विफलताहरू लगाइएका छन्, फ्याँकिएका छैनन्। |
| `OMNIROUTE_SQLITE_ANALYSIS_LIMIT` | `400` | `src/lib/db/sqlitePlannerStats.ts` | अप्टिमाइजेसन अघि `PRAGMA analysis_limit` सेट गर्दछ। दशमलव पूर्णांकहरूलाई [०, १०००००] मा क्ल्याम्प गरिएको छ; malformed/empty मानहरू पूर्वनिर्धारित 400 मा। `0` असीमित अनुरोध गर्दछ, अनुकूलन द्वारा चयन गरिएको तालिकाहरूको सटीक विश्लेषण; आवधिक पासले यसलाई सम्मान गर्न SQLite को अनुकूलन नमूना-क्याप बिट खाली गर्दछ। कुनै स्ट्यान्डअलोन SQL विश्लेषण कथन चलाइएको छैन। |
| `OMNIROUTE_CRYPT_KEY` | _(अनसेट)_ | `src/lib/db/encryption.ts` | **लिगेसी उपनाम** `STORAGE_ENCRYPTION_KEY` को लागी। प्राथमिक चर अनुपस्थित हुँदा फलब्याकको रूपमा स्वीकार गरिन्छ। |
| `OMNIROUTE_API_KEY_BASE64` | _(अनसेट)_ | `src/lib/db/encryption.ts` | **लिगेसी उपनाम** (Base64-encoded फारम) फलब्याकको रूपमा स्वीकार गरियो। प्रयोग गर्नु अघि स्वचालित रूपमा डिकोड गरियो। |
| `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)` साझा गरिएको वाल-इन्डेक्स म्यापिङलाई अमान्य बनाउन सक्छ र SIGBUS (#13973) सँग प्रक्रिया क्र्यास गर्न सक्छ, त्यसैले अनुसूचक अब अवस्थित छैन। चर निष्क्रिय छ: सकारात्मक मानले एक पटकको ह्रास चेतावनी लगाउँछ, जबकि `0` वा सेट नगरिएको मौन रहन्छ। WAL PASSIVE चेकपोइन्टहरू (तल) द्वारा राखिएको छ र बन्द चेकपोइन्टद्वारा काटिएको छ। |
| `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | बारम्बार `wal_checkpoint(PASSIVE)` अन्तराल (ms) ओभरराइड गर्नुहोस्। पेन्डिङ WAL फ्रेमहरू सानो राख्छ ताकि चेकपोइन्टहरू छिटो रहोस् र WAL फाइल बन्द ट्रंकेसनहरू बीच बाँधिएको रहन्छ। `0` अक्षम गर्दछ। |
| `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | जब PASSIVE टिकले यो साइज माथि WAL फाइल फेला पार्छ, `wal_checkpoint(RESTART)` चलाउनुहोस् ताकि WAL म्याप गरिएको वाल-सूचकाङ्कलाई पुनःलेखन नगरी सुरु हुन्छ। लाइभ ट्रन्केट-मोड चेकपोइन्टहरू हटाइयो ( `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` पङ्क्ति हेर्नुहोस्)। |
| `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` को लागि महत्वपूर्ण स्रोतको दबाब कायम भएपछि प्रक्रियाबाट बाहिर निस्कन `1`/`true`/`yes`/`on` मा सेट गर्नुहोस्, एक पर्यवेक्षक (systemd `Restart=always`, Docker रिस्टार्ट नीति) लाई 503s लाई अनिश्चित कालका लागि सेवा दिनुको सट्टा सफा प्रक्रिया फिर्ता ल्याउन अनुमति दिनुहोस्। |
| `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | सेल्फ रिस्टार्ट एग्जिट फायर हुनु अघि कति लामो महत्वपूर्ण दबाब कायम रहनु पर्छ। |
| `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | `1`/`true`/`yes`/`on` मा सेट गर्नुहोस् होस्ट-वाइड `/proc/pressure/memory` (`psi_some` / `psi_full`) लाई बेवास्ता गर्न जब एक शोर छिमेकीले 503s यात्रा गर्दा यो प्रक्रिया ठीक छ (#13124)। Cgroup र V8 हिप गार्डहरू रहन्छन्। PSI `cgroup_high` को लागि कर्नेल थ्रोटल प्रमाणको रूपमा गणना गर्न रोक्छ: `memory.high` माथिको cgroup कुल त्यसपछि `memory.events` `high`/`max` वृद्धिमा मात्र महत्वपूर्ण हुन्छ। `memory.events` बिना कच्चा अनुपात राखिएको छ। |
| `OMNIROUTE_SQLJS_WASM_PATH` | _(स्वतः पत्ता लगाउनुहोस्)_ | `src/lib/db/adapters/sqljsAdapter.ts` | `sql.js` WASM फलब्याक एडाप्टर प्रयोग गर्दा `sql-wasm.wasm` मा स्पष्ट मार्ग (निरपेक्ष वा cwd सापेक्ष)। सेट नभएको बेला प्याकेज निर्भरता र उम्मेद्वार लेआउटहरू मार्फत स्वतः पत्ता लगाइयो। |
| `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | दिनहरू टर्मिनल (completed/failed/cancelled/expired) ब्याच API कार्यको चेकपोइन्टहरू, सन्दर्भित input/output/error फाइलहरू, र पङ्क्तिहरू मेटाउनु अघि स्वचालित क्लीनअप स्वीपद्वारा राखिन्छन्। `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` सक्रिय भएपछि मात्र प्रभाव पार्छ; OpenAI को आफ्नै ब्याच API आउटपुट रिटेन्सन विन्डोसँग मेल खान्छ। अपरेटर-ट्रिगर गरिएको `DELETE /api/v1/batches/delete-completed` मार्गलाई असर गर्दैन, जुन डिजाइन द्वारा बिना शर्त रहन्छ (उमेर फिल्टर छैन)। |
| `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | जब `true`, स्वचालित क्लीनअप स्वीपलाई टर्मिनल ब्याच API कार्यहरू (र तिनीहरूको चेकपोइन्टहरू) `OMNIROUTE_BATCH_RETENTION_DAYS` विगतमा मेटाउन दिनुहोस्, र तिनीहरूको आफ्नै `expires_at` अघि अपलोड गरिएका फाइलहरूको BLOB सामग्री खाली गर्नुहोस्। पूर्वनिर्धारित रूपमा बन्द: प्रत्येक अवस्थित स्थापनाले यो डाटालाई पहिले जस्तै राख्छ जबसम्म अपरेटरले अप्ट इन गर्दैन। साथै ड्यासबोर्ड-सम्पादन योग्य सुविधा झण्डा — `docs/reference/FEATURE_FLAGS.md` → रनटाइम हेर्नुहोस्। |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | स्टार्टअपमा पूर्ण रूपमा DB स्वास्थ्य जाँच छोड्न `1` मा सेट गर्नुहोस्। छोटो अवधिका कार्यहरू र एकीकरण परीक्षणहरूको लागि उपयोगी। |
| `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | DB हेल्थ चेक लुपलाई बलपूर्वक अन गर्नको लागि `1` मा सेट गर्नुहोस्, यो सामान्यतया छोडिने बेलामा पनि (जस्तै, अल्पकालीन कार्यहरू)। |
| `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | `npm install` को समयमा नेटिभ-रनटाइम वार्म-अप छोड्न `1` मा सेट गर्नुहोस्। sqlite पहिले नै बनाइएको CI/headless स्थापनाहरूमा उपयोगी। |
| `OMNIROUTE_MIGRATIONS_DIR` | _(स्वतः पत्ता लगाउनुहोस्)_ | `src/lib/db/migrationRunner.ts` | माइग्रेसन धावकले स्क्यान गरेको डाइरेक्टरी ओभरराइड गर्नुहोस्। अनुकूलन निर्माणहरूमा बन्डल गरिएका माइग्रेसनहरू ढुवानी गर्दा उपयोगी। |
| `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(अनसेट)_ | `src/lib/db/migrationRunner/extraDirs.ts` | प्लेटफर्म पथ डेलिमिटर (जस्तै `ee=/opt/app/enterprise/db/migrations`) द्वारा विभाजित `namespace=dir` प्रविष्टिहरूको रूपमा थप माइग्रेसन डाइरेक्टरीहरू। त्यहाँ फेला परेका फाइलहरू `-` को रूपमा रेकर्ड गरिएका छन्, त्यसैले यसको आफ्नै माइग्रेसन वितरण वितरणले अपस्ट्रीम संख्यात्मक स्लटहरूसँग कहिल्यै टक्कर गर्दैन। एक विकृत प्रविष्टि, एक अवैध नामस्थान वा हराइरहेको डाइरेक्टरी चुपचाप स्किमा छाड्नुको सट्टा स्टार्टअपमा फ्याँकिन्छ। |
| `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | मास-पेन्डिङ-माइग्रेसन सुरक्षा थ्रेसहोल्ड (#3416)। यदि अवस्थित DB मा यो भन्दा धेरै माइग्रेसनहरू पेन्डिङ छन् भने स्टार्टअप रद्द हुन्छ (एक वाइप ट्र्याकिङ टेबल विरुद्ध गार्डहरू)। पुरानो ब्याकअप पुनर्स्थापित गर्न यसलाई उठाउनुहोस्; चेक असक्षम गर्न `0` मा सेट गर्नुहोस्। |
| `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | `check:install-upgrade` रिलीज गेटको लागि कार्य निर्देशिका। यसलाई लगभग 12 GB (दुई ~ 3 GB स्थापना रूखहरू र टारबल) चाहिन्छ, त्यसैले यो सानो tmpfs — मा सेल्फ-होस्ट गरिएको धावक `/tmp` मा चल्नु हुँदैन 12 GB RAM-समर्थित tmpfs हो र गेटले प्याकेजलाई काट्दै, यसलाई समाप्त पार्छ। |
| `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(कोडमा पूर्वनिर्धारित)_ | `src/lib/spend/batchWriter.ts` | ब्याच गरिएको spend/cost लेखकका लागि फ्लस अन्तराल (ms)। तल्लो मानले लेख्ने कोलेसिङ घटाउँछ; उच्च मानहरूले DB विवाद कम गर्दछ। |
| `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(कोडमा पूर्वनिर्धारित)_ | `src/lib/spend/batchWriter.ts` | जबर्जस्ती फ्लश गर्नु अघि अधिकतम खर्च प्रविष्टिहरू बफर गरियो। उच्च-क्यूपीएस तैनातीहरूमा बढाउनुहोस्; कम हुँदा सीमित मेमोरी बढी महत्त्वपूर्ण हुन्छ। |
| `OMNIROUTE_PROXY_FETCH_DEBUG` | _(अनसेट)_ | `open-sse/utils/proxyFetch.ts` | Vercel रिले मार्गमा `[ProxyFetch]` डिबग लगहरू उत्सर्जन गर्न `"true"` मा सेट गर्नुहोस्। राउटिङ संकेतहरू चुहावटबाट बच्न पूर्वनिर्धारित रूपमा बन्द गर्नुहोस्। |
| `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(अनसेट)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | स्थानीय प्रोक्सी कोर बाइनरी ( `sing-box` / `mihomo` नामक फाइल) को निरपेक्ष मार्ग जसले अपनाएको फाइललाई प्रतिस्थापन गर्नु अघि उत्पन्न कोर कन्फिगरेसन जाँच गर्दछ। अनसेटले अपनाएको फाइलको छेउमा `.generated` लेख्छ। होस्ट वातावरण मात्र: डाटाबेसमा भण्डारण गरिएको छैन वा व्यवस्थापन API मार्फत स्वीकार गरिएको छैन, किनभने बाइनरी कार्यान्वयन गरिएको छ। |
| `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(अनसेट)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | प्रमाणित कन्फिगरेसन प्रतिस्थापन पछि स्थानीय प्रोक्सी कोर कसरी पुन: लोड हुन्छ: JSON आर्गुमेन्ट एरे शेल बिना चल्छ, वा बाहिरी पर्यवेक्षकले फाइल लागू गर्दा ठ्याक्कै `external` । कहिले पनि डाटाबेसमा भण्डार गरिएको छैन वा API मार्फत खुलासा गरिएको छैन। |
| `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Verbose `[ProxyEgress]` प्रक्रिया-लग लाइनमा client/egress IPs र खाता उपसर्ग समावेश गर्न `"true"` वा `"1"` मा सेट गर्नुहोस्। पूर्वनिर्धारित रूपमा OFF राखिएको छ ताकि प्रक्रिया लग IPs वा खाता उपसर्ग चुहावट नहोस्। |
| `OMNIROUTE_DEBUG` | _(अनसेट)_ | `bin/cli/commands/quota.mjs` | stderr मा CLI कोटा आदेशहरूबाट प्रति-अनुरोध समय निदान (`[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 शेल-समापन क्यास मार्गहरू (read/refresh/write) बाट `[omniroute completion]` निदान उत्सर्जन गर्न कुनै पनि गैर-खाली मानमा सेट गर्नुहोस्। पूर्वनिर्धारित रूपमा बन्द — ती क्यासहरू चुपचाप असफल हुन्छन् त्यसैले missing/corrupt क्यासले ट्याब-समाप्ति कहिल्यै तोड्दैन। |
| `BATCH_RETRY_DURATION_MS` | `86400000` (24 घन्टा) | `open-sse/services/batchProcessor.ts` | व्यक्तिगत ब्याच वस्तुहरू (ms) को लागि अधिकतम पुन: प्रयास विन्डो। यो अवधि नाघेका वस्तुहरूलाई असफल भनी चिन्ह लगाइएको छ। |
| `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | ब्याच वस्तु पुन: प्रयासहरूमा घातीय ब्याकअफको लागि आधार ढिलाइ (ms)। |
| `BATCH_BACKOFF_MAX_MS` | `3600000` (1h) | `open-sse/services/batchProcessor.ts` | ब्याच वस्तु पुन: प्रयासहरू बीच घातीय ब्याकअफको लागि क्याप (ms)। |
| `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | एकैसाथ प्रशोधन गरिएका ब्याचहरूको अधिकतम संख्या। थ्रुपुट बढाउनको लागि उठाउनुहोस्; दर-सीमा तूफानबाट बच्न कम राख्नुहोस्। |
> [!IMPORTANT]
> अवस्थित लगातार डाटाबेस परिवर्तन गर्नु अघि, माइग्रेसन धावकले `DATA_DIR/db_backups/` अन्तर्गत पूर्ण, सामग्री-ठेगाना गरिएको स्न्यापसट प्रकाशित गर्दछ। प्रकाशनलाई समान-फाइलप्रणाली, नो-ओभरराइट हार्ड लिङ्कहरू र टिकाऊ फाइल सिंकलाई समर्थन गर्ने फाइल प्रणाली आवश्यक पर्दछ। POSIX होस्टहरूलाई पनि डाइरेक्टरी सिङ्क चाहिन्छ; Windows मा, नोडले डाइरेक्टरी ह्यान्डलहरू अस्वीकार गर्न सक्छ, त्यसैले OmniRoute प्रकाशित फाइल फ्लस गर्छ र डाइरेक्टरी-प्रविष्टि सिंकलाई उत्तम प्रयासको रूपमा व्यवहार गर्दछ। यदि माउन्ट गरिएको `DATA_DIR` ती ग्यारेन्टीहरू प्रदान गर्न सक्दैन भने, माइग्रेसन लागू गर्नु अघि स्टार्टअप असफल हुन्छ। `DATA_DIR` लाई ती आदिमहरूसँग भोल्युममा सार्नुहोस्; माइग्रेसन सुरक्षा बाइपास गर्न `DISABLE_SQLITE_AUTO_BACKUP` प्रयोग नगर्नुहोस्।
### परिदृश्यहरू
| परिदृश्य | कन्फिगरेसन |
| --------------------- | ----------------------------------------------------------------------------------------------------- |
| **स्थानीय विकास** | सबै पूर्वनिर्धारित छोड्नुहोस्। DB `~/.omniroute/omniroute.db` मा बस्छ। |
| **Docker** | `DATA_DIR=/data` + `/data` मा भोल्युम माउन्ट गर्नुहोस्। |
| **आराम मा गुप्तिकरण** | `STORAGE_ENCRYPTION_KEY` + सेट गर्नुहोस् कुञ्जीको ब्याकअपहरू राख्नुहोस्! यसलाई गुमाउनु = डाटा हराउनु। |
| **CI/Testing** | `DATA_DIR=/tmp/omniroute-test` — क्षणिक, कुनै एन्क्रिप्शन आवश्यक छैन। |
---
## 3. नेटवर्क र पोर्टहरू
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PORT` | `20128` | `src/lib/runtime/ports.ts` | ड्यासबोर्ड UI र API अन्तिम बिन्दुहरू (एकल-पोर्ट मोड) को लागि प्राथमिक पोर्ट। |
| `OMNIROUTE_BASE_PATH` | _(खाली = रूट)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | रिभर्स प्रोक्सी पछाडि OmniRoute सेवा गर्नको लागिURL सबपाथ (सेट गर्दछ Next.js `basePath`; auth redirects basePath-Aware हो)। जस्तै `/omniroute`। Docker मा मान `docker build` (`ARG OMNIROUTE_BASE_PATH`) को समयमा बेक गरिन्छ; पूर्व-निर्मित रूट छविहरूले Next.js बुट अघि कन्टेनर सुरुमा एक पटक फरक रनटाइम मान लागू गर्न सक्छ। उही सबपाथ सहित सार्वजनिक मूलमा `NEXT_PUBLIC_BASE_URL` सेट गर्नुहोस्। |
| `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(खाली = रूट)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | `OMNIROUTE_BASE_PATH` को ब्राउजर देखिने मिरर, निर्माण समयमा इनलाइन गरिएको छ त्यसैले ड्यासबोर्डको अन्तिम बिन्दु प्रदर्शनले `https://host/v1` को सट्टा `https://host/omniroute/v1` देखाउँछ। सेट नगर्दा `OMNIROUTE_BASE_PATH` मा फर्किन्छ। परिवर्तन पछि पुन: निर्माण गर्नुहोस् (अर्को `basePath` निर्माण-समय हो)। |
| `DASHBOARD_ALLOW_EMBED` | _(अनसेट = कहिल्यै फ्रेम योग्य) _ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | HTML पृष्ठहरूको iframe इम्बेडिङ अप्ट-इन गर्नुहोस्। सेट नगरिएको, प्रत्येक मार्गले `frame-ancestors 'none'` + `X-Frame-Options: DENY` पठाउँछ। पृष्ठहरू (ड्यासबोर्ड, लगइन, कागजात, अवतरण) `frame-ancestors 'self' vscode-webview:` र कुनै `X-Frame-Options` बिना सेवा गर्न `vscode` मा सेट गर्नुहोस्, त्यसैले VS कोड सरल ब्राउजरले तिनीहरूलाई (OmniCopilot को `dashboardOpen: "editor"` मोड) रेन्डर गर्न सक्छ। API सतह (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, रूट-स्तर उपनामहरू) कुनै पनि तरिकाले कडा हेडरहरू राख्छ। `vscode` मात्र — `1`/`true` लाई सक्षम नगर्नुहोस्। निर्माण-समय: परिवर्तन पछि पुन: निर्माण गर्नुहोस् (छविहरूको लागि`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` ; यसलाई पूर्वनिर्मित स्थापनामा सेट गर्दा कुनै प्रभाव छैन)। |
| `API_PORT` | _(अनसेट)_ | `src/lib/runtime/ports.ts` | सेट गर्दा, यो छुट्टै पोर्टमा `/v1/*` प्रोक्सी API (प्लस जेमिनी-नेटिभ `/v1beta/*`) सेवा गर्दछ। |
| `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | API पोर्टको लागि ठेगाना बाँध्नुहोस्। |
| `DASHBOARD_PORT` | _(अनसेट)_ | `src/lib/runtime/ports.ts` | सेट गर्दा, यो छुट्टै पोर्टमा ड्यासबोर्ड UI सेवा गर्दछ। |
| `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(असक्षम)_ | `src/sse/utils/backpressure.ts` | क्याप्स समवर्ती इन-फ्लाइट च्याट जडानहरू; क्याप माथिको अनुरोधहरू `Retry-After` सँग `503` प्राप्त गर्नुहोस्। सकारात्मक पूर्णांकले गार्डलाई सक्षम बनाउँछ; unset/`0` ले असक्षम पार्छ। |
| `OMNIROUTE_INSTANCE_ID` | _(अनसेट)_ | `src/shared/resilience/peerRouting.ts` | OmniRoute उदाहरणहरू चेन गर्दा यस गेटवेको लागि स्थिर, अद्वितीय ID । इनबाउन्ड पियर-लूप जाँचहरू सक्षम गर्दछ। अनुमति दिइएको वर्णहरू: अक्षरहरू, अंकहरू, `.`, `_`, `:`, र `-`; अधिकतम 64 वर्ण। |
| `OMNIROUTE_PEER_URLS` | _(अनसेट)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | अल्पविराम-विभाजित OmniRoute आधार URLs जसले `X-OmniRoute-Peer-Trace` प्राप्त गर्न सक्छ। केवल स्पष्ट रूपमा अनुमति दिइएको अपस्ट्रीम URLs पियर मेटाडेटा प्राप्त गर्दछ; अन्य सबै प्रदायकहरू अछुतो छन्। |
| `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | चेन गरिएको अनुरोध (`1`-`32`) मा स्वीकार गरिएको पहिले भ्रमण गरिएका OmniRoute उदाहरणहरूको अधिकतम संख्या। दोहोरिने उदाहरणहरू वा थकित बजेट फिर्ता HTTP `508 Loop Detected`। |
| `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Docker उत्पादन मोडमा ड्यासबोर्डको लागि होस्ट-साइड प्रकाशित पोर्ट। |
| `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Docker उत्पादन मोडमा API को लागि होस्ट-साइड प्रकाशित पोर्ट। |
| `OMNIROUTE_PORT` | _(अनसेट)_ | `src/lib/runtime/ports.ts` | Electron वा अन्य wrappers भित्र चल्दा `PORT` मा प्राथमिकता लिन्छ। |
| `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | वास्तविक समय WebSocket प्रत्यक्ष निगरानी सर्भरको लागि पोर्ट। |
| `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | प्रत्यक्ष WebSocket सर्भरको लागि ठेगाना बाँध्नुहोस्। LAN मा खुलाउन `0.0.0.0` मा सेट गर्नुहोस् ( `LIVE_WS_ALLOWED_ORIGINS` पनि कन्फिगर गर्नुहोस्)। जडानहरू ड्यासबोर्ड सत्र कुकी वा व्यवस्थापन स्कोप (`manage`/`admin`) समात्ने Bearer API कुञ्जीसँग प्रमाणीकरण हुन्छ। |
| `LIVE_WS_ALLOWED_ORIGINS` | _(अनसेट)_ | `src/server/ws/liveServer.ts` | अल्पविराम-विभाजित अतिरिक्त मूलहरूलाई लाइभ WebSocket खोल्न अनुमति दिइएको छ। लूपब्याक ड्यासबोर्ड उत्पत्ति पहिले नै पूर्वनिर्धारित रूपमा अनुमति छ। |
| `LIVE_WS_ALLOWED_HOSTS` | _(अनसेट)_ | `src/server/ws/liveServerAllowList.ts` | प्रत्यक्ष WebSocket उत्पत्तिका लागि अल्पविराम-विभाजित अतिरिक्त होस्टनामहरूलाई अनुमति दिइएको छ। `LIVE_WS_ALLOWED_ORIGINS` (पूर्ण उत्पत्ति URLs) को विपरीत, LAN/Tailscale सेटअपहरूको लागि उपयोगी होस्ट भाग — मात्र मेल खान्छ। |
| `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(अनसेट)_ | `src/hooks/useLiveDashboard.ts` | प्रत्यक्ष ड्यासबोर्ड WebSocket (ब्राउजर-साइड) को लागि सार्वजनिक URL । रिभर्स प्रोक्सी वा Cloudflare टनेल (जस्तै `wss://ws.my-ai.com/live-ws`) संग WS सर्भर फ्रन्टिङ गर्दा सेट गर्नुहोस्; ब्राउजर त्यहाँ `ws://hostname:20132` को सट्टा जडान हुन्छ। पथनाम भाग पनि WebSocket अपग्रेड मार्गको रूपमा प्रयोग गरिन्छ (पूर्वनिर्धारित: `/live-ws`)। |
| `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` र `scripts/start-ws-server.mjs` | वास्तविक-समय WebSocket सर्भर असक्षम गर्न `0` वा `false` मा सेट गर्नुहोस् (पूर्वनिर्धारित रूपमा सक्षम गरिएको, लुपब्याक-बाउन्ड)। CI/harness टगल जसले स्ट्यान्डअलोन लाइभ WebSocket सहायक लिपि असक्षम पार्छ। |
| `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | प्रति-(टोकन, IP) रिले दर सीमा, requests/minute. इन-मेमोरी, प्रति उदाहरण। `0` वा नकारात्मकले IP-आयाम गेटलाई असक्षम पार्छ (प्रति-टोकन DB सीमा अझै पनि लागू हुन्छ)। |
| `NODE_ENV` | `production` | Next.js कोर | लगिङ वर्बोसिटी, क्यासिङ, त्रुटि विवरण एक्सपोजर, र Next.js अप्टिमाइजेसनहरू नियन्त्रण गर्दछ। |
| `OMNIROUTE_USE_TURBOPACK` | _(अनसेट)_ (स्वचालित निर्माण चयन) | `scripts/build/build-next-isolated.mjs` | `npm run build` को लागि, प्रभावकारी मेमोरी सीमा (भौतिक RAM वा तल्लो cgroup/process कोटा) अधिकतम हुँदा वेबप्याक अनसेट वा खाली चयन गर्दछ।** 16 GiB** वा सुरक्षित रूपमा निर्धारण गर्न सकिँदैन; 16 GiB माथि, Turbopack चयन गरिएको छ। स्पष्ट `0` बल वेबप्याक; स्पष्ट `1` र अन्य शून्य शून्य मानहरू बल Turbopack। Compose द्वारा फर्वार्ड गरिएको खाली वातावरण मान** होइन** बल Turbopack। यो थ्रेसहोल्ड 15.6 GiB बिल्ड-मेमोरी रिग्रेसन (#18184) बाट आउँछ; 24/32 GiB सँग होस्ट बिल्डहरू बेन्चमार्क गरिएको थिएन। उत्पादन वेबप्याकले स्वतः पूर्वनिर्धारित रूपमा यसको निरन्तर क्यास छोड्छ (तल `OMNIROUTE_WEBPACK_BUILD_CACHE` हेर्नुहोस्; #18141) र हालको Turbopack मार्ग भन्दा धेरै कम शिखर RSS सँग निर्माण गर्दछ। विकासले आफ्नो विद्यमान बन्डलर व्यवहारलाई कायम राख्छ।**Docker ले पहिले नै `0` मा पूर्वनिर्धारित बनाउँछ (वेबप्याक)** ; अप्ट इन गर्न `--build-arg OMNIROUTE_USE_TURBOPACK=1` प्रयोग गर्नुहोस्। `docs/guides/DOCKER_GUIDE.md` हेर्नुहोस्। |
| `OMNIROUTE_WEBPACK_BUILD_CACHE` | _(अनसेट)_ | `next.config.mjs` | वेबप्याक उत्पादन निर्माण (`OMNIROUTE_USE_TURBOPACK=0`) यो `1` नभएसम्म वेबप्याक पर्सिस्टेन्ट फाइल प्रणाली क्यास छोड्नुहोस्। त्यो क्यास लेख्दा 6144 MB हिप क्यापमा लगभग 2.5 GB पीक बिल्ड मेमोरी थपिन्छ, र क्लिन बिल्डहरूले यसलाई कहिल्यै पढ्दैनन्। RAM टु स्पेयर भएको मेसिनमा छिटो दोहोरिने निर्माणको लागि `.build/next/cache/webpack` राख्न `1` मा सेट गर्नुहोस्; Docker निर्माणहरूले यसलाई `--build-arg OMNIROUTE_WEBPACK_BUILD_CACHE=1` (`Dockerfile` र `Dockerfile.bun` बिल्डर चरणहरू) को रूपमा लिन्छ। |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(अनसेट)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | स्टार्टअपमा SQLite अखण्डता स्वास्थ्य जाँच छोड्न `1` मा सेट गर्नुहोस्। ठूला डाटाबेसहरूमा छिटो बुटको लागि उपयोगी। |
| `NOTIFY_SOCKET` | _(अनसेट)_ | systemd (sd_notify प्रोटोकल) | sd_notify एकीकरणको साथ सेवा इकाई अन्तर्गत प्रक्रिया चल्दा systemd द्वारा सेट गर्नुहोस्; OmniRoute ले यसलाई पढ्छ ( `OMNIROUTE_DISABLE_SD_NOTIFY` हेर्नुहोस्) READY/WATCHDOG सूचनाहरू पठाउन। प्रयोगकर्ता द्वारा कहिल्यै सेट नगर्नुहोस्। |
| `OMNIROUTE_DISABLE_SD_NOTIFY` | _(अनसेट)_ | `scripts/dev/systemd-notify.mjs` | systemd sd_notify (टाइप गर्नुहोस्= notify / WatchdogSec=) लाई असक्षम गर्नको लागि `1` मा सेट गर्नुहोस् systemd एकाइ अन्तर्गत चल्दा पनि। अधिसूचक एक नो-अप बाहिर प्रणाली हो वास्ता नगरी। |
| `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` मा सेट गर्नुहोस्। खोज प्रदायकहरू (SEARCH_VALIDATOR_CONFIGS `src/lib/providers/validation/searchProviders.ts` उदाहरण `tavily-search`) लाई जहिले पनि स्वीप — बाट बहिष्कृत गरिन्छ तिनीहरूको "मान्यता" वास्तविक बिल गरिएको अपस्ट्रीम क्वेरी हो, त्यसैले तिनीहरू कहिले पनि टाइमर (#9970) मा स्वास्थ्य जाँच गरिँदैन। |
| `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | प्रमाणीकृत कलरलाई `/api/monitoring/health?deep=1` अनुरोध गर्न अनुमति दिनको लागि `1` मा सेट गर्नुहोस्, जसले प्रति TTL एक पटक पूरा भएको सतहको नमूना दिन्छ। बेनामी कलरहरूले कहिल्यै जाँच ट्रिगर गर्दैनन्। |
| `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | बुट इभेन्ट-लूप रेकर्डरको लागि स्टाल थ्रेसहोल्ड (एमएस): यो भन्दा लामो फ्रिजले मेमोरी र इन-फ्लाइट गणनाहरूको साथ पुन: सुरुमा एक `event loop stalled` लाइन लग गर्छ, र `/api/monitoring/health` मा `eventLoopStall` counter/maximum बम्प गर्दछ। असक्षम गर्न `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 धावक द्वारा प्रयोग गरिएको ठेगाना बाँध्नुहोस्। हर्मेटिक परीक्षणहरूको लागि `127.0.0.1` मा पूर्वनिर्धारित।** `omniroute serve` को लागि प्रयोग नगर्नुहोस्** — को सट्टा `OMNIROUTE_SERVER_HOST` प्रयोग गर्नुहोस् (POSIX शेलले मेसिनको नाममा `HOSTNAME` लाई स्वत: सेट गर्दछ; `.env` यसलाई ओभरराइड गर्न सक्दैन)। |
| `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | `omniroute serve` को लागि ठेगाना बाँध्नुहोस्। POSIX शेल `HOSTNAME` चरसँग टक्करबाट बच्न (जधै bash/zsh द्वारा मेसिनको नाममा सेट गर्नुहोस्)। सेट नगर्दा `0.0.0.0` मा फर्किन्छ। (#६१९४) |
### पोर्ट मोडहरू
```
┌─────────────────────────── 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` | मेसिन फिंगरप्रिन्टिङका लागि हार्डवेयर पहिचानकर्ताहरूसँग नुन। अलगावको लागि प्रति-डिप्लोइमेन्ट परिवर्तन गर्नुहोस्। |
| `OMNIROUTE_CLI_SALT` | _(अनसेट = अनियमित प्रति-स्थापना नुन `/cli-token-salt.json` मा कायम रह्यो)_ | `src/lib/machineToken.ts` | स्थानीय CLI प्रमाणीकरण टोकन प्राप्त गर्नको लागिHMAC नुन। यो मान सेट गर्नाले मेसिनमा सबै CLI टोकनहरू घुमाउँछ र निरन्तर नुनलाई सधैं प्राथमिकता दिन्छ। `docs/security/CLI_TOKEN.md` हेर्नुहोस्। |
| `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | सत्र कुकीहरूमा `Secure` झण्डा सेट गर्दछ।** `true` हुनुपर्छ** HTTPS को पछि दौडिदा। |
| `REQUIRE_API_KEY` | `false` | API मिडलवेयर | जब `true`, सबै `/v1/*` प्रोक्सी अनुरोधहरूमा मान्य API कुञ्जी समावेश हुनुपर्छ।** यो झण्डाले `GET /v1/models` गेट गर्दैन** , जसले — सट्टा ड्यासबोर्ड लगइन मुद्रा (`requireAuthForModels`) लाई पछ्याउँछ त्यसैले `/v1/models` बाट `401` ले NOT को अर्थ सुरक्षित हुन्छ। `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695) हेर्नुहोस्। `true`, `1` वा `yes` स्वीकार गर्दछ, केस र वरपरका ठाउँहरूलाई बेवास्ता गर्दै; कुनै पनि अन्य मान ( `on` सहित) बन्द छ। |
| `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | ड्यासबोर्ड UI मा पूर्ण API कुञ्जी मानहरू प्रकट गर्न अनुमति दिन्छ। ड्यासबोर्ड सुविधा झण्डा बाट कन्फिगर योग्य; साझा घटनाहरूमा सुरक्षा जोखिम। |
| `NO_LOG_API_KEY_IDS` | _(खाली)_ | `src/lib/compliance/index.ts` | अल्पविराम-विभाजित API कुञ्जी IDs जुन बाइपास अनुरोध लगिङ (GDPR अनुपालन)। |
| `DEFAULT_RATE_LIMIT_PER_DAY` | _(अनसेट = असीमित)_ | `src/shared/utils/apiKeyPolicy.ts` | फलब्याक प्रति-दिन अनुरोध बजेट API कुञ्जीहरूमा लागू गरियो जसको `rate_limits` स्तम्भ शून्य छ। अनसेट वा खाली: कुनै निहित टोपी छैन (#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` | दृश्यात्मक `maxBodySizeMb` सेटिङको लागि पूर्वनिर्धारित; एक सुरक्षित सेटिङ प्राथमिकता लिन्छ। `/api/v1/chat/completions` र `/api/v1/responses` सीमा बचत नभएसम्म 50 MB पूर्वनिर्धारित राख्छ; बचत गरिएको सीमाले हेडर गार्ड र वास्तविक-बाइट च्याट प्रवेशको लागि समान रूपमा माथि वा तल, यसलाई प्रतिस्थापन गर्दछ। |
| `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | यस थ्रेसहोल्डमा वा माथिको वास्तविक अनुरोध निकायहरूले JSON पार्सिङ (BYTE पथ, `POST /v1/responses` सहित) अघि परमाणु प्रक्रिया-स्थानीय हेवीवेट प्रवेश लीज लिन्छन्। समान [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) स्वस्थ-हेडरूम एस्केप संरचना-भारी रूपमा; अझै पनि `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` प्राप्त गर्दछ। बचत गरिएको `maxBodySizeMb` ले 50 MB पूर्वनिर्धारितलाई प्रतिस्थापन गर्दछ; जब यो चर सेट हुन्छ, यसले बचत गरिएको मानलाई पनि क्याप गर्छ। |
| `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(अनसेट — कुनै अनुरोध-गणना क्याप)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** यो लिगेसी अनुरोध-COUNT क्याप अब स्पष्ट रूपमा सेट गर्दा मात्र बाँध्छ। बायाँ सेट नगरिएको (पूर्वनिर्धारित), हेवीवेट च्याट भर्नाको सट्टा `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — द्वारा गेट गरिएको छ, प्रक्रियाको वास्तविक मेमोरी छतबाट आकारको स्वचालित-व्युत्पन्न BYTE बजेट** एउटा प्रक्रिया** (एक V8 ढेर)। दुई ओभरल्यापिङ ~ 750k-टोकन `/v1/responses` रद्द गर्नुहोस् ~ 12 Gi heaps (#7849) — a** मेमोरी-बजेट** चेतावनी, कडा उत्पादन अधिकतम 2 होइन। एक स्वस्थ प्रक्रिया (शेड अनुपात मुनिको ढेर) MAY `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` मार्फत थप समवर्ती लामो `/v1/responses` स्वीकार गर्नुहोस्। दसौं लामो SSE ग्राहकहरू (40-50) हिप + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110 हो, "अधिकतम 2" होइन। "होस्ट प्रयोग गर्न" लाई अन्धाधुन्ध रूपमा उठाउनुले #7849 पुन: परिचय गराउँछ। गुणन गर्नुहोस्** थुप्रो** संग** एन स्वतन्त्र `DATA_DIR` s** (#11024); एक SQLite फाइलमा कहिल्यै `replicas>1` नगर्नुहोस्। |
| `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(स्वतः व्युत्पन्न)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** स्वत: व्युत्पन्न इन्जेस्ट बाइट बजेटको लागि ओभरराइड गर्नुहोस् (टाइटर V8/cgroup मेमोरी छतको 25% 8x क्षणिक प्रवर्धनद्वारा विभाजित)। व्युत्पन्न र स्पष्ट मानहरू 8 MiB–2 GiB मा क्ल्याम्प गर्नुहोस्। प्रभावकारी बजेट भन्दा ठूलो निकाय `413 body_exceeds_budget` सँग तुरुन्तै असफल हुन्छ; व्यक्तिगत रूपमा सेवायोग्य निकायहरू बीचको विवाद पुन: प्रयासयोग्य `503` रहन्छ। 40-50 समवर्ती लामो SSE ग्राहकहरू यो बजेट + हिप हो, कडा "अधिकतम 2" होइन। ट्युनिङ गर्नु अघि `/api/monitoring/health` मा `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` पढ्नुहोस्। |
| `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | BYTE र STRUCTURE हेवीवेट प्रवेश (#10183, #10268, #10437) को लागि हिप-प्रेसर शेड अनुपात (`heapUsed / heap_size_limit`)। `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` विगतको समवर्ती हेवीवेट अनुरोधलाई पुन: प्रयास गर्न मिल्ने `503` सँग मात्र पठाइन्छ जब हिप यो अनुपातमा वा माथि ALSO हुन्छ; स्वस्थ हिपमा यसलाई स्वस्थ-हेडरूम मार्फत भर्ना गरिन्छ। |
| `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (पूर्वनिर्धारित `1`) | `src/shared/middleware/chatBodyAdmission.ts` | स्वस्थ-हिप फास्ट पथ (#10437) को लागि सीमाबद्ध अतिरिक्त क्षमता** दुबै** STRUCTURE र BYTE (`admitChatRequest`, शरीर ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES` सहित)। यो बाध्यता बिना, प्रत्येक व्यस्त-तर-स्वस्थ-हेप अनुरोधले कुनै छत बिना प्रवेशलाई बाइपास गर्यो। एकपटक यी धेरै समवर्ती पट्टाहरू स्वस्थ-हिप पथ मार्फत सक्रिय भएपछि, थप व्यस्त अनुरोधहरू वास्तविक ढेर दबाबमा प्रयोग गरिएको SAME bounded-wait/shed मार्गमा आउँछन्। `0` बाइपास पूर्ण रूपमा असक्षम पार्छ। |
| `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` | कन्जरभेटिभ स्ट्रिङ-साइज टोकन अनुमान जसले अनुरोधलाई हेवीवेटको रूपमा वर्गीकृत गर्दछ; यो एक प्रवेश-लागत प्रोक्सी हो, प्रदायक बिलिङ टोकनीकरण होइन। |
| `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (असक्षम) | `src/shared/middleware/chatBodyAdmission.ts` | वैकल्पिक अप्ट-इन च्याट इतिहास क्याप। पूर्वनिर्धारित रूपमा असक्षम गरिएको: सन्देश गणना डिप्लोइमेन्ट नीति हो, अनुरोधको विश्वव्यापी गुण होइन, र यहाँ क्यापिङले कम्प्रेसन पाइपलाइनले तिनीहरूलाई सेवायोग्य बनाउनु अघि टर्मिनल `413` सँग कुराकानीहरू अस्वीकार गर्दछ। हिप बृद्धि `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` र हिप-प्रेसर शेड द्वारा बाँधिएको छ। हार्ड छत चाहिने मेमोरी-बाधा डिप्लोइमेन्टहरूमा सकारात्मक मान सेट गर्नुहोस्; अतिरिक्तले संरचित कम्प्याक्ट-आवश्यक `413` प्राप्त गर्दछ। |
| `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | एक गैर-स्ट्रिमिङ अपस्ट्रीम प्रतिक्रियाको लागि हार्ड क्याप मेमोरीमा पूर्ण रूपमा बफर गरियो। यस पछि अपस्ट्रीम रिडर रद्द गरियो र अनुरोध छिटो असफल हुन्छ जबसम्म हिप समाप्त हुँदैन जबसम्म अनबाउन्ड स्ट्रिङ बढ्दै जान्छ। |
| `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | अपस्ट्रीम प्रतिक्रिया हेडरहरूबाट अधिकतम तार बाइटहरू फर्वार्ड गरियो। जब बजेट नाघेको छ, तल्लो-प्राथमिकता हेडरहरू (जस्तै, अनुकूलन `x-codex-*`, `x-oai-request-id`) लाई सामान्य रिभर्स-प्रोक्सी हेडर सीमा भित्र रहन छोडिन्छ। ठूलो प्रतिक्रिया हेडर आकारको लागतमा थप अपस्ट्रीम मेटाडेटा फर्वार्ड गर्न उच्च सेट गर्नुहोस्। |
| `OMNIROUTE_QUOTA_RECOVERY_MAX_PER_KEY` | `64` | `src/lib/quota/quotaSessionRecovery.ts` | धेरैजसो कोटा-रिकभरी टिकटहरू (बाँकी, चलिरहेको वा पुष्टिकरणको पर्खाइमा) एउटा API कुञ्जी समाहित हुन सक्छ। एक पटक कुञ्जी सीमामा पुगेपछि, नयाँ मोडले `202` टिकटको सट्टा मूल कोटा त्रुटि प्राप्त गर्दछ; पहिले नै पार्क गरिएको पालो पुन: प्रयास गर्दा अझै पनि यसको टिकट फिर्ता हुन्छ। अमान्य वा गैर-सकारात्मक मानहरूले पूर्वनिर्धारित प्रयोग गर्दछ। |
| `CORS_ORIGIN` | _(अनसेट)_ | `src/server/cors/origins.ts` | लिगेसी एकल-मूल CORS अनुमत सूची। नयाँ परिनियोजनका लागि `CORS_ALLOWED_ORIGINS` प्राथमिकता दिनुहोस्। CORS क्रस-ओरिजिन ब्राउजर API ग्राहकहरूको लागि मात्र हो; प्रमाणिकरण गरिएको ड्यासबोर्डले समान-मूल अनुरोधहरू र सत्र-बाउन्ड 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 प्रमाणीकरण, मोडेल खोज, प्रदायक-नोड आधार URLs (रिमोट rerankyxlbackjad-face, र अन्यहरू बीचमा प्रदान गर्ने)। आउटबाउन्ड मार्गहरू जस्तै रिमोट image/media फेच। यसले निजी वेबहुक लक्ष्यहरूलाई पनि अनुमति दिन्छ, cloud-metadata/link-local अन्तिम बिन्दुहरू बाहेक, जुन यो झण्डा अन हुँदा पनि अवरुद्ध रहन्छ। `BaseExecutor.execute()` मार्फत पठाइएका च्याट अनुरोधहरू तिनीहरूको क्लाउड-मेटाडेटा जाँच राख्नुहोस्। स्थानीय प्रदायकहरूले पूर्वनिर्धारितहरूसँग काम गर्छन्: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (पूर्वनिर्धारित `true`) ले पहिले नै स्थानीय र LAN URLs लाई प्रमाणीकरण, खोज, र प्रदायक-नोड मार्गहरूमा अनुमति दिन्छ; प्रोक्सी-फलब्याक परीक्षण र निजी वेबहुक लक्ष्यहरूले यो झण्डालाई मात्र सल्लाह दिन्छ र यो बन्द हुँदा local/LAN होस्टहरूलाई रोक्छ। `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` लाई ओभरराइड गर्दछ। ड्यासबोर्ड टगलबाट बचत गरिएको मानले यो चरमा अग्रता लिन्छ। |
| `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | local/private ठेगानाहरूमा प्रदायक URLs अनुमति दिनुहोस् (127.0.0.1, localhost, LAN, निजी दायराहरू) प्रदायक प्रमाणीकरण, मोडेल खोज, च्याट, र गार्ड मोडले नियन्त्रित अन्य प्रदायक-सम्पन्न आउटबाउन्ड मार्गहरूको लागि।** पूर्वनिर्धारित `true`** (स्थानीय-पहिलो): गार्डले त्यसपछि क्लाउड-मेटाडेटा अन्तिम बिन्दुहरू — सबै 169.254.0.0/16 र ज्ञात मेटाडेटा होस्टनामहरू (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254) लाई रोक्छ। सार्वजनिक-मात्र मोडको लागि `false` सेट गर्नुहोस्, जसले निजी र लुपब्याक होस्टहरूलाई पनि रोक्छ। गार्डले कुनै पनि DNS लुकअप अघि लेखिएको रूपमा होस्टनाम वा IP शाब्दिक जाँच गर्दछ; सार्वजनिक-मात्र मोडमा सुरक्षित-फेच र्यापरले होस्टनामलाई थप समाधान गर्छ र कुनै पनि निजी जवाफ अस्वीकार गर्दछ। `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/*` मार्गहरू (ट्रान्सक्रिप्सन, स्पीच, अनुवादहरू) लाई लोकलहोस्ट बाहिर होस्ट गरिएको OpenAI- संगत प्रदायक नोड प्रयोग गर्न दिनुहोस्। रिमोट होस्टमा पूर्वनिर्धारित रूपमा — राउटिङ अडियोले बाहिरी पहिचान परिवर्तन गर्दछ र स्पष्ट अपरेटर निर्णय हुनुपर्छ। Loopback/private नोडहरू (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` (र मेमोरी इन्जिनको लुपब्याक पुन: स्टेप) लाई लोकलहोस्ट — a LAN बक्स वा Tailscale peer रनिंग TEI, Infinity, vLLM, इत्यादि बाहिर होस्ट गरिएको OpenAI- संगत प्रदायक नोड प्रयोग गर्न दिनुहोस्। रिमोट होस्टमा पूर्वनिर्धारित — राउटिङ बन्द गर्नुहोस् र explicit explicit निर्णयमा परिवर्तन हुनुपर्छ। लुपब्याक नोडहरू (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` | होस्टनामहरू (अल्पविराम वा ह्वाइटस्पेस छुट्याइएको) जुन प्रदायक-नोड राउटिङले स्थानीय — को रूपमा व्यवहार गर्दछ सामान्यतया OmniRoute को आफ्नै Docker नेटवर्क (`http://reranker:8080/v1`) मा reranker, TEI वा अडियो साइडकारको Docker/Compose सेवा नाम, त्यसैले नोडलाई हार्ड-कोड गरिएको कन्टेनर IP आवश्यक पर्दैन। सूचीबद्ध होस्टहरू प्रत्येक रिमोट नोडको लागि `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` अन नगरी `/v1/rerank`, `/v1/audio/*` र स्थानीय स्वास्थ्य जाँचको लागि योग्य छन्, र `HTTP(S)_PROXY` वा जडानको पिन गरिएको प्रोक्सी मार्फत प्रत्यक्ष रूपमा — भनिन्छ। तिनीहरू अझै पनि जडानको API कुञ्जी पठाउँछन्। केवल एकल-लेबल नामहरू र `.internal`/`.local` नामहरू स्वीकार गरिन्छ; सार्वजनिक FQDNs, IP शाब्दिक र क्लाउड-मेटाडेटा नामहरूलाई चेतावनीको साथ बेवास्ता गरिन्छ। (#14635) |
| `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | जब OIDC सक्षम हुन्छ, पासवर्ड लगइन असक्षम पार्नुहोस् ताकि प्रयोगकर्ताहरूले OIDC एकल साइन-अन मार्फत मात्र प्रमाणीकरण गर्न सक्छन्। बेयर उपनाम `OIDC_DISABLE_PASSWORD_LOGIN` पनि स्वीकार गरिन्छ; उही कुञ्जीको ड्यासबोर्ड फिचर फ्ल्यागले प्राथमिकता लिन्छ। (#10889) |
| `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889) को नंगे उपनाम। |
| `OMNIROUTE_DISABLE_MFA` | `false` | `src/server/auth/dashboardMfa.ts` | अप्ट-इन ड्यासबोर्ड TOTP दुई-कारक लगइनको लागि हराएको उपकरण रिकभरी। जब `true`, दोस्रो कारक मात्र होस्टबाट साइन-इनको लागि छोडिन्छ (लूपब्याक साथी र लुपब्याक `Host`); अन्य मूलबाट रिमोट साइन-इनहरू र `POST /api/cli/connect` लाई अझै पनि कोड चाहिन्छ। स्थानीय रूपमा साइन इन गर्नुहोस्, सेटिङ्हरू → सुरक्षा अन्तर्गत दुई-फ्याक्टर असक्षम गर्नुहोस् (यो सेट गर्दा कोड खाली छोड्न सकिन्छ, त्यसैले अब प्रमाणित नगर्ने कारक हटाउन सकिन्छ; पासवर्ड अझै आवश्यक छ), त्यसपछि यसलाई अनसेट गर्नुहोस्। TOTP पासवर्ड लगइन कभर गर्दछ र `omniroute connect` मात्र — OIDC/SSO साइन-इन पहिचान प्रदायकको आफ्नै दोस्रो कारकमा निर्भर गर्दछ। [AUTHZ_GUIDE](../architecture/AUTHZ_GUIDE.md#optional-totp-two-factor-login-16619) हेर्नुहोस्। |
### कठोर चेकलिस्ट
```bash
# Production security minimum:
AUTH_COOKIE_SECURE=true # Requires HTTPS
REQUIRE_API_KEY=true # Authenticate all proxy calls
ALLOW_API_KEY_REVEAL=false # Never expose keys in UI
CORS_ALLOWED_ORIGINS=https://your.domain.com
MAX_BODY_SIZE_BYTES=5242880 # 5 MB limit
```
---
## 5. इनपुट सेनिटाइजेशन र PII संरक्षण
OmniRoute दुई-तह रक्षा प्रदान गर्दछ: अनुरोध-साइड इंजेक्शन स्क्यानिङ र प्रतिक्रिया-साइड PII स्ट्रिपिङ।
> **⚠️ सीमाहरू:** यी गार्डरेलहरू _best-effort heuristic_ पत्ताहरू हुन्, पूर्ण प्रम्प्ट-इंजेक्शन फायरवाल वा PII DLP प्रणाली होइन। तिनीहरूले झूटा सकारात्मक (बेनाइन persona/RPG प्रम्प्ट फ्ल्याग गरिएको) र गलत नकारात्मकहरू (लीट्सस्पीक, स्पेसिङ, गैर-अंग्रेजी ढाँचाहरू) उत्पादन गर्न सक्छन्। अनुपालनको लागि तिनीहरू एक्लै पर्याप्त छैनन्। मोडहरू ट्युन गर्नुहोस् र तिनीहरूमा भर पर्नु अघि तपाईंको ट्राफिक विरुद्ध परीक्षण गर्नुहोस्।
### अनुरोध-पक्ष: प्रम्प्ट इंजेक्शन गार्ड
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| --------------------------------- | -------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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` | request/response पेलोडहरूबाट प्रख्यात API-कुञ्जी / गोप्य-टोकन ढाँचाहरू रिडेक्ट गर्नुहोस्। अप्ट-इन; मिरर `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 कोड टोकनाइज्ड-रूट कन्टेक्स्ट सेनिटाइजर
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ----------------------------------- | -------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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` (इन्जेक्शन ब्लकहरू + request/response PII रिडेक्शन; मोडहरू स्वतन्त्र छन्) |
| **अनुगमन मात्र** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — लगहरू तर कहिल्यै रोक्दैन |
| **व्यक्तिगत प्रयोग** | सबै असक्षम — शून्य ओभरहेड छोड्नुहोस् |
---
## 6. उपकरण र मार्ग नीतिहरू
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ----------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | LLM tool/function-calling पहुँच नियन्त्रण गर्दछ। `allowlist` = मात्र सूचीबद्ध उपकरणहरू, `denylist` = सबै सूचीबद्ध बाहेक, `disabled` = कुनै प्रतिबन्धहरू छैनन्। |
| `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | पेलोड हेरफेर नियम JSON फाइलको लागि मार्ग (per-model/protocol अपस्ट्रीम ट्वीक्स)। |
| `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` | अप्ट-इन: प्रदायक उपसर्गको आवश्यकताको सट्टा Claude कोड OAuth खाता मार्फत Claude कोड ग्राहकहरूबाट `claude-*` मोडेल IDs मार्ग गर्नुहोस्। स्पष्ट प्रदायक उपसर्गहरू अझै पनि जित्छन्। Claude प्रदायक पृष्ठमा ड्यासबोर्ड टगल मार्फत पनि कन्फिगर गर्न मिल्छ। |
| `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | OmniRoute लाई `redact-thinking-2026-02-12` Anthropic बिटा (खाली हस्ताक्षर मात्र सोच्ने ब्लकहरू) थप्न रोक्नको लागि `false` सेट गर्नुहोस्। `thinking.display: "summarized"` को साथ अनुरोधहरू वास्ता नगरी यसलाई छोड्नुहोस्; क्लाइन्ट-नेगोसिएटेड redact beta वा CC-compatible `requestDefaults.redactThinking` अप्ट-इनले यसलाई राख्छ। Claude OAuth अनुरोधहरूले बीटा (यो Claude कोड 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) को लागि प्रति-मोडेल कन्करन्सी क्याप। राउन्ड-रोबिन कम्बो सेमाफोरलाई प्रति मोडेल ३ समवर्ती अनुरोधहरूमा कुनै ओभरराइड बिना कडा-क्याप गरिएको थियो, त्यो क्याप पछाडि उच्च-समवर्ती ट्राफिकलाई क्रमबद्ध गर्दै। `>= 1` मा मान्य, `<= 32` मा क्ल्याम्प गरियो। |
| `OMNIROUTE_AGENTIC_STALL_FAILOVER` | `false` | `open-sse/services/combo/agenticStallFailover.ts` | अप्ट-इन: `1` (वा `true`) मा सेट गर्नुहोस् ताकि एक कम्बो सदस्यले `finish: stop` + वर्णन + शून्य उपकरण कलहरूको साथ उपकरण-परिणामको जवाफ दिँदै अर्को लक्ष्यमा असफल हुन्छ (प्राथमिकता-लूप रणनीतिहरू, राउन्ड-रोबिन र पिन गरिएका सत्रहरू)। यदि कुनै लक्ष्यले राम्रो गर्दैन भने, रोकिएको जवाफ त्रुटिको सट्टा फर्काइन्छ, र न त प्रदायक ब्रेकर वा मोडेल लकआउट चार्ज गरिन्छ। स्ट्रिम गरिएको मोडहरू ग्राहकबाट फिर्ता राखिएको छ जबसम्म फैसला व्यवस्थित हुँदैन। प्रतिक्रियाहरू API `input` आकार प्रयोग गरी अनुरोधहरू वर्गीकृत गरिएको छैन। पूर्वनिर्धारित OFF। |
| `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | खतरनाक अप्ट-इन जसले OmniRoute को स्थानीय सन्दर्भ-सञ्झ्याल / अधिकतम-इनपुट-टोकन जाँचलाई प्रत्यक्ष एकल-मोडेल अनुरोधहरूको लागि छोड्छ। अपस्ट्रीम प्रदायकहरूले अझै पनि तिनीहरूको वास्तविक सीमाहरू लागू गर्छन्; प्रम्प्ट कम्प्रेसन र मोडेलको आफ्नै आउटपुट-टोकन क्याप सक्रिय रहन्छ। प्रभावकारी प्राथमिकता सुविधा झण्डा 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` | इनलाइन env var मा फाइललाई प्राथमिकता दिने डिप्लोइमेन्टहरूका लागि `OMNIROUTE_SELF_HOSTED_PROVIDERS` को रूपमा उही `providers:` कागजात समात्ने YAML फाइलमा जाने बाटो। कुनै एकले स्व-होस्ट गरिएको प्रविष्टि सक्रिय गर्दछ। |
| `OMNIROUTE_SELF_HOSTED_API_KEY` | _(अनसेट — खुला मार्ग)_ | `open-sse/services/selfHostedEntry.ts` | एकीकृत स्व-होस्ट गरिएको प्रविष्टिको लागि वैकल्पिक साझा API कुञ्जी (D5 स्क्याफोल्ड, प्रति-कुञ्जी कोटा प्रणालीको लागि आरक्षित)। सेट गर्दा, अनुरोधहरूमा `Authorization: Bearer ` समावेश हुनुपर्छ। अनसेट: मार्ग खुला छ, अवस्थित स्व-होस्ट गरिएको स्थानीय-प्रदायक ढाँचा (loopback/trusted-network डिप्लोयमेन्ट) सँग मेल खान्छ। |
| `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(अनसेट)_ | `open-sse/services/routingStrategies.ts` | इनलाइन YAML `strategy:` कागजात डिटरमिनिस्टिक राउटिङ इन्जिन (M2/RIC-740, D3) — blacklist/whitelist, कूलडाउन ब्रेकर, लागत-प्राथमिकता, विलम्बता-सचेत, फलब्याक चेनका लागि। `OMNIROUTE_SELF_HOSTED_PROVIDERS`, per-key भित्र नेस्ट गरिएको इनलाइन `strategy:` ब्लकलाई ओभरराइड गर्दछ। `docs/routing/DETERMINISTIC_ROUTING.md` हेर्नुहोस्। |
| `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(अनसेट)_ | `open-sse/services/routingStrategies.ts` | इनलाइन env var मा फाइललाई प्राथमिकता दिने डिप्लोइमेन्टहरूका लागि `OMNIROUTE_SELF_HOSTED_STRATEGY` को रूपमा उही `strategy:` कागजात समात्ने YAML फाइलमा जाने बाटो। |
| `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(अनसेट)_ | `open-sse/services/conversationTracker.ts` | वार्तालाप इतिहास सङ्कलन रोक्नको लागि `1` सेट गर्नुहोस्। `resolveConversationId()` SQLite पढ्न वा सन्देश इतिहास पार्स गर्नु अघि ट्र्याक नगरिएको नतिजा फर्काउँछ, र क्लाइन्ट-सप्लाई गरिएको सत्र IDs पनि कभर गरिएको छ। रूटिङ-सत्र ह्यान्डलिंग अपरिवर्तित छ र अवस्थित रेकर्डहरू मेटिएका छैनन्। ड्यासबोर्डको वार्तालाप दृश्य प्रयोग नगर्ने र टर्न टेबल बढ्न नदिन चाहने डिप्लोयमेन्टहरूका लागि। |
| `OMNIROUTE_NADIR_API_KEY` | _(अनसेट)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | अप्ट-इन `nadir` अटो-कम्बो राउटर रणनीतिको लागिAPI कुञ्जी, कम्बोको आफ्नै `config.nadir.apiKey` सेट नभएको बेला प्रयोग गरिन्छ। ऐच्छिक: किलेस कलहरू नादिरको बेनामी टियरमा ल्यान्ड हुन्छन्, जुन दर-सीमित प्रति IP छ र त्यसैले साझा गेटवे पछाडि प्रयोग गर्न मिल्दैन। संवेदनशील; कम्बोहरूले फरक खाताहरू प्रयोग गर्दा प्रति-कम्बो क्षेत्रलाई प्राथमिकता दिनुहोस्। |
| `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | नादिर निर्णय API को आधार उत्पत्ति, कम्बोको आफ्नै `config.nadir.baseUrl` सेट नभएको बेला प्रयोग गरिन्छ। केवल एक सेल्फ-होस्ट गरिएको नादिरको लागि आवश्यक छ, जसले तपाईंको आफ्नै नेटवर्क भित्र द्रुत हेडहरू राख्छ। एक पछि लाग्ने `/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` | IANA समयक्षेत्र (उदाहरणका लागि `Asia/Shanghai`) जसले `calendar` साप्ताहिक विन्डोको लागि सोमबार 00:00 परिभाषित गर्दछ। अनसेट वा अमान्य: OmniRoute प्रक्रियाको समय क्षेत्र (होस्ट वा कन्टेनरको `TZ`, जुन प्राय: सेट नगरिएको हुन्छ, जस्तै समन्वित विश्वव्यापी समय, कन्टेनर छविहरूमा)। `provider` मोडमा बेवास्ता गरियो। |
| `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | अनुरोधमा अनुमति दिइएको उपकरणहरूको पूर्वनिर्धारित अधिकतम संख्या (OpenAI पूर्वनिर्धारित)। सकारात्मक पूर्णांक मात्र; अनसेट वा अमान्य मानहरू `128` राख्नुहोस्। known/proactive सीमा (`grok-cli` 200, `nvidia` 1536) को साथ एक प्रदायकले अझै पनि आफ्नै क्याप — लागू गर्दछ यसले पूर्वनिर्धारित छत मात्र सार्छ। क्लाउड-ढाँचा लक्ष्यहरूमा कुनै पूर्वनिर्धारित क्याप छैन (सन्देश API सँग कुनै पनि छैन); सिकेको सीमा अझै पनि लागू हुन्छ। |
| `OMNIROUTE_TOOL_OUTPUT_IMAGE_MAX_COUNT` | `16` | `open-sse/translator/request/openai-responses.ts` | च्याट अनुवादका लागि प्रतिक्रियाहरू: कतिवटा उपकरण-आउटपुट छविहरू (`function_call_output`, `custom_tool_call_output`, रोल `tool`) प्रति अनुरोध प्रयोगकर्ता छवि भागहरूको रूपमा पुन: पठाइन्छ। सबैभन्दा नयाँ राखिएको छ र प्रत्येक पुरानो यसको `tool_call_id` सँग पाठ प्लेसहोल्डर हुन्छ। सकारात्मक पूर्णांक मात्र; अनसेट वा अमान्य मानहरू `16` राख्नुहोस्। |
| `OMNIROUTE_TOOL_OUTPUT_IMAGE_MAX_BYTES` | `20971520` (20 MB) | `open-sse/translator/request/openai-responses.ts` | एउटै अनुवादमा प्रति अनुरोध URLs पुन: पठाइएको उपकरण-आउटपुट छविको कुल आकार। प्रति अनुरोध एक चेतावनीको साथ, बजेट विगतका छविहरू सबैभन्दा पुरानो पहिले हटाइएको छ। सकारात्मक पूर्णांक मात्र; अनसेट वा अमान्य मानहरू `20971520` राख्नुहोस्। |
| `OMNIROUTE_RESPONSES_STRICT_TOOL_HISTORY` | `false` | `open-sse/translator/helpers/responsesToolHistory.ts` | कसरी असंगत प्रतिक्रिया उपकरण इतिहास ह्यान्डल गरिएको छ: कल बिनाको आउटपुट, आउटपुट बिनाको कल, हराइरहेको, ओभरलङ् वा अवैध `call_id`, वा विकृत ऐतिहासिक तर्कहरू। बन्द, OmniRoute इतिहास मर्मत गर्दछ र यसलाई पठाउँछ (अनाथ आउटपुटहरू छोडिन्छ, अनुत्तरित कलहरूले खाली आउटपुट प्राप्त गर्दछ, ids minted वा क्ल्याम्प गरिएको छ, विकृत तर्कहरू `{}` बन्छन्)। मा, अनुरोध प्रेषण अघि एक `400` हुन्छ; एक वैध इतिहास पठाइएको रूपमा यसको कल आईडी र JSON तर्कहरू फर्वार्ड गरिन्छ। `true` वा `1` स्वीकार गर्दछ; कुनै पनि अन्य मान पूर्वनिर्धारित राख्छ। |
| `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(चालू)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai प्रम्प्ट-इमुलेटेड उपकरण कलिङ: अनसेट वा `1`/`true`/`on`/`yes` ले स्थानीय उपकरण सूचीलाई प्रम्प्टमा इन्जेक्ट गर्छ; कुनै पनि अन्य मान (जस्तै `0`) ले त्यो इंजेक्शन छोड्छ। |
---
## 7. URLs र क्लाउड सिंक
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | `/api/sync/cloud` कल गर्न आन्तरिक सिंक कार्यहरूको लागि सर्भर-साइड URL । एप सार्वजनिक रूपमा प्रोक्सी भएको अवस्थामा पनि यसलाई loopback/container URL को रूपमा राख्नुहोस्। A2A कौशलहरूले यसलाई प्रयोग गर्दछ ( `OMNIROUTE_BASE_URL` हेर्नुहोस्) र सार्वजनिक प्लेन-http URL मा API कुञ्जी पठाउनुको सट्टा असफल हुन्छ। |
| `CLOUD_URL` | _(खाली)_ | `src/lib/cloudSync.ts` | क्लाउड रिले अन्तिम बिन्दु URL (प्रिमियम सुविधा)। |
| `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | क्लाउड सिंक अनुरोधहरूको लागिHTTP टाइमआउट। |
| `OMNIROUTE_BUILD_PROFILE` | `full` | वेबप्याक निर्माण कन्फिगरेसन | निर्माण-समय प्रोफाइल (बन्डलबाट विशेषाधिकार प्राप्त मोड्युलहरू शारीरिक रूपमा बहिष्कार गर्न `minimal` मा सेट गर्नुहोस्)। |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ स्ट्यान्डअलोन आउटपुट_ | `scripts/build/colocate-standalone.mjs` | पोस्ट-बिल्ड कोलोकेशन चरण द्वारा खपत स्ट्यान्डअलोन आउटपुट डाइरेक्टरीको लागि निर्माण-समय ओभरराइड। रनटाइम सेटिङ होइन। |
| `OMNIROUTE_DIST_DIR` | `dist/` (रिपो रूट) | `scripts/build/prepublish.ts` | निर्देशिकाको लागि निर्माण-समय ओभरराइड प्रकाशन चरण (`prepublish.ts`) ले CLI बन्डललाई रेपो रूट अन्तर्गत `dist/` को सट्टामा लेख्छ। निर्माण अघि डाइरेक्टरी मेटाइन्छ। रनटाइम सेटिङ होइन। |
| `OMNIROUTE_CLOUD_SYNC_SECRET` | _(खाली)_ | `src/lib/cloudSync.ts` | क्लाउड सिंक प्रतिक्रियाहरूको HMAC-SHA256 हस्ताक्षर प्रमाणित गर्न साझा गोप्य प्रयोग गरियो। |
| `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Cloud Sync endpoint लाई स्थानीय प्रमाणहरू अधिलेखन गर्न अनुमति दिन `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, ड्यासबोर्ड लिङ्कहरू, र उत्पन्न सार्वजनिक URLs को लागि सार्वजनिक-फेसिङ URL । यसलाई स्थिर सार्वजनिक URL मा सेट गर्नुहोस् जब OAuth कलब्याक वा उत्पन्न ब्राउजर लिङ्कहरूले क्यानोनिकल रिभर्स-प्रोक्सी होस्ट प्रयोग गर्नुपर्छ। |
| `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` | कुनै उत्पत्ति थाहा नभएको बेला प्रदर्शन URLs को लागि क्लाइन्ट-साइड फलब्याक पोर्ट (SSR/tests); `PORT` अघि पढ्नुहोस्। |
| `OMNIROUTE_PUBLIC_BASE_URL` | _(अनसेट)_ | सार्वजनिक-मूल समाधानकर्ता, छवि URLs | सार्वजनिक URL उत्पादन र गैर-ड्यासबोर्ड ब्राउजर-मूल प्रमाणीकरणको लागि प्रयोग गरिएको उच्च प्राथमिकता ब्राउजर-फेसिङ OmniRoute मूल। यो सेट गर्नुहोस् जब OpenWebUI वा अर्को रिले आन्तरिक URL द्वारा OmniRoute पुग्छ तर प्रयोगकर्ताको ब्राउजरले LAN, टनेल, वा सार्वजनिक मूलबाट उत्पन्न मिडिया ल्याउनु पर्छ। गर** होइन** `/v1` समावेश गर्नुहोस्। |
| `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(अनसेट)_ | `open-sse/config/providerPluginManifestUrl.ts` | निरपेक्ष प्रदायक प्लगइन प्रकट URL साइडकार ग्राहकहरूलाई विज्ञापित। सेट नगर्दा, OmniRoute अनुरोध मूल वा HOST/PORT. बाट `/api/v1/provider-plugin-manifest` प्राप्त गर्छ |
| `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | प्रोटोकल प्रदायक प्लगइन manifest URL HOST/PORT बाट अनुरोध मूल बिना प्राप्त गर्दा प्रयोग गरिन्छ। कुनै स्पष्ट `OMNIROUTE_PROVIDER_MANIFEST_URL` सेट नभएको बेला TLS-समाप्त सार्वजनिक प्रोक्सीको पछाडि `https` मा सेट गर्नुहोस्। |
| `OMNIROUTE_TRUST_PROXY` | _(अनसेट)_ | `src/server/origin/publicOrigin.ts` | फर्वार्ड गरिएको सार्वजनिक-मूल हेडरहरूको लागि वैकल्पिक विश्वास मोड। = अनसेट गर्नुहोस् सुरक्षा निर्णयहरूको लागि `Forwarded` / `X-Forwarded-*` लाई विश्वास नगर्नुहोस्। `true` / `loopback` ले टोकन-स्ट्याम्प गरिएको लुपब्याक प्रोक्सीबाट मात्र host/proto फर्वार्ड गर्दछ। `private` / `lan` निजी-LAN प्रोक्सी साथीहरूलाई पनि विश्वास गर्छ, `API_PORT` ब्रिजलाई यस्तो साथीको `X-Forwarded-For` राख्न दिन्छ, र LOCAL_ONLY मार्गहरूलाई निजी-नेटवर्क क्लाइन्ट स्वीकार गर्न दिन्छ जुन यस्तो प्रोक्सी रिपोर्ट गर्दछ (कहिल्यै क्लाउडफ्लेयर-टनेल अनुरोध, लुपब्याक-मात्र चेन, वा CLIken-toback-loopengate)। उत्पादनमा स्पष्ट `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` | async कलब्याक URLs रचना गर्न प्रयोग गरिएको सार्वजनिक मूल। 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` | आधिकारिक एपीआई-कुञ्जी-प्रमाणीकृत OpenCode Go प्रयोगको अन्तिम बिन्दु प्रयोग पृष्ठ द्वारा प्रयोग गरिएको। रिले / परीक्षण फिक्स्चरको लागि ओभरराइड। |
| `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | opencode-go/zen अपस्ट्रिम अनुरोधहरूमा OpenCode CLI पहिचान हेडरहरू (प्रयोगकर्ता-एजेन्ट, x-opencode-client/project, request/session UUIDs) लाई सिन्थेसाइज गर्नुहोस्, क्लाइन्टले नपठाएको 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` ओभरराइड सेट गरिएको छैन। ओपनकोड निष्पादकहरूमा मात्र लागू हुन्छ। कुञ्जीविहीन अनुरोधमा अपस्ट्रिम गेटहरू, कन्फिगर गरिएको मान जसले `opencode/= 1.17>` बोक्न सक्दैन यो पूर्वनिर्धारितद्वारा अस्वीकार गर्नुको सट्टा बदलिन्छ। |
| `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (मा) | `open-sse/utils/opencodeHeaders.ts` | क्लाइन्ट एप-एट्रिब्युसन हेडरहरू (`x-session-id`, `x-title`, `http-referer`) अपस्ट्रिम प्रदायकहरूमा फर्वार्ड गर्नुहोस्, त्यसैले सूचीबद्ध हार्नेस भित्र सुरु हुने अनुरोधले राउटर मार्फत आफ्नो पहिचान राख्छ (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` | प्रदायकहरूको प्रभावकारी सेट जसको अपस्ट्रीम विफलताहरू egress IP द्वारा बकेट गरिएको छ (एक 429 पार्कहरू प्रत्येक भाइबहिनी जडान साझा गर्ने IP)। अनसेटले फ्रि-टियर पूर्वनिर्धारित `opencode,opencode-go,opencode-cli` प्रयोग गर्दछ; `none`/`off`/`false`/`0` ले क्यास्केड पूर्ण रूपमा अक्षम गर्दछ; अल्पविराम-विभाजित सूचीले सेटलाई प्रतिस्थापन गर्छ। सशुल्क योजनाहरू खाता-बकेट अपस्ट्रीम हुन् र यसलाई सुरक्षित रूपमा असक्षम गर्न सक्छन् (#9611)। |
| `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(अनसेट)_ | `open-sse/config/providerErrorRules.ts` | कोटा-अस्वीकार निकास रोटेशन स्कोप। अनसेटले माथिको आईपी-बकेट गरिएको परिवारको लागि मात्र 429 मा पूल सदस्यलाई अलग राख्छ; `all` ले प्रत्येक प्रदायकलाई लेख्ने विस्तार गर्दछ, त्यसैले सदस्य मार्फत प्राप्त भएको दर सीमाले अर्को ठाउँमा अर्को छनौट निकास दिन्छ। `all` बाहेक कुनै पनि मान बेवास्ता गरिन्छ। `PROXY_SKIP_RECENTLY_FAILED` आवश्यक छ (पूर्वनिर्धारित रूपमा)। स्टोरलाई इग्रेस ठेगानाले कुञ्जी राखिएको छ, (प्रदायक, ठेगाना) होइन, त्यसैले प्रत्येक प्रदायकका लागि अवधि समाप्त नभएसम्म (५ मिनेट, दोब्बर 15 सम्म) 429 पार्कहरू फराकिलो बनाइएको छ। प्रति प्रतिक्रिया परिणाम पढ्नुहोस्, त्यसैले पुन: सुरु नगरी परिवर्तन लागू हुन्छ। |
| `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(अनसेट)_ | `open-sse/executors/opencodeFreeTierContract.ts` | कुञ्जीविहीन OpenCode अनुरोधहरू (स्ट्रिमिङ झण्डा र उपकरण सूची) को मुख्य भाग समायोजन रोक्न `off` मा सेट गर्नुहोस्। हेडरहरू अझै पनि लागू छन्। प्रति अनुरोध पढ्नुहोस्, त्यसैले परिवर्तन तुरुन्तै प्रभावकारी हुन्छ। |
| `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(अनसेट)_ | `open-sse/executors/opencodeFreeTierContract.ts` | अल्पविराम-विभाजित उपकरण नामहरू कुञ्जीविहीन OpenCode अनुरोधमा घोषणा गर्नका लागि जुन कुनै पनि छैन, जब त्यो मोडेलको लागि अझै केही पनि अवलोकन गरिएको छैन। खाली एकल प्लेसहोल्डरमा फर्किन्छ मोडेललाई कल नगर्न भनिएको छ। बढीमा ३२ प्रविष्टिहरू, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; अवैध प्रविष्टिहरूलाई बेवास्ता गरिन्छ। |
| `OPENCODE_FREE_TIER_CREDENTIAL` | `public` | `open-sse/executors/opencodeFreeTierContract.ts` | गेट गरिएको फ्रि-टियर लेन (`https://opencode.ai/inference/v1`) मा प्रमाण पत्र पठाइयो। 2026-10-21 देखि त्यो लेनले वास्तविक API कुञ्जीमा 403 `Model access is disabled` जवाफ दिन्छ र यसको सट्टा बेनामी शाब्दिक सेवा गर्दछ। `key` अपरेटरको API कुञ्जी राख्छ, `none`/`off` ले कुनै क्रेडेन्सियल हेडर पठाउँदैन, कुनै अन्य शाब्दिक वाहक टोकनको रूपमा पठाइन्छ। प्रति अनुरोध पढ्नुहोस्। |
| `OPENCODE_FREE_TIER_RELAY_URL` | सेट नगरिएको | `src/lib/opencodeFreeRelay.ts` | गेट गरिएको फ्री-टियर OpenCode अनुरोधहरूको लागि Bun रिलेको आधार URL । सेट गर्दा, ती अनुरोधहरू OpenCode CLI प्रणाली प्रम्प्ट र उपकरण सेट बोक्छन् र रिले (`scripts/ops/opencode-free-relay.ts`) मार्फत पठाइन्छ, किनभने अपस्ट्रीमले गैर-बन HTTP ग्राहकहरूलाई 429 जवाफ दिन्छ। लुपब्याक URLs सर्भरसँग सुरु हुन्छ जब `bun` PATH मा हुन्छ; URL मा बाटो बेवास्ता गरिएको छ। प्लेन `http://` लुपब्याक होस्टहरूका लागि मात्र स्वीकार गरिन्छ (`localhost`, `127.0.0.0/8`, `::1`); कुनै पनि अन्य होस्टले `https://` प्रयोग गर्नुपर्छ, अन्यथा अनुरोधहरू स्पष्ट त्रुटिको साथ असफल हुन्छन्। च्याट पूरा मात्र। प्रति अनुरोध पढ्नुहोस्। |
| `OPENCODE_FREE_RELAY_BUN` | PATH मा`bun` | `src/lib/opencodeFreeRelay.ts` | Bun बाइनरी रिले सुरु गर्न प्रयोग गरियो। |
| `OPENCODE_FREE_RELAY_SCRIPT` | प्याकेज रूट अन्तर्गत `scripts/ops/opencode-free-relay.ts` | `src/lib/opencodeFreeRelay.ts` | रिले लिपिको मार्ग। पूर्वनिर्धारित स्थापना प्याकेज रूटबाट समाधान गरिएको छ, त्यसपछि काम गर्ने डाइरेक्टरी। |
| `OPENCODE_FREE_RELAY_HOST` | `127.0.0.1` | `scripts/ops/opencode-free-relay.ts` | रिले सुन्न होस्ट। |
| `OPENCODE_FREE_RELAY_PORT` | `20199` | `scripts/ops/opencode-free-relay.ts` | रिले सुन्न पोर्ट। |
| `OPENCODE_FREE_RELAY_UPSTREAM` | `https://opencode.ai` | `scripts/ops/opencode-free-relay.ts` | रिले फर्वार्ड गर्न उत्पत्ति गर्नुहोस्। `https://` हुनुपर्छ (`http://` केवल लुपब्याक परीक्षण उत्पत्तिको लागि); रिले अन्यथा सुरु गर्न अस्वीकार गर्दछ। |
| `OPENCODE_FREE_RELAY_TOKEN` | सेट नगरिएको | `scripts/ops/opencode-free-relay.ts`, `open-sse/executors/opencodeRelay.ts` | साझा गोप्य। OmniRoute `x-opencode-relay-auth` मा पठाउँछ; रिले बिना 401 जवाफ दिन्छ। आवश्यक छ: गैर-लूपब्याक `OPENCODE_FREE_RELAY_HOST` को साथ रिले बिना सुरु गर्न अस्वीकार गर्दछ। |
| `OPENCODE_FREE_RELAY_PROXY_ALLOWLIST` | सेट नगरिएको | `scripts/ops/opencode-free-relay.ts` | अल्पविराम-विभाजित `host` वा `host:port` egress प्रोक्सीहरू एक गैर-लूपब्याक रिले कलरहरूबाट स्वीकार गर्दछ (`x-opencode-relay-proxy`); कुनै पनि अन्य प्रोक्सी उत्तरहरू 403। लुपब्याक बाइन्डमा बेवास्ता गरियो। |
| `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | Ollama क्लाउड सेटिङहरू URL कोटा स्क्र्यापिङको लागि प्रयोग गरियो। रिले / परीक्षण फिक्स्चरको लागि ओभरराइड। |
| `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Ollama क्लाउडले अपस्ट्रीम ब्यालेन्स एन्डपोइन्ट (`GET https://ollama.com/api/balance`, `Authorization: Bearer `) दस्तावेजीकरण गरेको छ। मोड्युल लोडमा एक पटक पढ्नुहोस्। जडानमा API कुञ्जी हुँदा Ollama क्लाउड कोटाको लागि पहिले प्रयोग गरियो; सेटिंग्स-पृष्ठ कुकी स्क्र्यापर फलब्याकको रूपमा रहन्छ। रिले / परीक्षण फिक्स्चरको लागि ओभरराइड। |
| `OLLAMA_USAGE_COOKIE` | _(अनसेट)_ | `open-sse/services/usage.ts` | Ollama Cloud `__Secure-session` कुकी सेटिङ-पृष्ठ कोटा स्क्र्यापिङको लागि प्रयोग गरियो। संवेदनशील; धेरै खाताहरू कन्फिगर हुँदा प्रति-जडान ड्यासबोर्ड फिल्डलाई प्राथमिकता दिनुहोस्। |
| `OLLAMA_CLOUD_USAGE_COOKIE` | _(अनसेट)_ | `open-sse/services/usage.ts` | वैकल्पिक Ollama क्लाउड `__Secure-session` कुकी env var। संवेदनशील; धेरै खाताहरू कन्फिगर हुँदा प्रति-जडान ड्यासबोर्ड फिल्डलाई प्राथमिकता दिनुहोस्। |
| `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(अनसेट)_ | `open-sse/services/usage.ts` | वैकल्पिक Ollama Cloud `__Secure-session` कुकी env var छोटो उपनामहरू अघि प्रयोग गरियो। संवेदनशील; धेरै खाताहरू कन्फिगर हुँदा प्रति-जडान ड्यासबोर्ड फिल्डलाई प्राथमिकता दिनुहोस्। |
| `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | CodeWhisperer (AWS Kiro) उपयोग सीमा अन्त्य बिन्दु। रिले / परीक्षण फिक्स्चरको लागि ओभरराइड। |
> [!IMPORTANT]
> रिभर्स प्रोक्सी (nginx, Caddy) को पछाडि डिप्लोइ गर्दा, `NEXT_PUBLIC_BASE_URL` आफ्नो स्थिर सार्वजनिक URL (जस्तै, `https://omniroute.example.com`) मा सेट गर्नुहोस् जब OAuth कलब्याक वा उत्पन्न सार्वजनिक लिङ्कहरूले त्यो होस्टनाम प्रयोग गर्नुपर्छ। यो बिना, OAuth कलब्याकहरू असफल हुन सक्छन् किनभने redirect_uri मेल खाँदैन र उत्पन्न सार्वजनिक लिङ्कहरूले आन्तरिक कन्टेनर मूलमा देखाउन सक्छ।
>
> सर्भर-देखि-सर्भर कार्यहरूको लागि `BASE_URL` आन्तरिक loopback/container URL को रूपमा राख्नुहोस्। ब्राउजर `Origin` वा सार्वजनिक होस्टनाम क्रेडेन्सियल-असर गर्ने आन्तरिक सेल्फ-फेचहरूको लागि प्रयोग नगर्नुहोस्।
>
> प्रमाणीकृत ड्यासबोर्ड लेख्नलाई स्थिर सार्वजनिक आधार URL आवश्यक पर्दैन: ड्यासबोर्डले सत्र-बाउन्ड CSRF टोकनको साथ समान-मूल असुरक्षित अनुरोधहरू पठाउँछ। OmniRoute अझै पनि गैर-ड्यासबोर्ड ब्राउजर एकीकरणका लागि सार्वजनिक-मूल प्रमाणीकरण केन्द्रीकृत गर्दछ: स्पष्ट सार्वजनिक URL env vars पहिले विश्वास गरिन्छ; कच्चा `Forwarded` / `X-Forwarded-*` हेडरहरूलाई बेवास्ता गरिन्छ जबसम्म `OMNIROUTE_TRUST_PROXY` सक्षम गरिएको छैन र तत्काल प्रोक्सी साथीलाई विश्वसनीय रूपमा टोकन-स्ट्याम्प गरिएको छ। समान-मूल ड्यासबोर्ड अनुरोधहरू ठीक गर्न CORS सेटिङहरू प्रयोग नगर्नुहोस्; CORS क्रस-ओरिजिन ब्राउजर ग्राहकहरूको लागि मात्र हो।
---
## 8. आउटबाउन्ड प्रोक्सी
रुट अपस्ट्रीम LLM प्रदायकले निकास नियन्त्रण, भू-रुटिङ, वा IP मास्किङको लागि 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 प्रमाणपत्र प्रमाणीकरण, प्रोक्सी प्रमाणीकरण, जडान सीमा, र जीवित सेटिङहरू सुरक्षित गर्दछ। यसलाई परिवर्तन गरेपछि OmniRoute पुन: सुरु गर्नुहोस् किनभने डिस्प्याचरहरू क्यास हुन्छन् र रिले एजेन्टहरू स्टार्टअपमा सिर्जना हुन्छन्। स्विचले wreq TLS फिंगरप्रिन्टिङ वा प्रदायक-विशेष यातायातहरू नियन्त्रण गर्दैन।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------------------- | -------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | अपस्ट्रिम कलहरूको लागि SOCKS5 प्रोक्सी एजेन्ट सक्षम गर्नुहोस्। `false` सँग अप्ट-आउट गर्नुहोस्। |
| `OMNIROUTE_GZIP_REQUEST_BODIES` | `true` | `open-sse/executors/base/gzipRequestBody.ts` | आधिकारिक `api.anthropic.com` (4096 + क्यारेक्टरहरू, सिधा जडानहरू मात्र; प्रोक्सी पछाडि छोडियो, TLS प्रतिरूपण वा `NODE_EXTRA_CA_CERTS`) मा पठाइएको अनुरोधको निकायलाई Gzip गर्नुहोस्। Anthropic gzip मात्र स्वीकार गर्छ। अस्वीकार गरिएको एन्कोडिङ (415, गैर-एन्थ्रोपिक 400/403, वा एक मूल JSON-parse 400) एक पटक असम्पीडित गरी पठाइन्छ र मूल एक घण्टाको लागि असम्पीडित रहन्छ। `0`, `false`, `off` वा `no` सँग अप्ट-आउट गर्नुहोस्। |
| `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` | लुपब्याक भन्दा बाहिर स्थानीय-कोर चयनकर्ता-नियन्त्रण लक्ष्यहरूको लागि अनुमति-सूची (comma/space अलग होस्टहरू वा IPs, `*` LAN/private खोल्छ तर 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` | रिबाउन्ड विन्डो (एमएस) क्यापिङ दोहोरिने `proxy.set_aside` वेबहुक अलर्टहरू प्रति पूल सदस्य जसले अस्वीकारहरूको फटले एउटा घटना पठाउँछ। प्रत्येक उत्सर्जन मा पढ्नुहोस्। `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` | एकल URL मा प्रोक्सी इग्रेस प्रोब द्वारा प्रयोग गरिएको इको-आईपी लक्ष्य पिन गर्दछ। सेट नगरिएको, प्रोबले `api64.ipify.org` त्यसपछि `api4.ipify.org` प्रयास गर्छ त्यसैले IPv4-only सुरुङहरू मृत रिपोर्ट गरिएको छैन (#9694)। |
| `NO_PROXY` | _(अनसेट)_ | Node.js मानक | प्रोक्सी बाइपास गर्न अल्पविराम-विभाजित hostnames/IPs । |
| `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | प्रति क्यास गरिएको HTTP/SOCKS प्रोक्सी डिस्प्याचर अधिकतम समवर्ती सकेटहरू। लामो समयसम्म चल्ने SSE स्ट्रिमहरू जस्तै Codex `/v1/responses` लाई एक भन्दा बढी जडान चाहिन्छ जब धेरै अनुरोधहरूले एउटै खाता-स्तर प्रोक्सी साझा गर्दछ। `256` माथिका मानहरू क्याप गरिएका छन्। |
| `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | SOCKS5 ह्यान्डशेक (जडान) ms मा टाइमआउट। जब एक एकल आवासीय गेटवे होस्टलाई उच्च सहमति (जस्तै 100 एक साथ अनुरोधहरू) — द्वारा हिट हुन्छ तब यसलाई उठाउनुहोस् प्रोक्सी पहुँचयोग्य भए तापनि वास्तविक ह्यान्डशेक 10 सेकेन्ड भन्दा बढी हुन सक्छ, जुन अन्यथा गलत `[Proxy Fast-Fail] Proxy unreachable` को रूपमा देखा पर्दछ। `120000` मा क्याप गरियो। |
| `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | जब `false` (पूर्वनिर्धारित), एक अनुरोध जसको तोकिएको प्रोक्सी समाधान गर्न असफल हुन्छ** अस्वीकार गरिएको (असफल-बन्द)** प्रत्यक्ष जडानमा फर्किनुको सट्टा — वास्तविक-आईपी लीकलाई रोक्छ। लिगेसी DIRECT फलब्याक पुनर्स्थापना गर्न `true` सेट गर्नुहोस्। |
| `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | wreq-js प्रयोग गरेर Spoof TLS फिंगरप्रिन्ट (Chrome 124 को नक्कल गर्दछ)। JA3/JA4 अवरुद्ध काउन्टरहरू। |
| `TLS_FINGERPRINT_PROVIDERS` | _(अनसेट)_ | `open-sse/utils/proxyFetch.ts` | नयाँ प्रोक्सी TLS राउटिङ (`open-sse/utils/proxyFetch.ts`) को लागि अल्पविराम-विभाजित प्रदायक अनुमति सूची। डाइरेक्ट TLS ले आफ्नो लिगेसी व्यवहारलाई सेट नगर्दा राख्छ; यी प्रदायकहरूले मात्र Chrome-124 फिंगरप्रिन्ट ब्रिज मार्फत रुट गर्छन्। Groq (`api.groq.com`) लाई अनुमति दिइएको सूची अनसेट गरिएको अवस्थामा पनि बहिष्कृत गरिन्छ, किनभने क्रोम JA3 Cloudflare 1010 ट्रिगर गर्दछ जबकि नेटिभ undici API मा पुग्छ। |
| `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Claude टर्नस्टाइल Playwright ब्राउजर सन्दर्भलाई HTTPS प्रमाणपत्र त्रुटिहरू बेवास्ता गर्न अनुमति दिनुहोस्। |
### परिदृश्यहरू
| परिदृश्य | कन्फिगरेसन |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **SOCKS5 SSH सुरुङ मार्फत** | `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` (पूर्वनिर्धारित) छोड्नुहोस्। प्रत्यक्ष मार्फत चुहावट गर्नुको सट्टा प्रोक्सी अनुपलब्ध हुँदा अनुरोधहरू असफल हुन्छन्। |
| **विरासत / dev — प्रत्यक्ष फलब्याक अनुमति दिन्छ** | `PROXY_FAIL_OPEN=true` पूर्व-कठोर व्यवहार पुनर्स्थापित गर्दछ: प्रोक्सी रिजोल्युसन असफल हुँदा प्रत्यक्ष जडान प्रयोग गरियो। |
> **नोट (NVIDIA प्रमाणीकरण बाइपास — #3226):** NVIDIA को एपीआई-कुञ्जी प्रमाणीकरण अन्तिम बिन्दु स्टालहरू जब ग्लोबल proxy/TLS-patched फेच (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 sidecars (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`) पढ्नको लागि गृह डाइरेक्टरी ओभरराइड गर्नुहोस्। निरपेक्ष र प्रक्रिया घर — भित्र हुनुपर्छ** वा** , कन्टेनरमा, बाइन्ड-माउन्ट गरिएको मार्ग (यसरी `/host-home` काम गर्दछ)। अरू जे पनि होम डाइरमा फर्किन्छ। |
| `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | OmniRoute CLI कन्फिगरेसन फाइलहरू (टोकन रिफ्रेस, सत्र डाटा) लेख्न अनुमति दिनुहोस्। स्पष्ट "लेखन असक्षम" त्रुटिको साथ प्रत्येक CLI कन्फिगरेसन लेखन असफल बनाउन `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` कोसिस गर्छ र `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 को प्रणाली राज्य dir (रूट-स्वामित्व भएको प्रमाणीकरण प्रोफाइल); मिरर 5dive को आफ्नै STATE_DIR पूर्वनिर्धारित। |
| `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | CLI बाइनरी जारी राख्न अनुकूलन मार्ग। |
| `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Qoder CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Qwen कोड CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Aider CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Goose CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_WHYCODES_BIN` | `whycodes` | `src/shared/services/cliRuntime.ts` | WhyCodes CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Google Gemini CLI बाइनरी — सर्भर-साइड detection/health जाँचहरूको लागि अनुकूलन मार्ग; `omniroute run gemini` PATH प्रणालीबाट `gemini` बाइनरी समाधान गर्छ। |
| `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | किलो कोड CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | OpenCode CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | हर्मीस बाइनरीमा अनुकूलन मार्ग। दुबै क्याटलग प्रविष्टिहरू (`hermes` र `hermes-agent`) द्वारा साझा गरिएको। |
| `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | ForgeCode CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | jcode CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | DeepSeek TUI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | CodeWhale CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Smelt CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Pi (pi-कोडिङ-एजेन्ट) बाइनरीमा अनुकूलन मार्ग। |
| `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | क्रश CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Oh My Pi (`omp`) एजेन्ट बाइनरीमा अनुकूलन मार्ग। |
| `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Letta CLI बाइनरीमा अनुकूलन मार्ग। |
| `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | प्राइम एजेन्ट (प्रधान बुद्धि) बाइनरीमा अनुकूलन मार्ग। |
| `CLI_WINDSURF_BIN` | _(कुनै पनि छैन)_ | `src/shared/services/cliRuntime.ts` | Windsurf बाइनरीमा अनुकूलन मार्ग। Windsurf जहाजहरू** कुनै पूर्वनिर्धारित आदेश छैन** यो सेट नभएसम्म — बाइनरी पत्ता लगाउन असक्षम रहन्छ। |
| `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Devin CLI बाइनरी (v3.8.0) को लागि अनुकूल मार्ग। Windsurf/Devin निर्वाहक द्वारा प्रयोग गरिएको। |
| `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin डेस्कटप `ide_version`। ओभरराइडहरूले `x.y.z` ढाँचा प्रयोग गर्नुपर्छ; अमान्य मानहरू प्रमाणित पूर्वनिर्धारितमा फर्किन्छन्। |
| `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | बन्डल गरिएको Codeium/language-server `extension_version`, डेस्कटप `ide_version` भन्दा फरक। ओभरराइडहरूले `x.y.z` प्रयोग गर्नुपर्छ; अमान्य मानहरूले बन्डल गरिएको पूर्वनिर्धारित प्रयोग गर्दछ। |
| `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | एजेन्टिक पुल-मात्र Devin CLI ओभरराइड। कार्यकारीले स्थानीय ACP stdio अपस्ट्रीम मात्र स्वीकार गर्दछ। |
| `DEVIN_AGENTIC_HOME` | _(आवश्यक)_ | `open-sse/executors/devin-cli-agentic.ts` | एजेन्टिक Devin उपप्रक्रियाको लागि पूर्ण पृथक घर; स्वीकृत पुल मार्गहरू `/home/bridge` र कार्य-स्थानीय `.sandbox` मार्गहरू हुन् ( Windows, `C:\...\.sandbox\...` मा)। |
| `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | एक Devin ACP टर्नको अधिकतम अवधि पुलले बच्चा समाप्त गर्नु अघि र स्पष्ट टाइमआउट फर्काउँछ। |
| `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | अलग पुलको लागि मुख्य Claude कोड मोडेल उपनाम। लाइभ हार्नेसले उदाहरणलाई हालको Devin खाताद्वारा फिर्ता गरिएको मोडेलसँग बदल्छ। |
| `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude कोडले यसको Sonnet पूर्वनिर्धारित अनुरोध गर्दा अलग ब्रिज उपनाम प्रयोग गरिन्छ। |
| `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude कोडले यसको Opus पूर्वनिर्धारित अनुरोध गर्दा अलग ब्रिज उपनाम प्रयोग गरिन्छ। |
| `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude कोडले यसको हाइकु पूर्वनिर्धारित अनुरोध गर्दा अलग ब्रिज उपनाम प्रयोग गरिन्छ। |
| `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude कोड सबएजेन्टहरूका लागि प्रयोग गरिएको अलग पुल उपनाम। |
| `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Devin CLI कोटा (`GetUserStatus`) द्वारा प्रयोग गरिएको कोडियम सीट-व्यवस्थापन API को लागि वैकल्पिक ओभरराइड। |
| `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | स्थानीय `auggie` प्रदायकले प्रयोग गरेको Augment (Auggie) CLI बाइनरीको लागि पूर्ण-मार्ग ओभरराइड। `CLI_AUGGIE_BIN` मा फर्किन्छ, त्यसपछि PATH लुकअप। |
| `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Augment (Auggie) CLI बाइनरी मार्गको लागि उपनाम ओभरराइड ( `AUGGIE_BIN` पछि जाँच गरियो)। |
| `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | स्थानीय `zcode` प्रदायकको stdio ग्राहकको लागि प्रयोग गरिएको बाइनरी। PATH मा `zcode` मा फर्किन्छ। |
| `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | JSON array (≤ 16 स्ट्रिङहरू) `cliTools` मार्फत सुरु गर्दा `zcode` बाइनरीमा पास गरियो। |
| `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | ZCode एप-सर्भर उपप्रक्रियाको लागि कार्य निर्देशिका। |
| `ZCODE_TRANSPORT` | `app-server` | `open-sse/executors/zcode.ts` | `app-server` (पूर्वनिर्धारित) वा `gateway`।** प्रयोगात्मक / असमर्थित:** `gateway` ZCode क्लाइन्ट प्रोटोकल पुन: उत्पादन गरेर प्रत्यक्ष Z.AI कोडिङ प्लान HTTP अनुरोधहरू पठाउँछ (ह्यान्डशेक र क्लाइन्ट 0.16.9 को प्रमाण-कार्य हेडरमा हस्ताक्षर) र ZCode अद्यावधिक हुँदा तोड्न सक्छ। यसले व्यक्तिगत कोडिङ योजना प्रोफाइल मात्र स्वीकार गर्छ। |
| `ZCODE_PROVIDER_ID` | `account:zai-individual-coding-plan` | `open-sse/executors/zcode.ts` | मोडेल चयनको लागि सटीक नेटिभ प्रदायक प्रोफाइल। सेट नगरिएको बेला, व्यक्तिगत योजना खाता प्रोफाइल प्रयोग गरिन्छ, `builtin:zai-coding-plan` मा फर्किन्छ (व्यक्तिगत कोडिङ योजना कुञ्जी होल्ड गर्ने कन्फिगरेसन प्रविष्टि)। त्यो प्रोफाइल पिन गर्न `account:zai-start-plan` जस्तै सही ID सेट गर्नुहोस्; पिन गरिएको प्रोफाइल कहिल्यै पछाडि पर्दैन। |
| `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | ZCode एप-सर्भर रनटाइमको रूट (जहाँ बन्डल गरिएको `node` र `zcode-server.cjs` लाइभ हुन्छ)। |
| `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | ZCode एप-सर्भर होस्ट गर्न प्रयोग गरिएको नोड कार्यान्वयनयोग्य। |
| `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | ZCode सर्भर होस्ट गर्न प्रयोग गरिएको एप-सर्भर प्रविष्टि स्क्रिप्ट। |
| `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | ZCode एप-सर्भर प्रक्षेपण असफल भएको मानिने अघि स्टार्टअप टाइमआउट (ms)। |
| `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | ZCode एप-सर्भर कलको लागि प्रति-अनुरोध RPC टाइमआउट (ms)। |
| `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | एक ZCode को अधिकतम अवधि (ms) पर्यवेक्षकले समय आउट गर्नु अघि। |
| `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | ZCode पालो पूराको लागि मतदान अन्तराल (ms)। |
| `MINIMAX_CODE_GATEWAY_URL` | `https://agent.minimax.io/mavis/api/v1/llm/v1/messages` | `open-sse/executors/minimaxCodeGateway.ts` | व्यवस्थित MiniMax गेटवेको अन्तिम बिन्दु जसले नेटिभ उपकरण कलहरूको साथ जवाफ दिन्छ। यो MiniMax कोड एपको आन्तरिक अन्तिम बिन्दु हो, कागजात सार्वजनिक API होइन: यो सूचना बिना परिवर्तन हुन सक्छ, र अनुरोध 502 सँग असफल हुन्छ जसले यातायातको नाम दिन्छ। |
| `MINIMAX_CODE_GATEWAY_TIMEOUT_MS` | `60000` | `open-sse/executors/minimax-code.ts` | एउटा व्यवस्थित गेटवे प्रयासको अधिकतम अवधि (ms)। सम्पूर्ण कल (प्रयास, ब्याकअफ, एक पुन: प्रयास) लगभग दुई मिनेट रहन्छ, त्यसैले पहुँचयोग्य गेटवेले लामो समयसम्म मोडेल स्लट राख्न सक्दैन। |
| `MINIMAX_CODE_GATEWAY_RETRIES` | `1` | `open-sse/executors/minimaxCodeGateway.ts` | व्यवस्थित गेटवे कलको पुन: प्रयासहरू जुन क्षणिक त्रुटि (429, 5xx, जडान हटाइएको) सँग असफल हुन्छ। |
| `MINIMAX_CODE_CONTEXT_WINDOW` | `1000000` | `open-sse/executors/minimaxCodeGateway.ts` | प्रबन्धित MiniMax गेटवेको सन्दर्भ सञ्झ्याल सोधिएको छ। MiniMax कोड उत्पादनको मोडेल क्याटलगले 512000 लाई MiniMax-M3 र MiniMax-M3 फ्ल्याशको पूर्वनिर्धारित विन्डोको रूपमा घोषणा गर्दछ र दोस्रोको रूपमा 1000000 प्रस्ताव गर्दछ; गेटवेले ठूलो सञ्झ्यालमा जवाफ दिन्छ (१०२४०५६ इनपुट टोकनको अनुरोधलाई २०२६-१०-२३ मा २०० सँग जवाफ दिइएको थियो)। यसलाई 512000 मा सेट गर्नुहोस् अनुरोध — योजनाले यसलाई कम गणना गर्दछ। प्रत्येक अन्य मानलाई बेवास्ता गरिन्छ, त्यसैले टाइपोले मोडेलमा नभएको सञ्झ्यालको लागि सोध्न सक्दैन। |
| `MINIMAX_CODE_MAX_INPUT_TOKENS` | `1000000` | `open-sse/executors/minimaxCodeGateway.ts` | एउटा अनुरोधको छत (इनपुट टोकनहरूमा) जुन व्यवस्थित MiniMax गेटवेमा पठाइन्छ। एउटा ठूलो अनुरोधलाई फर्वार्ड गर्नुको सट्टा 413 को साथ स्थानीय रूपमा अस्वीकार गरिएको छ, किनभने गेटवेको अस्वीकारले मोडेललाई फलब्याकबाट लक गर्छ। पूर्वनिर्धारित गेटवे (1000000) को सन्दर्भ विन्डो हो; यो मानले त्यो छतलाई कम गर्न सक्छ, यसलाई झ्यालभन्दा माथि कहिल्यै नउठाउनुहोस्। |
| `MINIMAX_CODE_MAX_TOKENS` | `8192` | `open-sse/executors/minimaxCodeGateway.ts` | व्यवस्थित गेटवेले जवाफ दिन सक्ने टोकनहरूको अधिकतम संख्या। |
| `MINIMAX_CODE_AUTH_FILE` | `~/.minimax/auth/prod//mcode-public/auth.json` | `open-sse/executors/minimaxCodeGateway.ts` | MiniMax कोड प्रमाणीकरण प्रोफाइलको पथ जसले पहुँच र ताजा टोकन राख्छ। |
| `MINIMAX_CODE_PROFILE_DIR` | `~/.minimax` | `open-sse/executors/minimaxCodeGateway.ts` | MiniMax कोड प्रोफाइलको निर्देशिका जसले प्रमाणीकरण प्रोफाइल राख्छ। |
| `MINIMAX_CODE_AUTH_RECORD` | _(नयाँ पुस्ता)_ | `open-sse/executors/minimaxCodeGateway.ts` | धेरै खाताहरू भएको बेला प्रयोग गर्नको लागि प्रोफाइलको रेकर्ड। Empty ले नयाँ पुस्तालाई छनोट गर्छ, जुन CLI आफैले ताजा गर्छ। |
| `MINIMAX_CODE_REGION` | `en` | `open-sse/executors/minimaxCodeGateway.ts` | MiniMax खाताको क्षेत्र। यसले खाताको अन्तिम बिन्दुको निर्णय गर्दछ जसले टोकन र प्रोफाइल डाइरेक्टरीलाई रिफ्रेस गर्छ जसबाट प्रमाणहरू पढिन्छ। |
| `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | हर्मीस एजेन्ट गृह निर्देशिका जहाँ OmniRoute reads/writes the Hermes CLI कन्फिगरेसन। Windows (`%LOCALAPPDATA%\hermes`) मा हर्मीस PowerShell स्थापनाकर्ता सेट गरिएको env var सँग मेल खान्छ। |
| `WHYCODES_HOME` | `~/.whycodes` | `src/lib/cli-helper/config-generator/whycodesHome.ts` | WhyCodes उदाहरण रूट जहाँ OmniRoute reads/writes `config.toml`। समान env var WhyCodes पढ्छ; `~/.whycodes` मा पूर्वनिर्धारित ( Windows मा`%USERPROFILE%\.whycodes` )। |
### CLI प्रोफाइल स्वतः सिंक
यी सुविधा झण्डाहरू अप्ट-इन र पूर्वनिर्धारित बन्द छन्। तिनीहरूलाई CLI कोड ड्यासबोर्डबाट पनि टगल गर्न सकिन्छ।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------- | -------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | प्रदायक मोडेल सिंक पछि, लाइभ क्याटलगबाट `~/.codex/*.config.toml` प्रोफाइल फाइलहरू स्वचालित रूपमा पुन: लेख्छ। `CLI_ALLOW_CONFIG_WRITES` आवश्यक छ; active/default Codex कन्फिगरेसन, प्रमाणीकरण, कोडेक्स-lb सेटिङहरू, वा प्रदायक छनोट कहिल्यै परिवर्तन गर्दैन। |
| `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | प्रदायक मोडेल सिंक पछि, लाइभ क्याटलगबाट `~/.claude/profiles//settings.json` Claude कोड प्रोफाइल फाइलहरू स्वचालित रूपमा पुन: लेखिन्छ। `CLI_ALLOW_CONFIG_WRITES` आवश्यक छ; active/default Claude कन्फिगरेसन, प्रमाणीकरण, वा प्रदायक छनोट कहिल्यै परिवर्तन गर्दैन। |
### Docker उदाहरण
```bash
# Mount host binaries into the container and tell OmniRoute where they are:
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` मात्र प्रभाव पार्छ जब पथ वास्तवमा होस्ट — बाट बाइन्ड-माउन्ट गरिएको हुन्छ यसलाई `~/.codex:/host-home/.codex:rw` जस्तै माउन्टहरूसँग जोड्नुहोस् ( `docker-compose.yml` मा `host` प्रोफाइल हेर्नुहोस्)। कन्टेनर प्रयोगकर्ताको घर भित्र न त बाइन्ड माउन्ट भएको बाटोलाई बेवास्ता गरिन्छ, किनभने कन्टेनर पुन: सिर्जना गर्दा त्यहाँ लेख्नु खारेज हुनेछ।
छवि `USER node` को रूपमा चल्छ, त्यसैले एक अनमाउन्ट `/root` हो** होइन** एक वैध ओभरराइड।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------------------- | -------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CONTAINER` | _(स्वचालित)_ | `src/shared/utils/containerEnv.ts` | बल कन्टेनर पत्ता लगाउन (`1`/`true`) वा बन्द (`0`/`false`)। रनटाइममा मात्र आवश्यक छ स्वत: पत्ता लगाउन छुटेको छ। |
| `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | CLI-उपकरण कन्फिगरेसनलाई अनमाउन्ट कन्टेनर मार्गमा लेख्न अनुमति दिनुहोस्। CLI बराबर `--allow-container-write` हो। |
| `DOCKER_UPDATE_TRIGGER_FILE` | सेट नगरिएको | `src/lib/system/autoUpdate.ts` | Docker छवि मात्र: ड्यासबोर्ड** अहिले अपडेट गर्नुहोस्** यो फाइलमा JSON अनुरोध लेख्छ ( `DATA_DIR` भित्र हुनुपर्छ) होस्ट-साइड वाचरको लागि कन्टेनर तान्न र पुन: सिर्जना गर्न। [Docker गाइड](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker) हेर्नुहोस्। |
### CLI बाइनरी (`omniroute`) सहायकहरू
यी चरहरूले `omniroute` CLI बाइनरीको आफ्नै व्यवहारलाई ट्युन गर्दछ (माथि साइडकार पत्ता लगाउने होइन)।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------- | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_LANG` | _(प्रणाली)_ | `bin/cli/i18n.mjs` | CLI आउटपुट भाषा बल गर्नुहोस्। BCP-47 लोकेल (जस्तै `en`, `pt-BR`)। प्रणाली लोकेल env vars (LC_ALL, LC_MESSAGES) लाई ओभरराइड गर्दछ। |
| `OMNIROUTE_SHOW_LOG` | _(अनसेट)_ | `bin/cli/runtime/processSupervisor.mjs` | सर्भर stdout/stderr पर्यवेक्षित मोडमा टर्मिनलमा फर्वार्ड गर्न `1` मा सेट गर्नुहोस्। `omniroute serve` मा `--log` झण्डा बराबर। |
| `OMNIROUTE_CLI_TOKEN` | _(अनसेट)_ | `bin/cli/api.mjs` | `x-omniroute-cli-token` हेडरको रूपमा मेसिन-प्रमाणीकरण टोकन इन्जेक्ट गरियो। कार्य 8.12 मा स्वतः उत्पन्न। |
| `GEMINI_CLI_HOME` | _(अनसेट)_ | `bin/cli/commands/setup-gemini.mjs` | लगातार Gemini घर रूट; एक-शट रनले अस्थायी पृथक घर प्रयोग गर्दछ। |
| `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | सङ्केतित CLI बच्चालाई बलपूर्वक मार्नु अघि मिलिसेकेन्डमा अनुग्रह अवधि। |
| `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(अनसेट)_ | `bin/omniroute.mjs` | पूर्वनिर्धारित प्रयोगकर्ताको डाटा डाइरेक्टरी वातावरण फाइल छोड्न स्पष्ट DATA_DIR सँग १ मा सेट गर्नुहोस्। |
| `OMNIROUTE_SYNC_TOKEN` | _(अनसेट)_ | `bin/cli/commands/sync.mjs` | `omniroute sync bundle` को लागि सिंक टोकन (`GET /api/sync/bundle` सिंक टोकन मात्र स्वीकार गर्दछ, API कुञ्जी होइन)। `--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 आदेशहरूमा stderr मा retry/backoff निदान छाप्न `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 सूचना र ड्यासबोर्ड "अपडेट उपलब्ध" ब्यानर (`GET /api/system/version` त्यसपछि npm, GitHub र समाचार लुकअपहरू छोड्छ)। CLI सूचना CI, शान्त मोड, र गैर-पाठ आउटपुटमा पनि बन्द रहन्छ। |
| `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(व्युत्पन्न)_ | `bin/cli/commands/doctor.mjs` | Liveness URL `omniroute doctor` द्वारा जाँच। प्रोग्रामेटिक `livenessUrl` विकल्पले प्राथमिकता लिन्छ; अन्यथा यो मान शब्दशः प्रयोग गरिन्छ। सेट नगरिएको, CLI ले स्थानीय ड्यासबोर्डको `/api/health/degradation` अन्तिम बिन्दु प्राप्त गर्छ। |
| `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | CLI प्रदायक आदेशहरू द्वारा प्रयोग गरिएको प्रदायक सूची मार्ग। प्रोग्रामेटिक `catalogPath` विकल्पले प्राथमिकता लिन्छ। निरपेक्ष मार्गहरू यस रूपमा प्रयोग गरिन्छ; सापेक्ष मार्गहरू परियोजना रूटबाट समाधान हुन्छ। सेट नगरिएको, CLI ले लेगेसी `providers.ts` फाइललाई फलब्याकको रूपमा प्रदायक स्थिर निर्देशिका प्रयोग गर्दछ। |
| `OMNIROUTE_PROVIDER_TEST_MODEL` | _(प्रदायक पूर्वनिर्धारित)_ | `bin/cli/provider-test.mjs` | CLI प्रदायक जडान परीक्षणहरूको लागि ग्लोबल फलब्याक मोडेल। प्राथमिकता कन्फिगर गरिएको जडान मोडेल, प्रदायक-विशेष मोडेल ओभरराइड, यो मान, त्यसपछि प्रदायकको निर्मित परीक्षण मोडेल। |
---
## 10. आन्तरिक एजेन्ट र MCP एकीकरण
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_BASE_URL` | स्वत: पत्ता लगाउने | `open-sse/mcp-server/server.ts` | OmniRoute पुग्न MCP/A2A उपकरणहरूको लागि स्पष्ट URL । लोकलहोस्ट स्वत: पत्ता लगाउने ओभरराइड गर्दछ। A2A सीपहरू यो URL मा API कुञ्जी पठाउनुको सट्टा असफल हुन्छ (वा `BASE_URL` यो फिर्ता आउँछ) जब यो सादा http सार्वजनिक ठेगानामा, डटेड सार्वजनिक होस्टनाम वा क्लाउड-मेटाडेटा होस्ट, वा प्रमाणहरू राख्छ: लुपब्याक गर्न https, वा http प्रयोग गर्नुहोस्, कन्टेनर वा सेवा नाम, वा निजी ठेगाना। |
| `OMNIROUTE_API_KEY` | _(अनसेट)_ | MCP/A2A मोड्युलहरू | आन्तरिक MCP उपकरण कलहरूको लागिAPI कुञ्जी। A2A कौशलले API कुञ्जी (ड्यासबोर्ड सत्र) बिना कलरको लागि मात्र पठाउँछ; कुञ्जी भएको कलरले आफ्नै काम गर्छ। |
| `OMNIROUTE_API_KEY_ID` | _(अनसेट)_ | `open-sse/mcp-server/audit.ts` | MCP अडिट लग एट्रिब्युसनको लागि कुञ्जी 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 मेमोरी-हिट अवलोकन सुविधाको लागि किल-स्विच। पूर्ण रूपमा कार्यको लागि मेमोरी रिकल लुकअप छोड्न `0` मा सेट गर्नुहोस्; कुनै पनि अन्य मान (सेट नगरिएको सहित) यसलाई सक्षम राख्छ। |
| `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | offline/local मुद्दा एजेन्ट रेकर्ड गरिएको-ट्राइज अन्त्य बिन्दु सक्षम गर्दछ। स्थानीय रेकर्ड गरिएको-ट्राइज कार्यप्रवाहहरू स्पष्ट रूपमा चलिरहेको अवस्थामा बाहेक असक्षम छाड्नुहोस्। |
| `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(अनसेट)_ | `src/lib/issueAgent/execution.ts` | एकल मुद्दा एजेन्ट रेकर्ड गरिएको-ट्राइज रनको लागि टाइमआउट (ms)। आन्तरिक अधिकतममा क्ल्याम्प गरिएको; सेट नभएको वा अमान्य हुँदा बिल्ट-इन पूर्वनिर्धारितमा फर्किन्छ। |
| `OMNIROUTE_CONTEXT` | _(सक्रिय सन्दर्भ)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | CLI रिमोट-मोड context/profile `omniroute` आदेशहरूको लागि; स्थानीय सन्दर्भ स्टोरमा सक्रिय सन्दर्भ ओभरराइड गर्दछ। `--context ` को बराबर। |
| `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | CLI सन्दर्भ प्रमाणहरूका लागि वैकल्पिक `keytar` OS-keychain ब्याकइन्ड असक्षम गर्नुहोस्। जब सक्षम हुन्छ, प्रमाणहरू `config.json` मोड `0600` मा रहन्छ र CLI एक-पटक फलब्याक चेतावनी उत्सर्जन गर्दछ; जानाजानी 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_PPLX_RESEARCH_ENABLED` | `0` | `open-sse/mcp-server/tools/perplexityResearch.ts` | Perplexity Deep Research MCP उपकरण दर्ता गर्नुहोस्। केवल `1` ले यसलाई दर्ता गर्दछ; अरु केहि पनि छोड्छ। |
| `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | म्यानिफेस्टलाई क्रमबद्ध गर्नु अघि MCP उपकरण विवरणहरू कम्प्रेस गर्नुहोस्। मानहरू सक्षम गर्नुहोस्: `1`, `true`, `on`। |
| `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | सङ्कुचन algorithm/profile. असक्षम मानहरू: `0`, `false`, `off`। |
| `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | MCP-सर्भर आन्तरिक व्यवस्थापन पढ्ने (स्वास्थ्य, लचिलोपन, कम्बोज, कोटा, उपयोग) को लागि बजेट (ms) रद्द गर्नुहोस्। |
| `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | प्रदायक (`route_request`, `web_search`, `web_fetch`) मा पर्खने MCP hops को लागि बजेट (ms) रद्द गर्नुहोस्। |
| `OMNIROUTE_MCP_SESSION_IDLE_MS` | `300000` | `open-sse/mcp-server/httpTransport.ts` | स्वीपले निष्क्रिय MCP स्ट्रिमयोग्य सत्र काट्नु अघि निष्क्रिय TTL (ms)। खुला स्ट्रिम वा इन-फ्लाइट अनुरोधको साथ एक सत्र कहिल्यै काटिएको छैन। अनसेट, गैर-पूर्णांक, वा गैर-सकारात्मक मानहरू पूर्वनिर्धारितमा फर्किन्छन्। |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | मेमोरीमा क्यास गरिएका स्थानीय-कोर्पस अनुक्रमणिकाको अधिकतम संख्या (LRU, एक प्रति अनुक्रमित रूट डाइरेक्टरी)। न्यूनतम `1` मा क्ल्याम्प गरियो। |
| `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | घण्टामा मोडेल सूची सिंक अन्तराल। |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | प्रदायक दर-सीमा र कोटा मतदान अन्तराल। |
| `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.) अझै सम्म — अलग ट्र्याक गरिएको छैन। क्यास अप्रभावित हिट। `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` सेट गर्नुहोस्। जिटरले अपस्ट्रीम प्रतिबन्धहरूको रोकथामको ग्यारेन्टी गर्दैन। |
| `CODEX_QUOTA_FETCH_TIMEOUT_MS` | `8000` | `open-sse/services/codexQuotaFetcher.ts` | एकल Codex कोटा फेच (`chatgpt.com/backend-api/wham/usage`) को लागि टाइमआउट (ms)। प्रिफ्लाइटले अनुरोध पठाउनु अघि यो प्राप्तिका लागि पर्खन्छ। टाइमआउट वा यातायात त्रुटि पछि, विन्डो समाप्त नभएसम्म वा रिसेट नभएसम्म विगतको 15 मिनेटको अन्तिम स्न्यापसट पुन: प्रयोग गरिन्छ; कुनै पनि छैन, कोटा अज्ञात छ, त्यसैले भुक्तान-क्रेडिट खाता त्यो अनुरोधको लागि छोडिएको छ र कुनै कूलडाउन जारी छैन। `2147483647` सम्मको सकारात्मक पूर्णांक स्वीकार गर्दछ; कुनै पनि अन्य मान पूर्वनिर्धारितमा फिर्ता हुन्छ। |
| `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | उपभोग दर्ता गर्न अपस्ट्रीम कोटा API समय दिँदै, वास्तविक उपयोग घटना पछि प्रदायक सीमाहरू ताजा गर्नु अघि ढिलाइ (ms)। |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | स्वत: पत्ता लगाउने | `open-sse/services/adobeFireflyBrowserLogin.ts` | अन्तरक्रियात्मक Adobe Firefly साइन-इन र अफ-स्क्रिन नवीकरणको लागि प्रयोग गरिएको प्रणाली क्रोम वा एज कार्यान्वयन योग्यको पूर्ण मार्ग। |
| `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 प्रतिक्रियाहरू पछि मिलिसेकेन्डमा आधार ब्याकअफ; बढीमा पाँच पटक प्रयासमा पेस स्पेसिङसँग मिलाएर। |
| `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | सबै पृष्ठभूमि सेवाहरू असक्षम गर्नुहोस्: कोटा रिफ्रेस, प्रदायक-सीमा सिङ्क, जडान रिकभरी, प्रमाणिक स्वास्थ्य, cloud/model/free-proxy/proxy-health सिङ्क, रिटेन्सन क्लीनअप, निर्धारित VACUUM र सेटिङ्हरू हट-रिलोड पोल। 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` | प्रोएक्टिभ जडान-कूलडाउन रिकभरी क्याडेन्स (एमएस): अनुरोध हट पाथ बाहिर, अस्थायी `rate_limited_until` बितिसकेको जडानहरूलाई पुन: प्रमाणीकरण गर्दछ। फ्लोर `5000`। |
| `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | सक्रिय जडान-कूलडाउन रिकभरी शेड्युलर असक्षम गर्नुहोस् ( `getProviderCredentials` मा अल्छी रिकभरी अझै पनि लागू हुन्छ)। |
| `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | रिजनिङ क्यास क्लीनअप क्याडेन्स (ms)। भुइँ `60000`। |
| `OMNIROUTE_REASONING_MIN_BUDGET` | _unset_ (असक्षम) | `open-sse/services/reasoningTokenBuffer.ts` | सोच-मोडेल आउटपुट बजेटहरूको लागि अप्ट-इन फ्लोर: `[256, floor)` मा कलर `max_tokens` भुइँमा माथि उठाइएको छ (मोडेल आउटपुट क्यापद्वारा क्याप गरिएको)। अनसेट = क्लाइन्टको बजेट कहिल्यै बढाइएको छैन (#9507)। |
| `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _unset_ (असक्षम) | `open-sse/services/learnedReasoningEffortCaps.ts` | अप्ट-इन, अल्पविराम-विभाजित प्रदायक ids (वा `*`): जब `reasoning_effort` 400/422 कुनै स्वीकृत सेटको नाम राख्दैन, एक पटक तल्लो तहमा पुन: प्रयास गर्नुहोस् (कहिल्यै `low` भन्दा तल छैन) र जाँचको जवाफ दिइएमा मात्र त्यो तह सिक्नुहोस् (#14895)। |
| `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | कल-लग निर्यात कार्यको लागि क्रोन अभिव्यक्ति (UTC) जसले प्रत्येक सक्षम लग-निर्यात गन्तव्यलाई निकास दिन्छ। निकायहरू निर्यात गर्दा `*/5 * * * *` प्राथमिकता दिनुहोस्। |
| `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | मिलिसेकेन्डमा प्रति-गन्तव्य चाइल्ड वाल-क्लक टाइमआउट। टाइमआउटले असफलता रेकर्ड गर्छ र अपरिचित ब्याचलाई अगाडि नबढाइ प्रक्रियालाई मार्छ। Invalid/non-positive/non-integer मानहरू पूर्वनिर्धारित प्रयोग गर्दछ। |
| `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | MB मा नोड निर्यात चाइल्ड V8 पुरानो-स्थान सीमा (कुल RSS होइन)। पूर्वनिर्धारितले शरीरसहित क्याप गरिएको कलाकृतिहरूको 500 पङ्क्तिहरूको लागि हेडरूम छोड्छ; ओभरसाइज ब्याचहरूले अझै पनि बच्चाको थुप्रोलाई निस्कन सक्छ। असफलताले ब्याच साइज घटाउने वा यो सीमा बढाउने सल्लाह दिन्छ। Invalid/non-positive/non-integer मानहरू पूर्वनिर्धारित प्रयोग गर्दछ। Bun निर्यात यस सीमा बिना प्रक्रियामा फिर्ता हुन्छ। |
| `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | कन्फिग हट-रिलोडको लागि मतदान अन्तराल (ms)। `1000` भन्दा कम अस्वीकार गरिएको छ। |
| `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(सक्षम)_ | `src/lib/db/apiKeys.ts` | Redis-ब्याक गरिएको API-कुञ्जी प्रमाणीकरण क्यासलाई बाइपास गर्न `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` सेट नभएको बेला परिणाम काट्ने। दायरा 256–1000000। ड्यासबोर्ड सेटिङले यो env मा जित्छ। |
| `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | अधिकतम समवर्ती सिंक्रोनस RTK/Caveman कार्यकर्ताहरू; अतिरिक्त कामहरू FIFO पर्खनुहोस्। |
| `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | मिलिसेकेन्डमा प्रति-कार्य टाइमआउट। टाइम-आउट कामदारहरू समाप्त हुन्छन् र अनुरोध अपरिवर्तित खोल्न असफल हुन्छ। |
| `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | प्रयोग नगरिएको कम्प्रेसन कार्यकर्ता समाप्त हुनु अघि मिलिसेकेन्डमा निष्क्रिय जीवनकाल। |
| `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | प्रत्येक कम्प्रेसन कार्यकर्ताको लागि MB मा V8 पुरानो पुस्ताको ढेर टोपी, सबै मोडहरू (फ्लोर `128`)। यो भन्दा बढि भएको काम गेटवे हिप बढ्नुको सट्टा खुला (अनकम्प्रेस गरिएको) असफल हुन्छ। |
| `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 स्ट्याक्ड-पाइपलाइन प्रति-इन्जिन सर्किट-ब्रेकर मास्टर स्विच।** अप्ट-इन (पूर्वनिर्धारित बन्द)** — सक्रिय हुँदा, अनुरोधहरूमा बारम्बार फ्याँक्ने इन्जिनलाई कूलडाउनको लागि छोडिन्छ (फेल-ओपन); बन्द = बाइट-समान लिगेसी व्यवहार। |
| `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | इन्जिनको ब्रेकर खुल्नु अघि लगातार क्रस-अनुरोध विफलताहरू। |
| `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | मिलिसेकेन्ड खोलिएको इन्जिन आधा-खुला प्रोब अघि छोडिन्छ। |
| `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, पुन: सुरु, वा अर्को उदाहरणमा पुन: प्राप्ति अवतरणबाट बच्छ। ब्लकहरू मेमोरीमा मात्र राख्नको लागि `false` सेट गर्नुहोस्। 512KB भन्दा माथिका ब्लकहरू र क्लाउड रनटाइमहरू मेमोरी मात्र रहन्छन्। |
| `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 उपयोग-अवलोकन गरिएको उपसर्ग फ्रीज मास्टर स्विच।** अप्ट-इन (पूर्वनिर्धारित बन्द)** — अन हुँदा, प्रणाली प्रम्प्टले `>=` अवलोकन गरेको थ्रेसहोल्डलाई एक स्थिर क्यास योग्य उपसर्गको रूपमा व्यवहार गरिन्छ र प्रदायकहरूको लागि स्थिर क्यास ह्युरिस्टिक मिसहरू (फ्रिज मात्र _preserves_, कहिले पनि म्युटेट हुँदैन) को लागि संकुचनबाट सुरक्षित गरिन्छ। |
| `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | यसलाई स्थिर स्थिर उपसर्गको रूपमा व्यवहार गर्नु अघि प्रणाली प्रम्प्टको अवलोकनहरू। |
| `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | प्रारम्भिक सेटअप पछि बुटस्ट्र्याप स्क्रिप्ट द्वारा `true` सेट गर्नुहोस्। सेटअप विजार्ड दृश्यता नियन्त्रण गर्दछ। |
| `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | एस्केप ह्याच: अनुरोध निकायलाई Antigravity परियोजना क्षेत्र ओभरराइड गर्न अनुमति दिनुहोस्। |
| `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Google One AI क्रेडिट नीति: `off` कहिल्यै क्रेडिटहरू इन्जेक्ट गर्दैन, `retry` योग्य कोटा 429 पछि एक पटक इन्जेक्ट गर्छ, र `always` पहिलो अनुरोधमा इन्जेक्ट गर्दछ। |
| `OMNIROUTE_ANTIGRAVITY_TIMING_TELEMETRY` | `false` | `open-sse/executors/antigravity/executeAttempt.ts` | अप्ट-इन सेनिटाइज्ड प्रति-भौतिक-पठाउने समय: खाता निष्क्रिय, उडान अनुरोधहरू, हेडरहरूमा समय र पहिलो अर्थपूर्ण SSE सामग्री। लगहरूमा कुनै प्रम्प्टहरू, प्रमाणहरू, वा अपस्ट्रिम URLs छैन। |
| `ANTIGRAVITY_MAX_429_ATTEMPTS` | `2` | `open-sse/services/antigravity429Guard.ts` | 429 कलरमा फिर्ता जानु अघि सबै होस्टहरू (1–12) मा प्रति Antigravity (`agy`/`antigravity`) अनुरोधलाई अपस्ट्रीम 429s सहन। यो खर्च गर्ने निकायलाई पुन: पठाउन स्थानीय रूपमा जवाफ दिइन्छ (2 मिनेट, 30 मिनेटमा दोब्बर, वा अपस्ट्रीम पुन: प्रयास सङ्केत), र च्याट ह्यान्डलरले 429 पछि अनुरोध पुन: सुरु गर्दैन। |
| `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Antigravity अनुरोध अनुवादकलाई यसको कडा CLI अनुरोध-हस्ताक्षर प्रमाणीकरण छोड्न अनुमति दिनुहोस् जब अपस्ट्रिमले वास्तविक हस्ताक्षरहरू (debug/antiquated-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 auth ब्रिजको लागि सर्भर 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 प्रदायक प्रमाणहरू
### निष्क्रिय Codex टोकन रिफ्रेस
`OMNIROUTE_TOKEN_REFRESH_PASSIVE_PROVIDERS` लाई `codex` मा सेट गरिएकोले यो उदाहरणलाई सिङ्क्रोनाइज गरिएको Codex प्रमाणहरूको उपभोक्ता बनाउँछ, रिफ्रेस-टोकन रोटेशन मालिक होइन। खाली वा सेट नगरिएको पूर्वनिर्धारितले सामान्य रिफ्रेस व्यवहारलाई सुरक्षित गर्दछ। अल्पविराम-विभाजित मानहरू छाँटकाँट गरिएका र केस-संवेदनशील छन्; `cx` `codex` को लागि एक उपनाम हो। असमर्थित प्रदायकहरू स्टार्टअप प्रमाणीकरण असफल हुन्छन्। अन्य प्रदायकहरू अपरिवर्तित छन्।
अवस्थित रिफ्रेस बिन्दुहरूमा, उदाहरणले जडान पढ्ने क्यासलाई बाइपास गर्छ र केवल एक फरक, अप्रत्याशित पहुँच टोकन अपनाउछ। अनुरोधको समयमा अपस्ट्रीम अस्वीकार गरिएका टोकनहरू सिङ्क्रोनाइजेसन रोल ब्याक पछि फेरि योग्य हुन सक्दैनन्: अनुरोध प्रमाणहरू बढीमा चार SHA-256 फिंगरप्रिन्टहरू राख्छन्, त्यो अनुरोधको साथ खारेज गरियो। टोकन क्षेत्रहरू मात्र अपनाइन्छ, त्यसैले अनुरोध-स्थानीय प्रदायक मेटाडेटा जीवित रहन्छ। कुनै पनि अपनाइएका प्रमाणहरू कायम छैनन्। यदि कुनै प्रतिस्थापन अवस्थित छैन भने, `refresh_disabled` गैर-टर्मिनल हो र टोकन-रिफ्रेस सर्किट ब्रेकरमा गणना गर्दैन। वास्तविक अपस्ट्रीम 401/403 प्रतिक्रियाहरूले सामान्य विफलता लेखा, घातीय कूलडाउन र ग्राहक त्रुटिहरू राख्छन्; खाता निष्क्रिय पार्ने संकेतहरू अझै पनि स्थायी रूपमा लक छन्।
म्यानुअल dashboard/API रिफ्रेसले `409` कोड `refresh_disabled` र एक्टिभ इन्स्ट्यान्समा रिफ्रेस गर्न र सिङ्क्रोनाइज गर्ने निर्देशनको साथ फर्काउँछ। अस्पष्ट रिफ्रेसहरू (च्याट, प्रयोग, स्वास्थ्य जाँच र आयात प्रमाणीकरण) त्यो त्रुटिलाई सतहमा गर्दैनन्; मागमा प्रयोग 401 रिकभरी एक पटक अपनाइएको सिङ्क्रोनाइज टोकनको साथ पुन: प्रयास गर्नुहोस्। Codex auth आयातले आपूर्ति गरिएका टोकनहरू रिफ्रेस-टोकन एक्सचेन्ज बिना भण्डारण गर्छ; नयाँ OAuth लगइनहरू अपरिवर्तित छन्। अवस्थित सक्रिय रिफ्रेस मार्ग बाहिर कुनै पूर्व-प्रेषण सिङ्क्रोनाइजेसन थपिएको छैन।
ठ्याक्कै एउटा रोटेशन मालिक राख्नुहोस् र टोकन सिङ्क्रोनाइजेसनलाई छुट्टै व्यवस्था गर्नुहोस्, पहुँच टोकनहरू समाप्त हुनु अघि (पूर्वनिर्धारित सक्रिय नेतृत्व: पाँच मिनेट)। यो विकल्प वितरित लक, डाटाबेस प्रतिकृति वा साझा SQLite तैनाती होइन। स्रोत: `open-sse/services/tokenRefresh/passiveCodex.ts`।
बिल्ट-इन प्रमाणहरू को लागि** स्थानीय होस्ट विकास** । रिमोट डिप्लोयमेन्टहरूको लागि, प्रत्येक प्रदायकको विकासकर्ता कन्सोलमा आफ्नो दर्ता गर्नुहोस्।
| चर | प्रदायक | नोटहरू |
| ------------------------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_OAUTH_CLIENT_ID` | Claude कोड (Anthropic) | सार्वजनिक ग्राहक — कुनै गोप्य आवश्यक छैन। |
| `CLAUDE_CODE_REDIRECT_URI` | Claude कोड | रिडिरेक्ट 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 कोडिङ (Moonshot) | सार्वजनिक ग्राहक। |
| `MUSE_CODE_OAUTH_CLIENT_ID` | म्युज कोड (मेटा) | सार्वजनिक 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 | GitHub Copilot ग्राहक एकीकरण ID को लागि वैकल्पिक ओभरराइड `Copilot-Integration-Id` र `Editor-Plugin-Version` हेडरहरूमा पठाइयो। `copilot-developer-cli` मा पूर्वनिर्धारित। |
| `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | API कुञ्जी फलब्याक `open-sse/executors/devin-cli.ts` द्वारा प्रयोग गरिन्छ जब कुनै प्रति-जडान प्रमाण उपलब्ध हुँदैन। ऐच्छिक। |
| `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) | OAuth ग्राहक ID GitLab Duo को लागि। रिडिरेक्ट URI `/callback` र scopes `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) | `GITLAB_DUO_OAUTH_CLIENT_ID` को लागि लेगेसी फलब्याक `src/lib/oauth/constants/oauth.ts` द्वारा खपत भयो। |
| `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | `GITLAB_DUO_OAUTH_CLIENT_SECRET` को लागि लेगेसी फलब्याक `src/lib/oauth/constants/oauth.ts` द्वारा खपत भयो। |
| `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 को लागि कार्यस्थान ID । |
| `OMNIROUTE_QODER_WORKSPACE` | Qoder | `QODER_CLI_WORKSPACE` को लागि उपनाम। |
| `QODER_CLI_CONFIG_DIR` | Qoder | Qoder CLI कन्फिगरेसन dir लाई ओभरराइड गर्नुहोस् (पृथक PAT सत्र, ब्राउजर लगइन क्लोबरिंगबाट बच्न)। |
| `QODER_CLI_MAX_CONCURRENCY` | Qoder | अधिकतम समवर्ती qodercli रन (छाप spawns वा ACP प्रम्प्ट); अतिरिक्त अनुरोध लाम FIFO। अनसेट (पूर्वनिर्धारित) = कुनै क्याप छैन। |
| `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | 429 `qodercli_busy` + `Retry-After` सँग असफल हुनु अघि Qoder अनुरोधले qodercli स्लट (केप सेटको साथ मात्र) को लागि कति समय पर्खन्छ। पूर्वनिर्धारित `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 यातायात: ACP `initialize` को जवाफ दिन qodercli को लागि अन्तिम म्याद। पूर्वनिर्धारित `60000`। |
| `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | ACP यातायात: धेरै सत्रहरू पछि लगातार qodercli प्रक्रिया पुन: प्रयोग गर्नुहोस्। पूर्वनिर्धारित `500`। |
| `BLACKBOX_WEB_VALIDATED_TOKEN` | ब्ल्याकबक्स वेब | `/api/chat` मा `validated` को रूपमा पठाउन फ्रन्टएन्ड `tk` टोकन। ब्ल्याकबक्सले टोकन मिलान लागू गर्दा आवश्यक हुन्छ; अन्यथा OmniRoute अनियमित UUID मा फर्किन्छ। मुद्दा #2252 हेर्नुहोस्। |
| `VISION_BRIDGE_BASE_URL` | भिजन ब्रिज रेलिंग | गैर-एन्थ्रोपिक भिजन-ब्रिज कलहरूको लागि OpenAI- संगत आधार URL । लिगेसी OpenAI URL env वा api.openai.com मा पूर्वनिर्धारित। OmniRoute को `/v1` self-loop वा कुनै OpenAI-compat endpoint (Gemini OpenAI-compat, OpenRouter) मा पोइन्ट गर्नुहोस्। #2232 जारी गर्नुहोस्। जब URL OmniRoute को आफ्नै `/v1` हुन्छ, वर्णन उप-अनुरोधले `x-omniroute-admission-bypass: internal` पठाउँछ र समाधान गरिएको सेल्फ-लूप क्रेडेन्सियल ( स्थानीय मोडमा`sk_omniroute` प्रहरी, वा `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350) सँग प्रमाणीकरण गर्दछ त्यसैले `REQUIRE_API_KEY=true` डिप्लोयमेन्टले काम गर्छ। |
| `VISION_BRIDGE_API_KEY` | भिजन ब्रिज रेलिंग | माथिको URL को लागिAPI कुञ्जी। गैर-एन्थ्रोपिक भिजन-ब्रिज कलहरूको लागि प्रति-प्रदायक OpenAI / Google env vars लाई ओभरराइड गर्दछ। Anthropic मोडेलहरूले आफ्नो समर्पित Anthropic कुञ्जी मार्ग राख्छन्। #2232 जारी गर्नुहोस्। |
| `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | भिजन ब्रिज रेलिंग | ms (पूर्वनिर्धारित `30000`) मा "कुनै प्रयोगयोग्य उम्मेद्वार" राउटिङ नतिजा कति लामो समयसम्म क्यास गरिन्छ। अमान्य वा नकारात्मक मानहरू पूर्वनिर्धारितमा फर्किन्छन्; `0` नकारात्मक क्यास असक्षम पार्छ। स्रोत: `src/lib/guardrails/visionBridgeRouter.ts`। |
| `OMNIROUTE_IMAGE_NORMALIZATION` | दृष्टि छवि सामान्यीकरण | अप्ट-इन (अनसेट = बन्द, शून्य व्यवहार परिवर्तन; `1`/`true`/`on` सक्षम गर्दछ)। प्रत्येक इनलाइन (base64 डेटा URI / Claude `source.data`) छविलाई प्रेषण अघि च्याट अनुरोध निकायहरूमा सामान्य बनाउँछ: EXIF अभिमुखीकरण लागू गरियो, RGB (अल्फा सेतोमा सपाट गरियो), लामो किनारा `<= 4096` px, कुल पिक्सेल `<= ~4M`; परिवर्तन आवश्यक भएका छविहरूलाई आधारभूत JPEG (अल्फा-फ्री PNGs स्टे लोसलेस PNG) को रूपमा पुन: सङ्केत गरिएको छ, पहिले नै-अनुरूप RGB JPEG/PNG अनटच गरिएको छ। बजेट निश्चित छ। 400 पार्स त्रुटि वा शून्य-आउटपुट ह्याङ्ग भएका oversized/exotic छविहरूलाई अस्वीकार गर्ने Qwen2-VL-style दृष्टि पाइपलाइनहरूलाई लक्षित गर्दछ। रिमोट http(हरू) URLs डाउनलोड गरिएको छैन; हराइरहेको `sharp` बाइनरी वा एक अनकोड गर्न मिल्ने छवि अटच गरिएको (फेल-ओपन) मार्फत जान्छ। ठूलो छवि रिसाइज गर्दा अनुरोध विलम्बता थप्छ। स्रोत: `open-sse/utils/visionImageNormalization.ts`। |
> [!WARNING]
>
> 1. [Google क्लाउड कन्सोल → प्रमाणहरूमा](https://console.cloud.google.com/apis/credentials) जानुहोस् 2. एक OAuth 2.0 ग्राहक ID सिर्जना गर्नुहोस् (प्रकार: "वेब अनुप्रयोग") 3. तपाइँको सर्भर URL अधिकृत रिडिरेक्ट URI को रूपमा थप्नुहोस् 4. `.env` मा प्रमाण मानहरू बदल्नुहोस्।
---
## 12. प्रदायक प्रयोगकर्ता-एजेन्ट ओभरराइडहरू
प्रत्येक अपस्ट्रीम प्रदायकलाई पठाइएको `User-Agent` हेडरलाई ओभरराइड गर्नुहोस्। यो गतिशील रूपमा कार्यकारी आधार वर्ग द्वारा रनटाइममा समाधान गरिएको छ:
```
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` | दुबै एन्थ्रोपिक-बाउन्ड पथहरू (नेटिभ OAuth र CLIProxyAPI) मा तेस्रो-पक्ष हार्नेस उपकरण नामहरू Anthropic मा फर्वाटिम गर्न `1`/`true` मा सेट गर्नुहोस्। पूर्वनिर्धारित रूपमा निर्वाहकले गैर-क्लाउड-कोड उपकरण नामहरू (Claude कोड क्यानोनिकल म्यापिङ जहाँ एउटा अवस्थित छ, अन्यथा PascalCase) उपनाम दिन्छ र तिनीहरूलाई `_toolNameMap` मार्फत प्रतिक्रियामा उल्टाउँछ, त्यसैले snake_case उपकरणहरूको प्रयोगलाई फिंगरप्रिन्ट तेस्रो-ग्राहकको रूपमा अस्वीकार गरिएको छैन। डिबगिङ मात्र। |
| `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` | अनुमान, मोडेल सिंक, र उपकरण-कोड OAuth को लागि `x-grok-client-version` ओभरराइड गर्नुहोस्, साथै अनुमान र मोडेल सिंकको लागि पूर्वनिर्धारित Grok CLI प्रयोगकर्ता-एजेन्ट। वैकल्पिक prerelease/build मेटाडेटाको साथ SemVer स्वीकार गर्दछ, वरपरको ह्वाइटस्पेस ट्रिम गरेपछि 128 वर्णहरू सम्म। अनसेट, खाली, अमान्य, वा लाइन-ब्रेक-समाहित मानहरूले पठाइएको पिन प्रयोग गर्दछ। अवस्थित पूर्ण अनुमान प्रयोगकर्ता-एजेन्ट ओभरराइडले प्राथमिकता राख्छ। |
| `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | विज्ञापित Claude कोड संस्करण `CLAUDE_USER_AGENT` बाट स्वतन्त्र रूपमा ओभरराइड गर्नुहोस्। Anthropic ले यस मान (#12417) मा केही मोडेलहरू गेट गर्दछ। |
| `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Claude बिलिङ ब्लकमा `cc_version=` मा 3-वर्ण प्रत्यय OmniRoute लाई ओभरराइड गर्नुहोस्। `CLAUDE_CODE_CLIENT_VERSION` — pinning को साथमा बम्प गर्नुहोस् केवल संस्करणले `version.revision` जोडी कुनै वास्तविक बाइनरी उत्सर्जन नगर्ने विज्ञापन गर्दछ। |
| `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | विज्ञापित Copilot CLI संस्करण `GITHUB_USER_AGENT` बाट स्वतन्त्र रूपमा ओभरराइड गर्नुहोस् |
| `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | जब GitHub Copilot च्याट अपडेट हुन्छ |
| `ANTIGRAVITY_CLI_CL` | _(अनसेट)_ | CLI प्रयोगकर्ता-एजेन्टमा `cl=` को रूपमा रिपोर्ट गरिएको Antigravity CLI (`agy`) पाइपर परिवर्तन सूचीलाई ओभरराइड गर्नुहोस्। संस्करण बाट व्युत्पन्न वा सार्वजनिक manifests द्वारा उजागर गरिएको छैन; लाइभ क्याप्चर (1.4.4 → `1003595037`) बाट प्रति संस्करण सीड गरिएको। अज्ञात संस्करणमा अनसेट गर्दा अर्को निर्माणको चेन्जलिस्टको विज्ञापन गर्नुको सट्टा `cl=` छोडिन्छ। |
| `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | जब Kiro IDE अपडेट हुन्छ |
| `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Kiro सामाजिक उपकरण-कोड `clientId` (सार्वजनिक आईडी) ओभरराइड गर्नुहोस् |
| `KIRO_VERIFY_FULL_CRC` | `false` | अप्ट-इन: Kiro घटना स्ट्रिममा पूर्ण प्रति-फ्रेम सन्देश CRC प्रमाणीकरण (भ्रष्ट स्ट्रिमहरू डिबग गर्नुहोस्) |
| `KIRO_CREDIT_PRICE_USD` | `0.02` | USD प्रति Kiro क्रेडिट; `meteringEvent` क्रेडिटहरूलाई सटीक प्रति-अनुरोध लागतमा रूपान्तरण गर्दछ |
| `KIRO_REQUIRE_CREDITS` | `false` | बिल नभएको रेकर्ड गर्नुको सट्टा कुनै क्रेडिट मिटरिङ रिपोर्ट नगर्ने Kiro प्रतिक्रिया असफल गर्नुहोस् |
| `QODER_USER_AGENT` | `Qoder-Cli` | जब Qoder CLI अपडेट हुन्छ |
| `CURSOR_USER_AGENT` | `Cursor/3.3` | जब Cursor अद्यावधिक हुन्छ |
> [!TIP]
> तपाईंले प्रयोगकर्ता-एजेन्ट ओभरराइडहरू थप्न सक्नुहुन्छ** कुनै पनि** ढाँचा `{PROVIDER_ID}_USER_AGENT` प्रयोग गरी प्रदायक। कार्यकारीले गतिशील रूपमा env var नाम निर्माण गर्दछ।
---
## 13. CLI फिंगरप्रिन्ट अनुकूलता
जब सक्षम हुन्छ, OmniRoute HTTP हेडरहरू र JSON बडी फिल्डहरूलाई आधिकारिक CLI उपकरणहरूको सही हस्ताक्षर मिलाउन पुन: क्रमबद्ध गर्दछ। यसले तपाईंको प्रोक्सी IP सुरक्षित गर्दा खाता फ्ल्यागिङको जोखिम कम गर्छ।
**स्रोत:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts`
### प्रति-प्रदायक
| चर | सक्रियता | प्रभाव |
| ------------------------ | -------- | --------------------------------------------- |
| `CLI_COMPAT_CODEX` | `=1` | Codex CLI अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_CLAUDE` | `=1` | Claude कोड अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_GITHUB` | `=1` | GitHub Copilot अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_ANTIGRAVITY` | `=1` | Antigravity अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_CURSOR` | `=1` | Cursor अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_KIMI_CODING` | `=1` | Kimi कोडिङ अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_KILOCODE` | `=1` | किलो कोड अनुरोध हस्ताक्षरको नक्कल गर्दछ |
| `CLI_COMPAT_CLINE` | `=1` | Cline अनुरोध हस्ताक्षरको नक्कल गर्दछ |
### विश्वव्यापी
| चर | सक्रियता | प्रभाव |
| ---------------- | -------- | ------------------------------------------------------------------------- |
| `CLI_COMPAT_ALL` | `=1` | को लागि फिंगरप्रिन्ट अनुकूलता सक्षम गर्नुहोस्** सबै** एकै पटक प्रदायकहरू। |
### Kimi कोडिङ 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]
> यो सुविधा प्रयोगकर्ता-एजेन्ट ओभरराइड्स (§12) सँग काम गर्दछ। फिंगरप्रिन्ट प्रणालीले हेडर अर्डरिङ र बडी फिल्ड अर्डरिङ ह्यान्डल गर्छ, जबकि प्रयोगकर्ता-एजेन्टले विशिष्ट 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 (फाउन्डेशन API + रिडर फलब्याक) |
| `JINA_API_KEY` | Jina AI ( `JINA_AI_API_KEY` को लागि उपनाम) |
| `GEMINI_API_KEY` | Gemini (Google AI स्टुडियो) एम्बेडिङ्स + च्याट फलब्याक |
| `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 मा हटाइयो किनभने रनटाइमले अब तिनीहरूलाई — पढ्दैन / ती प्रदायकहरूले Dashk/ `data/provider-credentials.json` बोर्डमा भर पर्छन्। DB माइग्रेसन मार्गको लागि यस कागजातको तलको _Audit: Removed / Dead variables_ खण्ड हेर्नुहोस्।
> [!TIP]
> ड्यासबोर्ड मार्फत सेट गरिएका कुञ्जीहरू SQLite मा इन्क्रिप्टेड भण्डारण गरिएका छन् र वातावरणीय चरहरूमा प्राथमिकता लिन्छन्।
>
> **जिना:** `jina-ai/…` इम्बेडिङहरू, पुन: श्रेणीबद्ध, वर्गीकरण, खण्ड, र `jina-search` गर्छ** होइन** ड्यासबोर्ड `jina-ai` (वा साझा `jina-reader`) जडान अवस्थित हुँदा — `getProviderCredentials` पहिले भरिएको छ भने क्लस्टर env कुञ्जी बिल गर्नुहोस्। `JINA_AI_API_KEY` / `JINA_API_KEY` प्रयोग गर्न मिल्ने ड्यासबोर्ड कुञ्जी अवस्थित नभएमा मात्र प्रयोग गरिन्छ। कल लगहरूले env फलब्याकलाई `connection_id=env:JINA_AI_API_KEY` को रूपमा श्रेय दिन्छ। रिडर कार्ड (`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` प्रयोग गर्न मिल्ने ड्यासबोर्ड कुञ्जी अवस्थित नभएमा मात्र प्रयोग गरिन्छ। कल लगहरूले env fallback लाई `connection_id=env:GEMINI_API_KEY` को रूपमा विशेषता दिन्छ। नेटिभ मल्टीमोडल ट्राफिकले `:embedContent` विरुद्ध `x-goog-api-key` प्रयोग गर्दछ / `:batchEmbedContents` — N OpenAI `input` वस्तुहरू N भेक्टरहरू हुन्छन्।
---
## 15. टाइमआउट सेटिङहरू
सबै मानहरू छन्** मिलिसेकेन्ड** । `src/shared/utils/runtimeTimeouts.ts` मा केन्द्रीकृत संकल्प।
### टाइमआउट पदानुक्रम
```
REQUEST_TIMEOUT_MS (global override)
├─→ FETCH_TIMEOUT_MS (upstream provider calls, default: 600000)
│ ├─→ FETCH_HEADERS_TIMEOUT_MS (inherits from FETCH_TIMEOUT_MS)
│ ├─→ FETCH_BODY_TIMEOUT_MS (inherits from FETCH_TIMEOUT_MS)
│ ├─→ TLS_CLIENT_TIMEOUT_MS (inherits from FETCH_TIMEOUT_MS)
│ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (independent, default: 10000)
│ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (independent, default: 15000)
│ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (independent, default: 0 = off, suggested: 30000)
│ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (independent, default: 2)
│ ├── FETCH_CONNECT_TIMEOUT_MS (independent, default: 30000)
│ └── FETCH_KEEPALIVE_TIMEOUT_MS (independent, default: 4000)
├─→ STREAM_IDLE_TIMEOUT_MS (inherits from REQUEST_TIMEOUT_MS, default: 600000)
├─→ STREAM_ACTIVE_TIMEOUT_MS (independent; unset: 1260000, raised by declared budgets; set: hard cap; 0 disables)
├─→ STREAM_READINESS_TIMEOUT_MS (inherits from REQUEST_TIMEOUT_MS, default: 80000)
├─→ STREAM_READINESS_MAX_TIMEOUT_MS (caps adaptive readiness extensions, default: 180000)
└─→ API_BRIDGE_PROXY_TIMEOUT_MS (inherits from REQUEST_TIMEOUT_MS, default: 30000)
├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (derived, default: 300000)
├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (default: 60000)
├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (default: 5000)
└── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (default: 0 = disabled)
```
| चर | पूर्वनिर्धारित | विवरण |
| ------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | _(अनसेट)_ | ग्लोबल सर्टकट — `FETCH_TIMEOUT_MS` र `STREAM_IDLE_TIMEOUT_MS` दुबै पूर्वनिर्धारितहरूलाई ओभरराइड गर्दछ। |
| `FETCH_TIMEOUT_MS` | `600000` | अपस्ट्रीम प्रदायक कलहरूको लागि कुल HTTP अनुरोध टाइमआउट। |
| `STREAM_IDLE_TIMEOUT_MS` | `600000` | रद्द गर्नु अघि कच्चा अपस्ट्रिम बाइटहरू बीच अधिकतम मौनता। विस्तारित-सोच मोडेलहरू विरलै > 90s रोक्छन्। |
| `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | अधिकतम कुल सक्रिय SSE स्ट्रिम जीवनकाल; अपस्ट्रीम बाइटहरूमा कहिल्यै रिसेट हुँदैन र `REQUEST_TIMEOUT_MS` बाट स्वतन्त्र हुन्छ। सेट नगर्दा, पूर्वनिर्धारित रजिस्ट्रीमा सबैभन्दा ठूलो प्रति-मोडेल `timeoutMs` (1200000, Codex) र 60000 मार्जिन हो, र लामो बजेट घोषणा गर्ने लक्ष्य (जडान `timeoutMs`, त्यसपछि प्रति-मोडेल, त्यसपछि प्रदायक-स्तर, उदाहरणका लागि GLM को 0000 प्लस 3000s बजेट प्राप्त हुन्छ)। सकारात्मक मान प्रत्येक लक्ष्यको लागि कडा क्याप हो जुन घोषणा गरिएको बजेटले उठाउन सक्दैन। प्रत्येक लक्ष्यको लागि असक्षम गर्न `0` मा सेट गर्नुहोस्। |
| `OMNIROUTE_SSE_COMMENTS` | _(असक्षम)_ | OmniRoute ले SSE `:` टिप्पणी लाइनहरू (जस्तै `: keepalive` मुटुको धड्कन र `x-omniroute-*` मेटाडेटा ट्रेलरहरू) उत्सर्जन गर्न सक्छ। पूर्वनिर्धारित रूपमा (#10524) असक्षम गरिएको छ किनकि कडा OpenAI- संगत क्लाइन्टहरू JSON। प्रत्येक SSE लाइन पार्स गर्नुहोस् र `:` टिप्पणीहरूमा क्र्यास गर्नुहोस्; `data:` मुटुको धडकन अप्रभावित हुन्छ। `on`/`true`/`1`/`yes` फिर्ता अप्ट इन गर्न सेट गर्नुहोस्। `open-sse/utils/sseHeartbeat.ts` द्वारा प्रयोग गरिएको। |
| `SSE_COALESCE_MS` | `0` (बन्द) | अप्ट-इन: लगातार Claude `content_block_delta` घटनाहरू मर्ज गर्नुहोस् (सही ब्लक अनुक्रमणिका र डेल्टा प्रकार) Claude ग्राहकहरूलाई पठाइयो, कम्तिमा प्रत्येक N ms फ्लश गर्दै। हानिरहित; `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` (बन्द) | अप्ट-इन: ब्याच SSE फ्रेमहरू N ms भित्र ग्राहकलाई एउटा लेखमा फर्वार्ड गरियो। पहिलो फ्रेम र टर्मिनल फ्रेमहरू (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) कहिले ढिलो हुँदैन; ब्याचिङ अन संग, ITL ब्याच ग्याप मापन गर्दछ। `open-sse/utils/sseOutputSink.ts` द्वारा प्रयोग गरिएको। |
| `SSE_STALL_WATCHDOG` | `timer` | स्ट्रिम गरिएका प्रतिक्रियाहरूको लागि बाइट-स्टल वाचडग कार्यान्वयन। `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` heuristic को लागि किल-स्विच। `false`/`0`/`off` लाई पूर्ण रूपमा पत्ता लगाउन असक्षम गर्न सेट गर्नुहोस् — तयारी टाइमआउटहरू र स्ट्रिम रिकभरी अनुरोध body/headers द्वारा कहिल्यै उन्नत हुँदैन, ग्राहक-नियन्त्रित टाइमआउट प्रवर्द्धनलाई कम गर्दै। |
| `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | पत्ता लगाइएको `/goal` एजेन्ट रन वा `x-omniroute-agent-goal` सँग जबरजस्ती अनुरोधहरूको लागि अधिकतम पहिलो-घटना तयारी विन्डो। |
| `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | पत्ता लगाइएको `/goal` एजेन्ट रनहरूको लागि स्वचालित रूपमा प्रारम्भिक स्ट्रिम रिकभरी सक्षम गर्नुहोस्। लक्ष्य-विशिष्ट अप्ट-इन असक्षम गर्न `false`/`0`/`off` सेट गर्नुहोस्। यसले अपरेटर पूर्वनिर्धारित — को शीर्षमा मात्र ADD रिकभरी गर्न सक्छ यसले स्पष्ट `STREAM_RECOVERY_ENABLED`/DB सेटिङहरू अप्ट-आउटलाई ओभरराइड गर्दैन। |
| `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | स्ट्रिप गैर-मानक `codex.*` SSE घटनाहरू (जस्तै `codex.rate_limits`) जसले OpenAI SDK को `responses.stream()` लाई 502 ले तोड्छ। पूर्वनिर्धारित ON (#11014)। तिनीहरूलाई फर्वार्ड गर्न `0`/`false`/`no`/`off` सेट गर्नुहोस्। |
| `OMNIROUTE_CODEX_APPSERVER_WS` | _(अनसेट)_ | अप्ट-इन Codex एप-सर्भर यातायात। स्थानीय `codex app-server` साइडकारको WebSocket अन्तिम बिन्दु (`ws://`/`wss://`)। टोकनसँग सँगै सेट गर्दा, Codex अनुरोधहरूलाई JSON-RPC मा HTTP प्रतिक्रियाहरू API को सट्टा साइडकारमा पठाइन्छ। `providerSpecificData.codexAppServerUrl` मार्फत प्रति-जडान पनि मिलाउन सकिन्छ। `open-sse/executors/codex/appServerConfig.ts` द्वारा प्रयोग गरिएको। |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(अनसेट)_ | इनलाइन capability/bearer टोकन एप-सर्भरमा प्रस्तुत गरियो। प्रति-जडान ओभरराइड: `providerSpecificData.codexAppServerToken`। |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(अनसेट)_ | एप-सर्भर क्षमता टोकन ( `codex app-server --ws-token-file` बाट) समात्ने फाइलमा जाने बाटो। `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` सेट नभएको बेला प्रयोग गरिन्छ। प्रति-जडान ओभरराइड: `providerSpecificData.codexAppServerTokenFile`। |
| `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | कार्य निर्देशिका एप-सर्भर पालो भित्र चल्छ। प्रति-जडान ओभरराइड: `providerSpecificData.codexAppServerCwd`। |
| `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(अनसेट)_ | अनुमोदन नीति एप-सर्भर पालो (जस्तै `never`, `on-request`) मा पास भयो। प्रति-जडान ओभरराइड: `providerSpecificData.codexAppServerApprovalPolicy`। |
| `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(अनसेट)_ | स्यान्डबक्स नीति एप-सर्भर पालोमा पास गरियो (जस्तै `read-only`, `workspace-write`, `danger-full-access`)। जब निर्वाहक पूर्वनिर्धारित `workspace-write` मा अनसेट हुन्छ (कठोर; पहिले `danger-full-access`)। प्रति-जडान ओभरराइड: `providerSpecificData.codexAppServerSandbox`। |
| `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | एप-सर्भरको आफ्नै अनुमोदन प्रम्प्टहरू स्वत: अनुमोदन गर्नुहोस् (होस्टमाcommand/file/permission कार्यान्वयन)। पूर्वनिर्धारित रूपमा बन्द — प्रम्प्टहरू स्वतः अस्वीकार गरिएका छन्; हार्नेस उपकरण कलहरू अप्रभावित छन् (तिनीहरू अलग `item/tool/call` पासथ्रु यात्रा गर्छन्)। `true`/`1`/`yes` स्वीकार गर्दछ। प्रति-जडान ओभरराइड: `providerSpecificData.codexAppServerAutoApprove`। |
| `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | प्रतिक्रिया हेडरहरू प्राप्त गर्ने समय। |
| `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | स्ट्रिमिङ अनुरोधहरू (ms) मा प्रतिक्रिया हेडरहरूको लागि अधिकतम पर्खनुहोस्। `0` ले यो टोपी असक्षम पार्छ; एक स्पष्ट प्रदायक `fetchStartTimeoutCapMs` प्राथमिकता लिन्छ। |
| `OMNIROUTE_CODEX_IMAGE_RESPONSE_START_TIMEOUT_MS` | `600000` (१० मिनेट) | भुक्तान गरिएको Codex image-generation/edit POSTs को लागि पहिलो प्रतिक्रिया-सुरु समय सीमा (ms) प्रत्यक्ष र HTTP(S)/SOCKS प्रोक्सी मार्फत। यी अनुरोधहरू एक अस्पष्ट टाइमआउट वा नेटवर्क विफलता पछि पुन: प्ले हुँदैन। एज रिले (`vercel`/`deno`/`cloudflare`) ले पनि एउटा प्रयास गर्छ, तर आफ्नै `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` समय सीमा राख्नुहोस्। |
| `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | प्रत्येक प्रत्यक्ष नो-प्रोक्सी प्रयासको लागि अधिकतम प्रतिक्रिया-सुरु प्रतिक्षा (ms)। टाइमआउट एक पटक ताजा सकेटमा पुन: प्रयास गर्नुहोस्; बाउन्ड असक्षम गर्न र अघिल्लो व्यवहार कायम राख्न `0` सेट गर्नुहोस्। |
| `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (५ मिनेट) | प्रतिक्रिया-सुरु तल्ला (ms) प्रत्यक्ष नो-प्रोक्सी प्रयासहरूको लागि जसको लक्ष्य होस्ट private/LAN/loopback हो (उदाहरणका लागि `localhost`, `host.docker.internal`, `192.168.x.x`), त्यसैले माथिको 30s पूर्वनिर्धारितद्वारा नेटिभ Ollama कोल्ड स्टार्ट काटिएको छैन। फ्लोरको रूपमा कार्य गर्दछ: प्रभावकारी प्रतीक्षा यो मान र `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` को ठूलो छ; `0` वा अमान्य मानले स्थानीय तल्ला हटाउँछ। रिमोट होस्टहरू अप्रभावित छन्। |
| `OMNIROUTE_DIRECT_HEADERS_VOLUME_ADAPTIVE` | `1` | अनुरोध पेलोड टियरद्वारा प्रत्यक्ष प्रतिक्रिया-सुरु विन्डोलाई उठाउनुहोस्: 512 KB माथिका निकायहरूले × 2 प्राप्त गर्छन्, 2 MB × 3 भन्दा बढी, 180 s मा क्याप गरिएको छ र पहिले नै उच्च तल्ला (अपरेटर ओभरराइड वा माथिको local/LAN फ्लोर) लाई कहिल्यै कम गर्दैन। ठूला सन्दर्भहरूले कुञ्जीमा तर्क छतको लागि कुनै तर्क चयनकर्ता बिना इनपुट साइजमा समानुपातिक रूपमा प्रिफिल गर्दछ, त्यसैले फ्ल्याट विन्डोले ठीक भुइँमा स्वस्थ ढिलो-प्रिफिल अपस्ट्रिमहरू काट्छ। फ्ल्याट व्यवहार पिन गर्न `0`/`false`/`off` सेट गर्नुहोस्। |
| `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (१० मिनेट) | ताजा-सकेट RETRY प्रयासको लागि छत (ms) पूल गरिएको-प्रयास प्रतिक्रिया-सुरु टाइमआउट माथि (#13703) पछि। कलरले पहिले नै आफ्नै समयसीमा संकेत संलग्न गरेको अवस्थामा मात्र लागू हुन्छ (समाधान गरिएको जडान/मोडल/प्रदायक/`FETCH_TIMEOUT_MS` क्यास्केड); त्यो संकेत वास्तविक बाउन्ड हो र इच्छित मार्गमा पहिले फायर हुन्छ, त्यसैले यो बिना फ्ल्याट क्याप — भन्दा एक उदार ब्याकस्टप हो, पुन: प्रयासले समान छोटो `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` विन्डोलाई पूल गरिएको प्रयास र 504'd स्वस्थ ढिलो-TTFB तर्क मोडेलहरूको रूपमा पुन: प्रयोग गर्यो। माथिको समतल तल्ला तल कहिल्यै अनुमति छैन; जब कलरले कुनै पनि समयसीमा संकेत प्रदान गर्दैन, पुन: प्रयासले फ्ल्याट फ्लोर अपरिवर्तित राख्छ। |
| `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | पूर्ण प्रतिक्रिया शरीर प्राप्त गर्न समय। |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | TCP जडान स्थापना टाइमआउट। |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | किप-लाइभ सकेट निष्क्रिय टाइमआउट। |
| `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | TLS फिंगरप्रिन्ट प्रोक्सी (wreq-js) टाइमआउट। |
| `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | wreq-js TLS-फिंगरप्रिन्ट ट्रान्सपोर्टको शरीरमा समय-देखि-पहिलो-बाइटलाई विशेष रूपमा बाउन्ड गर्दछ; `TLS_CLIENT_TIMEOUT_MS` एक्लैले रोकिएको शरीरलाई समात्न सक्दैन किनकि यो हेडरहरू (#12656) आउने बित्तिकै समाधान हुन्छ। टाइमआउटले wreq रिडर रद्द गर्छ र direct/proxy डिस्प्याचरमा फर्किन्छ; `0` वाचडगलाई असक्षम पार्छ। |
| `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | OpenCode executor मात्र, र `OPENCODE_RESPONSES_STALL_ROTATION` फिचर फ्ल्याग अन भएको अवस्थामा मात्र (पूर्वनिर्धारित बन्द): स्ट्रिम गरिएको प्रतिक्रियाको पहिलो बाइट बाइटको हेडर (#13484) पछि प्रतिक्षालाई बाउन्ड गर्दछ। एक प्रतिक्रिया स्ट्रिम `response.created` को साथ खुल्छ, त्यसैले यस विन्डोको पछाडि मौनता एक स्टल हो: खाता चिसो हुन्छ र अनुरोध एक पटक अर्को खातामा घुम्छ; दोस्रो स्टल छिटो असफल हुन्छ। `0` झण्डा अन गरेर पनि गार्डलाई असक्षम पार्छ। |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= बन्द) | OpenCode एक्जिक्युटर मात्र: स्ट्रिम गरिएको प्रतिक्रिया कलमा अपस्ट्रिम प्रतिक्रिया हेडरहरूको लागि पर्खाइलाई बाउन्ड गर्दछ जब अर्को खाता अझै उपलब्ध हुन्छ — पङ्क्तिबद्ध अनुरोधले पर्खन रोक्छ र पूर्ण हेडर विन्डो होल्ड गर्नुको सट्टा अगाडि बढ्छ। स्ट्रिम गरिएका प्रतिक्रिया कलहरू मात्र प्रभावित हुन्छन् (जवाफहरू स्ट्रिम `response.created` सँग खुल्छ, त्यसैले मौनता त्यहाँ लाम छ, पुस्ता होइन); च्याट पूर्णता र गैर-स्ट्रिम्ड कलहरू अछुतो छैनन्, र विन्डोले प्रभावकारी फेच-स्टार्ट छतलाई मात्र छोटो पार्छ, यसलाई कहिल्यै विस्तार गर्दैन। सक्षम गर्दा सुझाव गरिएको मान: `30000`। `0` अक्षम गर्दछ। |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | OpenCode निष्पादक मात्र: प्रति अनुरोध कति पटक हेडर-प्रतीक्षा माथि बाँधिएको अर्को खातामा सार्न सक्छ। अन्तिम बाँकी खाताले सधैं पूर्ण हेडर सञ्झ्याल राख्छ। |
| `OPENCODE_PARK_AND_RESUME` | `false` | OpenCode निष्पादक मात्र: दोहोरिएको क्षणिक 429s (वा ताजा पूल-स्ट्रेन मार्कर) पछि हृदयको धडकनका साथ अनुरोध पार्क गर्नुहोस्, त्यसपछि सम्पूर्ण फ्लीट (#13924) लाई फ्यानिङ गर्नुको सट्टा 3 क्रमिक खाताहरूको एक क्याप गरिएको खुट्टा पुन: प्ले गर्नुहोस्। पूर्वनिर्धारित रूपमा बन्द: प्रत्येक 429 पहिले जस्तै अर्को खातामा घुमाउँछ। |
| `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | OpenCode एक्जिक्युटर मात्र: जब पार्क-र-रिज्युम रिप्ले लेगमा प्रत्येक कूलडाउन-रेडी खाता प्रोक्सी-अस्वीकार मेमोरीद्वारा अलग गरिएको छ, तिनीहरूलाई कुनै पनि कुरा पुन: प्ले नगर्नुको सट्टा सेवा गर्नुहोस् (#14851, #14750 को फलो-अप)। पूर्वनिर्धारित रूपमा बन्द: रिप्ले खुट्टा त्यस अवस्थामा खाली छ, जस्तै #14750 पहिले। |
| `STREAM_READINESS_STALL_RETRY` | `false` | स्ट्रिमिङ च्याट मात्र: प्रयोगयोग्य घटना उत्पादन गर्नु अघि पहिलो अपस्ट्रिम बडी स्टल हुँदा, एउटै तयारी बजेट र कुनै खाता जरिवानाको साथ एउटै रूटिङ मार्ग मार्फत एक बाउन्ड दोस्रो प्रयास जारी गर्नुहोस्। पूर्वनिर्धारित रूपमा बन्द: एक रोकिएको पहिलो शरीर पुन: प्रयास बिना अनुरोध असफल हुन्छ। |
| `OPENCODE_POOL_RESELECT` | `false` | OpenCode executor मात्र: एम्बियन्ट पूल सन्दर्भ अन्तर्गत प्रोक्सी-लेस खातामा 429 बाट बाहिर निस्कने ठेगाना पुन: प्रयास गर्नुको सट्टा अर्को सदस्यको लागि जडान पूल सोध्नुहोस्। अर्डरहरू, कहिले पनि समावेश गर्दैन: एक थकित पूलले हालको व्यवहार राख्छ। पूर्वनिर्धारित रूपमा बन्द: प्रत्येक 429 पहिले जस्तै अर्को खातामा घुमाउँछ। |
| `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(अनसेट)_ | OpenCode एक्जिक्युटर मात्र: पार्किङ अघि पढिएको पूल-स्ट्रेन मार्करको ओभरराइड पथ (`{since, reason, ttl_s}`, पूर्वनिर्धारित `/tmp/opencode-pool-strain.json`, #13924)। पुन: गणना बिना एक ताजा मार्कर पार्क; अनुपस्थित वा बासी फेरि फट काउन्टरमा खस्छ। |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | `/v1` ब्रिज अनुरोधहरूको लागि प्रोक्सी हप टाइमआउट। |
| `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Firecrawl web-fetch executor लाई सेल्फ-होस्ट गरिएको उदाहरणमा पोइन्ट गर्नुहोस् (API कुञ्जी वैकल्पिक अफ-क्लाउड)। |
| `FIRECRAWL_TIMEOUT_MS` | `30000` | Firecrawl web-fetch executor को लागि प्रति-अनुरोध टाइमआउट। |
| `TAVILY_BASE_URL` | _(अनसेट)_ | Tavily `/usage` कोटा फेचरको लागि आधार URL (प्रदायक सीमाहरू); बेवास्ता गरियो जब यसले `api.tavily.com` मा देखाउँछ। अनसेट जडानको आधार URL मा फर्किन्छ। |
| `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` | कच्चा सकेट टाइमआउट (० = असक्षम गरिएको)। |
| `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` प्रिसेटहरूको लागि टाइमआउट (ms)। ड्यासबोर्डमा active/error बीचमा फ्ल्याप हुनबाट रोक्नको लागि ढिलो अन्त बिन्दुहरू (Cerebras, Cloudflare AI, Groq) को लागि उठाउनुहोस्। अमान्य (< 1000) वा गैर-संख्यात्मक मानहरूको लागि 8000ms मा फर्किन्छ। |
| `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | `open-sse/utils/proxyFetch.ts` (#9158) मा रिले-विशिष्ट फेच टाइमआउट। एक ह्याङ्ग रिले client/agent टाइमआउट (~ 30s) अघि असफल हुनुपर्छ त्यसैले कलरहरूले सामान्य अपस्ट्रीम टाइमआउटको सट्टा रिले-विशिष्ट विफलता देख्छन्। `29000` मा क्याप गरिएको छ त्यसैले यो सधैं पहिले फायर हुन्छ। |
| `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | `open-sse/utils/proxyFetch.ts` (#9158) मा direct/relay/proxy पुन: प्रयास-एक पटक मार्गहरूको लागि साझा पुन: प्रयास ब्याकअफ। `0` = तुरुन्तै पुन: प्रयास गर्नुहोस्। |
| `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | नेटिभ wreq-js अनुरोध टाइमआउट (`claudeTlsClient.ts`)। |
| `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | नेटिभ टाइमआउटको शीर्षमा निरपेक्ष JS हार्ड-डेडलाइन अनुग्रह थपियो। |
| `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | नेटिभ wreq-js अनुरोध टाइमआउट (`perplexityTlsClient.ts`)। |
| `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | नेटिभ टाइमआउटको शीर्षमा निरपेक्ष JS हार्ड-डेडलाइन अनुग्रह थपियो। |
| `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (बन्द) | संलग्न गर्नुहोस् "तपाईसँग निर्मित वेब खोज छ। खोज परिणामहरू प्रयोग गरेर सीधा प्रश्नहरूको जवाफ दिनुहोस्।" कलरको प्रणाली सन्देश (`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` | ब्राउजर-समर्थित वेब-कुकी च्याट (`browserPool.ts`) को लागि साझा Playwright ब्राउजर पूल; `off` लाई असक्षम गर्न सेट गर्नुहोस्। |
| `OBSCURA_BIN` | `auto-detect` | ब्राउजर पूल र `obscura` खेल मैदान निर्वाहक `open-sse/services/obscura.ts` Cloudflare ; सेट नभएको बेला प्रणाली 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 वेब (अन्तर्राष्ट्रिय kimi.ai Connect-RPC) निर्वाहक (`kimi-web.ts`) को लागि आधार URL ; mirror/proxy अन्त्य बिन्दुहरूको लागि मात्र ओभरराइड गर्नुहोस्। |
| `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Kimi वेब निष्पादक (`kimi-web.ts`) को लागि पूर्ण कुराकानी अन्त्य बिन्दु। |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | _(स्वत: पत्ता लगाइएको)_ | Adobe Firefly अन्तरक्रियात्मक ब्राउजर साइन-इन (`adobeFireflyBrowserLogin.ts`) को लागि कार्यान्वयन योग्य प्रणाली Chrome/Edge को मार्ग। प्रति-OS स्वत: पत्ता लगाउने ओभरराइड गर्दछ। |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ स्ट्यान्डअलोन आउटपुट_ | निर्माण-समय ओभरराइड स्ट्यान्डअलोन आउटपुट डाइरेक्टरीको लागि पोस्ट-बिल्ड कोलोकेशन चरण (`scripts/build/colocate-standalone.mjs`); उपकरण निर्माण गर्नुहोस्, रनटाइम होइन। |
कम्बो लक्ष्य प्रयासहरूले समाधान गरिएको अपस्ट्रीम अनुरोध टाइमआउट इनहेरिट गर्दछ (`FETCH_TIMEOUT_MS`, वा `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-कुञ्जी प्रदायकहरूको लागि लगातार विफलता थ्रेसहोल्ड। |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | API-कुञ्जी प्रदायक ब्रेकरको लागि विन्डो (ms) रिसेट गर्नुहोस्। |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | स्थानीय प्रदायकहरू (Ollama, LM स्टुडियो, ...) को लागि लगातार असफलता थ्रेसहोल्ड। |
| `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-कुञ्जी प्रदायकले कूलडाउनमा प्रवेश गर्नु अघि सञ्झ्याल भित्र विफलता। |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | प्रदायक-स्तर ब्रेकर: API-कुञ्जी प्रदायकहरूको लागि रोलिङ विफलता-गणना विन्डो (ms)। |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | प्रदायक-स्तर ब्रेकर: कूलडाउन (ms) एक पटक API-कुञ्जी प्रदायक थ्रेसहोल्ड पुगेपछि। |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | API-कुञ्जी प्रदायकले धेरै असफलताहरूमा DEGRADED प्रविष्ट गर्दछ। |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | API-कुञ्जी प्रदायक अधिकतम resetTimeout एस्केलेसन गुणक। |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | API-कुञ्जी प्रदायक यो धेरै खुला चक्र पछि बढ्छ। |
| `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` | प्रति-कुञ्जी कूलडाउन (ms) बहु-कुञ्जी API-कुञ्जी रोटेशन द्वारा लागू गरिएको जब अपस्ट्रीम 429 ले कुनै `Retry-After` (#14573) बोक्दैन। गैर-सकारात्मक वा गैर-संख्यात्मक मानहरू पूर्वनिर्धारितमा फर्किन्छन्। |
| `OMNIROUTE_AVALANCHE_PROTECTION_ENABLED` | `false` | `open-sse/services/accountFallback/antiAvalanche.ts` | अप्ट-इन एन्टी-अवल्यान्च गार्ड: केवल एक स्पष्ट `true` ले यसलाई सक्षम गर्दछ। सक्रिय हुँदा, टोकन-प्रति-मिनेट सीमा (र सन्दर्भ-ओभरफ्लो 400) नाम गर्ने 429 ले प्रदायकको बाँकी कुञ्जीहरूमा क्यास्केडिङ फेलओभर रोक्छ। कोटा-निकालिएको 429 प्रम्प्ट ठूलो भए तापनि असफल भइरहन्छ, र HTTP 413 प्रभावित हुँदैन (यसले #13350 पुन: प्रयास-अन्य-खाता व्यवहारलाई राख्छ)। |
| `OMNIROUTE_AVALANCHE_BURST_COOLDOWN_MS` | `60000` | `open-sse/services/accountFallback/antiAvalanche.ts` | मोडेल-लकआउट कूलडाउन (ms) लागू हुन्छ जब गार्डले फायर गर्छ, बढ्दो लकआउटको सट्टा। लामो अपस्ट्रीम रिसेट सधैं जित्छ। गैर-सकारात्मक वा गैर-संख्यात्मक मानहरू पूर्वनिर्धारितमा फर्किन्छन्। |
| `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | ब्याकअफ गहिराइ जसमा सन्दर्भ-क्यास पिनको प्रदायकलाई स्थायी रूपमा अस्वस्थ मानिन्छ र फेलओभरको लागि पिन छोडिन्छ। |
| `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | एन्टी-फ्ल्याप विन्डो (एमएस) कन्टेक्स्ट-क्यास पिन छोड्नु अघि छोटो क्षणिक कूलडाउनहरू सहने। |
### परिदृश्यहरू
| परिदृश्य | कन्फिगरेसन |
| ---------------------------------- | ----------------------------------------------------- |
| **लामो समय चलिरहेको कोड उत्पादन** | `REQUEST_TIMEOUT_MS=900000` (१५ मिनेट) |
| **बाउन्ड कुल स्ट्रिम जीवनकाल** | `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` | डाटाबेसमा request/call लग प्रविष्टिहरू राख्नका लागि दिनहरू। |
| `CALL_LOG_MAX_ENTRIES` | `10000` | इन-मेमोरी बफरमा अधिकतम कल लग प्रविष्टिहरू। |
| `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | छाँट्नु अघि `call_logs` SQLite तालिकामा अधिकतम पङ्क्तिहरू। |
| `ENABLE_REQUEST_LOGS` | _(अनसेट)_ | ड्यासबोर्ड सेटिङ ओभरराइड गर्दै, विस्तृत अनुरोध लग इन वा अफ गर्नुहोस्। |
| `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 घण्टा) | इन-मेमोरी क्लीनअप अघि अनाथ सक्रिय अनुरोध लग प्रविष्टिहरूको लागि अधिकतम उमेर। |
| `MAX_PENDING_DETAILS` | `5000` | अधिकतम पेन्डिङ विवरण (सकारात्मक पूर्णांक); गणना टोपी: स्वीप; byte/map टोपी: घुसाउनुहोस्। |
| `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | `call_log_pipeline_enabled=true` हुँदा पाइपलाइन कलाकृतिहरूमा स्ट्रिम टुक्राहरू भण्डार गर्नुहोस्। डिस्क बचत गर्न पूर्वनिर्धारित रूपमा अप्ट-इन (`true`) — बन्द गर्नुहोस्। |
| `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | KB मा अधिकतम पाइपलाइन कल लग आर्टिफ्याक्ट साइज `call_log_pipeline_enabled=true` हुँदा। |
| `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | छाँट्नु अघि `proxy_logs` SQLite तालिकामा अधिकतम पङ्क्तिहरू। |
| `PROXY_LOG_INCLUDE_IPS` | `false` | client/egress IPs र खाता उपसर्गहरू `[ProxyEgress]` कन्सोल लगहरूमा समावेश गर्नुहोस्। dashboard/database प्रोक्सी-लग रेकर्डहरूले पूर्ण विवरणहरू राख्छ। |
| `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` | सम्पूर्ण request/response बडी साइज (KB) लाई पूर्ण क्लोनको सट्टा बेयर सारांशले प्रतिस्थापन गर्नु अघि। यदि लामो एजेन्टिक कुराकानीहरूले ड्यासबोर्डमा वास्तविक सन्देशहरूको सट्टा प्लेसहोल्डर देखाउँछन् भने यसलाई उठाउनुहोस्। |
| `CHAT_DEBUG_FILE` | `false` | सत्य हुँदा, `serializeArtifactForStorage` साइज-आधारित ट्रंकेसन छोड्छ। डिबग मात्र। |
---
## 17. मेमोरी अप्टिमाइजेसन
| चर | पूर्वनिर्धारित | विवरण |
| -------------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_HEAP_DIAGNOSTICS_ENABLED` | `0` (बन्द) | `src/lib/healthzLag.ts` बाट V8 हीप प्रेसर मेट्रिक्स लग गर्न `1` सेट गर्नुहोस्। लग आकार र उडान गणना, सामग्री, ट्रेस वा हिप स्न्यापसटहरू अनुरोध नगर्नुहोस्। घटना-लूप स्टाल रेकर्डर भित्र चल्छ, त्यसैले `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS=0` ले यसलाई बन्द गर्दछ। |
| `OMNIROUTE_HEAP_DIAGNOSTICS_THRESHOLD_MB` | `900` | heapUsed (MiB) को लागि सकारात्मक थ्रेसहोल्ड जसले अप्ट-इन डायग्नोस्टिक लग ट्रिगर गर्दछ। अमान्य मानहरू 900 MiB प्रयोग गर्दछ; उच्च-हिप सन्देशहरू प्रति 60 सेकेन्डमा एक पटक सीमित छन्। |
| `OMNIROUTE_MEMORY_MB` | _auto_ (नंगे धातु);** Docker छविमा`1024`** | **सिफारिस गर्नुभयो** Docker/standalone V8 हीप सीमा (MB)। सेट नगर्दा, गतिशील रूपमा क्यालिब्रेट गरियो (~ 35% प्रणाली RAM, `[512, 4096]` मा क्ल्याम्प गरिएको); `512` केवल तल्ला हो जब कुल मेमोरी पढ्न सकिँदैन। `run-standalone.mjs` (Docker CMD), एक** स्पष्ट** मान `--max-old-space-size` र को रूपमा जोडिएको छ** जित्छ** विवादास्पद NODE_OPTIONS हिप फ्ल्याग (V8 अन्तिम झण्डा) मा। `omniroute serve` अझै पनि अवस्थित NODE_OPTIONS हिप (#5238) लाई प्राथमिकता दिन्छ। दुबैलाई फरक नम्बरहरूमा सेट नगर्नुहोस् — प्रक्रियाले मान र विजेता दुबै नामकरण गर्ने चेतावनी दिन्छ।** आधिकारिक Docker छविले सधैं `1024` सेट गर्छ, त्यसैले क्यालिब्रेसन त्यहाँ कहिल्यै चल्दैन।** कोडिङ-एजेन्ट `/v1/responses` लाई `8192`-`12288` प्लस cgroup headroom — [Docker गाइड — रनटाइम RAM](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents) हेर्नुहोस्। |
| `OMNIROUTE_RSS_PRESSURE_MB` | _auto_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; बन्द `OMNIROUTE_MEMORY_MB` सेट नभएको बेला) | `open-sse/utils/resourcePressure.ts` | निरपेक्ष प्रक्रिया-आरएसएस फ्यूज (MB) native/external मेमोरीको लागि जुन V8 `heapUsed` देख्न सक्दैन; यसको माथि नयाँ अनुरोधहरू 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` (५ मिनेट) | प्रम्प्ट क्यास प्रविष्टि TTL। |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | अधिकतम क्यास तापमान = 0 प्रतिक्रियाहरू। |
| `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | अधिकतम कुल सिमान्टिक क्यास आकार। |
| `SEMANTIC_CACHE_TTL_MS` | `1800000` (३० मिनेट) | सिमेन्टिक क्यास प्रविष्टि TTL। |
| `OMNIROUTE_SEMANTIC_CACHE_PRUNE_INTERVAL_MS` | `1800000` (३० मिनेट) | SQLite प्रुन अन्तराल। `0` स्टार्टअप र आवधिक रन असक्षम गर्दछ; `60000` तलका अन्य मानहरू पूर्वनिर्धारितमा फर्किन्छन्। `2147483647` ms माथिका मानहरूले नोडको अधिकतम टाइमर ढिलाइमा क्ल्याम्प गर्दछ, 1ms मतदानमा ओभरफ्लोबाट बच्न। 1s पछि पहिलो दौड; टाइमरहरू अपरिवर्तित छन् र रनहरू ओभरल्याप हुँदैनन्। |
| `OMNIROUTE_SEMANTIC_CACHE_PRUNE_BATCH_SIZE` | `2000` | पङ्क्तिहरू प्रति SQLite प्रुन DELETE, `[100, 50000]` मा क्ल्याम्प गरिएको; ब्याचहरू बीचको घटना लूपमा उत्पादन गर्दछ। |
| `OMNIROUTE_SEMANTIC_CACHE_PRUNE_MAX_BATCHES` | `50` | बाँडिएको DELETE ब्याच बजेट प्रति रन समाप्ति र वैकल्पिक रो-क्याप पासहरू, `[1, 10000]` मा क्ल्याम्प गरिएको छ। ब्याकलगहरू पछि रनहरूमा जारी रहन्छ। |
| `OMNIROUTE_SEMANTIC_CACHE_MAX_ROWS` | `0` | वैकल्पिक SQLite पङ्क्ति टोपी (`0` = कुनै पनि छैन)। `expires_at <=` रन-स्टार्ट ISO टाइमस्ट्याम्प मेटाएपछि, सबैभन्दा पुरानो `created_at` बेदखल गर्नुहोस्, त्यसपछि `rowid` लाइभ पङ्क्तिहरू सहित, साझा ब्याच बजेटको अधीनमा। गणनाहरू पूर्णांकहरूमा काटिएका छन् (सुरक्षित-पूर्णांक सीमासम्म)। सबै चार प्रुन चरहरूको लागि खाली, गैर-संख्यात्मक, गैर-सीमित वा नकारात्मक मानहरू तिनीहरूको पूर्वनिर्धारितमा फर्किन्छन्; अंशहरू तल घुम्छन्। छाँट्नेले TTL, मेमोरी LRU वा भेक्टर-क्यास व्यवहार परिवर्तन गर्दैन। |
| `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` | उपयोग कोटा ट्र्याक गर्दा अतिरिक्त टोकन हेडरूम आरक्षित। |
### प्रति-प्रदायक सन्दर्भ लम्बाइ (`CONTEXT_LENGTH_`)
`open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) पनि पढ्छ** प्रति-प्रदायक** फारम जसको नाम रनटाइममा प्रदायक ID बाट बनाइएको हो, त्यसैले यसलाई माथिको तालिका वा `.env.example` मा पङ्क्ति पङ्क्तिमा सूचीबद्ध गर्न सकिँदैन।
**नाम।** `CONTEXT_LENGTH_`, जहाँ `` प्रदायक हो ID माथिल्लो केस, `A-Z` / `0-9` बाहिरका प्रत्येक क्यारेक्टरलाई `_` द्वारा प्रतिस्थापित गरिएको छ। प्रदायक ID उपनाम रिजोल्युसन पछिको क्यानोनिकल हो (छोटो उपनाम समाधान भएपछि `provider/model` स्ट्रिङको `provider` भाग)। अनुकूलन OpenAI- वा एन्थ्रोपिक-कम्प्याटिबल नोडहरूले तिनीहरूको उत्पन्न नोड ID प्रयोग गर्दछ, त्यसैले UUID चर नामको अंश हो। मान टोकनहरूको सकारात्मक पूर्णाङ्क संख्या हो; अरु केहि (खाली, `0`, नकारात्मक, गैर-संख्यात्मक) लाई बेवास्ता गरिन्छ र रिजोल्युसन अर्को चरणमा जान्छ।
| प्रदायक ID | चर नाम |
| ----------------------------------------------------------- | -------------------------------------------------------------------------- |
| agentrouter | CONTEXT_LENGTH_AGENTROUTER |
| ओपनराउटर | 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_WINDOW_RECONCILE_INTERVAL` हेर्नुहोस्), अन्यथा सिंक गरिएको क्याटलग / models.dev मान।
4. प्रदायकको रजिस्ट्री `defaultContextLength`।
5. मोडेल-नाम हेरिस्टिक्स (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000)।
6. बिल्ट-इन प्रति-प्रदायक पूर्वनिर्धारित, त्यसपछि `128000`।
दुवै वातावरण चरणहरू लागू हुन्छन्** सम्पूर्ण प्रदायक** : त्यो प्रदायकको प्रत्येक मोडेलले समान सीमा प्राप्त गर्दछ, र तिनीहरूले प्रति-मोडेल ड्यासबोर्ड ओभरराइडहरू जित्छन्। जब प्रदायकको एउटा मोडेललाई फरक विन्डो चाहिन्छ, त्यसको सट्टा ड्यासबोर्डमा प्रति-मोडेल ओभरराइड प्रयोग गर्नुहोस्।
**स्कोप।** यो चेनले अनुरोध-समय सन्दर्भ-सञ्झ्याल जाँच ड्राइभ गर्दछ ( `context_length_exceeded` / "इनपुट `open-sse/handlers/chatCore.ts` मा कन्टेक्स्ट सञ्झ्याल भन्दा बढी" अस्वीकृति), प्रम्प्ट कम्प्रेसन बजेट र कम्बो सन्दर्भ सीमा। `GET /v1/models` द्वारा विज्ञापित `context_length` अझै पनि क्याटलग वा रजिस्ट्री मेटाडेटाबाट आउन सक्छ र वातावरण ओभरराइड प्रतिबिम्बित गर्न ग्यारेन्टी छैन।
**उदाहरण।** एक प्रदायक जसको मोडेलले 1,050,000-टोकन विन्डो स्वीकार गर्दछ जबकि सूचीले 128,000 रिपोर्ट गर्दछ:
```dotenv
CONTEXT_LENGTH_AGENTROUTER=1050000
```
यसलाई परिवर्तन गरेपछि सर्भर पुन: सुरु गर्नुहोस्: मान सर्भर प्रक्रिया वातावरणबाट पढिएको छ। मा** डेस्कटप एप** सर्भर चाइल्ड प्रक्रियाको रूपमा चल्छ र एप सुरु भएपछि प्रणाली चर सेट देख्दैन; `.env` फाइलमा लाइन राख्नुहोस् एप लोड हुन्छ ( [Electron गाइडमा लुकअप अर्डर: वातावरण फाइल लुकअप](../guides/ELECTRON_GUIDE.md#environment-file-lookup) ), त्यसपछि पूर्ण रूपमा छोड्नुहोस् र एप पुन: लन्च गर्नुहोस्।
### सङ्कुचन
| चर | पूर्वनिर्धारित | विवरण |
| ------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | सेट नगरिएको | `.rtk/trust.json` ह्यास बिना परियोजना `.rtk/filters.json` विश्वास गर्नुहोस्। नियन्त्रित स्थानीय विकासमा मात्र प्रयोग गर्नुहोस्। |
### मेमोरी इन्जिन (योजना 21)
### मेमोरी, सीप, र टोकन रिफ्रेसको घटना-लूप लागत (#10349)
OmniRoute हो** एकल नोड प्रक्रिया** । मेमोरी extraction/retrieval, कौशल इंजेक्शन, र प्रदायक टोकन रिफ्रेस त्यसमा चल्छ** एउटै घटना लूप** `GET /healthz` र ड्यासबोर्डको रूपमा। तिनीहरू कामदार धागो होइनन्।
| काम | कोड | पूर्वनिर्धारित | अपरेटर नियन्त्रण |
| ----------------------------- | ---------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| मेमोरी निकासी / पुन: प्राप्ति | `src/lib/memory/` | ड्यासबोर्ड**memoryEnabled** (पूर्वनिर्धारित) | बन्द गर्नुहोस्** सेटिङ्हरू → मेमोरी** । सेटिङहरूमा सुविधा असक्षम पार्ने बाहेक त्यहाँ कुनै छुट्टै env किल स्विच छैन। |
| कौशल इंजेक्शन | `src/lib/skills/injection.ts` | ड्यासबोर्ड**skillsEnabled** (पूर्वनिर्धारित) | बन्द गर्नुहोस्** सेटिङहरू → Memory/Skills** (`skillsEnabled`)। इन्जेक्सन पहिले नै सक्रिय भएपछि मात्र बाउन्ड कार्यान्वयन तल स्यान्डबक्स नबहरू। |
| टोकन रिफ्रेस | `src/sse/services/tokenRefresh.ts` | जडान गरिएका OAuth/web प्रदायकहरूको लागि सक्रिय | प्रदायकलाई विच्छेद गर्नुहोस् वा टोकनहरू मान्य रहन दिनुहोस्; आज कुनै `TOKEN_REFRESH=0` env छैन। |
यदि `/healthz` शान्त बाकसमा ढिलो छ भने, पहिले मेमोरी + कौशल असक्षम गर्नुहोस्, त्यसपछि catalog/compression लोड जाँच गर्नुहोस् (#10303, #9685)। यी सुविधाहरूले `await` बिन्दुहरूमा उपज दिन्छ तर अझै पनि एक थ्रेडको लागि प्रतिस्पर्धा गर्दछ।
पर्सिस्टेन्ट मेमोरी सबसिस्टम (`src/lib/memory/`) को लागि इम्बेडिङ लेयर, भेक्टर स्टोर र रिरेङ्किङ नबहरू।
| चर | पूर्वनिर्धारित | विवरण |
| ------------------------------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (५ मिनेट) | इन-मेमोरी इम्बेडिङ क्यासका लागिTTL (प्रति source/model/dim हस्ताक्षर)। |
| `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | इम्बेडिङ क्यासमा अधिकतम LRU प्रविष्टिहरू राखियो। |
| `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | अप्ट-इन `@huggingface/transformers` स्थानीय MiniLM पाइपलाइनको लागिHF रिपो आईडी (~ 23 MB int8, ~ 400 MB RAM)। |
| `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | स्थिर potion/Model2Vec लुकअप-टेबल एम्बेडरको लागिHF रिपो आईडी। क्यास डायरमा अल्छी रूपमा डाउनलोड गरियो। |
| `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | स्थिर औषधि मोडेल फाइलहरू क्यास गर्न प्रयोग गरिएको डाइरेक्टरी। सेट नगर्दा `DATA_DIR` अन्तर्गत पूर्वनिर्धारितहरू। |
| `HF_HUB_ENDPOINT` | `https://huggingface.co` | `staticPotion.ts` द्वारा प्रयोग गरिएको Hugging Face Hub आधार URL लाई ओभरराइड गर्नुहोस् (जस्तै एयर-ग्याप गरिएको सेटअपहरूको लागि मिरर एन्डपोइन्ट)। |
| `MEMORY_VEC_TOP_K` | `20` | `src/lib/memory/vectorStore.ts` भित्र `sqlite-vec` brute-force भेक्टर खोज द्वारा प्रयोग गरिएको पूर्वनिर्धारित शीर्ष-K। |
| `MEMORY_RRF_K` | `60` | हाइब्रिड FTS5 + भेक्टर पुन: प्राप्ति (sqlite-vec रेसिपी) को लागि पारस्परिक श्रेणी फ्यूजन स्थिर `k` । |
| `VECTOR_STORE_DISABLE_VEC` | `false` | `getVectorStore()` माTest/diagnostic सीम (`src/lib/memory/vectorStore.ts`): जब `true`, भेक्टर स्टोरलाई `null` मा बाध्य पार्छ ( `sqlite-vec` बिना cloud/WASM वातावरण सिमुलेट गर्दछ), FTS5 खोजशब्द खोजीमा मेमोरी पुन: प्राप्तिलाई घटाउँछ। उत्पादनमा सेट नगरी छोड्नुहोस्। |
| `NOTION_API_KEY` | _(अनसेट)_ | Notion ब्याकइन्डका लागिAPI कुञ्जी ( `genericBackend.ts` ज्ञात ब्याकइन्ड प्रिसेटद्वारा प्रयोग गरिएको)। |
| `NOTION_API_URL` | `https://api.notion.com/v1` | Notion API को लागि आधार URL (सेल्फ-होस्ट गरिएको Notion विकल्पहरूको लागि ओभरराइड गर्न सकिन्छ)। |
| `OBSIDIAN_API_KEY` | _(अनसेट)_ | API कुञ्जी Obsidian भल्ट ब्याकइन्डको लागि ( `genericBackend.ts` ज्ञात ब्याकएन्ड प्रिसेट द्वारा प्रयोग गरिएको)। |
| `OBSIDIAN_API_URL` | `http://localhost:27123` | Obsidian Vault API को लागि आधार URL (रिमोट भल्टको लागि ओभरराइड गर्न सकिन्छ)। |
| `MEMORY_TYPED_DECAY_ENABLED` | `false` | TV6 टाइप गरिएको मेमोरी डिके मास्टर स्विच।** अप्ट-इन (पूर्वनिर्धारित बन्द)** — द स्वीप** मेटाउँछ** बिग्रिएका सम्झनाहरु। यो बन्द संग, `access_count`/`last_accessed_at` शुद्ध टेलिमेट्री हो र केहि पनि कहिल्यै मेटिने छैन। |
| `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (दिनहरू) पछि प्रयोग नगरिएको `episodic` मेमोरी क्षय हुन्छ। `0` एपिसोडिक प्रतिरक्षा पनि बनाउँछ। टिकाऊ प्रकारहरू (`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`/unset = कुनै आवधिक स्वीप छैन। डबल अप्ट-इन: पनि `MEMORY_TYPED_DECAY_ENABLED=true` आवश्यक छ। |
| `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(अनसेट)_ | अल्पविराम-विभाजित प्रदायक आईडी (केस-संवेदनशील) जसले `system` सन्देश स्वीकार गर्दछ** केवल सूचकांक ० मा** (`src/lib/memory/injection.ts`)। यिनीहरूको लागि, क्यास-सुरक्षित मध्य-एरे मेमोरी स्प्लाइस बहु-टर्न कुराकानीहरूमा असुरक्षित छ, त्यसैले मेमोरीलाई प्रमुख प्रणाली सन्देशको रूपमा merged/prepended हो। केवल `xiaomi-mimo`/`mimo` मा पूर्वनिर्धारित; सेल्फ-होस्ट गरिएको OpenAI-कम्प्याटिबल एन्डपोइन्टहरू (जस्तै Qwen3.5 +/ 3.6) को लागि विस्तार गर्नुहोस् जसको च्याट टेम्प्लेटले समान एकल-अग्रणी-प्रणाली-सन्देश बाधा लागू गर्दछ। |
### कम-RAM Docker उदाहरण
`128` ड्यासबोर्ड मात्र हो। लामो `/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` | अल्पविराम-विभाजित डेटा स्रोतहरू। |
---
## एरेना ELO सिंक
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------- | ------------------ | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | आवधिक एरेना AI लिडरबोर्ड ELO सिंक, ड्यासबोर्ड फिचर फ्ल्यागबाट वा अप्ट आउट गर्न `false` सँग कन्फिगर गर्न मिल्ने। |
| `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | `GET /v1/models` मा मोडेल आईडीका लागि प्रयोग गरिएको उपसर्ग फारम। `dual` प्रत्येक मोडेलको लागि छोटो उपनाम उपसर्ग र क्यानोनिकल प्रदायक उपसर्ग दुबै विज्ञापन गर्दछ (पछाडि अनुकूलता — क्याटलगलाई लगभग दोब्बर बनाउँछ); `alias` प्रति मोडेल एक आईडी उत्सर्जन; `canonical` पूर्ण प्रदायक-आईडी उपसर्ग मात्र उत्सर्जन गर्दछ (प्रदायकहरू जसको उपनाम पहिले नै क्यानोनिकल आईडी हो उनीहरूले आफ्नो एकल प्रविष्टि राख्छन्)। ग्राहकहरूले `?prefix=alias` सँग प्रति अनुरोध ओभरराइड गर्न सक्छन्। [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix) हेर्नुहोस्। |
| `ARENA_ELO_SYNC_INTERVAL` | `86400` (24 घन्टा) | `src/lib/arenaEloSync.ts` | सेकेन्डमा सिङ्क अन्तराल। |
---
## PromptQL खेल मैदान प्रदायक (Unofficial/Experimental)
prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`) को लागि रिभर्स-इन्जिनियर गरिएको GraphQL सत्र ब्रिज। सबै वैकल्पिक — पूर्वनिर्धारितहरू सार्वजनिक खेल मैदानको अन्तिम बिन्दुहरूमा बिन्दुहरू; self-hosted/alternate PromptQL डिप्लोइमेन्टको लागि मात्र ओभरराइड गर्नुहोस्।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | GraphQL अन्त्य बिन्दु chat/session सञ्चालनका लागि प्रयोग गरिन्छ। |
| `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | GraphQL endpoint क्रेडिट balance/usage. क्वेरी गर्न प्रयोग गरियो |
| `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 वेब प्रदायक (Unofficial/Experimental)
Hyperagent.com (`src/shared/constants/providers/web-cookie.ts`) को लागि रिभर्स-इन्जिनियर गरिएको सत्र पुल। वैकल्पिक — सार्वजनिक billing/usage अन्त्य बिन्दुमा पूर्वनिर्धारित बिन्दुहरू; self-hosted/alternate HyperAgent डिप्लोइमेन्टको लागि मात्र ओभरराइड गर्नुहोस्।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------- | --------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------ |
| `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | billing/usage क्रेडिट ब्लकहरू ल्याउनको लागि प्रयोग गरिएको अन्तिम बिन्दु। |
---
## अमूल्य उपयोग बजेट नीति
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------ | -------------------------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UNPRICED_USAGE_BUDGET_POLICY` | _(अनसेट; बुलियन अप्ट-आउट सक्षम नभएसम्म असफल बन्द)_ | `src/shared/utils/featureFlags.ts` | प्रति-कुञ्जी daily/weekly USD सीमाहरू: `fail_closed` ले वास्तविक रूपमा अमूल्य उपयोगलाई रोक्छ; `count_as_zero` मूल्य निर्धारण खर्च लागू गर्दा यसलाई $0 को रूपमा गणना गर्दछ। एउटा स्पष्ट enum ( env अघिDB ) ले बुलियन अप्ट-आउट ओभरराइड गर्दछ। अमान्य मानहरू र मूल्य निर्धारण लुकअप असफलता बन्द भयो। |
| `USAGE_LIMIT_IGNORE_UNPRICED` | `false` | `src/shared/utils/featureFlags.ts` | अपस्ट्रिम बुलियन कम्प्याटिबिलिटी अप्ट-आउट: कुनै स्पष्ट enum नीति कन्फिगर नभएको अवस्थामा मात्र $0 को रूपमा वास्तविक रूपमा अमूल्य प्रयोगलाई गणना गर्दछ। मूल्य निर्धारण गरिएको खर्च र असफल लुकअपहरू लागू रहन्छन्। |
## किलो कोड उपयोग कोटा
किलो कोड प्रदायकको लागि व्यक्तिगत USD ब्यालेन्स र किलो पास उपयोग लुकअप। वैकल्पिक — सार्वजनिक किलो API मा पूर्वनिर्धारित बिन्दुहरू; relay/test फिक्स्चरको लागि मात्र ओभरराइड गर्नुहोस्। प्रमाणीकरणले जडानको अवस्थित OAuth पहुँच टोकन प्रयोग गर्दछ।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| -------------- | --------------------- | ------------------------------------- | --------------------------------------------------------------------------------- |
| `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | आधार URL व्यक्तिगत किलो कोड ब्यालेन्स र किलो पास उपयोग प्राप्त गर्न प्रयोग गरियो। |
---
## Adobe Firefly वेब प्रदायक (Unofficial/Experimental)
Adobe Firefly वेब प्रदायक (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`) को लागि ब्राउजर-संचालित सत्र रिफ्रेस। वैकल्पिक — सबै पूर्वनिर्धारितहरू सामान्य डेस्कटप स्थापनाको लागि ट्युन गरिएका छन्।
> **#9255 मा हटाइयो।** पुरानो CDP-संलग्न क्रोम रनटाइम (adobeFireflyChromeRuntime.ts) लाई Playwright ब्राउजर-लगइन सेवा द्वारा प्रतिस्थापन गरिएको थियो, र यसको knobs अब अवस्थित छैन। 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` | साँचो हेडलेस क्रोमको लागि `1` मा सेट गर्नुहोस् (उत्पन्नको लागि ज्ञात-ब्रेक; डिबग मात्र)। |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | प्रोएक्टिभ ब्राउजर वार्म opt-in/out. `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)। |
---
## १९. मोडेल सिङ्क (देव)
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ----------------------------------- | ------------------ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MODELS_DEV_SYNC_ENABLED` | _(अनसेट)_ | `src/lib/modelsDevSync.ts` | models.dev मूल्य निर्धारण सिंकको लागि कडा ओभरराइड। = सम्मान सेटिङहरू > AI (`modelsDevSyncEnabled`) अनसेट गर्नुहोस्। `0`/`false`/`off`/`no`** DB मा जित्छ** र दुबै आवधिक सिंक र `getModelsDevPricing()` SQL/JSON स्क्यानहरू छोड्छ (ड्यासबोर्ड एउटै घटना लुपमा जोडिएको बेला रिकभरी)। `1`/`true`/`on`/`yes` बल सिंक सक्रिय। मूल्य निर्धारण save/clear अझै पनि `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` मा सेट गर्नुहोस्। पहिले नै सिंक गरिएको डेटा पुन: प्रयोग गर्दछ (नयाँ ल्याउने छैन); `manual` ओभरराइडहरू कहिल्यै ओभरराइट गर्दैन। |
---
## 20. प्रदायक-विशेष सेटिङहरू
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24 घन्टा) | `src/lib/catalog/openrouterCatalog.ts` | OpenRouter मोडेल सूची क्यास TTL। |
| `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | `/v1/models` प्रतिक्रियाहरूमा प्रदर्शन-अनुकूल `name` क्षेत्रहरू समावेश गर्नुहोस्। IDs मात्र अपेक्षा गर्ने ग्राहकहरूको लागि असक्षम गर्नुहोस्। |
| `OMNIROUTE_GEMINI_WEB_ARGON_ENABLED` | `0` (बन्द) | `open-sse/config/providers/registry/gemini/web/index.ts` | अप्ट-इन (#16573)। Gemini वेब प्रदायकमा `gweb/gemini-4-argon` विज्ञापन गर्न `1` (वा `true`/`yes`) सेट गर्नुहोस् र यसको निर्वाहकलाई त्यो मोड चयन गर्न दिनुहोस्। पूर्वनिर्धारित रूपमा बन्द किनभने Argon मोड-मेनु चयनकर्ताहरू प्रत्यक्ष Gemini वेब खाता विरुद्ध जाँच गरिएको छैन; बन्द हुँदा, मोडेल सूचीबद्ध छैन र यसको लागि अनुरोध पहिले जस्तै, अज्ञात मोडेलको रूपमा अस्वीकार गरिएको छ। स्टार्टअपमा पढ्नुहोस्, त्यसैले परिवर्तनलाई पुन: सुरु गर्न आवश्यक छ। |
| `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | कोल्ड-पथ प्रतिक्षामा जोडिएको `GET /v1/models` क्याटलग पुनर्निर्माण (#12627) को लागि बाध्य छ। टाइमआउटमा, एउटा अवस्थित हुँदा अन्तिम-राम्रो 200 सेवा गरिन्छ। |
| `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 दिन) | `src/lib/db/models/activeSyncedCatalog.ts` | जुन उमेर पछि जडानको सिंक गरिएको मोडेल सूची राउटिङको लागि आधिकारिक हुन रोक्छ र रजिस्ट्री (#12849) मा खोल्न असफल हुन्छ। कहिल्यै टाइमस्ट्याम्प नभएका पङ्क्तिहरू बासीको रूपमा गणना हुन्छन्। |
| `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | कति समय ढिलो `GET /api/usage/analytics` प्रतिक्रिया समान क्वेरी स्ट्रिङ (#15629) को लागि पुन: प्रयोग गरिन्छ। `0` ले क्यास असक्षम पार्छ। |
| `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | केवल एनालिटिक्स प्रतिक्रियाहरू जसले निर्माण गर्न कम्तिमा यति लामो समय लियो क्यास गरिन्छ, त्यसैले साना उदाहरणहरूले सधैं ताजा डेटा देख्छन्। |
| `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | अनसेट (बन्द) | `src/app/api/cache/route.ts` `src/lib/usage/analyticsResponseCache.ts` | Opt-in (#16361). When set to a non-negative integer N, the usage-history part of `GET /api/cache` (prompt-cache totals + trend) is served from the shared analytics response cache when it took at least N ms to build, per clamped `trendHours` window, for `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` (history may lag up to that TTL; `DELETE /api/cache` invalidates it). Unset or invalid = history read live on every request. |
| `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | NanoBanana छवि उत्पादन कार्यहरूको लागि अधिकतम पर्खनुहोस्। |
| `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | NanoBanana काम मतदान आवृत्ति। |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Adobe Firefly upscale सबमिट-पुन: प्रयास घातीय ब्याकअफको लागि आधार ढिलाइ। |
| `AWS_REGION` | _(अनसेट)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | AWS Bedrock endpoints (Kiro, अडियो) निर्माण गर्न प्रयोग गरिएको क्षेत्र। |
| `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 कामदार AI को लागि खाता ID । |
| `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(अनसेट)_ | `open-sse/executors/cloudflare-playground.ts` | Cloudflare AI खेल मैदान निर्वाहकको लागि पूर्ण डेस्कटप क्रोम बाइनरी मार्ग, हेडलेस फिंगरप्रिन्ट जाँचले Playwright को बन्डल गरिएको क्रोमियमलाई रोक्दा प्रयोग गरिन्छ। |
| `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _ अनसेट = कुनै लम्बाइ टोपी_ | `open-sse/executors/codebuddy/shared.ts` | CodeBuddy (CN र अन्तर्राष्ट्रिय) मा पठाइएको कलर प्रणाली प्रम्प्टहरूको लागि वैकल्पिक लम्बाइ क्याप। पूर्वनिर्धारित रूपमा कोडिङ-एजेन्ट पहिचान मार्कर बोक्ने प्रम्प्टलाई तटस्थ एकद्वारा प्रतिस्थापित गरिन्छ (Tencent को सामग्री फिल्टरले तिनीहरूलाई अस्वीकार गर्दछ); लामो प्रम्प्ट राखिएको छ। integer > 0 ले कुनै पनि प्रणाली प्रम्प्टलाई धेरै क्यारेक्टरहरू भन्दा लामो प्रतिस्थापन गर्दछ; unset, `0` वा गैर-पूर्णांक मानले क्यापलाई असक्षम पार्छ। प्रत्येक प्रतिस्थापन लगहरू जुन नियमबाट निकालिएको हुन्छ (पहिचान मार्कर वा लम्बाइ)। |
| `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | प्रोक्सी-पूल वर्कर्स रिले डिप्लोयर (#4640 / 9router#1360) द्वारा प्रयोग गरिएको Cloudflare REST API आधार ओभरराइड गर्नुहोस्। |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | पूर्वनिर्धारित कार्यकर्ता परियोजना नाम प्रोक्सी-पूल "डिप्लोय रिले" मोडलमा सुझाव गरियो। |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | प्रोक्सी पूल ट्याबबाट 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` | स्थानीय रूपमा व्यवस्थित क्लाउडफ्लेर्ड `config.yml` ( `tunnel:`, `credentials-file:`, `ingress:` सँग) को लागि मार्ग। सेट गरिएपछि, OmniRoute `tunnel --config run` (नाम दिइएको सुरुङ) चल्छ। |
| `CLOUDFLARED_HOSTNAME` | _(कन्फिग इनग्रेसबाट)_ | `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` | प्रोक्सी-पूल रिले डिप्लोयर (#4643 / 9router#1437) द्वारा प्रयोग गरिएको Deno Deploy REST API आधारलाई ओभरराइड गर्नुहोस्। |
| `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | डिफल्ट डेनो डिप्लोय एप नाम प्रोक्सी-पूल "डिप्लोय रिले" मोडलमा सुझाव गरिएको छ। |
| `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | प्रोक्सी पूल ट्याबबाट डेनो डिप्लोय रिले विकल्प लुकाउन `false` मा सेट गर्नुहोस्। |
| `SEARCH_CACHE_TTL_MS` | `300000` (५ मिनेट) | `open-sse/services/searchCache.ts` | TTL खोज API (Perplexity, Brave, etc.) प्रतिक्रिया क्यासिङका लागि। |
| `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Claude कोड-मात्र रिलेहरूको लागि प्रयोगात्मक CC-संगत प्रदायक UI प्रकट गर्नुहोस्। |
| `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | इम्बेडेड 9 राउटर उदाहरण सुन्ने होस्टलाई ओभरराइड गर्नुहोस्। |
| `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | इम्बेडेड 9 राउटर उदाहरण सुन्ने पोर्ट ओभरराइड गर्नुहोस्। |
| `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | इम्बेडेड-सेवा WebSocket प्रोक्सीको लागि होस्ट बाँध्नुहोस् (पूर्वनिर्धारित रूपमा मात्र लुपब्याक)। |
| `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` | होस्ट इन्टरफेस डकर-कम्पोजले (#12578) मा `cliproxyapi` साइडकार प्रकाशित गर्दछ। यसको डेटा भोल्युमले प्रदायक 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` | इम्बेडेड ओपन-वा (WhatsApp वेब स्वचालन) डेमनले सुन्ने पोर्टलाई ओभरराइड गर्नुहोस् (सधैं 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 कोड ग्राहकहरूलाई विशेष रूपमा स्वीकार गर्दछ। OmniRoute अनुरोधहरू पुन: लेख्छ त्यसैले ती रिलेहरूले तिनीहरूलाई स्वीकार गर्छन्। यदि तपाइँ Claude Code CLI मात्र प्रयोग गर्न चाहनुहुन्छ भने, वा तपाइँ यी रिलेहरू के हो भनेर निश्चित हुनुहुन्न भने, यसलाई असक्षम राख्नुहोस् र यसको सट्टामा नियमित एन्थ्रोपिक-कम्प्याटिबल प्रदायक थप्नुहोस्।
---
## 21. प्रोक्सी स्वास्थ्य
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | छिटो-असफल स्वास्थ्य जाँच टाइमआउट। |
| `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | विलम्बता-अनुकूलित पूल रणनीतिमा उम्मेद्वार प्रोक्सीहरूको औसत विलम्बता गणना गर्नको लागि समय विन्डो (घण्टा)। |
| `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | स्वास्थ्य जाँच परिणाम क्यास TTL। |
| `NONE_HONORED_WINDOW_HOURS` | `24` | `src/lib/db/reasoningEffortCompliance.ts` | GET /v1/models/health मा तर्क_effort = कुनै पनि अनुपालन पाठकको लागि घण्टामा ट्रेलिंग विन्डो। |
| `NONE_HONORED_CACHE_TTL_MS` | `20000` | `src/lib/db/reasoningEffortCompliance.ts` | गैर-अनुपालन स्न्यापसट (15-30s) को लागि ms मा क्यास TTL । |
| `NONE_HONORED_MIN_SAMPLE` | `3` | `src/lib/db/reasoningEffortCompliance.ts` | एक मोडेलले सम्मानित वा सम्मानित नभएको पढ्न अघि न्यूनतम कुनै पनि अनुरोध गर्दैन; यो तल मोडेल अज्ञात पढ्छ। |
| `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | असफल प्रोक्सी स्वास्थ्य जाँचहरूको लागि क्यास TTL । यसलाई `PROXY_HEALTH_CACHE_TTL_MS` भन्दा छोटो राख्नुहोस् ताकि साँच्चिकै मृत प्रोक्सीहरूको लागि द्रुत-असफल असक्षम नगरीकन उच्च समवर्ती पुन: प्रयास अन्तर्गत क्षणिक प्रोक्सी टाइमआउटहरू। |
| `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | `false` पृष्ठभूमि प्रोक्सी स्वास्थ्य अनुसूचक असक्षम गर्न सेट गर्नुहोस् जसले आवधिक रूपमा दर्ता प्रोक्सीहरूको जाँच गर्दछ। |
| `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | ms (न्यूनतम `60000`) मा पृष्ठभूमि स्वास्थ्य-तालिका स्वीप अन्तराल। |
| `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | एज-रिले प्रोक्सीहरू (`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` अन्त्य बिन्दु द्वारा प्रयोग गरिएको पहुँच जाँच लक्ष्य। सार्वजनिक पूर्वनिर्धारितबाट बच्न यसलाई internal/self-hosted URL मा पोइन्ट गर्नुहोस्। |
| `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | अनुसूचक र `/api/settings/proxies/auto-test` अन्त्य बिन्दु द्वारा साझा गरिएको, प्रति ब्याचमा एकैचोटि अनुसन्धान सुरु भयो। १ मा फ्लोर र ५० मा क्याप गरिएको। |
| `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | ब्याच भित्र दुई प्रोब प्रस्थान बीच ms मा ढिलाइ। यो बिना सम्पूर्ण ब्याच एकै क्षणमा छोड्छ र साझा निकास IP दर-सीमित लक्ष्य यात्रा गर्न सक्छ। स्पेसिङ असक्षम गर्न `0` मा सेट गर्नुहोस्; 5000 मा सीमित। |
| `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | प्रोक्सीको तोकिएको प्रदायक (`GET /models`, no API कुञ्जी) को वास्तविक होस्ट जाँच गर्न रोक्नको लागि "false" सेट गर्नुहोस् र यसको सट्टा सधैं `PROXY_HEALTH_TEST_URL` प्रयोग गर्नुहोस्। |
| `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | जब `false` (पूर्वनिर्धारित), स्वचालित पहुँच योग्यता जाँचहरू (अनुसूचक + र `/api/settings/proxies/auto-test` "सबै परीक्षण गर्नुहोस्" बटन) हुन्।** पढ्ने मात्र** र प्रोक्सीको स्थिति — कहिल्यै नलेख्नुहोस् केवल अपरेटरले active/inactive सेट गर्दछ, त्यसैले फ्ल्याकी प्रोबले तोकिएको प्रोक्सी (#6246) लाई स्ट्र्यान्ड गर्न सक्दैन। लिगेसी परीक्षण र सेट व्यवहार पुनर्स्थापना गर्न `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`) ले ड्यासबोर्डमा प्रोक्सी पूल अन्तर्गत पढ्ने-मात्र पोखरी निकास अवलोकन देखाउँदछ (पृथक इग्रेस IPs, जडानहरू र पछिल्लो 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` | अपरेटर-पुश गरिएको इग्रेस पङ्क्तिहरूका लागि घण्टामा अवलोकन सञ्झ्याल (हरेक पढाइमा पढ्नुहोस्; पुन: सुरु गर्न आवश्यक छैन)। १..१६८ मा बाँधिएको; दायरा बाहिर, गैर-संख्यात्मक, वा खाली एकल प्रक्रिया-व्यापी चेतावनीको साथ 24 मा फर्किन्छ, कहिल्यै थ्रो हुँदैन। |
| `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` | `true` हटाउनको सट्टा, लगातार लगातार असफलताहरू पछि, अनुसूचकलाई सफ्ट-असक्षम (स्थिति `dead`, कहिल्यै नमेटिएको) प्रोक्सी दिनको लागि सेट गर्नुहोस्। `PROXY_AUTO_REMOVE` को गैर-विनाशकारी विकल्प: प्रोक्सी तुरुन्तै pool/rotation रिजोल्युसनबाट बाहिरिन्छ (स्कोप-पूल रिजोल्युसनद्वारा प्रयोग गरिएको जीवित-स्थिति फिल्टरले यसलाई पहिले नै बहिष्कार गर्दछ) र पुन: प्रोबहरू पास गर्न थालेपछि स्वचालित रूपमा पुन: सक्रिय हुन्छ। `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` | उत्पादन ट्राफिकको एमएसमा विन्डो निष्क्रिय स्किपले हेर्छ (बाउन्ड `60000..599999`)। 10-मिनेट स्वीप अन्तराल भन्दा छोटो त्यसैले पातलो हुनुको सट्टा भर्खरको असफलता हावी हुन्छ। |
| `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | OAuth र प्रदायक प्रमाणीकरण प्रवाहहरूलाई पिन गरिएको प्रोक्सीलाई बाइपास गर्न र प्रोक्सी पहुँच योग्यता पूर्व-जाँचहरू असफल हुँदा सीधा जडान गर्न अनुमति दिनुहोस्। प्रभावकारी प्राथमिकता सुविधा झण्डा DB ओभरराइड > env var > पूर्वनिर्धारित हो। |
| `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30s) | `src/lib/resilience/settings.ts` | पूर्वनिर्धारित** लाइन - पर्खनुहोस्** बजेट: प्रदायक स्लटको लागि अनुरोध कति समय पर्खन सक्छ र यसलाई अस्वीकार गर्नु अघि कतारमा बस्न सक्छ, अपस्ट्रीममा कहिल्यै पुग्न सक्दैन। कामले — कार्यान्वयन गर्न सुरु गरेपछि `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` द्वारा छुट्टै बाउन्ड गरिएको टाइमर खाली हुन्छ। Env ले पूर्वनिर्धारित मात्र सेट गर्दछ: एक स्थिर `resilienceSettings.requestQueue.maxWaitMs`, र त्यसपछि एक प्रति-जडान `rateLimitOverrides.maxWaitMs`, प्रत्येकले यसलाई जित्छ। |
| `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (१० मिनेट) | `open-sse/services/rateLimitManager.ts` | स्वीकृत अनुरोध कति समयसम्म कार्यान्वयनमा रहन सक्छ यसको दर-सीमा रिजर्भेसनको म्याद समाप्त हुनु अघि — कतार-प्रतीक्षा बजेटबाट अलग गरिएको छ त्यसैले गैर-वृद्धिशील गेटवेहरूमा ढिलो ल्याउने-सुरु समय समाप्त हुँदैन (#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` | स्थिर ड्यासबोर्ड सेटिङ (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`) को परवाह नगरी स्वत-सक्षम दर सीमा सुरक्षा नेट on/off बल दिनुहोस्। `true`/`1`/`on` जबरजस्ती अन गर्न, `false`/`0`/`off` जबरजस्ती बन्द गर्न स्वीकार गर्दछ। सक्रिय हुँदा (पूर्वनिर्धारित), सक्रिय API-कुञ्जी जडानहरू स्वचालित रूपमा दर-सीमा सुरक्षित हुन्छन्। प्रति-जडान सेटिङ `rateLimitProtection: false` स्पष्ट सुरक्षा असक्षम पार्छ तर यो सुरक्षा जालबाट अप्ट आउट गर्दैन; यो env var लाई `false` मा सेट गर्नु भनेको दर-सीमा लामहरू बिना API-कुञ्जी जडानहरू चलाउनको लागि विश्वव्यापी संयन्त्र हो। |
| `PROVIDER_COOLDOWN_ENABLED` | _(अनसेट → बन्द)_ | `open-sse/services/providerCooldownTracker.ts` | अप्ट-इन ग्लोबल क्रस-अनुरोध provider/connection कूलडाउन ट्र्याकिङ। OFF पूर्वनिर्धारित रूपमा (ओभरल्याप जडान कूलडाउन / प्रदायक सर्किट ब्रेकर)। सक्षम गर्न `true`/`1`/`on` स्वीकार गर्दछ। |
| `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | असफल provider/connection पुन: प्रयास गर्नु अघि न्यूनतम कूलडाउन (ms)। लगातार असफलता संग तीव्रता मा मापन। `PROVIDER_COOLDOWN_ENABLED` हुँदा मात्र प्रयोग गरिन्छ। |
| `PROVIDER_COOLDOWN_MAX_MS` | `300000` (५ मिनेट) | `open-sse/services/providerCooldownTracker.ts` | असफल provider/connection पुन: प्रयास गर्नु अघि अधिकतम कूलडाउन (ms) क्याप वास्ता नगरी। `PROVIDER_COOLDOWN_ENABLED` हुँदा मात्र प्रयोग गरिन्छ। |
| `STREAM_RECOVERY_ENABLED` | _(अनसेट → बन्द)_ | `src/lib/resilience/settings.ts` (बीज) → `open-sse/services/streamRecovery.ts` (तर्क) | **के:** काटिएका अपस्ट्रिम स्ट्रिमहरूको पारदर्शी रिकभरी (फ्री-क्लाउड-कोड पोर्ट)। खुल्ने SSE सञ्झ्याललाई `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) सम्म समात्छ त्यसैले _pre-commit_ cutoff — जुन कुनै पनि बाइट क्लाइन्ट — पुग्नु अघि हुन्छ पुन: खोलिन्छ र अदृश्य रूपमा पुन: प्रयास गरिन्छ।** कहिले सक्षम गर्ने:** flaky/upstreams जुन स्ट्रिम सुरुमा बारम्बार 0-बाइट-ट्रन्केट हुन्छ; यदि तपाइँ प्रत्येक स्ट्रिममा थपिएको समय-देखि-पहिलो-टोकनको 750 ms सम्म खर्च गर्न सक्नुहुन्न भने OFF छोड्नुहोस्। `true`/`1`/`on` स्वीकार गर्दछ। बीज स्थिर लचिलोपन सेटिङ; ड्यासबोर्ड सेटिङ एक पटक सेट जित्छ। |
| `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(अनसेट → बन्द)_ | `src/lib/resilience/settings.ts` (बीज) → `open-sse/services/streamRecovery.ts` (तर्क) | **के:** _post-commit_ truncation पछि मिड-स्ट्रिम कन्टिन्युसन (Fase 4.4) — (बाइटहरू पहिले नै क्लाइन्टमा पुगिसकेका छन्), सहायक प्रिफिलको रूपमा आंशिक पाठसँग पुन: अनुरोध गर्नुहोस् र छुटेको प्रत्यय स्टिच गर्नुहोस्। सादा-पाठ OpenAI- संगत स्ट्रिमहरू मात्र; उडानमा उपकरण कलको साथ कहिल्यै फायर गर्दैन।** कहिले सक्षम गर्ने:** लामो पुस्ताहरू जसले मध्य-उत्तरहरू काट्छन् र तपाईंले टोकन-द्वारा-टोकनको सट्टा एक फटको रूपमा आएको पुन: प्राप्त पुच्छरलाई स्वीकार गर्नुहुन्छ। `STREAM_RECOVERY_ENABLED` बाट स्वतन्त्र (भिन्न जोखिम प्रोफाइल)। `true`/`1`/`on` स्वीकार गर्दछ। |
| `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(अनसेट → बन्द)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | अप्ट-इन सक्रिय-स्ट्रिम उपयोगी-आउटपुट वाचडग। स्ट्रिमहरू पत्ता लगाउँदछ जुन टुक्राहरू पठाइरहन्छ तर कन्फिगर गरिएको सहायक-आउटपुट दर भन्दा तल रहन्छ; मुटुको धड्कन, प्रयोग घटनाहरू, खाली डेल्टाहरू, र tool/reasoning चरणहरू प्रगतिको रूपमा मास्करेड गर्दैनन्। निष्क्रिय र हार्ड-डेडलाइन टाइमआउटहरूबाट अलग गर्नुहोस्। पूर्वनिर्धारित मात्र बीज गर्नुहोस्: `resilienceSettings` (ड्यासबोर्ड → सेटिङहरू → लचिलोपन) मा सुरक्षित गरिएको बुलियनले प्राथमिकता लिन्छ। |
| `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | थ्रुपुट मूल्याङ्कन अघि ग्रेस अवधि, 0-600000 ms मा सीमित। |
| `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | रोलिङ उपयोगी-आउटपुट विन्डो, 1000–600000 ms मा बाउन्ड गरिएको; रद्द गर्नु अघि एउटा पूर्ण सञ्झ्याल आवश्यक छ। |
| `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` | प्रदायक टोकन स्वास्थ्य जाँचहरू बीच `HEALTHCHECK_STAGGER_MS` को शीर्षमा न्यूनतम अनियमित जिटर (ms) थपियो, फुट्नबाट जोगिन (अंक #1220)। |
| `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | प्रदायक टोकन स्वास्थ्य जाँचहरू बीच `HEALTHCHECK_STAGGER_MS` को शीर्षमा अधिकतम अनियमित जिटर (ms) थपियो, फुट्नबाट जोगिन (अंक #1220)। |
| `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | स्टार्टअप टोकन-हेल्थचेक स्वीपको लागि समवर्ती-चेक ब्याच साइज; ठूला मानहरूले समानान्तरमा थप जडानहरू जाँच गर्छन्, साना मानहरूले बर्स्ट लोड घटाउँछन् (अंक #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` | हेडरूम टोकन सेभर प्रोक्सी URL ड्यासबोर्ड जीवनचक्र (`api/headroom/*`) ले पूर्वनिर्धारित रूपमा लुपब्याकमा स्थानीय `headroom-ai` CLI उत्पन्न गर्छ; बाह्य Docker साइडकार प्रोक्सीमा पोइन्ट गर्न मात्र ओभरराइड गर्नुहोस्। |
### स्ट्रिम-रिकभरी ट्युनिङ स्थिरता
रिकभरी होल्डब्याक व्यवहार `open-sse/config/constants.ts` (`STREAM_RECOVERY`) मा हार्डकोड गरिएको स्थिरांकहरूद्वारा ट्युन गरिएको छ, सन्दर्भको लागि यहाँ देखाइएको — तिनीहरूलाई परिवर्तन गर्न कोड सम्पादन आवश्यक छ, env var होइन:
- `STREAM_RECOVERY.HOLDBACK_MS = 750` — खोल्ने SSE सञ्झ्याल कति लामो समयसम्म राखिएको छ त्यसैले कुनै पनि बाइट क्लाइन्टलाई प्रतिबद्ध हुनु अघि प्रारम्भिक ट्रंकेशन पुन: प्रयास गर्न सकिन्छ।
- राखिएको विन्डोमा`STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — कडा टोपी; कमिट (फ्लश + पासथ्रु) जतिसुकै धेरै बाइटहरू जम्मा हुन्छ, टाइमरको पर्वाह नगरी।
- `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — अधिकतम पारदर्शी अपस्ट्रीम स्ट्रिमको पुन: खोल्छ जबकि होल्डब्याक अझै अप्रतिबद्ध छ।
> **प्रति-प्रदायक स्लाइडिङ-सञ्झ्याल दर सीमा (कुनै env var):** FCC-पोर्टेड प्रति-प्रदायक स्लाइडिङ-विन्डो दर-सीमा _fallback_ कोडमा अवस्थित छ (`open-sse/services/providerDefaultRateLimit.ts`, `open-sse/services/rateLimitManager.ts` मार्फत तार गरिएको) तर जहाजहरू** खाली पूर्वनिर्धारित नक्सा** र छ** कुनै अपरेटर env var छैन** आज — यो केवल एक परीक्षण हुक / कोड सम्पादन मार्फत सक्षम छ। यो जानाजानी माथिको तालिकामा सूचीबद्ध गरिएको छैन। per-`(token, IP)` रिले लिमिटर जुन _does_ सँग एक घुँडा छ `RELAY_IP_PER_MINUTE` (§3 नेटवर्क र पोर्टहरू)।
---
## 22. डिबगिङ
> [!CAUTION]
> यी चरहरू उत्पादन गर्छन्** वर्बोज आउटपुट** र संवेदनशील डाटा लीक हुन सक्छ।** उत्पादनमा कहिल्यै सक्षम नगर्नुहोस्।**
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CURSOR_DEBUG` | _(अनसेट)_ | `open-sse/executors/cursor.ts` | verbose Cursor executor लगहरू (decoded 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 निष्पादकको लागि निष्क्रिय टाइमआउट (ms) स्ट्रिम गर्नुहोस्। |
| `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | कम्पोजर kv_after_text सफ्ट टर्मिनेटर पछि ग्रेस विन्डो (ms) जब बाइटहरू बफर रहन्छ — यसको फ्रेम पूरा गर्नको लागि ट्रेलिंग exec_mcp उपकरण कल समय दिन्छ। |
| `CURSOR_TOOL_DIRECTIVE` | सक्षम (`!== "0"`) | `open-sse/executors/cursor.ts` | उपकरण-कमिट निर्देशन जसले composer-2 विश्वसनीय रूपमा उपकरण कलहरू जारी गर्दछ। `0` लाई असक्षम गर्न सेट गर्नुहोस्। |
| `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(अनसेट)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | अपरेटर-परिभाषित प्रणाली प्रम्प्ट पाठ प्रणाली सन्देश AFTER अनुवाद (पोस्ट-अनुवाद इंजेक्शन), codex/Responses र `/v1/messages` मार्गहरूमा पुग्न जोडिएको छ। प्रतिध्वनि प्रणाली प्रस्तावना ब्लकहरूबाट निकालिएको निर्देशन उपसर्गको रूपमा पनि प्रयोग गरिन्छ। असक्षम गर्न सेट नगरी छोड्नुहोस्। |
| `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (बन्द) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | ओपनाइ → क्लाउड स्ट्रिमको सुरुबाट प्रतिध्वनि प्रणाली-प्रम्प्ट प्रस्तावना ब्लकहरू स्ट्रिप गर्न `1` मा सेट गर्नुहोस्। पूर्वनिर्धारित रूपमा बन्द — heuristics अंग्रेजी-गद्य आकारको हुन्छ र प्रतिक्रिया पेलोडलाई म्युटेट गर्छ, त्यसैले यस्तो खण्डसँग वैध रूपमा खुल्ने जवाफले यसलाई गुमाउनेछ। |
| `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | रिमोट `image_url` दृष्टि इनपुटको लागि प्रति-छवि फेच टाइमआउट (ms)। |
| `CURSOR_STATE_DB_PATH` | _(प्रोभेड)_ | `open-sse/utils/cursorVersionDetector.ts` | IDE संस्करण पत्ता लगाउन प्रयोग गरिएको Cursor IDE राज्य DB लुकअपलाई ओभरराइड गर्नुहोस्। |
| `CURSOR_AGENT_CLI_VERSION` | _(पत्ता लगाउने / पिन)_ | `open-sse/utils/cursorAgentCliVersion.ts` | एजेन्ट रनमा `x-cursor-client-version: cli-…` को लागि एजेन्ट CLI बिल्ड आईडी (`YYYY.MM.DD-`)। |
| `CURSOR_AGENT_BIN` | _(अनसेट)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | छवि उत्पादनको लागि प्रयोग गरिएको Cursor एजेन्ट बाइनरीमा मार्ग। सेट नगरिएको, ह्यान्डलरले `providerSpecificData.agentBin` त्यसपछि PATH प्रयोग गर्दछ। |
| `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor एजेन्ट छवि कार्यहरूको लागि प्रति-छवि भित्ता घडी (ms)। |
| `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor छवि कार्यहरूको लागि साझा-सीट कन्कर्रेन्सी गेट। |
| `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) image-gen result-poll cadence (ms)। |
| `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC image-gen result-poll wall clock (ms)। |
| `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC (uncensored.com) भिडियो-जन परिणाम-पोल क्याडेन्स (ms)। |
| `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC video-gen result-poll wall clock (ms)। |
| `CURSOR_DATA_DIR` | _(प्रोभेड)_ | `open-sse/utils/cursorAgentCliVersion.ts` | ओभरराइड Cursor एजेन्ट CLI डाटा dir (`…/versions/`); आधिकारिक एजेन्टले प्रयोग गर्ने समान var। |
| `CURSOR_TOKEN` | _(अनसेट)_ | `scripts/ad-hoc/cursor-tap.cjs` | विकासकर्ता टूलिङद्वारा प्रयोग गरिएको प्रत्यक्ष Cursor बेयरर टोकन। |
| `OMNIROUTE_LOG_REQUEST_SHAPE` | असक्षम ( `"1"` मार्फत अप्ट-इन) | `src/app/api/v1/chat/completions/route.ts` | `"1"` सेट हुँदा ठूला च्याट पेलोडहरूको लागि content-type/length मार्करहरू लग गर्नुहोस्। लग शोर कम गर्न पूर्वनिर्धारित रूपमा बन्द गर्नुहोस्। |
| `DEBUG_RESPONSES_SSE_TO_JSON` | _(अनसेट)_ | `open-sse/handlers/responseTranslator.ts` | प्रतिक्रियाहरू API SSE→JSON अनुवाद विवरणहरू लग गर्न `true` सेट गर्नुहोस्। |
| `DEBUG_CLAUDE_NONSTREAM` | _(अनसेट)_ | `open-sse/handlers/responseTranslator.ts` | `true` Claude प्रतिक्रिया अनुवाद मार्गमा खाली textContent टुक्राहरू सतहमा सेट गर्नुहोस् (डिबग मात्र)। |
| `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(अनसेट)_ | E2E परीक्षण हार्नेस | E2E परीक्षण मोड सक्षम गर्न `true` सेट गर्नुहोस् (निश्चित प्रमाणीकरण, परीक्षण हुकहरू)। |
---
## 23. GitHub एकीकरण
प्रयोगकर्ताहरूलाई ड्यासबोर्डबाट सीधा समस्याहरू रिपोर्ट गर्न अनुमति दिनुहोस्।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| --------------------- | -------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GITHUB_ISSUES_REPO` | _(अनसेट)_ | `src/app/api/v1/issues/report/route.ts` | `owner/repo` ढाँचामा भण्डार। |
| `GITHUB_ISSUES_TOKEN` | _(अनसेट)_ | `src/app/api/v1/issues/report/route.ts` | GitHub व्यक्तिगत पहुँच टोकन `issues:write` स्कोपको साथ। |
| `GITHUB_TOKEN` | _(अनसेट)_ | मुद्दा triage / क्लाउड एजेन्ट सहयोगीहरू | जेनेरिक GitHub पहुँच टोकन `GITHUB_ISSUES_TOKEN` को लागि फलब्याकको रूपमा प्रयोग गरिन्छ र `src/lib/cloudAgent/*` मा क्लाउड एजेन्ट सहयोगीहरूद्वारा खपत हुन्छ। |
---
## फ्री-टियर Keep-Alive रेन्डर गर्नुहोस्
रेन्डरले इनबाउन्ड ट्राफिक बिना लगभग 15 मिनेट पछि नि: शुल्क वेब सेवा स्पिन गर्दछ। स्ट्यान्डअलोन लन्चर (`scripts/dev/run-standalone.mjs`, जुन Docker छविले चलाउँछ) लाई रोक्नको लागि सेवाको आफ्नै सार्वजनिक URL पिङ गर्न सक्छ। सार्वजनिक URL उपलब्ध नभएसम्म यसले केही गर्दैन, र स्थिति परिवर्तन हुँदा मात्र लग गर्छ।
| चर | पूर्वनिर्धारित | विवरण |
| ---------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `SELF_PING_ENABLED` | URL सेट गर्दा | `0`, `false`, `off` वा `no` ले पिङ्गर बन्द गर्छ। यसलाई भुक्तान रेन्डर योजनाहरूमा प्रयोग गर्नुहोस्, जहाँ केहि पनि घट्दैन। |
| `SELF_PING_URL` | `RENDER_EXTERNAL_URL` | पिंग गर्न आधार URL । रेन्डरले प्रत्येक योजनामा `RENDER_EXTERNAL_URL` आफै सेट गर्छ, त्यसैले पिङ्गर त्यहाँ पूर्वनिर्धारित रूपमा हुन्छ। |
| `SELF_PING_PATH` | `/api/monitoring/health` | त्यो URL मा बाटो। `/` सँग सुरु गर्नुपर्छ; अरू कुनै पनि कुराले चेतावनीको साथ पिङ्गरलाई असक्षम पार्छ। |
| `SELF_PING_INTERVAL_SECONDS` | `180` | पिंगहरू बीचको सेकेन्ड, पहिलो पिंग 60 सेकेन्ड पछि। `30` तलको मानहरू `180` मा फर्किन्छन्। |
पूरै महिनाको लागि जागृत राखिएको सेवाले लगभग 744 उदाहरण घण्टा प्रयोग गर्दछ, त्यसैले यसलाई रेन्डरको हालको फ्रि-टियर भत्ता विरुद्ध जाँच गर्नुहोस्।
## परिनियोजन परिदृश्यहरू
रिले ब्याकएन्ड SRE मार्गदर्शनको लागि (ts/bifrost/auto व्यवहार, 9 राउटर बनाम 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
```
### Air-Gapped / 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. Skills Sandbox (v3.8.0 +)
स्किल फ्रेमवर्क (`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` सेट गर्नुहोस्। मा पूर्वनिर्धारित** पृथक** सुरक्षाको लागि। `agent-sandbox` रनटाइम द्वारा बेवास्ता गरिएको: नेटवर्क अलगाव, पढ्न-मात्र रूट फाइल प्रणाली र CPU/memory सीमाहरू अपरेटरको `SandboxTemplate` बाट आउँछन्। |
| `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(खाली)_ | `src/lib/skills/builtins.ts` | स्यान्डबक्स कार्यान्वयनको लागि अनुमति दिइएको कन्टेनर छविहरूको अल्पविराम-विभाजित अनुमति सूची। खाली भनेको पूर्वनिर्धारित मात्र हो। |
| `SKILLS_SANDBOX_DOCKER_IMAGE` | _(बिल्ट-इन पूर्वनिर्धारित)_ | `src/lib/skills/` | डकर-ब्याक गरिएको स्यान्डबक्स स्प्यान गर्दा प्रयोग गरिएको कन्टेनर छवि। आफू अनुकूल कडा आधार छवि पिन गर्न ओभरराइड गर्नुहोस्। |
| `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | कौशल स्यान्डबक्सिङको लागि कन्टेनर रनटाइम: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman` \| `agent-sandbox`। `auto` प्रत्येक होस्ट OS (Apple Container/OrbStack मा macOS, Windows मा WSL कन्टेनर, Linux मा Podman), Docker मा फिर्ता झर्दै सबै भन्दा राम्रो स्थापित रनटाइम छान्छ। `agent-sandbox` (रिमोट Kubernetes warm pools) अप्ट-इन मात्र हो र कहिल्यै स्वतः पत्ता लाग्दैन। |
| `SKILLS_AGENT_SANDBOX_POOLS` | _(खाली)_ | `src/lib/skills/agentSandboxProvider.ts` | `image=pool` जोडीहरू, अल्पविराम-विभाजित: कुन `SandboxWarmPool` प्रत्येक स्यान्डबक्स छविलाई `SKILLS_SANDBOX_RUNTIME=agent-sandbox` गर्दा सेवा गर्दछ। |
| `SKILLS_AGENT_SANDBOX_POOL` | _(खाली)_ | `src/lib/skills/agentSandboxProvider.ts` | `SKILLS_AGENT_SANDBOX_POOLS` मा सूचीबद्ध नभएका छविहरूको लागि फलब्याक न्यानो पूल। रन असफल हुन्छ (स्थानीय कन्टेनरहरूमा कुनै फलब्याक छैन) जब न त समाधान हुन्छ। |
| `SKILLS_AGENT_SANDBOX_NAMESPACE` | `default` | `src/lib/skills/agentSandboxProvider.ts` | न्यानो पोखरीहरू समात्ने नेमस्पेस; एक `SandboxClaim` प्रति रन यहाँ सिर्जना र मेटाइएको छ। |
| `SKILLS_AGENT_SANDBOX_KUBECONFIG` | _(kubectl पूर्वनिर्धारित)_ | `src/lib/skills/agentSandboxProvider.ts` | एजेन्ट-स्यान्डबक्स रनटाइमको लागि Kubeconfig। नामस्थानमा create/get/list/watch/delete, pods get, pods/exec सिर्जना गर्ने मात्र स्यान्डबक्सको आवश्यकता छ। |
| `SKILLS_AGENT_SANDBOX_KUBECTL` | `kubectl` | `src/lib/skills/agentSandboxProvider.ts` | एजेन्ट-स्यान्डबक्स रनटाइम द्वारा प्रयोग गरिएको kubectl बाइनरी। |
| `SKILLS_AGENT_SANDBOX_CONTAINER` | `main` | `src/lib/skills/agentSandboxProvider.ts` | स्यान्डबक्स पोड भित्र कन्टेनर नाम जुन आदेशहरू कार्यान्वयन गरिन्छ। |
| `SKILLS_AGENT_SANDBOX_CLAIM_TIMEOUT_S` | `60` | `src/lib/skills/agentSandboxProvider.ts` | दावी तयार हुनको लागि प्रतिक्षा गर्न सेकेन्ड (अधिकतम 600)। यदि यो कहिल्यै गर्दैन भने दावी मेटाइन्छ। |
> [!CAUTION]
> `SKILLS_SANDBOX_NETWORK_ENABLED=true` सक्षम गर्नाले मनमानी कौशल कोडबाट बाहिरिने बाटो खोल्छ। साझा परिनियोजनहरूमा `OUTBOUND_SSRF_GUARD_ENABLED=true` र कडा `CORS_ORIGIN`/proxy नीतिसँग जोडी गर्नुहोस्।
---
## 25. प्रदायक कोटा, टनेल, ब्याकअप र विविध रनटाइम
Redis सत्र-सम्बन्धित fallback अमान्यीकरण (opt-in मात्र; SQLite को पूर्वनिर्धारित व्यवहार अपरिवर्तित):
प्रत्येक Redis affinity store ले बढीमा 8 वटा पेन्डिङ अपरेसनहरू स्वीकार गर्छ; क्षमता पुगेपछि, कलहरूले तुरुन्तै SQLite प्रयोग गर्छन्, र कल गर्नेको 100 ms समयसीमा समाप्त भएपछिसमेत अन्तर्निहित Redis कार्य पूरा नभएसम्म स्लटहरू ओगटिइरहन्छन्।
- R1. सत्रसम्बन्धी अपरेसनका लागि समयमै प्राप्त भएको कुनै पनि Redis reply प्रामाणिक हुन्छ: स्वीकार गरिएका mutation, अस्वीकृत/हराएका CAS, नभेटिएका key, अनुपस्थित key का delete, तथा eviction का hit वा miss ले त्यस सत्रको स्थानीय fallback row लाई समकालिक रूपमा खाली गर्छन्; reply र clear बीच कुनै await हुँदैन। खाली गर्नु सुरक्षित छ (अधिकतम रूपमा, पछिल्लो outage का बेला एकपटक पुनःचयन हुन सक्छ); पुरानो row भने सुरक्षित हुँदैन।
- R2. समयसीमा नाघेको वा त्रुटि भएको र स्थानीय fallback मा लेख्ने अपरेसनले आफूले लेखेको कुरा serialized bytes का रूपमा ठ्याक्कै अभिलेख गर्छ। यसको Redis command ढिलो गरी पूरा भएमा, समकालिक SQLite compare-and-delete ले account वा connection match का आधारमा कहिल्यै नभई, त्यही byte-identical row मात्र खाली गर्छ। अझ नयाँ outage write सुरक्षित रहन्छ।
- R3. Eviction ले outage का बेला समेत असफल account को स्थानीय pin सधैँ हटाउँछ; त्यसको reply handling ले त्यसपछि R1/R2 पालना गर्छ। स्वस्थ Redis ले स्थानीय pin कहिल्यै लेख्दैन: कुनै mirror वा ordering ledger हुँदैन, र outage का बेला instances फरक हुन सक्छन्।
प्रदायकका quota endpoint, नेटवर्क टनेलहरू (Tailscale, Ngrok, MITM debug proxy), 1Proxy egress pool, database backup, तथा executor layer वा scripts द्वारा सन्दर्भित साना प्रति-feature override हरू।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_SESSION_AFFINITY_STORE` | `sqlite` | `src/lib/db/sessionAffinity/storeFactory.ts` | सेसन-देखि-खाता अफिनिटी ब्याकएन्ड। कन्फिगर गरिएको `REDIS_URL` सहित `redis` ले मात्र साझेदारी सक्षम गर्छ; सेट नगरिएका/अज्ञात मानहरू वा अनुपस्थित Redis कन्फिगरेसनले SQLite प्रयोग गर्छन्। सकारात्मक `sessionAffinityTtlMs` आवश्यक हुन्छ। Redis रुटिङले ह्यास गरिएको प्रयोग-खाता पहिचान र कनेक्सन ID भण्डारण गर्छ; पूर्वनिर्धारित SQLite रुटिङले पुरानो चार-फिल्ड JSON संरचना कायम राख्छ। ID मिलाउनु अघि योग्य स्थानीय पूलभित्र पहिचान मिलाउँछ। साझा क्लाइन्टको `REDIS_KEY_PREFIX`, JSON मानहरू र `PX` TTL प्रयोग गर्छ; म्युटेसनहरूले ठ्याक्कै अवलोकन गरिएको मानसँग तुलना गर्छन्। स्वस्थ Redis प्रतिक्रियाहरूले स्थानीय आउटेज फलब्याक अमान्य बनाउँछन्, र ढिलो प्रतिक्रियाले त्यस टाइमआउट भएको अपरेसनले लेखेको ठ्याक्कै सिरियलाइज गरिएको फलब्याक पङ्क्ति मात्र हटाउन सक्छ। प्रिफेच गरिएका पिनहरू प्रयोग गर्दा पुनः प्रमाणीकरण गरिन्छ। Redis त्रुटि, टाइमआउट वा एडमिसन संतृप्तिमा SQLite मा फलब्याक हुन्छ र सीमित चेतावनीहरू देखाइन्छन् (प्रति स्टोर कल 100 ms सीमा); सफल Redis मिसहरूले श्याडो पढ्दैनन्। यसले कम्बो स्टिकिनेस, नेटिभ Codex टर्न पिन, खाता समवर्तीता, लकआउट वा खर्च सीमाहरू साझेदारी गर्दैन। |
| `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | रेट लिमिटर ब्याकएन्डका लागि Redis कनेक्सन स्ट्रिङ। |
| `ALIBABA_CODING_PLAN_HOST` | _(उत्पादन होस्ट)_ | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian कोडिङ-प्लान कोटा ल्याउन प्रयोग हुने होस्ट ओभरराइड गर्नुहोस्। |
| `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` › बिलिङ › सदस्यता (F12 › नेटवर्क) मा `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 key ले यसलाई पढ्न सक्दैन। Token Plan पृष्ठमा `platform.xiaomimimo.com` तर्फ गरिएका कुनै पनि अनुरोधबाट (F12 › नेटवर्क) सम्पूर्ण `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 var लाई प्राथमिकता दिन्छ। |
| `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio को निःशुल्क-टियर भिजन/मिडिया कोटा फेच गर्नका लागि कन्सोल फ्रन्ट-एन्ड पाथ ओभरराइड। |
| `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio को निःशुल्क-टियर मल्टिमोडल कोटा फेच गर्नका लागि कन्सोल फ्रन्ट-एन्ड पाथ ओभरराइड। |
| `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio को निःशुल्क-टियर अडियो कोटा फेच गर्नका लागि कन्सोल फ्रन्ट-एन्ड पाथ ओभरराइड। |
| `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(सेट गरिएको छैन)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | बिल्ट-इन Alibaba निःशुल्क-टियर टेक्स्ट-मोडल अनुमति सूचीका लागि स्थानीय JSON ओभरराइडको वैकल्पिक पाथ। पहिले `$DATA_DIR/alibaba-free-tier-allowlist.json`, त्यसपछि `config/alibaba-free-tier-allowlist.json` मा फलब्याक हुन्छ। |
| `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | प्रोम्प्ट बजेट गणना गर्दा completion आउटपुटका लागि सुरक्षित राखिने टोकनहरू। |
| `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | सन्दर्भ विन्डोमा अटाउन पुराना इनलाइन छविहरू हटाउँदा राखिने सबैभन्दा नयाँ इनलाइन छविहरूको सङ्ख्या (#8560)। |
| `MODEL_ALIAS_COMPAT_ENABLED` | सक्षम | `open-sse/services/model.ts` | पुराना क्लाइन्टहरूले प्रयोग गर्ने लेगेसी मोडेल-अलियास अनुकूलता तह सक्षम वा असक्षम गर्ने। |
| `OMNIROUTE_EMERGENCY_FALLBACK` | सक्षम | `open-sse/services/emergencyFallback.ts` | निःशुल्क `nvidia`/`nvidia/nemotron-3.5-super-vl-120b-a12b` मोडेलमा असफल अनुरोधहरू पुनः रुट गर्ने आपत्कालीन बजेट-समाप्ति फलब्याक असक्षम गर्न `false` (वा `0`) सेट गर्नुहोस्। प्रभावकारी प्राथमिकता Feature Flags DB override > env var > default हो; उपलब्ध नभएमा, सेवाले कच्चा 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 upstream मा `x-command-code-version` हेडरका रूपमा पठाइने मान। CLI संस्करण बढाउन यसलाई ओभरराइड गर्नुहोस्। |
| `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | स्मार्टफोन कोटा-प्राप्तकर्ता टेलिमेट्रीले प्रयोग गर्ने Command Code प्रयोग/कोटा upstream को आधार 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` (रुट 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` | रुट-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 लाई म्यानुअल रूपमा विश्वास गर्ने root-रहित / प्रयोगकर्ता-नेमस्पेसयुक्त डिप्लोयमेन्टहरूका लागि (जस्तै 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` सेट गर्नुहोस् — स्यान्डबक्स गरिएका वा पढ्न-मात्र परीक्षण वातावरणहरूका लागि। |
| `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | परीक्षण/CI-मात्र सुरक्षा: प्रमाणपत्र विश्वास स्थापना/हटाउने कार्यलाई no-op बनाउन `1` सेट गर्नुहोस्, ताकि परीक्षण सुइटले OS trust store मा कहिल्यै परिवर्तन नगरोस्। परीक्षण सेटअप र CI कार्यप्रवाहहरूले स्वचालित रूपमा सेट गर्छन्। |
| `CHANGELOG_BASE_REF` | _(auto)_ | `scripts/check/check-changelog-integrity.mjs` | CHANGELOG-खाने कार्य रोक्ने गेटका लागि स्पष्ट base ref (CI मा PR को base branch वा `release/v*` मध्ये सबैभन्दा उच्चमा डिफल्ट हुन्छ)। |
| `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | ब्याकग्राउन्ड free-proxy pool auto-sync scheduler सक्षम गर्न `true` सेट गर्नुहोस्। यो opt-in हो र डिफल्ट रूपमा बन्द हुन्छ। |
| `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | मिलिसेकेन्डमा auto-sync अन्तराल (डिफल्ट 30 मिनेट)। |
| `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy free proxy स्रोत सक्षम गर्नुहोस्। असक्षम गर्न `false` सेट गर्नुहोस्। |
| `FREE_PROXY_1PROXY_API_URL` | _(see oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy API URL ओभरराइड। |
| `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 निःशुल्क प्रोक्सी स्रोत सक्षम गर्नुहोस्। अप्ट-इन मात्र। |
| `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` | गैर-अन्तरक्रियात्मक / हेडलेस `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 अवस्थाका लागि पुनःप्रयोग गरिन्छन्; समवर्ती माइग्रेसन विन्डोभित्र तिनलाई हटाइँदैन। Settings → Database backup retention बाट सुरक्षित गरिएको मानलाई अधिलेखन गर्छ। |
| `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | म्यानुअल/निर्धारित ब्याकअप सफाइद्वारा राखिने अधिकतम उमेर (दिनमा)। `0` ले उमेर-आधारित हटाउने प्रक्रिया निष्क्रिय गर्छ। समवर्ती माइग्रेसन विन्डोभित्र माइग्रेसन स्न्यापसटहरू हटाइँदैनन्। Settings → Database backup retention बाट सुरक्षित गरिएको मानलाई अधिलेखन गर्छ। |
| `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | `backup-schedule.json` कार्यान्वयन गर्ने सर्भर-पक्षीय कार्यको टिक अन्तराल (ms)। १-मिनेटको क्रोन ग्रानुलारिटीभन्दा पर्याप्त कम हुनुपर्छ; `5000` भन्दा कम वा पार्स गर्न नसकिने मानहरू `30000` मा फर्किन्छन्। |
| `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | एंट्रीप्वाइन्ट अनुमति जाँचका लागि कन्टेनर रनटाइम सङ्केत। कुनै पनि Podman टोपोलोजीका लागि `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` | पूलको संतृप्ति अनुपात (0..1); यो मानमा वा सोभन्दा माथि पूल कडा मोडमा प्रवेश गर्छ (उधारो लिन सकिँदैन)। |
| `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` | प्रिफ्लाइट कोटा कटअफ बन्द हुँदा (#4540), अटो-कम्बो स्कोरिङमा समाप्त भएको प्रदायक (`credits_exhausted`/`rate_limited`) मा लागू गरिने स्कोर गुणक (0..1)। |
| `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | GC (`gcQuotaConsumption`) अघि `quota_consumption` बकेटहरूका लागि राखिने अवधि (दिनमा)। |
| `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | वैकल्पिक (पूर्वनिर्धारित रूपमा बन्द): स्कोरिङअघि कम-कोटा भएका उम्मेदवारहरू हटाउने अटो-राउटिङको कडा कोटा कटअफ सक्षम गर्छ। यसले पूर्वनिर्धारित मान मात्र सेट गर्छ: `resilienceSettings` (Dashboard → Settings → Resilience) मा सुरक्षित गरिएको बुलियन मानलाई प्राथमिकता दिइन्छ। |
| `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` | Chaos प्रसारण ह्यान्डलरमा पठाइने न्यूनतम प्यानल-आकार ट्युनिङ; सेट नगरिँदा इन्जिनको डिफल्ट प्रयोग हुन्छ। |
| `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(इन्जिनको डिफल्ट)_ | `open-sse/services/autoCombo/virtualFactory.ts` | सम्पूर्ण chaos प्यानल फ्यान-आउटका लागि कडा टाइमआउट (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` | बुट हुँदा Inspector HTTP प्रोक्सी स्वतः सुरु गर्ने। |
| `INSPECTOR_LLM_HOSTS_EXTRA` | _(unset)_ | `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` | सिस्टम-प्रोक्सी गार्डले OS प्रोक्सी सेटिङहरू स्वतः पुनर्स्थापना गर्नुअघि लाग्ने मिनेटहरू। |
| `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(auto)_ | `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` | _(unset)_ | `src/app/(dashboard)/dashboard/playground/` | Playground को 'प्रम्प्ट सुधार्ने' कार्यका लागि पूर्वनिर्धारित मोडेल (सेट नगरिएको अवस्थामा सक्रिय मोडेल प्रयोग हुन्छ)। |
| `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost साइडकार प्रोक्सीका लागि मुख्य किल स्विच। `0` मा सेट गर्दा, रुटले `X-Bifrost-Killswitch` हेडरसहित 503 फर्काउँछ र अपरेटरलाई TS पथमा पठाउँछ। पुनः डिप्लोय नगरी साइडकार असक्षम गर्न प्रयोग गर्नुहोस् (टियर-1 राउटर समस्या, कुञ्जी रोटेसन)। |
| `BIFROST_BASE_URL` | _(unset)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | सेट गरिएको अवस्थामा, Bifrost साइडकार प्रोक्सी रुटले `/v1/chat/completions` ट्राफिकलाई TS रिले ह्यान्डलरको सट्टा यस Go गेटवेमा फर्वार्ड गर्छ। सेट नगरिएको अवस्थामा → फलब्याकसहित 503। अन्तिम स्ल्यास हटाइन्छ। |
| `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | OmniRoute ले Bifrost साइडकारको जीवनचक्र व्यवस्थापन गर्दा सुपरिवेक्षण गरिएको Bifrost एम्बेडेड सेवाले बाँध्ने पोर्ट (`127.0.0.1:`)। पूर्वनिर्धारित मान `8080` हो। |
| `SINGBOX_PORT` | `20140` | `src/lib/services/bootstrap.ts` | OmniRoute ले sing-box साइडकारको जीवनचक्र व्यवस्थापन गर्दा सुपरिवेक्षण गरिएको sing-box एम्बेडेड सेवाले बाँध्ने पोर्ट (`127.0.0.1:`)। पूर्वनिर्धारित मान `20140` हो। |
| `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 साइडकारले लोड गर्ने Hugging Face मोडेल आईडी (चाइल्ड प्रक्रियाको env मा पठाइन्छ)। |
| `BIFROST_API_KEY` | _(सेट गरिएको छैन)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost गेटवेका लागि API कुञ्जी (`Authorization: Bearer ...` का रूपमा पठाइन्छ)। यदि सेट गरिएको छैन भने, रुटले अनुरोधमा मान्य OmniRoute API कुञ्जी हुनुपर्ने अपेक्षा गर्छ; यो कुञ्जी गेटवे-पक्षीय प्रमाणीकरणका लागि मात्र हो। |
| `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | true हुँदा, Bifrost साइडकार रुटले TS स्ट्रिमिङ एक्जिक्युटरमार्फत नभई गेटवेमार्फत SSE प्रयोग गरेर प्रतिक्रियाहरू स्ट्रिम गर्छ। गेटवेमार्फत गैर-स्ट्रिमिङ JSON प्रतिक्रियाहरू बाध्य गर्न `0` सेट गर्नुहोस्। |
| `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost गेटवेमा प्रोक्सी गर्दा प्रत्येक अनुरोधका लागि समयसीमा (ms)। समयसीमा नाघेमा रुटले `X-Bifrost-Fallback` हेडरमार्फत TS रिले मार्ग फर्काउँछ। |
| `OMNIROUTE_BIFROST_KEY` | _(unset)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `BIFROST_API_KEY` को उपनाम (env लाई `OMNIROUTE_*` मार्फत पढ्ने स्क्रिप्टहरूले प्रयोग गर्छन्)। दुवै सेट हुँदा `BIFROST_API_KEY` लाई प्राथमिकता दिइन्छ। |
| `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `/api/v1/relay/chat/completions` का लागि रिले ब्याकएन्ड: `ts \| bifrost \| auto`। `ts` = TypeScript रिले (Bifrost कन्फिगर नगरिएको अवस्थामा पूर्वनिर्धारित); `auto` ले `BIFROST_BASE_URL` सेट भएको र `BIFROST_ENABLED` ≠ `0` भएको अवस्थामा Bifrost चयन गर्छ, र साइडकार पहुँचयोग्य नभए स्वचालित रूपमा TS मा फलब्याक गर्छ; `bifrost` ले Bifrost अनिवार्य गर्छ (कडा मोड, फलब्याक छैन)। प्रमाणीकरण/दर-सीमा/इन्जेक्सन-गार्ड/अनुमतिसूची सधैं पहिले Next रुटमा लागू हुन्छन्। प्रतिक्रियाहरूमा `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason` समावेश हुन्छन्। |
| `RELAY_ROUTING_BACKEND` | _(unset)_ | `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` मोडमा Bifrost साइडकार हप असफल भएपछि रिलेले साइडकारमा पुनः प्रयास गर्नुअघि लागू हुने कूलडाउन (ms); कूलडाउन अवधिभर यसले सिधै TS पथमा रुट गर्छ, त्यसपछि पुनः जाँच गर्छ। `0` ले यसलाई असक्षम गर्छ। `OMNIROUTE_RELAY_BACKEND=auto` हुँदा मात्र लागू हुन्छ। |
| `OMNIROUTE_TLS_CERT` | _(unset)_ | `bin/cli/commands/serve.mjs` | HTTPS मार्फत `omniroute serve` चलाउन प्रयोग हुने PEM TLS प्रमाणपत्रको पथ (`--tls-cert` को समतुल्य)। `OMNIROUTE_TLS_KEY` सँगै दिनुपर्छ; त्यसपछि स्ट्यान्डअलोन सर्भरले उही लिस्नरमा TLS समाप्त गर्छ (`wss://` यथावत् काम गर्छ)। सेट नगरिएमा → सामान्य HTTP। cert/key मध्ये एउटा मात्र दिइएमा वा पथ पढ्न नसकिने भए चेतावनी लगाइन्छ र HTTP मै रहन्छ। |
| `OMNIROUTE_TLS_KEY` | _(unset)_ | `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/*` रुटहरूका लागि मुख्य स्विच। सेट नगरिएको वा `0` भएको अवस्थामा उत्पादन वातावरणमा सबै `/api/local/*` रुटहरूले 503 फर्काउँछन्। Redis लन्चर तथा यस्तै 1-क्लिक स्थानीय सेवा सुरुकर्ताहरू सक्षम गर्न, लुपब्याक नभएका डिप्लोयमेन्टहरूमा `1` हुनुपर्छ। `isLocalOnlyPath()` रुट-गार्ड वर्गीकरण (`src/server/authz/routeGuard.ts` मा `LOCAL_ONLY_API_PREFIXES`) सँग अतिरिक्त सुरक्षा तहका रूपमा काम गर्छ। |
| `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(unset)_ | `src/lib/security/localEndpoints.ts` | लुपब्याकमा नभएका `/api/local/*` कलरहरू (जस्तै डेस्कटप एप) का लागि Bearer टोकन। सेट गरिएको अवस्थामा, लुपब्याकबाहेकका IP बाट आएका अनुरोधहरूमा `Authorization: Bearer ` हुनुपर्छ। लुपब्याकबाहेकका डिप्लोयमेन्टहरूमा `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 ले एपका आफ्नै dashboard/API/live-WS पोर्टहरू प्रकाशित गर्ने होस्ट इन्टरफेस (#12568)। `.env.example` को पूर्वनिर्धारित मानका रूपमा `REQUIRE_API_KEY=false` राखिएको हुँदा, `0.0.0.0` ले अज्ञात `/v1` LLM प्रोक्सीलाई सम्पूर्ण LAN/WAN मा उजागर गर्छ — `REQUIRE_API_KEY=true` सेट नगरेसम्म वा अगाडि reverse proxy ले आफ्नै प्रमाणीकरण लागू नगरेसम्म यसलाई विस्तार नगर्नुहोस्। |
| `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` | _(unset — mechanism disabled)_ | `src/lib/api/internalServiceAuth.ts` | पहिचान सुरक्षित राख्ने आन्तरिक REST हपहरूका लागि साझा गोप्य मान (#9260): अन्य स्थानीय OmniRoute रुटहरूलाई कल गर्ने OmniRoute कम्पोनेन्टहरूले मूल कलकर्ता पहिचान सुरक्षित राख्न यसलाई `x-omniroute-internal-service-token` का रूपमा पठाउँछन्। `timingSafeEqual` सँग तुलना गरिन्छ। |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(unset)_ | `src/lib/api/internalServiceAuth.ts` | आन्तरिक सेवा टोकनको गोप्य-फाइल भेरियन्ट: जसको ट्रिम गरिएको सामग्री टोकन हो, त्यस्तो फाइलको पथ। इनलाइन भेरियबल सेट नभएको अवस्थामा मात्र जाँच गरिन्छ। |
| `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` | _(opt-in cluster profile)_ | `--profile memory` सक्रिय हुँदा Qdrant साइडकारको होस्टनेम। पूर्वनिर्धारित रूपमा इन-नेटवर्क qdrant सेवा नाममा निर्देशित हुन्छ; बाह्य डिप्लोइमेन्टका लागि ओभरराइड गर्नुहोस्। कोडमा (`src/lib/memory/vectorStore.ts:108`) `qdrantEnabled` `true` हुँदा मात्र प्रयोग गरिन्छ। |
| `QDRANT_PORT` | `6333` | _(opt-in cluster profile)_ | Qdrant साइडकारको REST पोर्ट। |
| `QDRANT_GRPC_PORT` | `6334` | _(स्वेच्छिक-सहभागिता क्लस्टर प्रोफाइल)_ | Qdrant साइडकारको gRPC पोर्ट। स्ट्रिमिङ सञ्चालनहरूका लागि REST भन्दा gRPC रुचाउने क्लाइन्ट लाइब्रेरीहरूले प्रयोग गर्छन्। |
| `QDRANT_API_KEY` | _(unset)_ | _(स्वेच्छिक-सहभागिता क्लस्टर प्रोफाइल)_ | 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_*` क्लासहरूले खाता फलब्याक ट्रिगर गर्दैनन् (मुख्य स्विच बन्द अवस्थाले पूर्वनिर्धारित रूपमा सक्षम 429/500/502 क्लासहरूलाई पनि रोक्छ)। यसले सुपरिवेक्षण गर्ने फ्रन्टएन्ड (जस्तै, VibeProxy डेस्कटप एप) लाई आफ्नै रोटेसन नियमहरू ब्याकएन्डको खाता-फलब्याक इन्जिनमा प्रतिबिम्बित गर्न दिन्छ। |
| `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` त्रुटिहरूका लागि स्थिति-विशिष्ट फलब्याक सक्षम गर्ने विकल्प। `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` | `OMNIROUTE_ROTATE_429_THRESHOLD` मा गणना गरिने `429` त्रुटिहरूको स्लाइडिङ विन्डो (सेकेन्ड)। |
| `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | `5xx` सर्भर त्रुटिहरूका लागि स्थिति-विशिष्ट फलब्याक सक्षम गर्ने विकल्प (`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` (खराब गेटवे) त्रुटिहरूका लागि स्थिति-विशिष्ट फलब्याक सक्षम गर्ने विकल्प। `false` हुँदा, `502` त्रुटिहरूले अब खाता रोटेसन ट्रिगर गर्दैनन्। |
| `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` | वैकल्पिक (पूर्वनिर्धारित रूपमा बन्द): `true` हुँदा सामान्य `400` (खराब अनुरोध) ले पनि खाता रोटेसन ट्रिगर गर्छ। यो केवल थप सुविधा हो — `400` मा दर-सीमा/कोटा सम्बन्धी पाठ भएमा, यो फ्ल्यागको अवस्थालाई ध्यान नदिई इन्जिनको विद्यमान व्यवहारअनुसार अनुरोध फेलओभर हुने प्रक्रियालाई यसले कहिल्यै रोक्दैन। |
| `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 वार्मअप अनुसूचक
अप्ट-इन गरिएका Anthropic OAuth जडानहरूका लागि क्रोनद्वारा सञ्चालित वार्मअप, जसले पहिलो वास्तविक अनुरोधबाट नभई सामान्य निर्धारित अनुरोधमार्फत ५-घण्टे दर-सीमा विन्डो खोल्छ (#8848)। `OMNIROUTE_WARMUP_ENABLED` को मान truthy **र** जडान `settings.claudeWarmup.connections` मा फ्ल्याग गरिएको अवस्थामा मात्र अनुसूचक सक्रिय हुन्छ; वातावरणीय भेरिएबल सक्रिय भए पनि जडानहरूको सूची खाली भएमा कुनै पनि जडान वार्म हुँदैन।
| Variable | Default | Source File | Description |
| ------------------------------ | --------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_WARMUP_ENABLED` | _(unset → off)_ | `src/lib/warmupScheduler.ts` | वार्मअप अनुसूचकका लागि मुख्य स्विच। `1`/`true`/`yes`/`on` स्वीकार गर्छ (केस नमिले पनि, अगाडि–पछाडिका खाली स्थान हटाएर)। अन्य कुनै मान वा सेट नगरिएको अवस्थामा अनुसूचक बन्द रहन्छ। |
| `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | वार्मअप टिकका लागि पाँच-फिल्डको क्रोन अभिव्यक्ति, होस्टको घडीलाई बेवास्ता गरी `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` इमेजलाई लक्षित गर्छन् र आफू अनुकूल कन्टेनर इमेज, पोर्ट वा जीवनचक्र समायोजनका लागि मात्र ओभरराइड गरिन्छ।
| Variable | Default | Source File | Description |
| ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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-ready हुन पर्खने समयसीमा (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` | ecosystem/protocol परीक्षणहरू चलाउनु अघि सर्भर स्वस्थ हुनको लागि समय (ms) पर्खनुहोस्। |
| `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL the Electron स्मोक हार्नेसले प्याकेज गरिएको एपलाई सेवा दिने अपेक्षा गर्दछ। |
| `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` | रन पछि धुम्रपान डाटा डाइरेक्टरी सुरक्षित गर्न `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: उही डाटा dir विरुद्ध पुन: लन्च गर्नुहोस् र दोस्रो लन्चले नेटिभ 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` | अनुवाद ब्याकइन्डको लागि बेयरर टोकन (कहिल्यै लग गरिएको छैन)। |
| `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 कोटा, 401/402, 5xx, टाइमआउट, नेटवर्क); एक विकृत अनुरोध (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` | धेरै फाइलहरू / लोकेलहरू चलाउँदा समानान्तर अनुवाद अनुरोधहरू। |
| `OMNIROUTE_TRANSLATION_ENGINE` | `llm` | `scripts/i18n/run-translation.mjs` | `llm` माथिको ब्याकइन्ड प्रयोग गर्दछ; `google` संरचना-सुरक्षित Google इन्जिन मार्फत अनुवाद गर्दछ र LLM चरहरू मध्ये कुनै पनि आवश्यक पर्दैन। |
| `OMNIROUTE_TRANSLATION_GOOGLE_FALLBACK` | `1` | `scripts/i18n/run-translation.mjs` | `llm` इन्जिनको साथ, मोडेलले उत्पादन गर्न नसकेको एउटा भाग (प्रत्येक प्रयासमा आउटपुट गार्ड असफल भयो, वा मोडेल त्रुटि) लाई लोकेल फेल गर्नुको सट्टा Google द्वारा अनुवाद गरिएको छ। `0` ले असक्षम पार्छ। |
| `OMNIROUTE_TRANSLATION_GOOGLE_API_KEY` | _(अनसेट)_ | `scripts/i18n/lib/google-translate.mjs` | वैकल्पिक क्लाउड अनुवाद v2 कुञ्जी। अनसेटले कुञ्जीविहीन वेब एन्डपोइन्ट प्रयोग गर्दछ (दर-सीमित, कहिलेकाहीँ तरंगहरूको लागि ठीक)। |
| `OMNIROUTE_TRANSLATION_GOOGLE_CONCURRENCY` | `6` | `scripts/i18n/lib/google-translate.mjs` | समानान्तर Google अनुरोधहरू रनको प्रत्येक लोकेलद्वारा साझेदारी गरिएको। |
| `OMNIROUTE_TRANSLATION_GOOGLE_TIMEOUT_MS` | `30000` | `scripts/i18n/lib/google-translate.mjs` | Google इन्जिनको लागि प्रति-अनुरोध टाइमआउट, मिलिसेकेन्डमा। |
| `UI_KIT_READ_TOKEN` | _(अनसेट)_ | `scripts/check/check-ui-kit-upstream.mjs` | `npm run check:ui-kit-upstream` र साप्ताहिक "UI Kit upstream Watch" कार्यप्रवाह द्वारा प्रयोग गरिएको निजी अपस्ट्रिम UI किट रिपोको लागि पढ्न-मात्र टोकन। स्थानीय रूपमा चेकले तपाईंको git प्रमाणहरू प्रयोग गर्दछ। |
---
## 27. रडार फिड (सेल्फ-होस्टिङ)
RADAR_ENABLED सुविधा झण्डा द्वारा गेट गरिएको वैकल्पिक एड-अन (पूर्वनिर्धारित — Settings/DB मार्फत टगल गरिएको सुविधा झण्डा, env var होइन; [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off) हेर्नुहोस्)। तलका पहिलो चार चरहरू स्व-होस्ट गरिएको वा फोर्क गरिएको फिड र सपोर्टर-कुञ्जी प्रवाहहरूको लागि वैकल्पिक ओभरराइडहरू हुन्। पाँचौं, `RADAR_ADMIN_URL`, मालिकको निजी सञ्चालन प्यानलको लागि छुट्टै पूर्वनिर्धारित-रहित लिङ्क हो। पूर्ण मोड्युल कागजात र यसको [अन्त्य-देखि-अन्त सक्रियता र निर्देशित-सेटअप अनुक्रमको](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup) लागि [docs/frameworks/RADAR.md](../frameworks/RADAR.md) हेर्नुहोस्।
जेनेरिक Home/Changelog घोषणा पाठक वातावरण चर द्वारा कन्फिगर गरिएको छैन र RADAR_ENABLED सुविधा झण्डा मा निर्भर गर्दैन। यसले GET द्वारा `src/shared/utils/releaseNotes.ts` मा घोषित सार्वजनिक भण्डार `news.json` URL पढ्छ; खारेज IDs ब्राउजर स्थानीय भण्डारणमा रहन्छ।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | आधार URL अलग-अलग हस्ताक्षर गरिएको क्याटलग, रेफरलहरू, समर्थक-अफरहरू, र Intel फिडहरू द्वारा साझा गरिएको छ। स्व-होस्ट गरिएको वा फोर्क गरिएको सेवामा बिन्दुमा ओभरराइड गर्नुहोस्। |
| `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` | URL "म एक योगदानकर्ता हुँ" ड्यासबोर्ड बटन खुल्छ (GitHub OAuth समर्थक-कुञ्जी दावी प्रवाह)। |
| `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL "परियोजनालाई समर्थन गर्नुहोस्" ड्यासबोर्ड बटन खुल्छ (payment/plans पृष्ठ)। |
| `RADAR_ADMIN_URL` | _(अनसेट)_ | `src/lib/radar/links.ts` | मालिक-मात्र निजी सञ्चालन-प्यानल लिङ्क। HTTPS आवश्यक छ HTTP लुपब्याक SSH अगाडि बाहेक; अनसेट वा अमान्य मानहरूले कुनै नेभिगेसन वस्तु सिर्जना गर्दैन। |
---
## अडिट: हटाइयो / मृत चर
निम्न चरहरू `.env.example` को अघिल्लो संस्करणहरूमा देखा पर्यो तर छ** कुनै रनटाइम सन्दर्भ छैन** हालको कोडबेसमा। तिनीहरूलाई हटाइयो:
| चर | कारण |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `STORAGE_DRIVER=sqlite` | कुनै पनि स्रोत फाइल द्वारा कहिल्यै नपढ्नुहोस्। SQLite एक मात्र समर्थित चालक — हो कुनै चयन आवश्यक छैन। |
| `INSTANCE_NAME=omniroute` | पुरानो docs/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 कोडिङले OAuth प्रयोग गर्दछ, CLI बाइनरी होइन)। |
| `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 vars — प्रमाणहरू पढ्दैन ड्यासबोर्ड / `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` | API कुञ्जी OmniRoute `/v1/models` अन्त्य बिन्दु विरुद्ध प्रमाणीकरण गर्न। सेट नगर्दा `OPENCODE_API_KEY` मा फर्किन्छ। |
| `OPENCODE_API_KEY` | _(अनसेट)_ | `scripts/ad-hoc/regen-opencode-config.ts` | ओपनकोड-शैली API कुञ्जी (`sk-...`) पुन: उत्पन्न `opencode.json` मा लेखिएको। सेट नगर्दा `OMNIROUTE_KEY` मा फर्किन्छ। |
### कम्प्रेसन अफलाइन-इभल हार्नेस (एड-हक टूलिङ)
`scripts/compression-eval/index.ts` द्वारा प्रयोग गरिएको, अफलाइन कम्प्रेसन मूल्याङ्कन CLI। सामान्य सञ्चालन — विकासकर्ता टूलिङको लागि मात्र आवश्यक छैन।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ---------------------------- | -------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (खाली) | `scripts/compression-eval/index.ts` | अफलाइन कम्प्रेसन-एभल CLI ( `JSON.parse` सँग पार्स गरिएको) द्वारा प्रयोग गरिएको प्रदायकको लागि अपरेटरले उपलब्ध गराएको JSON प्रमाणहरू। ड्राई रनको लागि सेट नगरी छोड्नुहोस्। |
### VNC ब्राउजर सत्रहरू
ब्राउजर-स्वचालित प्रदायकहरूको लागि डकर-आधारित हेडलेस क्रोमियम सत्रहरू कन्फिगर गर्न `src/lib/vncSession/manifest.ts` द्वारा प्रयोग गरिएको। सबै वैकल्पिक — पूर्वनिर्धारितहरू तल देखाइएको छ।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------------- | ------------------------------ | ------------------------------------------- | ---------------------------------------------------------------------------- |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Docker बाइनरीमा जाने बाटो VNC कन्टेनरहरू फैलाउन प्रयोग गरिन्छ। |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | VNC क्रोमियम कन्टेनरको लागिDocker छवि। |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(निर्मित झण्डाहरू)_ | `src/lib/vncSession/manifest.ts` | अतिरिक्त Chromium CLI args कन्टेनर भित्र ब्राउजरमा पास गरियो। |
| `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 प्रोटोकल पोर्ट। |
| `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` | Harvest/cleanup टाइमआउट (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-scoped ओभरराइड। |
---
## 24. रिलीज 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` | प्रवेश पर्खाइको लागि लामबद्ध-बाइट्स बजेट: कुल बफर गरिएको बडी बाइटहरू पार्क गरिएको प्रक्रिया-वाइड ताकि पर्खाइले हिप (#4380) लाई विस्तार गर्न सक्दैन। ओभर-बजेट पर्खाइले तुरुन्तै पुन: प्रयास गर्न मिल्ने `503` प्राप्त गर्दछ। |
| `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | #10110 देखि रोकिएको नो-अप: प्रति-सत्र भर्ना लेनहरू एक प्रक्रिया-व्यापी बजेटको पक्षमा हटाइयो। कन्फिगरेसन अनुकूलताको लागि स्वीकृत; बेवास्ता गरियो। |
| `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | #10110 देखि रोकिएको नो-अप: प्रति-सत्र भर्ना लेनहरू एक प्रक्रिया-व्यापी बजेटको पक्षमा हटाइयो। कन्फिगरेसन अनुकूलताको लागि स्वीकृत; बेवास्ता गरियो। |
| `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (बन्द) | `open-sse/services/admission/runtime.ts` | अनुकूली रनटाइम भर्चुअल प्रवेश लेनहरू (#9654): प्रति-भाडादार अनुकूली गेट (प्रणाली 2) को लागि मास्टर स्विच। उपरोक्त प्रति-जडान लेन vars बाट अलग (TTL_MS / MAX_SESSIONS, no-ops from #10110)। उही नामको ड्यासबोर्ड सुविधा झण्डा; env var ले ड्यासबोर्ड ओभरराइडमा जित्छ; पुन: सुरु गर्न आवश्यक छ। |
| `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | रन-अब कलले लामबद्ध दौड सुरु गर्नु अघि इन-फ्लाइट कार्यको लागि कति समय पर्खन्छ। |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | सक्षम गरियो | `open-sse/services/adobeFireflySession.ts` | खाता-स्कोप गरिएको क्रोम 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 जेनेरेट सबमिशनहरू बीचको न्यूनतम स्पेसिङ। |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | प्रत्येक तेस्रो सफल Adobe सबमिशन पछि अतिरिक्त शान्त अवधि। |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | डिबग-मात्र ट्रु-हेडलेस मोड; Adobe colligo ले सामान्यतया परिणामस्वरूप जोखिम सत्र अस्वीकार गर्दछ। |
| `CHROME_PATH` | स्वत: पत्ता लगाउने | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | प्लेटफर्म स्वत: पत्ता लगाउने अपर्याप्त हुँदा ब्राउजर-संचालित निष्पादकहरू द्वारा प्रयोग गरिएको वैकल्पिक निरपेक्ष क्रोम कार्यान्वयनयोग्य। |
| `TELEGRAM_BOT_TOKEN` | _(अनसेट)_ | `src/lib/telegram/config.ts` | BotFather टोकन जसले इनबाउन्ड वेबहुक सक्षम गर्दछ र Mini App `initData` लाई साइन गर्छ। |
| `TELEGRAM_WEBHOOK_SECRET` | _(अनसेट)_ | `src/lib/telegram/config.ts` | साझा गोप्य `setWebhook` मार्फत दर्ता गरियो र प्रत्येक वेबहुक डेलिभरीमा `X-Telegram-Bot-Api-Secret-Token` हेडर विरुद्ध प्रमाणित गरियो। वेबहुक मार्गको लागि आवश्यक छ; सेट नगरिएको मतलब वेबहुक डेलिभरीहरू 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 आधार URL प्रोक्सी वा स्व-होस्ट गरिएको Bot API सर्भरहरूको लागि ओभरराइड। |
| `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | आउटबाउन्ड Bot API कलहरूको लागि मिलिसेकेन्डमा टाइमआउट। |
| `TELEGRAM_USER_ALLOWLIST_ENABLED` | `false` | `src/lib/telegram/config.ts` | `TELEGRAM_ALLOWED_USER_IDS` मा सूचीबद्ध Telegram प्रयोगकर्ताहरूलाई मात्र सेवा दिन `true` मा सेट गर्नुहोस् (अन्य: Mini App 403, webhuok सन्देश छोडियो)। पूर्वनिर्धारित रूपमा बन्द: प्रत्येक Telegram प्रयोगकर्तालाई सेवा दिइन्छ र अपस्ट्रीम कोटा खर्च गर्ने minted API कुञ्जी प्राप्त हुन्छ। |
| `TELEGRAM_ALLOWED_USER_IDS` | _(अनसेट)_ | `src/lib/telegram/config.ts` | अल्पविराम-विभाजित संख्यात्मक Telegram प्रयोगकर्ता आईडीहरू `TELEGRAM_USER_ALLOWLIST_ENABLED=true` हुँदा सेवा दिइन्छ। सादा सकारात्मक पूर्णांक नभएका प्रविष्टिहरूलाई एक-पटक चेतावनीको साथ बेवास्ता गरिन्छ। अनुमति सूची बन्द हुँदा बेवास्ता गरियो; कसैलाई सेवा गर्दैन मा अनुमति सूची संग खाली। |
| `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (सक्षम) | `scripts/build/optionalPackStaging.mjs` | Electron स्ट्यान्डअलोन रूखको लागि वैकल्पिक ML/browser प्याकहरू स्टेजिङ गर्दा उत्सर्जन `.tar.gz` tarballs छोड्न `0` सेट गर्नुहोस् (प्याक डाइरेक्टरीहरू र `optional-packs.index.json` अझै उत्पादन गरिन्छ)। आर्टिफ्याक्ट अपलोड साइज ट्रिम गर्न डेस्कटप रिलिज कार्यप्रवाह द्वारा प्रयोग गरिन्छ। |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | xAI सदस्यता छवि मार्गहरूको दर्ता सक्षम गर्दछ; पूर्वनिर्धारित रूपमा असक्षम गरिएको छ त्यसैले API-कुञ्जी छवि मार्ग अपरिवर्तित रहन्छ। |
| `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` | आन्तरिक स्ट्यान्डअलोन-सर्भर सिग्नल-ह्यान्डलर ओभरराइड; अपरेटरहरू द्वारा कन्फिगर गर्नुको सट्टा लन्चरद्वारा सामान्यतया सेट र खाली गरिन्छ। |
| `CHATGPT_WEB_TURN_TIMEOUT_MS` | `180000` | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT वेब (क्लिन रुम) पाठ पालोको लागि प्रति-टर्न छत; `1000` तलका मानहरूलाई बेवास्ता गरिएको छ। |
| `CHATGPT_WEB_TOOL_TURN_TIMEOUT_MS` | `180000` | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT वेब (क्लीन रुम) पालोको लागि प्रति-टर्न छत जसले ग्राहक उपकरणहरू बोक्छ (अनुकरणित `` खाम); ग्राहकलाई चाँडै नियन्त्रण फिर्ता गर्न यसलाई कम गर्नुहोस्। `1000` तलका मानहरूलाई बेवास्ता गरिन्छ। |
| `CHATGPT_WEB_HEADLESS` | `1` (शीर्षविहीन) | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT वेब (क्लिन रुम) ब्राउजर हेडलेस चलाउनुहोस्। `0` खाताहरूका लागि मात्र सेट गर्नुहोस् जसको पहिलो-पक्ष चुनौती हेडलेस मोड अस्वीकार गर्दछ (पूर्वनिर्धारित #14948 मा हेडेडबाट हेडलेसमा परिवर्तन भयो)। |
| `CHATGPT_WEB_BROWSER_ACQUIRE_TIMEOUT_MS` | `45000` | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT वेब (क्लीन रुम) ब्राउजर सुरु गर्न र chatgpt.com वार्म अप गर्नको लागि छत, त्यसैले मृत ब्राउजर वा सत्रले अनुरोध-लाम समय सीमा उपभोग गर्न सक्दैन। |
| `UI_KIT_CLONE` | `_references/cheaper-inference-ui-kit` | `scripts/check/check-ui-kit-snapshot.mjs` | निजी CI UI किटको मार्ग विक्रेता-स्न्यापसट गेट क्लोन `packages/ui-kit/src` विरुद्ध (KEA-7886); क्लोन अनुपस्थित हुँदा गेट चेतावनीको साथ छोड्छ। |
### ChatGPT वेब (Codex)
विश्वव्यापी पूर्वनिर्धारितहरू हेडलेस ब्राउजर र उपकरण-टनेलको लागि पूर्वनिर्धारित छन्। मैले ड्यासबोर्ड जडान गर्न खोजेको छु।
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHATGPT_WEB_CODEX_CHROME_PATH` | _(स्वतः पत्ता लगाउनुहोस्)_ | `open-sse/executors/chatgpt-web-codex.ts` | Expliziter Chrome-/Chromium-Pfad für npm-, systemd- und PM2-Betrieb। |
| `CHROME_PATH` | _(स्वतः पत्ता लगाउनुहोस्)_ | `open-sse/executors/chatgpt-web-codex.ts` | Gemeinsamer Fallback für einen expliziten Chrome-/Chromium-Pfad. |
| `CHATGPT_WEB_CODEX_CDP_URL` | _(अनसेट)_ | `open-sse/executors/chatgpt-web-codex.ts` | आन्तरिक CDP-Endpunkt; Docker verwendet den Sidecar auf Port `9223`। |
| `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _(अनसेट — बन्द)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | `1` मा सेट गर्नुहोस् (एक CDP अन्त बिन्दु कन्फिगर गरिएको संग) बाह्य रूपमा व्यवस्थित, साइन-इन ब्राउजर प्रोफाइलको अवस्थित ChatGPT पृष्ठ प्रति पालो एक अलग सन्दर्भको सट्टा पुन: प्रयोग गर्न; 1 मा समवर्ती ChatGPT ट्याबहरू पनि क्याप गर्दछ। पूर्वनिर्धारित रूपमा बन्द। [निरन्तर CDP प्रोफाइल](../guides/CHATGPT-WEB-PERSISTENT-CDP.md) हेर्नुहोस्। |
| `CDP_PROXY_TOKEN` | _(अनसेट)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Wenn gesetzt, muss jede Anfrage an den CDP-Proxy-Sidecar diesen Wert im Header `X-Omni-Cdp-Token` mitschicken (#13679)। Ohne Wert leitet der Proxy unautentifiziert weiter — dann schützt nur die Netzisolierung des Compose-Netzes `chatgpt-web-codex-net`। Erzeugen mit `openssl rand -hex 32`। |
| `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(अनसेट)_ | `open-sse/executors/chatgpt-web-codex.ts` | ग्लोबल ओपनएआई-टनेल-आईडी कोडेक्स-उपकरण-रन्डनका लागि। |
| `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(अनसेट)_ | `open-sse/executors/chatgpt-web-codex.ts` | ग्लोबलर टनेल रनटाइम-कुञ्जी; लग्स ausgeben मा niemals। |
| `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | Exakter Name des neu erstellten ChatGPT-Custom-Connectors Für die MCP-Brücke। |
| `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Dediziertes Verzeichnis für Browser-, Broker- und Tunnelzustand। |
| `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | `1` -डायग्नोसबिल्डर र चेकपोइन्ट erfasst। |
| `CODEX_CHATGPT_WEB_LAUNCHER` | _(अनसेट)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | वैकल्पिक निरपेक्ष Pfad zu einem dauerhaften Launcher-Binary। |
| `CODEX_CHATGPT_WEB_BUN` | _(स्वतः पत्ता लगाउनुहोस्)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | वैकल्पिक निरपेक्ष Pfad zum Bun-Runtime-Binary। |
| `CODEX_WEB_GPT_BUN` | _(अनसेट)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Legacy-Fallback für `CODEX_CHATGPT_WEB_BUN`; neue सेटअपहरू verwenden den kanonischen Namen। |
---
## OmniConductor पुल
लामो समय बाँच्ने SSE उपभोक्ता जसले OmniConductor हब कार्यहरूलाई स्थानीय A2A TaskManager (`src/lib/conductor/`) मा प्रतिबिम्बित गर्दछ। अप्ट-इन — पुल `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 फिड — को लागि हब क्रेडेन्सियल हब (`POST /v1/peers`, admin) मा `spokesperson` -kind पियर उत्सर्जन गर्दछ। |
| `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`) को पछाडि प्रवक्ता (फारो) सेवाको आधार 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`) ले प्रेषण अघि अनुमानित अनुरोध लागत वहन गर्न सक्दैन। कुनै बजेट कन्फिगर नभएको बेला फेल-ओपन। |
| `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 ओभरराइड यो मान मा जित्छ। |
## मोडेल सिंक्रोनाइजेसन निदान
| चर | पूर्वनिर्धारित | स्रोत फाइल | विवरण |
| ------------------------------ | -------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_MODEL_SYNC_TIMINGS` | `0` | `src/lib/providerModels/modelSyncTimings.ts` | चरण समय लग गर्न `1` मा सेट गर्नुहोस्, एक उत्पन्न अनुरोध ID र मोडेल सिङ्क्रोनाइजेसनको क्रममा चरण success/error परिणामहरू। अन्य सबै मानहरूको लागि असक्षम। लगहरूले अनुरोध, खाता, क्याटलग र त्रुटि पेलोडहरू छोड्छन्। |
## स्थानीय OpenCode मिडिया-विश्लेषण उपकरण
`scripts/cli/omniroute-media-mcp.mjs` द्वारा प्रयोग गरिन्छ। यी सेटिङहरू स्थानीय उपकरण प्रक्रियाको वातावरणमा सेट गर्नुहोस्।
| चर | पूर्वनिर्धारित | विवरण |
| -------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_MEDIA_CONFIG` | `$XDG_CONFIG_HOME/opencode/opencode.json` (वा `~/.config/opencode/opencode.json`) | मिडिया उपकरण र इन्स्टलरले पढ्ने OpenCode कन्फिगरेसन। |
| `OMNIROUTE_MEDIA_PROVIDER` | `omniroute` | मिडिया उपकरणले OpenCode कन्फिगरेसनबाट पढ्ने प्रदायक प्रविष्टि। |
| `OMNIROUTE_MEDIA_MODEL` | `auto` | मिडिया उपकरणले पठाउने मोडेल। यसको प्रदायकले अनुरोध गरिएका मिडिया प्रकारहरू समर्थन गर्नुपर्छ। |
| `OMNIROUTE_MEDIA_API_KEY` | कन्फिगर गरिएको प्रदायक API कुञ्जी वा यसको वातावरण सन्दर्भ | वैकल्पिक प्रमाणिकरण विवरण ओभरराइड। यसलाई स्थानीय प्रक्रियाको वातावरणमा राख्नुहोस्; यसलाई कहिल्यै कमिट नगर्नुहोस्। |