# Environment Variables Reference (Oʻzbekcha) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/docs/reference/ENVIRONMENT.md) · 🇦🇿 [az](../../../az/docs/reference/ENVIRONMENT.md) · 🇧🇬 [bg](../../../bg/docs/reference/ENVIRONMENT.md) · 🇧🇩 [bn](../../../bn/docs/reference/ENVIRONMENT.md) · 🇧🇦 [bs](../../../bs/docs/reference/ENVIRONMENT.md) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇰 [sk](../../../sk/docs/reference/ENVIRONMENT.md) · 🇸🇮 [sl](../../../sl/docs/reference/ENVIRONMENT.md) · 🇷🇸 [sr](../../../sr/docs/reference/ENVIRONMENT.md) · 🇸🇪 [sv](../../../sv/docs/reference/ENVIRONMENT.md) · 🇰🇪 [sw](../../../sw/docs/reference/ENVIRONMENT.md) · 🇮🇳 [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) · 🇻🇳 [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 tomonidan tan olingan har bir muhit oʻzgaruvchisi uchun toʻliq maʼlumotnoma. Tez boshlash shablonini [`.env.example`](../../.env.example) ga qarang. > [!IMPORTANT] > Bu yerda hujjatlashtirilgan har bir oʻzgaruvchi `.env.example` da koʻrinishi kerak va `.env.example` har bir oʻzgaruvchi bu yerda paydo boʻlishi kerak. `npm run check:env-doc-sync` buni bajarishda va CI da amalga oshiradi. O'zgaruvchini ataylab o'tkazib yuborish uchun uni `scripts/check/check-env-doc-sync.mjs` ichidagi ruxsat etilgan ro'yxatga qo'shing. --- ## Mundarija - [1. Kerakli sirlar](#1-required-secrets) - [2. Saqlash va ma'lumotlar bazasi](#2-storage--database) - [3. Tarmoq va portlar](#3-network--ports) - [4. Xavfsizlik va autentifikatsiya](#4-security--authentication) - [5. Input Sanitization & PII Protection](#5-input-sanitization--pii-protection) - [6. Asboblar va marshrutlash siyosatlari](#6-tool--routing-policies) - [7. URLs & Cloud Sync](#7-urls--cloud-sync) - [8. Chiquvchi proksi](#8-outbound-proxy) - [9. CLI Tool Integration](#9-cli-tool-integration) - [10. Ichki agent va MCP integratsiyalari](#10-internal-agent--mcp-integrations) - [11. OAuth Provayder hisob ma'lumotlari](#11-oauth-provider-credentials) - [12. Provayder foydalanuvchi-agentini bekor qilish](#12-provider-user-agent-overrides) - [13. CLI Barmoq izining mosligi](#13-cli-fingerprint-compatibility) - [14. API Asosiy Provayderlar](#14-api-key-providers) - [15. Vaqt tugashi sozlamalari](#15-timeout-settings) - [16. Jurnal yozish](#16-logging) - [17. Xotirani optimallashtirish](#17-memory-optimization) - [18. Narxlarni sinxronlashtirish](#18-pricing-sync) - [19. Model sinxronlash (ishlab chiqish)](#19-model-sync-dev) - [20. Provayderga xos sozlamalar](#20-provider-specific-settings) - [21. Proksi salomatligi](#21-proxy-health) - [22. Nosozliklarni tuzatish](#22-debugging) - [23. GitHub integratsiyasi](#23-github-integration) - [24. Skills Sandbox (v3.8.0 +)](#24-skills-sandbox-v380) - [27. Radar Feed (Self-Hosting)](#27-radar-feed-self-hosting) - [Joylashtirish stsenariylari](#deployment-scenarios) - [Audit: o'chirilgan / o'lik o'zgaruvchilar](#audit-removed--dead-variables) --- ## 1. Kerakli sirlar Belgilangan sirlar sozlanmagan** Ha** birinchi ishga tushirilganda avtomatik ravishda yaratiladi (`JWT_SECRET`, `API_KEY_SECRET`) va ma'lumotlar katalogida `server.env` ga o'tishni davom ettiradi — bu katalog vaqtinchalik bo'lganda ularni aniq belgilab qo'ying. Istisno `OMNIROUTE_WS_BRIDGE_SECRET`: serverning kirish nuqtalarini `server.env` — qilish qat'iyan amalga oshirilmaydi, faqat jarayon ichidagi ko'prik foydalanishi mumkin bo'lgan efemer yuklash qiymatiga ega, shuning uchun tashqi ko'prik mijozlari uni aniq belgilashlari kerak. | O'zgaruvchan | Majburiy | Standart | Manba fayl | Tavsif | | ---------------------------- | ------------------------- | ------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | **Ha** | _(yo'q)_ | `src/lib/auth` | Signs/verifies barcha asboblar paneli seansi cookie fayllari (JWT). `openssl rand -base64 48` bilan yarating. | | `API_KEY_SECRET` | **Ha** | _(yo'q)_ | `src/lib/db/apiKeys.ts` | SQLite da dam olayotgan API kalit qiymatlari uchun AES shifrlash kaliti. `openssl rand -hex 32` bilan yarating. | | `INITIAL_PASSWORD` | Yo'q | _(o'rnatilmagan)_ | `src/lib/auth/managementPassword.ts` | Boshqaruv paneli parolini ishga tushirish vaqtida o'rnatadi, lekin hali hech kim saqlanmaydi; parol saqlanganidan keyin e'tiborga olinmaydi. npm va manba oʻrnatadi `.env.example` `.env` ga koʻchiradi, shuning uchun ular oʻzining hammaga maʼlum boʻlgan `CHANGEME` toʻldiruvchisi bilan boshlanadi: uni birinchi yuklashdan oldin almashtiring yoki oʻrnatilmagan qiymat ( Docker tasvirining sukut boʻyicha) qilganidek, birinchi tashrifda ishga tushirish ustasida parol yaratish uchun ushbu `.env` ichida `INITIAL_PASSWORD=` (boʻsh) ni oʻrnating. Saqlangan parolni Boshqaruv paneli → Settings → Security-da o'zgartiring yoki server ma'lumotlar katalogiga `DATA_DIR` o'rnatilgan holda `omniroute reset-password` (manbani tekshirishda `node bin/reset-password.mjs` ) ni ishga tushiring. | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Ha** (ishlab chiqarish) | _(o'rnatilmagan)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Ichki Codex Responses WebSocket ko'prigi uchun umumiy sir. Electron/browser WS o'rni va OmniRoute o'rtasidagi ko'prik so'rovlarini autentifikatsiya qiladi. ⚠️** ishlab chiqarishda REQUIRED — o‘rnatilmaganda, barcha WS ko‘prigi so‘rovlari rad etiladi.** `openssl rand -base64 32` bilan yarating. | | `OMNIROUTE_SW_BUILD_ID` | Yo'q | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PWA qobig'i uchun aniq xizmat ishchi keshini buzish identifikatori (#11779); rezolyutsiya zanjirida birinchi. | | `SOURCE_VERSION` | Yo'q | _(o'rnatilmagan)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PaaS quruvchilari (masalan, Heroku uslubi) tomonidan o'rnatilgan — zanjirida ikkinchi o'rinda turadi. | | `NEXT_PUBLIC_SW_BUILD_ID` | Yo'q | _(hosil)_ | `src/shared/components/PwaRegister.tsx` | Mijoz `/sw.js?v=…` ro'yxatdan o'tkazish uchun foydalanadigan qurilish vaqtining umumiy qiymati; yuqoridagi ikkitasidan olingan, keyin git SHA. | | `OMNIROUTE_PEER_STAMP_TOKEN` | Yo'q (avtomatik) | _(har bir yuklashda avtomatik)_ | `src/server/authz/policies/management.ts` | Ishonchli peer-IP shtampini tasdiqlovchi har bir jarayon siri OmniRoute ning HTTP serveridan (`scripts/dev/peer-stamp.mjs`) olingan. Authz o'rta dasturiy ta'minoti ishonchli so'rovlar joylashuvini ( LOCAL_ONLY marshrutlarining loopback/LAN gatingi) faqat shtamp shu tokenni olib yurgandagina amalga oshiradi. Avtomatik yaratilgan har bir yuklash — o'rnatilmagan; uni faqat shtampni baham ko'rishi kerak bo'lgan ko'p jarayonli sozlashlar uchun mahkamlang. | | `OMNIROUTE_TRUSTED_PROXIES` | Yo'q | _(o'rnatilmagan)_ | `scripts/dev/peer-stamp.mjs` | Vergul bilan ajratilgan IPs yoki CIDR teskari proksi-serverlar diapazonlari `X-Forwarded-For` / `X-Real-IP` IP allow/deny roʻyxati ishonishi mumkin, har doim ishonchli boʻlgan shaxsiy tarmoq manzillari va Cloudflare qirralari bilan bir qatorda. Faqat boshqa har qanday umumiy manzildagi proksi-server uchun kerak; aks holda bu proksi-serverning o'z manzili filtr tomonidan belgilanadi. O'rnimizni har bir mijozga o'zgartirish tugmalari (`/api/v1/relay/chat/completions`) bir xil hal qilingan mijoz manzilida, hech qachon faqat sarlavhalarni yo'naltirishda emas. | ### Yaratish buyruqlari ```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] > Hech qachon haqiqiy sirlarga ega `.env` fayllarini versiyani boshqarishga topshirmang. `.gitignore` allaqachon `.env` istisno qiladi, lekin bosishdan oldin tekshiring. --- ## 2. Saqlash va ma'lumotlar bazasi OmniRoute foydalanadi**SQLite** ( `better-sqlite3` orqali) barcha qat'iylik uchun. Bu o'zgaruvchilar ma'lumotlar joylashuvi, shifrlash va hayot aylanishini boshqaradi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | SQLite DB, zaxira nusxalari va ma'lumotlar fayllari uchun ildiz katalogi. Docker hajmlari yoki maxsus yo'llar uchun bekor qilish. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(o'rnatilmagan)_ | `src/lib/dataPaths.ts` | test/eval DATA_DIR qo'riqchisi uchun qochish lyuk (#10428). Testlar va tugun eval/print zondlari (`-e`/`--eval`/`-p`/`--print`, shu jumladan `--eval=`/`--print=` shakllari) hech qanday `DATA_DIR` bo'lmagan holda vaqtinchalik direktorga yo'naltiriladi, shuning uchun ular operatorning haqiqiy ma'lumotlar bazasini ocholmaydi; haqiqiy katalogga qaytish uchun `1` ga sozlang. | | `OMNIROUTE_BUILD_SHA` | _(o'rnatilmagan)_ | `src/lib/monitoring/buildSha.ts` | Ishlayotgan artefaktning Git SHA. `npm run build:release` tomonidan muhrlangan; `dist/BUILD_SHA` sentinelsiz jo'natiladigan konteynerlarda in'ektsiya qilish mumkin. `/api/monitoring/health` bo'yicha `system.buildSha` sifatida yuzaga chiqdi. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Ref to'plami-artifakt kelib chiqishi eshigi SHA qurishni tekshiradi (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(o'rnatilmagan)_ | `scripts/build/buildProvenance.ts` | SHA chiqarish liniyasida boʻlmagan konstruksiyani oʻrashga ruxsat berish uchun `1` ni oʻrnating, uni darvozaga ishdan chiqish oʻrniga ataylab kanareyka sifatida yozib oling (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(o'rnatilmagan)_ | `scripts/ops/deploy-canary.mjs` | `/v1/chat/completions` da `Authorization: Bearer` sifatida yuborilgan kanareykali tutun probi uchun API kaliti. Faqat joylashtirish skripti (#10429) tomonidan foydalanilmaydi, server tomonidan hech qachon foydalanilmaydi. Tanlangan CLI tutun jabduqlarining `OMNIROUTE_SMOKE_*` o'zgaruvchilari bilan bog'liq emas (`RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS` in `tests/integration/upstream-cli-smoke.int.test.ts`) — qarang [CLI Integratsiyalar → Haqiqiy tutunni tozalash](../guides/CLI-INTEGRATIONS.md). | | `OMNIROUTE_BUILDING` | _(o'rnatilmagan)_ | `src/lib/buildPhase.ts` | Qurilish fazasi signali (#10060): `scripts/build/build-next-isolated.mjs` tomonidan `1` ga o‘rnatiladi va har bir ishlab chiqarilgan quruvchiga meros bo‘lib o‘tadi, shuning uchun DB qatlami mahalliy better-sqlite3 qo‘shimchasini yuklash o‘rniga (chiqishda ishchini bekor qiladi) no-op stubni qaytaradi. Hech qachon ishlaydigan server uchun sozlanmang. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Ekzotik sotuvchi daraxtlar uchun ixtiyoriy mahalliyga bog'liqlik oldindan tuzilgan tekshiruvni o'tkazib yuborish uchun `1` ni sozlang. Bu etishmayotgan qaramlikni o'rnatishga imkon bermaydi; faqat mahalliy bog'liqliklar tarmoqdan tashqarida berilganda foydalaning. | | `OMNIROUTE_DATA_DIR` | _(o'rnatilmagan)_ | `open-sse/executors/promptql/threadSticky.ts` | **Qayta tiklash taxallus** `DATA_DIR` uchun, faqat `DATA_DIR` sozlanmaganida tekshiriladi. PromptQL ijrochining diskdagi ip-yopishqoq sessiya keshini (`/promptql-thread-sessions.json`) aniqlash uchun foydalaniladi; agar hech biri o'rnatilmagan bo'lsa, kesh faqat xotirada qoladi (qayta ishga tushirishda ham saqlanib qolmaydi). | | `OMNIROUTE_PLUGINS_DIR` | _(o'rnatilmagan)_ | `src/lib/plugins/scanner.ts` | Katalog** ish vaqti plagin skaneri** — va plagin menejeri — -ga o'rnatadigan ildizni o'qiydi va uydan olingan standartni bekor qiladi (#11827). Skanerlash yoʻlini boshqa joyga koʻchirish uchun HOME koʻchirish oʻrniga uni Docker/K8s -dagi bogʻlangan plaginlar daraxtiga yoʻnaltiring (HOME boshqa uyga tegishli xatti-harakatlarni ham boshqaradi). = `~/.omniroute/plugins` sozlamasini oʻchiring yoki jarayon hech qanday uyni eksport qilmasa `/tmp/.omniroute/plugins` bu oʻzgaruvchi olib tashlaydigan jim boʻlmagan kashfiyot —. Yechilgan katalog ishga tushirilganda bir marta `scanner.dir_resolved` sifatida g'olib bo'lgan kirish bilan qayd qilinadi. Faqat server tomoni: CLI buyrug'i plaginlari o'z `OMNIROUTE_PLUGIN_PATH` saqlaydi (9-bo'lim). | | `STORAGE_ENCRYPTION_KEY` | _(bo'sh = o'chirilgan)_ | `src/lib/db/encryption.ts` | dam olishda to'liq SQLite ma'lumotlar bazasini shifrlash uchun AES kaliti. `openssl rand -hex 32` bilan yarating. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Shifrlash kaliti uchun versiya yorlig'i. Eski zaxira nusxalarini dekodlashni qo'llab-quvvatlash uchun kalitlarni aylantirishni amalga oshirishda oshirish. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | Qachon `true`, routine/pre-write SQLite fayl zaxira nusxalarini o'tkazib yuboradi (models.dev pricing save/clear, sozlamalar yozadi). Qo'lda va qayta tiklashdan oldingi zaxira nusxalari hali ham ishlaydi. Bu qiladi** emas** mavjud doimiy DB uchun migratsiya yuguruvchisining majburiy bardoshli xavfsizlik snapshotini yoki ommaviy migratsiya himoyasini o'chirib qo'ying. Qo'lda bo'lmagan zaxiralar 60 daqiqada ko'pi bilan bir marta qisqartiriladi. Boshqaruv paneli** Sozlamalar → Saqlash** muntazam avtomatik zaxiralashni mustaqil ravishda o'chirib qo'yishi mumkin. | | `OMNIROUTE_SQLITE_SLOW_MS` | _(unset/off)_ | `src/lib/db/adapters/slowDiagnostics.ts` | Millisekundlar; 1 dan past qiymatlar yoki raqamli bo'lmagan qiymatlar o'chirilgan; 10 soniyada ko'pi bilan bir marta ogohlantiradi; log liniyasida faqat drayver, operatsiya va elapsedMs mavjud. | | `OMNIROUTE_SQLITE_OPTIMIZE_ENABLED` | `true` | `src/lib/db/sqlitePlannerStats.ts` | Fonni rejalashtiruvchi statistikani saqlash, saqlashni tozalashdan qat'iy nazar: birinchi yoqilgan tozalash o'tish (odatda ishga tushirilgandan keyin 30 soniya, migratsiyadan keyin) `PRAGMA optimize=0x10002` ishlaydi; keyingi o'tishlar har 6 soatda `PRAGMA optimize` (yoki cheksiz tahlil uchun `PRAGMA optimize=0x00002` ). `false` yoki `0` barcha texnik xizmat ko‘rsatishni o‘chirib qo‘yadi (katta-kichik harflarni sezmaydi, bo‘sh joy kesilgan). Xotira ma'lumotlar bazalari va faqat o'qish uchun zaxira yo'llari ta'sir qilmaydi. Muvaffaqiyatsizliklar qayd etiladi, tashlanmaydi. | | `OMNIROUTE_SQLITE_ANALYSIS_LIMIT` | `400` | `src/lib/db/sqlitePlannerStats.ts` | Optimallashtirishdan oldin `PRAGMA analysis_limit` o'rnatadi. O'nlik butun sonlar [0, 100000] ga mahkamlanadi; malformed/empty qiymatlari sukut bo'yicha 400. `0` so'rovlari cheksiz, optimallashtirish orqali tanlangan jadvallarni aniq tahlil qilish; davriy o'tish buni hurmat qilish uchun SQLite ning optimallashtirilgan namuna olish bitini tozalaydi. Hech qanday mustaqil SQL tahlil bayonoti bajarilmaydi. | | `OMNIROUTE_CRYPT_KEY` | _(o'rnatilmagan)_ | `src/lib/db/encryption.ts` | **Eski taxallus** `STORAGE_ENCRYPTION_KEY` uchun. Asosiy o'zgaruvchi mavjud bo'lmaganda zaxira sifatida qabul qilinadi. | | `OMNIROUTE_API_KEY_BASE64` | _(o'rnatilmagan)_ | `src/lib/db/encryption.ts` | **Eski taxallus** (Base64-encoded formasi) zaxira sifatida qabul qilingan. Foydalanishdan oldin avtomatik ravishda dekodlanadi. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(o'rnatilmagan)_ | `src/lib/db/core.ts` | Davriy SQLite salomatligini tekshirish oralig'ini (ms) bekor qiling. Belgilanmagan bo'lsa, standart qiymatlar `NODE_ENV` dan olinadi. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(olib tashlandi)_ | `src/lib/db/walMaintenance.ts` | **Oʻchirildi.** Davriy jonli `wal_checkpoint(TRUNCATE)` umumiy wal-indeks xaritasini bekor qilishi va SIGBUS (#13973) bilan jarayonni buzishi mumkin, shuning uchun rejalashtiruvchi endi mavjud emas. Oʻzgaruvchi inert: musbat qiymat bir martalik eskirish haqida ogohlantirishni qayd qiladi, `0` yoki sozlanmagan esa jim turadi. WAL PASSIVE nazorat punktlari (pastda) tomonidan saqlanadi va o'chirish nazorat punkti tomonidan kesiladi. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5 m) | `src/lib/db/walMaintenance.ts` | Tez-tez `wal_checkpoint(PASSIVE)` oralig'ini (ms) bekor qiling. Kutilayotgan WAL freymlarini kichik ushlab turadi, shuning uchun nazorat nuqtalari tez qoladi va WAL fayli o'chirish qisqarishlari orasida chegaralangan bo'lib qoladi. `0` o'chiradi. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Agar PASSIVE belgisi shu hajmdan yuqori WAL faylini topsa, `wal_checkpoint(RESTART)` ishga tushiring, shunda WAL xaritalangan wal-indeksini qayta yozmasdan qayta boshlanadi. Jonli kesish rejimidagi nazorat punktlari olib tashlandi ( `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` qatoriga qarang). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` uchun muhim resurs bosimi barqaror boʻlganidan keyin jarayondan chiqish uchun `1`/`true`/`yes`/`on` ni oʻrnating, bu esa nazoratchiga (tizim `Restart=always`, Docker qayta ishga tushirish siyosati) 503 soniyani cheksiz muddatga xizmat qilish oʻrniga toza jarayonni qaytarishga ruxsat beradi. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | O'z-o'zini qayta ishga tushirishdan chiqish yong'inlari paydo bo'lishidan oldin tanqidiy bosim qancha davom etishi kerak. | | `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Shovqinli qo‘shni 503 soniyani ishga tushirganda, bu jarayon yaxshi bo‘lganda (#13124) xost bo‘yicha `/proc/pressure/memory` (`psi_some` / `psi_full`) ni e’tiborsiz qoldirish uchun `1`/`true`/`yes`/`on` ni sozlang. Cgroup va V8 qo'riqchilari yoniq qoladi. PSI ham `cgroup_high` uchun yadro drossel isboti sifatida hisoblashni to'xtatadi: `memory.high` yuqori bo'lgan guruh jami, keyin faqat `memory.events` `high`/`max` o'sishi bilan kritik bo'ladi. `memory.events` xomashyo nisbati saqlanadi. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(avtomatik aniqlash)_ | `src/lib/db/adapters/sqljsAdapter.ts` | `sql.js` WASM zaxira adapteridan foydalanganda `sql-wasm.wasm` ga aniq yo'l (mutlaq yoki cwd ga nisbatan). Oʻrnatilmaganda paketga bogʻliqliklar va nomzodlar sxemalari orqali avtomatik aniqlanadi. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Terminal kunlari (completed/failed/cancelled/expired) Ommaviy API ishining nazorat nuqtalari, havola qilingan input/output/error fayllari va qatorlar oʻchirishdan oldin avtomatik tozalash orqali saqlanadi. `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` yoqilgandan keyingina kuchga kiradi; OpenAI ning o'z Batch API chiqishini saqlash oynasiga mos keladi. Dizayn bo'yicha shartsiz (yosh filtrisiz) qoladigan operator tomonidan qo'zg'atiladigan `DELETE /api/v1/batches/delete-completed` marshrutiga ta'sir qilmaydi. | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | Qachon `true`, avtomatik tozalashga `OMNIROUTE_BATCH_RETENTION_DAYS` o'tgan terminal API ishlarini (va ularning nazorat nuqtalarini) o'chirishga ruxsat bering va yuklangan fayllarning BLOB tarkibini o'z `expires_at` dan o'tib o'chiring. Sukut boʻyicha oʻchirilgan: har bir mavjud oʻrnatish bu maʼlumotni operator qoʻshgunga qadar avvalgidek saqlaydi. Shuningdek, asboblar panelida tahrirlanadigan xususiyat bayrogʻi — `docs/reference/FEATURE_FLAGS.md` → Ish vaqtiga qarang. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Ishga tushganda DB sogʻligʻini tekshirishni butunlay oʻtkazib yuborish uchun `1` ni sozlang. Qisqa muddatli vazifalar va integratsiya testlari uchun foydali. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Odatda o‘tkazib yuborilsa ham (masalan, qisqa muddatli vazifalar) DB Healthcheck tsiklini yoqish uchun `1` -ni sozlang. | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | `npm install` vaqtida mahalliy ish vaqti qizdirilishini o‘tkazib yuborish uchun `1` ni sozlang. Sqlite allaqachon qurilgan CI/headless o'rnatishlarda foydali. | | `OMNIROUTE_MIGRATIONS_DIR` | _(avtomatik aniqlash)_ | `src/lib/db/migrationRunner.ts` | Migratsiya yuguruvchisi skanerlaydigan katalogni bekor qiling. Shaxsiy tuzilmalarda to'plangan migratsiyalarni jo'natishda foydalidir. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(o'rnatilmagan)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Platforma yoʻlini ajratuvchi bilan ajratilgan `namespace=dir` yozuvlari sifatida qoʻshimcha migratsiya kataloglari (masalan, `ee=/opt/app/enterprise/db/migrations`). U erda topilgan fayllar `-` sifatida qayd etiladi, shuning uchun o'z migratsiyalarini yuboradigan tarqatish hech qachon yuqori oqimdagi raqamli slotlarga to'qnash kelmaydi. Noto'g'ri shakllangan yozuv, noto'g'ri nom maydoni yoki etishmayotgan katalog sxemani jimgina o'tkazib yuborish o'rniga ishga tushiriladi. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Ommaviy kutilayotgan migratsiya chegarasi (#3416). Mavjud DB (oʻchirilgan kuzatuv jadvalidan himoya)da bundan koʻproq migratsiya kutilayotgan boʻlsa, ishga tushirish toʻxtatiladi. Eski zaxira nusxasini tiklash uchun uni ko'taring; chekni o'chirish uchun `0` ga o'rnating. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | `check:install-upgrade` chiqarish darvozasi uchun ishchi katalog. Unga taxminan 12 GB kerak bo'ladi (ikki ~ 3 GB o'rnatish daraxtlari va tarball), shuning uchun u o'z-o'zidan boshqariladigan yuguruvchida kichik tmpfs — da ishlamasligi kerak `/tmp` - 12 GB operativ xotira bilan ta'minlangan tmpfs va darvoza uni tugatdi, trunca. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(kodda birlamchi)_ | `src/lib/spend/batchWriter.ts` | Paketli spend/cost yozuvchisi uchun yuvish oralig'i (ms). Pastroq qiymatlar yozishni birlashtirishni kamaytiradi; yuqori qiymatlar DB tortishuvini kamaytiradi. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(kodda birlamchi)_ | `src/lib/spend/batchWriter.ts` | Majburiy tozalashdan oldin buferlangan xarajatlarning maksimal miqdori. Yuqori QPS-ni joylashtirishni oshirish; chegaralangan xotira ko'proq ahamiyatga ega bo'lsa, pastroq. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(o'rnatilmagan)_ | `open-sse/utils/proxyFetch.ts` | Vercel relay yo'lida `[ProxyFetch]` disk raskadrovka jurnallarini chiqarish uchun `"true"` ga o'rnating. Marshrutlash bo'yicha maslahatlar sizib chiqmasligi uchun sukut bo'yicha o'chirilgan. | | `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(o'rnatilmagan)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Qabul qilingan faylni almashtirishdan oldin yaratilgan yadro konfiguratsiyasini tekshiradigan mahalliy proksi yadro binarining mutlaq yo'li ( `sing-box` / `mihomo` nomli fayl). Unset faqat qabul qilingan fayl yoniga `.generated` yozadi. Faqat xost muhiti: hech qachon ma'lumotlar bazasida saqlanmaydi va API boshqaruvi orqali qabul qilinmaydi, chunki ikkilik bajariladi. | | `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(o'rnatilmagan)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Tasdiqlangan konfiguratsiya almashtirilgandan so'ng mahalliy proksi-server yadrosi qanday qayta yuklanadi: JSON argumentlar massivi qobiqsiz ishlaydi yoki tashqi kuzatuvchi faylni qo'llaganida aynan `external`. Hech qachon ma'lumotlar bazasida saqlanmaydi va API orqali ta'sirlanmaydi. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Batafsil `[ProxyEgress]` jarayon jurnali qatoriga client/egress IPs va hisob prefiksini kiritish uchun `"true"` yoki `"1"` ga sozlang. Sukut bo'yicha OFF saqlanadi, shuning uchun jarayon jurnali IPs yoki hisob prefiksi oqib chiqmaydi. | | `OMNIROUTE_DEBUG` | _(o'rnatilmagan)_ | `bin/cli/commands/quota.mjs` | CLI kvota buyruqlaridan stderr-ga so'rov bo'yicha vaqt diagnostikasini (`[omniroute] GET completed in Nms`) chop etish uchun `1` -ni o'rnating. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(avtomatik)_ | `scripts/dev/healthcheck.mjs` | Konteyner holatini tekshirish orqali aniq yo‘l tekshirildi. Belgilanmagan, prob uni `OMNIROUTE_BASE_PATH` dan oladi; uni o'rnatish chuqur monitoringning so'nggi nuqtasiga qaytadi. | | `OMNIROUTE_DEBUG_COMPLETION` | _(o'rnatilmagan)_ | `bin/cli/commands/completion.mjs` | CLI shell-to'ldirish kesh yo'llaridan (read/refresh/write) `[omniroute completion]` diagnostikasini chiqarish uchun har qanday bo'sh bo'lmagan qiymatni o'rnating. Sukut bo'yicha o'chirilgan — bu keshlar jimgina ishlamay qoladi, shuning uchun missing/corrupt keshi hech qachon tab-to'ldirishni buzmaydi. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24 soat) | `open-sse/services/batchProcessor.ts` | Alohida partiya elementlari uchun maksimal qayta urinish oynasi (ms). Bu muddatdan oshgan elementlar muvaffaqiyatsiz deb belgilangan. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | To'plam elementini qayta urinishda eksponensial orqaga qaytish uchun asosiy kechikish (ms). | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1 soat) | `open-sse/services/batchProcessor.ts` | To'plam elementini qayta urinishlar orasidagi eksponensial orqaga qaytish uchun qopqoq (ms). | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Bir vaqtning o'zida qayta ishlangan partiyalarning maksimal soni. O'tkazish qobiliyatini oshirish uchun ko'taring; tezlik chegarasi bo'ronlarini oldini olish uchun past tuting. | > [!IMPORTANT] > Mavjud doimiy ma'lumotlar bazasini o'zgartirishdan oldin, migratsiya yuguruvchisi `DATA_DIR/db_backups/` ostida to'liq, kontent manzilli suratni nashr etadi. Nashr qilish uchun bir xil fayl tizimini qo'llab-quvvatlaydigan fayl tizimi, ustiga yozilmaydigan qattiq havolalar va mustahkam fayl sinxronizatsiyasi talab qilinadi. POSIX xostlari kataloglarni sinxronlashni ham talab qiladi; Windows da Node katalog tutqichlarini rad etishi mumkin, shuning uchun OmniRoute nashr etilgan faylni o'chiradi va katalogga kirishni sinxronlashni eng yaxshi harakat sifatida ko'radi. Agar o'rnatilgan `DATA_DIR` ushbu kafolatlarni ta'minlay olmasa, migratsiyani qo'llashdan oldin ishga tushirish yopiladi. `DATA_DIR` o'sha primitivlar bilan hajmga o'tkazing; migratsiya xavfsizligini chetlab o'tish uchun `DISABLE_SQLITE_AUTO_BACKUP` foydalanmang. ### Ssenariylar | Ssenariy | Konfiguratsiya | | --------------------------- | ------------------------------------------------------------------------------------------------------------------ | | **Mahalliy rivojlanish** | Barcha standart sozlamalarni qoldiring. DB `~/.omniroute/omniroute.db` da yashaydi. | | **Docker** | `DATA_DIR=/data` + `/data` hajmni o'rnating. | | **Dam olishda shifrlangan** | `STORAGE_ENCRYPTION_KEY` + o'rnating, kalitning zaxira nusxasini saqlang! Uni yo'qotish = ma'lumotlarni yo'qotish. | | **CI/Testing** | `DATA_DIR=/tmp/omniroute-test` — vaqtinchalik, shifrlash kerak emas. | --- ## 3. Tarmoq va portlar | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PORT` | `20128` | `src/lib/runtime/ports.ts` | Dashboard UI va API so'nggi nuqtalari uchun asosiy port (bitta portli rejim). | | `OMNIROUTE_BASE_PATH` | _(bo'sh = ildizi)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | teskari proksi-server ortida OmniRoute xizmat ko'rsatish uchun URL pastki yo'li ( Next.js `basePath` ni o'rnatadi; auth qayta yo'naltirishlari basePath-dan xabardor). Masalan, `/omniroute`. Docker qiymat `docker build` (`ARG OMNIROUTE_BASE_PATH`) davomida pishiriladi; oldindan tuzilgan ildiz tasvirlari Next.js yuklashdan oldin konteyner ishga tushirilganda bir marta boshqa ish vaqti qiymatini qo'llashi mumkin. `NEXT_PUBLIC_BASE_URL` umumiy manbaga, shu jumladan bir xil pastki yo'lga o'rnating. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(bo'sh = ildizi)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Brauzerda koʻrinadigan `OMNIROUTE_BASE_PATH` oynasi, qurish vaqtida ichkariga joylashtirilgan, shuning uchun asboblar paneli soʻnggi nuqta displeyi `https://host/v1` oʻrniga `https://host/omniroute/v1` koʻrsatadi. Oʻrnatilmaganda `OMNIROUTE_BASE_PATH` ga tushadi. O'zgartirilgandan keyin qayta qurish (Keyingi `basePath` - qurish vaqti). | | `DASHBOARD_ALLOW_EMBED` | _( = sozlanmagan, hech qachon ramkalanmaydi)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | HTML sahifalarining iframe oʻrnatilishini yoqing. Belgilanmagan, har bir marshrut `frame-ancestors 'none'` + `X-Frame-Options: DENY` yuboriladi. Sahifalarga (boshqaruv paneli, login, hujjatlar, ochilish) `frame-ancestors 'self' vscode-webview:` va `X-Frame-Options` xizmat qilish uchun `vscode` ni sozlang, shuning uchun VS Code Simple Brauzer ularni (OmniCopilot ning `dashboardOpen: "editor"` rejimi) ko‘rsatishi mumkin. API yuzasi (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, ildiz darajasidagi taxalluslar) har qanday holatda ham qat'iy sarlavhalarni saqlaydi. Faqat `vscode` tan olinadi — `1`/`true` uni yoqmang. Qurilish vaqti: o'zgartirilgandan keyin qayta qurish (tasvirlar uchun `docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` ; uni oldindan tuzilgan o'rnatishga o'rnatish hech qanday ta'sir qilmaydi). | | `API_PORT` | _(o'rnatilmagan)_ | `src/lib/runtime/ports.ts` | Sozlanganda, ushbu alohida portda `/v1/*` proksi-server API (plyus Gemini-native `/v1beta/*`) ga xizmat qiladi. | | `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | API porti uchun ulanish manzili. | | `DASHBOARD_PORT` | _(o'rnatilmagan)_ | `src/lib/runtime/ports.ts` | O'rnatilganda, bu alohida portda Dashboard UI xizmat qiladi. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(o'chirilgan)_ | `src/sse/utils/backpressure.ts` | Parvoz ichidagi chat ulanishlarini cheklaydi; cap ustidan so'rovlar `Retry-After` bilan `503` olish. Musbat butun son qo'riqlashni ta'minlaydi; unset/`0` uni o'chiradi. | | `OMNIROUTE_INSTANCE_ID` | _(o'rnatilmagan)_ | `src/shared/resilience/peerRouting.ts` | OmniRoute nusxalarini zanjirlashda ushbu shlyuz uchun barqaror, noyob ID. Kiruvchi peer-loop tekshiruvlarini yoqadi. Ruxsat etilgan belgilar: harflar, raqamlar, `.`, `_`, `:`, va `-`; maksimal 64 belgi. | | `OMNIROUTE_PEER_URLS` | _(o'rnatilmagan)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | Vergul bilan ajratilgan OmniRoute bazasi URLs `X-OmniRoute-Peer-Trace` qabul qilishi mumkin. Faqat aniq ruxsat etilgan yuqori oqim URLs tengdosh metama'lumotlarini oladi; boshqa barcha provayderlar daxlsiz. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Zanjirlangan so‘rov bo‘yicha qabul qilingan avval tashrif buyurilgan OmniRoute nusxalarining maksimal soni (`1`-`32`). Takroriy holatlar yoki tugagan byudjet qaytishi HTTP `508 Loop Detected`. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Docker ishlab chiqarish rejimida boshqaruv paneli uchun xost tomonidan chop etilgan port. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Docker ishlab chiqarish rejimida API uchun xost tomonidan nashr etilgan port. | | `OMNIROUTE_PORT` | _(o'rnatilmagan)_ | `src/lib/runtime/ports.ts` | Electron yoki boshqa oʻramlar ichida ishlayotganda `PORT` dan ustunlik qiladi. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Real vaqtda WebSocket jonli monitoring serveri uchun port. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Jonli WebSocket serveri uchun ulanish manzili. LAN ochish uchun `0.0.0.0` ga sozlang (shuningdek, `LIVE_WS_ALLOWED_ORIGINS` sozlang). Ulanishlar asboblar paneli seansi cookie fayli yoki boshqaruv doirasiga ega bo'lgan Bearer API kaliti (`manage`/`admin`) yordamida autentifikatsiya qilinadi. | | `LIVE_WS_ALLOWED_ORIGINS` | _(o'rnatilmagan)_ | `src/server/ws/liveServer.ts` | Vergul bilan ajratilgan qo'shimcha manbalar jonli WebSocket ochishga ruxsat berdi. Orqaga qaytish asboblar paneli manbalariga sukut bo'yicha ruxsat berilgan. | | `LIVE_WS_ALLOWED_HOSTS` | _(o'rnatilmagan)_ | `src/server/ws/liveServerAllowList.ts` | Vergul bilan ajratilgan qoʻshimcha xost nomlari jonli WebSocket manbalariga ruxsat berilgan. `LIVE_WS_ALLOWED_ORIGINS` (to'liq kelib chiqishi URLs) dan farqli o'laroq, faqat LAN/Tailscale sozlamalari uchun foydali bo'lgan — xost qismiga mos keladi. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(o'rnatilmagan)_ | `src/hooks/useLiveDashboard.ts` | Jonli boshqaruv paneli WebSocket (brauzer tomoni) uchun ommaviy URL. WS serveriga teskari proksi-server yoki Cloudflare Tunnel (masalan, `wss://ws.my-ai.com/live-ws`) bilan kirishda sozlash; brauzer `ws://hostname:20132` o'rniga u erda ulanadi. Yo'l nomi qismi WebSocket yangilash yo'li sifatida ham ishlatiladi (standart: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` va `scripts/start-ws-server.mjs` | Haqiqiy vaqtda WebSocket serverini o'chirish uchun `0` yoki `false` ni o'rnating (sukut bo'yicha yoqilgan, orqaga bog'langan). mustaqil jonli WebSocket yordamchi skriptini o'chiradigan CI/harness o'tish tugmasi. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Per-(token, IP) rele tezligi chegarasi, requests/minute. In-xotira, har bir misol. `0` yoki negativ IP-o'lchov eshigini o'chiradi (har bir token uchun DB chegarasi hali ham amal qiladi). | | `NODE_ENV` | `production` | Next.js yadrosi | Jurnalning batafsilligini, keshlashni, xato tafsilotlarini aniqlashni va Next.js optimallashtirishni boshqaradi. | | `OMNIROUTE_USE_TURBOPACK` | _(o'rnatilmagan)_ (avtomatik qurilishni tanlash) | `scripts/build/build-next-isolated.mjs` | `npm run build` uchun samarali xotira chegarasi (jismoniy RAM yoki pastki cgroup/process kvotasi) ko‘pi bilan bo‘lsa, o‘rnatilmagan yoki bo‘sh tanlangan veb-paket** 16 GiB** yoki xavfsiz tarzda aniqlash mumkin emas; 16 GiB dan yuqori bo'lsa, Turbopack tanlanadi. Aniq `0` kuchlari veb-paketi; aniq `1` va boshqa bo'sh bo'lmagan nolga teng bo'lmagan qiymatlar Turbopack kuchi. Compose tomonidan yuborilgan bo'sh muhit qiymati shunday qiladi** emas** kuch Turbopack. Bu chegara 15,6 GiB qurish-xotira regressiyasidan kelib chiqadi (#18184); 24/32 GiB bilan xost tuzilmalari taqqoslanmagan. Ishlab chiqarish veb-to'plami sukut bo'yicha doimiy keshini avtomatik ravishda o'tkazib yuboradi (quyida `OMNIROUTE_WEBPACK_BUILD_CACHE` ; #18141 ga qarang) va joriy Turbopack yo'liga qaraganda ancha past RSS bilan quriladi. Rivojlanish o'zining mavjud bundler harakatini saqlab qoladi.**Docker allaqachon sukut bo'yicha `0` (veb-paket) quradi** ; kirish uchun `--build-arg OMNIROUTE_USE_TURBOPACK=1` foydalaning. `docs/guides/DOCKER_GUIDE.md` qarang. | | `OMNIROUTE_WEBPACK_BUILD_CACHE` | _(o'rnatilmagan)_ | `next.config.mjs` | Webpack ishlab chiqarish tuzilmalari (`OMNIROUTE_USE_TURBOPACK=0`), agar bu `1` bo'lmasa, veb-paketning doimiy fayl tizimi keshini o'tkazib yuboradi. Ushbu keshni yozish 6144 MB yig'ish hajmida taxminan 2,5 GB yig'ilish xotirasini qo'shadi va toza tuzilmalar uni hech qachon o'qimaydi. Zaxira qilish uchun RAM bo'lgan mashinada tezroq takrorlash uchun `.build/next/cache/webpack` saqlash uchun `1` ga sozlang; Docker qurish uni `--build-arg OMNIROUTE_WEBPACK_BUILD_CACHE=1` (`Dockerfile` va `Dockerfile.bun` quruvchi bosqichlari) sifatida qabul qiladi. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(o'rnatilmagan)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Ishga tushganda SQLite yaxlitligini tekshirishni o'tkazib yuborish uchun `1` ni sozlang. Katta ma'lumotlar bazalarida tezroq yuklash uchun foydalidir. | | `NOTIFY_SOCKET` | _(o'rnatilmagan)_ | systemd (sd_notify protokoli) | Jarayon sd_notify integratsiyasi bilan xizmat ko'rsatish bloki ostida ishlayotganida systemd tomonidan o'rnatiladi; OmniRoute READY/WATCHDOG bildirishnomalarini yuborish uchun uni o'qiydi ( `OMNIROUTE_DISABLE_SD_NOTIFY` ga qarang). Hech qachon foydalanuvchi tomonidan o'rnatilmagan. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(o'rnatilmagan)_ | `scripts/dev/systemd-notify.mjs` | Systemd sd_notify (Type = notify / WatchdogSec=) ni hatto tizim bloki ostida ishlayotgan bo'lsa ham o'chirish uchun `1` ga sozlang. Xabar beruvchi tizimdan tashqarida bo'lishidan qat'i nazar, no-op hisoblanadi. | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Hisob ma'lumotlari holatini tekshirish rejalashtiruvchisi uchun interval (ms). Minimal: 10000 (10s). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | keshlangan hisob ma'lumotlarining sog'lig'i holati uchun TTL (ms). | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Provayder ulanishlarining fon davriy sinovini o‘chirish uchun `1` yoki `true` ni sozlang. Qidiruv provayderlari ( `src/lib/providers/validation/searchProviders.ts` dagi SEARCH_VALIDATOR_CONFIGS, masalan, `tavily-search`) har doim tekshirishdan chiqarib tashlanadi — ularning "validatsiyasi" haqiqiy hisoblangan yuqori oqim so'rovidir, shuning uchun ular hech qachon taymerda (#9970) sog'lig'i tekshirilmaydi. | | `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Autentifikatsiya qilingan qo'ng'iroq qiluvchiga `/api/monitoring/health?deep=1` so'rashga ruxsat berish uchun `1` ni o'rnating , u har bir TTL uchun bir marta yakunlangan sirt namunalarini oladi. Anonim qo'ng'iroq qiluvchilar hech qachon tekshiruvni ishga tushirmaydi. | | `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | Yuklash hodisasi-loop yozuvchisi uchun toʻxtash chegarasi (ms): undan uzunroq muzlatish davom etishda xotira va parvozdagi hisoblar bilan bir `event loop stalled` chizigʻini qayd qiladi va `eventLoopStall` counter/maximum `/api/monitoring/health` ga uradi. O'chirish uchun `0` ga sozlang; o'qilmaydigan yoki salbiy qiymat `5000` ga qaytadi. | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Next.js dev/start serveri uchun ulanish manzili. O'rnatilganda standart `0.0.0.0` bekor qiladi. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Next.js ishga tushirilganda Playwright runner tomonidan ishlatiladigan bog'lash manzili. Germetik testlar uchun standart `127.0.0.1`.** `omniroute serve` uchun foydalanmang** — o'rniga `OMNIROUTE_SERVER_HOST` dan foydalaning (POSIX qobiqlari `HOSTNAME` mashina nomiga avtomatik o'rnatadi; `.env` uni bekor qila olmaydi). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | `omniroute serve` uchun bog'lash manzili. POSIX shell `HOSTNAME` o'zgaruvchisi bilan to'qnashuvning oldini oladi (har doim mashina nomiga bash/zsh orqali o'rnatiladi). Oʻrnatilmaganda `0.0.0.0` ga tushadi. (#6194) | ### Port rejimlari ``` ┌─────────────────────────── 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. Xavfsizlik va autentifikatsiya | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Mashina barmoq izlarini olish uchun apparat identifikatorlari bilan birlashtirilgan tuz. Izolyatsiya uchun har bir tarqatish uchun o'zgartirish. | | `OMNIROUTE_CLI_SALT` | _(sozlanmagan = tasodifiy tuz `/cli-token-salt.json` da saqlanib qoldi )_ | `src/lib/machineToken.ts` | mahalliy CLI auth tokenini olish uchun HMAC tuzi. Ushbu qiymatni o'rnatish mashinadagi barcha CLI tokenlarini aylantiradi va doimo doimiy tuzdan ustun turadi. `docs/security/CLI_TOKEN.md` qarang. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Seans kukilarida `Secure` bayrog'ini o'rnatadi.** `true` bo'lishi kerak** HTTPS orqasidan yugurayotganda. | | `REQUIRE_API_KEY` | `false` | API o'rta dasturi | `true` boʻlganda, barcha `/v1/*` proksi-server soʻrovlarida yaroqli API kaliti boʻlishi kerak.** Bu bayroq `GET /v1/models` ga kirmaydi** , bu — o'rniga asboblar paneliga kirish holatiga (`requireAuthForModels`) ergashadi, shuning uchun `/v1/models` dan `401` NOT xulosa himoyalangan degan ma'noni anglatadi. Qarang: `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). `true`, `1` yoki `yes` ni qabul qiladi, registr va uning atrofidagi joylarni e'tiborsiz qoldiradi; boshqa har qanday qiymat (shu jumladan `on`) o'chirilgan. | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Boshqaruv paneli UI da to'liq API kalit qiymatlarini ochishga imkon beradi. Boshqaruv paneli funksiyalari bayroqlaridan sozlanishi mumkin; umumiy misollardagi xavfsizlik xavfi. | | `NO_LOG_API_KEY_IDS` | _(bo'sh)_ | `src/lib/compliance/index.ts` | Soʻrov jurnalini chetlab oʻtuvchi vergul bilan ajratilgan API kaliti IDs (GDPR muvofiqligi). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(cheksiz = sozlanmagan)_ | `src/shared/utils/apiKeyPolicy.ts` | `rate_limits` ustuni null boʻlgan API kalitlariga qoʻllaniladigan bir kunlik soʻrov byudjeti. O‘rnatilmagan yoki bo‘sh: yashirin bosh harf yo‘q (#2289, #11017). `0` bir xil (cheklanmagan). N musbat butun son N/day, 5N/week, 20N/month. ruxsat beradi Noto'g'ri shakllangan bo'sh bo'lmagan qiymatlar eski 1000/day, 5000/week, 20000/month oynalariga qaytadi. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | Ko'rinadigan `maxBodySizeMb` sozlamalari uchun standart; saqlangan sozlama ustunlik qiladi. `/api/v1/chat/completions` va `/api/v1/responses` cheklov saqlanmaguncha 50 MB sukut saqlaydi; keyin saqlangan chegara uni yuqoriga yoki pastga almashtiradi, sarlavha himoyasi va haqiqiy baytli chatga kirish uchun. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Ushbu chegaradagi yoki undan yuqori boʻlgan haqiqiy soʻrov organlari JSON tahlilidan oldin (BYTE yoʻli, shu jumladan `POST /v1/responses`) atom jarayoni-mahalliy ogʻir vaznli ruxsatnomani oladi. Xuddi shu [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) sog'lom-headroom qochish tuzilishi-og'ir; hali `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) bilan chegaralangan, shuning uchun [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) qaytmaydi. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Chat-marshrut chegarasi cheklangan qabul paytida oʻqilgan baytlarga, jumladan, etishmayotgan, notoʻgʻri yoki insofsiz `Content-Length` soʻrovlariga nisbatan qoʻllaniladi; ortiqcha `413` oladi. Saqlangan `maxBodySizeMb` sukut bo'yicha 50 MB o'rnini bosadi; bu o'zgaruvchi o'rnatilganda, u saqlangan qiymatni ham qamrab oladi. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(so'rovsiz — cheklovi o'chirildi)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** bu eski soʻrov-COUNT chegara endi faqat aniq belgilangan boʻlsa bogʻlanadi. Oʻrnatilmagan (standart), chatga kirish oʻrniga `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — tomonidan jarayonning haqiqiy xotirasi chegarasidan oʻlchamdagi avtomatik ravishda olingan BYTE byudjeti bilan bogʻlanadi.** bitta jarayon** (bitta V8 to'plami). Ikkita bir-biriga o'xshash ~ 750k-token `/v1/responses` bekor ~ 12 Gi yig'ma (#7849) — a** xotira byudjeti** ogohlantirish, emas, balki qattiq mahsulot max 2. Sog'lom jarayon (to'kilgan nisbati quyida uyum) MAY `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` orqali ko'proq bir vaqtda uzoq `/v1/responses` tan. O'nlab uzun SSE mijozlari (40–50) "maks 2" emas, balki `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` + #10110 bo'ladi. Buni "xostdan foydalanish" uchun ko'r-ko'rona oshirish #7849 qayta kiritadi. Ko'paytiring** uyumlar** bilan** N mustaqil `DATA_DIR` s** (#11024); hech qachon bitta SQLite faylida `replicas>1`. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(avtomatik olingan)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** avtomatik ravishda olingan ingest bayt byudjeti uchun bekor qilish (qattiqroq V8/cgroup xotira shiftining 25% 8x vaqtinchalik kuchaytirishga bo'lingan). Olingan va aniq qiymatlar 8 MiB–2 GiB ga mahkamlanadi. Samarali byudjetdan kattaroq tana `413 body_exceeds_budget` bilan darhol muvaffaqiyatsizlikka uchraydi; alohida xizmat ko'rsatadigan organlar o'rtasidagi tortishuv qayta urinib ko'rish mumkin `503`. 40-50 bir vaqtning o'zida uzoq SSE mijozlari bu byudjet + yig'indisi, qattiq "maksimal 2" emas. Sozlashdan oldin `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` `/api/monitoring/health` da o'qing. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | BYTE va STRUCTURE og'ir vaznli (#10183, #10268, #10437) uchun to'p-bosim to'kish nisbati (`heapUsed / heap_size_limit`). `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` dan o'tgan bir vaqtda og'ir vaznli so'rov faqat to'p ALSO bu nisbatda yoki undan yuqori bo'lsa, qayta uriniladigan `503` bilan to'kiladi; sog'lom uyada o'rniga sog'lom bosh maydoni orqali qabul qilinadi. | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (standart `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Sog'lom-to'p tez yo'li (#10437) uchun cheklangan qo'shimcha imkoniyatlar** ikkalasi ham** STRUCTURE va BYTE (`admitChatRequest`, shu jumladan jismlar ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). Bu chegarasiz, har bir band, ammo sog'lom bo'lgan so'rovlar hech qanday shiftsiz qabulni chetlab o'tdi. Bu ko'p bir vaqtning o'zida lizinglar sog'lom to'p yo'li orqali faollashgandan so'ng, keyingi band so'rovlar haqiqiy to'p bosimi ostida ishlatiladigan SAME bounded-wait/shed yo'liga tushadi. `0` bypassni butunlay o'chirib qo'yadi. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Chat so'rovini hatto uning tanasi bayt chegarasidan past bo'lsa ham og'ir deb tasniflaydigan xabarlar soni. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Chat so'rovini hatto uning tanasi bayt chegarasidan past bo'lsa ham og'ir deb tasniflaydigan asboblar soni. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | So'rovni og'ir vaznli deb tasniflaydigan konservativ qator o'lchamli token bahosi; bu provayder hisob-kitob tokenizatsiyasi emas, balki kirish narxi proksi-serveridir. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (o'chirilgan) | `src/shared/middleware/chatBodyAdmission.ts` | Majburiy emas, chat tarixiga qo‘shilish. Sukut bo'yicha o'chirib qo'yilgan: xabarlar soni so'rovning universal xususiyati emas, tarqatish siyosatidir va bu erda cheklash siqish quvur liniyasi ularni xizmat ko'rsatish imkoniyatiga ega bo'lishidan oldin terminal `413` bilan suhbatlarni rad etadi. Uyumning o'sishi `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` va to'p bosimining to'kilishi bilan chegaralanadi. Qattiq shiftga muhtoj bo'lgan xotira cheklangan joylashtirishlarda ijobiy qiymat o'rnating; ortiqcha keyin tuzilgan ixcham talab `413` oladi. | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | To'liq xotiraga buferlangan oqimsiz yuqori oqim javobi uchun qattiq qopqoq. Shundan so'ng yuqoridagi o'quvchi bekor qilinadi va so'rov to'p tugaguncha cheksiz qatorni o'stirish o'rniga tezda bajarilmaydi. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Yuqoridagi javob sarlavhalaridan uzatiladigan maksimal sim baytlari. Byudjetdan oshib ketganda, umumiy teskari proksi sarlavha chegaralarida qolish uchun pastroq ustuvor sarlavhalar (masalan, maxsus `x-codex-*`, `x-oai-request-id`) o'chiriladi. Kattaroq javob sarlavhasi o‘lchami evaziga ko‘proq yuqoridagi metama’lumotlarni uzatish uchun yuqoriroqni o‘rnating. | | `OMNIROUTE_QUOTA_RECOVERY_MAX_PER_KEY` | `64` | `src/lib/quota/quotaSessionRecovery.ts` | Ko‘pchilik kvotani tiklash chiptalarida (kutishda, ishga tushirish yoki tasdiqlash kutilayotgan) bitta API tugmasi bo‘lishi mumkin. Kalit chegarada bo'lgandan so'ng, yangi navbat `202` chiptasi o'rniga asl kvota xatosini oladi; allaqachon to'xtatilgan burilishni qaytadan urinish hamon chiptani qaytaradi. Yaroqsiz yoki ijobiy bo'lmagan qiymatlar standartdan foydalanadi. | | `CORS_ORIGIN` | _(o'rnatilmagan)_ | `src/server/cors/origins.ts` | Yagona manbali CORS ruxsat etilgan roʻyxat. Yangi joylashtirishlar uchun `CORS_ALLOWED_ORIGINS` afzal ko'ring. CORS faqat o'zaro kelib chiqish brauzeri API mijozlari uchun; autentifikatsiya qilingan asboblar panelidagi yozuvlar oʻrniga bir xil kelib chiqish soʻrovlari va seansga bogʻlangan CSRF himoyasidan foydalanadi. | | `CORS_ALLOWED_ORIGINS` | _(o'rnatilmagan)_ | `src/server/cors/origins.ts` | Vergul bilan ajratilgan CORS ruxsat etilgan roʻyxat. Agar `CORS_ALLOW_ALL=true` aniq konfiguratsiya qilinmasa, joker belgi yuborilmaydi. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Har qanday brauzer `Origin` aks-sadosi uchun faqat ishlab chiqish uchun escape lyuk. Birgalikda yoki ishlab chiqarishda joylashtirishni yoqmang. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Eski taxallus. Uning boshqaruv panelini almashtirish ( DB bekor qilish) bu muhit qiymatidan oldin o'qiladi; `false`, `0`, `no` yoki `off` ikkalasida ham host tekshiruvlarini `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` dagi kabi o‘chiradi, hattoki ushbu bayroqning boshqaruv panelini almashtirish o‘chirilgan bo‘lsa ham; boshqa qiymatlar qo'riqchini quyidagi ikkita bayroqqa qoldiradi. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Qo‘riqlash rejimiga amal qiluvchi provayder yo‘llarida (barcha 169.254.0.0/16, metadata.google.internal) tashqariga chiquvchi URL guard xost tekshiruvlarini o‘chirib qo‘yadi: URL tekshiruvi, modelni aniqlash, provayder-tugun bazasi URLs (jumladan, masofaviy qayta tartiblash tugunlari) va boshqa proksi-provayder-qayta yo‘l sinovlari kabi masofaviy chiqish yo‘lini image/media qo‘yadi. olib kelmoq. Bu, shuningdek, ushbu bayroq yoqilgan holda ham bloklangan holda qoladigan cloud-metadata/link-local so'nggi nuqtalaridan tashqari shaxsiy veb-huk maqsadlariga ruxsat beradi. `BaseExecutor.execute()` orqali yuborilgan chat so'rovlari bulutli metama'lumotlarni tekshiradi. Mahalliy provayderlar standart sozlamalar bilan ishlaydi: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (standart `true`) allaqachon tekshirish, aniqlash va provayder-tugun yo'llarida mahalliy va LAN URLs ruxsat beradi; proksi-qayta test va shaxsiy webhook maqsadlari faqat ushbu bayroqchaga murojaat qiladi va u o'chirilgan paytda local/LAN xostlarini bloklaydi. `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` ni bekor qiladi. Boshqaruv panelini almashtirishdan saqlangan qiymat ushbu o'zgaruvchidan ustun turadi. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Provayderni tekshirish, modelni aniqlash, chat va qo‘riqlash rejimi boshqaradigan boshqa provayderga qo‘shni chiqish yo‘llari uchun local/private manzillarida (127.0.0.1, localhost, LAN, shaxsiy diapazonlar) provayder URLs ruxsat bering.** Standart `true`** (birinchi mahalliy): qo'riqchi barcha 169.254.0.0/16 va ma'lum metadata xost nomlarini (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254) — bulutli metadata so'nggi nuqtalarini bloklaydi. `false` faqat umumiy rejim uchun o'rnating, bu esa shaxsiy va orqaga qaytish xostlarini ham bloklaydi. Qo'riqchi har qanday DNS qidiruvidan oldin host nomini yoki IP literalni yozilganidek tekshiradi; faqat ommaviy rejimda xavfsiz yuklash paketi qo'shimcha ravishda xost nomini hal qiladi va har qanday shaxsiy javobni rad etadi. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` ushbu cheklarni qatorlar ro'yxatidagi yo'llarda o'chiradi. LM Studio, Ollama, vLLM, Llamafile va Triton kabi oʻrnatilgan mahalliy provayderlar kalitlarni tekshirish va suhbat uchun barcha xost tekshiruvlarini oʻtkazib yuboradi. Boshqaruv panelini almashtirishdan saqlangan qiymat ushbu o'zgaruvchidan ustun turadi. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | `/v1/audio/*` marshrutlari (transkripsiyalar, nutq, tarjimalar) localhostdan tashqarida joylashgan OpenAI-mos keladigan provayder tugunidan foydalanishiga ruxsat bering. Ovozni masofaviy xostga — marshrutlashda sukut bo'yicha o'chirilgan holda chiqish identifikatori o'zgaradi va bu aniq operator qarori bo'lishi kerak. Loopback/private tugunlari (localhost, 127.0.0.1, 172.16-31.x) har doim ruxsat etiladi va ta'sir qilmaydi. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | `POST /v1/rerank` (va xotira mexanizmining qayta tartiblash bosqichi) localhost — a LAN box yoki Tailscale peer bilan ishlaydigan TEI, Infinity, vLLM va hokazolardan tashqarida joylashgan OpenAI-mos keladigan provayder tugunidan foydalanishiga ruxsat bering. Sukut boʻyicha oʻchirilgan — masofaviy xostga marshrutlash chiqish identifikatorini oʻzgartiradi va ekspluatatsion operator qarori boʻlishi kerak. Loopback tugunlari (localhost, 127.0.0.1, 172.16-31.x) har doim ruxsat etiladi va ularga ta'sir qilmaydi. Masofaviy tugunning URL bazasi provayderning chiqish URL siyosatidan ham o'tishi kerak (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`). | | `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(bo'sh)_ | `src/shared/network/localNodeHosts.ts` | Provayder-tugun marshrutlashi mahalliy — sifatida ko'rib chiqiladigan xost nomlari (vergul yoki bo'sh joy ajratilgan) odatda OmniRoute ning o'z Docker tarmog'idagi (`http://reranker:8080/v1`) reranker, TEI yoki audio yonboshning Docker/Compose xizmat nomini ko'rsatadi, shuning uchun tugunga qattiq kodlangan konteyner IP kerak emas. Roʻyxatga kiritilgan hostlar har bir masofaviy tugun uchun `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` yoqilmagan holda `/v1/rerank`, `/v1/audio/*` va mahalliy sogʻliqni tekshirish uchun mos boʻladi va hech qachon `HTTP(S)_PROXY` yoki bogʻlangan proksi-server orqali bevosita — deb nomlanadi. Ular hali ham ulanishning API kalitini yuborishadi. Faqat bitta yorliqli nomlar va `.internal`/`.local` nomlari qabul qilinadi; public FQDNs, IP literallari va bulutli metadata nomlari ogohlantirish bilan e'tiborga olinmaydi. (#14635) | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | OIDC yoqilgan bo'lsa, foydalanuvchilar faqat OIDC Single Sign-On orqali autentifikatsiya qilishlari uchun parol bilan kirishni o'chirib qo'ying. Yalang'och taxallus `OIDC_DISABLE_PASSWORD_LOGIN` ham qabul qilinadi; Xuddi shu kalitning asboblar paneli funksiyasi bayrog'i ustunlik qiladi. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Yalang'och taxallus `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889). | | `OMNIROUTE_DISABLE_MFA` | `false` | `src/server/auth/dashboardMfa.ts` | Ikki faktorli login TOTP boshqaruv paneliga kirish uchun yo'qolgan qurilmani tiklash. Qachon `true`, ikkinchi omil faqat hostning o'zidan tizimga kirish uchun o'tkazib yuboriladi (loopback peer va loopback `Host`); masofaviy kirish va boshqa manbalardan `POST /api/cli/connect` hali ham kodni talab qiladi. Mahalliy tizimga kiring, Sozlamalar → Xavfsizlik boʻlimida ikki faktorni oʻchirib qoʻying (bu oʻrnatilganda kod boʻsh qolishi mumkin, shuning uchun endi tekshirilmaydigan omilni olib tashlash mumkin; parol hali ham talab qilinadi), soʻngra uni bekor qiling. TOTP parolga kirishni o'z ichiga oladi va `omniroute connect` faqat — OIDC/SSO tizimga kirish identifikatsiya provayderining ikkinchi omiliga tayanadi. [AUTHZ_GUIDE](../architecture/AUTHZ_GUIDE.md#optional-totp-two-factor-login-16619) qarang. | ### Qattiqlashuvni tekshirish ro'yxati ```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. Input Sanitization & PII Protection OmniRoute ikki qatlamli mudofaani ta'minlaydi: so'rov tomonida in'ektsiyani skanerlash va javob tomonida PII ajratish. > **⚠️ cheklovlari:** Bu to'siqlar to'liq tezkor in'ektsiya xavfsizlik devori yoki PII DLP tizimi emas, balki _best-fort evristik_ aniqlashdir. Ular noto'g'ri musbat (beign persona/RPG prompts bayroqli) va noto'g'ri negativlarni (leetspeak, interval, inglizcha bo'lmagan naqshlar) ishlab chiqishi mumkin. Muvofiqlik uchun faqat ular etarli emas. Rejimlarni sozlang va ularga tayanishdan oldin trafikingizni sinab ko'ring. ### So'rov tomoni: Tezkor in'ektsiya qo'riqchisi | O'zgaruvchan | Standart | Manba fayl | Tavsif | | --------------------------------- | ----------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Tezkor yuborish naqshlari uchun kiruvchi xabarlarni skanerlashni yoqing. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Injection siyosati: faqat `warn` = log, `block` = so'rovni 400 bilan rad etadi. Legacy `redact` bajaradi** emas** chiziqli in'ektsiya matni; PII so'rovini qayta yozish uchun `PII_REDACTION_ENABLED` foydalaning. | | `INJECTION_GUARD_MODE` | _(o'rnatilmagan)_ | `src/middleware/promptInjectionGuard.ts` | `INPUT_SANITIZER_MODE` — uchun eski taxallus xuddi shunday harakat. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | `MODE=block` rad etadigan minimal jiddiylik: `high` (standart), `medium` yoki `low`. O'rtacha naqshlar tushirilmasa, faqat kuzatiladi. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(o'rnatilmagan)_ | `src/shared/utils/injectionSeverity.ts` | `INPUT_SANITIZER_BLOCK_THRESHOLD` — uchun eski taxallus xuddi shunday harakat. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | Qachon `true`, kiruvchi so'rovlarda PII tahrirlang (in'ektsiya rejimidan mustaqil). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | request/response yuklamalaridan taniqli API-kalit/maxfiy token naqshlarini tahrirlang. Ro'yxatdan o'tish; nometall `PII_REDACTION_ENABLED`. | ### Javob tomoni: PII Sanitizer | O'zgaruvchan | Standart | Manba fayl | Tavsif | | -------------------------------- | -------- | ------------------------- | ----------------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Mijozga qaytishdan oldin LLM javoblarini sizib chiqqan PII uchun skanerlang. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = maskasi PII, faqat `warn` = jurnali, `block` = butun javobni tashlab yuboradi. | ### VS Code Tokenized-Route Context Sanitizer | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------------------- | -------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | `/v1/vscode/[token]/*` soʻrovlaridan yashirin faol tahrirlovchi kontekstini (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) ajratadi va aniq biriktirilgan maxfiy fayllar tarkibini oʻzgartiradi. Sukut bo'yicha xavfsiz; o'chirish uchun `0` ga o'rnating. | ### Ssenariylar | Ssenariy | Konfiguratsiya | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Korxonaning muvofiqligi** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (in'ektsiya bloklari + request/response PII redaktsiyasi; rejimlar mustaqil) | | **Faqat monitoring** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — jurnallari, lekin hech qachon bloklanmaydi | | **Shaxsiy foydalanish** | Barcha o'chirilgan — nol yukini qoldiring | --- ## 6. Asboblar va marshrutlash siyosatlari | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------------------------------------------- | -------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | LLM tool/function-calling kirishni boshqaradi. `allowlist` = faqat sanab o'tilgan vositalar, `denylist` = ro'yxatdagilardan tashqari barcha, `disabled` = cheklovlarsiz. | | `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Foydali yukni manipulyatsiya qilish qoidalari JSON fayliga yo'l (per-model/protocol upstream tweaks). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Foydali yuk qoidalari faylini qayta yuklash uchun qayta yuklash oralig'i (ms). Minimal `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Ro‘yxatdan o‘tish: provayder prefiksini talab qilish o‘rniga Claude Code mijozlaridan Claude Code OAuth hisobi orqali IDs `claude-*` modelini yo‘naltiring. Aniq provayder prefikslari hali ham g'alaba qozonadi. Shuningdek, Claude provayderi sahifasida boshqaruv panelini almashtirish orqali ham sozlash mumkin. | | `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | OmniRoute `redact-thinking-2026-02-12` Anthropic beta-versiyasini qo‘shishni to‘xtatish uchun `false` o‘rnating (faqat imzo uchun bo‘sh fikrlash bloklari). `thinking.display: "summarized"` bilan so'rovlar qat'iy nazar uni o'tkazib yuboradi; mijoz tomonidan kelishilgan redakt beta yoki CC-mos keladigan `requestDefaults.redactThinking` kirish uni saqlab qoladi. Claude OAuth so‘rovlari, agar sukut bo‘yicha o‘chirilgan `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED` funksiyasi bayrog‘i yoqilgan bo‘lmasa, beta-versiyasini saqlab qoladi (u Claude Code OAuth barmoq izining bir qismidir). | | `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Eski `resolveBareModelToConnectionDefault` xatti-harakati (#4825): har qanday yalang'och model nomini tanlangan ulanishning `defaultModel` bilan almashtiring. Sukut bo'yicha o'chirilgan, faqat `auto` yoki bo'sh model almashtiriladi; yoqilganda har bir juftlik uchun bitta ogohlantirish qayd qiladi. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Har bir model uchun aylanali kombinatsiyalar uchun mos keladigan qopqoq (#9100). Har bir model uchun bir vaqtning o‘zida 3 ta so‘rovga ega bo‘lgan aylanma robinli semafor hech qanday bekor qilinmagan holda cheklangan edi, bu chegara ortida yuqoriroq parallel trafikni ketma-ketlashtirdi. `>= 1` uchun tasdiqlangan, `<= 32` uchun qisqich. | | `OMNIROUTE_AGENTIC_STALL_FAILOVER` | `false` | `open-sse/services/combo/agenticStallFailover.ts` | Ro‘yxatdan o‘tish: `1` (yoki `true`) ga sozlang, shuning uchun `finish: stop` + rivoyati + nol asbob qo‘ng‘iroqlari bilan asbob-natija navbatiga javob beradigan birlashgan a’zo keyingi maqsadga (prioritet-loop strategiyalari, davra-robin va mahkamlangan seanslar) o‘tib ketmaydi. Hech bir maqsad yaxshiroq natija bermasa, xatolik emas, toʻxtab qolgan javob qaytariladi va na provayderdan, na model blokirovkasidan haq olinmaydi. Oqimli burilishlar mijozdan hukm hal qilinmaguncha ushlab turiladi. Javoblar API `input` shaklidagi so‘rovlar tasniflanmaydi. Standart OFF. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | To‘g‘ridan-to‘g‘ri bitta modelli so‘rovlar uchun OmniRoute mahalliy kontekst-oyna/maks-kirish-token tekshiruvini o‘tkazib yuboradigan xavfli kirish. Yuqori oqim provayderlari hali ham o'zlarining haqiqiy chegaralarini qo'llashmoqda; tezkor siqish va modelning o'z chiqish token qopqog'i faol qoladi. Samarali ustunlik Feature Flags DB override > muhit o'zgaruvchisi > default; qayta ishga tushirish talab qilinmaydi. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(o'rnatilmagan)_ | `open-sse/services/selfHostedEntry.ts` | Inline YAML `providers:` hujjati (RIC-738, D4). Oʻrnatilganda ( `strategy:` bloki boʻlgan yoki boʻlmagan holda) `/v1/chat/completions` bulutli quvur liniyasi oʻrniga oʻz-oʻzidan birlashtirilgan OpenAI-mos keladigan yozuvga yoʻnaltiriladi. Belgilanmagan (standart): marshrut to‘g‘ridan-to‘g‘ri mavjud bulutli quvur liniyasiga tushadi. `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md` ga qarang. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(o'rnatilmagan)_ | `open-sse/services/selfHostedEntry.ts` | `OMNIROUTE_SELF_HOSTED_PROVIDERS` bilan bir xil `providers:` hujjatiga ega YAML fayliga yoʻl, inline env varʼdan koʻra faylni afzal koʻradigan joylashtirishlar uchun. Ikkalasi ham o'z-o'zidan joylashtirilgan kirishni faollashtiradi. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _( — ochiq marshrut sozlanmadi)_ | `open-sse/services/selfHostedEntry.ts` | Birlashtirilgan mustaqil kirish uchun ixtiyoriy umumiy API kaliti (D5 iskala, har bir kalit kvota tizimi uchun ajratilgan). O'rnatilganda, so'rovlar `Authorization: Bearer ` o'z ichiga olishi kerak. Sozlanmagan: marshrut ochiq, u mahalliy provayderning o‘zini o‘zi boshqaradigan mavjud namunaga mos keladi (loopback/trusted-network deployment). | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(o'rnatilmagan)_ | `open-sse/services/routingStrategies.ts` | Deterministik marshrutlash mexanizmi uchun inline YAML `strategy:` hujjati (M2/RIC-740, D3) — blacklist/whitelist, sovutishni to‘xtatuvchi, xarajat ustuvorligi, kechikishdan xabardor, zaxira zanjiri. `OMNIROUTE_SELF_HOSTED_PROVIDERS` ichiga oʻrnatilgan `strategy:` blokini har bir kalit uchun bekor qiladi. `docs/routing/DETERMINISTIC_ROUTING.md` qarang. | | `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(o'rnatilmagan)_ | `open-sse/services/routingStrategies.ts` | `OMNIROUTE_SELF_HOSTED_STRATEGY` bilan bir xil `strategy:` hujjatiga ega YAML fayliga yoʻl, inline env varʼdan koʻra faylni afzal koʻradigan joylashtirishlar uchun. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(o'rnatilmagan)_ | `open-sse/services/conversationTracker.ts` | Suhbatlar tarixini yig‘ishni to‘xtatish uchun `1` o‘rnating. `resolveConversationId()` SQLite o‘qish yoki xabarlar tarixini tahlil qilishdan oldin kuzatilmagan natijani qaytaradi va mijoz tomonidan taqdim etilgan IDs sessiyasi ham qamrab olinadi. Marshrutlash-sessiyani boshqarish o'zgarmaydi va mavjud yozuvlar o'chirilmaydi. Boshqaruv panelidagi suhbat ko'rinishidan foydalanmaydigan va burilish jadvali o'sishni to'xtatishni xohlaydigan joylashtirishlar uchun. | | `OMNIROUTE_NADIR_API_KEY` | _(o'rnatilmagan)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | `nadir` avtomatik kombinatsiyalangan router strategiyasi uchun API kaliti, kombinatsiyaning shaxsiy `config.nadir.apiKey` sozlanmaganida ishlatiladi. Majburiy emas: kalitsiz qo‘ng‘iroqlar Nodirning anonim darajasiga tushadi, u har bir IP uchun tarif bilan cheklangan va shuning uchun umumiy shlyuz ortida ishlatib bo‘lmaydi. sezgir; kombinatsiyalar turli hisoblardan foydalanganda har bir kombinatsiya maydonini afzal ko'ring. | | `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Nodir qarorining asosiy kelib chiqishi API, kombinatsiyaning o'z `config.nadir.baseUrl` o'rnatilmaganda ishlatiladi. Faqat o'z tarmog'ingiz ichida tezkor rahbarlarni saqlaydigan o'z-o'zidan ishlaydigan Nodir uchun kerak. A orqadagi `/v1` toqat qilinadi va yalang'och. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | Har bir API-kalit USD foydalanish chegaralari uchun haftalik oyna (so'rovni bajarish, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: hafta kalit yetib borishi mumkin bo'lgan yuqoridagi ulanishlar orasida haftalik qayta o'rnatishning eng ertasi bilan tugaydi yoki hech kim ma'lum bo'lmaganda 7 kun davom etadi. `calendar`: mahalliy hafta dushanba soat 00:00 dan keyingi dushanba 00:00 gacha, har bir kalit uchun bir xil. `calendar` ko'plab alohida byudjetli kalitlar tomonidan yuqori oqim hisoblarining bir puli baham ko'rilganda tavsiya etiladi. Yaroqsiz qiymatlar `provider` ga qaytadi. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(jarayon vaqti mintaqasi)_ | `src/lib/usage/apiKeyUsageLimits.ts` | `calendar` haftalik oynasi uchun dushanba 00:00 ni belgilaydigan IANA vaqt mintaqasi (masalan, `Asia/Shanghai`). O‘rnatilmagan yoki noto‘g‘ri: OmniRoute jarayonining vaqt mintaqasi (ko‘pincha sozlanmagan xost yoki konteyner `TZ`, ya’ni konteyner tasvirlarida Muvofiqlashtirilgan universal vaqt). `provider` rejimida e'tiborga olinmaydi. | | `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | Soʻrovda ruxsat etilgan vositalarning standart maksimal soni (OpenAI sukut boʻyicha). Faqat musbat sonlar; o'rnatilmagan yoki noto'g'ri qiymatlar `128` saqlaydi. known/proactive chegarasi bo'lgan provayder (`grok-cli` 200, `nvidia` 1536) hali ham o'zining — chegarasini qo'llaydi, bu faqat standart shiftni siljitadi. Klod formatidagi maqsadlarda standart cheklov yo'q (Messages API da hech qanday); o'rganilgan chegara hali ham amal qiladi. | | `OMNIROUTE_TOOL_OUTPUT_IMAGE_MAX_COUNT` | `16` | `open-sse/translator/request/openai-responses.ts` | Chat tarjimasiga javoblar: har bir soʻrov boʻyicha foydalanuvchi tasviri qismlari sifatida qancha asbob-chiqish tasvirlari (`function_call_output`, `custom_tool_call_output`, role `tool`) qayta yuboriladi. Eng yangilari saqlanadi va har bir kattasi o'zining `tool_call_id` bilan matn to'ldiruvchisiga aylanadi. Faqat musbat sonlar; o'rnatilmagan yoki noto'g'ri qiymatlar `16` saqlaydi. | | `OMNIROUTE_TOOL_OUTPUT_IMAGE_MAX_BYTES` | `20971520` (20 MB) | `open-sse/translator/request/openai-responses.ts` | Xuddi shu tarjimada har bir soʻrov uchun qayta yuborilgan URLs asbob-chiqish tasvirining umumiy hajmi. Byudjetdan o'tgan rasmlar har bir so'rov uchun bitta ogohlantirish bilan eng qadimgi tushiriladi. Faqat musbat sonlar; o'rnatilmagan yoki noto'g'ri qiymatlar `20971520` saqlaydi. | | `OMNIROUTE_RESPONSES_STRICT_TOOL_HISTORY` | `false` | `open-sse/translator/helpers/responsesToolHistory.ts` | Mos kelmaydigan Javoblar vositasi tarixi qanday boshqariladi: qo‘ng‘iroqsiz chiqish, chiqmagan qo‘ng‘iroq, etishmayotgan, haddan tashqari uzun yoki noto‘g‘ri `call_id` yoki noto‘g‘ri tuzilgan tarixiy argumentlar. O'chirilgan, OmniRoute tarixni tuzatadi va uni jo'natadi (etim chiqishlar o'chiriladi, javobsiz qo'ng'iroqlar bo'sh chiqishga ega bo'ladi, identifikatorlar zarb qilinadi yoki qisiladi, noto'g'ri shakllangan argumentlar `{}` bo'ladi). Yoniq, so'rov jo'natishdan oldin `400` oladi; joriy tarix qo'ng'iroq identifikatorlari va yuborilgan JSON argumentlari bilan uzatiladi. `true` yoki `1` ni qabul qiladi; har qanday boshqa qiymat sukut saqlaydi. | | `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(yoqilgan)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai prompt-emulated asbob chaqiruvi: o'rnatilmagan yoki `1`/`true`/`on`/`yes` mahalliy asboblar katalogini taklifga kiritadi; har qanday boshqa qiymat (masalan, `0`) bu in'ektsiyani o'tkazib yuboradi. | --- ## 7. URLs & Cloud Sync | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | `/api/sync/cloud` chaqirish uchun ichki sinxronlash ishlari uchun server tomoni URL. Ilova ommaviy proksilangan bo'lsa ham buni loopback/container URL sifatida saqlang. A2A ko'nikmalari ham undan foydalanadi (qarang: `OMNIROUTE_BASE_URL`) va API kalitini ochiq http URL ga yuborish o'rniga muvaffaqiyatsiz bo'ladi. | | `CLOUD_URL` | _(bo'sh)_ | `src/lib/cloudSync.ts` | Bulutli relay oxirgi nuqtasi URL (premium xususiyat). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | bulutli sinxronlash so'rovlari uchun HTTP vaqt tugashi. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Veb-paketni qurish konfiguratsiyasi | Qurilish vaqti profili (imtiyozli modullarni to'plamdan jismoniy chiqarib tashlash uchun `minimal` ga o'rnatiladi). | | `OMNIROUTE_STANDALONE_DIR` | _.build/ mustaqil chiqish_ | `scripts/build/colocate-standalone.mjs` | Qurilishdan keyingi kolokatsiya bosqichida iste'mol qilinadigan mustaqil chiqish katalogi uchun qurish vaqtini bekor qilish. Ish vaqti sozlamasi emas. | | `OMNIROUTE_DIST_DIR` | `dist/` (repo ildizi) | `scripts/build/prepublish.ts` | Repo ildizi ostidagi `dist/` o'rniga nashr etish bosqichi (`prepublish.ts`) katalog uchun Build-time override CLI to'plamini yozadi. Qurilishdan oldin katalog o'chiriladi. Ish vaqti sozlamasi emas. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(bo'sh)_ | `src/lib/cloudSync.ts` | Cloud Sync javoblarining HMAC-SHA256 imzosini tekshirish uchun foydalaniladigan umumiy sir. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Cloud Sync so‘nggi nuqtasiga mahalliy hisob ma’lumotlarini qayta yozishga ruxsat berish uchun `true` -ni sozlang. Standart `false`. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Hech qanday mahalliy sir sozlanmagan boʻlsa (#13679) imzosiz Cloud Sync javobini rad qilish uchun `true` ni sozlang. Mavjud imzo har doim — tekshiriladi va `OMNIROUTE_CLOUD_SYNC_SECRET` oʻrnatilmaganda — bu bayroqdan qatʼiy nazar rad etiladi. Standart v3.9 da kuchga kiradi. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | v3.8.5 bir bosqichli "hamma narsani import qilish" xatti-harakatiga foydalanuvchi tasdiqlamasdan qaytish uchun `true` ni sozlang. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, asboblar paneli, sinxronlash | OAuth redirect_uri, asboblar panelidagi havolalar va yaratilgan ommaviy URLs uchun ommaviy URL. OAuth qayta qo‘ng‘iroqlari yoki yaratilgan brauzer havolalari kanonik teskari proksi xostdan foydalanishi kerak bo‘lganda, buni barqaror umumiy URL ga o‘rnating. | | `NEXT_PUBLIC_CLOUD_URL` | _(bo'sh)_ | Mijoz tomoni | `CLOUD_URL` mijoz tomoni oynasi. | | `NEXT_PUBLIC_APP_URL` | _(o'rnatilmagan)_ | `src/shared/services/cloudSyncScheduler.ts` | `NEXT_PUBLIC_BASE_URL` uchun eski zaxira. | | `NEXT_PUBLIC_PORT` | _(o‘rnatilmagan — `PORT` ga qaytadi)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Kelib chiqishi ma'lum bo'lmaganda URLs ko'rsatish uchun mijoz tomoni zaxira porti (SSR/tests); `PORT` oldin o'qing. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(o'rnatilmagan)_ | Ommaviy manba hal qiluvchi, tasvir URLs | Ommaviy URL yaratish va asboblar panelidan tashqari brauzer manbasini tekshirish uchun eng ustuvor brauzer OmniRoute manbasi. Buni OpenWebUI yoki boshqa o‘rni ichki URL orqali OmniRoute yetganda o‘rnating, lekin foydalanuvchi brauzeri LAN, tunnel yoki ommaviy manbadan yaratilgan mediani olishi kerak. Do** emas** `/v1` o'z ichiga oladi. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(o'rnatilmagan)_ | `open-sse/config/providerPluginManifestUrl.ts` | Mutlaq provayder plagini manifest URL yordamchi mijozlarga e'lon qilinadi. Belgilanmagan bo'lsa, OmniRoute so'rov kelib chiqishi yoki HOST/PORT. dan `/api/v1/provider-plugin-manifest` oladi | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Provayder plaginining manifest URL HOST/PORT dan so‘rov kelib chiqishisiz olishda foydalaniladigan protokol. Hech qanday aniq `OMNIROUTE_PROVIDER_MANIFEST_URL` sozlanmagan bo‘lsa, TLS-to‘xtatuvchi umumiy proksi-server orqasida `https` -ni o‘rnating. | | `OMNIROUTE_TRUST_PROXY` | _(o'rnatilmagan)_ | `src/server/origin/publicOrigin.ts` | Yo‘naltirilgan umumiy manba sarlavhalari uchun ixtiyoriy ishonch rejimi. Sozlanmagan = xavfsizlik qarorlari uchun `Forwarded` / `X-Forwarded-*` ga ishonmang. `true` / `loopback` faqat token muhri bo'lgan proksi-serverdan yuborilgan host/proto ishonadi. `private` / `lan` shaxsiy LAN proksi-peerlariga ham ishonadi, `API_PORT` ko'prigiga bunday tengdoshning `X-Forwarded-For` saqlab turishga imkon beradi va LOCAL_ONLY marshrutlari bunday proksi-server hisobot beradigan xususiy tarmoq mijozini qabul qilishga imkon beradi (hech qachon Cloudflare-tunnel so'rovi, faqat qayta ishlash zanjiri yoki faqat loopback-faqat CLI-token). Ishlab chiqarishda aniq `NEXT_PUBLIC_BASE_URL` afzal ko'ring. | | `KIE_CALLBACK_URL` | _(o'rnatilmagan)_ | `open-sse/utils/kieTask.ts` | Asinxron kie.ai ishlari uchun ochiq qo'ng'iroq URL. `OMNIROUTE_KIE_CALLBACK_URL` va `OMNIROUTE_PUBLIC_URL` dan oldin eng yuqori ustuvor bekor qilish. | | `OMNIROUTE_KIE_CALLBACK_URL` | _(o'rnatilmagan)_ | `open-sse/utils/kieTask.ts` | `KIE_CALLBACK_URL` ning muqobil imlosi. Asosiy o'zgaruvchi sozlanmagan bo'lsa, orqaga tushadi. | | `OMNIROUTE_PUBLIC_URL` | _(o'rnatilmagan)_ | `open-sse/utils/kieTask.ts` | Ommaviy manba URLs asinx qayta qo'ng'iroqlarini yaratish uchun ishlatiladi. kie.ai qo'ng'iroqlari uchun eng past ustuvorlik; boshqa relelar uchun umumiy ommaviy URL sifatida ham foydalaniladi. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Foydalanish sahifasi tomonidan foydalaniladigan CrofAI kvotasini qidirish so'nggi nuqtasi. O'rni / sinov moslamalari uchun bekor qilish. | | `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | ClinePass Foydalanish sahifasi tomonidan ishlatiladigan 5 soatlik / haftalik / oylik kvotaning so'nggi nuqtasi. O'rni / sinov moslamalari uchun bekor qilish. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Rasmiy API kaliti bilan tasdiqlangan OpenCode Go foydalanish oxirgi nuqtasi Foydalanish sahifasi tomonidan foydalaniladi. O'rni / sinov moslamalari uchun bekor qilish. | | `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | Mijoz yubormagan opencode-go/zen yuqori oqim so'rovlarida OpenCode CLI identifikator sarlavhalarini (User-Agent, x-opencode-client/project, request/session UUIDs) sintez qiling, shuning uchun Cloudflare on VPS egress ularni qabul qiladi (#6210/#5997). #10571 dan beri sukut bo'yicha yoqilgan; `false`/`0`/`no`/`off` bilan voz keching. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | Standart User-Agent `OPENCODE_SYNTHESIZE_CLI_HEADERS` yoqilgan va har bir provayder uchun `_USER_AGENT` bekor qilish o‘rnatilmaganda ishlatiladi. Faqat ochiq kod ijrochilari uchun qo'llaniladi. Yuqori oqim eshiklarining kalitsiz so'rovida, `opencode/= 1.17>` ga ega bo'lmagan konfiguratsiya qilingan qiymat rad etish o'rniga ushbu standartga almashtiriladi. | | `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (yoqilgan) | `open-sse/utils/opencodeHeaders.ts` | Mijoz ilovasi atributlari sarlavhalarini (`x-session-id`, `x-title`, `http-referer`) yuqoridagi provayderlarga yoʻnaltiring, shuning uchun roʻyxatdagi jabduqlar ichida boshlangan soʻrov router orqali oʻz identifikatorini saqlab qoladi (bularda OpenRouter nashriyot darvozalari kaliti). `0`/`false`/`no`/`off` registry/operator identifikatorini saqlaydi va mijoz tomonidan taqdim etilgan qiymatlarni pasaytiradi. Operator tomonidan sozlangan maxsus sarlavhalar har doim mijoz qiymatlaridan ustun keladi. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` yoqilganda sintezlangan `x-opencode-client` sarlavhasi qiymati. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` yoqilganda sintezlangan `x-opencode-project` sarlavhasi qiymati. | | `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(o'rnatilmagan)_ | `open-sse/config/providerErrorRules.ts` | Yuqori oqimdagi nosozliklari egress IP tomonidan chelaklangan samarali provayderlar to'plami (har bir 429 ta IP ulanishini baham ko'radi). Sozlamani bekor qilish standart standart `opencode,opencode-go,opencode-cli` foydalanadi; `none`/`off`/`false`/`0` kaskadni butunlay o'chiradi; vergul bilan ajratilgan ro'yxat to'plamni almashtiradi. To'langan rejalar hisobdan yuqoriga ko'tariladi va uni xavfsiz o'chirib qo'yishi mumkin (#9611). | | `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(o'rnatilmagan)_ | `open-sse/config/providerErrorRules.ts` | Kvota-rad etish chiqish aylanish doirasi. Unset 429-da hovuz a'zosini faqat yuqoridagi IP-paqirli oila uchun ajratadi; `all` bu yozishni har bir provayderga uzatadi, shuning uchun a'zo orqali qabul qilingan tarif chegarasi keyingi tanlovni boshqa joyda amalga oshiradi. `all` dan boshqa har qanday qiymat e'tiborga olinmaydi. `PROXY_SKIP_RECENTLY_FAILED` kerak (sukut bo'yicha yoqilgan). Doʻkon (provayder, manzil) emas, balki chiqish manzili bilan belgilanadi, shuning uchun kengaytirilgan 429 ta park har bir provayder uchun muddat tugaguniga qadar (5 daqiqa, ikki baravar koʻpayib, 15 ga) aʼzo boʻladi. Har bir javob natijasini o'qing, shuning uchun o'zgartirish qayta ishga tushirilmasdan amal qiladi. | | `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(o'rnatilmagan)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Kalitsiz OpenCode so'rovlari (oqimli bayroq va asboblar ro'yxati) tanasini sozlashni to'xtatish uchun `off` ni o'rnating. Sarlavhalar hali ham qo'llaniladi. Har bir so'rovni o'qing, shuning uchun o'zgartirish darhol kuchga kiradi. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(o'rnatilmagan)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Vergul bilan ajratilgan asbob nomlari, bu model uchun hali hech narsa kuzatilmagan bo'lsa, kalitsiz OpenCode so'rovida e'lon qilinadi. Bo'sh tushadi, modelga qo'ng'iroq qilmaslik kerakligi aytiladi. Ko'pi bilan 32 ta yozuv, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; noto'g'ri yozuvlar e'tiborga olinmaydi. | | `OPENCODE_FREE_TIER_CREDENTIAL` | `public` | `open-sse/executors/opencodeFreeTierContract.ts` | Hisob maʼlumotlari ochiq yoʻlakda (`https://opencode.ai/inference/v1`) yuboriladi. 2026-10-21 dan boshlab bu chiziq haqiqiy API kalitiga 403 `Model access is disabled` javob beradi va uning o‘rniga anonim literalga xizmat qiladi. `key` operatorning API kalitini saqlaydi, `none`/`off` hech qanday hisob ma'lumotlari sarlavhasini yubormaydi, boshqa har qanday literal tashuvchi belgisi sifatida yuboriladi. Har bir so'rov uchun o'qing. | | `OPENCODE_FREE_TIER_RELAY_URL` | sozlanmagan | `src/lib/opencodeFreeRelay.ts` | Darvozali bepul OpenCode so'rovlari uchun Bun o'rni asosiy URL. O'rnatilganda, bu so'rovlar OpenCode CLI tizimi so'rovi va asboblar to'plamini olib yuradi va o'rni (`scripts/ops/opencode-free-relay.ts`) orqali yuboriladi, chunki yuqori oqim Bun HTTP bo'lmagan mijozlarga 429 ga javob beradi. Loopback URLs server bilan `bun` PATH yoqilganda ishga tushiriladi; URL yo'l e'tiborga olinmaydi. Oddiy `http://` faqat loopback xostlar uchun qabul qilinadi (`localhost`, `127.0.0.0/8`, `::1`); har qanday boshqa xost `https://` foydalanishi kerak, aks holda so'rovlar aniq xato bilan bajarilmaydi. Faqat chat yakunlari. Har bir so'rov uchun o'qing. | | `OPENCODE_FREE_RELAY_BUN` | `bun` on PATH | `src/lib/opencodeFreeRelay.ts` | Bun binary releyni ishga tushirish uchun ishlatiladi. | | `OPENCODE_FREE_RELAY_SCRIPT` | paket ildizi ostida `scripts/ops/opencode-free-relay.ts` | `src/lib/opencodeFreeRelay.ts` | Rele skriptining yo'li. Standart o'rnatilgan paket ildizidan, keyin esa ishchi katalogdan hal qilinadi. | | `OPENCODE_FREE_RELAY_HOST` | `127.0.0.1` | `scripts/ops/opencode-free-relay.ts` | Relay tinglash xostingi. | | `OPENCODE_FREE_RELAY_PORT` | `20199` | `scripts/ops/opencode-free-relay.ts` | Relay tinglash porti. | | `OPENCODE_FREE_RELAY_UPSTREAM` | `https://opencode.ai` | `scripts/ops/opencode-free-relay.ts` | O'rnimizni oldinga yo'naltiring. `https://` boʻlishi kerak (`http://` faqat orqaga qaytish testi uchun); o'rni boshqacha boshlashdan bosh tortadi. | | `OPENCODE_FREE_RELAY_TOKEN` | sozlanmagan | `scripts/ops/opencode-free-relay.ts`, `open-sse/executors/opencodeRelay.ts` | Umumiy sir. OmniRoute uni `x-opencode-relay-auth` da yuboradi; estafeta usiz 401 ga javob beradi. Majburiy: orqaga qaytmaydigan `OPENCODE_FREE_RELAY_HOST` bilan o'rni usiz ishga tushirishni rad etadi. | | `OPENCODE_FREE_RELAY_PROXY_ALLOWLIST` | sozlanmagan | `scripts/ops/opencode-free-relay.ts` | Vergul bilan ajratilgan `host` yoki `host:port` chiqish proksi-serverlari qo'ng'iroq qiluvchilardan qaytarilmaydigan rele qabul qiladi (`x-opencode-relay-proxy`); boshqa har qanday proksi-server javoblari 403. Qayta bog'lanishda e'tiborga olinmaydi. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | Ollama Cloud sozlamalari URL kvotani o'chirish uchun ishlatiladi. O'rni / sinov moslamalari uchun bekor qilish. | | `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Ollama Cloud hujjatlashtirilgan yuqori oqim balansining oxirgi nuqtasi (`GET https://ollama.com/api/balance`, `Authorization: Bearer `). Modul yuklanganda bir marta o'qing. Ulanish API kalitiga ega bo'lsa, birinchi navbatda Ollama Cloud kvotasi uchun ishlatiladi; sozlamalar-sahifadagi cookie-fayllarni qirg'ichdan o'tkazgich zaxira sifatida qoladi. O'rni / sinov moslamalari uchun bekor qilish. | | `OLLAMA_USAGE_COOKIE` | _(o'rnatilmagan)_ | `open-sse/services/usage.ts` | Ollama Cloud `__Secure-session` cookie fayli sozlamalar sahifasi kvotasidan qirqish uchun ishlatiladi. sezgir; bir nechta hisoblar sozlanganda, har bir ulanish uchun Dashboard maydonini afzal ko'ring. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(o'rnatilmagan)_ | `open-sse/services/usage.ts` | Alternativ Ollama Cloud `__Secure-session` cookie env var. sezgir; bir nechta hisoblar sozlanganda, har bir ulanish uchun Dashboard maydonini afzal ko'ring. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(o'rnatilmagan)_ | `open-sse/services/usage.ts` | Muqobil Ollama Cloud `__Secure-session` cookie env var qisqaroq taxalluslardan oldin ishlatiladi. sezgir; bir nechta hisoblar sozlanganda, har bir ulanish uchun Dashboard maydonini afzal ko'ring. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | CodeWhisperer (AWS Kiro) foydalanish chegaralari oxirgi nuqtasi. O'rni / sinov moslamalari uchun bekor qilish. | > [!IMPORTANT] > Teskari proksi-server (nginx, Caddy) orqasida joylashtirganda, OAuth qayta qo'ng'iroqlari yoki yaratilgan umumiy havolalar ushbu xost nomidan foydalanishi kerak bo'lganda, `NEXT_PUBLIC_BASE_URL` barqaror umumiy URL ga (masalan, `https://omniroute.example.com`) o'rnating. Busiz OAuth qayta qo'ng'iroqlari muvaffaqiyatsiz bo'lishi mumkin, chunki redirect_uri mos kelmaydi va yaratilgan umumiy havolalar konteynerning ichki manbasini ko'rsatishi mumkin. > > Serverdan serverga ishlash uchun `BASE_URL` ichki loopback/container URL sifatida saqlang. Hisob ma'lumotlariga ega ichki o'z-o'zini olish uchun brauzer `Origin` yoki umumiy xost nomidan foydalanmang. > > Autentifikatsiya qilingan asboblar panelidagi yozuvlar statik umumiy URL bazasini talab qilmaydi: asboblar paneli seansga bog'langan CSRF tokeni bilan bir xil kelib chiqishi xavfli so'rovlarni yuboradi. OmniRoute hali ham boshqaruv panelidan tashqari brauzer integratsiyalari uchun umumiy manba tekshiruvini markazlashtiradi: birinchi navbatda ochiq ochiq URL env varslariga ishoniladi; `OMNIROUTE_TRUST_PROXY` yoqilmasa va bevosita proksi-server ishonchli deb belgilanmagan bo'lsa, raw `Forwarded` / `X-Forwarded-*` sarlavhalari e'tiborga olinmaydi. Bir xil asl asboblar paneli so'rovlarini tuzatish uchun CORS sozlamalaridan foydalanmang; CORS faqat oʻzaro kelib chiqqan brauzer mijozlari uchun. --- ## 8. Chiquvchi proksi Yuqori oqim LLM provayderi qo'ng'iroqlarni chiqish nazorati, geo-marshrutlash yoki IP maskalash uchun HTTP yoki SOCKS5 proksi-server orqali yo'naltiring. `OMNIROUTE_UPSTREAM_HTTP2_ENABLED` sukut bo'yicha `true`. Undici dispetcherlariga `open-sse/utils/proxyDispatcher.ts` va `open-sse/utils/proxyFetch.ts` dagi HTTP/1.1 majburlash uchun uni `false`, `0`, `no` yoki `off` ga sozlang: to‘g‘ridan-to‘g‘ri chiqish, HTTP(S)/SOCKS proksi-serverlari, o‘rni va ularning yangi rozetkaga urinishlari. Bu TLS sertifikati tekshiruvi, proksi-server autentifikatsiyasi, ulanish cheklovlari va tirik qolish sozlamalarini saqlaydi. Uni o'zgartirgandan so'ng OmniRoute qayta ishga tushiring, chunki ishga tushirish vaqtida dispetcherlar keshlanadi va relay agentlari yaratiladi. Kalit wreq TLS barmoq izlarini yoki provayderga tegishli transportlarni nazorat qilmaydi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------------------- | ----------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Yuqori oqim qo‘ng‘iroqlari uchun SOCKS5 proksi-agentini yoqing. `false` bilan rad etish. | | `OMNIROUTE_GZIP_REQUEST_BODIES` | `true` | `open-sse/executors/base/gzipRequestBody.ts` | Rasmiy `api.anthropic.com` ga yuborilgan so'rovning asosiy qismini Gzip (4096 + belgilar, faqat to'g'ridan-to'g'ri ulanishlar; proksi-server orqasiga o'tkazib yuborilgan, TLS taqlid yoki `NODE_EXTRA_CA_CERTS`). Anthropic faqat gzipni qabul qiladi. Rad etilgan kodlash (415, antropik bo'lmagan 400/403 yoki JSON-parse 400) bir marta siqilmagan holda qayta yuboriladi va manba bir soat davomida siqilmagan holda qoladi. `0`, `false`, `off` yoki `no` bilan rad etish. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Mijoz tomoni | Mijoz tomonidan SOCKS5 mavjudligi haqida xabardorlik. | | `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Birlamchi funksiya bayrogʻi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda gʻalaba qozonadi). Proksi-serverlar va har bir hisob aylanmasi endigina muvaffaqiyatsizlikka uchragan a'zoga qayta xizmat ko'rsatishni to'xtatadi ( TCP tekshiruvi rad etilgan yoki u orqali 429) har bir takrorlashda ikki baravar ko'payadigan muddat davomida, maksimal chegaragacha. `false` oddiy tanlovni tiklaydi. | | `SELECTOR_CONTROL_ALLOWLIST` | _(o'rnatilmagan)_ | `src/lib/proxySubscription/selectorGuard.ts` | Loopbackdan tashqari mahalliy yadroli selektor-nazorat maqsadlari uchun ruxsat-roʻyxat (comma/space ajratilgan xostlar yoki IPs, `*` LAN/private ochadi, lekin hech qachon metadata/link-local ochmaydi). Sukut bo'yicha http/https orqali orqaga qaytishga ruxsat beriladi. O'rnatilgan va bo'sh bo'lmaganda asboblar panelidagi DB qiymati ushbu o'zgaruvchi ustidan g'alaba qozonadi. | | `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | Har bir takrorlashda ikki baravar oshirilgan 429 ta o'rnatilgan vaqtning asosiy davri (ms). Ishga tushganda bir marta o'qing. `1000..3600000` bilan chegaralangan; diapazondan tashqarida yoki o'qib bo'lmaydigan holatlar ogohlantirish bilan standart holatga qaytadi. | | `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 ning qopqog'i (ms). Ishga tushganda bir marta o'qing. `1000..3600000` bilan chegaralangan; diapazondan tashqarida yoki o'qib bo'lmaydigan holatlar ogohlantirish bilan standart holatga qaytadi. Qopqoq taglik tagida bo'lganda, u standart holatga qaytadi. Qopqoqni tushirish ham chiziqni unutishni qisqartiradi: yozuvlar muddati tugagandan keyin `2 x max` tozalaydi. | | `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | Ro‘yxatdan o‘tish funksiyasi belgisi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda g‘alaba qozonadi). Kvotasi chiqish manzili bo'yicha chegirmali provayderlar uchun yaqinda rad etilgan a'zoning kuzatilgan chiqish manzilini baham ko'rgan hovuz a'zosini sog'lom a'zolardan sal pastroqqa baholang. Faqat buyurtma, hech qachon chiqarib tashlanmaydi. O'qigan rad etish signalini ishlab chiqaradigan `PROXY_SKIP_RECENTLY_FAILED` kerak. | | `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | Har bir hovuz aʼzosi uchun takroriy `proxy.set_aside` webhook ogohlantirishlarini cheklash oynasini (ms) cheklaydi, shuning uchun rad etishlar soni bitta hodisani yuboradi. Har bir emissiya haqida o'qing. `1000..3600000` bilan chegaralangan; diapazondan tashqarida yoki o'qilmagan holda sukut bo'yicha qaytariladi. | | `HTTP_PROXY` | _(o'rnatilmagan)_ | Node.js standarti | yuqori oqim qo'ng'iroqlari uchun HTTP proksi-server. | | `HTTPS_PROXY` | _(o'rnatilmagan)_ | Node.js standarti | yuqori oqim qo'ng'iroqlari uchun HTTPS proksi-server. | | `ALL_PROXY` | _(o'rnatilmagan)_ | Node.js standarti | Universal proksi-server ( `socks5://` ni qo'llab-quvvatlaydi). | | `OMNIROUTE_PROXY_ECHO_URL` | _(o'rnatilmagan)_ | `src/lib/proxyEchoTarget.ts` | Proksi chiqish problari tomonidan ishlatiladigan echo-IP nishonini bitta URL ga mahkamlaydi. Oʻrnatilmagan, zond `api64.ipify.org` keyin `api4.ipify.org` sinab koʻradi, shuning uchun IPv4-only tunnellari oʻlganligi haqida xabar berilmaydi (#9694). | | `NO_PROXY` | _(o'rnatilmagan)_ | Node.js standarti | Proksi-serverni chetlab o'tish uchun vergul bilan ajratilgan hostnames/IPs. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Keshlangan HTTP/SOCKS proksi-dispetcheriga maksimal bir vaqtda rozetkalar. Codex `/v1/responses` kabi uzoq muddatli SSE oqimlari bir nechta so‘rovlar bir xil hisob darajasidagi proksi-serverni ulashsa, bir nechta ulanishga muhtoj. `256` dan yuqori qiymatlar cheklanadi. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | SOCKS5 qo'l siqish (ulanish) ms. Yagona turar-joy shlyuzi xostiga yuqori parallellik (masalan, bir vaqtda 100 ta soʻrov) — urilganda uni koʻtaring, proksi-serverga kirish mumkin boʻlsa ham, haqiqiy qoʻl siqish toʻyingan hovuz ostida 10 soniyadan oshishi mumkin, aks holda bu notoʻgʻri `[Proxy Fast-Fail] Proxy unreachable` sifatida namoyon boʻladi. `120000` bilan chegaralangan. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | Qachon `false` (standart), tayinlangan proksi-server hal etilmagan so'rov bo'ladi** rad etildi (muvaffaqiyatsiz yopildi)** to'g'ridan-to'g'ri ulanishga qaytish o'rniga — haqiqiy IP oqishini oldini oladi. Eski DIRECT zaxirasini tiklash uchun `true` o'rnating. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | Wreq-js yordamida TLS barmoq izini soxtalash (Chrome 124 ni taqlid qiladi). Hisoblagichlar JA3/JA4 blokirovkasi. | | `TLS_FINGERPRINT_PROVIDERS` | _(o'rnatilmagan)_ | `open-sse/utils/proxyFetch.ts` | Yangi proksilangan TLS marshrutlash (`open-sse/utils/proxyFetch.ts`) uchun vergul bilan ajratilgan provayderning ruxsat etilgan roʻyxati. Direct TLS o'rnatilmaganda o'zining eski xatti-harakatlarini saqlab qoladi; faqat ushbu provayderlar Chrome-124 barmoq izi ko'prigi orqali yo'naltiriladi. Groq (`api.groq.com`) ruxsat etilgan roʻyxat oʻrnatilmagan boʻlsa ham chiqarib tashlanadi, chunki Chrome JA3 Cloudflare 1010 ni ishga tushiradi, mahalliy undici esa API yetadi. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Claude Turniket Playwright brauzeri kontekstiga HTTPS sertifikati xatolarini e'tiborsiz qoldirishga ruxsat bering. | ### Ssenariylar | Ssenariy | Konfiguratsiya | | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **SOCKS5 SSH tunnel orqali** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` | | **Korporativ HTTP proksi** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` | | **Barmoq iziga qarshi** | `ENABLE_TLS_FINGERPRINT=true` — `wreq-js` kerak (shu jumladan) | | **Chiqish nazorati ostida / to'g'ridan-to'g'ri kirish yo'q** | `PROXY_FAIL_OPEN=false` qoldiring (standart). Soʻrovlar toʻgʻridan-toʻgʻri sizib chiqish oʻrniga proksi-server mavjud boʻlmasa, muvaffaqiyatsiz boʻladi. | | **Legacy / dev — to'g'ridan-to'g'ri qaytarib olishga imkon beradi** | `PROXY_FAIL_OPEN=true`. Qattiqlashuvdan oldingi xatti-harakatni tiklaydi: proksi-server ravshanligi muvaffaqiyatsiz bo'lganda to'g'ridan-to'g'ri ulanish ishlatiladi. | > **Eslatma (NVIDIA validation bypass — #3226):** NVIDIA ning API kalitini tekshirish so‘nggi nuqtasi global proxy/TLS-patched fetch (undici dispetcher → 504) orqali yo‘naltirilganda to‘xtab qoladi. `src/lib/providers/validation.ts::directHttpsRequest()` ataylab `safeOutboundFetch({ bypassProxyPatch: true })` yordamida bitta tekshirish chaqiruvi uchun proksi-yamoqni chetlab o'tadi. Bu hujjatlashtirilgan, ko'lamli istisno — qiladi** emas** chat/usage chiqishiga ta’sir qiladi. Aylanma yo'l `tests/unit/proxy-bypass-scope-guard-3226.test.ts` tomonidan qamrovlangan. --- ## 9. CLI Tool Integration OmniRoute qanday qilib CLI sidecars (Claude Code, Codex va boshqalar)ni topishi va ishga tushirishini boshqaradi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | --------------------------------- | ------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = qidiruv tizimi PATH; `manual` = faqat aniq yo'llardan foydalanadi. | | `CLI_EXTRA_PATHS` | _(o'rnatilmagan)_ | `src/shared/services/cliRuntime.ts` | CLI ikkilik kashfiyoti uchun qo'shimcha PATH yozuvlari (ko'p nuqta bilan ajratilgan). | | `CLI_CONFIG_HOME` | _(o'rnatilmagan)_ | `src/shared/services/cliRuntime.ts` | CLI konfiguratsiyasini o'qish uchun uy katalogini bekor qilish (`~/.claude`, `~/.codex`). Mutlaq va jarayon ichida bo'lishi kerak home —** yoki** , konteynerda, bog'lovchi o'rnatilgan yo'l ( `/host-home` shunday ishlaydi). Boshqa hamma narsa uy direktsiyasiga qaytadi. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | OmniRoute CLI konfiguratsiya fayllarini yozishga ruxsat bering (tokenni yangilash, seans ma'lumotlari). Har bir CLI konfiguratsiyasi yozishni aniq "yozish o'chirilgan" xatosi bilan muvaffaqiyatsiz qilish uchun `false` ga sozlang. | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Claude CLI binaryga moslashtirilgan yo'l. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Codex CLI binaryga moslashtirilgan yo'l. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Droid CLI binariga moslashtirilgan yo'l. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | OpenClaw CLI binaryga moslashtirilgan yo'l. | | `CLI_CURSOR_BIN` | `agent`, keyin `cursor` | `src/shared/services/cliRuntime.ts` | Ikkilik Cursor agentiga moslashtirilgan yo'l. Busiz, aniqlash avval `agent` sinab ko'radi va `cursor` ga qaytadi. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Cline CLI binaryga moslashtirilgan yo'l. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | 5dive CLI binariga moslashtirilgan yo'l. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | 5dive tizimining holati dir (ildizga tegishli auth profillari); 5dive-ning o'z STATE_DIR sukutini aks ettiradi. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Davom etish CLI binariga moslashtirilgan yoʻl. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Qoder CLI binaryga moslashtirilgan yo'l. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Qwen Code CLI binariga moslashtirilgan yo'l. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Aider CLI binariga moslashtirilgan yo'l. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Goose CLI binariga moslashtirilgan yo'l. | | `CLI_WHYCODES_BIN` | `whycodes` | `src/shared/services/cliRuntime.ts` | WhyCodes CLI ikkilik faylga moslashtirilgan yo'l. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Faqat Google Gemini CLI ikkilik — server tomonidagi detection/health tekshiruvlariga moslashtirilgan yo‘l; `omniroute run gemini` `gemini` faylini PATH tizimidan hal qiladi. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Kilo Code CLI binariga moslashtirilgan yo'l. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | OpenCode CLI ikkilik faylga moslashtirilgan yo'l. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Hermes binariga maxsus yo'l. Ikkala katalog yozuvlari (`hermes` va `hermes-agent`) tomonidan ulashilgan. | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | ForgeCode CLI ikkilik faylga moslashtirilgan yo'l. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | jcode CLI ikkilik fayliga moslashtirilgan yo'l. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | DeepSeek TUI ikkilik faylga moslashtirilgan yo'l. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | CodeWhale CLI ikkilik faylga moslashtirilgan yo'l. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Smelt CLI binariga moslashtirilgan yo'l. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Pi (pi-kodlash-agent) binariga moslashtirilgan yo'l. | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Crush CLI ikkilik fayliga moslashtirilgan yoʻl. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Oh My Pi (`omp`) agentining ikkilik fayliga moslashtirilgan yoʻl. | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Letta CLI binariga moslashtirilgan yo'l. | | `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Prime Agent (Prime Intellect) binariga moslashtirilgan yo'l. | | `CLI_WINDSURF_BIN` | _(yo'q)_ | `src/shared/services/cliRuntime.ts` | Windsurf ikkilik faylga moslashtirilgan yo'l. Windsurf kemalari** standart buyruq yo'q** — ikkilik aniqlash bu o'rnatilmaguncha o'chirilgan bo'lib qoladi. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Devin CLI ikkilik faylga moslashtirilgan yoʻl (v3.8.0). Windsurf/Devin ijrochisi tomonidan foydalaniladi. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin Ish stoli `ide_version`. Qayta belgilash `x.y.z` formatidan foydalanishi kerak; noto'g'ri qiymatlar tasdiqlangan standartga qaytadi. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | To'plamli Codeium/language-server `extension_version`, ish stoli `ide_version` farq qiladi. Overrides `x.y.z` foydalanishi kerak; noto'g'ri qiymatlar yig'ilgan standartdan foydalanadi. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Agent ko'prik uchun faqat Devin CLI bekor qilish. Ijrochi faqat yuqori oqimdagi mahalliy ACP stdio ni qabul qiladi. | | `DEVIN_AGENTIC_HOME` | _(majburiy)_ | `open-sse/executors/devin-cli-agentic.ts` | Agent Devin subprocess uchun mutlaq izolyatsiya qilingan uy; qabul qilingan ko'prik yo'llari `/home/bridge` va vazifa-lokal `.sandbox` yo'llari ( Windows, `C:\...\.sandbox\...` bo'yicha). | | `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Ko'prik bolani tugatguncha va aniq taym-autni qaytargunga qadar bir Devin ACP aylanishning maksimal davomiyligi. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Izolyatsiya qilingan ko'prik uchun asosiy Claude Code modeli taxallus. Jonli jabduqlar misolni joriy Devin hisobi tomonidan qaytarilgan model bilan almashtiradi. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Izolyatsiya qilingan ko'prik taxallus Claude Code o'zining Sonnet standartini so'raganda ishlatiladi. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Izolyatsiya qilingan ko'prik taxallus Claude Code o'zining Opus standartini so'raganda ishlatiladi. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Izolyatsiya qilingan ko'prik taxallus Claude Code Haiku standartini so'raganda ishlatiladi. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Izolyatsiya qilingan ko'prik taxalluslari Claude Code subagentlari uchun ishlatiladi. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Devin CLI kvotasi (`GetUserStatus`) tomonidan ishlatiladigan Codeium o‘rindiqlarini boshqarish API uchun ixtiyoriy bekor qilish. | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Mahalliy `auggie` provayderi tomonidan ishlatiladigan Augment (Auggie) CLI binari uchun mutlaq yo‘lni bekor qilish. `CLI_AUGGIE_BIN` ga qaytadi, keyin PATH qidiruvi. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Augment (Auggie) CLI ikkilik yoʻli uchun taxallusni bekor qilish ( `AUGGIE_BIN` dan keyin belgilandi). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Ikkilik mahalliy `zcode` provayderining stdio mijozi uchun ishlatiladi. PATH da `zcode` ga qaytadi. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | JSON massivi (≤ 16 satr) `cliTools` orqali ishga tushirilganda `zcode` ikkilik fayliga uzatilgan qo'shimcha argumentlar. | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | ZCode ilova-server quyi jarayoni uchun ishchi katalog. | | `ZCODE_TRANSPORT` | `app-server` | `open-sse/executors/zcode.ts` | `app-server` (standart) yoki `gateway`.** Eksperimental / qo'llab-quvvatlanmaydi:** `gateway` to‘g‘ridan-to‘g‘ri Z.AI Kodlash rejasi HTTP so‘rovlarini ZCode mijoz protokolini qayta ishlab chiqarish orqali yuboradi (mijozning 0.16.9-ning qo‘l siqish va ish isboti sarlavhasini imzolash) va ZCode yangilanganda uzilishi mumkin. U faqat Individual kodlash rejasi profilini qabul qiladi. | | `ZCODE_PROVIDER_ID` | `account:zai-individual-coding-plan` | `open-sse/executors/zcode.ts` | Model tanlash uchun aniq mahalliy provayder profili. O'rnatilmaganda, `builtin:zai-coding-plan` (Individual kodlash rejasi kalitini ushlab turadigan konfiguratsiya yozuvi) ga qaytayotgan Individual Plan hisob profili ishlatiladi. Ushbu profilni mahkamlash uchun `account:zai-start-plan` kabi aniq ID o'rnating; mahkamlangan profil hech qachon orqaga qaytmaydi. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | ZCode ilova-serverining ish vaqtining ildizi (jamlangan `node` va `zcode-server.cjs` mavjud). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | Tugun bajariladigan fayl ZCode ilova-serverini joylashtirish uchun ishlatiladi. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | Ilova-serverga kirish skripti ZCode serverini joylashtirish uchun ishlatiladi. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | ZCode ilova-serverini ishga tushirishdan oldin ishga tushirish vaqti (ms) muvaffaqiyatsiz deb hisoblanadi. | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | ZCode ilova-server qo'ng'irog'i uchun har bir so'rov uchun RPC kutish vaqti (ms). | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Nazoratchi uni bekor qilishdan oldin bir ZCode aylanishning maksimal davomiyligi (ms). | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | ZCode burilish tugallanishi uchun ovoz berish oralig'i (ms). | | `MINIMAX_CODE_GATEWAY_URL` | `https://agent.minimax.io/mavis/api/v1/llm/v1/messages` | `open-sse/executors/minimaxCodeGateway.ts` | Mahalliy asbob chaqiruvlari bilan javob beradigan boshqariladigan MiniMax shlyuzining so‘nggi nuqtasi. Bu hujjatlashtirilgan umumiy API emas, MiniMax Code ilovasining ichki so‘nggi nuqtasidir: u ogohlantirmasdan o‘zgarishi mumkin va so‘rov transportni nomlaydigan 502 bilan bajarilmaydi. | | `MINIMAX_CODE_GATEWAY_TIMEOUT_MS` | `60000` | `open-sse/executors/minimax-code.ts` | Bitta boshqariladigan shlyuzga urinishning maksimal davomiyligi (ms). Butun qo'ng'iroq (urinish, orqaga qaytish, bitta qayta urinish) taxminan ikki daqiqa davom etadi, shuning uchun kirish imkoni bo'lmagan shlyuz model slotini uzoq vaqt ushlab turolmaydi. | | `MINIMAX_CODE_GATEWAY_RETRIES` | `1` | `open-sse/executors/minimaxCodeGateway.ts` | Vaqtinchalik xatolik (429, 5xx, uzilgan ulanish) bilan bajarilmaydigan boshqariladigan shlyuz chaqiruvining qayta urinishlari. | | `MINIMAX_CODE_CONTEXT_WINDOW` | `1000000` | `open-sse/executors/minimaxCodeGateway.ts` | Boshqariladigan MiniMax shlyuzi so'raladigan kontekst oynasi. MiniMax Code mahsulotining model katalogi MiniMax-M3 va MiniMax-M3.1-Flashning standart oynasi sifatida 512000 ni e'lon qiladi va ikkinchisi sifatida 1000000 ni taklif qiladi; shlyuz kattaroq oynada javob beradi (2026-10-23 da 1024056 ta kirish tokeni soʻroviga 200 ta javob berilgan). So'rovni qisqartirish — uni 512000 ga o'rnating, bu rejadan kamroq hisoblangan. Boshqa har qanday qiymat e'tiborga olinmaydi, shuning uchun matn terish xatosi modelda mavjud bo'lmagan oynani so'ramaydi. | | `MINIMAX_CODE_MAX_INPUT_TOKENS` | `1000000` | `open-sse/executors/minimaxCodeGateway.ts` | Boshqariladigan MiniMax shlyuziga yuboriladigan bitta so'rovning shipi (kirish tokenlarida). Kattaroq so'rov yuborish o'rniga 413 bilan mahalliy ravishda rad etiladi, chunki shlyuzning rad etilishi modelni zaxiralardan himoya qiladi. Standart shlyuzning kontekst oynasi (1000000); bu qiymat bu shiftni pasaytirishi mumkin, uni hech qachon derazadan ko'tarmang. | | `MINIMAX_CODE_MAX_TOKENS` | `8192` | `open-sse/executors/minimaxCodeGateway.ts` | Boshqariladigan shlyuz javob berishi mumkin bo'lgan tokenlarning maksimal soni. | | `MINIMAX_CODE_AUTH_FILE` | `~/.minimax/auth/prod//mcode-public/auth.json` | `open-sse/executors/minimaxCodeGateway.ts` | Kirish va yangilash tokenini saqlaydigan MiniMax Code autentifikatsiya profilining yoʻli. | | `MINIMAX_CODE_PROFILE_DIR` | `~/.minimax` | `open-sse/executors/minimaxCodeGateway.ts` | Autentlik profiliga ega MiniMax Code profili katalogi. | | `MINIMAX_CODE_AUTH_RECORD` | _(yangi avlod)_ | `open-sse/executors/minimaxCodeGateway.ts` | Bir nechta hisoblar mavjud bo'lganda foydalanish uchun profilning yozuvi. Empty eng yangi avlodni tanlaydi, ya'ni CLI o'zi yangilaydi. | | `MINIMAX_CODE_REGION` | `en` | `open-sse/executors/minimaxCodeGateway.ts` | MiniMax hisobining hududi. U tokenni yangilaydigan hisobning so'nggi nuqtasini va hisob ma'lumotlari o'qiladigan profil katalogini belgilaydi. | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | Hermes Agent uy katalogi, bu erda Hermes CLI konfiguratsiyasi OmniRoute reads/writes. Windows (`%LOCALAPPDATA%\hermes`) da Hermes PowerShell o'rnatuvchi to'plamlari env var ga mos keladi. | | `WHYCODES_HOME` | `~/.whycodes` | `src/lib/cli-helper/config-generator/whycodesHome.ts` | WhyCodes misol ildizi bu yerda OmniRoute reads/writes `config.toml`. Xuddi shu env var WhyCodes o'qiydi; sukut bo'yicha `~/.whycodes` (`%USERPROFILE%\.whycodes` bo'yicha Windows). | ### CLI Profilni avtomatik sinxronlash Bu xususiyat bayroqlari qo'shiladi va sukut bo'yicha o'chiriladi. Ularni CLI Code boshqaruv panelidan ham almashtirish mumkin. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------- | -------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Provayder modeli sinxronlangandan so'ng, jonli katalogdan `~/.codex/*.config.toml` profil fayllarini avtomatik ravishda qayta yozadi. `CLI_ALLOW_CONFIG_WRITES` talab qiladi; active/default Codex konfiguratsiyasi, auth, Codex-lb sozlamalari yoki provayder tanlovini hech qachon o'zgartirmaydi. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Provayder modeli sinxronlangandan so'ng, jonli katalogdan `~/.claude/profiles//settings.json` Claude Code profil fayllarini avtomatik ravishda qayta yozadi. `CLI_ALLOW_CONFIG_WRITES` talab qiladi; active/default Claude konfiguratsiyasi, auth yoki provayder tanlovini hech qachon o'zgartirmang. | ### Docker misol ```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` faqat yo'l xost — tomonidan bog'langan bo'lsa, uni `~/.codex:/host-home/.codex:rw` kabi moslamalar bilan birlashtirganda kuchga kiradi ( `docker-compose.yml` dagi `host` profiliga qarang). Konteyner foydalanuvchisining uyi ichida bo‘lmagan yo‘l ham, bog‘lash moslamasi ham e’tibordan chetda qolmaydi, chunki konteyner qayta yaratilganda u yerga yozish bekor qilinadi. Rasm `USER node` sifatida ishlaydi, shuning uchun o'rnatilmagan `/root`** emas** haqiqiy bekor qilish. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------------------- | ------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(avtomatik)_ | `src/shared/utils/containerEnv.ts` | Konteynerni aniqlashni majburiy yoqish (`1`/`true`) yoki o'chirish (`0`/`false`). Faqat avtomatik aniqlash o'tkazib yuborilgan ish vaqtlarida kerak bo'ladi. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | Baribir CLI-tool konfiguratsiyasini o'rnatilmagan konteyner yo'liga yozishga ruxsat bering. CLI ekvivalenti `--allow-container-write`. | | `DOCKER_UPDATE_TRIGGER_FILE` | sozlanmagan | `src/lib/system/autoUpdate.ts` | Faqat Docker tasviri: asboblar paneli** Hozir yangilash** ushbu faylga JSON so'rovini yozadi ( `DATA_DIR` ichida bo'lishi kerak) xost tomonidagi kuzatuvchi uchun konteynerni tortib olish va qayta yaratish. [Docker qo'llanmasiga](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker) qarang. | ### CLI Ikkilik (`omniroute`) yordamchilari Bu oʻzgaruvchilar `omniroute` CLI binarining oʻz xatti-harakatini sozlaydi (yuqoridagi yonboshchani aniqlash emas). | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(tizim)_ | `bin/cli/i18n.mjs` | CLI chiqish tilini majburlash. BCP-47 lokali (masalan `en`, `pt-BR`). Tizim mahalliy parametrlarini (LC_ALL, LC_MESSAGES) bekor qiladi. | | `OMNIROUTE_SHOW_LOG` | _(o'rnatilmagan)_ | `bin/cli/runtime/processSupervisor.mjs` | stdout/stderr serverini nazorat rejimida terminalga yo'naltirish uchun `1` ga o'rnating. `omniroute serve` dagi `--log` bayrog'iga teng. | | `OMNIROUTE_CLI_TOKEN` | _(o'rnatilmagan)_ | `bin/cli/api.mjs` | Mashina authi tokeni `x-omniroute-cli-token` sarlavhasi sifatida kiritilgan. 8.12-topshiriqda avtomatik yaratilgan. | | `GEMINI_CLI_HOME` | _(o'rnatilmagan)_ | `bin/cli/commands/setup-gemini.mjs` | Doimiy Gemini uy ildizi; bir martalik yugurish vaqtincha izolyatsiya qilingan uydan foydalanadi. | | `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Signalli CLI bolani majburan o'ldirishdan oldin millisekundlarda imtiyozli davr. | | `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(o'rnatilmagan)_ | `bin/omniroute.mjs` | Standart foydalanuvchi maʼlumotlar katalogi muhit faylini oʻtkazib yuborish uchun aniq DATA_DIR bilan 1 ga oʻrnating. | | `OMNIROUTE_SYNC_TOKEN` | _(o'rnatilmagan)_ | `bin/cli/commands/sync.mjs` | `omniroute sync bundle` uchun sinxronlash tokeni (`GET /api/sync/bundle` API kalitini emas, faqat sinxronlash tokenini qabul qiladi). `--token` ga teng. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | CLI → server so‘rovlari uchun urinish boshiga HTTP kutish vaqti (ms). | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | Vaqt tugashi haqida ogohlantirishni chop etishdan oldin CLI server sog'lig'ining so'nggi nuqtasini kutishning maksimal vaqti (ms). Sekin sovuq boshlash uchun foydalidir (masalan, Windows). `--ready-timeout` orqali ham sozlash mumkin. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | CLI buyruqlari paytida stderr-ga retry/backoff diagnostikasini chop etish uchun `1` ga sozlang. | | `OMNIROUTE_PLUGIN_PATH` | _(o'rnatilmagan)_ | `bin/cli/plugins.mjs` | CLI plaginlarini topish uchun maxsus katalog (`omniroute-cmd-*` paketlari). Sozlanmasa, birlamchi `~/.omniroute/plugins/`. Faqat CLI — u `OMNIROUTE_PLUGINS_DIR` bilan ko'rsatilgan server tomonidagi plagin skaneriga hech qachon etib bormaydi (2-bo'lim). | | `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(o'rnatilmagan)_ | `bin/omniroute.mjs` | Har qanday boʻsh boʻlmagan qiymatga oʻrnatilganda yangilanish tekshiruvlarini bostirish: jarayondan chiqishda CLI bildirishnomasi va asboblar panelidagi “yangilanish mavjud” banneri (`GET /api/system/version` keyin npm, GitHub va yangiliklarni qidirishni oʻtkazib yuboradi). CLI bildirishnomasi CI, jim rejimda va matndan tashqari chiqishda ham o'chiq qoladi. | | `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(hosil)_ | `bin/cli/commands/doctor.mjs` | Jonlilik URL probed by `omniroute doctor`. Dasturiy `livenessUrl` opsiyasi ustunlik qiladi; aks holda bu qiymat so'zma-so'z ishlatiladi. Belgilanmagan bo‘lsa, CLI mahalliy asboblar panelining `/api/health/degradation` so‘nggi nuqtasini oladi. | | `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | CLI provayder buyruqlari tomonidan foydalaniladigan provayder katalogi yoʻli. Dasturiy `catalogPath` opsiyasi ustunlik qiladi. Mutlaq yo'llar avvalgidek qo'llaniladi; nisbiy yo'llar loyiha ildizidan hal qilinadi. Sozlanmasa, CLI provayder konstantalari katalogidan foydalanadi, eski `providers.ts` fayli zaxira sifatida. | | `OMNIROUTE_PROVIDER_TEST_MODEL` | _(provayder standarti)_ | `bin/cli/provider-test.mjs` | CLI provayderi ulanish testlari uchun global zaxira modeli. Ustunlik sozlangan ulanish modeli, provayderga xos modelni bekor qilish, bu qiymat, so'ngra provayderning o'rnatilgan sinov modeli. | --- ## 10. Ichki agent va MCP integratsiyalari | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | avtomatik aniqlash | `open-sse/mcp-server/server.ts` | OmniRoute erishish uchun MCP/A2A vositalari uchun aniq URL. Localhost avtomatik aniqlashni bekor qiladi. A2A ko'nikmalari ochiq manzilga, nuqtali umumiy xost nomiga yoki bulutli metama'lumotlar xostiga oddiy http bo'lsa yoki hisob ma'lumotlariga ega bo'lsa, ushbu URL (yoki u qaytib kelgan `BASE_URL` ) ga API kalitini yuborish o'rniga muvaffaqiyatsiz bo'ladi: qayta tiklash uchun https, yoki http dan, konteyner yoki xizmat nomi yoki shaxsiy manzildan foydalaning. | | `OMNIROUTE_API_KEY` | _(o'rnatilmagan)_ | MCP/A2A modullari | ichki MCP asbob qo'ng'iroqlari uchun API kaliti. A2A ko'nikmalari uni faqat API kaliti bo'lmagan qo'ng'iroq qiluvchi uchun yuboradi (boshqaruv paneli sessiyasi); kaliti bo'lgan qo'ng'iroq qiluvchi o'zi bilan ishlaydi. | | `OMNIROUTE_API_KEY_ID` | _(o'rnatilmagan)_ | `open-sse/mcp-server/audit.ts` | MCP audit jurnali atributi uchun ID kaliti. | | `ROUTER_API_KEY` | _(o'rnatilmagan)_ | Meros | `OMNIROUTE_API_KEY` uchun eski taxallus. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Kundalik tozalash qatorni o'chirishdan oldin mahalliy ma'lumotlar bazasida saqlanadigan A2A vazifalari tarixi. Belgilanmagan, raqamli bo'lmagan yoki `<= 0` `30` ga qaytadi. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | A2A xotirasi-hits kuzatuvchanlik xususiyati uchun o'ldirish-switch. Vazifa uchun xotirani eslab qolish qidiruvini butunlay o'tkazib yuborish uchun `0` ga sozlang; boshqa har qanday qiymat (jumladan, o'rnatilmagan) uni yoqilgan holda saqlaydi. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | offline/local Issue Agent yozib olingan uchlik yakuniy nuqtasini yoqadi. Mahalliy qayd etilgan triaj ish oqimlari aniq bajarilmasa, o‘chirib qo‘ying. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(o'rnatilmagan)_ | `src/lib/issueAgent/execution.ts` | Bitta muammo agenti qayd etilgan triaj ishga tushirish uchun vaqt tugashi (ms). Ichki maksimal darajaga mahkamlangan; sozlanmagan yoki noto'g'ri bo'lsa, o'rnatilgan standartga qaytadi. | | `OMNIROUTE_CONTEXT` | _(faol kontekst)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | `omniroute` buyruqlari uchun CLI masofaviy rejim context/profile ; mahalliy kontekstlar do'konidagi faol kontekstni bekor qiladi. `--context ` ga teng. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | CLI kontekst hisob ma'lumotlari uchun ixtiyoriy `keytar` OS-keychain backendni o'chirib qo'ying. Yoqilganda, hisobga olish ma'lumotlari `config.json` rejimida qoladi `0600` va CLI bir martalik qayta tiklash ogohlantirishini chiqaradi; ataylab headless/container operatsiyasi uchun mo'ljallangan. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | MCP asbob qoʻngʻiroqlarida koʻlamga asoslangan kirish boshqaruvini tatbiq eting. | | `OMNIROUTE_MCP_SCOPES` | _(barchasi)_ | `open-sse/mcp-server/server.ts` | Vergul bilan ajratilgan doiralar: `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 vositasini ro'yxatdan o'tkazing. Faqat `1` uni ro'yxatdan o'tkazadi; boshqa narsa uni tark etadi. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Manifestni ketma-ketlashtirishdan oldin MCP vositasi tavsiflarini siqib chiqaring. Qiymatlarni yoqish: `1`, `true`, `on`. | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Siqish algorithm/profile. Qiymatlarni o'chirish: `0`, `false`, `off`. | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | MCP-serverning ichki boshqaruvi uchun byudjetni (ms) bekor qilish (sog'liq, chidamlilik, kombinatsiyalar, kvotalar, foydalanish). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Provayderda (`route_request`, `web_search`, `web_fetch`) kutayotgan MCP hops uchun byudjetni (ms) bekor qiling. | | `OMNIROUTE_MCP_SESSION_IDLE_MS` | `300000` | `open-sse/mcp-server/httpTransport.ts` | Boʻsh TTL (ms) supurishdan oldin boʻsh MCP oqimli seansni oʻradi. Ochiq oqim yoki parvozdagi so'rov bilan sessiya hech qachon o'rganilmaydi. Belgilanmagan, butun son yoki ijobiy bo'lmagan qiymatlar standart holatga qaytadi. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Xotirada keshlangan mahalliy korpus indekslarining maksimal soni (LRU, indekslangan ildiz katalogiga bittadan). Minimal `1` ga mahkamlangan. | | `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Model katalogini sinxronlash oralig'i soatlarda. | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Provayder stavkasi chegarasi va kvota so'rovi oralig'i. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Ommaviy sinxronlashda ketma-ket OAuth kvota olishlari orasidagi bo'shliq (ms); OAuth ulanishlari yuqori oqimni yorib yubormaslik uchun birma-bir olinadi. `0` rad etadi (bir vaqtning o'zida). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Har bir so'rov bo'yicha preflight/monitor yo'lida ketma-ket yuqori oqim kvotalari o'rtasidagi minimal interval (ms); bo'shliqlar bir vaqtning o'zida tarmoq qo'ng'iroqlari bir IP shunchalik ko'p hisoblar yuqori oqimni yorib yubormaydi. Codex (`/wham/usage`), DeepSeek, Bailian (ikkalasini olish saytlari), OpenCode va Crof kvota oluvchilarga (#6009, #6911) ulangan. Umumiy `usage.ts::getUsageForProvider` jo'natish yo'li (github/glm/minimax/nanogpt/xai/etc.) hali qamrab olinmagan — alohida kuzatilgan. Kesh zarbalari ta'sirlanmagan. `0` o'chiradi; qisqichli `0..60000`. | | `OMNIROUTE_QUOTA_FETCH_JITTER_MS` | `120` | `open-sse/services/quotaFetchThrottle.ts` | Har bir rezervlangan yuqori oqim kvotasini olishda tanlab olingan qoʻshimcha har bir soʻrov boʻyicha tasodifiy interval (ms). Standart 120; qisqichli `0..60000`; `0` faqat jitterni olib tashlaydi. To'liq gaz kelebeğini o'chirish uchun `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS=0` o'rnating. Jitter yuqori oqimdagi taqiqlarning oldini olishga kafolat bermaydi. | | `CODEX_QUOTA_FETCH_TIMEOUT_MS` | `8000` | `open-sse/services/codexQuotaFetcher.ts` | Bitta Codex kvotasi (`chatgpt.com/backend-api/wham/usage`) uchun vaqt tugashi (ms). Oldindan parvoz so'rovni yuborishdan oldin ushbu yuklanishni kutadi. Vaqt tugashi yoki tashish xatosidan so'ng, oxirgi 15 daqiqadagi oxirgi surat, agar uning oynasi tugamasa yoki qayta o'rnatilmasa, qayta ishlatiladi; hech kim bo'lmasa, kvota noma'lum, shuning uchun bu so'rov uchun to'langan kredit hisobi o'tkazib yuboriladi va hech qanday sovutish davom etmaydi. `2147483647` gacha bo'lgan musbat sonni qabul qiladi; boshqa har qanday qiymat asl qiymatiga qaytadi. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Haqiqiy foydalanish hodisasidan keyin provayder chegaralarini yangilashdan oldin kechikish (ms), yuqori oqim kvotasiga iste'molni qayd qilish API vaqt beradi. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | avtomatik aniqlash | `open-sse/services/adobeFireflyBrowserLogin.ts` | Interaktiv Adobe Firefly tizimiga kirish va ekrandan tashqari yangilash uchun ishlatiladigan Chrome yoki Edge bajariladigan tizimga mutlaq yo'l. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | yoqilgan | `open-sse/services/adobeFireflySession.ts` | Hisobga oid Chrome CDP seanslari bilan IMS va brauzer xavfi holatini yangilab turadi. Brauzerni yangilashni o'chirish uchun `0` ga sozlang. | | `ADOBE_FIREFLY_SESSION_DISK` | yoqilgan | `open-sse/services/adobeFireflySession.ts` | Jarayonni qayta ishga tushirishda `DATA_DIR` ostida tuzatilgan Adobe seanslarini davom ettiradi. Seanslarni faqat xotirada saqlash uchun `0` ga sozlang. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly taqdimotlarini yaratish orasidagi millisekundlarda minimal interval; `0` intervalni o'chirib qo'yadi. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Har uchinchi muvaffaqiyatli Adobe taqdimotidan keyin millisekundlarda qo'shimcha sokin davr. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Vaqtinchalik Adobe 408 javoblaridan keyin millisekundlarda bazaviy orqaga qaytish; ko'pi bilan beshta urinish bo'ylab yuborish oralig'i bilan birlashtiriladi. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Barcha fon xizmatlarini o'chirib qo'ying: kvotani yangilash, provayder cheklovlari bilan sinxronlash, ulanishni tiklash, hisob ma'lumotlari holati, cloud/model/free-proxy/proxy-health sinxronlash, saqlashni tozalash, rejalashtirilgan VACUUM va so'rovni qayta yuklash sozlamalari. CI/test uchun foydalidir; uzoq davom etgan o'rnatishda ulanishlar avtomatik tiklanmaydi va ma'lumotlar bazasi o'sishda davom etadi. | | `OMNIROUTE_HEADLESS` | _(o'rnatilmagan)_ | `src/lib/system/headless.ts` | Faqat proksi-dvigatel yuklash: ixtiyoriy quyi tizimlarni o'tkazib yuboradi, `/dashboard` → 404. `omniroute serve --headless` bilan bir xil. [HEADLESS.md](../guides/HEADLESS.md) qarang. | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(o'rnatilmagan)_ | `src/lib/config/runtimeSettings.ts` | Avtomatlashtirilgan sinovni aniqlash ostida fon vazifalarini majburlash. Sinov evristikini bekor qilish uchun `1` sozlang. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Byudjetni tiklashni tekshirish kadansi (ms). Qavat `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Proaktiv ulanishning sovishini tiklash kadansi (ms): vaqtinchalik `rate_limited_until` muddati tugagan, soʻrovning faol yoʻlidan tashqarida boʻlgan ulanishlarni qayta tasdiqlaydi. Qavat `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Proaktiv ulanish-sovutish vaqtini tiklash rejalashtiruvchisini o'chiring ( `getProviderCredentials` -da dangasa tiklash hali ham amal qiladi). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Keshni tozalash kadansi (ms). Qavat `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _belgilangan_ (o'chirilgan) | `open-sse/services/reasoningTokenBuffer.ts` | Fikrlash modelidagi chiqish byudjetlari uchun kirish qavati: `[256, floor)` -da qo'ng'iroq qiluvchi `max_tokens` polga ko'tariladi (model chiqish qopqog'i bilan qoplangan). Sozlanmagan = mijoz budjetlari hech qachon kattalashtirilmaydi (#9507). | | `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _belgilangan_ (o'chirilgan) | `open-sse/services/learnedReasoningEffortCaps.ts` | Ro‘yxatdan o‘tish, vergul bilan ajratilgan provayder identifikatorlari (yoki `*`): `reasoning_effort` 400/422 qabul qilingan to‘plamga nom bermasa, bir daraja pastroq (hech qachon `low` dan past bo‘lmaslik) bir marta qayta urinib ko‘ring va tekshiruvga javob berilsa (#14895) bu darajani o‘rganing. | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Har bir yoqilgan jurnalni eksport qilish manzilini o'chiradigan qo'ng'iroqlar jurnalini eksport qilish vazifasi uchun Cron ifodasi (UTC). Tanalarni eksport qilishda `*/5 * * * *` ustunlik bering. | | `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | Har bir maqsadli bola devor soati millisekundlarda kutish vaqti tugaydi. Vaqt tugashi nosozlikni qayd qiladi va tan olinmagan to'plamni oldinga siljitmasdan jarayonni o'ldiradi. Invalid/non-positive/non-integer qiymatlari standart qiymatdan foydalanadi. | | `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | Tugun eksporti V8 MB eski boʻshliq chegarasi (jami RSS emas). Sukut boʻyicha tanalar bilan qoplangan 500 qatorli artefaktlar uchun boʻsh joy qoldiradi; katta hajmdagi partiyalar hali ham bolalar to'plamini charchatishi mumkin. Muvaffaqiyatsizlik partiya hajmini kamaytirish yoki bu chegarani oshirishni maslahat beradi. Invalid/non-positive/non-integer qiymatlari standart qiymatdan foydalanadi. Bun eksporti ushbu cheklovsiz jarayonga qaytadi. | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Qayta yuklash konfiguratsiyasi uchun so'rov oralig'i (ms). `1000` dan past bo'lsa, rad etiladi. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(yoqilgan)_ | `src/lib/db/apiKeys.ts` | Redis tomonidan qo'llab-quvvatlanadigan API kaliti autentifikatsiya keshini chetlab o'tish uchun `1` o'rnating ( DB o'qishni majburlaydi). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Qattiq imzo tekshiruvisiz foydalanuvchi tomonidan boshqariladigan RTK loyihasi filtri qoidalariga ishoning. | | `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | `lite.maxToolLength` sozlanmagan boʻlsa, Lite proaktiv vosita-natijasini kesish uchun belgilar boshi. Diapazon 256–1000000. Boshqaruv paneli sozlamalari bu env ustidan g'alaba qozonadi. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Maksimal bir vaqtda sinxron RTK/Caveman ishchilari; ortiqcha ishlar kuting FIFO. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Har bir ish uchun millisekundlarda vaqt tugashi. Vaqt o'tgan ishchilar to'xtatiladi va so'rov o'zgarishsiz ochilmaydi. | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Ishlatilmagan siqish ishchisi tugatilishidan oldin bo'sh turish muddati millisekundlarda. | | `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Har bir siqish ishchisi uchun MB ichida V8 eski avlod uyasi qopqog'i, barcha rejimlar (qavat `128`). Undan oshib ketgan ish shlyuz to'plamini o'stirish o'rniga ochilmaydi (siqilmaydi). | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 stacked-pipeline per-dvigatel-to'xtatuvchining asosiy kaliti.** Ro‘yxatdan o‘tish (birlamchi o‘chirilgan)** — yoqilgan bo'lsa, so'rovlar bo'ylab qayta-qayta tashlaydigan vosita sovutish uchun o'tkazib yuboriladi (muvaffaqiyatsiz ochiladi); off = baytga o'xshash eski xatti-harakatlar. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Dvigatelning to'xtatuvchisi ochilishidan oldin o'zaro so'rovning ketma-ket nosozliklari. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Yarim ochiq zonddan oldin ochilgan vosita milisoniyalar o'tkazib yuboriladi. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR izlash-qayta aloqa rampasi: saqlangan blokning har bir oldingi qayta tiklanishi uning samarali `minChars` chiziqli ravishda oshiradi (tez-tez olinadigan kontent kamroq siqiladi; `>=3` qidiruvi = hech qachon siqilmaydi). `1` rampani o'chiradi (faqat ostonada ikkilik o'tish). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | CCR bardoshli bloklar do'koni (#9061). Xotiradagi do'konni SQLite bilan qo'llab-quvvatlaydi, shuning uchun blok LRU evakuatsiya, TTL, qayta ishga tushirish yoki boshqa instansiyaga qo'nishda omon qoladi. Bloklarni faqat xotirada saqlash uchun `false` o'rnating. 512 KB dan ortiq bloklar va bulutli ish vaqtlari faqat xotirada qoladi. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 foydalanish kuzatilgan prefiks muzlatish master switch.** Ro‘yxatdan o‘tish (birlamchi o‘chirilgan)** — yoqilganda, tizim so'rovi `>=` kuzatilsa, pol barqaror keshlanadigan prefiks sifatida ko'rib chiqiladi va hatto provayderlar uchun statik kesh evristik o'tkazib yuborilgan (faqat _preserves_ muzlatib qo'yiladi, hech qachon mutatsiyaga uchramaydi) siqilishdan saqlanadi. | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Tizimning kuzatuvlari muzlatilgan barqaror prefiks sifatida ko'rib chiqilishidan oldin so'raydi. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | Dastlabki sozlashdan so'ng yuklash skripti orqali `true` o'rnating. O'rnatish ustasining ko'rinishini boshqaradi. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Escape lyuk: so'rov tanasiga Antigravity loyihasi maydonini bekor qilishga ruxsat bering. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Google One AI kredit siyosati: `off` hech qachon kredit kiritmaydi, `retry` mos kvota 429 dan keyin bir marta kiritadi va `always` birinchi so‘rov bo‘yicha kiritadi. | | `OMNIROUTE_ANTIGRAVITY_TIMING_TELEMETRY` | `false` | `open-sse/executors/antigravity/executeAttempt.ts` | Har bir jismoniy jo‘natish vaqti: hisobning bo‘sh turishi, parvoz vaqtidagi so‘rovlar, sarlavhalargacha bo‘lgan vaqt va birinchi mazmunli SSE kontenti. Jurnallarda so'rovlar, hisobga olish ma'lumotlari yoki yuqori oqim URLs yo'q. | | `ANTIGRAVITY_MAX_429_ATTEMPTS` | `2` | `open-sse/services/antigravity429Guard.ts` | 429 qo'ng'iroq qiluvchiga qaytib ketishidan oldin barcha xostlar (1–12) bo'ylab har bir Antigravity (`agy`/`antigravity`) so'rovi uchun yuqori oqim 429s ruxsat etiladi. Uni sarflagan organga qayta jo‘natilganda javob beriladi (2 daqiqa, 30 daqiqaga ikki baravar ko‘paytiriladi yoki yuqoridagi qayta urinish ko‘rsatmasi) va 429 dan keyin chat boshqaruvchisi so‘rovni qayta ishga tushirmaydi. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Yuqori oqim haqiqiy imzolarni rad etganda (debug/antiquated-CLI rejimi) Antigravity soʻrovi tarjimoniga oʻzining qattiq CLI soʻrov-imzosini tekshirishdan oʻtishga ruxsat bering. Nolga teng bo'lmagan qiymat aylanib o'tishni ta'minlaydi. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Mahalliy login importini avtomatik aniqlash uchun Antigravity CLI (agy) token-fayl yo‘lini bekor qiling. | ### OAuth CLI ko'prigi (ichki) | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------- | ------------------ | ------------------------------- | --------------------------------------------- | | `OMNIROUTE_SERVER` | avtomatik aniqlash | `src/lib/oauth/config/index.ts` | CLI↔OmniRoute auth ko'prigi uchun server URL. | | `OMNIROUTE_TOKEN` | _(o'rnatilmagan)_ | `src/lib/oauth/config/index.ts` | CLI ko'prigi uchun avtorizatsiya belgisi. | | `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | CLI bridge seanslari uchun foydalanuvchi ID. | | `SERVER_URL` | _(o'rnatilmagan)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_SERVER` uchun eski taxallus. | | `CLI_TOKEN` | _(o'rnatilmagan)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_TOKEN` uchun eski taxallus. | | `CLI_USER_ID` | _(o'rnatilmagan)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_USER_ID` uchun eski taxallus. | --- ## 11. OAuth Provayder hisob ma'lumotlari ### Passiv Codex tokenini yangilash `OMNIROUTE_TOKEN_REFRESH_PASSIVE_PROVIDERS` `codex` ga o‘rnatilgan bo‘lsa, bu misol sinxronlangan Codex hisob ma’lumotlari iste’molchisiga aylantiriladi, yangilanish belgisini aylantirish egasi emas. Bo'sh yoki o'rnatilmagan standart yangilashning normal harakatini saqlaydi. Vergul bilan ajratilgan qiymatlar qirqilgan va katta-kichik harflarni sezmaydi; `cx` `codex` uchun taxallusdir. Qo'llab-quvvatlanmaydigan provayderlar ishga tushirishni tekshirishda muvaffaqiyatsizlikka uchraydi. Boshqa provayderlar o'zgarishsiz. Mavjud yangilash nuqtalarida namuna ulanishni o'qish keshini chetlab o'tadi va faqat boshqa, muddati tugamagan kirish tokenini qabul qiladi. So‘rov davomida yuqorida rad etilgan tokenlar sinxronizatsiya qaytarilgandan so‘ng yana moslasha olmaydi: so‘rov hisob ma’lumotlari ko‘pi bilan to‘rtta SHA-256 barmoq izini saqlaydi, bu so‘rov bilan bekor qilinadi. Faqat token maydonlari qabul qilinadi, shuning uchun so'rov-mahalliy provayder metama'lumotlari saqlanib qoladi. Qabul qilingan hisob ma'lumotlari saqlanib qolmaydi. Agar almashtirish mavjud bo'lmasa, `refresh_disabled` terminal emas va tokenni yangilash to'xtatuvchisi hisoblanmaydi. Haqiqiy yuqori oqim 401/403 javoblari normal nosozlik hisobini, eksponensial sovutish va mijoz xatolarini saqlaydi; hisobni o'chirish signallari hali ham doimiy ravishda qulflanadi. Manual dashboard/API refresh `409` `refresh_disabled` kodi va faol nusxada yangilash va sinxronlash ko'rsatmasi bilan qaytaradi. Yashirin yangilanishlar (chat, foydalanish, salomatlik tekshiruvlari va import tekshiruvi) bu xatoni yuzaga keltirmaydi; talab bo'yicha foydalanish 401 qayta tiklash qabul qilingan sinxronlashtirilgan token bilan bir marta qayta urinib ko'ring. Codex auth imports taqdim etilgan tokenlarni yangilash-token almashinuvisiz saqlaydi; yangi OAuth loginlari o'zgarmagan. Mavjud proaktiv yangilash yo'lidan tashqarida jo'natishdan oldingi sinxronizatsiya qo'shilmaydi. Aynan bitta aylanma egasini saqlang va kirish tokenlari muddati tugashidan oldin token sinxronizatsiyasini alohida tartibga soling (standart proaktiv yetakchi: besh daqiqa). Ushbu parametr taqsimlangan blokirovka, ma'lumotlar bazasi replikatsiyasi yoki umumiy SQLite tarqatilishi emas. Manba: `open-sse/services/tokenRefresh/passiveCodex.ts`. uchun oʻrnatilgan hisob maʼlumotlari** localhost ishlab chiqish** . Masofaviy joylashtirish uchun har bir provayderning ishlab chiquvchi konsolida o'zingizni ro'yxatdan o'tkazing. | O'zgaruvchan | Provayder | Eslatmalar | | ------------------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_OAUTH_CLIENT_ID` | Claude kodi (Anthropic) | Ommaviy mijoz — hech qanday sir kerak emas. | | `CLAUDE_CODE_REDIRECT_URI` | Claude kodi | Qayta yo'naltirishni bekor qilish URI. Standart: `https://platform.claude.com/oauth/code/callback` | | `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | Ommaviy mijoz. | | `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Mos keladigan `_SECRET` talab qiladi. | | `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — | | `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi kodlash (Moonshot) | Ommaviy mijoz. | | `MUSE_CODE_OAUTH_CLIENT_ID` | Muse kodi (Meta) | Umumiy Muse CLI qurilma oqimi mijoz identifikatori uchun ixtiyoriy bekor qilish. Pishirilgan ommaviy mijozdan foydalanish uchun sozlamani qoldiring. | | `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Mos keladigan `_SECRET` talab qiladi. | | `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — | | `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | Ommaviy mijoz. | | `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | GitHub Enterprise Copilot ning OAuth mijoz identifikatori uchun ixtiyoriy bekor qilish. Sozlanmasa, `GITHUB_OAUTH_CLIENT_ID` umumiy standartiga qaytadi. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | `Copilot-Integration-Id` va `Editor-Plugin-Version` sarlavhalarida yuborilgan GitHub Copilot mijoz integratsiyasi ID uchun ixtiyoriy bekor qilish. Standart `copilot-developer-cli`. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Har bir ulanish uchun hisob ma'lumotlari mavjud bo'lmaganda `open-sse/executors/devin-cli.ts` tomonidan qo'llaniladigan API kalitining zaxira nusxasi. Ixtiyoriy. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Devin CLI ikkilik (`devin`) ga moslashtirilgan yo'l. `open-sse/executors/devin-cli.ts` tomonidan hal qilingan. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | GitLab Duo uchun OAuth mijoz ID. Ilovani `https://gitlab.com/-/profile/applications` manzilida URI `/callback` qayta yo'naltirish va `api, read_user, openid, profile, email` qamrovlari bilan ro'yxatdan o'tkazing. `GITLAB_OAUTH_CLIENT_ID` ga qaytadi. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | GitLab Duo uchun OAuth mijoz siri. Ixtiyoriy — PKCE oqimi sirni talab qilmaydi. `GITLAB_OAUTH_CLIENT_SECRET` ga qaytadi. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | GitLab bazasi URL (o'z-o'zidan joylashtirilgan GitLab) ni bekor qilish. Standart `https://gitlab.com`. `GITLAB_BASE_URL` ga qaytadi. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | `GITLAB_DUO_BASE_URL` uchun eski zaxira. `_DUO_` varianti sozlanmagan bo‘lsa ishlatiladi. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` tomonidan iste'mol qilingan `GITLAB_DUO_OAUTH_CLIENT_ID` uchun eski zaxira. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` tomonidan iste'mol qilingan `GITLAB_DUO_OAUTH_CLIENT_SECRET` uchun eski zaxira. | | `QODER_OAUTH_CLIENT_SECRET` | Qoder | — | | `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Qoder OAuth yoqish uchun sozlang. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | To'g'ridan-to'g'ri API kalitini qaytarish ( OAuth ni chetlab o'tadi). | | `QODER_CLI_WORKSPACE` | Qoder | Qoder CLI uchun ID ish maydoni. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | `QODER_CLI_WORKSPACE` uchun taxallus. | | `QODER_CLI_CONFIG_DIR` | Qoder | Qoder CLI config dir-ni bekor qiling (izolyatsiya qilingan PAT sessiyasi, brauzerga kirishni blokirovka qilishdan qochadi). | | `QODER_CLI_MAX_CONCURRENCY` | Qoder | Maks bir vaqtda qodercli ishga tushirish (chop etish spawns yoki ACP so'rovlar); qo'shimcha so'rovlar navbat FIFO. Sozlamani bekor qilish (birlamchi) = qopqoqsiz. | | `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | Qoder so'rovi 429 `qodercli_busy` + `Retry-After` bilan muvaffaqiyatsiz bo'lgunga qadar qodercli uyasi (faqat qopqoq o'rnatilgan) uchun qancha vaqt kutadi. Standart `120000`. | | `QODER_CLI_TRANSPORT` | Qoder | `print` (standart) har bir so'rov uchun `qodercli --print` hosil qiladi; `acp` har bir PAT uchun bitta doimiy `qodercli --acp` jarayonini saqlaydi. | | `QODER_CLI_ACP_IDLE_TIMEOUT_MS` | Qoder | ACP transport: bu ko'p bo'sh vaqtdan keyin doimiy qodercli jarayonini o'ldirish. Standart `600000`. | | `QODER_CLI_ACP_STARTUP_TIMEOUT_MS` | Qoder | ACP transport: qodercli ACP `initialize` ga javob berish muddati. Standart `60000`. | | `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | ACP transport: ko'p seanslardan so'ng doimiy qodercli jarayonini qayta ishlang. Standart `500`. | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox veb | `/api/chat` da `validated` sifatida yuborish uchun frontend `tk` tokeni. Blackbox token mosligini ta'minlaganda talab qilinadi; aks holda OmniRoute tasodifiy UUID ga qaytadi. #2252 muammosiga qarang. | | `VISION_BRIDGE_BASE_URL` | Vision Bridge panjarasi | Antropik bo'lmagan ko'rish ko'prigi qo'ng'iroqlari uchun OpenAI-mos keladigan URL bazasi. Eski OpenAI URL env yoki api.openai.com uchun standart sozlamalar. OmniRoute ning `/v1` o‘z-o‘zidan aylanishiga yoki OpenAI-mos keladigan so‘nggi nuqtaga (Gemini OpenAI-compat, OpenRouter) ishora qiling. #2232 soni. URL OmniRoute ning o'ziga tegishli `/v1` bo'lsa, tavsiflash quyi so'rovi `x-omniroute-admission-bypass: internal` yuboradi va hal qilingan o'z-o'zidan aylanish hisob ma'lumotlari (mahalliy rejimda `sk_omniroute` sentinel yoki `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350) bilan autentifikatsiya qilinadi, shuning uchun `REQUIRE_API_KEY=true` joylashtirishlari ishlaydi. | | `VISION_BRIDGE_API_KEY` | Vision Bridge panjarasi | yuqoridagi URL uchun API kaliti. Antropik boʻlmagan koʻrish koʻprigi qoʻngʻiroqlari uchun har bir provayder OpenAI / Google env parametrlarini bekor qiladi. Anthropic modellari o'zlarining maxsus Anthropic kalit yo'llarini saqlaydi. #2232 chiqaring. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Vision Bridge panjarasi | "Ishga loyiq nomzod yo'q" marshrutlash natijasi qancha vaqt keshlanadi, ms (standart `30000`). Yaroqsiz yoki manfiy qiymatlar sukut bo'yicha qaytariladi; `0` salbiy keshni o'chiradi. Manba: `src/lib/guardrails/visionBridgeRouter.ts`. | | `OMNIROUTE_IMAGE_NORMALIZATION` | Ko'rish tasvirini normallashtirish | Roʻyxatdan oʻtish ( = oʻchirilmagan, xatti-harakatlar oʻzgarmaydi; `1`/`true`/`on` yoqadi). Yuborishdan oldin chat so‘rovi jismlaridagi har bir inline (base64 data URI / Claude `source.data`) tasvirni normallashtiradi: EXIF orientatsiyasi qo‘llanilgan, RGB (oq rangga tekislangan alfa), uzun chekka `<= 4096` px, jami piksellar `<= ~4M`; o'zgartirishga muhtoj bo'lgan tasvirlar bazaviy JPEG (alfa-free PNGs stay lossless PNG) sifatida qayta kodlanadi, allaqachon mos RGB JPEG/PNG teginmasdan o'tadi. Byudjetlar belgilangan. 400 ta tahlil xatosi yoki nol chiqishi bilan oversized/exotic tasvirlarini rad etuvchi Qwen2-VL-style vision quvurlarini nishonga oladi. Masofaviy http(lar) URLs yuklab olinmaydi; etishmayotgan `sharp` ikkilik yoki dekodlanmagan tasvir tegilmagan (muvaffaqiyatsiz ochiq) orqali o'tadi. Katta rasm oʻlchamini oʻzgartirish soʻrovning kechikishini oshiradi. Manba: `open-sse/utils/visionImageNormalization.ts`. | > [!WARNING] > > 1. [Google Cloud Console → Credentials](https://console.cloud.google.com/apis/credentials) -ga o‘ting 2. OAuth 2.0 Client ID yarating (turi: “Veb ilova”) 3. Serveringizni URL Avtorlashtirilgan qayta yo‘naltirish URI sifatida qo‘shing 4. `.env`-dagi hisob ma’lumotlari qiymatlarini almashtiring. --- ## 12. Provayder foydalanuvchi-agentini bekor qilish Har bir yuqori oqim provayderiga yuborilgan `User-Agent` sarlavhasini bekor qiling. Bu bajaruvchining asosiy klassi tomonidan ish vaqtida dinamik ravishda hal qilinadi: ``` process.env[`${PROVIDER_ID}_USER_AGENT`] ``` > **Manba:** `open-sse/executors/base.ts` → `buildHeaders()` | O'zgaruvchan | Standart qiymat | Qachon yangilash kerak | | -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Anthropic yangi CLI versiyasini chiqarganda | | `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Uchinchi tomon jabduqlar vositasi nomlarini ikkala antropik yo‘lda (native OAuth va CLIProxyAPI) Anthropic ga so‘zma-so‘z yo‘naltirish uchun `1`/`true` ni sozlang. Odatiy bo'lib, ijrochi Klod-kod bo'lmagan asbob nomlariga deterministik tarzda taxallus qo'yadi (Claude kodi mavjud bo'lgan kanonik xaritalash, aks holda PascalCase) va ularni `_toolNameMap` orqali javobda o'zgartiradi, shuning uchun snake_case vositalariga ega jabduqlar barmoq izlari bilan uchinchi tomon mijozlari sifatida rad etilmaydi. Faqat disk raskadrovka. | | `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | OpenAI Codex CLI yangilaganda | | `CODEX_CLIENT_VERSION` | `0.155.0` | To'liq UA qatoridan mustaqil ravishda Codex mijoz versiyasini bekor qiling | | `GROK_CLI_CLIENT_VERSION` | `1.0.41` | Xulosa qilish, model sinxronlash va qurilma kodi OAuth uchun `x-grok-client-version`, shuningdek xulosa chiqarish va model sinxronlash uchun standart Grok CLI User-Agentni bekor qiling. Ixtiyoriy prerelease/build meta-maʼlumotlari bilan SemVer qabul qiladi, atrofdagi boʻshliqlar kesilgandan keyin 128 belgigacha. Belgilanmagan, boʻsh, yaroqsiz yoki qator uzilishini oʻz ichiga olgan qiymatlar joʻnatilgan pindan foydalanadi. Mavjud to'liq xulosa User-Agent bekor qilish ustunlikni saqlab qoladi. | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Reklama qilingan Claude Code versiyasini `CLAUDE_USER_AGENT` dan mustaqil ravishda bekor qiling. Anthropic ushbu qiymat bo'yicha ba'zi modellarni ochadi (#12417). | | `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Claude hisob-kitob blokidagi `cc_version=` ga qo‘shiladigan 3 ta belgidan iborat OmniRoute qo‘shimchasini bekor qiling. `CLAUDE_CODE_CLIENT_VERSION` — pinning bilan birga Bump faqat `version.revision` juftligini reklama qiladigan versiya haqiqiy ikkilik emissiya qilmaydi. | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Reklama qilingan Copilot CLI versiyasini `GITHUB_USER_AGENT` dan mustaqil ravishda bekor qilish | | `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | GitHub Copilot Chat yangilanganda | | `ANTIGRAVITY_CLI_CL` | _(o'rnatilmagan)_ | CLI User-Agentda `cl=` sifatida bildirilgan Antigravity CLI (`agy`) Piper o‘zgarishlar ro‘yxatini bekor qilish. Versiyadan olinmaydi va ommaviy manifestlar tomonidan oshkor etilmaydi; jonli suratga olishdan har bir versiya uchun ekilgan (1.4.4 → `1003595037`). Noma'lum versiyada o'rnatilmagan bo'lsa, boshqa tuzilmaning o'zgarishlar ro'yxatini reklama qilish o'rniga `cl=` qoldiriladi. | | `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Kiro IDE yangilanganda | | `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Kiro ijtimoiy qurilma kodini `clientId` (ommaviy identifikator) bekor qilish | | `KIRO_VERIFY_FULL_CRC` | `false` | Ro‘yxatdan o‘tish: Kiro hodisa oqimida har bir kadr uchun to‘liq xabar CRC tekshiruvi (buzilgan oqimlarni disk raskadrovka) | | `KIRO_CREDIT_PRICE_USD` | `0.02` | har Kiro krediti uchun USD ; `meteringEvent` kreditlarini so'rov bo'yicha aniq narxga aylantiradi | | `KIRO_REQUIRE_CREDITS` | `false` | Hisob-kitob qilinmaganligini qayd etish o‘rniga, kredit hisobi yo‘qligini bildiruvchi Kiro javobi bajarilmaydi | | `QODER_USER_AGENT` | `Qoder-Cli` | Qoder CLI yangilanganda | | `CURSOR_USER_AGENT` | `Cursor/3.3` | Cursor yangilanganda | > [!TIP] > Siz uchun User-Agent bekor qilishni qo'shishingiz mumkin** har qanday** `{PROVIDER_ID}_USER_AGENT` naqshidan foydalangan holda provayder. Ijrochi dinamik ravishda env var nomini tuzadi. --- ## 13. CLI Barmoq izining mosligi Yoqilganda, OmniRoute rasmiy CLI vositalarining imzosiga toʻliq mos kelish uchun HTTP sarlavhalari va JSON tana maydonlarini qayta tartiblaydi. Bu proksi-serveringiz IP saqlab qolgan holda hisob qaydnomasini belgilash xavfini kamaytiradi. **Manba:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts` ### Har bir provayder | O'zgaruvchan | Faollashtirish | Effekt | | ------------------------ | -------------- | -------------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Codex CLI so‘rov imzosini taqlid qiladi | | `CLI_COMPAT_CLAUDE` | `=1` | Mimics Claude Code so'rov imzosi | | `CLI_COMPAT_GITHUB` | `=1` | GitHub Copilot so‘rov imzosini taqlid qiladi | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Antigravity soʻrov imzosini taqlid qiladi | | `CLI_COMPAT_CURSOR` | `=1` | Cursor soʻrov imzosini taqlid qiladi | | `CLI_COMPAT_KIMI_CODING` | `=1` | Mimics Kimi Coding so'rov imzosi | | `CLI_COMPAT_KILOCODE` | `=1` | Mimics Kilo Code so'rov imzosi | | `CLI_COMPAT_CLINE` | `=1` | Cline soʻrov imzosini taqlid qiladi | ### Global | O'zgaruvchan | Faollashtirish | Effekt | | ---------------- | -------------- | ------------------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Barmoq izi mosligini yoqish** hammasi** bir vaqtning o'zida provayderlar. | ### Kimi kodlash CLI identifikatorini bekor qiladi | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------- | ---------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------ | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | OAuth/API qo'ng'iroqlari paytida yuborilgan Kimi CLI versiyasini bekor qiling. | | `KIMI_CODING_DEVICE_ID` | _(qo'lga olingan birlamchi)_ | `src/lib/oauth/providers/kimi-coding.ts` | Mijoz sarlavhalarida qo‘llanilgan Kimi qurilmasi ID bekor qiling. | > [!NOTE] > Bu funksiya User-Agent bekor qilish bilan birga ishlaydi (§12). Barmoq izi tizimi sarlavhalar tartibini va asosiy maydonlarni tartiblashni boshqaradi, User-Agent esa maxsus UA qatorini boshqaradi. Ikkalasini ham mustaqil ravishda yoqish mumkin. --- ## 14. API Asosiy Provayderlar to'g'ridan-to'g'ri autentifikatsiyadan foydalanadigan provayderlar uchun API kalitlari.** Afzal sozlash:** Boshqaruv paneli → Provayderlari → API kalitini qo‘shish. Atrof-muhit o'zgaruvchilari orqali sozlash Docker yoki boshsiz joylashtirish uchun muqobildir. Taniqli naqsh: `{PROVIDER_ID}_API_KEY` | O'zgaruvchan | Provayder | | ------------------ | --------------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + Reader zaxirasi) | | `JINA_API_KEY` | Jina AI ( `JINA_AI_API_KEY` uchun taxallus) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) o'rnatish + chat zaxirasi | | `GOOGLE_API_KEY` | Gemini ( `GEMINI_API_KEY` uchun taxallus) | > [!NOTE] > Groq, xAI, Mistral, Perplexity , Together AI, Fireworks, Cerebras, Cohere, Nebius va Qianfan uchun statik `${PROVIDER}_API_KEY` yozuvlari 3.8.0 versiyasida olib tashlandi DB chunki ish vaqti endi ularni o‘qimaydi — bu provayderlar faqat shifrlangan / `data/provider-credentials.json`. Migratsiya yoʻli uchun ushbu hujjatning pastki qismidagi _Audit: Oʻchirilgan / Oʻlik oʻzgaruvchilar_ boʻlimiga qarang. > [!TIP] > Boshqaruv paneli orqali o'rnatilgan kalitlar SQLite -da shifrlangan holda saqlanadi va atrof-muhit o'zgaruvchilari ustidan ustunlik qiladi. > > **Jina:** `jina-ai/…` o'rnatish, qayta tartiblash, tasniflash, segmentlash va `jina-search` qilish** emas** asboblar panelida `jina-ai` (yoki umumiy `jina-reader`) ulanishi mavjud bo‘lganda klaster env kalitini hisoblang — `getProviderCredentials` birinchi navbatda to‘ldiriladi. `JINA_AI_API_KEY` / `JINA_API_KEY` faqat foydalanish mumkin bo'lgan asboblar panelidagi kalit mavjud bo'lmaganda ishlatiladi. Qo'ng'iroqlar jurnallari env zaxirasini `connection_id=env:JINA_AI_API_KEY` sifatida belgilaydi. Reader kartasi (`jina-reader`, `r.jina.ai`) hech qachon `/v1/embeddings` yoki `/v1/rerank` xizmat qilmaydi. > > **Gemini:** `gemini/gemini-embedding-2` (taxallus `google/gemini-embedding-2`) birinchi navbatda asboblar panelidagi `gemini` ulanishidan foydalanadi. `GEMINI_API_KEY` / `GOOGLE_API_KEY` faqat foydalanish mumkin bo'lgan asboblar panelidagi kalit mavjud bo'lmaganda ishlatiladi. Qo'ng'iroqlar jurnallari env zaxirasini `connection_id=env:GEMINI_API_KEY` sifatida belgilaydi. Native multimodal trafik `x-goog-api-key` dan `:embedContent` / `:batchEmbedContents` — N OpenAI `input` elementlari N vektorga aylanadi. --- ## 15. Vaqt tugashi sozlamalari Barcha qiymatlar mavjud** millisekundlar** . `src/shared/utils/runtimeTimeouts.ts` markazlashtirilgan ruxsat. ### Vaqt tugashi ierarxiyasi ``` 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) ``` | O'zgaruvchan | Standart | Tavsif | | ------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(o'rnatilmagan)_ | Global yorliq — ham `FETCH_TIMEOUT_MS`, ham `STREAM_IDLE_TIMEOUT_MS` standart sozlamalarini bekor qiladi. | | `FETCH_TIMEOUT_MS` | `600000` | Yuqori oqim provayderi qo‘ng‘iroqlari uchun jami HTTP so‘rovining kutish vaqti. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | Bekor qilishdan oldin yuqori oqim baytlar orasidagi maksimal jimlik. Kengaytirilgan fikrlash modellari > 90-larni kamdan-kam pauza qiladi. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Maksimal jami faol SSE oqimining ishlash muddati; hech qachon yuqoridagi baytlarda qayta tiklanmaydi va `REQUEST_TIMEOUT_MS` dan mustaqil. O‘rnatilmagan bo‘lsa, sukut bo‘yicha registrdagi har bir model uchun eng katta `timeoutMs` (1200000, Codex) plyus 60000 chegarasi va uzoqroq byudjetni e’lon qiluvchi maqsad (ulanish `timeoutMs`, keyin har bir model, keyin provayder darajasi, masalan, GLM ning plyus budjeti 300000 so‘m oladi). Ijobiy qiymat - bu e'lon qilingan byudjetlar oshira olmaydigan har bir maqsad uchun qattiq chegara. Har bir maqsad uchun o'chirish uchun `0` ga sozlang. | | `OMNIROUTE_SSE_COMMENTS` | _(o'chirilgan)_ | OmniRoute SSE `:` sharh satrlarini chiqarishi mumkinmi (masalan, `: keepalive` yurak urishi va `x-omniroute-*` metadata treylerlari). Sukut bo'yicha o'chirib qo'yilgan (#10524) chunki qat'iy OpenAI-mos keluvchi mijozlar JSON.har bir SSE qatorini tahlil qiladi va `:` sharhlarida ishdan chiqadi; `data:` yurak urishi ta'sir qilmaydi. Orqaga kirish uchun `on`/`true`/`1`/`yes` ni sozlang. `open-sse/utils/sseHeartbeat.ts` tomonidan foydalaniladi. | | `SSE_COALESCE_MS` | `0` (o'chirilgan) | Ro‘yxatdan o‘tish: Claude mijozlariga yuborilgan ketma-ket Claude `content_block_delta` hodisalarini (bir xil blok indeksi va delta turi) birlashtirib, kamida har N milodiydan keyin tozalang. Yo'qotishsiz; `signature_delta` va chegara hodisalari hech qachon birlashtirilmaydi. Quyida har bir turdagi oʻzgaruvchi belgilanmagan boʻlsa, har bir delta turiga qoʻllaniladi. `open-sse/utils/sseDeltaCoalesce.ts` tomonidan ishlatilgan. | | `SSE_COALESCE_THINKING_MS` | `0` (o'chirilgan) | `thinking_delta` uchun `SSE_COALESCE_MS` ni har bir turdagi bekor qilish. | | `SSE_COALESCE_TEXT_MS` | `0` (o'chirilgan) | `text_delta` uchun `SSE_COALESCE_MS` ni har bir turdagi bekor qilish. | | `SSE_COALESCE_INPUT_JSON_MS` | `0` (o'chirilgan) | `input_json_delta` uchun `SSE_COALESCE_MS` ni har bir turdagi bekor qilish. | | `SSE_FRAME_COALESCE_MS` | `0` (o'chirilgan) | Ro‘yxatdan o‘tish: SSE freymlar to‘plami N ms ichida mijozga bitta yozishga yuboriladi. Birinchi ramka va terminal ramkalar (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) hech qachon kechiktirilmaydi; to'plam yoqilgan bo'lsa, ITL partiya bo'shliqlarini o'lchaydi. `open-sse/utils/sseOutputSink.ts` tomonidan ishlatilgan. | | `SSE_STALL_WATCHDOG` | `timer` | Oqimli javoblar uchun bayt-stall kuzatuvchi ilovasi. `timer` har bir yuqori oqim bo'lagi uchun bir taymerni qayta qurollantirish (to'g'ridan-to'g'ri to'xtash byudjetida olov); `interval` `clamp(budget/4, 1s, 5s)` davri bilan har bir oqim uchun bitta chekni saqlaydi, shuning uchun + byudjet davri ichida to‘xtash joyi yonadi. `open-sse/utils/streamStallWatchdog.ts` tomonidan ishlatilgan. | | `STREAM_READINESS_TIMEOUT_MS` | `80000` | Birinchi non-ping SSE hodisasini olish vaqti keldi. Belgilanganda `REQUEST_TIMEOUT_MS` meros qilib oladi. | | `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | Katta, og'ir asboblar yoki yuqori asosli oqim so'rovlari uchun maksimal moslashtirilgan birinchi hodisaga tayyorlik oynasi. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | `/goal` evristikasi uchun o'chirish tugmasi. `false`/`0`/`off` ni aniqlashni toʻliq oʻchirib qoʻyish uchun sozlang, — tayyorlik vaqtlari va oqimning tiklanishi hech qachon body/headers soʻrovi bilan oshirilmaydi, bu esa mijoz tomonidan boshqariladigan vaqt tugashini kuchaytiradi. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Aniqlangan `/goal` agenti ishga tushishi yoki `x-omniroute-agent-goal` bilan majburiy soʻrovlar uchun birinchi hodisaga maksimal tayyorlik oynasi. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Aniqlangan `/goal` agenti ishga tushishi uchun oqimni avtomatik ravishda erta tiklashni yoqing. Maqsadga oid ulanishni o'chirish uchun `false`/`0`/`off` ni o'rnating. Bu faqat operatorning sukut bo'yicha ADD qayta tiklanishi mumkin — u hech qachon aniq `STREAM_RECOVERY_ENABLED`/DB sozlamalaridan voz kechishni bekor qilmaydi. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | OpenAI SDK ning `responses.stream()` 502 bilan buzadigan nostandart `codex.*` SSE hodisalarini (masalan, `codex.rate_limits`) ajratib oling. Standart ON (#11014). Ularni yo'naltirish uchun `0`/`false`/`no`/`off` ni o'rnating. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(o'rnatilmagan)_ | Codex ilova-server transportiga kirish. mahalliy `codex app-server` yonboshining WebSocket oxirgi nuqtasi (`ws://`/`wss://`). Token bilan birga oʻrnatilganda, Codex soʻrovlari HTTP Responses API oʻrniga JSON-RPC orqali yonboshlagichga yoʻnaltiriladi. Shuningdek, `providerSpecificData.codexAppServerUrl` orqali har bir ulanishni sozlash mumkin. `open-sse/executors/codex/appServerConfig.ts` tomonidan ishlatilgan. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(o'rnatilmagan)_ | Inline capability/bearer tokeni ilova serveriga taqdim etildi. Har bir ulanishni bekor qilish: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(o'rnatilmagan)_ | Ilova-server imkoniyatlari tokenini saqlaydigan faylga yoʻl ( `codex app-server --ws-token-file` dan). `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` o'rnatilmaganda ishlatiladi. Har bir ulanishni bekor qilish: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Ilova-server ishga tushadigan ishchi katalog. Har bir ulanishni bekor qilish: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(o'rnatilmagan)_ | Tasdiqlash siyosati ilova serveriga oʻtdi (masalan `never`, `on-request`). Har bir ulanishni bekor qilish: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(o'rnatilmagan)_ | Sinov muhiti siyosati ilova serveriga oʻtkazildi (masalan `read-only`, `workspace-write`, `danger-full-access`). O'rnatilmaganda ijrochi sukut bo'yicha `workspace-write` (qattiqlashtirilgan; avval `danger-full-access`) ga o'tadi. Har bir ulanishni bekor qilish: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Ilova-serverning o'z tasdiqlash ko'rsatmalarini avtomatik tasdiqlash (xostda command/file/permission bajarilishi). Sukut bo'yicha o'chirilgan — so'rovlari avtomatik ravishda rad etiladi; jabduqlar asboblari qo'ng'iroqlari ta'sir qilmaydi (ular alohida `item/tool/call` o'tish yo'lidan o'tadi). `true`/`1`/`yes` ni qabul qiladi. Har bir ulanishni bekor qilish: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Javob sarlavhalarini olish vaqti. | | `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Oqimli so'rovlar bo'yicha javob sarlavhalarini maksimal kutish (ms). `0` bu qopqoqni o'chiradi; aniq provayder `fetchStartTimeoutCapMs` ustunlik qiladi. | | `OMNIROUTE_CODEX_IMAGE_RESPONSE_START_TIMEOUT_MS` | `600000` (10 daqiqa) | Toʻlangan Codex image-generation/edit POSTs uchun toʻgʻridan-toʻgʻri va HTTP(S)/SOCKS proksi-server orqali birinchi javob-boshlash muddati (ms). Bu so'rovlar noaniq vaqt tugashi yoki tarmoqdagi nosozlikdan keyin hech qachon takrorlanmaydi. Yon o'rni (`vercel`/`deno`/`cloudflare`) ham bir marta urinib ko'radi, lekin o'z `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` muddatini saqlaydi. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | Har bir bevosita proksisiz urinish uchun maksimal javob kutish (ms). Vaqt tugashi yangi rozetkada bir marta takrorlanadi; chegarani o'chirish va oldingi xatti-harakatni saqlab qolish uchun `0` o'rnating. | | `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 daqiqa) | Maqsadli xost private/LAN/loopback (masalan, `localhost`, `host.docker.internal`, `192.168.x.x`) boʻlgan Ollama toʻgʻridan-toʻgʻri urinishlar uchun javob-start qavati (ms). Zamin vazifasini bajaradi: samarali kutish bu qiymatdan kattaroq va `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS`; `0` yoki yaroqsiz qiymat mahalliy qavatni olib tashlaydi. Masofaviy hostlar ta'sir qilmaydi. | | `OMNIROUTE_DIRECT_HEADERS_VOLUME_ADAPTIVE` | `1` | Toʻgʻridan-toʻgʻri javobni boshlash oynasini soʻrovning foydali yuk darajasi boʻyicha koʻtaring: 512 KB dan yuqori jismlar × 2, 2 MB × 3 dan yuqori, 180 soniyada cheklanadi va hech qachon yuqoriroq qavatni tushirmaydi (operator bekor qiladi yoki yuqoridagi local/LAN qavat). Katta kontekstlar kiritish oʻlchamiga mutanosib ravishda oldindan toʻldiradi, fikrlash shiftini yoqish uchun mantiqiy selektori yoʻq, shuning uchun tekis oyna toʻgʻridan-toʻgʻri polda sekin toʻldiriladigan yuqori oqimlarni kesib tashlaydi. Yassi harakatni mahkamlash uchun `0`/`false`/`off` ni o'rnating. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 daqiqa) | Yuqoridagi (#13703) birlashtirilgan javob javob-boshlash vaqti tugashidan keyin yangi soket RETRY urinishi uchun shift (ms). Qo'ng'iroq qiluvchi o'zining oxirgi muddati signalini biriktirgan bo'lsagina qo'llaniladi (hal qilingan ulanish/model/provayder/`FETCH_TIMEOUT_MS` kaskadi); bu signal haqiqiy chegara bo'lib, birinchi navbatda mo'ljallangan yo'lda yonadi, shuning uchun bu unsiz — tekis qopqoq emas, balki saxiy orqa to'xtashdir, qayta urinish birlashtirilgan urinish va 504'd sog'lom sekin TTFB fikrlash modellari sifatida bir xil qisqa `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` oynasidan qayta foydalanildi. Yuqoridagi tekis qavat ostida hech qachon ruxsat etilmaydi; qo'ng'iroq qiluvchi hech qanday muddat signalini taqdim qilmasa, qayta urinish tekis qavatni o'zgarishsiz saqlaydi. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | To'liq javob tanasini olish vaqti. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | TCP ulanishni o'rnatish vaqti tugashi. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Rozetkaning ishlamay qolish muddati. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | TLS barmoq izi proksi (wreq-js) vaqti tugashi. | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Wreq-js TLS-barmoq izi transportining korpusida birinchi baytgacha bo'lgan vaqtni maxsus chegaralaydi; `TLS_CLIENT_TIMEOUT_MS` o'zi to'xtab qolgan jismni ushlay olmaydi, chunki u sarlavhalar kelishi bilanoq hal qilinadi (#12656). Vaqt tugashi wreq o'quvchini bekor qiladi va direct/proxy dispetcheriga qaytadi; `0` qo'riqchini o'chiradi. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | faqat OpenCode ijrochisi va faqat `OPENCODE_RESPONSES_STALL_ROTATION` funksiyasi bayrog‘i yoqilganda (standart o‘chirilgan): oqimli javobning birinchi asosiy baytini kutish vaqtini uning sarlavhalaridan keyin (#13484) chegaralaydi. Javoblar oqimi `response.created` bilan ochiladi, shuning uchun bu oynadan o‘tgan sukunat stend hisoblanadi: hisob soviydi va so‘rov keyingi hisobga bir marta aylanadi; ikkinchi stend tezda ishdan chiqadi. `0` hatto bayroqda ham qo'riqchini o'chiradi. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= o'chirilgan) | Faqat OpenCode ijrochisi: boshqa hisob mavjud bo‘lganda, oqimli Javoblar qo‘ng‘irog‘ida yuqori oqim javob sarlavhalarini kutishni chegaralaydi — navbatda turgan so‘rov kutishni to‘xtatadi va to‘liq sarlavhalar oynasini ushlab turish o‘rniga davom etadi. Faqat oqimli Javob qo'ng'iroqlari ta'sir qiladi (Javoblar oqimi `response.created` bilan ochiladi, shuning uchun jimlik navbat bor, avlod emas); chat yakunlari va oqimsiz qo'ng'iroqlar daxlsiz bo'ladi va oyna faqat samarali boshlash shiftini qisqartiradi, uni hech qachon kengaytirmaydi. Yoqish paytida tavsiya etilgan qiymat: `30000`. `0` o'chiradi. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Faqat OpenCode ijrochisi: yuqorida bog'langan kutish sarlavhalari so'rovda necha marta keyingi hisobga o'tishi mumkin. Oxirgi qolgan hisob har doim to'liq sarlavhalar oynasini saqlaydi. | | `OPENCODE_PARK_AND_RESUME` | `false` | Faqat OpenCode ijrochisi: takroriy oʻtkinchi 429 soniyadan soʻng yurak urishi bilan soʻrovni toʻxtating (yoki yangi hovuz kuchlanish belgisi), soʻngra butun flotni (#13924) oʻchirish oʻrniga 3 tagacha ketma-ket hisobdan iborat bitta cheklovli oyogʻini takrorlang. Sukut bo'yicha o'chirilgan: har 429 ta oldingi kabi keyingi hisobga aylanadi. | | `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | faqat OpenCode ijrochisi: Park-va-resume qayta oʻynatish oyogʻidagi har bir sovutish vaqtiga tayyor hisob proksi-rad etish xotirasi tomonidan ajratilganda, hech narsani takrorlamaslik oʻrniga baribir ularga xizmat koʻrsating (#14851, #14750 ni kuzatish). Sukut bo'yicha o'chirilgan: bu holatda takrorlash oyog'i bo'sh, #14750 oldingi kabi. | | `STREAM_READINESS_STALL_RETRY` | `false` | Faqat striming chat: birinchi yuqoridagi korpus foydali hodisani ishlab chiqarishdan oldin to‘xtab qolsa, bir xil tayyorlik byudjeti va hisob jazosisiz bir xil marshrutlash yo‘li orqali bir cheklangan ikkinchi urinishni amalga oshiring. Sukut boʻyicha oʻchirilgan: toʻxtab qolgan birinchi korpus soʻrovni qayta urinmasdan bajara olmaydi. | | `OPENCODE_POOL_RESELECT` | `false` | faqat OpenCode ijrochisi: atrof-muhit hovuzi kontekstida proksi-serversiz hisob qaydnomasidagi chiqish-paqirli provayderdan 429-dan so'ng, bir xil chiqish manzilini qayta urinib ko'rish o'rniga, keyingi urinish uchun ulanish hovuzidan boshqa a'zoni so'rang. Buyurtmalar, hech qachon istisno qilmaydi: charchagan hovuz hozirgi xatti-harakatni saqlaydi. Sukut bo'yicha o'chirilgan: har 429 ta oldingi kabi keyingi hisobga aylanadi. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(o'rnatilmagan)_ | faqat OpenCode ijrochisi: toʻxtashdan oldin oʻqilgan hovuz-stren markerining yoʻlini bekor qilish (`{since, reason, ttl_s}`, standart `/tmp/opencode-pool-strain.json`, #13924). Yangi marker qayta hisoblanmasdan parklar; yo'q yoki eskirgan portlash hisoblagichiga qaytib tushadi. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | `/v1` bridge so‘rovlari uchun proksi-server uzilish vaqti tugadi. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Firecrawl veb-qidiruv ijrochisini o'z-o'zidan joylashtirilgan misolga qarating (API kaliti ixtiyoriy bulutdan tashqarida). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Firecrawl veb-qidiruv ijrochisi uchun har bir so'rov bo'yicha kutish vaqti. | | `TAVILY_BASE_URL` | _(o'rnatilmagan)_ | Tavily `/usage` kvota oluvchi uchun baza URL (Provayder chegaralari); `api.tavily.com` ga ishora qilganda e'tiborga olinmaydi. Sozlanmagan ulanishning URL bazasiga qaytadi. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Ko'prik uchun server so'rovining umumiy vaqti. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Ko'prik orqali javob sarlavhalarini yuborish vaqti keldi. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Ko'prikning bo'sh turish vaqti. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Raw rozetka vaqti tugashi (0 = o'chirilgan). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Majburiy chiqishdan oldin SIGTERM/SIGINT bo'yicha imtiyozli davr. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | `FETCH_TIMEOUT_MS` oʻrnatilmaganda `src/shared/utils/fetchTimeout.ts` tomonidan qoʻllaniladigan zaxira. | | `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | `src/shared/network/safeOutboundFetch.ts` da `validationRead` va `modelsProbe` oldindan o'rnatish uchun vaqt tugashi (ms). Asboblar panelidagi active/error o'rtasida siljishning oldini olish uchun sekin so'nggi nuqtalar uchun (Cerebras, Cloudflare AI, Groq) ko'taring. Yaroqsiz (< 1000) yoki raqamli bo'lmagan qiymatlar uchun 8000ms ga tushadi. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | `open-sse/utils/proxyFetch.ts` (#9158) da o'rni uchun maxsus qabul qilish vaqti tugashi. Osilgan o'rni client/agent taym-out (~ 30s) oldidan ishlamay qolishi kerak, shuning uchun qo'ng'iroq qiluvchilar umumiy yuqori oqim vaqtining o'rniga o'z o'rni bilan bog'liq nosozlikni ko'radi. `29000` bilan chegaralangan, shuning uchun u har doim birinchi bo'lib yonadi. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | `open-sse/utils/proxyFetch.ts` (#9158) da direct/relay/proxy bir marta qayta urinish yo‘llari uchun umumiy qayta urinish orqaga qaytishi. `0` = darhol qayta urinib ko'ring. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Native wreq-js so'rovi vaqti tugashi (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Mutlaq JS muddati tugashi uchun qulaylik tug'ilgan vaqt autiga qo'shildi. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Native wreq-js so'rovi vaqti tugashi (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Mutlaq JS muddati tugashi uchun qulaylik tug'ilgan vaqt autiga qo'shildi. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (o'chirilgan) | "Sizda o'rnatilgan veb-qidiruv mavjud. Qidiruv natijalaridan foydalanib, savollarga to'g'ridan-to'g'ri javob bering." qo'ng'iroq qiluvchining tizim xabariga (`perplexity-web/protocol.ts`). Sukut bo'yicha o'chirilgan — Perplexity baribir qidiradi va jumla kodlash mijozlari uchun meta-sharh sifatida javoblarga oqib chiqadi. Qayta tiklash uchun `1`/`true`/`yes`/`on` ni o'rnating. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Native wreq-js so'rovi vaqti tugashi (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Mutlaq JS muddati tugashi uchun qulaylik tug'ilgan vaqt autiga qo'shildi. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Native wreq-js so'rovining vaqti tugashi (`notionTlsClient.ts`); `notion-web` uni uzoq avlodlar uchun `180000` so'roviga ko'taradi. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Mutlaq JS muddati tugashi uchun qulaylik tug'ilgan vaqt autiga qo'shildi. | | `OMNIROUTE_BROWSER_POOL` | `on` | Brauzer tomonidan qo'llab-quvvatlanadigan veb-cookie suhbati uchun umumiy Playwright brauzer hovuzi (`browserPool.ts`); o'chirish uchun `off` o'rnating. | | `OBSCURA_BIN` | `auto-detect` | Brauzer hovuzi va Cloudflare Playground ijrochisi (`open-sse/services/obscura.ts`) tomonidan asosiy vosita sifatida foydalaniladigan `obscura` binariga yo'l; o'rnatilmaganda PATH tizimidan avtomatik ravishda aniqlanadi. | | `OBSCURA_CDP_ENDPOINT` | _(o'rnatilmagan)_ | Yumurtlama o'rniga allaqachon ishlayotgan Obscura (`http://host:port`) ga ishora qiling; modul bu jarayonga ega emas (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `random free port` | Olingan `obscura serve` uchun aniq port; o'rnatilmaganda bepul port avtomatik ravishda tanlanadi (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Brauzer tomonidan qo'llab-quvvatlanadigan yo'lga (`browserBackedChat.ts`) veb-cookie chat so'rovini tanlang; yoqish uchun `1`. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Kimi Web (xalqaro kimi.ai Connect-RPC) ijrochisi uchun URL bazasi (`kimi-web.ts`); faqat mirror/proxy so'nggi nuqtalari uchun bekor qilish. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Kimi Web-ijrochisi (`kimi-web.ts`) uchun to'liq suhbatning yakuniy nuqtasi. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(avtomatik aniqlangan)_ | Adobe Firefly interaktiv brauzeriga kirish uchun bajariladigan Chrome/Edge tizimiga yo'l (`adobeFireflyBrowserLogin.ts`); har bir operatsion tizim uchun avtomatik aniqlashni bekor qiladi. | | `OMNIROUTE_STANDALONE_DIR` | _.build/ mustaqil chiqish_ | Qurilishdan keyingi kolokatsiya bosqichi (`scripts/build/colocate-standalone.mjs`) tomonidan iste'mol qilinadigan mustaqil chiqish katalogi uchun qurish vaqtini bekor qilish; ish vaqti emas, balki asboblarni yaratish. | Birlashtirilgan maqsadli urinishlar hal qilingan yuqori oqim soʻrovining kutish vaqti (`FETCH_TIMEOUT_MS`, yoki `REQUEST_TIMEOUT_MS` sukut boʻyicha olib kelishni taʼminlasa) meros qilib oladi. Kombinatsiyani tezroq qaytarish uchun `targetTimeoutMs` kombinatsiyaga, birlashtirilgan standart parametrlarga yoki provayder tomonidan bekor qilishga o'rnating; joriy yuqoridagi vaqt tugashidan yuqori bo'lgan qiymatlar yuqori oqim kutish vaqti bilan chegaralanadi. `comboTimeoutMs` - bu muvaffaqiyatsizlik maqsadlari bo'yicha alohida butun kombinatsiyalangan devor soati byudjeti. Cheksiz iteratsiyani saqlab qolish uchun uni o'rnatmagan holda qoldiring yoki `0` ( `comboPredicates.ts` -da 10 daqiqalik qattiq kodlangan hang-stop hali ham amal qiladi). Ijobiy qiymat kombinatsiya uchun xavfsizlik tarmog'ini almashtiradi. `comboTimeoutMs` `targetTimeoutMs` dan uzoqroq tuting, shuning uchun sekin birinchi nishondan keyin ham muvaffaqiyatsizlikka vaqt bor. ### O'chirish to'xtatuvchisi chegaralari Provayder darajasida o'chirgichni sozlash. Standartlar 500 + ulanish uchun v3.6 dan beri foydalanilgan masshtabli qiymatlarni aks ettiradi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------------------------- | --------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | To'xtatuvchi ishga tushishidan oldin OAuth provayderlari uchun ketma-ket nosozlik chegarasi. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | OAuth provayderi to'xtatuvchisi uchun oynani (ms) tiklash. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | API-kalit provayderlari uchun ketma-ket nosozlik chegarasi. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | API-kalit provayderi to'xtatuvchisi uchun oynani (ms) tiklash. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Mahalliy provayderlar uchun ketma-ket muvaffaqiyatsizlik chegarasi (Ollama, LM Studio, ...). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Mahalliy provayder to'xtatuvchisi uchun oynani (ms) tiklash. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: butun OAuth provayderi sovutish davriga kirishidan oldin oynadagi nosozliklar. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: OAuth provayderlari uchun nosozliklarni hisoblash oynasi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: OAuth provayder chegarasiga yetgandan so'ng sovutish vaqti (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth provayderi DEGRADED shu ko'p nosozliklarda kiradi. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | OAuth provayderi max resetTimeout eskalatsiya multiplikatori. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth provayderi bu juda ko'p ochiq tsikllardan keyin kuchayadi. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: butun API-kalit provayderi sovutish davriga kirishidan oldin oynadagi nosozliklar. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: API kalit provayderlari uchun nosozliklarni hisoblash oynasi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Provayder darajasidagi to‘xtatuvchi: API kaliti provayder chegarasiga yetgandan so‘ng sovutish vaqti (ms). | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | API-kalit provayderi ko'plab nosozliklar bilan DEGRADED kiradi. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | API-kalit provayderi maksimal resetTimeout eskalatsiya multiplikatori. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | API-kalit provayderi ko'p ochiq tsikllardan keyin kuchayadi. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: butun mahalliy provayder sovutish davriga kirishdan oldin nosozliklar. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: mahalliy provayderlar uchun nosozliklarni hisoblash oynasi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Provayder darajasidagi to'xtatuvchi: mahalliy provayder chegarasiga erishilgandan so'ng sovutish vaqti (ms). | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Yuqori oqim 429 `Retry-After` (#14573) ga ega bo‘lmasa, ko‘p kalitli API tugmachalarini aylantirish orqali qo‘llaniladigan har bir tugmani sovutish vaqti (ms). Ijobiy bo'lmagan yoki raqamli bo'lmagan qiymatlar sukut bo'yicha qaytadi. | | `OMNIROUTE_AVALANCHE_PROTECTION_ENABLED` | `false` | `open-sse/services/accountFallback/antiAvalanche.ts` | Ko'chkiga qarshi qo'riqchini yoqing: buni faqat aniq `true` beradi. Yoniq bo'lganda, daqiqada tokenlar chegarasini (va kontekstdan oshib ketish 400) nomlaydigan 429 provayderning qolgan kalitlari bo'ylab kaskadli o'zgartirishni to'xtatadi. Kvota tugatilgan 429 so'rov qanchalik katta bo'lsa ham ishlamay qoladi va HTTP 413 ta'sir qilmaydi (u boshqa hisobda #13350 qayta urinish harakatini saqlaydi). | | `OMNIROUTE_AVALANCHE_BURST_COOLDOWN_MS` | `60000` | `open-sse/services/accountFallback/antiAvalanche.ts` | Qo'riqchi o't ochganda, kuchayuvchi blokirovka o'rniga qo'llaniladigan model-lokavt sovutish vaqti (ms). Yuqori oqimni uzoqroq tiklash har doim g'alaba qozonadi. Ijobiy bo'lmagan yoki raqamli bo'lmagan qiymatlar sukut bo'yicha qaytadi. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Orqaga o'chirish chuqurligi, bunda kontekst-kesh PIN provayderi uzoq vaqt davomida nosog'lom deb topiladi va pin o'chirib qo'yiladi. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Kontekst-kesh pinini tushirishdan oldin qisqa vaqtinchalik sovutishga toqat qiluvchi anti-flap oynasi (ms). | ### Ssenariylar | Ssenariy | Konfiguratsiya | | -------------------------------------- | ------------------------------------------------------------ | | **Uzoq muddatli kod ishlab chiqarish** | `REQUEST_TIMEOUT_MS=900000` (15 daqiqa) | | **Bog'langan umumiy oqim muddati** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 daq) | | **Tezkor ishlab chiqarish API** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Kengaytirilgan fikrlash modellari** | `STREAM_IDLE_TIMEOUT_MS=300000` (bo'laklar orasida 5 daqiqa) | --- ## 16. Jurnal yozish Jurnal tizimi stdout va aylantirilgan jurnal fayllariga yozadi. Barcha konfiguratsiyalar `src/lib/logEnv.ts` tomonidan o'qiladi. | O'zgaruvchan | Standart | Tavsif | | ----------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Minimal jurnal darajasi: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Chiqish formati: `text` (odam tomonidan o'qiladigan) yoki `json` (tuzilgan). | | `APP_LOG_TO_FILE` | `true` | Jurnallarni stdout bilan birga faylga yozing. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Jurnal fayli yo'li (loyiha ildiziga yoki `DATA_DIR` ga nisbatan). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Aylantirishdan oldin maksimal fayl hajmi. Qabul qiladi: `50M`, `1G`, `512K` yoki oddiy baytlar. | | `APP_LOG_RETENTION_DAYS` | `7` | Aylanadigan ilovalar jurnali fayllarini saqlash uchun kunlar. | | `APP_LOG_MAX_FILES` | `20` | Maksimal aylantirilgan jurnal faylining zaxira nusxalari. | | `CALL_LOG_RETENTION_DAYS` | `7` | Ma'lumotlar bazasida request/call jurnali yozuvlarini saqlash uchun kunlar. | | `CALL_LOG_MAX_ENTRIES` | `10000` | Xotiradagi buferdagi maksimal qo'ng'iroqlar jurnali yozuvlari. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Kesishdan oldin `call_logs` SQLite jadvalidagi maksimal qatorlar. | | `ENABLE_REQUEST_LOGS` | _(o'rnatilmagan)_ | Boshqaruv paneli sozlamasini bekor qilib, batafsil soʻrovni tizimga kiritishni majburlang yoki oʻchiring. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 soat) | Xotirani tozalashdan oldin, faol so'rovlar jurnali yozuvlari uchun maksimal yosh. | | `MAX_PENDING_DETAILS` | `5000` | Maksimal kutilayotgan tafsilotlar (musbat butun son); hisoblash qopqog'i: supurish; byte/map qalpoqlari: kiriting. | | `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | `call_log_pipeline_enabled=true` bo'lganda oqim qismlarini quvur liniyasi artefaktlarida saqlang. Diskni saqlash uchun sukut bo'yicha kirish (`true`) — o'chiriladi. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | `call_log_pipeline_enabled=true` qachon KB maksimal quvur liniyasi qo'ng'iroqlar jurnali artefakt hajmi. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Kesishdan oldin `proxy_logs` SQLite jadvalidagi maksimal qatorlar. | | `PROXY_LOG_INCLUDE_IPS` | `false` | client/egress IPs va hisob prefikslarini `[ProxyEgress]` konsol jurnallariga kiriting. dashboard/database proksi-log yozuvlari to'liq ma'lumotlarni saqlaydi. | | `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Proksi-log qatorlarida `first_chunk_ms` (birinchi foydali tana baytiga start yuborish) yozish uchun `"true"` yoki `"1"` ni sozlang. Har bir yuqoridagi tanani dangasa o'tish oqimiga o'rab oladi va bayt kelgandan keyin qatorni yamalaydi; sukut bo'yicha o'chirilgan, shuning uchun javoblar tegmasdan o'tadi. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 daqiqa) | Qanchalik tez-tez `src/lib/logRotation.ts` faol jurnal fayli hajmini qayta tekshiradi. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Chat jurnali artefaktlarida saqlanadigan maksimal satr uzunligi (standart 64 KB). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Suhbat jurnalining foydali yuklarini qisqartirishda dumdan saqlanib qolgan massiv elementlari soni. | | `CHAT_LOG_MAX_DEPTH` | `6` | Chat jurnali yuklamalari kesilgunga qadar maksimal joylashtirish chuqurligi. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Chat jurnalining foydali yuklarida saqlanadigan maksimal obyekt kalitlari (cheksiz 0 = ). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | To'liq klon o'rniga yalang'och xulosa bilan almashtirilishidan oldin butun request/response tana hajmi (KB). Agar uzoq agentli suhbatlar asboblar panelidagi haqiqiy xabarlar o‘rniga to‘ldiruvchini ko‘rsatsa, buni oshiring. | | `CHAT_DEBUG_FILE` | `false` | Agar rost boʻlsa, `serializeArtifactForStorage` oʻlchamga asoslangan kesishni oʻtkazib yuboradi. Faqat disk raskadrovka. | --- ## 17. Xotirani optimallashtirish | O'zgaruvchan | Standart | Tavsif | | -------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_HEAP_DIAGNOSTICS_ENABLED` | `0` (o'chirilgan) | `src/lib/healthzLag.ts` dan V8 to'p bosimi ko'rsatkichlarini jurnalga kiritish uchun `1` o'rnating. Jurnallar oʻlchamlari va parvozlar soni, hech qachon kontent, izlar yoki yigʻma suratlarni soʻramang. Hodisa-loop stall yozuvchisi ichida ishlaydi, shuning uchun `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS=0` ham uni o'chiradi. | | `OMNIROUTE_HEAP_DIAGNOSTICS_THRESHOLD_MB` | `900` | Imtiyozli diagnostika jurnalini ishga tushiradigan heapUsed (MiB) uchun ijobiy chegara. Yaroqsiz qiymatlar 900 MiB foydalanadi; yuqori to'plangan xabarlar 60 soniyada bir marta cheklangan. | | `OMNIROUTE_MEMORY_MB` | _avto_ (yalang'och metall);** Docker tasviridagi `1024`** | **Tavsiya etilgan** Docker/standalone V8 yig'ish chegarasi (MB). O'rnatilmaganda, dinamik ravishda kalibrlanadi (~ tizimning 35% RAM, `[512, 4096]` ga mahkamlanadi); `512` faqat umumiy xotirani o'qib bo'lmaydigan qavatdir. `run-standalone.mjs` (Docker CMD) da, an** aniq** qiymat `--max-old-space-size` va sifatida qo'shiladi** g'alaba qozonadi** ziddiyatli NODE_OPTIONS to'p bayrog'i ustida (V8 oxirgi bayroq). `omniroute serve` hali ham mavjud NODE_OPTIONS to'pini (#5238) afzal ko'radi. Ikkalasini ham turli raqamlarga qo'ymang — jarayon ikkala qiymat va g'olib nomini ko'rsatuvchi ogohlantirishni qayd qiladi.** Rasmiy Docker tasviri har doim `1024` o'rnatadi, shuning uchun kalibrlash hech qachon u erda ishlamaydi.** Kodlash agenti `/v1/responses` uchun `8192` kerak –`12288` plus cgroup headroom — [Docker Guide — runtime RAM](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents) qarang. | | `OMNIROUTE_RSS_PRESSURE_MB` | _auto_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; `OMNIROUTE_MEMORY_MB` sozlanmagan bo‘lsa o‘chiriladi) | `open-sse/utils/resourcePressure.ts` | V8 `heapUsed` ko'ra olmaydigan native/external xotirasi uchun mutlaq jarayon-RSS sug'urtasi (MB); yuqorida yangi so'rovlar 503 `resource_pressure` oladi. RSS kamdan-kam hollarda boshoqdan keyin tushadi, shuning uchun uni `OMNIROUTE_PRESSURE_SELF_RESTART` bilan bog'lang. | | `PROMPT_CACHE_MAX_SIZE` | `50` | Maksimal keshlangan tizim so'rovi yozuvlari. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Maksimal jami tezkor kesh hajmi. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 daqiqa) | Keshga tezkor kirish TTL. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Maksimal keshlangan harorat = 0 javob. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Maksimal jami semantik kesh hajmi. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 daqiqa) | Semantik keshga kirish TTL. | | `OMNIROUTE_SEMANTIC_CACHE_PRUNE_INTERVAL_MS` | `1800000` (30 daqiqa) | SQLite olxo'ri oralig'i. `0` ishga tushirish va davriy ishga tushirishni o'chiradi; `60000` dan past bo'lgan boshqa qiymatlar sukut bo'yicha qaytadi. `2147483647` ms dan yuqori qiymatlar tugunning maksimal taymer kechikishiga to'g'ri keladi, bu 1ms ga to'lib ketishining oldini oladi. 1 soniyadan keyin birinchi yugurish; taymerlar qayta ishlanmagan va yugurishlar hech qachon bir-biriga mos kelmaydi. | | `OMNIROUTE_SEMANTIC_CACHE_PRUNE_BATCH_SIZE` | `2000` | SQLite prune DELETE boshiga qatorlar, `[100, 50000]` uchun qisqich; partiyalar orasidagi hodisa halqasiga keladi. | | `OMNIROUTE_SEMANTIC_CACHE_PRUNE_MAX_BATCHES` | `50` | Yaroqlilik muddati va ixtiyoriy qator cheklovi boʻyicha har bir ishga tushirish uchun umumiy DELETE toʻplami byudjeti, `[1, 10000]` ga biriktirilgan. Keyingi ishlarda orqada qolishlar davom etadi. | | `OMNIROUTE_SEMANTIC_CACHE_MAX_ROWS` | `0` | Ixtiyoriy SQLite qator qopqog‘i (`0` = yo‘q). `expires_at <=` ishga tushirish-start ISO vaqt tamg'asini o'chirib tashlaganingizdan so'ng, umumiy paket byudjetiga qarab, eng eski `created_at`, so'ngra `rowid`, shu jumladan jonli qatorlarni chiqarib tashlang. Hisoblar butun sonlarga qisqartiriladi (xavfsiz-butun son chegarasigacha). Barcha to'rtta prune o'zgaruvchilari uchun bo'sh, sonli bo'lmagan, chekli bo'lmagan yoki manfiy qiymatlar asl holatiga qaytadi; kasrlar pastga yaxlitlanadi. Azizillo TTL, xotira LRU yoki vektor-kesh xatti-harakatlarini o'zgartirmaydi. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Bir vaqtning o'zida jonli xotira indeksini saqlaydigan mahalliy korpus ildizlari (`src/lib/localCorpus/configured.ts`). LRU: chegarada eng kam ishlatilgan ildiz indeksi o'chiriladi va keyingi so'rovda qayta tiklanadi. Minimal `1` ga mahkamlangan; raqamli bo'lmagan qiymat sukut bo'yicha qaytadi. | | `STREAM_HISTORY_MAX` | `50` | Boshqaruv panelidagi jonli ko‘rish buferidagi eng so‘nggi translatsiya voqealari. | | `CONTEXT_LENGTH_DEFAULT` | _(o'rnatilmagan)_ | `CONTEXT_LENGTH_` o'zgaruvchisi bo'lmagan har bir provayder uchun global kontekst uzunligini bekor qilish (tokenlar). O'rnatilganda, u** almashtiradi** ushbu provayderlar uchun katalog, asboblar panelini bekor qilish va registr qiymatlari; o'rnatilmaganda, OmniRoute oxirgi chorasi `128000` bo'lgan o'rnatilgan zanjiridan foydalanadi. [Har bir provayder uchun kontekst uzunligi ga](#per-provider-context-length-context_length_provider) qarang. | | `USAGE_TOKEN_BUFFER` | `100` | Foydalanish kvotalarini kuzatishda qoʻshimcha token boʻsh joy ajratilgan. | ### Har bir provayder uchun kontekst uzunligi (`CONTEXT_LENGTH_`) `open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) a ni ham o‘qiydi** provayder uchun** nomi ish vaqtida ID provayderidan tuzilgan shakl, shuning uchun uni yuqoridagi jadvalda yoki `.env.example` da qatorma-qator sanab bo'lmaydi. **Ism.** `CONTEXT_LENGTH_`, bu yerda `` provayder ID bosh harfi bilan, `A-Z` / `0-9` tashqarisidagi har bir belgi `_` bilan almashtiriladi. ID provayderi taxallusni hal qilishdan keyingi kanonik hisoblanadi (qisqa taxallus hal qilingandan keyin `provider/model` qatorining `provider` qismi). Maxsus OpenAI- yoki Antropik-mos tugunlar o'zlarining yaratilgan ID tugunlaridan foydalanadilar, shuning uchun UUID o'zgaruvchi nomining bir qismidir. Qiymat tokenlarning musbat butun soni; boshqa har qanday narsa (bo'sh, `0`, salbiy, raqamli bo'lmagan) e'tiborga olinmaydi va ruxsat keyingi bosqichga o'tadi. | Provayder ID | O'zgaruvchan nomi | | ----------------------------------------------------------- | -------------------------------------------------------------------------- | | agent router | CONTEXT_LENGTH_AGENTROUTER | | ochuvchi router | CONTEXT_LENGTH_OPENROUTER | | openai-compatible-chat-0f8e2c1a-5b7d-4e3f-9a6c-2d1b8e4f7a90 | CONTEXT_LENGTH_OPENAI_COMPATIBLE_CHAT_0F8E2C1A_5B7D_4E3F_9A6C_2D1B8E4F7A90 | **Ustunlik.** `provider/model` juftligi uchun qiymat beradigan birinchi qadam g'alaba qozonadi: 1. bu provayder uchun `CONTEXT_LENGTH_`. 2. `CONTEXT_LENGTH_DEFAULT` (global muhitni bekor qilish). 3. Har bir model oynasi: doimiy kontekstni bekor qilish (boshqaruv panelida o'rnatiladi yoki kashfiyotni moslashtiruvchi tomonidan avtomatik ravishda mahkamlanadi, `CONTEXT_WINDOW_RECONCILE_INTERVAL` qarang), aks holda sinxronlangan katalog / models.dev qiymati. 4. Provayder reestri `defaultContextLength`. 5. Model nomi evristikasi (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000). 6. Har bir provayder uchun o'rnatilgan standart, keyin `128000`. Har ikki muhit qadamlari uchun amal qiladi** butun provayder** : ushbu provayderning har bir modeli bir xil cheklovga ega bo'ladi va ular har bir model bo'yicha asboblar panelini bekor qiladi. Agar provayderning faqat bitta modeli boshqa oynaga muhtoj bo'lsa, uning o'rniga asboblar panelida har bir modelni bekor qilishdan foydalaning. **Qo'llash doirasi.** Ushbu zanjir so'rov vaqtidagi kontekst oynasini tekshirishni ( `context_length_exceeded` / "Kirish kontekst oynasidan oshib ketdi" `open-sse/handlers/chatCore.ts` da rad etish), tezkor siqish byudjetlarini va kombinatsiyalangan kontekst chegaralarini boshqaradi. `GET /v1/models` tomonidan e'lon qilingan `context_length` hali ham katalog yoki registr metama'lumotlaridan kelib chiqishi mumkin va atrof-muhitni bekor qilishni aks ettirishi kafolatlanmaydi. **Misol.** Katalogda 128 000 haqida xabar berilganda modeli 1 050 000 tokenli oynani qabul qiladigan provayder: ```dotenv CONTEXT_LENGTH_AGENTROUTER=1050000 ``` Serverni o'zgartirgandan so'ng uni qayta ishga tushiring: qiymat server jarayoni muhitidan o'qiladi. ustida** ish stoli ilovasi** server bola jarayoni sifatida ishlaydi va dastur ishga tushirilgandan so'ng tizim o'zgaruvchisi to'plamini ko'rmaydi; qatorni ilova yuklanadigan `.env` fayliga qo'ying ( [Electron qo'llanmasida qidirish tartibi: Atrof-muhit fayllarini qidirish](../guides/ELECTRON_GUIDE.md#environment-file-lookup) ), so'ngra to'liq chiqing va ilovani qayta ishga tushiring. ### Siqish | O'zgaruvchan | Standart | Tavsif | | ------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | sozlanmagan | Ishonch loyihasi `.rtk/filters.json` `.rtk/trust.json` xeshsiz. Faqat boshqariladigan mahalliy rivojlanishda foydalaning. | ### Xotira mexanizmi (reja 21) ### Xotira, ko'nikma va tokenni yangilash uchun voqealar tsikli narxi (#10349) OmniRoute - a** yagona tugun jarayoni** . Xotira extraction/retrieval, ko'nikmalarni kiritish va provayder tokenini yangilash shu bilan ishlaydi** bir xil hodisa davri** `GET /healthz` va asboblar paneli kabi. Ular ishchi ip emas. | Ish | Kod | Standart | Operator nazorati | | ------------------------------- | ---------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | Xotirani ajratib olish / olish | `src/lib/memory/` | Boshqaruv paneli**memoryEnabled** (standart yoqilgan) | O'chirib qo'yish** Sozlamalar → Xotira** . Sozlamalarda xususiyatni o'chirib qo'yishdan tashqari alohida env o'chirish tugmasi mavjud emas. | | Ko'nikmalarni in'ektsiya qilish | `src/lib/skills/injection.ts` | Boshqaruv paneli**skillsEnabled** (standart yoqilgan) | O'chirib qo'yish** Sozlamalar → Memory/Skills** (`skillsEnabled`). Quyida joylashgan “Sandbox” tugmalari faqat inyeksiya yoqilgandan keyin bog‘langan. | | Token yangilanishi | `src/sse/services/tokenRefresh.ts` | Ulangan OAuth/web provayderlari uchun yoqilgan | Provayder bilan aloqani uzing yoki tokenlar amalda qolishiga ruxsat bering; bugun `TOKEN_REFRESH=0` env yo'q. | Agar sokin qutida `/healthz` sekin bo'lsa, avval xotira + ko'nikmalarini o'chiring, so'ngra catalog/compression yukini tekshiring (#10303, #9685). Bu xususiyatlar `await` nuqtalarida hosil bo'ladi, lekin baribir bitta ip uchun raqobatlashadi. Doimiy xotira quyi tizimi (`src/lib/memory/`) uchun o'rnatish qatlami, vektor saqlash va qayta tartiblash tugmalari. | O'zgaruvchan | Standart | Tavsif | | ------------------------------------ | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 daqiqa) | Xotiraga joylashtirish keshi uchun TTL (har bir source/model/dim imzosi uchun). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Max LRU yozuvlari o'rnatish keshida saqlanadi. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | `@huggingface/transformers` mahalliy MiniLM quvur liniyasiga kirish uchun HF repo identifikatori (~ 23 MB int8, ~ 400 MB RAM). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | Statik potion/Model2Vec qidiruv jadvali o'rnatish uchun HF repo identifikatori. Kesh katalogiga dangasalik bilan yuklab olingan. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Katalog statik iksir modeli fayllarini keshlash uchun ishlatiladi. Sozlanmasa, birlamchi `DATA_DIR` ostida. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | `staticPotion.ts` tomonidan ishlatiladigan Hugging Face Hub bazasi URL bekor qiling (masalan, havo boʻshligʻi boʻlgan sozlashlar uchun oyna soʻnggi nuqtasi). | | `MEMORY_VEC_TOP_K` | `20` | `src/lib/memory/vectorStore.ts` ichida `sqlite-vec` shafqatsiz kuch vektor qidiruvi tomonidan ishlatiladigan standart top-K. | | `MEMORY_RRF_K` | `60` | Gibrid FTS5 + vektorni qidirish uchun o'zaro Rank Fusion doimiysi `k` (sqlite-vec retsepti). | | `VECTOR_STORE_DISABLE_VEC` | `false` | `getVectorStore()` (`src/lib/memory/vectorStore.ts`) dagi Test/diagnostic tikuvi : `true` bo‘lganda vektor do‘konini `null` ga majburlaydi ( `sqlite-vec` cloud/WASM muhitini taqlid qiladi), FTS5 kalit so‘z qidiruviga xotirani qayta tiklashni pasaytiradi. Ishlab chiqarishda sozlanmagan holda qoldiring. | | `NOTION_API_KEY` | _(o'rnatilmagan)_ | Notion backend uchun API kaliti ( `genericBackend.ts` ma'lum backend oldindan o'rnatilgan tomonidan ishlatiladi). | | `NOTION_API_URL` | `https://api.notion.com/v1` | Notion API uchun URL bazasi (o‘z-o‘zidan joylashtirilgan Notion alternativlari uchun bekor qilinishi mumkin). | | `OBSIDIAN_API_KEY` | _(o'rnatilmagan)_ | Obsidian Vault backend uchun API kaliti ( `genericBackend.ts` ma'lum backend oldindan o'rnatilgani tomonidan ishlatiladi). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | Obsidian Vault API uchun URL bazasi (masofaviy ombor uchun bekor qilinishi mumkin). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | TV6 terilgan xotira buzilishi asosiy kaliti.** Ro‘yxatdan o‘tish (birlamchi o‘chirilgan)** — supurish** o'chiradi** buzilgan xotiralar. U o'chirilgan bo'lsa, `access_count`/`last_accessed_at` sof telemetriya bo'lib, hech narsa o'chirilmaydi. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (kunlar), undan keyin foydalanilmagan `episodic` xotirasi parchalanadi. `0` ham epizodik immunitet hosil qiladi. Bardoshli turlar (`factual`/`procedural`/`semantic`) har doim immunitetga ega. Yemirilish soati `last_accessed_at` ga qayta asoslanadi. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | AOK qilingan xotira `>=` turidan qat'i nazar, bu ko'p marta parchalanishga qarshi immunitetga ega bo'ladi. `0` kirish immunitetini o'chirib qo'yadi. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (o'chirilgan) | `src/lib/memory/typedDecay.ts` da ixtiyoriy davriy parchalanish uchun interval (soniyalar). `0`/ unset = davriy tozalash yo'q. Ikki marta ro'yxatdan o'tish: `MEMORY_TYPED_DECAY_ENABLED=true` ham talab qiladi. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(o'rnatilmagan)_ | `system` xabarini qabul qiluvchi vergul bilan ajratilgan provayder identifikatorlari (katta-kichik harflarni sezmaydi)** faqat 0 indeksida** (`src/lib/memory/injection.ts`). Bular uchun kesh-xavfsiz o'rta massiv xotira birlashmasi ko'p burilishli suhbatlarda xavfsiz emas, shuning uchun xotira asosiy tizim xabari sifatida merged/prepended hisoblanadi. Standart faqat `xiaomi-mimo`/`mimo`; chat shablonlari bir xil yagona yetakchi tizim xabar cheklovini tatbiq qiladigan o'z-o'zidan joylashtirilgan OpenAI-ga mos keladigan so'nggi nuqtalar uchun kengaytiring (masalan, Qwen3.5 +/3.6). | ### Kam RAM Docker misol `128` faqat asboblar paneli uchun. Kodlash agentlari uzoq `/v1/responses` davomida bu to'p `FATAL ERROR`. Ushbu misolni Claude/Codex/Grok shlyuzi sifatida ishlatmang. ```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. Narxlarni sinxronlashtirish Tashqi manbalardan avtomatik model narxlari ma'lumotlarini sinxronlashtirish. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------- | ----------------- | ------------------------ | ---------------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Vaqti-vaqti bilan narxlarni sinxronlash. | | `PRICING_SYNC_INTERVAL` | `86400` (24 soat) | `src/lib/pricingSync.ts` | Sinxronlash oralig'i soniyalarda. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Vergul bilan ajratilgan ma'lumotlar manbalari. | --- ## Arena ELO sinxronlash | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------- | ----------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Vaqti-vaqti bilan Arena AI peshqadamlar panelini ELO sinxronlash, Dashboard Feature Flags orqali sozlanishi yoki rad etish uchun `false` bilan. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | `GET /v1/models` model identifikatorlari uchun ishlatiladigan prefiks shakli. `dual` har bir model uchun qisqa taxallus prefiksini va kanonik provayder prefiksini reklama qiladi ( — orqaga qarab muvofiqligi katalogni taxminan ikki baravar oshiradi); `alias` har bir model uchun bitta identifikatorni chiqaradi; `canonical` faqat to'liq provayder identifikatori prefiksini chiqaradi (taxallusi allaqachon kanonik identifikator bo'lgan provayderlar o'zlarining yagona yozuvlarini saqlaydilar). Mijozlar `?prefix=alias` bilan har bir so'rovni bekor qilishi mumkin. [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix) qarang. | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24 soat) | `src/lib/arenaEloSync.ts` | Sinxronlash oralig'i soniyalarda. | --- ## PromptQL o'yin maydonchasi provayderi (Unofficial/Experimental) prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`) uchun teskari muhandislik GraphQL seans ko'prigi. Barcha ixtiyoriy — standart sozlamalari umumiy o'yin maydonchasining so'nggi nuqtalariga ishora qiladi; faqat self-hosted/alternate PromptQL joylashtirish uchun bekor qilish. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------ | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | chat/session operatsiyalari uchun ishlatiladigan GraphQL oxirgi nuqtasi. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | GraphQL oxirgi nuqtasi kredit balance/usage. so'rovi uchun ishlatiladi | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Tokenni eng yaxshi yangilash uchun oxirgi nuqta ishlatiladi. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Vaqt tugashidan oldin `thread_events` so'rovi uchun maksimal vaqt (ms). | --- ## HyperAgent veb-provayderi (Unofficial/Experimental) hyperagent.com (`src/shared/constants/providers/web-cookie.ts`) uchun teskari muhandislik seans ko'prigi. Ixtiyoriy — umumiy billing/usage oxirgi nuqtasidagi standart nuqtalar; faqat self-hosted/alternate HyperAgent joylashtirish uchun bekor qilish. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------- | --------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------- | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Oxirgi nuqta billing/usage kredit bloklarini olish uchun ishlatiladi. | --- ## Narxsiz foydalanish byudjet siyosati | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------ | --------------------------------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `UNPRICED_USAGE_BUDGET_POLICY` | _(o'rnatilmagan; mantiqiy rad etish yoqilgan bo'lmasa, muvaffaqiyatsiz yopiladi)_ | `src/shared/utils/featureFlags.ts` | Har bir kalit uchun daily/weekly USD cheklovlari: `fail_closed` haqiqatdan ham arzon foydalanishni bloklaydi; `count_as_zero` narxlangan xarajatlarni amalga oshirishda uni $0 deb hisoblaydi. Aniq raqam (env dan oldin DB ) mantiqiy rad etishni bekor qiladi. Noto'g'ri qiymatlar va narxlarni qidirishda xatoliklar yopilmadi. | | `USAGE_LIMIT_IGNORE_UNPRICED` | `false` | `src/shared/utils/featureFlags.ts` | Yuqori oqim mantiqiy muvofiqligidan voz kechish: hech qanday aniq enum siyosati sozlanmagan bo'lsa, haqiqiy bahosiz foydalanish $0 sifatida hisoblanadi. Narxli xarajat va muvaffaqiyatsiz qidiruvlar kuchga kiradi. | ## Kilo kodidan foydalanish kvotalari Kilo Code provayderi uchun shaxsiy USD balansi va Kilo Pass foydalanish qidiruvi. Ixtiyoriy — umumiy Kilo API da standart nuqtalar; faqat relay/test moslamasi uchun bekor qilish. Autentifikatsiya ulanishning mavjud OAuth kirish tokenidan foydalanadi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | -------------- | --------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------- | | `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Base URL shaxsiy Kilo Code balansini va Kilo Pass foydalanishni olish uchun ishlatiladi. | --- ## Adobe Firefly Web Provayderi (Unofficial/Experimental) Adobe Firefly veb-provayderi (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`) uchun brauzer tomonidan boshqariladigan sessiya yangilanishi. Majburiy emas — barcha standart sozlamalar oddiy ish stoli o'rnatilishi uchun sozlangan. > **№ 9255 da olib tashlandi.** Eski CDP bilan biriktirilgan Chrome ish vaqti (adobeFireflyChromeRuntime.ts) Playwright brauzeriga kirish xizmati bilan almashtirildi va uning tugmalari endi mavjud emas. ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART o'zgaruvchilari, plyus ADOBE_FIREFLY_LOGIN_WAIT_MS va ADOBE_FIREFLY_FORTER_WAIT_MS— kod bazasida hech qanday joyda o'qilmaydi, ularni sozlash ta'sir qilmaydi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------ | ----------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Haqiqiy boshsiz Chrome uchun `1` sozlang (yaratish uchun buzilgan; faqat disk raskadrovka). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Proactive browser warm opt-in/out. `0` proactive warm-ni o'chiradi (o'rta partiya 408 tiklash hali ham amal qiladi). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Diskda Adobe Firefly seansining davom etishini o'chirish uchun `0` ni sozlang. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(o'rnatilmagan)_ | `open-sse/services/adobeFireflySession.ts` | O'rnatilgan standartni bekor qilib, ketma-ket yuborishlar orasidagi minimal bo'shliq (ms). | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(o'rnatilmagan)_ | `open-sse/services/adobeFireflySession.ts` | Muvaffaqiyatli to'plamdan so'ng qo'shimcha bo'shliq (ms) o'rnatilgan standartni bekor qiladi. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(o'rnatilmagan)_ | `open-sse/services/adobeFireflyClient.ts` | Yaratish soʻrovini yuborishdan oldin asosiy kechikish (ms) oʻrnatilgan standartni bekor qiladi. | --- ## 19. Model sinxronlash (ishlab chiqish) | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------------------- | ----------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(o'rnatilmagan)_ | `src/lib/modelsDevSync.ts` | models.dev narxlarini sinxronlashtirish uchun qattiq bekor qilish. = honor Sozlamalar > AI (`modelsDevSyncEnabled`) ni o‘chirish. `0`/`false`/`off`/`no`** DB ustidan g'alaba qozonadi** va davriy sinxronlash va `getModelsDevPricing()` SQL/JSON skanerlashlarini o'tkazib yuboradi (boshqaruv paneli bir xil hodisalar tsikliga o'ralgan holda tiklash). `1`/`true`/`on`/`yes` kuchlari sinxronlashtiriladi. Narxlash save/clear hali ham `backupDbFile("pre-write")` chaqiradi, bu 60 daqiqalik gaz yoki `DISABLE_SQLITE_AUTO_BACKUP` ostida no-op hisoblanadi. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 soat) | `src/lib/modelsDevSync.ts` | Rivojlanish vaqti modeli katalogini soniyalarda sinxronlash oralig'i. | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 soat) | `src/lib/contextWindowResolver.ts` | O'z-o'zidan tuzatuvchi kontekst oynasi moslashtiruvchisi (5004) uchun interval (soniyalar): `/models` kashfiyoti provayder tomonidan e'lon qilingan oynalarni katalogdan ajralib chiqqanda `auto:discovery` bekor qilish sifatida pin qiladi. O'chirish uchun `0` ga sozlang. Allaqachon sinxronlangan ma'lumotlarni qayta ishlatadi (yangi yuklanmaydi); hech qachon `manual` bekor qilishning ustiga yozmaydi. | --- ## 20. Provayderga xos sozlamalar | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24 soat) | `src/lib/catalog/openrouterCatalog.ts` | OpenRouter model katalogi kesh TTL. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | `/v1/models` javoblarida displeyga qulay `name` maydonlarini qo'shing. Faqat IDs kutayotgan mijozlar uchun o'chirib qo'ying. | | `OMNIROUTE_GEMINI_WEB_ARGON_ENABLED` | `0` (o'chirilgan) | `open-sse/config/providers/registry/gemini/web/index.ts` | Ro'yxatdan o'tish (#16573). Gemini veb-provayderida `gweb/gemini-4-argon` reklama qilish uchun `1` (yoki `true`/`yes`) ni o'rnating va uning ijrochisiga ushbu rejimni tanlashiga ruxsat bering. Sukut bo'yicha o'chirilgan, chunki Argon rejimi-menyu selektorlari jonli Gemini Web hisobiga nisbatan tekshirilmagan; o'chirilgan vaqtda, model ro'yxatga kiritilmagan va unga bo'lgan so'rov avvalgidek noma'lum model sifatida rad etiladi. Ishga tushganda o'qing, shuning uchun o'zgartirishni qayta ishga tushirish kerak. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | Birlashtirilgan `GET /v1/models` katalogini qayta tiklash (#12627) uchun sovuq yo'l kutish kerak. Vaqt tugashi bilan, oxirgi - yaxshi 200 mavjud bo'lganda beriladi. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 kun) | `src/lib/db/models/activeSyncedCatalog.ts` | Ulanishning sinxronlangan modellar roʻyxati marshrutlash uchun vakolatli boʻlishni toʻxtatadigan va registrga ochilmaydigan yosh (#12849). Hech qachon vaqt belgilanmagan qatorlar eskirgan deb hisoblanadi. | | `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | Sekin `GET /api/usage/analytics` javobi bir xil so'rovlar qatori (#15629) uchun qancha vaqt davomida qayta ishlatiladi. `0` keshni o'chirib qo'yadi. | | `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | Faqat yaratish uchun kamida shuncha vaqt ketadigan tahliliy javoblar keshlanadi, shuning uchun kichik misollar har doim yangi ma'lumotlarni ko'radi. | | `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | sozlanmagan (o'chirilgan) | `src/lib/usage/analyticsResponseCache.ts` orqali `src/app/api/cache/route.ts` | Ro'yxatdan o'tish (#16361). N manfiy bo'lmagan butun songa o'rnatilganda, `GET /api/cache` ning foydalanish tarixi qismi (tezkor kesh jami + trendi) umumiy tahliliy javob keshidan `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` uchun har bir siqilgan `trendHours` oynasi uchun kamida N milodiy vaqt sarflaganda taqdim etiladi (tarix bu TTL ingacha ortda qolishi mumkin ; `DELETE /api/cache` ;). Har bir soʻrov boʻyicha oʻqilgan = tarixi sozlanmagan yoki yaroqsiz. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | Maksimal NanoBanana tasvir yaratish ishlarini kuting. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | NanoBanana ish so'rovi chastotasi. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Adobe Firefly yuqori miqyosli yuborish-qayta urinish eksponentsial orqaga qaytish uchun asosiy kechikish. | | `AWS_REGION` | _(o'rnatilmagan)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Mintaqa AWS Bedrock so'nggi nuqtalarini (Kiro, audio) qurish uchun ishlatilgan. | | `AWS_DEFAULT_REGION` | _(o'rnatilmagan)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | `AWS_REGION` sozlanmagan bo'lsa, qaytarish. | | `CLOUDFLARE_ACCOUNT_ID` | _(o'rnatilmagan)_ | `open-sse/executors/cloudflare-ai.ts` | Cloudflare Ishchilar AI uchun hisob ID. | | `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(o'rnatilmagan)_ | `open-sse/executors/cloudflare-playground.ts` | Cloudflare AI Playground ijrochisi uchun toʻliq ish stoli Chrome ikkilik yoʻli, boshsiz barmoq izi tekshiruvi Playwright toʻplamidagi Chromium-ni bloklaganda ishlatiladi. | | `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _unset = hech qanday uzunligi cap_ | `open-sse/executors/codebuddy/shared.ts` | CodeBuddy (CN va International) ga yuborilgan qo'ng'iroq qiluvchi tizim so'rovlari uchun ixtiyoriy uzunlik chegarasi. Odatiy bo'lib faqat kodlash agenti identifikatori ko'rsatilgan so'rov neytral bilan almashtiriladi (Tencent kontent filtri ularni rad etadi); uzoq ko'rsatmalar saqlanadi. > 0 butun soni ham shuncha belgilardan uzoqroq bo'lgan har qanday tizim so'rovini almashtiradi; unset, `0` yoki butun son bo'lmagan qiymat qopqoqni o'chiradi. Har bir almashtiriladigan jurnallar qaysi qoidaga ko'ra ishga tushiriladi (identifikatsiya belgisi yoki uzunlik). | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Proksi-pool Workers relay deployeri (#4640 / 9router#1360) tomonidan foydalaniladigan Cloudflare REST API bazasini bekor qiling. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | “Deploy Relay” modal proksi-pulida tavsiya etilgan ishchi loyihasining standart nomi. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Proksi-server yorlig'ida Cloudflare Workers relay opsiyasini yashirish uchun `false` -ga o'rnating. | | `CLOUDFLARED_BIN` | avtomatik aniqlash | `src/lib/cloudflaredTunnel.ts` | `cloudflared` binaryga moslashtirilgan yo'l. | | `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Tunnel tashish protokoli: `http2` (standart), `quic` yoki `auto`. | | `CLOUDFLARED_CONFIG` | _(o'rnatilmagan)_ | `src/lib/cloudflaredTunnel.ts` | Mahalliy tomonidan boshqariladigan bulutli `config.yml` yoʻl ( `tunnel:`, `credentials-file:`, `ingress:` bilan). Oʻrnatilganda, OmniRoute vaqtinchalik tezkor tunnel oʻrniga `tunnel --config run` (nomli tunnel) ishlaydi. | | `CLOUDFLARED_HOSTNAME` | _(konfiguratsiyaga kirishdan)_ | `src/lib/cloudflaredTunnel.ts` | Nomlangan tunnelning umumiy xost nomini bekor qilish (masalan, `ai.example.com`), `publicUrl`/`apiUrl` sifatida xabar qilinadi. O'rnatilmaganda, u konfiguratsiyaning birinchi `ingress` host nomidan o'qiladi. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Proksi-pool relay deployeri (#4643 / 9router#1437) tomonidan ishlatiladigan Deno Deploy REST API bazasini bekor qiling. | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Standart Deno Deploy ilova nomi proksi-pulning “Deploy Relay” modalida tavsiya etilgan. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Proksi-server yorlig'idan Deno Deploy relay opsiyasini yashirish uchun `false` -ni o'rnating. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 daqiqa) | `open-sse/services/searchCache.ts` | TTL qidiruvi uchun API (Perplexity, Brave va boshqalar) javob keshlash. | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Faqat Claude kodli relelar uchun CC bilan mos eksperimental UI provayderini ko'rsating. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | O'rnatilgan 9router namunasi tinglaydigan xostni bekor qiling. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | O'rnatilgan 9router namunasi tinglaydigan portni bekor qiling. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | O'rnatilgan WebSocket proksi-server uchun xostni bog'lang (faqat sukut bo'yicha orqaga qaytish). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | O'rnatilgan WebSocket proksi-server uchun port. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI bridge host (eski integratsiya). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI ko'prik porti. | | `CLIPROXYAPI_API_KEY` | _(bo'sh)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | `cliproxyapi_api_key` sozlamasi mavjud boʻlmaganda maʼlumotlar tekisligi kalitining qaytarilishi. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(bo'sh)_ | `src/lib/services/cliproxyAccountHealth.ts` | Hisob salomatligi uchun boshqaruv kaliti tashqi tomonidan boshqariladigan CLIProxyAPI misolidan o‘qiladi. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | CLIProxyAPI konfiguratsiya katalogi. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Docker-compose xost interfeysi `cliproxyapi` sidecarni (#12578) da nashr etadi. Uning maʼlumotlar hajmi provayder OAuth/API hisobga olish maʼlumotlariga ega va mahkamlangan tasvirda env-ga asoslangan maʼlumotlar tekisligi `api-keys` bekor qilinishi yoʻq (faqat oʻrnatilgan `config.yaml`), shuning uchun `0.0.0.0` hisob maʼlumotlariga ega boʻlgan xizmatni butun LAN ga ochib beradi. | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | O‘rnatilgan Mux (coder/mux) agent-orkestr demoni tinglaydigan portni bekor qiling (har doim 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | O'rnatilgan open-wa (WhatsApp Web automation) demoni tinglaydigan portni bekor qiling (har doim 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario o'rnatilgan xizmat bind/connect xosti (faqat sukut bo'yicha orqaga qaytish). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario o'rnatilgan xizmat ko'rsatish porti. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario o'rnatilgan xizmat bind/connect xosti (faqat sukut bo'yicha orqaga qaytish). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario o'rnatilgan xizmat ko'rsatish porti. | | `LOCAL_HOSTNAMES` | _(bo'sh)_ | `open-sse/config/providerRegistry.ts` | Vergul bilan ajratilgan qo'shimcha xost nomlari "mahalliy" deb hisoblanadi (Docker xizmat nomlari va boshqalar). | `ENABLE_CC_COMPATIBLE_PROVIDER` faqat Claude Code mijozlarini qabul qiladigan uchinchi tomon relelari uchun. OmniRoute so'rovlarni qayta yozadi, shuning uchun o'sha o'rni ularni qabul qiladi. Agar siz faqat Claude Code CLI foydalanmoqchi bo'lsangiz yoki bu o'rni nima ekanligiga ishonchingiz komil bo'lmasa, uni o'chirib qo'ying va uning o'rniga oddiy Antropik-mos keladigan provayderni qo'shing. --- ## 21. Proksi salomatligi | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Tez bajarilmagan sog'liqni tekshirish vaqti tugashi. | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Kechikish uchun optimallashtirilgan hovuz strategiyasida nomzod proksi-serverlarining o'rtacha kechikishini hisoblash uchun vaqt oynasi (soat). | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | Salomatlik tekshiruvi natijasi kesh TTL. | | `NONE_HONORED_WINDOW_HOURS` | `24` | `src/lib/db/reasoningEffortCompliance.ts` | GET /v1/models/health-da reasoning_effort = none compliance o'quvchi uchun soatlar bo'yicha keyingi oyna. | | `NONE_HONORED_CACHE_TTL_MS` | `20000` | `src/lib/db/reasoningEffortCompliance.ts` | Mos kelmaydigan surat (15-30s) uchun ms-da TTL kesh. | | `NONE_HONORED_MIN_SAMPLE` | `3` | `src/lib/db/reasoningEffortCompliance.ts` | Model o'qishdan oldin hech qanday so'rov bo'lmasligi kerak hurmatli yoki hurmatsiz; uning ostida model noma'lum deb o'qiydi. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | Muvaffaqiyatsiz proksi salomatligi tekshiruvlari uchun TTL kesh. Buni `PROXY_HEALTH_CACHE_TTL_MS` dan qisqaroq qilib qo‘ying, shuning uchun proksi-serverning vaqtinchalik taym-autlari yuqori parallellik ostida haqiqatan ham o‘lik proksi-serverlar uchun fast-failni o‘chirmasdan tezda qayta urinib ko‘ring. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Roʻyxatdan oʻtgan proksi-serverlarni vaqti-vaqti bilan tekshirib turuvchi fon proksi salomatligini rejalashtiruvchisini oʻchirib qoʻyish uchun `false` sozlang. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Orqa fon holatini rejalashtirish oralig'i milodiy (minimal `60000`). | | `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Zondlari hisoblangan serversiz izolyatsiyani uyg'otadigan chekka o'rni proksi-serverlari (`deno`/`vercel`/`cloudflare`) uchun prob oralig'i (minimal `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Orqa fonni tiklash-o'tish oralig'i milodiy: ilgari nosog'lom proksi-serverlar qanchalik tez-tez qayta tekshiriladi, shuning uchun tiklangan proksi qayta ishga tushirilmasdan aylanishga qaytadi. `60000` ostidagi qiymatlar sukut bo'yicha qaytadi. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Rejalashtiruvchi va `/api/settings/proxies/auto-test` so‘nggi nuqtasi tomonidan foydalaniladigan erishish imkoniyatini tekshirish maqsadi. Umumiy standartni oldini olish uchun uni internal/self-hosted URL ga qarating. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Zondlar har bir partiyada birdan ishga tushirildi, ularni rejalashtiruvchi va `/api/settings/proxies/auto-test` oxirgi nuqtasi ulashdi. 1-qavatli va 50-da chegaralangan. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | To'plam ichidagi ikkita probning ketishi o'rtasidagi msdagi kechikish. Busiz butun partiya bir vaqtning o'zida ketadi va umumiy chiqish IP tezligi cheklangan maqsadni qo'zg'atishi mumkin. Bo'shliqni o'chirish uchun `0` ga o'rnating; 5000 bilan chegaralangan. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Proksi-server tayinlangan provayderning haqiqiy xostini tekshirishni to'xtatish uchun "noto'g'ri" ni o'rnating (`GET /models`, API kaliti yo'q) va uning o'rniga har doim `PROXY_HEALTH_TEST_URL` foydalaning. | | `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | Qachon `false` (standart), avtomatik kirish problari (rejalashtiruvchi + `/api/settings/proxies/auto-test` "Hammasini sinab ko'rish" tugmasi)** faqat o'qish uchun** va proksi-serverning holatini hech qachon yozmang — faqat operator active/inactive o'rnatadi, shuning uchun xira proksi tayinlangan proksi-serverni (#6246) bog'lay olmaydi. Eski sinov va o'rnatish xatti-harakatlarini tiklash uchun `true` o'rnating. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Ro‘yxatdan o‘tish funksiyasi belgisi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda g‘alaba qozonadi). `true` (yoki `1`, `yes`) bo‘sh 200 yoki bo‘sh kontent 502 ni ko‘rsatish o‘rniga oddiy hisob ma’lumotlari yo‘li bo‘ylab ( `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` qayta urinishlarigacha) bo‘sh tarjima qilingan oqimlarni qaytadan urinib ko‘radi. | | `EMPTY_STREAM_SIBLING_RECOVERY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Ro‘yxatdan o‘tish funksiyasi belgisi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda g‘alaba qozonadi). `true` (yoki `1`, `yes`) Claude/Codex bo‘sh oqimli kontent tekshiruvini qurollantiradi va mavjud cheklangan qayta urinishni `empty_content` burilishidan so‘ng sovutish yoki model blokirovkasisiz boshqa muvofiq ulanishga sarflaydi. | | `STREAM_LATE_OUTPUT_PROBE_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Ro‘yxatdan o‘tish funksiyasi belgisi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda g‘alaba qozonadi). `true` (yoki `1`, `yes`) birinchi 64 tadan so‘ng 16 ta yo‘naltirilgan bo‘lakdan namuna olishni davom ettiradi, shuning uchun kech ko‘rinadigan chiqish oqimni chiqayotgan deb belgilab qo‘yadi (yagona post-chiqish 5xx faqat modeldagi blokirovka o‘rniga so‘rov doirasida qoladi). | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Ro‘yxatdan o‘tish funksiyasi belgisi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda g‘alaba qozonadi). `true` (yoki `1`, `yes`) asboblar panelidagi proksi-pul ostida faqat o‘qish uchun mo‘ljallangan hovuz chiqish kuzatuvini ko‘rsatadi (alohida chiqish IPs, ulanishlar va proksi-server jurnalidan oxirgi 24 soat ichida bir IP ortida eng ko‘p ko‘rilgan). Hech qachon marshrutlash uchun ishlatilmaydi. | | `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Ro‘yxatdan o‘tish funksiyasi belgisi (qarang [FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ; boshqaruv paneli DB bekor qilinganda g‘alaba qozonadi). `true` (yoki `1`, `yes`) har bir hovuz aʼzosi uchun operator tomonidan qoʻyilgan sana koʻrsatilgan manzillarni qabul qiladi va ularni displey va hovuz tartibi uchun oʻqilgan jurnal bilan birlashtiradi. | | `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Operator tomonidan boshqariladigan chiqish qatorlari uchun soatlardagi kuzatish oynasi (har bir o'qishda o'qing; qayta ishga tushirish kerak emas). 1..168 bilan chegaralangan; diapazondan tashqarida, raqamli bo'lmagan yoki bo'sh 24 ga qaytadi, bitta jarayon bo'yicha ogohlantirish bilan, hech qachon otish mumkin emas. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Takroriy ketma-ket nosozliklardan keyin rejalashtiruvchi proksi-serverlarni avtomatik ravishda o'chirishga ruxsat berish uchun `true` o'rnating. | | `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | Rejalashtiruvchi proksi-serverni avtomatik ravishda o'chirishdan oldin ketma-ket nosozliklar ( `PROXY_AUTO_REMOVE=true` qachon). | | `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Proksi-serverni o‘chirish o‘rniga, ketma-ket ketma-ket nosozliklar sodir bo‘lganidan keyin rejalashtiruvchiga uni o‘chirib qo‘yishi ( `dead` holati, hech qachon o‘chirilmagan) uchun `true` sozlang. `PROXY_AUTO_REMOVE` ga buzilmaydigan muqobil: proksi-server pool/rotation rezolyutsiyasidan darhol chiqib ketadi (ko‘lamli havza rezolyutsiyasi tomonidan foydalaniladigan tirik holat filtri allaqachon uni istisno qiladi) va tekshiruvlarni qaytadan o‘tkazishni boshlaganda avtomatik ravishda qayta faollashadi. `PROXY_AUTO_REMOVE_AFTER` chegarasini baham ko‘radi. Agar ikkala bayroq ham `true` bo'lsa, `PROXY_AUTO_REMOVE` yutadi. | | `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | Ro‘yxatdan o‘tish passiv o‘tkazib yuborish: `true` bo‘lganda, rejalashtiruvchi so‘nggi ishlab chiqarish trafigini allaqachon isbotlagan so‘nggi nuqta uchun jonli tekshiruvni o‘tkazib yuboradi (kamida bitta muvaffaqiyat va oynada proksi-server xatosi yo‘q, aynan bitta provayder kuzatilgan). Sukut bo'yicha o'chirilgan: har bir proksi tekshiriladi. | | `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Passiv o'tkazib yuborilgan ishlab chiqarish trafigidagi oynaga qaraydi (chegaralangan `60000..599999`). 10 daqiqalik supurish oralig'idan qisqaroq, shuning uchun suyultirish o'rniga yaqinda yuzaga kelgan nosozlik ustunlik qiladi. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | OAuth va provayderni tekshirish oqimlariga mahkamlangan proksi-serverni chetlab o‘tish va proksi-serverga kirish imkoniyatini oldindan tekshirish muvaffaqiyatsiz tugagach, to‘g‘ridan-to‘g‘ri ulanishga ruxsat bering. Samarali ustunlik Feature Flags DB override > env var > default hisoblanadi. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30s) | `src/lib/resilience/settings.ts` | Standart** navbat - kutish** byudjet: so'rov provayder uchun joyni qancha kutishi va rad etilishidan oldin navbatda turishi mumkin, hech qachon yuqori oqimga etib bormaydi. Ish — bajarilishini bajarishni boshlagandan so'ng taymer tozalanadi, alohida `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` bilan chegaralanadi. Env faqat sukut bo'yicha o'rnatadi: doimiy `resilienceSettings.requestQueue.maxWaitMs`, keyin esa har bir ulanish uchun `rateLimitOverrides.maxWaitMs`, har biri undan g'alaba qozonadi. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 daqiqa) | `open-sse/services/rateLimitManager.ts` | Qabul qilingan soʻrov qancha vaqt davomida bajarilishda qolishi mumkin, uning tarif chegarasi bandlov muddati tugaguniga qadar, navbat kutish byudjetidan ajratilgan —, shuning uchun oʻsish boʻlmagan shlyuzlarda sekin yuklanish vaqti tugamaydi (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (o'chirilgan) | `open-sse/services/rateLimitManager.ts` | Navbatga kirish cheklovi: shu qadar koʻp soʻrovlar navbatga qoʻyilgan boʻlsa, 429 `queue_full` bilan rad qiling. `0` = cheklanmagan (standart). | | `RATE_LIMIT_AUTO_ENABLE` | _(o'rnatilmagan)_ | `open-sse/services/rateLimitManager.ts` | Doimiy boshqaruv paneli sozlamasidan (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`) qat'i nazar, avtomatik yoqish tezligi chegarasi xavfsizlik on/off majburlash. Majburlash uchun `true`/`1`/`on`, majburlash uchun `false`/`0`/`off` ni qabul qiladi. Faol bo'lganda (standart), faol API-kalit ulanishlari avtomatik ravishda tezlik chegarasidan himoyalanadi. Har bir ulanish uchun `rateLimitProtection: false` sozlanishi aniq himoyani o'chiradi, lekin bu xavfsizlik tarmog'idan voz kechmaydi; bu env var ni `false` ga sozlash API-kalitli ulanishlarni tezlik chegarasi navbatlarisiz ishga tushirishning global mexanizmidir. | | `PROVIDER_COOLDOWN_ENABLED` | _( → oʻchirilgan)_ | `open-sse/services/providerCooldownTracker.ts` | Global oʻzaro soʻrov provider/connection sovishini kuzatishga qoʻshiling. sukut bo'yicha OFF (Ulanishni sovutish / Provayderning o'chirgichi bilan bir-biriga mos keladi). Yoqish uchun `true`/`1`/`on` ni qabul qiladi. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Muvaffaqiyatsiz provider/connection qayta urinishdan oldin minimal sovutish vaqti (ms). Ketma-ket nosozliklar bilan eksponent ravishda o'lchaydi. Faqat `PROVIDER_COOLDOWN_ENABLED` qachon ishlatiladi. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 daqiqa) | `open-sse/services/providerCooldownTracker.ts` | Muvaffaqiyatsiz provider/connection qayta urinishdan oldin maksimal sovutish (ms) chegarasi. Faqat `PROVIDER_COOLDOWN_ENABLED` qachon ishlatiladi. | | `STREAM_RECOVERY_ENABLED` | _( → oʻchirilgan)_ | `src/lib/resilience/settings.ts` (urug') → `open-sse/services/streamRecovery.ts` (mantiq) | **Nima:** kesilgan yuqori oqimlarni shaffof qayta tiklash (erkin-kloud-kod porti). Ochilgan SSE oynasini `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) gacha ushlab turadi, shuning uchun har qanday bayt mijoz — ga yetguncha sodir bo'ladigan _pre-commit_ cutoff — qayta ochiladi va ko'rinmas tarzda qayta urinib ko'riladi.** Qachon yoqish kerak:** flaky/upstreams, bu tez-tez oqim boshlanishida 0-bayt-qisqariladi; Agar har bir oqimda 750 ms gacha qo'shilgan vaqtni tokenga qo'shish imkoni bo'lmasa, OFF qoldiring. `true`/`1`/`on` ni qabul qiladi. Doimiy chidamlilik sozlamasini urug'lar; Boshqaruv paneli sozlamalari o'rnatilgandan keyin g'alaba qozonadi. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _( → oʻchirilgan)_ | `src/lib/resilience/settings.ts` (urug') → `open-sse/services/streamRecovery.ts` (mantiq) | **Nima:** o'rta oqim davomi (Fase 4.4) — _post-commit_ kesilgandan so'ng (baytlar allaqachon mijozga yetib kelgan), yordamchi oldindan to'ldirish sifatida qisman matn bilan qayta so'rov yuboring va etishmayotgan qo'shimchani tiking. Faqat ochiq matnli OpenAI-mos keladigan oqimlar; hech qachon parvoz paytida asbob chaqiruvi bilan yonmaydi.** Qachon yoqish kerak:** javob o'rtasida kesilgan uzoq avlodlar va siz tiklangan dumini token-by-token emas, balki bir yorilish sifatida kelishini qabul qilasiz. `STREAM_RECOVERY_ENABLED` dan mustaqil (turli xavf profili). `true`/`1`/`on` ni qabul qiladi. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _( → oʻchirilgan)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Faol oqimli foydali chiqish kuzatuvchisiga qo‘shiling. Bo'laklarni jo'natishni davom ettiradigan, lekin sozlangan yordamchi chiqish tezligidan past bo'lgan oqimlarni aniqlaydi; yurak urishi, foydalanish hodisalari, bo'sh deltalar va tool/reasoning fazalari progress sifatida niqoblanmaydi. Bo'sh va qattiq muddatdagi taym-autlardan ajrating. Urug'lar faqat sukut bo'yicha: `resilienceSettings` da saqlangan mantiqiy qiymat (Dashboard → Settings → Resilience) ustunlik qiladi. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | O'tkazish qobiliyatini baholashdan oldingi imtiyozli davr, 0–600000 ms gacha cheklangan. | | `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | 1000–600000 ms gacha chegaralangan foydali chiqish oynasi; bekor qilishdan oldin bitta to'liq oyna kerak. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Minimal UTF-8 yordamchisi chiqish bayt tezligi (konservativ token proksi), 1–1000000 gacha chegaralangan. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Minimal nolga teng bo'lmagan foydali chiqish namunasi o'lchanadigan hisoblanadi, 1–1000000 bayt bilan chegaralangan. | | `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Ishga tushganda provayder tokenlarining sogʻligʻini tekshirish oraligʻi (ms). | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Yorilishni oldini olish uchun provayder tokenlarining sog'lig'ini tekshirishlari o'rtasida `HEALTHCHECK_STAGGER_MS` ustiga qo'shilgan minimal tasodifiy jitter (ms) (1220-son). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Yorilishni oldini olish uchun provayder tokenlarining sog'lig'ini tekshirishlari o'rtasida `HEALTHCHECK_STAGGER_MS` ustiga qo'shilgan maksimal tasodifiy jitter (ms) (1220-son). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Startup token-healthcheck tekshiruvi uchun bir vaqtning o'zida paket hajmini tekshiring; kattaroq qiymatlar parallel ravishda ko'proq ulanishlarni tekshiradi, kichikroq qiymatlar portlash yukini kamaytiradi (7875-son, regressiya №7719). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Xatoni mijozga qaytarishdan oldin model doirasidagi sovutish javoblarida avtomatik qayta urinishlar soni. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Sovutish takroriy urinishlari orasidagi maksimal orqaga qaytish oralig'i (sekundlar). Yuqori oqim `Retry-After` dan qat'iy nazar, bu qiymat bilan chegaralangan. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | Headroom token-saver proksi URL. Boshqaruv panelining ishlash davri (`api/headroom/*`) sukut bo'yicha loopbackda mahalliy `headroom-ai` CLI yaratadi; faqat tashqi Docker sidecar proksi-serveriga ishora qilish uchun bekor qiling. | ### Oqimni tiklashni sozlash konstantalari Qayta tiklashni ushlab turish xatti-harakati `open-sse/config/constants.ts` (`STREAM_RECOVERY`) da qattiq kodlangan konstantalar tomonidan sozlangan, bu yerda maʼlumot uchun koʻrsatilgan — ularni oʻzgartirish env var emas, balki kodni tahrirlashni talab qiladi: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — ochilish SSE oynasi qancha vaqt ushlab turiladi, shuning uchun har qanday bayt mijozga topshirilgunga qadar erta qisqartirishni qaytadan sinab ko'rish mumkin. - ushlab turgan oynada `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — qattiq qalpoq; Taymerdan qat'i nazar, shuncha ko'p bayt to'planishi bilanoq amalga oshiring (fush + passthrough). - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — max transparent yuqori oqimni qayta ochadi, shu bilan birga ushlab turish hali ham bajarilmagan. > **Har bir provayder uchun to‘g‘ridan-to‘g‘ri oyna tezligi chegarasi (env var emas):** FCC tomonidan har bir provayderga o'rnatilgan toymasin oyna tezligi chegarasi _fallback_ kodda mavjud (`open-sse/services/providerDefaultRateLimit.ts`, `open-sse/services/rateLimitManager.ts` orqali uzatiladi ) lekin** bo'sh standart xarita** va bor** operator yo'q env var** bugun — u faqat sinov kancasi/kodni tahrirlash orqali yoqilgan. Yuqoridagi jadvalda ataylab ko'rsatilmagan. Tutqichga ega bo'lgan per-`(token, IP)` o'rni cheklovchisi `RELAY_IP_PER_MINUTE` (§3 Tarmoq va portlar). --- ## 22. Nosozliklarni tuzatish > [!CAUTION] > Bu o'zgaruvchilar ishlab chiqaradi** batafsil chiqish** va maxfiy ma'lumotlar sizib chiqishi mumkin.** Ishlab chiqarishda hech qachon yoqmang.** | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CURSOR_DEBUG` | _(o'rnatilmagan)_ | `open-sse/executors/cursor.ts` | Batafsil Cursor ijrochi jurnallarini (dekodlangan SSE bo'laklari va boshqalar) yoqish uchun `1` o'rnating. | | `CURSOR_STREAM_DEBUG` | _(o'rnatilmagan)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG` ning orqaga mos keluvchi taxallus. | | `CURSOR_DUMP_FILE` | _(o'rnatilmagan)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG=1` bo'lganda xom dekodlangan Cursor qismlarini qabul qiluvchi ixtiyoriy fayl yo'li. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Cursor ijrochisi uchun oqimning bo'sh vaqti (ms). | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Baytlar buferlangan bo'lsa, kompozitor kv_after_text yumshoq terminatoridan keyin imtihon oynasi (ms) — orqadagi exec_mcp asbobiga ramkani bajarish uchun chaqiruv vaqtini beradi. | | `CURSOR_TOOL_DIRECTIVE` | yoqilgan (`!== "0"`) | `open-sse/executors/cursor.ts` | Tool-commit direktivasi composer-2.5 ni ishonchli tarzda asbob chaqiruvlarini chiqaradi. `0` ni o'chirib qo'ying. | | `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(o'rnatilmagan)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Operator tomonidan belgilangan tizim xabari AFTER tarjimasiga (tarjimadan keyingi in'ektsiya) qo'shilgan, codex/Responses va `/v1/messages` yo'llariga yetib boradi. Bundan tashqari, aks-sadolangan tizim kirish bloklaridan ajratilgan direktiv prefiks sifatida ishlatiladi. Oʻchirish uchun sozlanmagan holda qoldiring. | | `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (o'chirilgan) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | Openai → claude oqimining boshidan aks-sadolangan tizim taklifi kirish bloklarini olib tashlash uchun `1` sozlang. Sukut bo'yicha o'chirilgan — evristika inglizcha nasr shaklida bo'lib, javob yukini o'zgartiradi, shuning uchun qonuniy ravishda bunday bo'lim bilan ochilgan javob uni yo'qotadi. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Masofaviy `image_url` koʻrish usuli uchun har bir tasvirni olish vaqti (ms). | | `CURSOR_STATE_DB_PATH` | _(tekshirilgan)_ | `open-sse/utils/cursorVersionDetector.ts` | IDE versiyasini aniqlash uchun ishlatiladigan Cursor IDE holati DB qidiruvini bekor qiling. | | `CURSOR_AGENT_CLI_VERSION` | _(aniqlash / pin)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Agent Run-da `x-cursor-client-version: cli-…` uchun agent CLI qurish identifikatori (`YYYY.MM.DD-`). | | `CURSOR_AGENT_BIN` | _(o'rnatilmagan)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Tasvir yaratish uchun foydalaniladigan Cursor Agent binariga yoʻl. Belgilanmagan, ishlov beruvchi `providerSpecificData.agentBin` keyin PATH foydalanadi. | | `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor Agent tasvir ishlari uchun har bir tasvir uchun devor soati (ms). | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor tasvir ishlari uchun umumiy oʻrindiqli bir vaqtda kirish eshigi. | | `CURSOR_IMG_MODEL` | so'rov / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Tasvir vazifalari uchun Cursor CLI `--model` bekor qiling. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC (uncensored.com) image-gen natijalari-so'rovnoma kadansi (ms). | | `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC image-gen natijasi-so'rovnoma devor soati (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC (uncensored.com) video-gen natijalari-so'rovnoma kadansi (ms). | | `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC video-gen natijasi-so'rovnoma devor soati (ms). | | `CURSOR_DATA_DIR` | _(tekshirilgan)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Cursor Agent CLI ma'lumotlar direktorini bekor qilish (`…/versions/`); rasmiy agent foydalanadigan bir xil. | | `CURSOR_TOKEN` | _(o'rnatilmagan)_ | `scripts/ad-hoc/cursor-tap.cjs` | Ishlab chiquvchi asboblari tomonidan foydalaniladigan bevosita Cursor tokeni. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | o'chirilgan ( `"1"` orqali ro'yxatdan o'tish) | `src/app/api/v1/chat/completions/route.ts` | `"1"` o'rnatilganda katta chat yuklamalari uchun content-type/length markerlarini kiriting. Jurnal shovqinini kamaytirish uchun sukut bo'yicha o'chirilgan. | | `DEBUG_RESPONSES_SSE_TO_JSON` | _(o'rnatilmagan)_ | `open-sse/handlers/responseTranslator.ts` | Javoblar API SSE→JSON tarjimasi tafsilotlarini jurnalga kiritish uchun `true` o‘rnating. | | `DEBUG_CLAUDE_NONSTREAM` | _(o'rnatilmagan)_ | `open-sse/handlers/responseTranslator.ts` | Claude javob tarjimasi yoʻlida boʻsh textContent boʻlaklarini yuzaga chiqarish uchun `true` oʻrnating (faqat disk raskadrovka). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(o'rnatilmagan)_ | E2E sinov jabduqlari | E2E test rejimini yoqish uchun `true` o'rnating (bo'sh autentifikatsiya, test ilgaklari). | --- ## 23. GitHub integratsiyasi Foydalanuvchilarga muammolar haqida bevosita boshqaruv panelidan xabar berishga ruxsat bering. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | --------------------- | ----------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `GITHUB_ISSUES_REPO` | _(o'rnatilmagan)_ | `src/app/api/v1/issues/report/route.ts` | `owner/repo` formatida ombor. | | `GITHUB_ISSUES_TOKEN` | _(o'rnatilmagan)_ | `src/app/api/v1/issues/report/route.ts` | GitHub Shaxsiy kirish tokeni `issues:write` ko'lami bilan. | | `GITHUB_TOKEN` | _(o'rnatilmagan)_ | triaj / bulutli agent yordamchilarini chiqarish | Umumiy GitHub kirish tokeni `GITHUB_ISSUES_TOKEN` uchun zaxira sifatida ishlatiladi va `src/lib/cloudAgent/*` bulut agenti yordamchilari tomonidan isteʼmol qilinadi. | --- ## Bepul darajadagi Keep-Alive render Render bepul veb-xizmatni kiruvchi trafiksiz taxminan 15 daqiqadan so'ng o'chirib qo'yadi. Mustaqil ishga tushirish moslamasi (`scripts/dev/run-standalone.mjs`, Docker tasviri ishlaydi) buni oldini olish uchun xizmatning o'zining umumiy URL ping yuborishi mumkin. Umumiy URL mavjud bo'lmasa, u hech narsa qilmaydi va faqat holat o'zgarganda jurnalga kiradi. | O'zgaruvchan | Standart | Tavsif | | ---------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | `SELF_PING_ENABLED` | URL o'rnatilganda | `0`, `false`, `off` yoki `no` pingerni o'chiradi. Undan hech narsa aylanmaydigan pullik Render rejalarida foydalaning. | | `SELF_PING_URL` | `RENDER_EXTERNAL_URL` | Ping uchun URL bazasi. Render har bir rejada `RENDER_EXTERNAL_URL` o'zini o'rnatadi, shuning uchun pinger sukut bo'yicha u erda bo'ladi. | | `SELF_PING_PATH` | `/api/monitoring/health` | Bu URL bo'yicha yo'l. `/` bilan boshlash kerak; boshqa narsa ogohlantirish bilan pingerni o'chirib qo'yadi. | | `SELF_PING_INTERVAL_SECONDS` | `180` | Pinglar orasidagi soniyalar, birinchi pingdan keyin 60 soniya. `30` ostidagi qiymatlar `180` ga qaytadi. | Bir oy davomida hushyor turgan xizmat taxminan 744 soat vaqt sarflaydi, shuning uchun uni Renderning joriy bepul darajali toʻlovi bilan tekshiring. ## Joylashtirish stsenariylari Relay backend SRE yoʻl-yoʻriqlari (ts/bifrost/auto xatti-harakati, 9router va CLIProxyAPI joylashuvi va yuqori mahsuldorlikni qaytarish strategiyasi) uchun [Relay Backend strategiyasiga](/docs/reference/RELAY_BACKEND_STRATEGY.md) qarang. ### Minimal mahalliy rivojlanish ```bash JWT_SECRET=$(openssl rand -base64 48) API_KEY_SECRET=$(openssl rand -hex 32) INITIAL_PASSWORD=dev123 PORT=20128 NODE_ENV=development ``` ### Docker ishlab chiqarish ```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 ``` ### Havo bo'shlig'i / 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 ``` ### Teskari proksi bilan 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 +) Cheklovlar va xavfsizlik tugmalari Skills Framework (`src/lib/skills/`) sinov muhitida foydalanuvchi tomonidan belgilangan avtomatlashtirishni amalga oshirganda qo'llaniladi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | -------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 s) | `src/lib/skills/builtins.ts` | Sandboxed mahorat kodi uchun har bir ijro uchun devor soati taymout. Qattiq qopqoq; boshqa narsa o'ldiriladi. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _( `SKILLS_SANDBOX_TIMEOUT_MS` qaytadi)_ | `src/lib/skills/` | Yuqori darajadagi mahorat orkestrining taym-out. Ko'p bosqichli ish jarayonlariga ruxsat berish uchun `SKILLS_SANDBOX_TIMEOUT_MS` dan yuqoriroq qilib belgilang. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Ko'nikma har qanday bitta sinovli fayldan o'qilishi mumkin bo'lgan maksimal baytlar. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Ko'nikma ichidagi har qanday bitta HTTP javobidan olingan maksimal baytlar. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Sinov qutisi chaqiruvidan qaytgan stdout/stderr belgilar uchun qattiq bosh harf. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Sandbox ichidan chiquvchi tarmoqqa ruxsat berish uchun `1`/`true` ni o'rnating. Birlamchi:** izolyatsiya qilingan** xavfsizlik uchun. `agent-sandbox` ish vaqti e'tiborga olinmaydi: tarmoq izolyatsiyasi, faqat o'qish uchun ildiz fayl tizimi va CPU/memory chegaralari operatorning `SandboxTemplate` dan kelib chiqadi. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(bo'sh)_ | `src/lib/skills/builtins.ts` | Sinov muhitini ishga tushirishga ruxsat berilgan konteyner tasvirlarining vergul bilan ajratilgan ruxsat etilgan roʻyxati. Bo'sh faqat o'rnatilgan standartni bildiradi. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(oʻrnatilgan sukut boʻyicha)_ | `src/lib/skills/` | Docker tomonidan qo'llab-quvvatlanadigan sandboxni yaratishda ishlatiladigan konteyner tasviri. Maxsus qattiqlashtirilgan asosiy tasvirni mahkamlash uchun bekor qiling. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Qobiliyatli sandboxing uchun konteyner ish vaqti: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman` \| `agent-sandbox`. `auto` har bir xost uchun eng yaxshi o‘rnatilgan ish vaqtini tanlaydi OS (Apple Container/OrbStack on macOS, WSL Container on Windows, Podman on Linux), Docker ga qaytadi. `agent-sandbox` (uzoqdagi Kubernetes issiq hovuzlari) faqat ro'yxatdan o'tadi va hech qachon avtomatik ravishda aniqlanmaydi. | | `SKILLS_AGENT_SANDBOX_POOLS` | _(bo'sh)_ | `src/lib/skills/agentSandboxProvider.ts` | `image=pool` juftlari, vergul bilan ajratilgan: qaysi `SandboxWarmPool` `SKILLS_SANDBOX_RUNTIME=agent-sandbox` boʻlsa, har bir sinov muhiti tasviriga xizmat qiladi. | | `SKILLS_AGENT_SANDBOX_POOL` | _(bo'sh)_ | `src/lib/skills/agentSandboxProvider.ts` | `SKILLS_AGENT_SANDBOX_POOLS` ro'yxatida bo'lmagan tasvirlar uchun Fallback iliq hovuz. Ishlash muvaffaqiyatsiz tugadi (mahalliy konteynerlarga qaytish yo'q). | | `SKILLS_AGENT_SANDBOX_NAMESPACE` | `default` | `src/lib/skills/agentSandboxProvider.ts` | Issiq hovuzlarni ushlab turadigan nomlar maydoni; Bu yerda har bir ishga bir `SandboxClaim` yaratiladi va oʻchiriladi. | | `SKILLS_AGENT_SANDBOX_KUBECONFIG` | _(kubectl standart)_ | `src/lib/skills/agentSandboxProvider.ts` | Agent-sandbox ish vaqti uchun Kubeconfig. Faqat nomlar maydonida create/get/list/watch/delete, pods get, pods/exec yaratish uchun sandbox da'volari kerak. | | `SKILLS_AGENT_SANDBOX_KUBECTL` | `kubectl` | `src/lib/skills/agentSandboxProvider.ts` | agent-sandbox ish vaqti tomonidan ishlatiladigan kubectl ikkilik. | | `SKILLS_AGENT_SANDBOX_CONTAINER` | `main` | `src/lib/skills/agentSandboxProvider.ts` | Buyruqlar bajariladigan sinov qutisi ichidagi konteyner nomi. | | `SKILLS_AGENT_SANDBOX_CLAIM_TIMEOUT_S` | `60` | `src/lib/skills/agentSandboxProvider.ts` | Da'vo tayyor bo'lishini kutish uchun soniyalar (maksimal 600). Agar hech qachon bo'lmasa, da'vo o'chiriladi. | > [!CAUTION] > `SKILLS_SANDBOX_NETWORK_ENABLED=true` yoqish ixtiyoriy mahorat kodidan chiqish yo'lini ochadi. Umumiy oʻrnatishlarda `OUTBOUND_SSRF_GUARD_ENABLED=true` va qatʼiy `CORS_ORIGIN`/proksi siyosati bilan bogʻlang. --- ## 25. Provayder kvotalari, tunnellar, zaxira nusxalar va ish vaqtidagi boshqa jihatlar Redis sessiya-yaqinligi zaxirasini bekor qilish (faqat ixtiyoriy ravishda yoqiladi; SQLite standart holati o‘zgarmaydi): Har bir Redis yaqinlik ombori bir vaqtning o‘zida ko‘pi bilan 8 ta yakunlanmagan operatsiyani qabul qiladi; sig‘im to‘lganda, chaqiruvlar darhol SQLite’dan foydalanadi va slotlar, hatto chaqiruvchining 100 ms muddati tugaganidan keyin ham, asosiy Redis ishi yakunlanguncha band bo‘lib qoladi. - R1. Sessiya operatsiyasi uchun o‘z vaqtida yetkazilgan har qanday Redis javobi asosiy hisoblanadi: qabul qilingan mutatsiyalar, rad etilgan yoki yo‘qotilgan CAS operatsiyalari, mavjud bo‘lmagan kalitlar, mavjud bo‘lmagan kalitlarni o‘chirish va eviction natijasidagi mos kelish yoki mos kelmaslik holatlari ushbu sessiyaning mahalliy zaxira yozuvini sinxron tarzda tozalaydi; javob kelishi va tozalash orasida `await` ishlatilmaydi. Tozalash xavfsizdir (eng yomon holatda keyingi uzilish vaqtida yana bir marta tanlash amalga oshadi); eskirgan yozuv esa xavfsiz emas. - R2. Operatsiya vaqt tugashi yoki xato sababli yakunlanib, mahalliy zaxiraga yozsa, aynan serializatsiya qilingan baytlar ko‘rinishida nima yozganini qayd etadi. Redis buyrug‘i kechikib yakunlansa, sinxron SQLite compare-and-delete faqat baytlari aynan bir xil bo‘lgan shu yozuvni tozalaydi; bu hech qachon akkaunt yoki ulanish mosligi bo‘yicha amalga oshirilmaydi. Uzilish vaqtida keyinroq yozilgan yangi qiymat saqlanib qoladi. - R3. Eviction uzilish vaqtida ham muvaffaqiyatsiz akkauntning mahalliy pinini har doim olib tashlaydi; uning javobini qayta ishlash keyin R1/R2 qoidalariga amal qiladi. Sog‘lom Redis hech qachon mahalliy pinlar yozmaydi: mirror yoki tartibga solish reyestri mavjud emas va uzilish vaqtida instansiyalar o‘rtasida tafovut paydo bo‘lishi mumkin. Provayder kvotasi endpointlari, tarmoq tunnellari (Tailscale, Ngrok, MITM debug proksisi), 1Proxy chiqish havzasi, ma’lumotlar bazasi zaxira nusxalari hamda executor qatlami yoki skriptlar murojaat qiladigan har bir funksiya uchun kichik o‘zgartirishlar. | O‘zgaruvchi | Standart qiymat | Manba fayli | Tavsif | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_SESSION_AFFINITY_STORE` | `sqlite` | `src/lib/db/sessionAffinity/storeFactory.ts` | Sessiyani hisobga bog‘lash backend’i. Faqat `redis` va sozlangan `REDIS_URL` birgalikda ulashishni yoqadi; o‘rnatilmagan yoki noma’lum qiymatlar, shuningdek Redis konfiguratsiyasi mavjud bo‘lmaganda SQLite ishlatiladi. Musbat `sessionAffinityTtlMs` qiymatini talab qiladi. Redis marshrutlashida xeshlangan foydalanish hisobi identifikatori va ulanish ID’si saqlanadi; standart SQLite marshrutlashi esa eski to‘rt maydonli JSON shaklini saqlab qoladi. ID bo‘yicha moslashtirishdan oldin mos keluvchi mahalliy havzadagi identifikatorni tekshiradi. Umumiy mijozning `REDIS_KEY_PREFIX` qiymati, JSON qiymatlari va `PX` TTL’dan foydalanadi; mutatsiyalar aynan kuzatilgan qiymatni taqqoslaydi. Sog‘lom Redis javoblari mahalliy uzilish zaxira mexanizmini bekor qiladi, kechikib kelgan javob esa faqat vaqt tugagan operatsiya yozgan aynan seriyalashtirilgan zaxira qatorini tozalashi mumkin. Oldindan olingan pinlar foydalanish vaqtida qayta tekshiriladi. Redis xatolari, vaqt tugashi yoki qabul qilish sig‘imining to‘lib qolishi SQLite’ga o‘tishga sabab bo‘ladi va tezligi cheklangan ogohlantirishlar chiqaradi (har bir store chaqiruvi uchun 100 ms chegarasi); Redis’dan muvaffaqiyatli olingan miss holatlari shadow’ni o‘qimaydi. Combo yopishqoqligi, native Codex turn pinlari, hisoblar parallel ishlashi, bloklashlar yoki sarf limitlarini ulashmaydi. | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Rate limiter backend’i uchun Redis ulanish qatori. | | `ALIBABA_CODING_PLAN_HOST` | _(ishlab chiqarish xosti)_ | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian coding-plan kvotalarini olishda ishlatiladigan xostni almashtirish. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | xostdan hosil qilinadi | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian uchun kvota URL’sini to‘liq almashtirish. | | `QWEN_CLOUD_COOKIE` | _(o‘rnatilmagan)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Qwen Cloud / Model Studio shaxsiy Token Plan kvota shlyuzi uchun konsol sessiyasi cookie’si (inference API kaliti uni o‘qiy olmaydi). `home.qwencloud.com` saytidagi Billing › Subscription bo‘limidan (F12 › Network) `cs-data.qwencloud.com` manziliga yuborilgan istalgan `api.json` chaqiruvining butun `Cookie` so‘rov sarlavhasini nusxalang — unda `login_qwencloud_ticket` mavjud. Maxfiy va sessiyaga bog‘liq; Dashboard’dagi ulanishga xos `qwenCloudCookie` maydonidan foydalanish ma’qul. | | `QWEN_CLOUD_SEC_TOKEN` | _(o‘rnatilmagan)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Token Plan konsol shlyuzi uchun qo‘lda beriladigan `sec_token` qiymatini almashtirish. Maxfiy; o‘rnatilmaganda fetcher uni cookie yordamida dashboard HTML’idan aniqlaydi. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Shaxsiy Token Plan kvotasini oluvchi uchun gateway hostini almashtirish (masalan, Model Studio konsoli uchun `bailian-singapore-cs.alibabacloud.com`). | | `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Tizimga kirilgan HTML tarkibidan `sec_token` ni aniqlash uchun ishlatiladigan boshqaruv paneli URL manzili. | | `XIAOMI_MIMO_CONSOLE_COOKIE` | _(o‘rnatilmagan)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Xiaomi MiMo Token Plan kvotasi API’si uchun konsol sessiyasi cookie’si (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — inference API kaliti uni o‘qiy olmaydi). Token Plan sahifasida `platform.xiaomimimo.com` ga yuborilgan istalgan so‘rovdan (F12 › Network) to‘liq `Cookie` so‘rov sarlavhasini nusxalang — unda `api-platform_serviceToken` va `userId` mavjud. Maxfiy va sessiyaga bog‘liq; Dashboard’dagi har bir ulanish uchun mo‘ljallangan `xiaomiMimoConsoleCookie` maydonidan foydalanish ma’qul. | | `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Konsol cookie’si sozlanmaganida OmniRoute kuzatuvidagi Xiaomi MiMo zaxira varianti uchun oylik budjet (Credits). Standart qiymat Lite darajasidagi 4.1B; uni tarif rejasidagi Credits qiymatiga o‘rnating (Standard 11B / Pro 38B / Max 82B). Har bir ulanish uchun berilgan `providerSpecificData.monthlyTokenLimit` qiymati ushbu muhit o‘zgaruvchisidan ustun turadi. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio bepul darajasidagi vision/media kvotasini olish uchun konsol front-end yo‘li ustidan beriladigan almashtirish. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio bepul darajasidagi multimodal kvotani olish uchun konsol front-end yo‘li ustidan beriladigan almashtirish. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio bepul darajasidagi audio kvotasini olish uchun konsol front-end yo‘li ustidan beriladigan almashtirish. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(o‘rnatilmagan)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Ichki Alibaba bepul darajadagi matn modellari ruxsat etilgan ro‘yxati uchun mahalliy JSON almashtirish fayliga ixtiyoriy yo‘l. Avval `$DATA_DIR/alibaba-free-tier-allowlist.json`, keyin esa `config/alibaba-free-tier-allowlist.json` fayliga murojaat qiladi. | | `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | Prompt byudjetlarini hisoblashda yakuniy natija uchun zaxiralangan tokenlar. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Kontekst oynasiga sig‘dirish uchun eski rasmlar olib tashlanganda saqlanadigan eng yangi inline rasmlar soni (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | enabled | `open-sse/services/model.ts` | Eski mijozlar foydalanadigan model taxalluslari bilan moslik qatlamini yoqish yoki o‘chirish. | | `OMNIROUTE_EMERGENCY_FALLBACK` | enabled | `open-sse/services/emergencyFallback.ts` | Bepul `nvidia`/`nvidia/nemotron-3.5-super-vl-120b-a12b` modeliga qayta yo‘naltiruvchi, byudjet tugashi sababli bajarilmagan so‘rovlar uchun favqulodda qayta zaxiralash mexanizmini o‘chirish uchun `false` (yoki `0`) qiymatini belgilang. Samarali ustuvorlik tartibi: Feature Flags DB override > muhit o‘zgaruvchisi > standart qiymat; agar mavjud bo‘lmasa, xizmat xom muhit o‘zgaruvchisi qiymatidan foydalanadi. | | `COMMAND_CODE_CALLBACK_PORT` | _(o‘rnatilmagan)_ | `src/app/api/providers/command-code/auth/shared.ts` | Command Code CLI yordamchisidan OAuth uslubidagi qayta chaqiruvlar uchun ishlatiladigan mahalliy port. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Command Code upstream xizmatiga `x-command-code-version` sarlavhasi sifatida yuboriladigan qiymat. CLI versiyasini oshirish uchun ushbu qiymatni o‘zgartiring. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Smartfon kvotasini olish telemetriyasi foydalanadigan Command Code foydalanish/kvota upstream xizmatining asosiy URL manzili. O‘z-o‘zida joylashtirilgan yoki muqobil Command Code API uchun qiymatni o‘zgartiring. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | MITM disk raskadrovka proksisi uchun mahalliy bog‘lanish porti. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Upstream TLS tekshiruvini o‘chirish uchun `1` qiymatini o‘rnating (faqat ishlab chiqish uchun). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Proksi orqali yo‘naltiriladigan ulanishlar uchun faol bo‘lmagan soket taymauti (ms); faol bo‘lmagan soketlar yarim ochiq tunnellar sizib chiqishining oldini olish uchun ushbu qiymatdan keyin yopiladi. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Antigravity MITM ko‘prigi tinglaydigan port. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Ko‘prik Antigravity trafigini yo‘naltiradigan router endpointi. | | `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Ko‘prik TLS materiallarini o‘qiydigan katalogni bekor qiladi. Sertifikat modeli AgentBridge serveridagi kabi tanlanadi: eski leaf o‘rnatilishi uchun `server.crt`/`server.key`, aks holda `ca.crt`/`ca.key` (root CA, ushlangan har bir host uchun bittadan leaf; `MITM_ROOT_CA_ENABLED=true` tomonidan majburan tanlanadi). Faol model uchun kerakli fayllar mavjud bo‘lmasa, ko‘prik ishga tushirish vaqtida yakunlanadi. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Marshrutlash qarorlari jurnali batafsilligi: `0` qiymati jurnalni o‘chiradi, yuqoriroq qiymatlar bypass/marshrutlash qarorlarini ko‘proq qayd etadi. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Root CA + har bir host uchun leaf sertifikat modelidan foydalanishni yoqish uchun `true` qiymatini o‘rnating (#6684). Yangi o‘rnatishlarda bu avtomatik ravishda yoqiladi; oldindan ishonch bildirilgan eski leaf mavjud bo‘lgan o‘rnatishlar esa bu parametr yoqilmaguncha eski o‘zgarmas-SAN sertifikatidan foydalanadi. | | `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | Ishga tushiriladigan proksi jarayoni uchun MITM manager tomonidan o‘rnatiladi (`root-ca` \| `legacy`) — sertifikatni ko‘chirish qarorini aks ettiradi; qo‘lda o‘rnatish uchun mo‘ljallanmagan. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | MITM sertifikatiga ishonch buyruqlaridan boshidagi `sudo`ni olib tashlash uchun `1` (rost qiymat)ni belgilang — operator CA’ga qo‘lda ishonch bildiradigan root’siz / foydalanuvchi nomlar fazosidan foydalanadigan joylashtirishlar uchun (masalan, Node’ning extra-CA-certs mexanizmi orqali). | | `SKIP_ANTIGRAVITY_DNS` | _(o‘rnatilmagan)_ | `src/mitm/dns/provision.ts` | Antigravity proksi xost nomlari uchun `/etc/hosts` DNS yozuvlarini ta’minlashni butunlay o‘tkazib yuborish uchun `true`ni belgilang — sudo/root mavjud bo‘lmagan konteynerlar uchun. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(o‘rnatilmagan)_ | `src/mitm/dns/dnsConfig.ts` | DNS yozuvlarini qo‘shirish yoki olib tashlashda hosts fayliga yozishni o‘tkazib yuborish uchun `1`ni belgilang — sandboxlangan yoki faqat o‘qish mumkin bo‘lgan test muhitlari uchun. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Faqat test/CI uchun himoya: sertifikatga ishonchni o‘rnatish/o‘chirish hech qanday amal bajarmasligi va to‘plam OS ishonch omborini hech qachon o‘zgartirmasligi uchun `1`ni belgilang. Test sozlamalari va CI ish jarayonlari tomonidan avtomatik belgilanadi. | | `CHANGELOG_BASE_REF` | _(auto)_ | `scripts/check/check-changelog-integrity.mjs` | CHANGELOG’ni yeb qo‘yishga qarshi tekshiruv uchun aniq bazaviy ref (CI’da PR’ning bazaviy tarmog‘iga yoki eng yuqori `release/v*`ga sukut bo‘yicha o‘rnatiladi). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Fon rejimida bepul proksi havzasini avtomatik sinxronlashtirish rejalashtiruvchisini yoqish uchun `true`ni belgilang. Ixtiyoriy, sukut bo‘yicha o‘chirilgan. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Avtomatik sinxronlashtirish oralig‘i millisekundlarda (sukut bo‘yicha 30 daqiqa). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy bepul proksi manbasini yoqadi. O‘chirish uchun `false`ni belgilang. | | `FREE_PROXY_1PROXY_API_URL` | _(see oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy API URL manzilini bekor qilish. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Har bir sinxronlashda 1proxy’dan olinadigan proksi serverlarining maksimal soni. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy importlari uchun minimal sifat balli chegarasi. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly bepul proksi manbasini yoqish. O‘chirish uchun `false` qiymatini belgilang. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Har bir Proxifly sinxronlashida olinadigan proksi serverlar soni. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly uchun anonimlik darajasi filtri (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate bepul proksi manbasini yoqish. Faqat foydalanuvchi tomonidan alohida yoqiladi. | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate proksi ro‘yxatining asosiy URL manzilini bekor qilish. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Webshare proksi havzasi manbasini yoqish. Oʻchirish uchun `false` qiymatini belgilang; shuningdek, `FREE_PROXY_WEBSHARE_API_KEY` sozlanishi kerak. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(yoʻq)_ | `src/lib/freeProxyProviders/webshare.ts` | Webshare hisobining API tokeni (`Authorization: Token `). Majburiy — usiz provayder oʻchirilgan holatda qoladi. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Webshare proksi roʻyxati API URL manzilini almashtirish. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Har bir Webshare sinxronizatsiyasida import qilinadigan proksilarning maksimal soni. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Proxy Pool sahifasidagi Vercel Relay'ni joylashtirish tugmasini koʻrsatish/yashirish. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Vercel API asosiy URL manzilini almashtirish (sinov uchun). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Vercel Relay'ni joylashtirish modal oynasida oldindan toʻldiriladigan standart loyiha nomi. | | `TAILSCALE_BIN` | _(avtomatik aniqlash)_ | `src/lib/tailscaleTunnel.ts` | `tailscale` binar faylining aniq yoʻli. | | `TAILSCALED_BIN` | _(auto-detect)_ | `src/lib/tailscaleTunnel.ts` | `tailscaled` demon binar fayliga aniq yo‘l. | | `TAILSCALE_AUTHKEY` | _(unset)_ | `src/lib/tailscaleTunnel.ts` | Interaktiv bo‘lmagan / boshqaruv panelisiz `tailscale up` uchun oldindan ulashilgan Tailscale autentifikatsiya kaliti (`--auth-key=` orqali uzatiladi). O‘rnatilmagan bo‘lsa, tizimga kirish interaktiv brauzer autentifikatsiya URL manziliga o‘tadi. | | `NGROK_AUTHTOKEN` | _(unset)_ | `src/lib/ngrokTunnel.ts` | Chiquvchi ngrok tunnellarini autentifikatsiya qiladi. | | `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Qo‘lda/rejalashtirilgan zaxiralashni tozalash jarayonida saqlanadigan SQLite zaxira fayllarining maksimal soni. Migratsiya snapshotlari kontent manzillari orqali aniqlanadi va bir xil ma’lumotlar bazasi holati uchun qayta ishlatiladi; ular bir vaqtdagi migratsiya oynasi ichida o‘chirib tashlanmaydi. Settings → Database backup retention bo‘limidan saqlangan qiymatni bekor qiladi. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Qo‘lda/rejalashtirilgan zaxiralashni tozalash jarayonida saqlanadigan maksimal yosh (kunlarda). `0` yoshga asoslangan tozalashni o‘chiradi. Migratsiya snapshotlari bir vaqtdagi migratsiya oynasi ichida o‘chirib tashlanmaydi. Settings → Database backup retention bo‘limidan saqlangan qiymatni bekor qiladi. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | `backup-schedule.json` faylini bajaradigan server tomoni vazifasining takrorlanish oralig‘i (ms). 1 daqiqalik cron aniqligidan ancha kichik bo‘lishi kerak; `5000` dan kichik yoki tahlil qilib bo‘lmaydigan qiymatlar `30000` qiymatiga qaytariladi. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Kirish nuqtasidagi ruxsatlarni tekshirish uchun konteyner ish muhiti ko‘rsatkichi. Istalgan Podman topologiyasi uchun `podman` qiymatini o‘rnating. Konteyner vosita lokal ekanini yoki Podman Machine orqali ulanganini aniqlay olmagani sababli, ogohlantirish topologiyaga neytral tarzda qoladi va `contrib/podman/README.md` fayliga yo‘naltiradi. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Kvota ulashuv sarfini saqlash backend’i: `sqlite` (standart) yoki `redis`. | | `QUOTA_STORE_REDIS_URL` | _(o‘rnatilmagan)_ | `src/lib/quota/storeFactory.ts` | `QUOTA_STORE_DRIVER=redis` bo‘lganda ishlatiladigan Redis ulanish satri (masalan, `redis://localhost:6379`). | | `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Pool bandlik koeffitsiyenti (0..1); ushbu qiymatga yetganda yoki undan oshganda pool qat’iy rejimga o‘tadi (qarz olish taqiqlanadi). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Yumshoq kvota siyosati target ustuvorligini pasaytirganda unga qo‘llanadigan ball ko‘paytiruvchisi (0..1). | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Oldindan tekshirish kvotasi chegarasi O‘CHIRILGAN (#4540) bo‘lganda, auto-combo ball berish jarayonida tugagan provayderga (`credits_exhausted`/`rate_limited`) qo‘llanadigan ball ko‘paytiruvchisi (0..1). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | GC (`gcQuotaConsumption`) ishga tushirilishidan oldin `quota_consumption` bucketlarini saqlash muddati (kunlarda). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Foydalanuvchi tomonidan yoqiladi (standart bo‘yicha O‘CHIRILGAN): ball berishdan oldin kvotasi past nomzodlarni chiqarib tashlaydigan auto-routing qat’iy kvota chegarasini yoqadi. Faqat standart qiymatni belgilaydi: `resilienceSettings`da saqlangan boolean qiymat (Dashboard → Settings → Resilience) ustuvor hisoblanadi. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Foydalanuvchi tomonidan yoqiladi (standart bo‘yicha O‘CHIRILGAN): `auto/:` filtri ulangan nomzodlarga mos kelmasa, bo‘sh pool qaytarish o‘rniga to‘liq (filtrlanmagan) poolga qaytuvchi eski xatti-harakatni tiklaydi. Standart bo‘yicha O‘CHIRILGAN holatda `:free` “faqat bepul tarif” degan ma’noni anglatadi. | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | `auto/*:chaos` translyatsiya varianti uchun panel hajmi cheklovi (1–10 oralig‘ida chegaralanadi) — bitta so‘rov ko‘pi bilan shu miqdordagi, provayderlari turlicha bo‘lgan modellarga tarqatiladi. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(dvigatel standarti)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Xaosli translyatsiya ishlov beruvchisiga uzatiladigan panelning minimal o‘lchamini sozlash; o‘rnatilmasa, dvigatel standarti saqlanadi. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(dvigatel standarti)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Butun xaosli panelni barcha yo‘nalishlarga tarqatish uchun qat’iy kutish vaqti (ms); o‘rnatilmasa, dvigatel standarti saqlanadi. | | `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | grok-web haftalik kvotasini olish uchun foydalaniladigan Grok CLI `auth.json` faylining yo‘li; testlar yoki nostandart CLI o‘rnatilishi uchun o‘zgartiring. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(o‘rnatilmagan)_ | `src/mitm/manager.ts` | AgentBridge upstream TLS ulanishlari uchun ishonchli qo‘shimcha CA sertifikati (PEM). | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Traffic Inspector halqasimon buferida saqlanadigan ushlangan so‘rovlarning maksimal soni. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Qisqartirishdan oldin ushlangan so‘rov/javob tanasining maksimal hajmi (KB). | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Traffic Inspector HTTP proksisi uchun mahalliy port. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Yuklanish vaqtida inspector HTTP proksisini avtomatik ishga tushirish. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(unset)_ | `src/lib/inspector/captureState.ts` | Yozib olish uchun LLM endpointlari sifatida ko‘riladigan qo‘shimcha xost nomlari (vergul bilan ajratilgan). | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Yozib olingan trafikdagi maxfiy ma’lumotlarni (autentifikatsiya sarlavhalari / API kalitlari) niqoblash. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Tizim proksi himoyasi operatsion tizim proksi sozlamalarini avtomatik tiklashidan oldingi daqiqalar soni. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(auto)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Inspektorga ichki yozib olish ma’lumotlarini qabul qilishni autentifikatsiyalovchi token. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Playground taqqoslash rejimida yonma-yon ko‘rsatiladigan ustunlarning maksimal soni. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(unset)_ | `src/app/(dashboard)/dashboard/playground/` | Playground’dagi “promptni yaxshilash” amali uchun standart model (o‘rnatilmagan bo‘lsa, faol modeldan foydalaniladi). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost yon proksi uchun asosiy o‘chirish kaliti. `0` ga o‘rnatilganda, marshrut `X-Bifrost-Killswitch` sarlavhasi bilan 503 qaytaradi va operator TS yo‘liga yo‘naltiriladi. Qayta joylashtirmasdan yon proksini o‘chirish uchun foydalaning (1-darajali marshrutizator hodisasi, kalitlarni almashtirish). | | `BIFROST_BASE_URL` | _(unset)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | O‘rnatilganda, Bifrost yon proksi marshruti `/v1/chat/completions` trafigini TS relay ishlovchisiga emas, balki ushbu Go shlyuziga yo‘naltiradi. O‘rnatilmagan → zaxira yo‘li bilan 503. Oxiridagi qiya chiziq olib tashlanadi. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | OmniRoute Bifrost sidecarining hayotiy siklini boshqarganda, nazorat qilinadigan Bifrost ichki xizmati bog‘lanadigan port (`127.0.0.1:`). Standart qiymati `8080`. | | `SINGBOX_PORT` | `20140` | `src/lib/services/bootstrap.ts` | OmniRoute sing-box sidecarining hayotiy siklini boshqarganda, nazorat qilinadigan sing-box ichki xizmati bog‘lanadigan port (`127.0.0.1:`). Standart qiymati `20140`. | | `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Nazorat qilinadigan LLMLingua siqish xizmati bog‘lanadigan port (`127.0.0.1:`). Standart qiymati `20135`. | | `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Mahalliy LLMLingua HTTP siqish mikroxizmati demoni uchun asosiy URL. Standart qiymati `http://127.0.0.1:20135`. | | `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | Nazorat qilinadigan LLMLingua sidecari yuklaydigan Hugging Face model identifikatori (quyi jarayon muhitiga uzatiladi). | | `BIFROST_API_KEY` | _(unset)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost shlyuzi uchun API kaliti (`Authorization: Bearer ...` ko‘rinishida yuboriladi). Agar o‘rnatilmagan bo‘lsa, marshrut so‘rovda yaroqli OmniRoute API kaliti bo‘lishini kutadi; bu kalit faqat shlyuz tomonidagi autentifikatsiya uchun ishlatiladi. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `true` bo‘lganda, Bifrost sidecar marshruti javoblarni TS oqimli ijrochisi orqali emas, balki shlyuz orqali SSE yordamida oqimli tarzda qaytaradi. Shlyuz orqali oqimsiz JSON javoblarini majburan qaytarish uchun `0` qiymatini o‘rnating. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost shlyuziga proksi qilishdagi har bir so‘rov uchun kutish vaqti (ms). Kutish vaqti tugaganda, marshrut `X-Bifrost-Fallback` sarlavhasi orqali TS relay yo‘lini qaytaradi. | | `OMNIROUTE_BIFROST_KEY` | _(unset)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `BIFROST_API_KEY` uchun taxallus (`OMNIROUTE_*` orqali muhitni o‘qiydigan skriptlar foydalanadi). Ikkalasi ham o‘rnatilganda `BIFROST_API_KEY` ustuvor hisoblanadi. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `/api/v1/relay/chat/completions` uchun relay backend: `ts \| bifrost \| auto`. `ts` = TypeScript relay (Bifrost sozlanmaganida standart); `auto` rejimi `BIFROST_BASE_URL` o‘rnatilgan va `BIFROST_ENABLED` ≠ `0` bo‘lganda Bifrost’ni tanlaydi, sidecar’ga ulanib bo‘lmasa esa avtomatik ravishda TS’ga qaytadi; `bifrost` Bifrost’ni majburan ishlatadi (qat’iy rejim, qaytish yo‘li yo‘q). Autentifikatsiya/rate-limit/injection-guard/allowlist har doim avval Next route’da ishlaydi. Javoblarda `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason` mavjud bo‘ladi. | | `RELAY_ROUTING_BACKEND` | _(unset)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `OMNIROUTE_RELAY_BACKEND` uchun qabul qilinadigan taxallus (xuddi shu `ts \| bifrost \| auto` qiymatlari). Ikkalasi ham o‘rnatilganda `OMNIROUTE_RELAY_BACKEND` ustuvor hisoblanadi. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | `auto` rejimida Bifrost sidecar’iga ulanish muvaffaqiyatsiz tugaganidan keyin relay sidecar’ni qayta sinab ko‘rishidan oldingi kutish vaqti (ms); kutish davomida u to‘g‘ridan-to‘g‘ri TS yo‘liga yo‘naltiradi, so‘ng yana tekshiradi. `0` bu funksiyani o‘chiradi. Faqat `OMNIROUTE_RELAY_BACKEND=auto` bo‘lganda qo‘llanadi. | | `OMNIROUTE_TLS_CERT` | _(unset)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` xizmatini HTTPS orqali taqdim etish uchun PEM TLS sertifikatiga yo‘l (`--tls-cert` bilan teng). `OMNIROUTE_TLS_KEY` bilan birga berilishi shart; shunda standalone server TLS’ni o‘sha tinglovchining o‘zida yakunlaydi (`wss://` o‘zgarishsiz ishlaydi). O‘rnatilmagan bo‘lsa → oddiy HTTP. Sertifikat yoki kalitning faqat bittasini berish yoxud o‘qib bo‘lmaydigan yo‘lni ko‘rsatish ogohlantirish qayd etilishiga va HTTP rejimida qolishga olib keladi. | | `OMNIROUTE_TLS_KEY` | _(unset)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` HTTPS xizmati uchun PEM TLS maxfiy kalitiga yo‘l (`--tls-key` bilan teng). `OMNIROUTE_TLS_CERT` bilan birga berilishi shart. `OMNIROUTE_TLS_CERT` ga qarang. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | `/api/local/*` yo‘llari uchun asosiy boshqaruv. O‘rnatilmagan yoki `0` bo‘lsa, ishlab chiqarish muhitida barcha `/api/local/*` yo‘llari 503 qaytaradi. Redis launcher’i va shu kabi bir bosishda ishga tushiriladigan mahalliy xizmatlarni yoqish uchun loopback bo‘lmagan joylashtirishlarda `1` bo‘lishi shart. `isLocalOnlyPath()` route-guard tasnifi (`src/server/authz/routeGuard.ts` ichidagi `LOCAL_ONLY_API_PREFIXES`) bilan qo‘shimcha himoya sifatida ishlaydi. | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(unset)_ | `src/lib/security/localEndpoints.ts` | Loopback’da bo‘lmagan `/api/local/*` chaqiruvchilari (masalan, desktop ilovasi) uchun Bearer token. O‘rnatilganda loopback bo‘lmagan IP manzillardan yuborilgan so‘rovlarda `Authorization: Bearer ` bo‘lishi shart. Loopback bo‘lmagan joylashtirishlarda `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` bo‘lganda talab qilinadi. | | `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | 1 marta bosiladigan Redis ishga tushirgichi (`omniroute redis up`) uchun konteyner nomi. CLI va `RedisLauncherPanel` grafik interfeysi tomonidan ishlatiladi. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | 1 marta bosiladigan Redis ishga tushirgichi uchun xost porti. Agar xost allaqachon 6379 portiga bogʻlangan boʻlsa, qiymatni oshiring. Konteynerning ichki porti 6379 boʻlib qoladi. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | 1 marta bosiladigan Redis ishga tushirgichi nashr qiladigan xost interfeysi. Ishga tushirgich Redis'ni parolsiz ishga tushiradi, shuning uchun `0.0.0.0` qiymatiga bogʻlash LAN tarmogʻingizdagi har qanday xostga autentifikatsiyasiz Redis xizmatini taqdim etadi — buni faqat nusxaga oʻzingiz parol oʻrnatgan boʻlsangiz kengaytiring. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose Redis yordamchi xizmatini nashr qiladigan xost interfeysi (#9286). Compose Redis'i `requirepass` sozlamasisiz ishlaydi; ilova konteynerlari unga compose tarmogʻi (`redis:6379`) orqali ulanadi — nashr qilingan port faqat xost tomonidagi vositalar uchun mavjud. `0.0.0.0` autentifikatsiyasiz Redis xizmatini butun LAN tarmogʻiga ochadi. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Compose Redis yordamchi xizmati uchun xost porti. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | docker-compose ilovaning oʻz boshqaruv paneli/API/live-WS portlarini nashr qiladigan xost interfeysi (#12568). `.env.example` faylining standart qiymati sifatida `REQUIRE_API_KEY=false` yuborilayotganligi sababli, `0.0.0.0` anonim `/v1` LLM proksisini butun LAN/WAN tarmogʻiga ochadi — buni faqat `REQUIRE_API_KEY=true` oʻrnatilgandan yoki oldidagi teskari proksi oʻz autentifikatsiyasini taʼminlagandan keyin kengaytiring. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose Qdrant xotira yordamchi xizmatini nashr qiladigan xost interfeysi (#12578). LAN tarmogʻiga ochilish masalasi `REDIS_BIND_HOST` bilan bir xil. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose Bifrost marshrutizatori yordamchi xizmatini nashr qiladigan xost interfeysi (#12578). LAN tarmogʻiga ochilish masalasi `REDIS_BIND_HOST` bilan bir xil. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Har bir OmniRoute Redis kalitiga qoʻllanadigan nomlar maydoni prefiksi (rate limiter, auth cache, quota store, warmup circuit breaker). Redis nusxasi boshqa ilovalar bilan ulashilganda kalitlar toʻqnashuvining oldini oladi (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(unset — mechanism disabled)_ | `src/lib/api/internalServiceAuth.ts` | Shaxsni saqlab qoluvchi ichki REST oʻtishlari uchun umumiy maxfiy kalit (#9260): boshqa mahalliy OmniRoute yoʻllarini chaqiruvchi OmniRoute komponentlari uni `x-omniroute-internal-service-token` sifatida yuboradi, shu orqali dastlabki chaqiruvchining shaxsi saqlanadi. `timingSafeEqual` bilan taqqoslanadi. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(unset)_ | `src/lib/api/internalServiceAuth.ts` | Ichki xizmat tokenining maxfiy fayl varianti: tarkibi tozalangan holda token boʻlgan faylga yoʻl. Faqat ichki oʻrnatilgan oʻzgaruvchi oʻrnatilmaganida tekshiriladi. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Boshqaruv panelidagi provayderlar roʻyxatini OpenRouter haftalik reyting statistikasi bilan boyitadi (#9324). Sukut boʻyicha yoqilgan; fon orqali olish jarayonini butunlay oʻtkazib yuborish uchun `false` qiymatini oʻrnating (bloklamaydi, hech qachon fatal xatoga olib kelmaydi). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterProviderStats.ts` | OpenRouter provayder statistikasi snapshoti uchun kesh TTL qiymati, millisekundlarda. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Bir marta bosish orqali Redis ishga tushirgichida foydalaniladigan Redis tasviri. Zaruratga koʻra `redis:8-alpine` yoki xususiy registr mirroriga almashtiring. | | `QDRANT_HOST` | `qdrant` | _(opt-in cluster profile)_ | `--profile memory` faol boʻlganda Qdrant sidecarining host nomi. Sukut boʻyicha tarmoq ichidagi qdrant xizmat nomiga yoʻnaltiriladi; tashqi joylashtirish uchun almashtiring. Faqat koddagi `qdrantEnabled` `true` boʻlganda isteʼmol qilinadi (`src/lib/memory/vectorStore.ts:108`). | | `QDRANT_PORT` | `6333` | _(opt-in cluster profile)_ | Qdrant sidecarining REST porti. | | `QDRANT_GRPC_PORT` | `6334` | _(ixtiyoriy klaster profili)_ | Qdrant yon xizmatining gRPC porti. Oqim operatsiyalari uchun REST o‘rniga gRPC’ni afzal ko‘radigan mijoz kutubxonalari tomonidan ishlatiladi. | | `QDRANT_API_KEY` | _(o‘rnatilmagan)_ | _(ixtiyoriy klaster profili)_ | Qdrant Cloud yoki autentifikatsiyadan o‘tgan mahalliy nusxa uchun ixtiyoriy API kaliti. Bo‘sh bo‘lsa → `api-key` sarlavhasi yuborilmaydi. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(ixtiyoriy klaster profili)_ | OmniRoute’ning suhbat xotirasi embeddinglari uchun kolleksiya nomi. Birinchi ishga tushirishda `QDRANT_VECTOR_SIZE` o‘lchamlari bilan yaratiladi. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(ixtiyoriy klaster profili)_ | Qdrant kolleksiyasi metama’lumotlarida qayd etiladigan standart embedding modeli nomi. Haqiqiy embeddinglar OmniRoute sozlamalaridagi `embeddingModel` maydoni ko‘rsatgan istalgan provayder tomonidan yaratiladi. | | `QDRANT_VECTOR_SIZE` | `1536` | _(ixtiyoriy klaster profili)_ | Embedding vektorining o‘lchami. Embedding yaratishda foydalaniladigan modelga mos kelishi shart (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(ixtiyoriy klaster profili)_ | HNSW indeksini yaratish vaqtidagi aniqlik. Qiymat yuqoriroq bo‘lsa = qurish sekinroq, qidirish tezroq. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Operator sozlashi mumkin bo‘lgan hisoblarni almashtirishning asosiy kaliti. `false` bo‘lsa, quyidagi `OMNIROUTE_ROTATE_*` sinflarining hech biri hisobni zaxira hisobga o‘tkazishni ishga tushirmaydi (asosiy kalit o‘chirilgan holat standart bo‘yicha yoqilgan 429/500/502 sinflarini ham bloklaydi). Nazorat qiluvchi front-end’ga (masalan, VibeProxy ish stoli ilovasiga) o‘zining almashtirish qoidalarini backend’dagi hisobni zaxira hisobga o‘tkazish mexanizmida aks ettirish imkonini beradi. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Upstream aniq tiklash ko‘rsatmasini bermaganda, tezlik chekloviga uchragan hisobga qo‘llanadigan kutish vaqti (soniyalarda). `0` = belgilangan qat’iy qiymat o‘rniga mexanizmning standart kutish vaqtidan foydalanish. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Front-enddagi “qayta tiklanish vaqti ko‘rsatilmagan bo‘lsa, rate-limited sifatida belgilamaslik” sozlamasining nusxasi. | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | `429` xatolari uchun holat bo‘yicha zaxira mexanizmini yoqadi. `false` bo‘lganda (va `OMNIROUTE_ROTATION_ENABLED=true` bo‘lsa), `429` endi akkauntni almashtirishni ishga tushirmaydi va uning o‘rniga mijozga qaytariladi. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Akkaunt almashtirilishidan oldin `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` ichida talab qilinadigan `429` xatolari soni. `1` (standart qiymat) darhol almashtiradi va avvalgi xatti-harakatni saqlab qoladi. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `429` xatolari `OMNIROUTE_ROTATE_429_THRESHOLD` qiymatiga hisoblanadigan suriluvchi oyna (soniyalarda). | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | `5xx` server xatolari uchun holat bo‘yicha zaxira mexanizmini yoqadi (`502` bundan mustasno, chunki u o‘z sinfiga ega). `false` bo‘lganda, bu xatolar endi akkauntni almashtirishni ishga tushirmaydi. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Akkaunt almashtirilishidan oldin `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` ichida talab qilinadigan `5xx` xatolari soni. `1` (standart qiymat) darhol almashtiradi. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `5xx` xatolari `OMNIROUTE_ROTATE_500_THRESHOLD` qiymatiga hisoblanadigan suriluvchi oyna (soniyalarda). | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | `502` (yomon shlyuz) xatolari uchun holat bo‘yicha zaxira mexanizmini yoqadi. `false` bo‘lganda, `502` xatolari endi akkauntni almashtirishni ishga tushirmaydi. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hisob almashtirilishidan oldin `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` ichida talab qilinadigan `502` xatolar soni. Standart qiymat `1` hisobni darhol almashtiradi. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `502` xatolari `OMNIROUTE_ROTATE_502_THRESHOLD` bo‘yicha hisoblanadigan siljiydigan vaqt oynasi (soniyalarda). | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Ixtiyoriy yoqish (standart holatda O‘CHIRILGAN): `true` bo‘lganda, oddiy `400` (noto‘g‘ri so‘rov) ham hisob almashtirilishiga sabab bo‘ladi. Bu faqat qo‘shimcha xususiyat — `400` tezlik cheklovi yoki kvota matnini o‘z ichiga olganida, ushbu flag qiymatidan qat’i nazar, dvigatelning mavjud xatti-harakatida hisob baribir almashtirilishiga to‘sqinlik qilmaydi. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hisob almashtirilishidan oldin `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` ichida talab qilinadigan `400` xatolar soni (faqat `OMNIROUTE_ROTATE_ON_400=true` bo‘lganda tekshiriladi). | | `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `400` xatolari `OMNIROUTE_ROTATE_400_THRESHOLD` bo‘yicha hisoblanadigan siljiydigan vaqt oynasi (soniyalarda). | ### Claude’ni ishga tushirish rejalashtiruvchisi Tanlangan Anthropic OAuth ulanishlari uchun cron asosida ishlaydigan warmup mexanizmi; u 5 soatlik tezlik cheklovi oynasini birinchi haqiqiy so‘rov orqali emas, balki rejalashtirilgan oddiy so‘rov orqali ochadi (#8848). Rejalashtiruvchi `OMNIROUTE_WARMUP_ENABLED` rost qiymatga ega **va** ulanish `settings.claudeWarmup.connections` ichida belgilangan bo‘lmasa, o‘chiq bo‘ladi; ulanishlar ro‘yxati bo‘sh bo‘lsa, muhit o‘zgaruvchisi yoqilgan taqdirda ham hech narsa warmup qilinmaydi. | O‘zgaruvchi | Standart qiymat | Manba fayli | Tavsif | | ------------------------------ | --------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_WARMUP_ENABLED` | _(unset → off)_ | `src/lib/warmupScheduler.ts` | Warmup rejalashtiruvchisining asosiy boshqaruvi. `1`/`true`/`yes`/`on` qiymatlarini qabul qiladi (katta-kichik harflar farq qilmaydi, chetdagi bo‘sh joylar olib tashlanadi). Boshqa har qanday qiymat yoki o‘rnatilmagan holat rejalashtiruvchini o‘chiq qoldiradi. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Warmup ishga tushish vaqti uchun besh maydonli cron ifodasi; xost soatidan qat’i nazar, `America/Los_Angeles` da (Anthropic’ning tiklanish vaqt mintaqasida) baholanadi. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Har bir ishga tushishda parallel ravishda nechta ulanish warmup qilinishini belgilaydi. Qiymat `1`-`10` oralig‘ida cheklanadi; raqam bo‘lmagan qiymat `3` ga qaytariladi. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Warmup so‘rovi uchun ishlatiladigan model. Standart model rejangizda mavjud bo‘lmasa, uni o‘zgartiring; oynani ochadigan eng arzon modelni tanlang. | ### Brauzer orqali kirish VNC seanslari va Data-Dir taxallusi Interaktiv brauzer orqali kirish uchun hisob ma’lumotlarini olishda ishlatiladigan konteynerlashtirilgan Chromium+VNC (`/api/vnc-session`), shuningdek, eski `DATA_DIR` taxallusi. Bularning barchasi ixtiyoriy — VNC standart sozlamalari tarkibdagi `omniroute-vnc-chromium:local` tasviridan foydalanadi va faqat maxsus konteyner tasviri, portlar yoki ishlash siklini sozlash kerak bo‘lganda o‘zgartiriladi. | O‘zgaruvchi | Standart qiymat | Manba fayli | Tavsif | | ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Chromium+VNC kirish konteyneri uchun Docker image tegi. `docker/vnc-browser/chromium` ni quring yoki buni maxsus image'ga yo‘naltiring. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC konteynerini ishga tushirish uchun foydalaniladigan konteyner runtime binari (masalan, `podman` qilib o‘rnating). | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Konteyner ichida ochilgan VNC/noVNC porti. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Konteyner ichidagi Chrome DevTools Protocol porti. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Konteyner ichidagi Chromium profili katalogi yo‘li. | | `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Saqlanib qolgan brauzerga kirish profillarini o‘z ichida saqlovchi host katalogi. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 min) | `src/lib/vncSession/manifest.ts` | Faol bo‘lmagan VNC sessiyasi tugatilishidan oldingi faoliyatsizlik taym-auti (ms). | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 min) | `src/lib/vncSession/manifest.ts` | Bitta VNC sessiyasi davomiyligining qat’iy maksimal chegarasi (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Bir vaqtda ishlashi mumkin bo‘lgan VNC sessiyalarining maksimal soni. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Konteynerdagi brauzer CDP uchun tayyor bo‘lishini kutish taym-auti (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Kirish yakunlangandan so‘ng olingan sessiya/cookie'larni yig‘ish uchun taym-aut (ms). | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Konteynerdagi Chromium'ga uzatiladigan qo‘shimcha buyruq qatori flaglari. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | VNC kirish konteyneri standart bridge o‘rniga ulanadigan maxsus Docker tarmog‘i (#12571); shu sababli qo‘shni konteynerlar uning CDP bridge portiga kira olmaydi. | | `VIBEPROXY_DATA_DIR` | _(o‘rnatilmagan)_ | `open-sse/services/notionThreadSessions.ts` | **Eski taxallus** `DATA_DIR` uchun; faqat `DATA_DIR` va `OMNIROUTE_DATA_DIR` ikkalasi ham o‘rnatilmaganidan keyin tekshiriladi. Notion web-thread sessiya keshining joylashuvini belgilaydi (`/notion-web-thread-sessions.json`). | --- ## 26. Test & E2E jabduqlar `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`, `scripts/dev/run-ecosystem-tests.mjs` va `scripts/build/uninstall.mjs` tomonidan ishlatiladi. Quyidagi har bir qiymatni ishlab chiqarishni joylashtirishda sozlanmagan holda qoldiring. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | -------------------------------------- | ------------------------------ | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Playwright runner uchun E2E yuklash rejimi (`auth`, `fresh`, `reuse`). | | `OMNIROUTE_E2E_PASSWORD` | `INITIAL_PASSWORD` qaytadi | `scripts/dev/run-next-playwright.mjs` | Administrator paroli Playwright muhitiga kiritilgan. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright sinovlari paytida mahalliy sog'liqni tekshirish so'rovini o'chirib qo'ying. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Sinovlar davomida OAuth token salomatligini tekshirish siklini o‘chirib qo‘ying. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(o'rnatilmagan)_ | `src/lib/tokenHealthCheck.ts` | Vergul bilan ajratilgan provayderlar tokenni yangilash proaktiv tekshiruvidan chiqarildi (masalan, `codex,openai`). Healthcheck — short-TTL provayderlarini toʻliq oʻchirib qoʻyishning maqsadli muqobili yangilanib turadi, kaskad provayderlari esa faqat reaktiv boʻlib qoladi. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright stdout'da Healthcheck shovqinini o'chirish. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Playwright boshlanishidan oldin Next.js ishlab chiqarishni o'tkazib yuboring (CI optimallashtirish). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | OmniRoute o'chirish ilgagini o'tkazib yuboring ( CI tomonidan `node_modules` saqlab qolish uchun ishlatiladi). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | ecosystem/protocol testlarini o'tkazishdan oldin server sog'lom bo'lishini kuting (ms). | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL Electron tutun jabduqlari paketlangan ilovaning xizmat qilishini kutadi. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Tutun simi taslim bo'lgunga qadar umumiy vaqt tugashi (ms). | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Sahifani yuklagandan so'ng oynani (ms) sozlash. | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(avtomatik)_ | `scripts/dev/smoke-electron-packaged.mjs` | Paketlangan Electron bajariladigan faylga aniq yo'l. | | `ELECTRON_SMOKE_DATA_DIR` | _(tmpdir)_ | `scripts/dev/smoke-electron-packaged.mjs` | Electron smoke run uchun ma'lumotlar katalogi. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Ishdan keyin tutun ma'lumotlari katalogini saqlab qolish uchun `1` o'rnating. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Ish paytida stdout-ga Electron jurnallarini oqimlash uchun `1` o'rnating. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: bir xil ma'lumotlar direktoriga qarshi qayta ishga tushiring va ikkinchi ishga tushirish mahalliy SQLite drayverini tanlashini tasdiqlang. | | `CLI_DEVIN_BIN` | _(PATH qidiruvi)_ | `open-sse/executors/devin-cli.ts` | Devin CLI ikkilik yo‘lini bekor qiling. | ### Hujjatlarni tarjima qilish liniyasi `scripts/i18n/run-translation.mjs` ( `npm run i18n:run` buyrug'i) tomonidan ishlatiladi. Barcha oltita o'zgaruvchilar sukut bo'yicha o'rnatilmagan — ularni faqat docs tarjimonini ishga tushirishi kerak bo'lgan mashinalarda `.env` ga o'rnatadi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------ | ----------------- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(o'rnatilmagan)_ | `scripts/i18n/run-translation.mjs` | Tarjima backend uchun OpenAI-mos URL bazasi. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(o'rnatilmagan)_ | `scripts/i18n/run-translation.mjs` | Tarjima backend uchun tashuvchi token (hech qachon tizimga kirmagan). | | `OMNIROUTE_TRANSLATION_MODEL` | _(o'rnatilmagan)_ | `scripts/i18n/run-translation.mjs` | Model identifikatori, masalan `gpt-4o-mini` yoki `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_FALLBACK_MODELS` | _(o'rnatilmagan)_ | `scripts/i18n/lib/translate-backend.mjs` | Ixtiyoriy vergul bilan ajratilgan model zanjiri birlamchi model ishlamay qolganda tartibda sinab ko'riladi (429 kvota, 401/402, 5xx, vaqt tugashi, tarmoq); noto'g'ri tuzilgan so'rov (400/413/422) boshqa joyda qayta urinilmaydi. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Har bir so'rov uchun kutish vaqti millisekundlarda. | | `OMNIROUTE_TRANSLATION_REASONING_EFFORT` | _(o'rnatilmagan)_ | `scripts/i18n/lib/translate-backend.mjs` | Ixtiyoriy fikrlash nazorati, o'rnatilganda orqa qismga yuboriladi. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Bir nechta fayllar/mahallalar ustida ishlayotganda parallel tarjima so'rovlari. | | `OMNIROUTE_TRANSLATION_ENGINE` | `llm` | `scripts/i18n/run-translation.mjs` | `llm` yuqoridagi orqa qismdan foydalanadi; `google` tuzilishi xavfsiz Google dvigateli orqali tarjima qilinadi va LLM o'zgaruvchilarining hech biriga muhtoj emas. | | `OMNIROUTE_TRANSLATION_GOOGLE_FALLBACK` | `1` | `scripts/i18n/run-translation.mjs` | `llm` dvigatelida model ishlab chiqara olmagan bo'lak (chiqish himoyasi har bir urinishda muvaffaqiyatsiz tugadi yoki model xatosi) mahalliy parametrni buzish o'rniga Google tomonidan tarjima qilinadi. `0` uni o'chiradi. | | `OMNIROUTE_TRANSLATION_GOOGLE_API_KEY` | _(o'rnatilmagan)_ | `scripts/i18n/lib/google-translate.mjs` | Ixtiyoriy Cloud Translation v2 kaliti. Sozlanmasa, kalitsiz veb-so‘nggi nuqtadan foydalaniladi (tezlik cheklangan, vaqti-vaqti bilan to‘lqinlar uchun yaxshi). | | `OMNIROUTE_TRANSLATION_GOOGLE_CONCURRENCY` | `6` | `scripts/i18n/lib/google-translate.mjs` | Parallel Google soʻrovlari yugurishning har bir hududi tomonidan ulashiladi. | | `OMNIROUTE_TRANSLATION_GOOGLE_TIMEOUT_MS` | `30000` | `scripts/i18n/lib/google-translate.mjs` | Google dvigateli uchun har bir soʻrov boʻyicha kutish vaqti, millisekundlarda. | | `UI_KIT_READ_TOKEN` | _(o'rnatilmagan)_ | `scripts/check/check-ui-kit-upstream.mjs` | `npm run check:ui-kit-upstream` va haftalik "UI Kit upstream watch" ish oqimi tomonidan foydalaniladigan shaxsiy yuqori oqim UI to‘plami repo uchun faqat o‘qish uchun mo‘ljallangan token. Mahalliy tekshiruv sizning git hisob ma'lumotlaringizdan foydalanadi. | --- ## 27. Radar Feed (Self-Hosting) RADAR_ENABLED funksiyasi bayrog‘i bilan himoyalangan ixtiyoriy qo‘shimcha (birlamchi o‘chirilgan — xususiyat bayrog‘i env var emas, Settings/DB orqali almashtiriladi; [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off) qarang). Quyidagi dastlabki toʻrtta oʻzgaruvchi oʻz-oʻzidan joylashtirilgan yoki vilkalar bilan taʼminlangan va yordamchi kalit oqimlari uchun ixtiyoriy bekor qilish hisoblanadi. Beshinchisi, `RADAR_ADMIN_URL`, egasining shaxsiy operatsiyalar paneliga alohida standartsiz havola. Toʻliq modul hujjati va uning [oxirigacha faollashuvi va boshqariladigan sozlash ketma-ketligi](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup) uchun [docs/frameworks/RADAR.md](../frameworks/RADAR.md) qarang. Umumiy Home/Changelog e'lonini o'quvchi muhit o'zgaruvchisi tomonidan sozlanmagan va RADAR_ENABLED xususiyati bayrog'iga bog'liq emas. U faqat GET tomonidan `src/shared/utils/releaseNotes.ts` da e'lon qilingan `news.json` URL umumiy omborini o'qiydi; ishdan bo'shatish IDs brauzerning mahalliy xotirasida qoladi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | Baza URL alohida imzolangan katalog, tavsiyanomalar, qoʻllab-quvvatlovchi takliflari va Intel tasmalari tomonidan taqsimlanadi. O'z-o'zidan joylashtirilgan yoki ajratilgan xizmatga ishora qilish uchun bekor qiling. | | `RADAR_FEED_PUBKEY` | _(qadamlangan standart kalit)_ | `src/lib/radar/pinnedKeys.ts` | Ed25519 ochiq kalit (base64-DER SPKI yoki PEM) maxsus tasmadagi tasma imzolarini tekshirish uchun ishlatiladi. | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | URL "Men hissa qo'shuvchiman" boshqaruv paneli tugmasi ochiladi (GitHub OAuth qo'llab-quvvatlovchi-kalit da'vo oqimi). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL "Loyihani qo'llab-quvvatlash" boshqaruv paneli tugmasi ochiladi (payment/plans sahifasi). | | `RADAR_ADMIN_URL` | _(o'rnatilmagan)_ | `src/lib/radar/links.ts` | Faqat egasi uchun shaxsiy operatsiyalar paneli havolasi. HTTPS kerak bo'ladi, bundan mustasno HTTP orqaga qaytish SSH oldinga; o'rnatilmagan yoki noto'g'ri qiymatlar navigatsiya elementini yaratmaydi. | --- ## Audit: o'chirilgan / o'lik o'zgaruvchilar Quyidagi o'zgaruvchilar `.env.example` ning oldingi versiyalarida paydo bo'lgan, ammo mavjud** ish vaqti havolalari yo'q** joriy kod bazasida. Ular olib tashlandi: | O'zgaruvchan | Sabab | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `STORAGE_DRIVER=sqlite` | Hech qachon biron bir manba fayli tomonidan o'qimang. SQLite qo'llab-quvvatlanadigan yagona drayverdir — tanlash shart emas. | | `INSTANCE_NAME=omniroute` | Eski docs/env shablonlarida mavjud, lekin ish vaqtida ishlatilmaydi. Kelajakda ko'p nusxali funksiyada qaytishi mumkin. | | `SQLITE_MAX_SIZE_MB=2048` | Manba kodida havola qilinmagan. Ma'lumotlar bazasi hajmi sun'iy ravishda cheklanmagan. | | `SQLITE_CLEAN_LEGACY_FILES=true` | Manba kodida havola qilinmagan. Eski tozalash oʻchirilgan boʻlishi mumkin. | | `CLI_ROO_BIN` | `src/shared/services/cliRuntime.ts` ro'yxatdan o'tmagan. | | `CLI_KIMI_CODING_BIN` | `src/shared/services/cliRuntime.ts` ro'yxatdan o'tmagan (Kimi kodlash OAuth ikkilik emas, CLI dan foydalanadi). | | `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Manba kodida hech qanday joyga havola qilinmagan. | | `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` | 3.8.0 versiyasida olib tashlangan. Ish vaqti endi bu env vars — hisob ma'lumotlarini o'qimaydi Dashboard / `data/provider-credentials.json` / shifrlangan DB dan keladi. | | `CURSOR_PROTOBUF_DEBUG` | 3.8.0 versiyasida olib tashlangan. Cursor ijrochisi `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` dan foydalanadi (§22 ga qarang). | | `CLI_COMPAT_KIRO` | 3.8.0 versiyasida olib tashlangan. Kiro `CLI_COMPAT_OMITTED_PROVIDER_IDS` — da bo'lsa, uning o'zgartirishi hech qanday ta'sir qilmaydi. | | `QIANFAN_API_KEY` | 3.8.0 versiyasida foydalanilmagan boshqa provayder API kalitlari bilan birga olib tashlandi. | ### Standart qiymat tuzatishlari | O'zgaruvchan | Eski `.env.example` qiymati | Haqiqiy kod standart | Tugallangan | | ------------------------- | --------------------------- | -------------------- | -------------------------------------------------------------------------------- | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ chalg'ituvchi qiymat olib tashlandi; standart sifatida hujjatlashtirilgan `7` | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ chalg'ituvchi qiymat olib tashlandi; standart sifatida hujjatlashtirilgan `7` | ### OpenCode konfiguratsiyasini qayta tiklash (ad-hoc asboblar) Ishlayotgan OmniRoute misolidan olingan aniq `limit.context` va `limit.output` qiymatlari bilan `opencode.json` qayta tiklash uchun `scripts/ad-hoc/regen-opencode-config.ts` tomonidan foydalaniladi. Bularning hech biri normal ishlashi uchun talab qilinmaydi — skript faqat ishlab chiquvchi vositalaridir. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------ | ------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | `/v1/models` so'rovi uchun OmniRoute misolining URL bazasi. | | `OMNIROUTE_KEY` | _(o'rnatilmagan)_ | `scripts/ad-hoc/regen-opencode-config.ts` | OmniRoute `/v1/models` oxirgi nuqtasiga nisbatan autentifikatsiya qilish uchun API kaliti. Oʻrnatilmaganda `OPENCODE_API_KEY` ga tushadi. | | `OPENCODE_API_KEY` | _(o'rnatilmagan)_ | `scripts/ad-hoc/regen-opencode-config.ts` | OpenCode uslubidagi API kaliti (`sk-...`) qayta tiklangan `opencode.json` ga yozilgan. Oʻrnatilmaganda `OMNIROUTE_KEY` ga tushadi. | ### Siqishni oflayn baholash jabduqlari (ad-hoc asboblar) `scripts/compression-eval/index.ts` tomonidan foydalaniladi, oflayn siqishni baholash CLI. Oddiy — ishlab chiquvchi asboblari uchungina talab qilinmaydi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------- | ------------ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (bo'sh) | `scripts/compression-eval/index.ts` | Operator tomonidan taqdim etilgan provayder uchun JSON hisob ma'lumotlari oflayn siqish-baholash CLI tomonidan amalga oshiriladi ( `JSON.parse` bilan tahlil qilinadi). Quruq yugurish uchun sozlanmagan holda qoldiring. | ### VNC brauzer seanslari Brauzer-avtomatlashtirish provayderlari uchun Docker-ga asoslangan boshsiz Chromium seanslarini sozlash uchun `src/lib/vncSession/manifest.ts` tomonidan foydalaniladi. Barcha ixtiyoriy — standart sozlamalari quyida ko'rsatilgan. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------- | ------------------------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------ | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC konteynerlarini yaratish uchun ishlatiladigan Docker binariga yo'l. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | VNC Chromium konteyneri uchun Docker tasviri. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(oʻrnatilgan bayroqlar)_ | `src/lib/vncSession/manifest.ts` | Qo'shimcha Chromium CLI arg'lar konteyner ichidagi brauzerga o'tkazildi. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | konteyner ichidagi VNC porti. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Konteyner ichidagi Chrome DevTools Protocol porti. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Konteyner ichidagi profil katalogi. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(o'rnatilmagan)_ | `src/lib/vncSession/manifest.ts` | Doimiy brauzer profillari uchun xost tomonidagi katalog. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | VNC sessiyasi yig'ib olinishidan oldin bo'sh turish vaqti (ms). | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Maksimal seans davomiyligi (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Maksimal bir vaqtda VNC seanslari. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Brauzerning tayyor bo'lish vaqti (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Harvest/cleanup vaqt tugashi (ms). | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Konteyner birlashtirilgan maxsus Docker tarmog'i (#12571), standart ko'prikdan tashqarida. | | `VIBEPROXY_DATA_DIR` | _(o'rnatilmagan)_ | `open-sse/services/notionThreadSessions.ts` | Notion ish zarrachasi seansining davom etishi uchun katalog. | ### Ichki xizmat avtorizatsiyasi | O'zgaruvchan | Standart | Tavsif | | --------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Boshqaruv tekisligidagi xizmatdan xizmatga autentifikatsiya qilish uchun inline token. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Ichki xizmat tokenini o'z ichiga olgan faylga yo'l (konteynerlarda afzal; inline o'zgaruvchini bekor qiladi). | ### OpenRouter provayder statistikasi | O'zgaruvchan | Standart | Tavsif | | ----------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Katalogni boyitish uchun har bir provayder uchun OpenRouter statistikasini olishni o‘tkazib yuborish uchun `false` o‘rnating. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | Olingan OpenRouter provayder statistikasi uchun TTL (ms) kesh. | ### Oʻrnatilgan Redis bogʻlash | O'zgaruvchan | Standart | Tavsif | | --------------------------- | ----------- | ------------------------------------------------------------------------- | | `REDIS_BIND_HOST` | `127.0.0.1` | Oʻrnatilgan Redis xizmati uchun bogʻlash manzili. | | `REDIS_PORT` | `6379` | O'rnatilgan Redis xizmati uchun port. | | `OMNIROUTE_REDIS_BIND_HOST` | – | O'rnatilgan Redis bog'lash manzili uchun OmniRoute-ko'lamli bekor qilish. | --- ## 24. v3.8.50 qo'shimchalarini chiqaring Bu sozlamalar avvalgi muhit-shartnoma suratidan keyin kiritilgan. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Qayta urinib ko'riladigan `503` oldin og'ir vaznli suhbatga kirish uchun maksimal kutish; qisqa chegaralangan kutish bir zumda `503` o'rniga agent portlashlarni serializes. `0` darhol rad etishni tiklaydi. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Qabul kutish uchun navbatda turgan baytlar byudjeti: jarayon bo'ylab to'xtatilgan jami buferlangan tana baytlarini chegaralaydi, shuning uchun kutish yig'indini kuchaytira olmaydi (#4380). Byudjetdan tashqari kutishlar darhol qayta urinib ko'rish mumkin bo'lgan `503` oladi. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | №10110 dan beri bekor qilingan no-op: har bir sessiya uchun kirish yoʻlaklari butun jarayon boʻyicha bitta byudjet foydasiga olib tashlandi. Konfiguratsiya muvofiqligi uchun qabul qilingan; e'tiborga olinmagan. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | №10110 dan beri bekor qilingan no-op: har bir sessiya uchun kirish yoʻlaklari butun jarayon boʻyicha bitta byudjet foydasiga olib tashlandi. Konfiguratsiya muvofiqligi uchun qabul qilingan; e'tiborga olinmagan. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (o'chirilgan) | `open-sse/services/admission/runtime.ts` | Moslashuvchan ish vaqti virtual kirish yo'laklari (#9654): har bir ijarachiga moslashtirilgan eshik uchun asosiy kalit (2-tizim). Yuqoridagi eskirgan har bir ulanish qatoridan farqli (TTL_MS / MAX_SESSIONS, №10110 dan beri ishlamayapti). Boshqaruv panelining bir xil nomdagi bayrog'i; env var asboblar panelini bekor qilish ustidan g'alaba qozonadi; qayta ishga tushirishni talab qiladi. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Navbatdagi yugurishni boshlashdan oldin ishga tushirish-now qo‘ng‘irog‘i parvozdagi ishni qancha vaqt kutishini belgilaydi. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | yoqilgan | `open-sse/services/adobeFireflySession.ts` | Hisobga oid Chrome CDP seanslari orqali IMS va brauzer xavfi holatini yangilab turadi; o'chirish uchun `0` o'rnating. | | `ADOBE_FIREFLY_SESSION_DISK` | yoqilgan | `open-sse/services/adobeFireflySession.ts` | `DATA_DIR` ostida tuzatilgan Adobe seanslarini davom ettiradi; faqat xotira holati uchun `0` o'rnating. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly taqdimotlari orasidagi minimal masofa. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Har uchinchi muvaffaqiyatli Adobe taqdimotidan keyin qo'shimcha tinch davr. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Faqat disk raskadrovka uchun haqiqiy boshsiz rejim; Adobe colligo odatda yuzaga keladigan xavf seansini rad etadi. | | `CHROME_PATH` | avtomatik aniqlash | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Platformani avtomatik aniqlash yetarli boʻlmaganda brauzer tomonidan boshqariladigan ijrochilar tomonidan qoʻllaniladigan ixtiyoriy mutlaq Chrome bajariladigan fayl. | | `TELEGRAM_BOT_TOKEN` | _(o'rnatilmagan)_ | `src/lib/telegram/config.ts` | BotFather tokeni kiruvchi webhookni ishga tushiradi va Mini App `initData` imzolaydi. | | `TELEGRAM_WEBHOOK_SECRET` | _(o'rnatilmagan)_ | `src/lib/telegram/config.ts` | Umumiy sir `setWebhook` orqali roʻyxatdan oʻtgan va har bir webhook yetkazib berishda `X-Telegram-Bot-Api-Secret-Token` sarlavhasi bilan tasdiqlangan. Webhook yo'li uchun talab qilinadi; o'rnatilmagan bo'lsa, 503 bilan veb-huk yetkazib berish rad etilgan. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Telegram chat javoblari uchun ishlatiladigan model. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Proksi-serverlar yoki o'z-o'zidan joylashtirilgan Bot API serverlari uchun Bot API bazasi URL bekor qilish. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Chiquvchi Bot API qo'ng'iroqlari uchun millisekundlarda kutish vaqti. | | `TELEGRAM_USER_ALLOWLIST_ENABLED` | `false` | `src/lib/telegram/config.ts` | Faqat `TELEGRAM_ALLOWED_USER_IDS` roʻyxatidagi Telegram foydalanuvchilariga xizmat koʻrsatish uchun `true` ni oʻrnating (boshqalar: Mini App 403, webhook xabari oʻchirildi). Sukut bo'yicha o'chirilgan: har bir Telegram foydalanuvchisi xizmat ko'rsatadi va yuqori oqim kvotasini sarflaydigan zarb qilingan API kalitini oladi. | | `TELEGRAM_ALLOWED_USER_IDS` | _(o'rnatilmagan)_ | `src/lib/telegram/config.ts` | Vergul bilan ajratilgan raqamli Telegram foydalanuvchi identifikatorlari `TELEGRAM_USER_ALLOWLIST_ENABLED=true` bo'lganda xizmat qiladi. Oddiy musbat sonlar bo'lmagan yozuvlar bir martalik ogohlantirish bilan e'tiborga olinmaydi. Ruxsat etilgan ro'yxat o'chirilgan paytda e'tiborga olinmaydi; ruxsat berilgan roʻyxat bilan boʻsh hech kimga xizmat qilmaydi. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (yoqilgan) | `scripts/build/optionalPackStaging.mjs` | Electron mustaqil daraxti uchun ixtiyoriy ML/browser toʻplamlarini (paket kataloglari va `optional-packs.index.json` hali ham ishlab chiqarilmoqda) tashkil qilishda `.tar.gz` tarballs chiqarishni oʻtkazib yuborish uchun `0` sozlang. Artefakt yuklash hajmini qisqartirish uchun ish stoli chiqarish ish oqimi tomonidan foydalaniladi. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | xAI obunasi tasvir marshrutlarini ro'yxatdan o'tkazish imkonini beradi; sukut bo'yicha o'chirilgan, shuning uchun API-kalit tasvir yo'li o'zgarishsiz qoladi. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Agar `429` javobida foydalanish mumkin bo'lgan `Retry-After` ko'rsatmasi bo'lmasa, har bir tugmani millisekundlarda sovutish. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | yoqilgan | `open-sse/services/estimatorCalibration.ts` | Xotirada hisoblagichni kalibrlash yozuvini va ilovasini oʻchirish uchun `off`, `0` yoki `false` ni sozlang. | | `NEXT_MANUAL_SIG_HANDLE` | _(ichki)_ | `scripts/dev/standalone-server-ws.mjs` | Ichki mustaqil-server signalini qayta ishlashni bekor qilish; odatda operatorlar tomonidan sozlangandan ko'ra ishga tushirgich tomonidan o'rnatiladi va tozalanadi. | | `CHATGPT_WEB_TURN_TIMEOUT_MS` | `180000` | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT Web (Clean Room) matn burilish uchun har bir navbat ship; `1000` dan past qiymatlar e'tiborga olinmaydi. | | `CHATGPT_WEB_TOOL_TURN_TIMEOUT_MS` | `180000` | `open-sse/utils/chatgptWebExecutorAdapter.ts` | Mijoz vositalarini (taqlid qilingan `` konvert) olib yuradigan ChatGPT Web (Clean Room) burilish uchun har bir burilish shifti; nazoratni mijozga tezroq qaytarish uchun uni pastga tushiring. `1000` dan past qiymatlar e'tiborga olinmaydi. | | `CHATGPT_WEB_HEADLESS` | `1` (boshsiz) | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT Web (Clean Room) brauzerini boshsiz ishga tushiring. `0` faqat birinchi tomon chaqiruvi boshsiz rejimni rad etadigan hisoblar uchun o'rnating (standart №14948-da boshsizdan boshsizga o'zgartirildi). | | `CHATGPT_WEB_BROWSER_ACQUIRE_TIMEOUT_MS` | `45000` | `open-sse/utils/chatgptWebExecutorAdapter.ts` | ChatGPT Web (Clean Room) brauzerini ishga tushirish va chatgpt.com ni isitish uchun shift, shuning uchun o'lik brauzer yoki sessiya so'rov navbatining oxirgi muddatini iste'mol qila olmaydi. | | `UI_KIT_CLONE` | `_references/cheaper-inference-ui-kit` | `scripts/check/check-ui-kit-snapshot.mjs` | Xususiy CI UI to'plamining yo'li sotuvchi-snapshot darvozasini klonlash `packages/ui-kit/src` farqiga qarshi (KEA-7886); klon yo'q bo'lganda darvoza ogohlantirish bilan o'tadi. | ### ChatGPT Web (Codex) Global Defaults für den headless Browser und den ausgehenden Tool-Tunnel. Men Dashboard ulanish-Werte Haben Vorrang gesetzte. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(avtomatik aniqlash)_ | `open-sse/executors/chatgpt-web-codex.ts` | Expliziter Chrome-/Chromium-Pfad für npm-, systemd- und PM2-Betrieb. | | `CHROME_PATH` | _(avtomatik aniqlash)_ | `open-sse/executors/chatgpt-web-codex.ts` | Gemeinsamer Fallback für einen expliziten Chrome-/Chromium-Pfad. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(o'rnatilmagan)_ | `open-sse/executors/chatgpt-web-codex.ts` | Interner CDP-Endpunkt; Docker verwendet den Sidecar auf Port `9223`. | | `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _( — oʻchirilgan)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | Har bir navbat uchun ajratilgan kontekst o‘rniga tashqi tomonidan boshqariladigan, tizimga kirgan brauzer profilining mavjud ChatGPT sahifasidan qayta foydalanish uchun `1` ( CDP so‘nggi nuqtasi sozlangan) ga sozlang; shuningdek, bir vaqtning o'zida ChatGPT yorliqlarini 1 bilan cheklaydi. Sukut bo'yicha o'chirilgan. [Doimiy CDP profiliga](../guides/CHATGPT-WEB-PERSISTENT-CDP.md) qarang. | | `CDP_PROXY_TOKEN` | _(o'rnatilmagan)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Wenn gesetzt, Anfrage va CDP-Proxy-Sidecar-ni ishga `X-Omni-Cdp-Token` (#13679). Ohne Wert leitet der Proxy unauthentifiziert 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` | _(o'rnatilmagan)_ | `open-sse/executors/chatgpt-web-codex.ts` | Lokal Codex-Tool-Runden uchun Global OpenAI-Tunnel-ID. | | `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(o'rnatilmagan)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globaler Tunnel Runtime-Key; niemals in Logs ausgeben. | | `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` | Brauzer, Broker va Tunnelzustand uchun Dediziertes Verzeichnis. | | `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | Brauzer-Diagnosebilder va Checkpoint erfasst `1` foydalanish mumkin. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(o'rnatilmagan)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Opsiyonel mutlaq Pfad zu einem dauerhaften Launcher-Binary. | | `CODEX_CHATGPT_WEB_BUN` | _(avtomatik aniqlash)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Opsiyonel mutlaq Pfad zum Bun-Runtime-Binary. | | `CODEX_WEB_GPT_BUN` | _(o'rnatilmagan)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Legacy-Fallback für `CODEX_CHATGPT_WEB_BUN`; neue Setups verwenden den kanonischen Namen. | --- ## OmniConductor ko'prigi OmniConductor hub vazifalarini mahalliy A2A TaskManager (`src/lib/conductor/`) ga aks ettiruvchi uzoq umr ko'rgan SSE iste'molchisi. — -ga kirish ko'prik faqat `CONDUCTOR_HUB_URL` o'rnatilganda boshlanadi. Faqat server tomoni: markaz belgisi hech qachon brauzerga etib bormasligi kerak. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------ | ----------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(bo'sh)_ | `src/lib/conductor/boot.ts` | OmniConductor uyasining URL bazasi (masalan, `http://127.0.0.1:7910`). = ko‘prigi o‘chirildi. | | `CONDUCTOR_HUB_TOKEN` | _(bo'sh)_ | `src/lib/conductor/boot.ts` | SSE tasmasi — uchun hub hisob ma’lumotlari markazda `spokesperson` -kind tengdoshini chiqaradi (`POST /v1/peers`, admin). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(bo'sh)_ | `src/lib/conductor/hubProxy.ts` | Kiruvchi A2A→ hub vazifasi delegatsiyasi uchun hisob ma'lumotlari (`POST /v1/tasks`); o'rnatilmaganda `CONDUCTOR_HUB_TOKEN` ga qaytadi. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Boshqaruv panelidagi chat proksi-serverining (`/api/conductor/ask`) orqasidagi matbuot kotibi (Faro) xizmatining URL bazasi. | ### Kvotadan xabardor rejalashtirish `open-sse/services/combo.ts` va `src/lib/quota/quotaScheduler.ts` tomonidan oldindan soʻrov boʻyicha token-byudjet tekshiruvlari uchun foydalaniladi. Ro‘yxatdan o‘tish — standart marshrutlash harakati o‘rnatilmaganda o‘zgarmaydi. | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ---------------------------------- | ------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | `1` bo'lganda, har bir oyna uchun token byudjeti (`rateLimitOverrides.tpm`, `provider_quota_state` jadvali) jo'natishdan oldin taxminiy so'rov narxini ko'tara olmaydigan ulanishlarni o'tkazib yuboring. Byudjet sozlanmagan bo‘lsa, ochilmaydi. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(yoqilgan)_ | `open-sse/services/estimatorCalibration.ts` | Kontekst-qo'riqchi token smetatorining fikr-mulohazalarini kalibrlash (#14931): har bir (provayder, model, asboblar mavjud) EMA `usage.prompt_tokens` smeta, 0,15–2,0 ga mahkamlangan, faqat xotirada. `off`, `0` yoki `false` yozib olish va qo'llashni o'chiradi. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | `xai-oauth` (`xao`) va `grok-cli` tasvir marshrutlarini qayd qiladi. Boshqaruv panelining bir xil nomdagi bayrog'i; DB bekor qilish bu qiymat ustidan g'alaba qozonadi. | ## Sinxronizatsiya diagnostikasi modeli | O'zgaruvchan | Standart | Manba fayl | Tavsif | | ------------------------------ | -------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MODEL_SYNC_TIMINGS` | `0` | `src/lib/providerModels/modelSyncTimings.ts` | Model sinxronizatsiyasi vaqtida faza vaqtini, yaratilgan ID so‘rovini va faza success/error natijalarini jurnalga kiritish uchun `1` ga o‘rnating. Boshqa barcha qiymatlar uchun o'chirilgan. Jurnallar so'rov, hisob, katalog va xato yuklarini o'tkazib yuboradi. | ## OpenCode media tahlili vositasi `scripts/cli/omniroute-media-mcp.mjs` tomonidan foydalaniladi. Ularni mahalliy vosita jarayoni muhitida sozlang. | O‘zgaruvchi | Standart qiymat | Tavsif | | -------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MEDIA_CONFIG` | `$XDG_CONFIG_HOME/opencode/opencode.json` (yoki `~/.config/opencode/opencode.json`) | Media vositasi va o‘rnatuvchi tomonidan o‘qiladigan OpenCode konfiguratsiyasi. | | `OMNIROUTE_MEDIA_PROVIDER` | `omniroute` | Media vositasi tomonidan OpenCode konfiguratsiyasidan o‘qiladigan provayder yozuvi. | | `OMNIROUTE_MEDIA_MODEL` | `auto` | Media vositasi tomonidan yuboriladigan model. Uning provayderi so‘ralgan media turlarini qo‘llab-quvvatlashi kerak. | | `OMNIROUTE_MEDIA_API_KEY` | Sozlangan provayder API kaliti yoki uning muhitdagi havolasi | Ixtiyoriy hisob ma’lumotlari ustuvorligi. Uni mahalliy jarayon muhitida saqlang; hech qachon repozitoriyga yubormang. |