# Environment Variables Reference (Azərbaycan dili) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/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) · 🇺🇿 [uz](../../../uz/docs/reference/ENVIRONMENT.md) · 🇻🇳 [vi](../../../vi/docs/reference/ENVIRONMENT.md) · 🇳🇬 [yo](../../../yo/docs/reference/ENVIRONMENT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md) --- > OmniRoute tərəfindən tanınan hər bir mühit dəyişəni üçün tam istinad. > Sürətli başlanğıc şablonu üçün [`.env.example`](../../.env.example) faylına baxın. > [!IMPORTANT] > Burada sənədləşdirilmiş hər bir dəyişən `.env.example` faylında da yer almalı və > `.env.example` faylındakı hər bir dəyişən burada göstərilməlidir. `npm run check:env-doc-sync` > bunu commit zamanı və CI daxilində məcburi şəkildə yoxlayır. Dəyişəni qəsdən istisna etmək üçün onu > `scripts/check/check-env-doc-sync.mjs` daxilindəki icazə siyahısına əlavə edin. --- ## Mündəricat - [1. Tələb olunan məxfi məlumatlar](#1-tələb-olunan-məxfi-məlumatlar) - [2. Yaddaş və verilənlər bazası](#2-yaddaş-və-verilənlər-bazası) - [3. Şəbəkə və portlar](#3-şəbəkə-və-portlar) - [4. Təhlükəsizlik və autentifikasiya](#4-təhlükəsizlik-və-autentifikasiya) - [5. Daxiletmənin təmizlənməsi və PII qorunması](#5-daxiletmənin-təmizlənməsi-və-pii-qorunması) - [6. Alət və marşrutlaşdırma siyasətləri](#6-alət-və-marşrutlaşdırma-siyasətləri) - [7. URL-lər və buludla sinxronizasiya](#7-url-lər-və-buludla-sinxronizasiya) - [8. Çıxış proksisi](#8-çıxış-proksisi) - [9. CLI aləti ilə inteqrasiya](#9-cli-aləti-ilə-inteqrasiya) - [10. Daxili agent və MCP inteqrasiyaları](#10-daxili-agent-və-mcp-inteqrasiyaları) - [11. OAuth provayderinin giriş məlumatları](#11-oauth-provayderinin-giriş-məlumatları) - [12. Provayder User-Agent əvəzləmələri](#12-provayder-user-agent-əvəzləmələri) - [13. CLI barmaq izi uyğunluğu](#13-cli-barmaq-izi-uyğunluğu) - [14. API açarı provayderləri](#14-api-açarı-provayderləri) - [15. Taym-aut parametrləri](#15-taym-aut-parametrləri) - [16. Jurnallaşdırma](#16-jurnallaşdırma) - [17. Yaddaşın optimallaşdırılması](#17-yaddaşın-optimallaşdırılması) - [18. Qiymətlərin sinxronizasiyası](#18-qiymətlərin-sinxronizasiyası) - [19. Modellərin sinxronizasiyası (Dev)](#19-modellərin-sinxronizasiyası-dev) - [20. Provayderə xas parametrlər](#20-provayderə-xas-parametrlər) - [21. Proksi sağlamlığı](#21-proksi-sağlamlığı) - [22. Sazlama](#22-sazlama) - [23. GitHub inteqrasiyası](#23-github-inteqrasiyası) - [24. Bacarıqlar üçün sandbox (v3.8.0+)](#24-bacarıqlar-üçün-sandbox-v380) - [27. Radar lenti (öz serverinizdə yerləşdirmə)](#27-radar-lenti-öz-serverinizdə-yerləşdirmə) - [Yerləşdirmə ssenariləri](#yerləşdirmə-ssenariləri) - [Audit: Silinmiş / istifadə olunmayan dəyişənlər](#audit-silinmiş--istifadə-olunmayan-dəyişənlər) --- ## 1. Tələb Olunan Məxfi Dəyərlər **Bəli** ilə işarələnmiş, təyin edilməmiş məxfi dəyərlər ilk işə salınmada avtomatik yaradılır (`JWT_SECRET`, `API_KEY_SECRET`) və data qovluğundakı `server.env` faylında saxlanılır — həmin qovluq qeyri-kalıcı (ephemeral) olduqda onları açıq şəkildə təyin edin. İstisna `OMNIROUTE_WS_BRIDGE_SECRET`-dir: o, `server.env` faylında saxlanılmır — server giriş nöqtələri (entrypoints) yalnız prosesdaxili körpünün istifadə edə biləcəyi hər işə salınmaya məxsus müvəqqəti dəyər yaradır, ona görə də xarici körpü kliyentləri bunu açıq şəkildə təyin etməlidir. | Dəyişən | Tələb olunur | Standart | Mənbə faylı | Təsvir | | ---------------------------- | -------------------------- | ------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | **Bəli** | _(yoxdur)_ | `src/lib/auth` | Bütün idarəetmə paneli sessiya kukilərini (JWT) imzalayır/yoxlayır. `openssl rand -base64 48` ilə yaradın. | | `API_KEY_SECRET` | **Bəli** | _(yoxdur)_ | `src/lib/db/apiKeys.ts` | SQLite-də saxlanılan API açarı dəyərləri üçün AES şifrələmə açarıdır. `openssl rand -hex 32` ilə yaradın. | | `INITIAL_PASSWORD` | Xeyr | _(təyin edilməyib)_ | `src/lib/auth/managementPassword.ts` | Üzərinə parol hələ saxlanılmadığı halda idarəetmə paneli parolunu işə salınma zamanı təyin edir; parol bir dəfə saxlanıldıqdan sonra nəzərə alınmır. npm və mənbədən quraşdırmalar `.env.example` faylıını `.env` faylına köçürür, ona görə də hamıya məlum `CHANGEME` yer tutucusu ilə başlayırlar: ilk işə salınmadan əvvəl onu dəyişdirin, ya da təyin edilməmiş dəyərin (Docker təsvirinin defoltu) etdiyi kimi ilk girişdə parolun ilkin quraşdırma sehrbazında (onboarding wizard) yaradılması üçün həmin `.env` faylıında `INITIAL_PASSWORD=` (boş) təyin edin. Saxlanılmış parolu Dashboard → Settings → Security bölməsində dəyişdirin, ya da `DATA_DIR` serverin data qovluğuna təyin edilməklə `omniroute reset-password` əmrini icra edin (mənbə checkout-unda `node bin/reset-password.mjs`). | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Bəli** (istehsal mühiti) | _(təyin edilməyib)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Daxili Codex Responses WebSocket körpüsü üçün ortaq məxfi dəyərdir. Electron/brauzer WS retranslyatoru ilə OmniRoute arasındakı körpü sorğularını autentifikasiya edir. ⚠️ **İstehsal mühitində TƏLƏB OLUNUR — təyin edilmədikdə bütün WS körpü sorğuları rədd edilir.** `openssl rand -base64 32` ilə yaradın. | | `OMNIROUTE_SW_BUILD_ID` | Xeyr | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PWA qabığı üçün xidmət işçisi keşinin yenilənməsini təmin edən açıq identifikator (#11779); müəyyənləşdirmə zəncirində birincidir. | | `SOURCE_VERSION` | Xeyr | _(təyin edilməyib)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Zəncirdə ikincidir — PaaS qurucuları (məsələn, Heroku tipli) tərəfindən yerləşdirilmiş commit kimi təyin edilir. | | `NEXT_PUBLIC_SW_BUILD_ID` | Xeyr | _(törədilmiş)_ | `src/shared/components/PwaRegister.tsx` | Müştərinin `/sw.js?v=…` qeydiyyatı üçün istifadə etdiyi qurma zamanı təyin olunan ictimai dəyərdir; əvvəlcə yuxarıdakı iki dəyərdən, sonra isə git SHA-dan törədilir. | | `OMNIROUTE_PEER_STAMP_TOKEN` | Xeyr (avtomatik) | _(hər işə salınmada avtomatik)_ | `src/server/authz/policies/management.ts` | Etibarlı qarşı tərəf IP möhürünün OmniRoute-un öz HTTP serverindən (`scripts/dev/peer-stamp.mjs`) gəldiyini sübut edən hər prosesə aid məxfi dəyərdir. Authz ara proqramı sorğunun lokallığına (LOCAL_ONLY marşrutlarının geridöngə/LAN məhdudlaşdırılması) yalnız möhür bu tokeni daşıdıqda etibar edir. Hər işə salınmada avtomatik yaradılır — təyin edilməmiş saxlayın; yalnız möhürü paylaşmalı olan çoxprosesli quraşdırmalarda sabitləyin. | | `OMNIROUTE_TRUSTED_PROXIES` | Xeyr | _(təyin edilməyib)_ | `scripts/dev/peer-stamp.mjs` | IP icazə/qadağa siyahısının `X-Forwarded-For` / `X-Real-IP` məlumatlarına etibar edə biləcəyi əks proksilərin vergüllə ayrılmış IP-ləri və ya CIDR diapazonlarıdır. Bunlar həmişə etibarlı sayılan geridöngə, şəxsi şəbəkə ünvanları və Cloudflare kənar serverlərinə əlavə olunur. Yalnız başqa ictimai ünvanda olan proksi üçün lazımdır; əks halda filtr həmin proksinin öz ünvanını qiymətləndirir. | ### Yaratma Əmrləri ```bash # Bütün dörd məxfi dəyəri bir dəfəyə yaradın: 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] > Həqiqi məxfi dəyərləri ehtiva edən `.env` fayllarını heç vaxt versiyaya nəzarət sisteminə commit etməyin. `.gitignore` artıq `.env` faylını istisna edir, lakin push etməzdən əvvəl bunu yoxlayın. --- ## 2. Yaddaş və verilənlər bazası OmniRoute bütün məlumatların daimi saxlanması üçün **SQLite**-dan (`better-sqlite3` vasitəsilə) istifadə edir. Bu dəyişənlər məlumatların yerini, şifrələnməsini və həyat dövrünü idarə edir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | SQLite verilənlər bazası, ehtiyat nüsxələr və məlumat faylları üçün kök kataloq. Docker həcmləri və ya fərdi yollar üçün bunu əvəz edin. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(təyin edilməyib)_ | `src/lib/dataPaths.ts` | Test/qiymətləndirmə DATA_DIR qoruyucusu üçün istisna mexanizmi (#10428). `DATA_DIR` olmayan testlər və Node eval/print yoxlamaları (`-e`/`--eval`/`-p`/`--print`, o cümlədən `--eval=`/`--print=` formaları) operatorun real verilənlər bazasını aça bilməmələri üçün birdəfəlik müvəqqəti kataloqa yönləndirilir; real kataloqdan yenidən istifadə etməyə razılıq vermək üçün `1` təyin edin. | | `OMNIROUTE_BUILD_SHA` | _(təyin edilməyib)_ | `src/lib/monitoring/buildSha.ts` | İşləyən artefaktın Git SHA-sı. `npm run build:release` tərəfindən əlavə edilir; `dist/BUILD_SHA` sentinel faylı olmadan göndərilən konteynerlərə daxil edilə bilər. `/api/monitoring/health` ünvanında `system.buildSha` kimi göstərilir. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Artefaktın paketlənməsi üçün mənşə yoxlamasının yığım SHA-sını müqayisə etdiyi istinad (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(təyin edilməyib)_ | `scripts/build/buildProvenance.ts` | SHA-sı buraxılış xəttində olmayan yığımın paketlənməsinə icazə vermək üçün `1` təyin edin; beləliklə, yoxlamanı uğursuz etmək əvəzinə, o, qəsdən yaradılmış canary kimi qeydə alınır (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(təyin edilməyib)_ | `scripts/ops/deploy-canary.mjs` | Canary yerləşdirməsinin smoke yoxlaması üçün API açarı; `/v1/chat/completions` ünvanına `Authorization: Bearer` kimi göndərilir. Yalnız yerləşdirmə skripti tərəfindən istifadə olunur (#10429), server tərəfindən isə heç vaxt istifadə edilmir. Aktivləşdirilməsi tələb olunan CLI smoke mexanizminin `OMNIROUTE_SMOKE_*` dəyişənləri ilə (`tests/integration/upstream-cli-smoke.int.test.ts` faylındakı `RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS`) əlaqəli deyil — baxın: [CLI inteqrasiyaları → Real smoke yoxlaması](../guides/CLI-INTEGRATIONS.md). | | `OMNIROUTE_BUILDING` | _(təyin edilməyib)_ | `src/lib/buildPhase.ts` | Yığım mərhələsi siqnalı (#10060): `scripts/build/build-next-isolated.mjs` tərəfindən `1` olaraq təyin edilir və yaradılan hər bir yığım işçisi tərəfindən miras alınır; beləliklə, verilənlər bazası qatı yerli better-sqlite3 əlavəsini yükləmək əvəzinə heç bir əməliyyat yerinə yetirməyən saxta obyekt qaytarır (həmin əlavə çıxış zamanı işçinin işini dayandırır). İşləyən server üçün heç vaxt təyin edilmir. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Qeyri-adi şəkildə paketə daxil edilmiş ağaclar üçün ixtiyari yerli asılılıqların ilkin yığım yoxlamasını keçmək məqsədilə `1` təyin edin. Bu, çatışmayan asılılığı yığıla bilən etmir; yalnız yerli asılılıqlar kənar üsulla təmin edildikdə istifadə edin. | | `OMNIROUTE_DATA_DIR` | _(təyin edilməyib)_ | `open-sse/executors/promptql/threadSticky.ts` | `DATA_DIR` üçün **ehtiyat alias**; yalnız `DATA_DIR` təyin edilmədikdə yoxlanılır. PromptQL icraedicisinin diskdəki axına bağlı sessiya keşini (`/promptql-thread-sessions.json`) tapmaq üçün istifadə olunur; dəyişənlərin heç biri təyin edilməzsə, keş yalnız yaddaşda qalır (yenidən başladılmalar arasında saxlanmır). | | `OMNIROUTE_PLUGINS_DIR` | _(təyin edilməyib)_ | `src/lib/plugins/scanner.ts` | **İcra vaxtı plagin skanerinin** oxuduğu və plagin menecerinin quraşdırma apardığı kök kataloq; ev kataloqundan əldə edilən standart dəyəri əvəz edir (#11827). Yalnız skan yolunun yerini dəyişmək üçün HOME dəyişənini köçürmək əvəzinə, bunu Docker/K8s-də bind-mount edilmiş plagin ağacına yönəldin (HOME digər bütün ev kataloquna nəzərən davranışları da idarə edir). Təyin edilmədikdə = `~/.omniroute/plugins`; proses heç bir ev kataloqu ixrac etmirsə, `/tmp/.omniroute/plugins` — bu dəyişənin aradan qaldırdığı səssiz aşkarlanmama halı. Həll edilmiş kataloq işəsalma zamanı qalib gəlmiş girişlə birlikdə `scanner.dir_resolved` kimi bir dəfə jurnala yazılır. Yalnız server tərəfi üçün: CLI əmr plaginləri öz `OMNIROUTE_PLUGIN_PATH` dəyişənindən istifadə etməyə davam edir (bölmə 9). | | `STORAGE_ENCRYPTION_KEY` | _(boş = deaktivdir)_ | `src/lib/db/encryption.ts` | Saxlama vəziyyətində bütün SQLite verilənlər bazasının şifrələnməsi üçün AES açarı. `openssl rand -hex 32` ilə yaradın. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Şifrələmə açarı üçün versiya etiketi. Köhnə ehtiyat nüsxələrin deşifrələnməsini dəstəkləmək üçün açar rotasiyası zamanı artırın. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | `true` olduqda, rutin/yazmadan əvvəlki SQLite fayl ehtiyat nüsxələri (models.dev qiymətlərinin saxlanması/təmizlənməsi, parametrlərin yazılması) ötürülür. Əl ilə yaradılan və bərpadan əvvəlki ehtiyat nüsxələr yenə də icra olunur. Bu, miqrasiya icraedicisinin mövcud davamlı DB üçün məcburi dayanıqlı təhlükəsizlik anlıq görüntüsünü və ya kütləvi miqrasiya qorumasını **deaktiv etmir**. Əl ilə yaradılmayan ehtiyat nüsxələr maksimum 60 dəqiqədə bir dəfə ilə məhdudlaşdırılır. İdarəetmə panelində **Parametrlər → Saxlama** rutin avtomatik ehtiyat nüsxələməni müstəqil şəkildə deaktiv edə bilər. | | `OMNIROUTE_CRYPT_KEY` | _(təyin edilməyib)_ | `src/lib/db/encryption.ts` | `STORAGE_ENCRYPTION_KEY` üçün **köhnəlmiş alternativ ad**. Əsas dəyişən olmadıqda ehtiyat variant kimi qəbul edilir. | | `OMNIROUTE_API_KEY_BASE64` | _(təyin edilməyib)_ | `src/lib/db/encryption.ts` | Ehtiyat variant kimi qəbul edilən **köhnəlmiş alternativ ad** (Base64 ilə kodlaşdırılmış forma). İstifadədən əvvəl avtomatik dekodlaşdırılır. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(təyin edilməyib)_ | `src/lib/db/core.ts` | Dövri SQLite sağlamlıq yoxlaması intervalını (ms) dəyişdirin. Təyin edilmədikdə standart dəyərlər `NODE_ENV` əsasında müəyyən edilir. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(silinib)_ | `src/lib/db/walMaintenance.ts` | **Silinib.** Dövri aktiv `wal_checkpoint(TRUNCATE)` ortaq wal-index xəritələşdirməsini etibarsız edə və prosesi SIGBUS ilə çökdürə bilər (#13973), buna görə planlaşdırıcı artıq mövcud deyil. Dəyişən təsirsizdir: müsbət dəyər birdəfəlik köhnəlmə xəbərdarlığını jurnala yazır, `0` və ya təyin edilməmiş dəyər isə səssiz qalır. WAL PASSIVE nəzarət nöqtələri (aşağıda) tərəfindən saxlanılır və söndürülmə nəzarət nöqtəsi tərəfindən kiçildilir. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5 dəq) | `src/lib/db/walMaintenance.ts` | Tez-tez icra olunan `wal_checkpoint(PASSIVE)` intervalını (ms) dəyişdirin. Gözləyən WAL freymlərini kiçik saxlayır ki, nəzarət nöqtələri sürətli qalsın və WAL faylı söndürülmə zamanı kiçiltmələr arasında məhdud ölçüdə olsun. `0` deaktiv edir. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | PASSIVE addımı WAL faylının bu ölçünü keçdiyini aşkarladıqda, xəritələnmiş wal-index yenidən yazılmadan WAL-ın yenidən başlaması üçün `wal_checkpoint(RESTART)` icra edilir. Aktiv kiçiltmə rejimli nəzarət nöqtələri silinib (`OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` sətrinə baxın). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Kritik resurs təzyiqi `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` müddətində davam etdikdən sonra prosesdən çıxmaq üçün `1`/`true`/`yes`/`on` olaraq təyin edin; bu, 503 cavablarını qeyri-müəyyən müddətə təqdim etmək əvəzinə nəzarətçiyə (systemd `Restart=always`, Docker yenidən başlatma siyasəti) təmiz prosesi bərpa etməyə imkan verir. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2 dəq) | `open-sse/utils/resourcePressure.ts` | Özünü yenidən başlatmaq üçün çıxışın işə düşməsindən əvvəl kritik təzyiqin nə qədər davam etməli olduğu. | | `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Səs-küylü qonşu bu proses normal işlədiyi halda 503 xətalarını tətiklədikdə host üzrə `/proc/pressure/memory` (`psi_some` / `psi_full`) göstəricilərini nəzərə almamaq üçün `1`/`true`/`yes`/`on` olaraq təyin edin (#13124). Cgroup və V8 yığın qoruyucuları aktiv qalır. PSI həmçinin `cgroup_high` üçün nüvə məhdudlaşdırmasının sübutu kimi nəzərə alınmağı dayandırır: `memory.high` dəyərini aşan cgroup cəmi bundan sonra yalnız `memory.events` daxilində `high`/`max` artımı olduqda kritik sayılır. `memory.events` olmadıqda xam nisbət saxlanılır. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(avtomatik aşkarlama)_ | `src/lib/db/adapters/sqljsAdapter.ts` | `sql.js` WASM ehtiyat adapterindən istifadə edərkən `sql-wasm.wasm` faylına açıq yol (mütləq və ya cwd-yə nəzərən nisbi). Təyin edilmədikdə paket asılılıqları və namizəd quruluşlar vasitəsilə avtomatik aşkarlanır. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Terminal vəziyyətli (tamamlanmış/uğursuz/ləğv edilmiş/müddəti bitmiş) Batch API tapşırığının nəzarət nöqtələrinin, istinad edilən giriş/çıxış/xəta fayllarının və sətrinin avtomatik təmizləmə zamanı silinməzdən əvvəl saxlanıldığı günlərin sayı. Yalnız `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` aktivləşdirildikdən sonra qüvvəyə minir; OpenAI-ın öz Batch API çıxışlarının saxlanma müddətinə uyğundur. Operator tərəfindən işə salınan `DELETE /api/v1/batches/delete-completed` marşrutuna təsir etmir; həmin marşrut layihəyə əsasən şərtsiz qalır (yaş filtri yoxdur). | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | `true` olduqda, avtomatik təmizləmə prosesi `OMNIROUTE_BATCH_RETENTION_DAYS` müddətini keçmiş terminal vəziyyətindəki Batch API tapşırıqlarını (və onların yoxlama nöqtələrini) silir və öz `expires_at` tarixini keçmiş yüklənmiş faylların BLOB məzmununu təmizləyir. Defolt olaraq deaktivdir: operator bunu aktivləşdirənədək hər bir mövcud quraşdırma bu məlumatları əvvəlki kimi saxlayır. Bu, həmçinin idarəetmə panelindən redaktə edilə bilən funksiya bayrağıdır — baxın: `docs/reference/FEATURE_FLAGS.md` → İcra mühiti. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Başlanğıc zamanı DB sağlamlıq yoxlamasını tamamilə keçmək üçün `1` olaraq təyin edin. Qısamüddətli tapşırıqlar və inteqrasiya testləri üçün faydalıdır. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | DB sağlamlıq yoxlaması dövrəsini, normalda ötürüləcəyi hallarda belə (məsələn, qısamüddətli tapşırıqlarda), məcburi aktivləşdirmək üçün `1` olaraq təyin edin. | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | `npm install` zamanı yerli icra mühitinin ilkin hazırlanmasını keçmək üçün `1` olaraq təyin edin. sqlite-ın artıq qurulduğu CI/qrafik interfeyssiz quraşdırmalarda faydalıdır. | | `OMNIROUTE_MIGRATIONS_DIR` | _(avtomatik aşkarlama)_ | `src/lib/db/migrationRunner.ts` | Miqrasiya icraçısının skan etdiyi qovluğu əvəz edin. Fərdi yığımlarda paketlənmiş miqrasiyaları təqdim edərkən faydalıdır. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(təyin edilməyib)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Platformanın yol ayırıcısı ilə ayrılmış `namespace=dir` qeydləri şəklində əlavə miqrasiya qovluqları (məsələn, `ee=/opt/app/enterprise/db/migrations`). Orada tapılan fayllar `-` kimi qeydə alınır, beləliklə öz miqrasiyalarını təqdim edən distributiv əsas layihənin rəqəmli yuvaları ilə heç vaxt toqquşmur. Səhv formatlı qeyd, etibarsız ad sahəsi və ya mövcud olmayan qovluq sxemin səssizcə ötürülməsi əvəzinə başlanğıc zamanı xəta yaradır. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Kütləvi gözləyən miqrasiyalar üçün təhlükəsizlik həddi (#3416). Mövcud DB-də bundan çox miqrasiya gözləyirsə, başlanğıc dayandırılır (silinmiş izləmə cədvəlindən qoruyur). Daha köhnə ehtiyat nüsxəni bərpa etmək üçün dəyəri artırın; yoxlamanı deaktiv etmək üçün `0` təyin edin. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | `check:install-upgrade` buraxılış keçidi üçün iş qovluğu. Bunun üçün təxminən 12 GB (iki ~3 GB-lıq quraşdırma ağacı və tar arxivi) tələb olunur, buna görə də kiçik tmpfs üzərində işlədilməməlidir — öz serverində yerləşdirilən icraçıda `/tmp` 12 GB-lıq RAM əsaslı tmpfs-dir və keçid onu tam dolduraraq paketi yarımçıq qoyub. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(defolt dəyər kodda)_ | `src/lib/spend/batchWriter.ts` | Paketlənmiş xərc/məsrəf yazıcısı üçün yazma intervalı (ms). Daha aşağı dəyərlər yazıların birləşdirilməsini azaldır; daha yüksək dəyərlər DB mübahisəsini azaldır. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(defolt dəyər kodda)_ | `src/lib/spend/batchWriter.ts` | Məcburi yazmadan əvvəl buferdə saxlanılan xərc qeydlərinin maksimum sayı. Yüksək QPS-li yerləşdirmələrdə artırın; məhdud yaddaş daha vacib olduqda azaldın. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(təyin edilməyib)_ | `open-sse/utils/proxyFetch.ts` | Vercel relay yolunda `[ProxyFetch]` sazlama jurnallarını çıxarmaq üçün `"true"` olaraq təyin edin. Marşrutlaşdırma ipuclarının sızmasının qarşısını almaq üçün defolt olaraq deaktivdir. | | `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(təyin edilməyib)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Qəbul edilmiş faylı əvəz etməzdən əvvəl yaradılmış əsas konfiqurasiyanı yoxlayan yerli proksi nüvə binar faylının (`sing-box` adlı fayl) mütləq yolu. Təyin edilmədikdə yalnız qəbul edilmiş faylın yanında `.generated` yazılır. Yalnız host mühiti üçündür: binar fayl icra edildiyinə görə heç vaxt verilənlər bazasında saxlanmır və idarəetmə API-si vasitəsilə qəbul edilmir. | | `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(təyin edilməyib)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Təsdiqlənmiş konfiqurasiya əvəzləndikdən sonra yerli proksi nüvəsinin necə yenidən yüklənəcəyi: shell olmadan icra edilən JSON arqument massivi və ya xarici müşahidəçi faylı tətbiq etdikdə dəqiq olaraq `external`. Heç vaxt verilənlər bazasında saxlanmır və API vasitəsilə təqdim edilmir. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Təfərrüatlı `[ProxyEgress]` proses jurnalı sətrinə müştəri/çıxış IP-lərini və hesab prefiksini daxil etmək üçün `"true"` və ya `"1"` olaraq təyin edin. Proses jurnalının IP-ləri və ya hesab prefiksini sızdırmaması üçün defolt olaraq DEAKTİV saxlanılır. | | `OMNIROUTE_DEBUG` | _(təyin edilməyib)_ | `bin/cli/commands/quota.mjs` | CLI kvota əmrlərindən stderr-ə hər sorğu üzrə zamanlama diaqnostikasını (`[omniroute] GET completed in Nms`) çıxarmaq üçün `1` olaraq təyin edin. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(avtomatik)_ | `scripts/dev/healthcheck.mjs` | Konteynerin sağlamlıq yoxlamasının sorğuladığı konkret yol. Təyin edilmədikdə yoxlama yolu `OMNIROUTE_BASE_PATH` əsasında müəyyən edir; təyin edilməsi dərin monitorinq son nöqtəsindən yenidən istifadəni aktivləşdirir. | | `OMNIROUTE_DEBUG_COMPLETION` | _(təyin edilməyib)_ | `bin/cli/commands/completion.mjs` | CLI qabıq tamamlama keşinin yollarından (oxuma/yeniləmə/yazma) `[omniroute completion]` diaqnostikasını çıxarmaq üçün hər hansı boş olmayan dəyər təyin edin. Defolt olaraq deaktivdir — bu keşlər səssizcə xəta verir ki, çatışmayan və ya korlanmış keş tab ilə tamamlamanı heç vaxt pozmasın. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24 saat) | `open-sse/services/batchProcessor.ts` | Ayrı-ayrı paket elementləri üçün maksimum təkrar cəhd müddəti (ms). Bu müddəti aşan elementlər uğursuz kimi işarələnir. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Paket elementlərinin təkrar cəhdlərində eksponensial gecikmə üçün baza gecikməsi (ms). | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1 saat) | `open-sse/services/batchProcessor.ts` | Paket elementlərinin təkrar cəhdləri arasındakı eksponensial gecikmə üçün yuxarı hədd (ms). | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Eyni vaxtda emal edilən paketlərin maksimum sayı. Məhsuldarlığı artırmaq üçün yüksəldin; sürət məhdudiyyəti problemlərinin kəskin artmasının qarşısını almaq üçün aşağı saxlayın. | > [!IMPORTANT] > Mövcud daimi verilənlər bazasını dəyişməzdən əvvəl miqrasiya icraedicisi `DATA_DIR/db_backups/` altında tam, > məzmun üzrə ünvanlanan ani görüntü dərc edir. Dərc etmək üçün eyni fayl sistemi daxilində üzərinə yazmayan sərt keçidləri > və dayanıqlı fayl sinxronizasiyasını dəstəkləyən fayl sistemi tələb olunur. POSIX hostlarında həmçinin kataloq > sinxronizasiyası tələb edilir; Windows-da Node kataloq deskriptorlarını rədd edə bilər, buna görə OmniRoute dərc edilmiş > faylı diskə yazır və kataloq qeydinin sinxronizasiyasını mümkün olduğu qədər həyata keçirir. > Qoşulmuş `DATA_DIR` həmin təminatları verə bilmirsə, miqrasiya tətbiq edilməzdən əvvəl işəsalma təhlükəsiz şəkildə dayandırılır. > `DATA_DIR`-i bu primitivləri dəstəkləyən disk bölməsinə köçürün; miqrasiya təhlükəsizliyindən yan keçmək üçün > `DISABLE_SQLITE_AUTO_BACKUP` istifadə etməyin. ### Ssenarilər | Ssenari | Konfiqurasiya | | ----------------------------- | ------------------------------------------------------------------------------------------------------------- | | **Lokal hazırlama** | Bütün defoltları saxlayın. Verilənlər bazası `~/.omniroute/omniroute.db` ünvanında yerləşir. | | **Docker** | `DATA_DIR=/data` + `/data` ünvanına disk bölməsi qoşun. | | **Saxlanılarkən şifrələnmiş** | `STORAGE_ENCRYPTION_KEY` təyin edin + açarın ehtiyat nüsxələrini saxlayın! Onu itirmək = verilənləri itirmək. | | **CI/Sınaq** | `DATA_DIR=/tmp/omniroute-test` — müvəqqətidir, şifrələmə tələb olunmur. | --- ## 3. Şəbəkə və portlar | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PORT` | `20128` | `src/lib/runtime/ports.ts` | Həm İdarəetmə Paneli interfeysi, həm də API son nöqtələri üçün əsas port (tək port rejimi). | | `OMNIROUTE_BASE_PATH` | _(boş = kök)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | OmniRoute-u əks proksi arxasında təqdim etmək üçün URL alt yolu (Next.js `basePath` parametrini təyin edir; autentifikasiya yönləndirmələri `basePath` dəyərini nəzərə alır). Məsələn, `/omniroute`. Docker-də dəyər `docker build` zamanı daxil edilir (`ARG OMNIROUTE_BASE_PATH`); əvvəlcədən hazırlanmış kök təsvirləri Next.js işə düşməzdən əvvəl, konteyner başladılarkən fərqli icra vaxtı dəyərini bir dəfə tətbiq edə bilər. `NEXT_PUBLIC_BASE_URL` dəyişənini eyni alt yolu ehtiva edən ictimai mənbəyə təyin edin. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(boş = kök)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | `OMNIROUTE_BASE_PATH` dəyişəninin brauzerdə görünən surətidir; idarəetmə panelinin son nöqtə ekranında `https://host/v1` əvəzinə `https://host/omniroute/v1` göstərilməsi üçün yığım zamanı daxil edilir. Təyin edilmədikdə `OMNIROUTE_BASE_PATH` dəyərinə geri qayıdır. Dəyişdirdikdən sonra yenidən yığın (Next `basePath` dəyəri yığım zamanı müəyyən edilir). | | `DASHBOARD_ALLOW_EMBED` | _(təyin edilməyib = heç vaxt freymdə göstərilə bilməz)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | HTML səhifələrinin iframe daxilində yerləşdirilməsinə açıq şəkildə icazə verir. Təyin edilmədikdə hər marşrut `frame-ancestors 'none'` + `X-Frame-Options: DENY` ilə təqdim olunur. Səhifələri (idarəetmə paneli, giriş, sənədlər, açılış səhifəsi) `frame-ancestors 'self' vscode-webview:` ilə və `X-Frame-Options` olmadan təqdim etmək üçün bunu `vscode` olaraq təyin edin; beləliklə, VS Code Simple Browser onları göstərə bilər (OmniCopilot-un `dashboardOpen: "editor"` rejimi). API səthi (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, kök səviyyəli alternativ adlar) hər iki halda sərt başlıqları saxlayır. Yalnız `vscode` tanınır — `1`/`true` bunu aktivləşdirmir. Yığım zamanı: dəyişdirdikdən sonra yenidən yığın (təsvirlər üçün `docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode`; bunu əvvəlcədən yığılmış quraşdırmada təyin etməyin heç bir təsiri yoxdur). | | `API_PORT` | _(təyin edilməyib)_ | `src/lib/runtime/ports.ts` | Təyin edildikdə `/v1/*` proksi API-sini bu ayrıca portda təqdim edir. | | `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | API portu üçün bağlanma ünvanı. | | `DASHBOARD_PORT` | _(təyin edilməyib)_ | `src/lib/runtime/ports.ts` | Təyin edildikdə İdarəetmə Paneli interfeysini bu ayrıca portda təqdim edir. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(deaktivdir)_ | `src/sse/utils/backpressure.ts` | Eyni vaxtda emal olunan söhbət bağlantılarının sayını məhdudlaşdırır; limiti aşan sorğular `Retry-After` ilə birlikdə `503` cavabı alır. Müsbət tam ədəd qoruyucu mexanizmi aktivləşdirir; təyin edilməmiş dəyər/`0` isə onu deaktiv edir. | | `OMNIROUTE_INSTANCE_ID` | _(təyin edilməyib)_ | `src/shared/resilience/peerRouting.ts` | OmniRoute instansiyaları zəncirlə birləşdirildikdə bu şlüz üçün sabit, unikal ID. Daxil olan həmkar dövrəsinin yoxlanmasını aktivləşdirir. İcazə verilən simvollar: hərflər, rəqəmlər, `.`, `_`, `:` və `-`; maksimum 64 simvol. | | `OMNIROUTE_PEER_URLS` | _(təyin edilməyib)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | `X-OmniRoute-Peer-Trace` qəbul edə bilən, vergüllə ayrılmış OmniRoute baza URL-ləri. Yalnız açıq şəkildə icazə siyahısına əlavə edilmiş yuxarı axın URL-ləri bərabər tərəf metadatasını qəbul edir; bütün digər provayderlərə toxunulmur. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Zəncirvari sorğuda qəbul edilən, daha əvvəl ziyarət edilmiş OmniRoute instansiyalarının maksimum sayı (`1`-`32`). Təkrarlanan instansiyalar və ya tükənmiş limit HTTP `508 Loop Detected` cavabını qaytarır. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Docker istehsal rejimində İdarəetmə paneli üçün host tərəfində dərc edilən port. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Docker istehsal rejimində API üçün host tərəfində dərc edilən port. | | `OMNIROUTE_PORT` | _(təyin edilməyib)_ | `src/lib/runtime/ports.ts` | Electron və ya digər örtüklər daxilində işləyərkən `PORT` üzərində üstünlüyə malikdir. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Real vaxt WebSocket canlı monitorinq serveri üçün port. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Canlı WebSocket serveri üçün qoşulma ünvanı. LAN-da əlçatan etmək üçün `0.0.0.0` təyin edin (həmçinin `LIVE_WS_ALLOWED_ORIGINS` dəyişənini konfiqurasiya edin). | | `LIVE_WS_ALLOWED_ORIGINS` | _(təyin edilməyib)_ | `src/server/ws/liveServer.ts` | Canlı WebSocket açmasına icazə verilən, vergüllə ayrılmış əlavə mənbələr. Geri dövrə idarəetmə paneli mənbələrinə standart olaraq artıq icazə verilir. | | `LIVE_WS_ALLOWED_HOSTS` | _(təyin edilməyib)_ | `src/server/ws/liveServerAllowList.ts` | Canlı WebSocket mənbələri üçün icazə verilən, vergüllə ayrılmış əlavə host adları. `LIVE_WS_ALLOWED_ORIGINS` dəyişənindən (tam mənbə URL-ləri) fərqli olaraq, yalnız host hissəsi ilə uyğunluq yoxlanılır — LAN/Tailscale quraşdırmaları üçün faydalıdır. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(təyin edilməyib)_ | `src/hooks/useLiveDashboard.ts` | Canlı idarəetmə panelinin WebSocket-i üçün ictimai URL (brauzer tərəfi). WS serverinin önündə əks proksi və ya Cloudflare Tunnel istifadə edərkən təyin edin (məsələn, `wss://ws.my-ai.com/live-ws`); brauzer `ws://hostname:20132` əvəzinə ora qoşulur. Yol adı hissəsi də WebSocket təkmilləşdirmə yolu kimi istifadə olunur (standart: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` və `scripts/start-ws-server.mjs` | Real vaxt WebSocket serverini deaktiv etmək üçün `0` və ya `false` təyin edin (standart olaraq aktivdir və geri dövrə ünvanına bağlanır). Müstəqil canlı WebSocket köməkçi skriptini deaktiv edən CI/sınaq infrastrukturu keçidi. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Hər (token, IP) üçün relay sürət limiti, sorğu/dəqiqə. Yaddaşdaxili və hər instansiya üçün ayrıdır. `0` və ya mənfi dəyər IP ölçüsü üzrə məhdudiyyəti deaktiv edir (token üzrə verilənlər bazası limiti yenə də tətbiq olunur). | | `NODE_ENV` | `production` | Next.js nüvəsi | Jurnallaşdırmanın təfərrüat səviyyəsini, keşləməni, xəta təfərrüatlarının göstərilməsini və Next.js optimallaşdırmalarını idarə edir. | | `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — kod üzrə standart) | `package.json` / Next.js 16 | Turbopack `npm run dev` və `npm run build` üçün standart paketləyicidir (etalon testlərə əsasən yığımlar 2-3× daha sürətlidir). Windows-da yerli bağlama / paketləyici uyğunluğu problemləri yarandıqda **və ya RAM məhdudiyyətli maşınlarda** webpack-ə qayıtmaq üçün `0` olaraq təyin edin — bu Next.js versiya xəttində (16.2.x) Turbopack istehsal yığımlarının böyük modul qraflarında webpack-dən xeyli daha çox yaddaş istifadə etdiyi məlumdur (Next 16.3-dəki Turbopack yaddaş boşaltma düzəlişi hələ stabil deyil); webpack-ə keçid zamanı pik yaddaş istifadəsi xeyli aşağı olur. Baxın: #6409. **Docker təsvir yığımlarında standart dəyər `0`-dır (webpack)**: `Dockerfile`, `ARG OMNIROUTE_USE_TURBOPACK=0` elan edir ki, adi `docker build .` əmri (Railway və digər bir kliklə işləyən hostlar, xüsusi şəkildə öz serverində yerləşdirənlər) yaddaşı məhdudlaşdırılmış yığım mühitində OOM səbəbindən dayandırılmasın; təsviri Turbopack ilə yığmaq üçün `--build-arg OMNIROUTE_USE_TURBOPACK=1` ötürün. Baxın: `docs/guides/DOCKER_GUIDE.md` → Yığım vaxtı resursları. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(təyin edilməyib)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Başlanğıcda SQLite bütövlük sağlamlıq yoxlamasını ötürmək üçün `1` olaraq təyin edin. Böyük verilənlər bazalarında daha sürətli işə düşmə üçün faydalıdır. | | `NOTIFY_SOCKET` | _(təyin edilməyib)_ | systemd (sd_notify protokolu) | Proses sd_notify inteqrasiyalı xidmət vahidi altında işləyərkən systemd tərəfindən təyin edilir; OmniRoute READY/WATCHDOG bildirişlərini göndərmək üçün bunu oxuyur (baxın: `OMNIROUTE_DISABLE_SD_NOTIFY`). İstifadəçi tərəfindən heç vaxt təyin edilmir. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(təyin edilməyib)_ | `scripts/dev/systemd-notify.mjs` | systemd vahidi altında işləyərkən belə systemd sd_notify funksiyasını (Type=notify / WatchdogSec=) deaktiv etmək üçün `1` olaraq təyin edin. Bildiriş mexanizmi systemd xaricində hər halda heç bir əməliyyat yerinə yetirmir. | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Fon rejimində işləyən etimad məlumatlarının sağlamlıq yoxlaması planlayıcısı üçün interval (ms). Minimum: 10000 (10 san). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | Keşlənmiş etimad məlumatlarının sağlamlıq vəziyyəti üçün TTL (ms). | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Provayder bağlantılarının dövri fon sınağını deaktiv etmək üçün `1` və ya `true` olaraq təyin edin. Axtarış provayderləri (`src/lib/providers/validation/searchProviders.ts` faylındakı SEARCH_VALIDATOR_CONFIGS, məsələn, `tavily-search`) yoxlama prosesindən həmişə xaric edilir — onların "doğrulaması" ödənişli real yuxarı axın sorğusudur, buna görə də onlar heç vaxt taymer əsasında sağlamlıq yoxlamasından keçirilmir (#9970). | | `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Autentifikasiyadan keçmiş çağırışçının TTL ərzində tamamlama səthini bir dəfə nümunələyən `/api/monitoring/health?deep=1` sorğusunu göndərməsinə icazə vermək üçün `1` olaraq təyin edin. Anonim çağırışçılar yoxlamanı heç vaxt işə salmırlar. | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Next.js dev/start serveri üçün bağlanma ünvanı. Təyin edildikdə standart `0.0.0.0` dəyərini əvəz edir. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Next.js-i işə salarkən Playwright icraçısının istifadə etdiyi bağlanma ünvanı. Hermetik testlər üçün standart dəyər `127.0.0.1`-dir. **`omniroute serve` üçün istifadə etməyin** — əvəzinə `OMNIROUTE_SERVER_HOST` istifadə edin (POSIX qabıqları `HOSTNAME` dəyişənini avtomatik olaraq maşının adına təyin edir; `.env` onu əvəz edə bilmir). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | `omniroute serve` üçün bağlanma ünvanı. POSIX qabığındakı `HOSTNAME` dəyişəni ilə toqquşmanın qarşısını alır (bash/zsh tərəfindən həmişə maşının adına təyin edilir). Təyin edilmədikdə `0.0.0.0` istifadə olunur. (#6194) | ### Port Rejimləri ``` ┌─────────────────────────── Tək Port (standart) ─────────────────────────────┐ │ PORT=20128 │ │ → İdarəetmə paneli: http://localhost:20128 │ │ → API: http://localhost:20128/v1/chat/completions │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Ayrı Portlar ────────────────────────────────────┐ │ DASHBOARD_PORT=20128 │ │ API_PORT=20129 │ │ API_HOST=0.0.0.0 │ │ → İdarəetmə paneli: http://localhost:20128 │ │ → API: http://0.0.0.0:20129/v1/chat/completions │ │ İstifadə halı: İdarəetmə panelini localhost ilə məhdudlaşdırarkən API-ni │ │ LAN üçün əlçatan edin. │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Docker İstehsal Mühiti ─────────────────────────┐ │ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │ │ → Konteyner portlarını docker-compose.prod.yml faylında host portlarına │ │ uyğunlaşdırır. │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 4. Təhlükəsizlik və autentifikasiya | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Maşın barmaq izinin yaradılması üçün aparat identifikatorları ilə birləşdirilən salt. İzolyasiya üçün hər yerləşdirmədə dəyişdirin. | | `OMNIROUTE_CLI_SALT` | _(təyin edilməyib = hər quraşdırma üçün təsadüfi salt yaradılır və `/cli-token-salt.json` ünvanında saxlanılır)_ | `src/lib/machineToken.ts` | Lokal CLI autentifikasiya tokenini əldə etmək üçün HMAC salt-ı. Bu dəyərin təyin edilməsi maşındakı bütün CLI tokenlərini yeniləyir və həmişə saxlanılan salt-dan üstün tutulur. Baxın: `docs/security/CLI_TOKEN.md`. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Sessiya kukilərində `Secure` bayrağını təyin edir. HTTPS arxasında işləyərkən **`true` olmalıdır**. | | `REQUIRE_API_KEY` | `false` | API ara proqram təminatı | `true` olduqda bütün `/v1/*` proksi sorğularına etibarlı API açarı daxil edilməlidir. **Bu bayraq `GET /v1/models` girişini idarə etmir**; həmin giriş bunun əvəzinə idarəetmə panelinin giriş siyasətinə (`requireAuthForModels`) tabedir — buna görə də `/v1/models` tərəfindən qaytarılan `401` nəticəçıxarmanın qorunduğu demək DEYİL. Baxın: `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | İdarəetmə panelinin istifadəçi interfeysində API açarlarının tam dəyərlərinin göstərilməsinə icazə verir. İdarəetmə panelinin funksiya bayraqlarından konfiqurasiya edilə bilər; ortaq instanslarda təhlükəsizlik riski yaradır. | | `NO_LOG_API_KEY_IDS` | _(boş)_ | `src/lib/compliance/index.ts` | Sorğuların jurnallaşdırılmasından yan keçən, vergüllə ayrılmış API açarı ID-ləri (GDPR uyğunluğu). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(təyin edilməyib = limitsiz)_ | `src/shared/utils/apiKeyPolicy.ts` | `rate_limits` sütunu null olan API açarlarına tətbiq edilən gündəlik ehtiyat sorğu büdcəsi. Təyin edilməyib və ya boşdur: dolayı limit yoxdur (#2289, #11017). `0` da eyni mənanı verir (limitsiz). Müsbət tam N ədədi N/gün, 5N/həftə, 20N/ay limitlərini aktivləşdirir. Səhv formatlı, boş olmayan dəyərlər əvvəlki 1000/gün, 5000/həftə, 20000/ay intervallarına geri qayıdır. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | İcazə verilən maksimum sorğu gövdəsi ölçüsü. Bu limiti aşan faydalı yükləri rədd edir. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Bu həddə çatan və ya onu aşan faktiki sorğu gövdələri JSON təhlilindən əvvəl atomik, proses daxilindəki ağırçəkili qəbul icarəsini əldə edir (BYTE yolu, o cümlədən `POST /v1/responses`). Struktur baxımından ağır sorğularda olduğu kimi eyni [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) sağlam ehtiyat tutum istisnası tətbiq olunur; [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) probleminin geri qayıtmaması üçün bu, hələ də `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) ilə məhdudlaşdırılır. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Məhdudlaşdırılmış qəbul zamanı oxunan baytlara əsasən tətbiq edilən çat marşrutunun sərt həddi; buraya `Content-Length` başlığı olmayan, etibarsız və ya həqiqətə uyğun olmayan sorğular da daxildir; həddi aşan sorğular `413` cavabı alır. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(təyin edilməyib — sorğu sayı üzrə hədd yoxdur)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** sorğu SAYI üzrə bu köhnə hədd artıq yalnız açıq şəkildə təyin edildikdə tətbiq olunur. Təyin edilmədikdə (standart vəziyyət) ağır çəkili çat sorğularının qəbulu əvəzində `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` ilə məhdudlaşdırılır — bu, **bir prosesdə** (bir V8 heap-i) prosesin real yaddaş həddinə əsasən avtomatik hesablanan BAYT büdcəsidir. Üst-üstə düşən, hər biri təxminən 750k token olan iki `/v1/responses` sorğusu təxminən 12 GiB-lıq heap-ləri dayandırır (#7849) — bu, sərt məhsul maksimumunun 2 olması deyil, **yaddaş büdcəsi** xəbərdarlığıdır. Sağlam proses (heap boşaltma nisbətindən aşağı olduqda) `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` vasitəsilə daha çox paralel uzun `/v1/responses` sorğusunu qəbul EDƏ BİLƏR. Onlarla uzunmüddətli SSE müştərisi (40–50) “maksimum 2” deyil, heap + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110 məsələsidir. “Hostdan istifadə etmək” üçün bunu kor-koranə artırmaq #7849 problemini yenidən yaradır. **N müstəqil `DATA_DIR`** ilə **heap-lərin** sayını artırın (#11024); bir SQLite faylında heç vaxt `replicas>1` istifadə etməyin. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(avtomatik hesablanır)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** avtomatik hesablanan qəbul bayt büdcəsi üçün əvəzləyici dəyər (daha sərt V8/cgroup yaddaş həddinin 25%-i, 8x müvəqqəti artım əmsalına bölünür). Hesablanan və açıq şəkildə verilən dəyərlər 8 MiB–2 GiB aralığı ilə məhdudlaşdırılır. Effektiv büdcədən böyük gövdə dərhal `413 body_exceeds_budget` xətası ilə rədd edilir; ayrı-ayrılıqda emal edilə bilən gövdələr arasındakı resurs rəqabəti isə təkrar cəhd edilə bilən `503` olaraq qalır. Eyni vaxtda 40–50 uzunmüddətli SSE müştərisi sərt “maksimum 2” deyil, bu büdcə + heap məsələsidir. Tənzimləmədən əvvəl `/api/monitoring/health` ünvanında `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` dəyərlərini yoxlayın. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | BAYT və STRUKTUR baxımından ağır çəkili sorğuların qəbulu üçün heap təzyiqinə görə yükü azaltma nisbəti (`heapUsed / heap_size_limit`) (#10183, #10268, #10437). `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` həddini aşan paralel ağır çəkili sorğu yalnız heap HƏMÇİNİN bu nisbətə çatdığı və ya onu aşdığı halda təkrar cəhd edilə bilən `503` ilə rədd edilir; sağlam heap olduqda isə sağlam ehtiyat tutumu vasitəsilə qəbul edilir. | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (standart `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Həm STRUKTUR, həm də BAYT (`admitChatRequest`, o cümlədən gövdəsi ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES` olanlar) üçün sağlam heap sürətli yolu üzrə məhdud əlavə tutum (#10437). Bu hədd olmadan, heap-i sağlam, lakin məşğul olan hər sorğu heç bir yuxarı hədd olmadan qəbul nəzarətindən yan keçirdi. Sağlam heap yolu ilə bu sayda paralel icarə aktiv olduqda, sonrakı məşğul sorğular real heap təzyiqi zamanı istifadə olunan EYNİ məhdud gözləmə/yük azaltma yoluna keçir. `0` yan keçidi tamamilə deaktiv edir. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Gövdəsi bayt həddindən aşağı olsa belə, çat sorğusunu ağır çəkili kimi təsnif edən mesaj sayı. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Gövdəsi bayt həddindən aşağı olsa belə, çat sorğusunu ağır çəkili kimi təsnif edən alət sayı. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Sorğunu ağır çəkili kimi təsnif edən konservativ sətir ölçüsünə əsaslanan token təxmini; bu, provayderin hesablaşma tokenləşdirilməsi deyil, qəbul xərci üçün əvəzedici göstəricidir. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (deaktivdir) | `src/shared/middleware/chatBodyAdmission.ts` | İstəyə bağlı, ayrıca aktivləşdirilən çat tarixçəsi həddi. Standart olaraq deaktivdir: mesaj sayı sorğunun universal xüsusiyyəti deyil, yerləşdirmə siyasətidir və burada hədd qoymaq söhbətləri sıxılma konveyeri onları emal edilə bilən hala gətirməzdən əvvəl yekun `413` ilə rədd edir. Heap artımı `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` və heap təzyiqinə görə yükün azaldılması ilə məhdudlaşdırılır. Sərt yuxarı həddə ehtiyacı olan, yaddaşı məhdud yerləşdirmələrdə müsbət dəyər təyin edin; bundan sonra həddi aşan sorğular strukturlaşdırılmış, sıxlaşdırma tələb edən `413` cavabı alır. | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Tamamilə yaddaşa buferlənən, axınsız yuxarı axın cavabı üçün sərt hədd. Bu hədd aşıldıqda yuxarı axın oxuyucusu ləğv edilir və heap tükənənədək sərhədsiz sətir böyütmək əvəzinə sorğu dərhal xəta ilə dayandırılır. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Yuxarı axın cavab başlıqlarından yönləndirilən baytların maksimum şəbəkə ölçüsü. Büdcə aşıldıqda, geniş yayılmış əks proksi başlıq limitləri daxilində qalmaq üçün daha aşağı prioritetli başlıqlar (məsələn, fərdi `x-codex-*`, `x-oai-request-id`) silinir. Cavab başlıqlarının ölçüsünü böyütmək bahasına daha çox yuxarı axın metadatasını yönləndirmək üçün daha yüksək dəyər təyin edin. | | `CORS_ORIGIN` | _(təyin edilməyib)_ | `src/server/cors/origins.ts` | Köhnə, tək mənşəli CORS icazə siyahısı. Yeni yerləşdirmələr üçün `CORS_ALLOWED_ORIGINS` seçiminə üstünlük verin. CORS yalnız müxtəlif mənşəli brauzer API klientləri üçündür; autentifikasiya olunmuş idarə paneli yazma əməliyyatları isə bunun əvəzinə eyni mənşəli sorğulardan və sessiyaya bağlı CSRF qorunmasından istifadə edir. | | `CORS_ALLOWED_ORIGINS` | _(təyin edilməyib)_ | `src/server/cors/origins.ts` | Vergüllə ayrılmış CORS icazə siyahısı. `CORS_ALLOW_ALL=true` açıq şəkildə konfiqurasiya edilmədikcə heç bir universal simvol göndərilmir. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | İstənilən brauzer `Origin` dəyərini əks etdirmək üçün yalnız tərtibat mühitinə aid çıxış yolu. Paylaşılan və ya istehsal yerləşdirmələrində aktivləşdirməyin. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Köhnə ləqəb. Onun idarə panelindəki dəyişdiricisi (DB üzərindən ləğvetmə) bu mühit dəyərindən əvvəl oxunur; hər hansı birində `false`, `0`, `no` və ya `off` dəyəri, həmin bayrağın idarə paneli dəyişdiricisi deaktiv vəziyyətdə yadda saxlansa belə, host yoxlamalarını `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` ilə eyni şəkildə söndürür; digər dəyərlər qorumanı aşağıdakı iki bayrağın ixtiyarına buraxır. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Qoruma rejiminə tabe olan provayder yollarında çıxış URL qorumasının host yoxlamalarını, o cümlədən bulud metadata bloklamasını (bütün 169.254.0.0/16, metadata.google.internal) söndürür: URL doğrulaması, model aşkarlanması, provayder qovşaqlarının əsas URL-ləri (uzaqdan yenidən sıralama qovşaqları daxil olmaqla) və proksi ehtiyat variantı testi, həmçinin uzaqdan şəkil/media əldə edilməsi kimi provayderlə əlaqəli digər çıxış yolları. Bulud metadata/link-local son nöqtələri istisna olmaqla, fərdi webhook hədəflərinə də icazə verir; bu son nöqtələr bayraq aktiv olduqda belə bloklanmış qalır. `BaseExecutor.execute()` vasitəsilə göndərilən çat sorğuları bulud metadata yoxlamasını saxlayır. Lokal provayderlər standart parametrlərlə işləyir: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (standart `true`) artıq doğrulama, aşkarlama və provayder qovşağı yollarında lokal və LAN URL-lərinə icazə verir; proksi ehtiyat variantı testi və fərdi webhook hədəfləri yalnız bu bayrağı yoxlayır və bayraq deaktiv olduqda lokal/LAN hostlarını bloklayır. `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` parametrini üstələyir. İdarə panelindəki dəyişdiricidən yadda saxlanmış dəyər bu dəyişəndən üstündür. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Provayder doğrulaması, model aşkarlanması, çat və qoruma rejiminin idarə etdiyi provayderlə əlaqəli digər çıxış yolları üçün lokal/fərdi ünvanlardakı (127.0.0.1, localhost, LAN, fərdi diapazonlar) provayder URL-lərinə icazə verin. **Standart `true`** (lokal üstünlüklü): bu halda qoruma bulud metadata son nöqtələrini — bütün 169.254.0.0/16 diapazonunu və məlum metadata host adlarını (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254) bloklayır. Fərdi və geri döngə hostlarını da bloklayan yalnız ictimai rejim üçün `false` təyin edin. Qoruma hər hansı DNS axtarışından əvvəl host adını və ya IP literalını yazıldığı formada yoxlayır; yalnız ictimai rejimdə təhlükəsiz əldəetmə örtüyü əlavə olaraq host adını həll edir və istənilən fərdi cavabı rədd edir. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` bu sətrin sadaladığı yollarda həmin yoxlamaları söndürür. LM Studio, Ollama, vLLM, Llamafile və Triton kimi daxili lokal provayderlər açar doğrulaması və çat üçün bütün host yoxlamalarını ötürür. İdarə panelindəki dəyişdiricidən yadda saxlanmış dəyər bu dəyişəndən üstündür. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | `/v1/audio/*` marşrutlarına (transkripsiyalar, nitq, tərcümələr) localhost xaricində yerləşdirilmiş OpenAI ilə uyğun provayder qovşağından istifadə etməyə icazə verin. Standart olaraq deaktivdir — audionun uzaq hosta yönləndirilməsi çıxış identikliyini dəyişir və operatorun açıq qərarı olmalıdır. Geri döngə/fərdi qovşaqlara (localhost, 127.0.0.1, 172.16-31.x) həmişə icazə verilir və onlar bundan təsirlənmir. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | `POST /v1/rerank` sorğusuna (və yaddaş mühərrikinin geri döngə üzərindən yenidən sıralama mərhələsinə) localhost xaricində yerləşdirilmiş OpenAI ilə uyğun provayder qovşağından — TEI, Infinity, vLLM və s. işlədən LAN kompüterindən və ya Tailscale iştirakçısından — istifadə etməyə icazə verin. Standart olaraq deaktivdir — uzaq hosta yönləndirmə çıxış identikliyini dəyişir və operatorun açıq qərarı olmalıdır. Geri döngə qovşaqlarına (localhost, 127.0.0.1, 172.16-31.x) həmişə icazə verilir və onlar bundan təsirlənmir. Uzaq qovşağın əsas URL-i həmçinin provayderin çıxış URL siyasətindən (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`) keçməlidir. | | `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(boş)_ | `src/shared/network/localNodeHosts.ts` | Provayder qovşağı marşrutlaşdırmasının lokal hesab etdiyi host adları (vergül və ya boşluqla ayrılmış) — adətən OmniRoute-un öz Docker şəbəkəsindəki yenidən sıralayıcı, TEI və ya audio yan xidmətinin Docker/Compose xidmət adı (`http://reranker:8080/v1`); beləliklə, qovşaq üçün sərt kodlaşdırılmış konteyner IP-si tələb olunmur. Siyahıya daxil edilmiş hostlar hər uzaq qovşaq üçün `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` aktivləşdirilmədən `/v1/rerank`, `/v1/audio/*` və lokal işlək vəziyyət yoxlaması üçün istifadə edilə bilər və onlara birbaşa müraciət olunur — heç vaxt `HTTP(S)_PROXY` və ya bağlantıya sabitlənmiş proksi üzərindən deyil. Onlar yenə də bağlantının API açarını göndərirlər. Yalnız bir etiketli adlar və `.internal`/`.local` adları qəbul edilir; ictimai FQDN-lər, IP literalları və bulud metadata adları xəbərdarlıqla nəzərə alınmır. (#14635) | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | OIDC aktiv olduqda istifadəçilərin yalnız OIDC Vahid Giriş vasitəsilə autentifikasiya edə bilməsi üçün parolla girişi deaktiv edin. Qısa `OIDC_DISABLE_PASSWORD_LOGIN` alternativi də qəbul edilir; eyni açara malik İdarəetmə Paneli Funksiya Bayrağına üstünlük verilir. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` üçün qısa alternativ ad (#10889). | ### Təhlükəsizliyin Gücləndirilməsi üzrə Yoxlama Siyahısı ```bash # İstehsal mühiti üçün minimum təhlükəsizlik tələbləri: AUTH_COOKIE_SECURE=true # HTTPS tələb edir REQUIRE_API_KEY=true # Bütün proksi çağırışlarını autentifikasiya edin ALLOW_API_KEY_REVEAL=false # Açarları heç vaxt istifadəçi interfeysində göstərməyin CORS_ALLOWED_ORIGINS=https://your.domain.com MAX_BODY_SIZE_BYTES=5242880 # 5 MB məhdudiyyəti ``` --- ## 5. Giriş Məlumatlarının Təmizlənməsi və PII Qorunması OmniRoute ikiqat müdafiə təmin edir: sorğu tərəfində inyeksiya skanı və cavab tərəfində PII məlumatlarının çıxarılması. > **⚠️ Məhdudiyyətlər:** Bu qoruyucu mexanizmlər tam prompt inyeksiyası təhlükəsizlik divarı və ya PII DLP sistemi deyil, _ən yaxşı səy əsasında işləyən evristik_ aşkarlama vasitələridir. Onlar yanlış müsbət nəticələr (zərərsiz persona/RPG promptlarının işarələnməsi) və yanlış mənfi nəticələr (leetspeak, boşluqlardan istifadə, ingilis dilində olmayan nümunələr) yarada bilər. Uyğunluq tələbləri üçün təkbaşına kifayət etmirlər. Onlara etibar etməzdən əvvəl rejimləri sazlayın və trafikiniz üzərində sınaqdan keçirin. ### Sorğu Tərəfi: Prompt İnyeksiyasından Qorunma | Dəyişən | Standart | Mənbə Faylı | Təsvir | | --------------------------------- | ------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Daxil olan mesajların prompt inyeksiyası nümunələrinə görə skan edilməsini aktivləşdirir. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | İnyeksiya siyasəti: `warn` = yalnız jurnala yaz, `block` = sorğunu 400 kodu ilə rədd et. Köhnə `redact` inyeksiya mətnini **çıxarmır**; sorğudakı PII məlumatlarının yenidən yazılması üçün `PII_REDACTION_ENABLED` istifadə edin. | | `INJECTION_GUARD_MODE` | _(təyin edilməyib)_ | `src/middleware/promptInjectionGuard.ts` | `INPUT_SANITIZER_MODE` üçün köhnə alternativ ad — eyni davranışa malikdir. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | `MODE=block` rejiminin rədd etdiyi minimum ciddilik səviyyəsi: `high` (standart), `medium` və ya `low`. Hədd aşağı salınmadıqca orta səviyyəli nümunələr yalnız müşahidə edilir. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(təyin edilməyib)_ | `src/shared/utils/injectionSeverity.ts` | `INPUT_SANITIZER_BLOCK_THRESHOLD` üçün köhnə alternativ ad — eyni davranışa malikdir. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | `true` olduqda, daxil olan sorğulardakı PII məlumatlarını redaktə edir (inyeksiya rejimindən asılı olmayaraq). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | Sorğu/cavab faydalı yüklərindəki geniş tanınan API açarı / məxfi token nümunələrini redaktə edir. Könüllü aktivləşdirilir; `PII_REDACTION_ENABLED` davranışını təkrarlayır. | ### Cavab Tərəfi: PII Təmizləyicisi | Dəyişən | Standart | Mənbə Faylı | Təsvir | | -------------------------------- | -------- | ------------------------- | -------------------------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Müştəriyə qaytarmadan əvvəl LLM cavablarını sızdırılmış PII məlumatlarına görə skan edir. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = PII məlumatlarını maskala, `warn` = yalnız jurnala yaz, `block` = bütün cavabı ləğv et. | ### VS Code Tokenləşdirilmiş Marşrut Kontekstinin Təmizləyicisi | Dəyişən | Standart | Mənbə Faylı | Təsvir | | ----------------------------------- | -------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | `/v1/vscode/[token]/*` sorğularından örtülü aktiv redaktor kontekstini (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) çıxarır və açıq şəkildə əlavə edilmiş həssas faylların məzmununu redaktə edir. Standart olaraq təhlükəsizdir; deaktiv etmək üçün `0` təyin edin. | ### Ssenarilər | Ssenari | Konfiqurasiya | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Korporativ uyğunluq** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (inyeksiyalar bloklanır + sorğu/cavab PII məlumatları redaktə edilir; rejimlər bir-birindən asılı deyil) | | **Yalnız monitorinq** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — jurnala yazır, lakin heç vaxt bloklamır | | **Şəxsi istifadə** | Hamısını deaktiv saxlayın — sıfır əlavə yük | --- ## 6. Alət və Marşrutlaşdırma Siyasətləri | Dəyişən | Defolt | Mənbə Faylı | Təsvir | | ----------------------------------------------------------- | ---------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | LLM alətlərinə/funksiya çağırışlarına girişi idarə edir. `allowlist` = yalnız siyahıdakı alətlər, `denylist` = siyahıdakılar istisna olmaqla hamısı, `disabled` = məhdudiyyət yoxdur. | | `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Faydalı yükün dəyişdirilməsi qaydalarını ehtiva edən JSON faylına gedən yol (hər model/protokol üzrə yuxarı axın tənzimləmələri). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Faydalı yük qaydaları faylının dinamik yenidən yüklənməsi üçün interval (ms). Minimum `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Könüllü seçim: Claude Code klientlərindən gələn prefikssiz `claude-*` model ID-lərini provayder prefiksi tələb etmək əvəzinə Claude Code OAuth hesabı vasitəsilə marşrutlaşdırır. Aydın şəkildə göstərilmiş provayder prefiksləri yenə də üstünlük təşkil edir. Həmçinin Claude provayderi səhifəsindəki idarəetmə paneli keçidi vasitəsilə konfiqurasiya edilə bilər. | | `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Köhnə `resolveBareModelToConnectionDefault` davranışı (#4825): istənilən prefikssiz model adını seçilmiş bağlantının `defaultModel` dəyəri ilə əvəz edir. Defolt olaraq söndürülüb; yalnız `auto` və ya boş model əvəz edilir; aktiv olduqda hər cüt üçün bir xəbərdarlıq jurnala yazılır. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Növbəli kombinasiyalar üçün hər model üzrə paralellik həddi (#9100). Növbəli kombinasiya semaforu əvəzləmə imkanı olmadan hər model üzrə 3 paralel sorğu ilə sərt şəkildə məhdudlaşdırılırdı və daha yüksək paralellikli trafiki həmin həddin arxasında ardıcıl emal edirdi. `>= 1` şərtinə uyğunluğu yoxlanılır, `<= 32` həddinədək məhdudlaşdırılır. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Birbaşa tək model sorğuları üçün OmniRoute-un lokal kontekst pəncərəsi / maksimum giriş tokeni yoxlamasını ötürən təhlükəli könüllü seçim. Yuxarı axın provayderləri yenə də faktiki limitlərini tətbiq edir; sorğu sıxışdırması və modelin öz çıxış tokeni həddi aktiv qalır. Effektiv üstünlük sırası belədir: Funksiya Bayraqları DB əvəzləməsi > mühit dəyişəni > defolt; yenidən başlatma tələb olunmur. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(təyin edilməyib)_ | `open-sse/services/selfHostedEntry.ts` | Sətirdaxili YAML `providers:` sənədi (RIC-738, D4). Təyin edildikdə (`strategy:` bloku ilə və ya onsuz), `/v1/chat/completions` bulud emal xətti əvəzinə öz serverində yerləşdirilən vahid OpenAI-uyğun girişə yönləndirilir. Təyin edilmədikdə (defolt): marşrut birbaşa mövcud bulud emal xəttinə keçir. `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md` sənədinə baxın. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(təyin edilməyib)_ | `open-sse/services/selfHostedEntry.ts` | Sətirdaxili mühit dəyişəni əvəzinə fayla üstünlük verən yerləşdirmələr üçün `OMNIROUTE_SELF_HOSTED_PROVIDERS` ilə eyni `providers:` sənədini ehtiva edən YAML faylına gedən yol. Onlardan hər hansı biri öz serverində yerləşdirilən girişi aktivləşdirir. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _(təyin edilməyib — açıq marşrut)_ | `open-sse/services/selfHostedEntry.ts` | Vahid, öz serverində yerləşdirilən giriş üçün ixtiyari ortaq API açarı (D5 karkası, hər açar üzrə kvota sistemi üçün ayrılıb). Təyin edildikdə sorğulara `Authorization: Bearer ` daxil edilməlidir. Təyin edilmədikdə: marşrut açıqdır və mövcud öz serverində yerləşdirilən lokal provayder nümunəsinə uyğundur (geri döngə/etibarlı şəbəkə yerləşdirməsi). | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(təyin edilməyib)_ | `open-sse/services/routingStrategies.ts` | Deterministik marşrutlaşdırma mühərriki üçün sətirdaxili YAML `strategy:` sənədi (M2/RIC-740, D3) — qara siyahı/ağ siyahı, gözləmə müddəti açarı, xərc prioriteti, gecikməni nəzərə alma, ehtiyat zənciri. Hər açar üzrə `OMNIROUTE_SELF_HOSTED_PROVIDERS` daxilində yerləşdirilmiş sətirdaxili `strategy:` blokunu əvəz edir. `docs/routing/DETERMINISTIC_ROUTING.md` sənədinə baxın. | | `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(təyin edilməyib)_ | `open-sse/services/routingStrategies.ts` | Sətirdaxili mühit dəyişəni əvəzinə fayla üstünlük verən yerləşdirmələr üçün `OMNIROUTE_SELF_HOSTED_STRATEGY` ilə eyni `strategy:` sənədini ehtiva edən YAML faylına aparan yol. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(təyin edilməyib)_ | `open-sse/services/conversationTracker.ts` | Söhbət tarixçəsinin toplanmasını dayandırmaq üçün `1` təyin edin. `resolveConversationId()` SQLite-ı oxumazdan və ya mesaj tarixçəsini təhlil etməzdən əvvəl izlənilməyən nəticə qaytarır; müştəri tərəfindən təqdim edilən sessiya ID-ləri də buna daxildir. Marşrutlaşdırma sessiyalarının idarə edilməsi dəyişmir və mövcud qeydlər silinmir. Bu seçim idarəetmə panelinin söhbət görünüşündən istifadə etməyən və növbələr cədvəlinin böyüməsini dayandırmaq istəyən yerləşdirmələr üçündür. | | `OMNIROUTE_NADIR_API_KEY` | _(təyin edilməyib)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | Kombonun öz `config.nadir.apiKey` sahəsi təyin edilmədikdə istifadə olunan, seçim əsasında aktivləşdirilən `nadir` avtomatik kombo marşrutlaşdırma strategiyası üçün API açarı. İstəyə bağlıdır: açarsız çağırışlar Nadir-in anonim səviyyəsinə yönləndirilir; bu səviyyədə sürət IP üzrə məhdudlaşdırıldığı üçün ortaq şlüz arxasında istifadəyə uyğun deyil. Həssas məlumatdır; kombolar müxtəlif hesablardan istifadə etdikdə hər kombo üçün ayrıca sahəyə üstünlük verin. | | `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Kombonun öz `config.nadir.baseUrl` sahəsi təyin edilmədikdə istifadə olunan Nadir qərar API-sinin əsas mənşə ünvanı. Yalnız öz serverinizdə yerləşdirilən Nadir üçün lazımdır; bu halda promptların başlanğıc hissələri öz şəbəkəniz daxilində saxlanılır. Sondakı `/v1` qəbul edilir və silinir. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | Hər API açarı üzrə USD istifadə limitləri üçün həftəlik pəncərə (sorğuların məhdudlaşdırılması, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: həftə açarın əlçatan olduğu yuxarı axın bağlantıları arasındakı ən erkən həftəlik sıfırlanma vaxtında bitir; heç bir vaxt məlum olmadıqda isə sürüşən 7 günlük müddət tətbiq edilir. `calendar`: bazar ertəsi saat 00:00-dan növbəti bazar ertəsi saat 00:00-a qədər olan yerli həftədir və bütün açarlar üçün eynidir. Yuxarı axın hesablarının vahid hovuzu ayrıca büdcələnmiş çoxsaylı açarlar arasında paylaşılırsa, `calendar` tövsiyə olunur. Yanlış dəyərlər üçün ehtiyat olaraq `provider` istifadə edilir. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(prosesin saat qurşağı)_ | `src/lib/usage/apiKeyUsageLimits.ts` | `calendar` həftəlik pəncərəsi üçün bazar ertəsi saat 00:00-ı müəyyən edən IANA saat qurşağı (məsələn, `Asia/Shanghai`). Təyin edilməyibsə və ya yanlışdırsa: OmniRoute prosesinin saat qurşağı (hostun və ya konteynerin `TZ` dəyişəni; konteyner obrazlarında bu çox vaxt təyin edilmir, yəni Əlaqələndirilmiş Ümumdünya Vaxtı istifadə olunur). `provider` rejimində nəzərə alınmır. | | `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | Sorğuda icazə verilən alətlərin standart maksimum sayı (OpenAI standartı). Yalnız müsbət tam ədədlər qəbul edilir; təyin edilməmiş və ya yanlış dəyərlər `128` dəyərini saxlayır. Məlum/proaktiv limiti olan provayder (`grok-cli` üçün 200, `nvidia` üçün 1536) yenə də öz yuxarı həddini tətbiq edir — bu parametr yalnız standart yuxarı həddi dəyişir. | | `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(aktiv)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai üçün promptla emulyasiya edilən alət çağırışı: parametr təyin edilmədikdə və ya `1`/`true`/`on`/`yes` olduqda yerli alət kataloqu prompta əlavə edilir; hər hansı digər dəyər (məsələn, `0`) bu əlavəni ötürür. | --- ## 7. URL-lər və Bulud Sinxronizasiyası | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ---------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | Daxili sinxronizasiya tapşırıqlarının `/api/sync/cloud` ünvanına müraciət etməsi üçün server tərəfli URL. Tətbiq ictimai proksi vasitəsilə təqdim edilsə belə, bunu loopback/konteyner URL-i kimi saxlayın. | | `CLOUD_URL` | _(boş)_ | `src/lib/cloudSync.ts` | Bulud retranslyatorunun son nöqtə URL-i (premium funksiya). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | Bulud sinxronizasiya sorğuları üçün HTTP vaxt aşımı. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Webpack yığma konfiqurasiyası | Yığma vaxtı profili (imtiyazlı modulları paketdən fiziki olaraq çıxarmaq üçün `minimal` olaraq təyin edin). | | `OMNIROUTE_STANDALONE_DIR` | _.build/ müstəqil çıxışı_ | `scripts/build/colocate-standalone.mjs` | Yığmadan sonrakı birgə yerləşdirmə mərhələsinin istifadə etdiyi müstəqil çıxış kataloqu üçün yığma vaxtı əvəzləməsi. İcra vaxtı parametri deyil. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(boş)_ | `src/lib/cloudSync.ts` | Bulud Sinxronizasiyası cavablarının HMAC-SHA256 imzasını yoxlamaq üçün istifadə edilən ortaq məxfi açar. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Bulud Sinxronizasiyası son nöqtəsinin yerli giriş məlumatlarının üzərinə yazmasına icazə vermək üçün `true` olaraq təyin edin. Standart dəyər `false`-dur. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Heç bir yerli məxfi açar konfiqurasiya edilmədikdə imzasız Bulud Sinxronizasiyası cavabını rədd etmək üçün `true` olaraq təyin edin (#13679). Mövcud imza həmişə yoxlanılır və bu bayraqdan asılı olmayaraq, `OMNIROUTE_CLOUD_SYNC_SECRET` təyin edilmədikdə həmişə rədd edilir. v3.9 versiyasında standart dəyər məcburi yoxlamaya dəyişir. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | İstifadəçi təsdiqi olmadan v3.8.5 versiyasındakı bir addımlı «hər şeyi idxal et» davranışına geri qayıtmaq üçün `true` olaraq təyin edin. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, İdarəetmə paneli, sinxronizasiya | OAuth redirect_uri, İdarəetmə paneli keçidləri və yaradılan ictimai URL-lər üçün ictimai URL. OAuth geri çağırışları və ya yaradılan brauzer keçidləri kanonik əks-proksi hostundan istifadə etməlidirsə, bunu sabit ictimai URL olaraq təyin edin. | | `NEXT_PUBLIC_CLOUD_URL` | _(boş)_ | Müştəri tərəfi | `CLOUD_URL` dəyişəninin müştəri tərəfli surəti. | | `NEXT_PUBLIC_APP_URL` | _(təyin edilməyib)_ | `src/shared/services/cloudSyncScheduler.ts` | `NEXT_PUBLIC_BASE_URL` üçün köhnə ehtiyat variant. | | `NEXT_PUBLIC_PORT` | _(təyin edilməyib — `PORT` dəyişəninə geri qayıdır)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Origin məlum olmadıqda (SSR/testlər) göstərilən URL-lər üçün müştəri tərəfli ehtiyat port; `PORT` dəyişənindən əvvəl oxunur. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(təyin edilməyib)_ | İctimai origin həlledicisi, şəkil URL-ləri | İctimai URL-lərin yaradılması və idarəetmə panelindən kənar brauzer origininin yoxlanması üçün istifadə edilən ən yüksək prioritetli, brauzerə yönəlik OmniRoute origini. OpenWebUI və ya başqa bir relay OmniRoute-a daxili URL vasitəsilə çatdıqda, lakin istifadəçinin brauzeri yaradılmış medianı LAN, tunel və ya ictimai origindən əldə etməli olduqda bunu təyin edin. `/v1` daxil **etməyin**. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(təyin edilməyib)_ | `open-sse/config/providerPluginManifestUrl.ts` | Sidecar müştərilərinə elan edilən mütləq provayder plaqini manifesti URL-i. Təyin edilmədikdə, OmniRoute sorğu originindən və ya HOST/PORT-dan `/api/v1/provider-plugin-manifest` yaradır. | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Sorğu origini olmadan HOST/PORT əsasında provayder plaqini manifesti URL-i yaradılarkən istifadə edilən protokol. Açıq `OMNIROUTE_PROVIDER_MANIFEST_URL` təyin edilməyibsə, TLS-i sonlandıran ictimai proksinin arxasında `https` olaraq təyin edin. | | `OMNIROUTE_TRUST_PROXY` | _(təyin edilməyib)_ | `src/server/origin/publicOrigin.ts` | Yönləndirilmiş ictimai origin başlıqları üçün ixtiyari etibar rejimi. Təyin edilməyib = təhlükəsizlik qərarları üçün `Forwarded` / `X-Forwarded-*` başlıqlarına etibar etmə. `true` / `loopback` yalnız tokenlə işarələnmiş loopback proksidən gələn yönləndirilmiş host/protokola etibar edir. `private` / `lan` həmçinin özəl LAN proksi tərəflərinə etibar edir və `API_PORT` körpüsünün belə bir tərəfin `X-Forwarded-For` başlığını saxlamasına imkan verir. İstehsal mühitində açıq `NEXT_PUBLIC_BASE_URL` təyin etməyə üstünlük verin. | | `KIE_CALLBACK_URL` | _(təyin edilməyib)_ | `open-sse/utils/kieTask.ts` | Asinxron kie.ai tapşırıqları üçün ictimai geriçağırış URL-i. `OMNIROUTE_KIE_CALLBACK_URL` və `OMNIROUTE_PUBLIC_URL` dəyişənlərindən əvvəl ən yüksək prioritetli əvəzetmə. | | `OMNIROUTE_KIE_CALLBACK_URL` | _(təyin edilməyib)_ | `open-sse/utils/kieTask.ts` | `KIE_CALLBACK_URL` dəyişəninin alternativ yazılışı. Əsas dəyişən təyin edilmədikdə ehtiyat variant kimi istifadə olunur. | | `OMNIROUTE_PUBLIC_URL` | _(təyin edilməyib)_ | `open-sse/utils/kieTask.ts` | Asinxron geriçağırış URL-lərini yaratmaq üçün istifadə edilən ictimai origin. kie.ai geriçağırışları üçün ən aşağı prioritetli ehtiyat variant; həmçinin digər relay-lər üçün ümumi ictimai URL kimi istifadə olunur. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | İstifadə səhifəsinin istifadə etdiyi CrofAI kvota sorğusu endpoint-i. Relay-lər / test fiksturaları üçün dəyişdirin. | | `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | İstifadə səhifəsinin istifadə etdiyi ClinePass 5 saatlıq / həftəlik / aylıq kvota endpoint-i. Relay-lər / test fiksturaları üçün dəyişdirin. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | İstifadə səhifəsinin istifadə etdiyi, API açarı ilə autentifikasiya olunan rəsmi OpenCode Go istifadə endpoint-i. Relay-lər / test fiksturaları üçün dəyişdirin. | | `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | Müştərinin göndərmədiyi opencode-go/zen upstream sorğularında OpenCode CLI identifikasiya başlıqlarını (User-Agent, x-opencode-client/project, sorğu/sessiya UUID-ləri) yaradın ki, VPS-dən çıxan trafikdə Cloudflare onları qəbul etsin (#6210/#5997). #10571-dən etibarən standart olaraq aktivdir; `false`/`0`/`no`/`off` ilə deaktiv edin. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` aktiv olduqda və provayder üzrə `_USER_AGENT` əvəzləməsi təyin edilmədikdə istifadə olunan standart User-Agent. Yalnız opencode icraçılarına tətbiq edilir. Yuxarı axın keçidlərinin açarsız sorğunu məhdudlaşdırdığı halda, `opencode/= 1.17>` daşımayan konfiqurasiya edilmiş dəyər rədd edilmək əvəzinə bu standart dəyərlə əvəz olunur. | | `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (aktiv) | `open-sse/utils/opencodeHeaders.ts` | Müştəri tətbiqinin atributlaşdırma başlıqlarını (`x-session-id`, `x-title`, `http-referer`) yuxarı axın provayderlərinə ötürür ki, siyahıya alınmış icra mühitində başlayan sorğu marşrutlayıcıdan keçərkən öz identikliyini saxlasın (OpenRouter nəşriyyatçı keçidləri bunlara əsaslanır). `0`/`false`/`no`/`off` reyestr/operator identikliyini saxlayır və müştərinin təqdim etdiyi dəyərləri ləğv edir. Operator tərəfindən konfiqurasiya edilmiş fərdi başlıqlar həmişə müştəri dəyərlərindən üstün olur. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` aktiv olduqda sintez edilmiş `x-opencode-client` başlığı üçün dəyər. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` aktiv olduqda sintez edilmiş `x-opencode-project` başlığı üçün dəyər. | | `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(təyin edilməyib)_ | `open-sse/config/providerErrorRules.ts` | Yuxarı axın xətaları çıxış IP-si üzrə qruplaşdırılan provayderlərin qüvvədə olan dəsti (bir 429 xətası həmin IP-ni paylaşan bütün əlaqəli bağlantıları dayandırır). Təyin edilmədikdə pulsuz səviyyə üçün standart `opencode,opencode-go,opencode-cli` istifadə olunur; `none`/`off`/`false`/`0` kaskadı tamamilə deaktiv edir; vergüllə ayrılmış siyahı dəsti əvəz edir. Ödənişli planlar yuxarı axında hesab üzrə qruplaşdırılır və bunu təhlükəsiz şəkildə deaktiv edə bilər (#9611). | | `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(təyin edilməyib)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Açarsız OpenCode sorğularının gövdəsinin (axın bayrağı və alətlər siyahısı) tənzimlənməsini dayandırmaq üçün `off` olaraq təyin edin. Başlıqlar yenə də tətbiq olunur. Hər sorğuda yenidən oxunur, buna görə dəyişiklik dərhal qüvvəyə minir. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(təyin edilməyib)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Heç bir alət daşımayan açarsız OpenCode sorğusunda, həmin model üçün hələ heç nə müşahidə edilmədikdə elan ediləcək vergüllə ayrılmış alət adları. Boş olduqda modelə çağırmaması bildirilən tək yer tutucuya geri qayıdır. Ən çoxu 32 qeyd, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; etibarsız qeydlər nəzərə alınmır. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | Kvota məlumatlarının çıxarılması üçün istifadə olunan Ollama Cloud parametrləri URL-si. Relelər / test qurğuları üçün əvəzləyin. | | `OLLAMA_USAGE_COOKIE` | _(təyin edilməyib)_ | `open-sse/services/usage.ts` | Parametrlər səhifəsindən kvota məlumatlarının çıxarılması üçün istifadə olunan Ollama Cloud `__Secure-session` kukisi. Həssasdır; bir neçə hesab konfiqurasiya edildikdə hər bağlantı üzrə İdarəetmə paneli sahəsinə üstünlük verin. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(təyin edilməyib)_ | `open-sse/services/usage.ts` | Alternativ Ollama Cloud `__Secure-session` kukisi mühit dəyişəni. Həssasdır; bir neçə hesab konfiqurasiya edildikdə hər bağlantı üzrə İdarəetmə paneli sahəsinə üstünlük verin. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(təyin edilməyib)_ | `open-sse/services/usage.ts` | Daha qısa alternativ adlardan əvvəl istifadə olunan alternativ Ollama Cloud `__Secure-session` kukisi mühit dəyişəni. Həssasdır; bir neçə hesab konfiqurasiya edildikdə hər bağlantı üzrə İdarəetmə paneli sahəsinə üstünlük verin. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | CodeWhisperer (AWS Kiro) istifadə limitləri son nöqtəsi. Relelər / test qurğuları üçün əvəzləyin. | > [!IMPORTANT] > Əks proksinin (nginx, Caddy) arxasında yerləşdirərkən, OAuth geri çağırışlarının və ya yaradılan ictimai keçidlərin həmin host adından istifadə etməsi tələb olunursa, `NEXT_PUBLIC_BASE_URL` dəyişənini sabit ictimai URL ünvanınıza (məsələn, `https://omniroute.example.com`) təyin edin. Əks halda, redirect_uri uyğun gəlmədiyi üçün OAuth geri çağırışları uğursuz ola və yaradılan ictimai keçidlər daxili konteyner mənbəyinə yönələ bilər. > > Serverlərarası tapşırıqlar üçün `BASE_URL` dəyişənini daxili geri döngə/konteyner URL ünvanı kimi saxlayın. Autentifikasiya məlumatlarını daşıyan daxili özünə sorğular üçün brauzer `Origin` dəyərindən və ya ictimai host adından istifadə etməyin. > > Autentifikasiya edilmiş idarəetmə paneli yazma əməliyyatları statik ictimai baza URL ünvanı tələb etmir: idarəetmə paneli eyni mənbəli təhlükəli sorğuları sessiyaya bağlı CSRF tokeni ilə göndərir. OmniRoute idarəetmə panelindən kənar brauzer inteqrasiyaları üçün ictimai mənbənin doğrulanmasını yenə də mərkəzləşdirir: əvvəlcə açıq şəkildə göstərilmiş ictimai URL mühit dəyişənlərinə etibar edilir; `OMNIROUTE_TRUST_PROXY` aktiv edilmədikcə və birbaşa proksi tərəfi tokenlə etibarlı kimi işarələnmədikcə xam `Forwarded` / `X-Forwarded-*` başlıqları nəzərə alınmır. Eyni mənbəli idarəetmə paneli sorğularını düzəltmək üçün CORS parametrlərindən istifadə etməyin; CORS yalnız müxtəlif mənbəli brauzer klientləri üçündür. --- ## 8. Çıxış Proksisi Çıxış trafikinə nəzarət, coğrafi marşrutlaşdırma və ya IP ünvanını maskalamaq üçün yuxarı səviyyəli LLM provayderinə edilən çağırışları HTTP və ya SOCKS5 proksisi vasitəsilə yönləndirin. `OMNIROUTE_UPSTREAM_HTTP2_ENABLED` standart olaraq `true` dəyərinə malikdir. `open-sse/utils/proxyDispatcher.ts` və `open-sse/utils/proxyFetch.ts` fayllarındakı Undici dispetçerlərində HTTP/1.1 istifadəsini məcbur etmək üçün onu `false`, `0`, `no` və ya `off` olaraq təyin edin: birbaşa çıxış trafiki, HTTP(S)/SOCKS proksiləri, retranslyatorlar və onların yeni soketlə təkrar cəhdləri. Bu, TLS sertifikatının yoxlanılmasını, proksi autentifikasiyasını, bağlantı limitlərini və keep-alive parametrlərini qoruyur. Dəyişiklikdən sonra OmniRoute-u yenidən başladın, çünki dispetçerlər keşlənir və retranslyator agentləri işəsalma zamanı yaradılır. Bu keçid wreq TLS rəqəmsal izinin təqlidini və ya provayderə xas nəqliyyat mexanizmlərini idarə etmir. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ---------------------------------------- | ------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Yuxarı axın çağırışları üçün SOCKS5 proksi agentini aktivləşdirir. `false` ilə deaktiv edin. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Müştəri tərəfi | Müştəri tərəfinin SOCKS5 əlçatanlığından xəbərdar olması. | | `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Standart olaraq aktiv funksiya bayrağıdır (baxın: [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); idarəetmə panelindəki DB əvəzləməsi üstünlük təşkil edir). Proksi hovuzları və hesab üzrə rotasiya, indicə uğursuz olmuş üzvü (rədd edilmiş TCP yoxlaması və ya onun üzərindən alınmış 429) hər təkrarda ikiqat artan və yuxarı həddə qədər davam edən müddət ərzində yenidən təqdim etmir. `false` adi seçimi bərpa edir. | | `SELECTOR_CONTROL_ALLOWLIST` | _(təyin edilməyib)_ | `src/lib/proxySubscription/selectorGuard.ts` | Loopback-dən kənar yerli nüvə selektorunun idarəetmə hədəfləri üçün icazə siyahısıdır (vergül/boşluqla ayrılmış hostlar və ya IP-lər; `*` LAN/özəl şəbəkəni açır, lakin metadata/link-local ünvanlarını heç vaxt açmır). http/https üzərindən loopback standart olaraq icazəlidir. Təyin edildikdə və boş olmadıqda, idarəetmə panelindəki DB dəyəri bu dəyişəndən üstün olur. | | `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | Hər təkrarda ikiqat artırılan 429 kənaraqoyma müddətinin baza dəyəri (ms). Başlanğıcda bir dəfə oxunur. `1000..3600000` aralığı ilə məhdudlaşdırılır; aralıqdan kənar və ya oxuna bilməyən dəyər xəbərdarlıqla standart dəyərə qaytarılır. | | `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 kənaraqoyma müddətinin yuxarı həddi (ms). Başlanğıcda bir dəfə oxunur. `1000..3600000` aralığı ilə məhdudlaşdırılır; aralıqdan kənar və ya oxuna bilməyən dəyər xəbərdarlıqla standart dəyərə qaytarılır. Yuxarı hədd baza dəyərindən aşağı olduqda standart dəyərə qaytarılır. Yuxarı həddin azaldılması ardıcıl uğursuzluqların unudulma müddətini də qısaldır: qeydlər müddət bitdikdən `2 x max` sonra silinir. | | `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | İstəyə bağlı funksiya bayrağıdır (baxın: [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); idarəetmə panelindəki DB əvəzləməsi üstünlük təşkil edir). Kvotası çıxış ünvanına görə qruplaşdırılan provayderlər üçün yaxın zamanda rədd edilmiş üzvün müşahidə olunan çıxış ünvanını paylaşan hovuz üzvünü sağlam üzvlərdən dərhal sonra sıralayır. Yalnız sıralamaya təsir edir, heç vaxt istisna etmir. Oxuduğu rəddetmə siqnalını yaradan `PROXY_SKIP_RECENTLY_FAILED` tələb olunur. | | `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | İmtinalar axınının yalnız bir hadisə göndərməsi üçün hər hovuz üzvü üzrə təkrarlanan `proxy.set_aside` webhook xəbərdarlıqlarını məhdudlaşdıran təkrar bildiriş pəncərəsi (ms). Hər göndəriş zamanı oxunur. `1000..3600000` aralığı ilə məhdudlaşdırılır; aralıqdan kənar və ya oxuna bilməyən dəyər səssizcə standart dəyərə qaytarılır. | | `HTTP_PROXY` | _(təyin edilməyib)_ | Node.js standartı | Yuxarı axın çağırışları üçün HTTP proksisi. | | `HTTPS_PROXY` | _(təyin edilməyib)_ | Node.js standartı | Yuxarı axın çağırışları üçün HTTPS proksisi. | | `ALL_PROXY` | _(təyin edilməyib)_ | Node.js standartı | Universal proksi (`socks5://` dəstəkləyir). | | `OMNIROUTE_PROXY_ECHO_URL` | _(təyin edilməyib)_ | `src/lib/proxyEchoTarget.ts` | Proksi çıxış yoxlamalarının istifadə etdiyi IP-əks etdirmə hədəfini tək bir URL-ə sabitləyir. Təyin edilmədikdə, yalnız IPv4 dəstəkləyən tunellərin işləməz kimi bildirilməməsi üçün yoxlama əvvəlcə `api64.ipify.org`, sonra isə `api4.ipify.org` ünvanını sınayır (#9694). | | `NO_PROXY` | _(təyin edilməyib)_ | Node.js standartı | Proksidən yan keçmək üçün vergüllə ayrılmış host adları/IP-lər. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Keşlənmiş hər HTTP/SOCKS proksi dispetçeri üçün maksimum paralel soket sayı. Codex `/v1/responses` kimi uzunmüddətli SSE axınları, bir neçə sorğu eyni hesab səviyyəli proksini paylaşdıqda birdən çox bağlantı tələb edir. `256`-dan yuxarı dəyərlər məhdudlaşdırılır. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | SOCKS5 əlaqə qurma (connect) taym-autu, ms ilə. Tək bir rezident şlüz hostu yüksək paralelliklə (məsələn, eyni vaxtda 100 sorğu) yükləndikdə bu dəyəri artırın — proksi əlçatan olsa belə, həddindən artıq yüklənmiş hovuzda faktiki əlaqə qurma 10 saniyəni keçə bilər; əks halda bu, yanlış `[Proxy Fast-Fail] Proxy unreachable` xətası kimi görünür. Maksimum `120000` ilə məhdudlaşdırılır. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | `false` olduqda (standart), təyin edilmiş proksisi həll edilə bilməyən sorğu birbaşa bağlantıya keçmək əvəzinə **rədd edilir (uğursuzluqda bağlı qalır)** — bu, real IP sızmalarının qarşısını alır. Əvvəlki DIRECT ehtiyat davranışını bərpa etmək üçün `true` təyin edin. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | wreq-js istifadə edərək TLS rəqəmsal izini saxtalaşdırır (Chrome 124-ü təqlid edir). JA3/JA4 bloklamasına qarşı təsir göstərir. | | `TLS_FINGERPRINT_PROVIDERS` | _(təyin edilməyib)_ | `open-sse/utils/proxyFetch.ts` | Yeni proksili TLS marşrutlaşdırması (`open-sse/utils/proxyFetch.ts`) üçün vergüllə ayrılmış provayder icazə siyahısı. Təyin edilmədikdə birbaşa TLS əvvəlki davranışını saxlayır; yalnız bu provayderlər Chrome-124 rəqəmsal iz körpüsü vasitəsilə marşrutlaşdırılır. Groq (`api.groq.com`), icazə siyahısı təyin edilmədikdə belə istisna olunur, çünki Chrome JA3 Cloudflare 1010 xətasına səbəb olur, yerli undici isə API-yə çata bilir. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Claude Turnstile Playwright brauzer kontekstinə HTTPS sertifikat xətalarını nəzərə almamağa icazə verir. | ### Ssenarilər | Ssenari | Konfiqurasiya | | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | **SSH tuneli vasitəsilə SOCKS5** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` | | **Korporativ HTTP proksisi** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` | | **Rəqəmsal izə qarşı qorunma** | `ENABLE_TLS_FINGERPRINT=true` — `wreq-js` tələb edir (daxildir) | | **Çıxışı idarə olunan / birbaşa giriş yoxdur** | `PROXY_FAIL_OPEN=false` saxlayın (standart). Proksi əlçatan olmadıqda sorğular birbaşa bağlantı vasitəsilə sızmaq əvəzinə qəti şəkildə uğursuz olur. | | **Əvvəlki davranış / işlənmə — birbaşa ehtiyat bağlantıya icazə ver** | `PROXY_FAIL_OPEN=true`. Sərtləşdirmədən əvvəlki davranışı bərpa edir: proksinin həlli uğursuz olduqda birbaşa bağlantı istifadə edilir. | > **Qeyd (NVIDIA doğrulamasından yan keçmə — #3226):** NVIDIA-nın API açarı doğrulama son nöqtəsi > qlobal proksi/TLS-düzəlişli fetch vasitəsilə marşrutlaşdırıldıqda ilişib qalır (undici dispetçeri → 504). > `src/lib/providers/validation.ts::directHttpsRequest()` həmin tək doğrulama çağırışı üçün > `safeOutboundFetch({ bypassProxyPatch: true })` istifadə edərək proksi düzəlişindən qəsdən yan keçir. > Bu, sənədləşdirilmiş, məhdud əhatəli istisnadır — söhbət/istifadə çıxışına **təsir etmir**. > Yan keçmənin əhatə dairəsi `tests/unit/proxy-bypass-scope-guard-3226.test.ts` tərəfindən sabitlənir. --- ## 9. CLI Aləti İnteqrasiyası OmniRoute-un CLI köməkçi proseslərini (Claude Code, Codex və s.) necə aşkarladığını və işə saldığını idarə edir. | Dəyişən | Standart | Mənbə faylı | Təsvir | | --------------------------------- | -------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = sistem PATH-də axtarış; `manual` = yalnız açıq şəkildə göstərilmiş yollardan istifadə. | | `CLI_EXTRA_PATHS` | _(təyin edilməyib)_ | `src/shared/services/cliRuntime.ts` | CLI binar fayllarının aşkarlanması üçün əlavə PATH qeydləri (iki nöqtə ilə ayrılmış). | | `CLI_CONFIG_HOME` | _(təyin edilməyib)_ | `src/shared/services/cliRuntime.ts` | CLI konfiqurasiyalarını (`~/.claude`, `~/.codex`) oxumaq üçün ev qovluğunu əvəz edir. Mütləq yol olmalı və prosesin ev qovluğunda yerləşməlidir — **və ya** konteynerdə bind-mount edilmiş yol olmalıdır (`/host-home` belə işləyir). Digər bütün hallarda ev qovluğuna geri qayıdılır. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | OmniRoute-a CLI konfiqurasiya fayllarını (token yeniləməsi, sessiya məlumatları) yazmağa icazə verir. Hər bir CLI konfiqurasiya yazma əməliyyatının açıq şəkildə "yazma deaktiv edilib" xətası ilə uğursuz olması üçün `false` olaraq təyin edin. | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Claude CLI binar faylına xüsusi yol. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Codex CLI binar faylına xüsusi yol. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Droid CLI binar faylına xüsusi yol. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | OpenClaw CLI binar faylına xüsusi yol. | | `CLI_CURSOR_BIN` | `agent`, sonra `cursor` | `src/shared/services/cliRuntime.ts` | Cursor agenti binar faylına xüsusi yol. Bu təyin edilmədikdə aşkarlama əvvəlcə `agent`-i yoxlayır, sonra isə `cursor`-a keçir. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Cline CLI binar faylına xüsusi yol. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | 5dive CLI binar faylına xüsusi yol. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | 5dive-ın sistem vəziyyəti qovluğu (root-a məxsus autentifikasiya profilləri); 5dive-ın öz standart STATE_DIR dəyərini əks etdirir. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Continue CLI binar faylına xüsusi yol. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Qoder CLI binar faylına xüsusi yol. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Qwen Code CLI binar faylına xüsusi yol. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Aider CLI binar faylına xüsusi yol. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Goose CLI binar faylına xüsusi yol. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Google Gemini CLI binar faylına xüsusi yol — yalnız server tərəfində aşkarlama/sağlamlıq yoxlamaları üçün; `omniroute run gemini` sistem PATH-indən `gemini` binar faylını tapır. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Kilo Code CLI binar faylına xüsusi yol. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | OpenCode CLI binar faylına xüsusi yol. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Hermes binar faylına xüsusi yol. Hər iki kataloq qeydi (`hermes` və `hermes-agent`) tərəfindən paylaşılır. | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | ForgeCode CLI binar faylına xüsusi yol. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | jcode CLI binar faylına xüsusi yol. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | DeepSeek TUI binar faylına xüsusi yol. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | CodeWhale CLI binar faylına xüsusi yol. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Smelt CLI binar faylına xüsusi yol. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Pi (pi-coding-agent) binar faylına xüsusi yol. | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Crush CLI binar faylına xüsusi yol. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Oh My Pi (`omp`) agentinin binar faylına xüsusi yol. | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Letta CLI binar faylına xüsusi yol. | | `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Prime Agent (Prime Intellect) binar faylına xüsusi yol. | | `CLI_WINDSURF_BIN` | _(yoxdur)_ | `src/shared/services/cliRuntime.ts` | Windsurf binar faylına xüsusi yol. Windsurf **heç bir standart komanda olmadan** təqdim edilir — bu təyin edilənədək binar faylın aşkarlanması deaktiv qalır. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Devin CLI binar faylına (v3.8.0) xüsusi yol. Windsurf/Devin icraçısı tərəfindən istifadə olunur. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin Desktop `ide_version`. Əvəzləyici dəyərlər `x.y.z` formatından istifadə etməlidir; etibarsız dəyərlər təsdiqlənmiş standart dəyərə qaytarılır. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | Desktop `ide_version` dəyərindən fərqli olan paketə daxil edilmiş Codeium/language-server `extension_version` dəyəri. Əvəzləyici dəyərlər `x.y.z` formatından istifadə etməlidir; etibarsız dəyərlər paketdəki standart dəyərdən istifadə edir. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Yalnız agentik körpü üçün Devin CLI əvəzləməsi. İcraçı yalnız yerli ACP stdio yuxarı axınını qəbul edir. | | `DEVIN_AGENTIC_HOME` | _(tələb olunur)_ | `open-sse/executors/devin-cli-agentic.ts` | Agentik Devin alt prosesi üçün mütləq təcrid olunmuş ev qovluğu; qəbul edilən körpü yolları `/home/bridge` və tapşırığa məxsus `.sandbox` yollarıdır (Windows-da `C:\...\.sandbox\...`). | | `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Körpü alt prosesi dayandırıb açıq taymaut qaytarmazdan əvvəl bir Devin ACP dövrəsinin maksimum müddəti. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Təcrid olunmuş körpü üçün əsas Claude Code model ləqəbi. Canlı sınaq sistemi nümunəni cari Devin hesabının qaytardığı modellə əvəz edir. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code öz standart Sonnet modelini tələb etdikdə istifadə olunan təcrid olunmuş körpü ləqəbi. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code öz standart Opus modelini tələb etdikdə istifadə olunan təcrid olunmuş körpü ləqəbi. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code öz standart Haiku modelini tələb etdikdə istifadə olunan təcrid olunmuş körpü ləqəbi. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code alt agentləri üçün istifadə olunan təcrid olunmuş körpü ləqəbi. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Devin CLI kvotası (`GetUserStatus`) tərəfindən istifadə edilən Codeium istifadəçi yeri idarəetmə API-si üçün ixtiyari əvəzləmə. | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Lokal `auggie` provayderinin istifadə etdiyi Augment (Auggie) CLI binar faylı üçün mütləq yol əvəzləməsi. Tapılmadıqda əvvəlcə `CLI_AUGGIE_BIN`, sonra isə PATH axtarışı istifadə olunur. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Augment (Auggie) CLI binar faylının yolu üçün alternativ əvəzləmə (`AUGGIE_BIN`-dən sonra yoxlanılır). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Lokal `zcode` provayderinin stdio müştərisi üçün istifadə edilən binar fayl. Tapılmadıqda PATH-dəki `zcode` istifadə olunur. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | `cliTools` vasitəsilə işə salındıqda `zcode` binar faylına ötürülən əlavə arqumentlərin JSON massivi (≤16 sətir). | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | ZCode tətbiq serverinin alt prosesi üçün iş qovluğu. | | `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | Tətbiq serverinə göndərilən provayder identifikatoru üçün əvəzləmə. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | ZCode tətbiq serverinin icra mühitinin kök qovluğu (paketə daxil olan `node` və `zcode-server.cjs` burada yerləşir). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | ZCode tətbiq serverini işlətmək üçün istifadə edilən Node icra faylı. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | ZCode serverini işlətmək üçün istifadə edilən tətbiq serverinin giriş skripti. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | ZCode tətbiq serverinin işə salınmasının uğursuz hesab edilməsindən əvvəl başlanğıc zaman aşımı (ms). | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | ZCode tətbiq serveri çağırışı üçün hər sorğu üzrə RPC zaman aşımı (ms). | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Nəzarətçi zaman aşımı tətbiq etməzdən əvvəl bir ZCode gedişinin maksimum müddəti (ms). | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | ZCode gedişinin tamamlanmasını yoxlama intervalı (ms). | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | OmniRoute-un Hermes CLI konfiqurasiyasını oxuduğu/yazdığı Hermes Agent ev qovluğu. Hermes PowerShell quraşdırıcısının Windows-da təyin etdiyi mühit dəyişəninə uyğundur (`%LOCALAPPDATA%\hermes`). | ### CLI Profilinin Avtomatik Sinxronlaşdırılması Bu funksiya bayraqları seçim əsasında aktivləşdirilir və standart olaraq söndürülüb. Onları CLI Code idarə panelindən də aktivləşdirmək və ya söndürmək olar. | Dəyişən | Standart | Mənbə Faylı | Təsvir | | ------------------------------------- | -------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Provayder modelinin sinxronlaşdırılmasından sonra `~/.codex/*.config.toml` profil fayllarını canlı kataloq əsasında avtomatik olaraq yenidən yazır. `CLI_ALLOW_CONFIG_WRITES` tələb olunur; aktiv/standart Codex konfiqurasiyasını, autentifikasiyanı, Codex-lb parametrlərini və ya provayder seçimini heç vaxt dəyişmir. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Provayder modelinin sinxronlaşdırılmasından sonra `~/.claude/profiles//settings.json` Claude Code profil fayllarını canlı kataloq əsasında avtomatik olaraq yenidən yazır. `CLI_ALLOW_CONFIG_WRITES` tələb olunur; aktiv/standart Claude konfiqurasiyasını, autentifikasiyanı və ya provayder seçimini heç vaxt dəyişmir. | ### Docker Nümunəsi ```bash # Host binar fayllarını konteynerə qoşun və onların yerini OmniRoute-a bildirin: 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` yalnız yol host sistemindən faktiki olaraq bind-mount edildikdə qüvvəyə minir — onu `~/.codex:/host-home/.codex:rw` kimi mount-larla birlikdə istifadə edin (`docker-compose.yml` faylındakı `host` profilinə baxın). Nə konteyner istifadəçisinin ev qovluğunda, nə də bind mount daxilində olan yol nəzərə alınmır, çünki ora yazılanlar konteyner yenidən yaradıldıqda itiriləcək. İmaj `USER node` kimi işləyir, buna görə mount edilməmiş `/root` **etibarlı** əvəzetmə deyil. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ---------------------------------------- | -------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(avtomatik)_ | `src/shared/utils/containerEnv.ts` | Konteyner aşkarlanmasını məcburi aktiv (`1`/`true`) və ya deaktiv (`0`/`false`) edin. Yalnız avtomatik aşkarlamanın müəyyən edə bilmədiyi icra mühitlərində lazımdır. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | CLI alətinin konfiqurasiyanı mount edilməmiş konteyner yoluna yazmasına hər halda icazə verin. CLI ekvivalenti `--allow-container-write` seçimidir. | ### CLI binar faylı (`omniroute`) üçün köməkçi dəyişənlər Bu dəyişənlər yuxarıdakı sidecar aşkarlanmasını deyil, `omniroute` CLI binar faylının öz davranışını tənzimləyir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------- | --------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(sistem)_ | `bin/cli/i18n.mjs` | CLI çıxış dilini məcburi təyin edin. BCP-47 lokalı (məsələn, `en`, `pt-BR`). Sistem lokalının mühit dəyişənlərini (LC_ALL, LC_MESSAGES) üstələyir. | | `OMNIROUTE_SHOW_LOG` | _(təyin edilməyib)_ | `bin/cli/runtime/processSupervisor.mjs` | Nəzarət edilən rejimdə serverin stdout/stderr çıxışını terminala yönləndirmək üçün `1` təyin edin. `omniroute serve` əmrindəki `--log` bayrağına ekvivalentdir. | | `OMNIROUTE_CLI_TOKEN` | _(təyin edilməyib)_ | `bin/cli/api.mjs` | `x-omniroute-cli-token` başlığı kimi əlavə edilən maşın autentifikasiyası tokeni. 8.12 tapşırığında avtomatik yaradılır. | | `GEMINI_CLI_HOME` | _(təyin edilməyib)_ | `bin/cli/commands/setup-gemini.mjs` | Davamlı Gemini ev kökü; birdəfəlik icra müvəqqəti, təcrid olunmuş ev qovluğundan istifadə edir. | | `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Siqnal göndərilmiş CLI alt prosesi məcburi dayandırılmazdan əvvəl millisaniyə ilə güzəşt müddəti. | | `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(təyin edilməyib)_ | `bin/omniroute.mjs` | Standart istifadəçinin məlumat qovluğu mühit faylını ötürmək üçün açıq şəkildə təyin edilmiş DATA_DIR ilə birlikdə `1` təyin edin. | | `OMNIROUTE_SYNC_TOKEN` | _(təyin edilməyib)_ | `bin/cli/commands/sync.mjs` | `omniroute sync bundle` üçün sinxronizasiya tokeni (`GET /api/sync/bundle` yalnız sinxronizasiya tokenini qəbul edir, API açarını deyil). `--token` seçiminə ekvivalentdir. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | CLI → server sorğuları üçün hər cəhdə düşən HTTP vaxt limiti (ms). | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | CLI-nin vaxt aşımı xəbərdarlığını çap etməzdən əvvəl serverin sağlamlıq son nöqtəsini gözlədiyi maksimum müddət (ms). Yavaş soyuq başlanğıclar üçün faydalıdır (məsələn, Windows). `--ready-timeout` vasitəsilə də təyin edilə bilər. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | CLI əmrləri zamanı təkrar cəhd/geri çəkilmə diaqnostikasını stderr-ə çap etmək üçün `1` təyin edin. | | `OMNIROUTE_PLUGIN_PATH` | _(təyin edilməyib)_ | `bin/cli/plugins.mjs` | CLI plaginlərinin aşkarlanması üçün xüsusi qovluq (`omniroute-cmd-*` paketləri). Təyin edilmədikdə standart olaraq `~/.omniroute/plugins/` istifadə olunur. Yalnız CLI üçündür — server tərəfindəki plagin skanerinə heç vaxt ötürülmür; həmin skaner `OMNIROUTE_PLUGINS_DIR` (bölmə 2) ilə göstərilir. | | `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(təyin edilməyib)_ | `bin/omniroute.mjs` | Boş olmayan istənilən dəyər təyin edildikdə prosesdən çıxış zamanı CLI yeniləmə bildirişini gizlədin. Bildiriş CI, səssiz rejim və mətn olmayan çıxış rejimlərində ayrıca deaktiv olaraq qalır. | | `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(törədilmiş)_ | `bin/cli/commands/doctor.mjs` | `omniroute doctor` tərəfindən yoxlanılan canlılıq URL-si. Proqram vasitəsilə verilən `livenessUrl` seçimi üstünlük təşkil edir; əks halda bu dəyər olduğu kimi istifadə olunur. Təyin edilmədikdə CLI yerli idarəetmə panelinin `/api/health/degradation` son nöqtəsini törədir. | | `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | CLI provayder əmrlərinin istifadə etdiyi provayder kataloqu yolu. Proqram vasitəsilə verilən `catalogPath` seçimi üstünlük təşkil edir. Mütləq yollar olduğu kimi istifadə edilir; nisbi yollar layihənin kökündən həll olunur. Təyin edilmədikdə CLI provayder sabitləri qovluğundan, ehtiyat variant kimi isə köhnə `providers.ts` faylından istifadə edir. | | `OMNIROUTE_PROVIDER_TEST_MODEL` | _(provayderin standart dəyəri)_ | `bin/cli/provider-test.mjs` | CLI provayder bağlantısı testləri üçün qlobal ehtiyat model. Üstünlük sırası: konfiqurasiya edilmiş bağlantı modeli, provayderə xas model əvəzetməsi, bu dəyər və sonda provayderin daxili test modeli. | --- ## 10. Daxili Agent və MCP İnteqrasiyaları | Dəyişən | İlkin dəyər | Mənbə faylı | Təsvir | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | avtomatik aşkarlama | `open-sse/mcp-server/server.ts` | MCP/A2A alətlərinin OmniRoute-a çatması üçün açıq şəkildə göstərilən URL. localhost-un avtomatik aşkarlanmasını ləğv edir. | | `OMNIROUTE_API_KEY` | _(təyin edilməyib)_ | MCP/A2A modulları | Daxili MCP aləti və A2A bacarıq çağırışları üçün API açarı. | | `OMNIROUTE_API_KEY_ID` | _(təyin edilməyib)_ | `open-sse/mcp-server/audit.ts` | MCP audit jurnalı aidiyyəti üçün açar ID-si. | | `ROUTER_API_KEY` | _(təyin edilməyib)_ | Köhnəlmiş | `OMNIROUTE_API_KEY` üçün köhnəlmiş alternativ ad. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Gündəlik təmizləmə sətri silməzdən əvvəl A2A tapşırıq tarixçəsinin yerli verilənlər bazasında saxlanıldığı günlərin sayı. Təyin edilmədikdə, rəqəm olmadıqda və ya `<= 0` olduqda `30` istifadə edilir. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | A2A yaddaş uyğunluqlarının müşahidə edilə bilməsi funksiyası üçün qəza söndürmə açarı. Tapşırıq üçün yaddaşdan xatırlatma axtarışını tamamilə ötürmək məqsədilə `0` olaraq təyin edin; istənilən digər dəyər (təyin edilməməsi daxil olmaqla) onu aktiv saxlayır. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Oflayn/yerli Issue Agent qeydə alınmış triaj son nöqtəsini aktivləşdirir. Yerli qeydə alınmış triaj iş axınları açıq şəkildə icra edilmirsə, deaktiv saxlayın. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(təyin edilməyib)_ | `src/lib/issueAgent/execution.ts` | Tək bir Issue Agent qeydə alınmış triaj icrası üçün taymaut (ms). Daxili maksimumla məhdudlaşdırılır; təyin edilmədikdə və ya etibarsız olduqda daxili standart dəyər istifadə edilir. | | `OMNIROUTE_CONTEXT` | _(aktiv kontekst)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | `omniroute` komandaları üçün CLI uzaq rejim konteksti/profili; yerli kontekstlər anbarındakı aktiv konteksti ləğv edir. `--context ` ilə ekvivalentdir. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | CLI kontekst etimadnamələri üçün ixtiyari `keytar` ƏS açar zənciri server tərəfini deaktiv edir. Aktivləşdirildikdə etimadnamələr `config.json` faylında `0600` rejimində qalır və CLI bir dəfəlik ehtiyat varianta keçid xəbərdarlığı verir; məqsədli başsız/konteyner əməliyyatları üçün nəzərdə tutulub. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | MCP alət çağırışlarında əhatə dairəsinə əsaslanan giriş nəzarətini məcburi edir. | | `OMNIROUTE_MCP_SCOPES` | _(hamısı)_ | `open-sse/mcp-server/server.ts` | Vergüllə ayrılmış əhatə dairələri: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Manifesti seriallaşdırmazdan əvvəl MCP alət təsvirlərini sıxır. Aktivləşdirən dəyərlər: `1`, `true`, `on`. | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Sıxılma alqoritmi/profili. Deaktivləşdirən dəyərlər: `0`, `false`, `off`. | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | MCP serverinin daxili idarəetmə oxumaları (sağlamlıq, dayanıqlılıq, kombinasiyalar, kvota, istifadə) üçün dayandırma limiti (ms). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Provayderi gözləyən MCP keçidləri (`route_request`, `web_search`, `web_fetch`) üçün dayandırma vaxtı limiti (ms). | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Yaddaşda keşlənən lokal korpus indeks nümunələrinin maksimum sayı (LRU, indekslənmiş hər kök qovluq üçün bir ədəd). Minimum `1` dəyəri ilə məhdudlaşdırılır. | | `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Model kataloqunun saatla sinxronizasiya intervalı. | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Provayderin sürət limiti və kvotasının yoxlanılması intervalı. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Kütləvi sinxronizasiya zamanı ardıcıl OAuth kvota sorğuları arasındakı fasilə (ms); yuxarı axında sorğu sıçrayışının qarşısını almaq üçün OAuth bağlantıları bir-bir sorğulanır. `0` bu davranışı söndürür (paralel). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Hər sorğu üzrə ilkin yoxlama/monitorinq yolunda ardıcıl yuxarı axın kvota sorğuları arasındakı minimum interval (ms); eyni IP-dəki çoxsaylı hesabların yuxarı axına ani sorğu sıçrayışı yaratmaması üçün paralel şəbəkə çağırışları arasında fasilə yaradır. Codex (`/wham/usage`), DeepSeek, Bailian (hər iki sorğu nöqtəsi), OpenCode və Crof kvota sorğulayıcılarına inteqrasiya edilib (#6009, #6911). Ümumi `usage.ts::getUsageForProvider` yönləndirmə yolu (github/glm/minimax/nanogpt/xai/etc.) hələ əhatə olunmayıb — ayrıca izlənilir. Keş uyğunluqlarına təsir etmir. `0` söndürür; `0..5000` aralığı ilə məhdudlaşdırılır. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Yuxarı axın kvota API-sinə istehlakı qeydə almaq üçün vaxt vermək məqsədilə real istifadə hadisəsindən sonra provayder limitlərinin yenilənməsindən əvvəlki gecikmə (ms). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | avtomatik aşkarlama | `open-sse/services/adobeFireflyBrowserLogin.ts` | İnteraktiv Adobe Firefly girişində və ekrandankənar yeniləmədə istifadə olunan sistem Chrome və ya Edge icra faylına mütləq yol. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | aktiv | `open-sse/services/adobeFireflySession.ts` | Hesab üzrə Chrome CDP sessiyaları ilə IMS və brauzer risk vəziyyətini aktual saxlayır. Brauzer yeniləməsini söndürmək üçün `0` təyin edin. | | `ADOBE_FIREFLY_SESSION_DISK` | aktiv | `open-sse/services/adobeFireflySession.ts` | Bərpa edilmiş Adobe sessiyalarını proses yenidən başladıldıqda qorumaq üçün `DATA_DIR` daxilində saxlayır. Sessiyaları yalnız yaddaşda saxlamaq üçün `0` təyin edin. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly generasiya göndərişləri arasındakı millisaniyə ilə minimum fasilə; `0` fasiləni söndürür. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Hər üçüncü uğurlu Adobe göndərişindən sonra millisaniyə ilə əlavə sakitlik müddəti. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Müvəqqəti Adobe 408 cavablarından sonra millisaniyə ilə əsas eksponensial geriçəkilmə gecikməsi; maksimum beş cəhd ərzində göndərişlərarası fasilə ilə birləşdirilir. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Bütün fon xidmətlərini (sinxronizasiya, qiymət təyin etmə, model yeniləməsi) söndürür. CI/test üçün faydalıdır. | | `OMNIROUTE_HEADLESS` | _(təyin edilməyib)_ | `src/lib/system/headless.ts` | Yalnız proksi mühərriki ilə işəsalma: əlavə alt sistemləri ötürür, `/dashboard` → 404. `omniroute serve --headless` ilə eynidir. [HEADLESS.md](../guides/HEADLESS.md) sənədinə baxın. | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(təyin edilməyib)_ | `src/lib/config/runtimeSettings.ts` | Avtomatlaşdırılmış test aşkarlanarkən fon tapşırıqlarını məcburi aktivləşdirir. Test evristikasını ləğv etmək üçün `1` təyin edin. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Büdcə sıfırlanmasının yoxlanma tezliyi (ms). Minimum `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Proaktiv bağlantı gözləmə müddətindən bərpa tezliyi (ms): keçici `rate_limited_until` müddəti bitmiş bağlantıları sorğunun qaynar yolundan kənarda yenidən yoxlayır. Minimum `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Proaktiv bağlantı gözləmə müddətindən bərpa planlaşdırıcısını deaktiv edin (`getProviderCredentials` daxilində tənbəl bərpa hələ də tətbiq olunur). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Düşünmə keşinin təmizlənmə tezliyi (ms). Minimum `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _təyin edilməyib_ (deaktivdir) | `open-sse/services/reasoningTokenBuffer.ts` | Düşünmə modellərinin çıxış büdcələri üçün könüllü minimum hədd: çağıranın `[256, minimum)` aralığındakı `max_tokens` dəyəri minimum həddə qaldırılır (modelin çıxış limiti ilə məhdudlaşdırılır). Təyin edilməyib = müştəri büdcələri heç vaxt artırılmır (#9507). | | `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _təyin edilməyib_ (deaktivdir) | `open-sse/services/learnedReasoningEffortCaps.ts` | Könüllü, vergüllə ayrılmış provayder identifikatorları (və ya `*`): `reasoning_effort` ilə bağlı 400/422 xətası qəbul edilən heç bir dəsti göstərmədikdə, bir pillə aşağı səviyyə ilə yenidən cəhd edir (`low` səviyyəsindən aşağı düşmür) və həmin səviyyəni yalnız sınaq sorğusu cavablandırıldıqda öyrənir (#14895). | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Aktiv edilmiş hər bir jurnal ixracı təyinat yerini emal edən çağırış jurnalı ixracı tapşırığı üçün cron ifadəsi (UTC). | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Konfiqurasiyanın isti yenidən yüklənməsi üçün sorğulama intervalı (ms). `1000`-dən aşağı dəyər qəbul edilmir. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(aktivdir)_ | `src/lib/db/apiKeys.ts` | Redis əsaslı API açarı autentifikasiya keşini keçmək üçün `1` təyin edin (DB oxumalarını məcburi edir). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | İstifadəçinin idarə etdiyi RTK layihə filtr qaydalarına ciddi imza yoxlamaları olmadan etibar edin. | | `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | `lite.maxToolLength` təyin edilmədikdə Lite-ın proaktiv alət nəticəsi qısaltması üçün simvol limiti. Aralıq 256–1000000. İdarə panelindəki parametr bu mühit dəyişənindən üstündür. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Eyni vaxtda işləyən sinxron RTK/Caveman işçilərinin maksimum sayı; artıq tapşırıqlar FIFO qaydasında gözləyir. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Hər tapşırıq üçün millisaniyə ilə vaxt limiti. Vaxt limiti bitən işçilər dayandırılır və sorğu dəyişdirilmədən açıq xəta rejimində davam edir. | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | İstifadə olunmayan sıxılma işçisi dayandırılmazdan əvvəl millisaniyə ilə boşdayanma müddəti. | | `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Bütün rejimlərdə hər sıxılma işçisi üçün V8 köhnə nəsil yığınının MB ilə limiti (minimum `128`). Bu limiti aşan tapşırıq şlüz yığınını böyütmək əvəzinə açıq xəta rejimində (sıxılmadan) davam edir. | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 yığılmış emal xəttinin hər mühərrik üzrə dövrəqıranının əsas açarı. **Könüllüdür (standart olaraq söndürülüb)** — aktiv olduqda, sorğular üzrə təkrar-təkrar xəta yaradan mühərrik gözləmə müddəti ərzində ötürülür (açıq xəta rejimi); söndürülüb = bayt-bayt eyni köhnə davranış. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Mühərrikin dövrəqıranı açılmazdan əvvəl ardıcıl sorğulararası xətaların sayı. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Açılmış mühərrikin yarıaçıq sınaqdan əvvəl ötürüldüyü müddət, millisaniyə ilə. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR əldəetmə geribildirim artımı: saxlanılan blokun hər əvvəlki əldə edilməsi onun effektiv `minChars` dəyərini xətti şəkildə artırır (tez-tez əldə edilən məzmun daha az sıxılır; `>=3` əldəetmə = heç vaxt sıxılmır). `1` artımı deaktiv edir (yalnız həddə çatdıqda binar ötürmə). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | CCR davamlı blok yaddaşı (#9061). Blokun LRU-dan çıxarılmasından, TTL müddətindən, yenidən başladılmadan və ya əldəetmə sorğusunun başqa instansiyaya düşməsindən sonra da qalması üçün yaddaşdaxili saxlama SQLite ilə dəstəklənir. Blokları yalnız yaddaşda saxlamaq üçün `false` təyin edin. 512KB-dan böyük bloklar və bulud icra mühitləri istənilən halda yalnız yaddaşdan istifadə edir. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 istifadənin müşahidəsinə əsaslanan prefiks dondurmasının əsas açarı. **Seçimlə aktivləşdirilir (standart olaraq söndürülüb)** — aktiv olduqda, `>=` hədd sayda müşahidə edilən sistem göstərişi sabit, keşlənə bilən prefiks kimi qəbul edilir və hətta statik keş evristikasının nəzərdən qaçırdığı provayderlər üçün də sıxılmadan qorunur (dondurma yalnız _qoruyur_, heç vaxt dəyişdirmir). | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Sistem göstərişinin dondurulmuş sabit prefiks kimi qəbul edilməsindən əvvəl tələb olunan müşahidələrin sayı. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | İlkin quraşdırmadan sonra başlanğıc skripti tərəfindən `true` təyin edilir. Quraşdırma köməkçisinin görünməsini idarə edir. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Ehtiyat çıxış yolu: sorğu gövdəsinə Antigravity layihə sahəsinin dəyərini dəyişməyə icazə verir. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Google One AI kreditləri siyasəti: `off` kreditləri heç vaxt əlavə etmir, `retry` uyğun kvota üzrə 429 xətasından sonra bir dəfə əlavə edir, `always` isə ilk sorğuda əlavə edir. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Yuxarı axın real imzaları rədd etdikdə Antigravity sorğu tərcüməçisinə ciddi CLI sorğu imzası yoxlamasını ötürməyə icazə verir (sazlama/köhnəlmiş CLI rejimi). Sıfırdan fərqli dəyər bu ötürməni aktivləşdirir. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Avtomatik aşkarlanan lokal giriş idxalı üçün Antigravity CLI (agy) token faylı yolunu əvəz edir. | ### OAuth CLI körpüsü (Daxili) | Dəyişən | Standart | Mənbə faylı | Təsvir | | ------------------- | ------------------- | ------------------------------- | --------------------------------------------------------- | | `OMNIROUTE_SERVER` | avtomatik aşkarlama | `src/lib/oauth/config/index.ts` | CLI↔OmniRoute autentifikasiya körpüsü üçün server URL-si. | | `OMNIROUTE_TOKEN` | _(təyin edilməyib)_ | `src/lib/oauth/config/index.ts` | CLI körpüsü üçün autentifikasiya tokeni. | | `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | CLI körpüsü sessiyaları üçün istifadəçi ID-si. | | `SERVER_URL` | _(təyin edilməyib)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_SERVER` üçün köhnə alias. | | `CLI_TOKEN` | _(təyin edilməyib)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_TOKEN` üçün köhnə alias. | | `CLI_USER_ID` | _(təyin edilməyib)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_USER_ID` üçün köhnə alias. | --- ## 11. OAuth Provayderi Etimadnamələri **localhost mühitində hazırlama** üçün daxili etimadnamələr. Uzaq yerləşdirmələr üçün hər bir provayderin tərtibatçı konsolunda öz etimadnamələrinizi qeydiyyatdan keçirin. | Dəyişən | Provayder | Qeydlər | | ------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | İctimai klient — məxfi açar tələb olunmur. | | `CLAUDE_CODE_REDIRECT_URI` | Claude Code | Yönləndirmə URI-sini əvəz edir. Standart: `https://platform.claude.com/oauth/code/callback` | | `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | İctimai klient. | | `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Uyğun `_SECRET` tələb edir. | | `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — | | `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | İctimai klient. | | `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | İctimai Muse CLI cihaz axını klient identifikatoru üçün istəyə bağlı əvəzetmə. Daxilə daxil edilmiş ictimai klientdən istifadə etmək üçün təyin etməyin. | | `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Uyğun `_SECRET` tələb edir. | | `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — | | `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | İctimai klient. | | `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | GitHub Enterprise Copilot-un OAuth klient identifikatoru üçün istəyə bağlı əvəzetmə. Təyin edilmədikdə `GITHUB_OAUTH_CLIENT_ID` dəyişəninin standart ictimai dəyərindən istifadə edir. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | `Copilot-Integration-Id` və `Editor-Plugin-Version` başlıqlarında göndərilən GitHub Copilot klient inteqrasiya identifikatoru üçün istəyə bağlı əvəzetmə. Standart dəyər `copilot-developer-cli`-dır. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Hər bağlantı üçün ayrıca etimadnamə mövcud olmadıqda `open-sse/executors/devin-cli.ts` tərəfindən istifadə edilən ehtiyat API açarı. İstəyə bağlıdır. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Devin CLI binar faylına (`devin`) fərdi yol. `open-sse/executors/devin-cli.ts` tərəfindən müəyyən edilir. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | GitLab Duo üçün OAuth klient identifikatoru. `https://gitlab.com/-/profile/applications` ünvanında `/callback` yönləndirmə URI-si və `api, read_user, openid, profile, email` əhatə dairələri ilə tətbiq qeydiyyatdan keçirin. Təyin edilmədikdə `GITLAB_OAUTH_CLIENT_ID` istifadə olunur. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | GitLab Duo üçün OAuth klient məxfi açarı. İstəyə bağlıdır — PKCE axını məxfi açar tələb etmir. Təyin edilmədikdə `GITLAB_OAUTH_CLIENT_SECRET` istifadə olunur. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | GitLab baza URL-sini əvəz edir (öz serverinizdə yerləşdirilən GitLab). Standart dəyər `https://gitlab.com`-dur. Təyin edilmədikdə `GITLAB_BASE_URL` istifadə olunur. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | `GITLAB_DUO_BASE_URL` üçün köhnə ehtiyat variant. `_DUO_` variantı təyin edilmədikdə istifadə olunur. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` tərəfindən istifadə edilən `GITLAB_DUO_OAUTH_CLIENT_ID` üçün köhnə ehtiyat variant. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` tərəfindən istifadə edilən `GITLAB_DUO_OAUTH_CLIENT_SECRET` üçün köhnə ehtiyat variant. | | `QODER_OAUTH_CLIENT_SECRET` | Qoder | — | | `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Qoder OAuth-u aktivləşdirmək üçün təyin edin. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Birbaşa API açarı üçün ehtiyat variant (OAuth-dan yan keçir). | | `QODER_CLI_WORKSPACE` | Qoder | Qoder CLI üçün iş sahəsi ID-si. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | `QODER_CLI_WORKSPACE` üçün alternativ ad. | | `QODER_CLI_CONFIG_DIR` | Qoder | Qoder CLI konfiqurasiya qovluğunu əvəz edir (izolyasiya edilmiş PAT sessiyası brauzer girişinin üzərinə yazılmasının qarşısını alır). | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | `/api/chat` sorğusunda `validated` kimi göndəriləcək frontend `tk` tokeni. Blackbox tokenlərin uyğunluğunu məcburi etdikdə tələb olunur; əks halda OmniRoute təsadüfi UUID-yə müraciət edir. #2252 məsələsinə baxın. | | `VISION_BRIDGE_BASE_URL` | Vision Bridge qoruyucu mexanizmi | Anthropic olmayan vision-bridge çağırışları üçün OpenAI ilə uyğun baza URL-si. Defolt olaraq köhnə OpenAI URL mühit dəyişənindən və ya api.openai.com ünvanından istifadə edir. OmniRoute-un `/v1` özünədövrələmə ünvanına və ya OpenAI ilə uyğun istənilən son nöqtəyə (Gemini OpenAI-compat, OpenRouter) yönəldin. Məsələ #2232. URL OmniRoute-un öz `/v1` ünvanı olduqda, təsvir alt sorğusu `x-omniroute-admission-bypass: internal` göndərir və həll edilmiş özünədövrələmə etimadnaməsi ilə (lokal rejimdə `sk_omniroute` sentinel dəyəri və ya `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350) autentifikasiya olunur ki, `REQUIRE_API_KEY=true` yerləşdirmələri işləsin. | | `VISION_BRIDGE_API_KEY` | Vision Bridge qoruyucu mexanizmi | Yuxarıdakı URL üçün API açarı. Anthropic olmayan vision-bridge çağırışları üçün hər provayderə aid OpenAI / Google mühit dəyişənlərini əvəz edir. Anthropic modelləri öz xüsusi Anthropic açar yolundan istifadə etməyə davam edir. Məsələ #2232. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Vision Bridge qoruyucu mexanizmi | «İstifadəyə yararlı namizəd yoxdur» marşrutlaşdırma nəticəsinin ms ilə nə qədər müddət keşdə saxlanacağını müəyyən edir (defolt `30000`). Yanlış və ya mənfi dəyərlər defolt dəyərə qaytarılır; `0` mənfi keşi deaktiv edir. Mənbə: `src/lib/guardrails/visionBridgeRouter.ts`. | > [!WARNING] > > 1. [Google Cloud Console → Credentials](https://console.cloud.google.com/apis/credentials) səhifəsinə keçin > 2. OAuth 2.0 Client ID yaradın (növ: "Veb tətbiqi") > 3. Server URL-nizi Authorized redirect URI kimi əlavə edin > 4. `.env` faylındakı etimadnamə dəyərlərini əvəz edin. --- ## 12. Provayder User-Agent Dəyərlərinin Əvəzlənməsi Hər bir yuxarı axın provayderinə göndərilən `User-Agent` başlığını əvəzləyin. Bu dəyər icraedici baza sinfi tərəfindən iş vaxtında dinamik olaraq müəyyən edilir: ``` process.env[`${PROVIDER_ID}_USER_AGENT`] ``` > **Mənbə:** `open-sse/executors/base.ts` → `buildHeaders()` | Dəyişən | Standart Dəyər | Nə Zaman Yenilənməlidir | | -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Anthropic yeni CLI versiyası buraxdıqda | | `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Hər iki Anthropic istiqamətli yolda (yerli OAuth və CLIProxyAPI) üçüncü tərəf alətlər dəstinin alət adlarını dəyişdirmədən Anthropic-ə ötürmək üçün `1`/`true` olaraq təyin edin. Standart olaraq icraedici Claude Code-a aid olmayan alət adları üçün deterministik ləqəblər yaradır (mövcud olduqda Claude Code-un kanonik uyğunlaşdırması, əks halda PascalCase) və cavabda `_toolNameMap` vasitəsilə onları geri çevirir; beləliklə, snake_case alətlərindən istifadə edən alətlər dəstləri barmaq izi müəyyən edilmiş üçüncü tərəf klientləri kimi rədd edilmir. Yalnız sazlama üçün. | | `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | OpenAI Codex CLI-ni yenilədikdə | | `CODEX_CLIENT_VERSION` | `0.155.0` | Codex klient versiyasını tam UA sətrindən asılı olmayaraq əvəzləyin | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Elan edilən Claude Code versiyasını `CLAUDE_USER_AGENT` dəyişənindən asılı olmayaraq əvəzləyin. Anthropic bəzi modellərə girişi bu dəyər əsasında məhdudlaşdırır (#12417). | | `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | OmniRoute-un Claude ödəniş blokundakı `cc_version=` dəyərinə əlavə etdiyi 3 simvolluq suffiksi əvəzləyin. `CLAUDE_CODE_CLIENT_VERSION` ilə birlikdə artırın — yalnız versiyanın sabitlənməsi heç bir real binar faylın təqdim etmədiyi `version.revision` cütünü elan edir. | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Elan edilən Copilot CLI versiyasını `GITHUB_USER_AGENT` dəyişənindən asılı olmayaraq əvəzləyin | | `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | GitHub Copilot Chat yeniləndikdə | | `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Antigravity IDE yeniləndikdə | | `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Kiro IDE yeniləndikdə | | `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Kiro sosial cihaz kodunun `clientId` dəyərini (ictimai identifikator) əvəzləyin | | `KIRO_VERIFY_FULL_CRC` | `false` | Könüllü: Kiro hadisə axınında hər bir freym üçün tam mesaj CRC yoxlaması (zədələnmiş axınların sazlanması üçün) | | `QODER_USER_AGENT` | `Qoder-Cli` | Qoder CLI yeniləndikdə | | `CURSOR_USER_AGENT` | `Cursor/3.3` | Cursor yeniləndikdə | > [!TIP] > `{PROVIDER_ID}_USER_AGENT` nümunəsindən istifadə edərək **istənilən** provayder üçün User-Agent əvəzləmələri əlavə edə bilərsiniz. İcraedici mühit dəyişəninin adını dinamik şəkildə yaradır. --- ## 13. CLI Barmaq İzi Uyğunluğu Aktivləşdirildikdə OmniRoute HTTP başlıqlarını və JSON gövdə sahələrini rəsmi CLI alətlərinin dəqiq imzasına uyğunlaşdırmaq üçün yenidən sıralayır. Bu, proksi IP-nizi qoruyub saxlayarkən hesabın işarələnməsi riskini azaldır. **Mənbə:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts` ### Provayder üzrə | Dəyişən | Aktivləşdirmə | Təsir | | ------------------------ | ------------- | ----------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Codex CLI sorğu imzasını təqlid edir | | `CLI_COMPAT_CLAUDE` | `=1` | Claude Code sorğu imzasını təqlid edir | | `CLI_COMPAT_GITHUB` | `=1` | GitHub Copilot sorğu imzasını təqlid edir | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Antigravity sorğu imzasını təqlid edir | | `CLI_COMPAT_CURSOR` | `=1` | Cursor sorğu imzasını təqlid edir | | `CLI_COMPAT_KIMI_CODING` | `=1` | Kimi Coding sorğu imzasını təqlid edir | | `CLI_COMPAT_KILOCODE` | `=1` | Kilo Code sorğu imzasını təqlid edir | | `CLI_COMPAT_CLINE` | `=1` | Cline sorğu imzasını təqlid edir | ### Qlobal | Dəyişən | Aktivləşdirmə | Təsir | | ---------------- | ------------- | --------------------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Barmaq izi uyğunluğunu **bütün** provayderlər üçün eyni anda aktivləşdirir. | ### Kimi Coding CLI identifikasiyasının əvəzlənməsi | Dəyişən | Defolt | Mənbə faylı | Təsvir | | ----------------------- | ------------------------ | ---------------------------------------- | --------------------------------------------------------------------------------- | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | OAuth/API çağırışları zamanı göndərilən Kimi CLI versiyasını əvəz edir. | | `KIMI_CODING_DEVICE_ID` | _(qeydə alınmış defolt)_ | `src/lib/oauth/providers/kimi-coding.ts` | Müştəri başlıqlarında istifadə edilən qeydə alınmış Kimi cihaz ID-sini əvəz edir. | > [!NOTE] > Bu funksiya User-Agent əvəzləmələri (§12) ilə birlikdə işləyir. Barmaq izi sistemi başlıqların və gövdə sahələrinin sıralanmasını, User-Agent əvəzləmələri isə konkret UA sətrini idarə edir. Hər ikisi müstəqil şəkildə aktivləşdirilə bilər. --- ## 14. API Açarı Provayderləri Birbaşa autentifikasiyadan istifadə edən provayderlər üçün API açarları. **Tövsiyə olunan quraşdırma:** İdarəetmə paneli → Provayderlər → API açarı əlavə et. Mühit dəyişənləri vasitəsilə təyin etmək Docker və ya başlıqsız yerləşdirmələr üçün alternativdir. Tanınan nümunə: `{PROVIDER_ID}_API_KEY` | Dəyişən | Provayder | | ------------------ | ----------------------------------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + Reader ehtiyat variantı) | | `JINA_API_KEY` | Jina AI (`JINA_AI_API_KEY` üçün ləqəb) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) yerləşdirmələri + söhbət üçün ehtiyat variant | | `GOOGLE_API_KEY` | Gemini (`GEMINI_API_KEY` üçün ləqəb) | > [!NOTE] > Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius və Qianfan üçün statik `${PROVIDER}_API_KEY` qeydləri v3.8.0 versiyasında silinib, çünki icra mühiti artıq onları oxumur — həmin provayderlər yalnız İdarəetmə panelinə / `data/provider-credentials.json` faylına / şifrələnmiş verilənlər bazasına əsaslanır. Miqrasiya yolu üçün bu sənədin aşağı hissəsindəki _Audit: Silinmiş / İstifadəsiz Dəyişənlər_ bölməsinə baxın. > [!TIP] > İdarəetmə paneli vasitəsilə təyin edilən açarlar SQLite-da şifrələnmiş şəkildə saxlanılır və mühit dəyişənlərindən üstündür. > > **Jina:** İdarəetmə panelində `jina-ai` (və ya paylaşılan `jina-reader`) bağlantısı mövcud olduqda `jina-ai/…` yerləşdirmələri, yenidən sıralama, təsnifat, seqmentasiya və `jina-search` klaster mühit açarına görə **ödəniş hesablamır** — `getProviderCredentials` əvvəlcə mövcud sahələri doldurur. `JINA_AI_API_KEY` / `JINA_API_KEY` yalnız istifadəyə yararlı idarəetmə paneli açarı olmadıqda istifadə olunur. Çağırış jurnallarında mühit ehtiyat variantı `connection_id=env:JINA_AI_API_KEY` kimi göstərilir. Reader kartı (`jina-reader`, `r.jina.ai`) heç vaxt `/v1/embeddings` və ya `/v1/rerank` ünvanlarına xidmət göstərmir. > > **Gemini:** `gemini/gemini-embedding-2` (`google/gemini-embedding-2` ləqəbi) əvvəlcə idarəetmə panelindəki `gemini` bağlantısından istifadə edir. `GEMINI_API_KEY` / `GOOGLE_API_KEY` yalnız istifadəyə yararlı idarəetmə paneli açarı olmadıqda istifadə olunur. Çağırış jurnallarında mühit ehtiyat variantı `connection_id=env:GEMINI_API_KEY` kimi göstərilir. Yerli multimodal trafik `:embedContent` / `:batchEmbedContents` ünvanlarına qarşı `x-goog-api-key` istifadə edir — N OpenAI `input` elementi N vektora çevrilir. --- ## 15. Taymaut Parametrləri Bütün dəyərlər **millisaniyə** ilə göstərilir. Mərkəzləşdirilmiş həll mexanizmi `src/shared/utils/runtimeTimeouts.ts` faylındadır. ### Taymaut İyerarxiyası ``` REQUEST_TIMEOUT_MS (qlobal əvəzləmə) ├─→ FETCH_TIMEOUT_MS (yuxarı axın provayderlərinə çağırışlar, standart: 600000) │ ├─→ FETCH_HEADERS_TIMEOUT_MS (FETCH_TIMEOUT_MS-dən miras alınır) │ ├─→ FETCH_BODY_TIMEOUT_MS (FETCH_TIMEOUT_MS-dən miras alınır) │ ├─→ TLS_CLIENT_TIMEOUT_MS (FETCH_TIMEOUT_MS-dən miras alınır) │ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (müstəqil, standart: 10000) │ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (müstəqil, standart: 15000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (müstəqil, standart: 0 = söndürülüb, tövsiyə olunan: 30000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (müstəqil, standart: 2) │ ├── FETCH_CONNECT_TIMEOUT_MS (müstəqil, standart: 30000) │ └── FETCH_KEEPALIVE_TIMEOUT_MS (müstəqil, standart: 4000) ├─→ STREAM_IDLE_TIMEOUT_MS (REQUEST_TIMEOUT_MS-dən miras alınır, standart: 600000) ├─→ STREAM_ACTIVE_TIMEOUT_MS (müstəqil, standart: 1260000; 0 söndürür) ├─→ STREAM_READINESS_TIMEOUT_MS (REQUEST_TIMEOUT_MS-dən miras alınır, standart: 80000) ├─→ STREAM_READINESS_MAX_TIMEOUT_MS (adaptiv hazırlıq uzatmalarını məhdudlaşdırır, standart: 180000) └─→ API_BRIDGE_PROXY_TIMEOUT_MS (REQUEST_TIMEOUT_MS-dən miras alınır, standart: 30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (törəmə, standart: 300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (standart: 60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (standart: 5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (standart: 0 = söndürülüb) ``` | Dəyişən | Standart | Təsvir | | ----------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(təyin edilməyib)_ | Qlobal qısayol — həm `FETCH_TIMEOUT_MS`, həm də `STREAM_IDLE_TIMEOUT_MS` standartlarını əvəz edir. | | `FETCH_TIMEOUT_MS` | `600000` | Yuxarı axın provayderinə edilən çağırışlar üçün HTTP sorğusunun ümumi vaxt limiti. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | Dayandırılmadan əvvəl yuxarı axından gələn xam baytlar arasındakı maksimum səssizlik müddəti. Genişləndirilmiş düşünmə modelləri nadir hallarda >90 san fasilə verir. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Aktiv SSE axınının maksimum ümumi işləmə müddəti; yuxarı axın baytları gəldikdə heç vaxt sıfırlanmır və `REQUEST_TIMEOUT_MS`-dən asılı deyil. Reyestrdəki modellər üzrə ən böyük `timeoutMs` dəyərindən (1200000, Codex) və əlavə 60000 ehtiyatdan hesablanır; beləliklə, tam büdcəsi qədər işləməsinə icazə verilmiş model cavabın ortasında heç vaxt dayandırılmır. Deaktiv etmək üçün `0` təyin edin. | | `OMNIROUTE_SSE_COMMENTS` | _(deaktivdir)_ | OmniRoute-un SSE `:` şərh sətirlərini (məsələn, `: keepalive` nəbz siqnalını və `x-omniroute-*` metadata treylerlərini) buraxa bilib-bilməməsi. Standart olaraq deaktivdir (#10524), çünki ciddi OpenAI-uyğun müştərilər hər SSE sətri üçün JSON.parse çağırır və `:` şərhlərində dayanır; `data:` nəbz siqnallarına təsir etmir. Yenidən aktivləşdirmək üçün `on`/`true`/`1`/`yes` təyin edin. `open-sse/utils/sseHeartbeat.ts` tərəfindən istifadə olunur. | | `SSE_COALESCE_MS` | `0` (söndürülüb) | Könüllü seçim: Claude müştərilərinə göndərilən ardıcıl Claude `content_block_delta` hadisələrini (eyni blok indeksi və delta növü) birləşdirir və ən azı hər N ms-də göndərir. İtkisizdir; `signature_delta` və sərhəd hadisələri heç vaxt birləşdirilmir. Aşağıda hər növ üçün ayrıca dəyişən təyin edilməyibsə, bütün delta növlərinə tətbiq olunur. `open-sse/utils/sseDeltaCoalesce.ts` tərəfindən istifadə olunur. | | `SSE_COALESCE_THINKING_MS` | `0` (söndürülüb) | `thinking_delta` üçün `SSE_COALESCE_MS` dəyişəninin növ üzrə əvəzlənməsi. | | `SSE_COALESCE_TEXT_MS` | `0` (söndürülüb) | `text_delta` üçün `SSE_COALESCE_MS` dəyişəninin növ üzrə əvəzlənməsi. | | `SSE_COALESCE_INPUT_JSON_MS` | `0` (söndürülüb) | `input_json_delta` üçün `SSE_COALESCE_MS` dəyişəninin növ üzrə əvəzlənməsi. | | `SSE_FRAME_COALESCE_MS` | `0` (söndürülüb) | Könüllü seçim: N ms ərzində yönləndirilən SSE freymlərini müştəriyə bir yazma əməliyyatında paketləşdirir. İlk freym və sonlandırıcı freymlər (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) heç vaxt gecikdirilmir; paketləşdirmə aktiv olduqda ITL paketlər arasındakı fasilələri ölçür. `open-sse/utils/sseOutputSink.ts` tərəfindən istifadə olunur. | | `SSE_STALL_WATCHDOG` | `timer` | Axınla ötürülən cavablar üçün bayt dayanmasına nəzarət mexanizminin reallaşdırılması. `timer` yuxarı axının hər fraqmenti üçün bir taymeri yenidən qurur (dayanma büdcəsi tamamlandığı anda işə düşür); `interval` isə `clamp(budget/4, 1s, 5s)` periodu ilə hər axın üçün bir yoxlama saxlayır, buna görə dayanma büdcə + period müddətində aşkarlanır. `open-sse/utils/streamStallWatchdog.ts` tərəfindən istifadə olunur. | | `STREAM_READINESS_TIMEOUT_MS` | `80000` | İlk qeyri-ping SSE hadisəsini almaq üçün ayrılan vaxt. Təyin edildikdə `REQUEST_TIMEOUT_MS` dəyərini miras alır. | | `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | Böyük, alətlərlə intensiv işləyən və ya yüksək səviyyəli düşünmə tələb edən axın sorğuları üçün ilk hadisəyə hazırlıq üzrə maksimum adaptiv vaxt pəncərəsi. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | `/goal` evristikası üçün fövqəladə söndürmə açarı. Aşkarlamanı tamamilə deaktiv etmək üçün `false`/`0`/`off` təyin edin — hazırlıq vaxt limitləri və axın bərpası sorğu gövdəsi/başlıqları əsasında heç vaxt artırılmır və bununla da müştəri tərəfindən idarə olunan vaxt limiti gücləndirilməsi azaldılır. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Aşkarlanmış `/goal` agent icraları və ya `x-omniroute-agent-goal` ilə məcburi seçilmiş sorğular üçün ilk hadisəyə hazırlığın maksimum vaxt pəncərəsi. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Aşkarlanmış `/goal` agent icraları üçün erkən axın bərpasını avtomatik aktivləşdirir. Məqsədə xas könüllü seçimi deaktiv etmək üçün `false`/`0`/`off` təyin edin. Bu, yalnız operatorun standart parametrinə əlavə olaraq bərpanı AKTİVLƏŞDİRƏ bilər — aşkar şəkildə təyin edilmiş `STREAM_RECOVERY_ENABLED`/DB parametrlərindəki imtinanı heç vaxt əvəz etmir. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | OpenAI SDK-nın `responses.stream()` funksiyasını 502 xətası ilə pozan qeyri-standart `codex.*` SSE hadisələrini (məsələn, `codex.rate_limits`) çıxarır. Standart olaraq AKTİVDİR (#11014). Onları yönləndirmək üçün `0`/`false`/`no`/`off` təyin edin. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(təyin edilməyib)_ | Könüllü Codex app-server nəqli. Lokal `codex app-server` yan xidmətinin WebSocket son nöqtəsi (`ws://`/`wss://`). Tokenlə birlikdə təyin edildikdə Codex sorğuları HTTP Responses API əvəzinə JSON-RPC vasitəsilə yan xidmətə yönləndirilir. Həmçinin hər bağlantı üçün `providerSpecificData.codexAppServerUrl` vasitəsilə təyin edilə bilər. `open-sse/executors/codex/appServerConfig.ts` tərəfindən istifadə olunur. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(təyin edilməyib)_ | app-server-ə təqdim edilən sətirdaxili imkan/daşıyıcı tokeni. Hər bağlantı üzrə əvəzləmə: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(təyin edilməyib)_ | Tətbiq serverinin imkan tokenini (`codex app-server --ws-token-file` əmrindən) saxlayan fayla gedən yol. `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` təyin edilmədikdə istifadə olunur. Hər bağlantı üçün əvəzləmə: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Tətbiq serveri əməliyyatının icra olunduğu iş qovluğu. Hər bağlantı üçün əvəzləmə: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(təyin edilməyib)_ | Tətbiq serveri əməliyyatına ötürülən təsdiqləmə siyasəti (məsələn, `never`, `on-request`). Hər bağlantı üçün əvəzləmə: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(təyin edilməyib)_ | Tətbiq serveri əməliyyatına ötürülən qum qutusu siyasəti (məsələn, `read-only`, `workspace-write`, `danger-full-access`). Təyin edilmədikdə icraçı standart olaraq `workspace-write` istifadə edir (sərtləşdirilmiş; əvvəllər `danger-full-access` idi). Hər bağlantı üçün əvəzləmə: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Tətbiq serverinin öz təsdiqləmə sorğularını (hostda əmr/fayl/icazə icrası) avtomatik təsdiqləyir. Standart olaraq söndürülüb — sorğular avtomatik rədd edilir; harness alət çağırışlarına təsir göstərilmir (onlar ayrıca `item/tool/call` birbaşa ötürmə mexanizmi vasitəsilə hərəkət edir). `true`/`1`/`yes` dəyərlərini qəbul edir. Hər bağlantı üçün əvəzləmə: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Cavab başlıqlarının alınması üçün müddət. | | `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Axın sorğularında cavab başlıqlarını gözləmək üçün maksimum müddət (ms). `0` bu həddi söndürür; provayder üçün açıq şəkildə göstərilmiş `fetchStartTimeoutCapMs` daha yüksək prioritetə malikdir. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30 san.) | Proksisiz hər bir birbaşa cəhd üçün cavabın başlamasını gözləməyin maksimum müddəti (ms). Taymaut baş verdikdə yeni soketdə bir dəfə təkrar cəhd edilir; həddi söndürmək və əvvəlki davranışı saxlamaq üçün `0` təyin edin. | | `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 dəq.) | Hədəf hostu şəxsi/LAN/loopback olan (məsələn, `localhost`, `host.docker.internal`, `192.168.x.x`) proksisiz birbaşa cəhdlər üçün cavabın başlamasını gözləmə müddətinin aşağı həddi (ms); beləliklə, yerli Ollama-nın soyuq başlanğıcı yuxarıdakı standart 30 san. həddi ilə kəsilmir. Aşağı hədd kimi işləyir: effektiv gözləmə müddəti bu dəyərlə `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` dəyərindən daha böyük olanıdır; `0` və ya etibarsız dəyər yerli aşağı həddi aradan qaldırır. Uzaq hostlara təsir göstərilmir. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 dəq.) | Yuxarıdakı birləşdirilmiş bağlantı cəhdində cavabın başlama taymautundan sonra yeni soketdə edilən RETRY cəhdi üçün yuxarı hədd (ms) (#13703). Yalnız çağıran tərəf artıq öz son müddət siqnalını (həll edilmiş bağlantı/model/provayder/`FETCH_TIMEOUT_MS` ardıcıllığı) əlavə etdikdə tətbiq olunur; nəzərdə tutulan axında real hədd həmin siqnaldır və o, əvvəl işə düşür. Buna görə də bu, sabit hədd deyil, geniş ehtiyat məhdudiyyətidir — bu olmadıqda təkrar cəhd birləşdirilmiş cəhdlə eyni qısa `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` pəncərəsini yenidən istifadə edir və sağlam, lakin ilk bayta qədər müddəti (TTFB) uzun olan məntiq yürütmə modelləri 504 xətası verirdi. Yuxarıdakı sabit aşağı həddən az olmasına heç vaxt icazə verilmir; çağıran tərəf ümumiyyətlə son müddət siqnalı təqdim etmədikdə təkrar cəhd sabit aşağı həddi dəyişməz saxlayır. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Tam cavab gövdəsinin alınması üçün müddət. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | TCP bağlantısının qurulması üçün taymaut. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Keep-alive soketinin boş qalma taymautu. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | TLS barmaq izi proksisinin (wreq-js) taymautu. | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Xüsusi olaraq wreq-js TLS barmaq izi nəqliyyatının cavab gövdəsində ilk bayta qədər olan müddəti məhdudlaşdırır; `TLS_CLIENT_TIMEOUT_MS` təkbaşına dayanmış cavab gövdəsini aşkarlaya bilmir, çünki başlıqlar gələn kimi tamamlanır (#12656). Taymaut wreq oxuyucusunu ləğv edir və birbaşa/proksi dispetçerinə geri keçir; `0` nəzarət mexanizmini söndürür. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Yalnız OpenCode icraçısı üçün və yalnız `OPENCODE_RESPONSES_STALL_ROTATION` funksiya bayrağı aktiv olduqda (standart olaraq deaktivdir): başlıqlardan sonra axınla ötürülən Responses cavabının ilk gövdə baytını gözləmə müddətini məhdudlaşdırır (#13484). Responses axını `response.created` ilə açılır, buna görə də bu pəncərədən uzun sürən səssizlik dayanma sayılır: hesab soyutma rejiminə keçirilir və sorğu bir dəfə növbəti hesaba yönləndirilir; ikinci dayanma baş verərsə, dərhal xəta qaytarılır. `0` bayraq aktiv olsa belə qoruma mexanizmini söndürür. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= deaktiv) | Yalnız OpenCode icraçısı üçün: başqa hesab hələ də əlçatan olduqda axınla ötürülən Responses çağırışında yuxarı axından cavab başlıqlarını gözləmə müddətini məhdudlaşdırır — növbədəki sorğu başlıqlar üçün bütün müddət ərzində gözləmək əvəzinə gözləməyi dayandırıb növbəti hesaba keçir. Yalnız axınla ötürülən Responses çağırışlarına təsir edir (Responses axını `response.created` ilə açılır, buna görə də buradakı səssizlik generasiya deyil, növbə deməkdir); söhbət tamamlamalarına və axınla ötürülməyən çağırışlara toxunulmur, pəncərə isə effektiv fetch-start yuxarı həddini yalnız qısaldır, heç vaxt uzatmır. Aktivləşdirərkən tövsiyə olunan dəyər: `30000`. `0` söndürür. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Yalnız OpenCode icraedicisi: hər sorğu üçün yuxarıdakı başlıqları gözləmə həddinin növbəti hesaba neçə dəfə keçə biləcəyi. Son qalan hesab həmişə tam başlıq gözləmə pəncərəsini saxlayır. | | `OPENCODE_PARK_AND_RESUME` | `false` | Yalnız OpenCode icraedicisi: təkrarlanan müvəqqəti 429-lardan (və ya yeni hovuz yüklənməsi markerindən) sonra sorğunu heartbeat ilə gözləməyə alın, sonra bütün hesablar üzrə paralel sorğu göndərmək əvəzinə ardıcıl maksimum 3 hesabdan ibarət məhdud bir mərhələni yenidən icra edin (#13924). Defolt olaraq deaktivdir: hər 429 əvvəlki kimi tam olaraq növbəti hesaba keçir. | | `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | Yalnız OpenCode icraedicisi: gözlətmə və davametdirmə üzrə təkrar icra mərhələsində gözləmə müddəti bitmiş bütün hesablar proksinin imtina yaddaşı tərəfindən kənara ayrıldıqda, heç nəyi təkrar icra etməmək əvəzinə onlardan yenə də istifadə edin (#14851, #14750 üçün davam işi). Defolt olaraq deaktivdir: həmin halda təkrar icra mərhələsi #14750-dən əvvəlki kimi boş olur. | | `STREAM_READINESS_STALL_RETRY` | `false` | Yalnız axınlı söhbət: ilk yuxarı axın gövdəsi istifadəyə yararlı hadisə yaratmazdan əvvəl ilişdikdə, eyni hazırlıq büdcəsi ilə, eyni marşrutlaşdırma yolu üzərindən və hesaba cəza tətbiq etmədən bir məhdud ikinci cəhd edin. Defolt olaraq deaktivdir: ilişmiş ilk gövdə sorğunun təkrar cəhd edilmədən uğursuz olmasına səbəb olur. | | `OPENCODE_POOL_RESELECT` | `false` | Yalnız OpenCode icraedicisi: ümumi hovuz kontekstində proksisiz hesab üçün çıxış üzrə qruplaşdırılmış provayderdən 429 alındıqdan sonra eyni çıxış ünvanında yenidən cəhd etmək əvəzinə növbəti cəhd üçün bağlantı hovuzundan başqa üzv istəyin. Sıralayır, heç vaxt istisna etmir: tükənmiş hovuz cari davranışı saxlayır. Defolt olaraq deaktivdir: hər 429 əvvəlki kimi tam olaraq növbəti hesaba keçir. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(təyin edilməyib)_ | Yalnız OpenCode icraedicisi: gözləməyə almadan əvvəl oxunan hovuz yüklənməsi markerinin yolunu dəyişdirin (`{since, reason, ttl_s}`, defolt `/tmp/opencode-pool-strain.json`, #13924). Yeni marker yenidən saymadan gözləməyə alır; marker olmadıqda və ya köhnəldikdə sıçrayış sayğacından istifadə edilir. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | `/v1` körpü sorğuları üçün proksi keçidinin taymautu. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Firecrawl veb-yükləmə icraedicisini özünüzün host etdiyi instansiyaya yönləndirin (buluddan kənarda API açarı istəyə bağlıdır). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Firecrawl veb-yükləmə icraedicisi üçün hər sorğuya düşən taymaut. | | `TAVILY_BASE_URL` | _(təyin edilməyib)_ | Tavily `/usage` kvota əldəedicisi üçün baza URL-si (Provayder Limitləri); `api.tavily.com` ünvanını göstərdikdə nəzərə alınmır. Təyin edilmədikdə bağlantının baza URL-sindən istifadə edilir. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Körpü üçün ümumi server sorğusu taymautu. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Körpü vasitəsilə cavab başlıqlarını göndərmək üçün ayrılan vaxt. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Körpünün keep-alive boşdayanma taymautu. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Xam soket taymautu (0 = deaktivdir). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Məcburi çıxışdan əvvəl SIGTERM/SIGINT siqnalları üçün möhlət müddəti. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | `FETCH_TIMEOUT_MS` təyin edilmədikdə `src/shared/utils/fetchTimeout.ts` tərəfindən istifadə edilən ehtiyat dəyər. | | `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | `src/shared/network/safeOutboundFetch.ts` daxilindəki `validationRead` və `modelsProbe` əvvəlcədən təyin edilmiş konfiqurasiyaları üçün taymaut (ms). İdarə panelində aktiv/xəta vəziyyətləri arasında dəyişkənliyin qarşısını almaq üçün yavaş son nöqtələr (Cerebras, Cloudflare AI, Groq) üzrə bu dəyəri artırın. Yanlış (<1000) və ya ədədi olmayan dəyərlər üçün 8000ms dəyərinə geri qayıdır. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | `open-sse/utils/proxyFetch.ts` daxilində relay üçün xüsusi yükləmə taymautu (#9158). İlişmiş relay müştəri/agent taymautundan (~30s) əvvəl uğursuz olmalıdır ki, çağıran tərəflər ümumi yuxarı axın taymautu əvəzinə relay üçün xüsusi xəta görsünlər. Həmişə birinci işə düşməsi üçün maksimum `29000` ilə məhdudlaşdırılıb. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | `open-sse/utils/proxyFetch.ts` daxilində bir dəfə təkrar cəhd edən birbaşa/relay/proksi yolları üçün ortaq təkrar cəhd gecikməsi (#9158). `0` = dərhal təkrar cəhd edin. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Yerli wreq-js sorğu taymautu (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Yerli taymauta əlavə edilən mütləq JS son müddət möhləti. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Yerli wreq-js sorğu taymautu (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Native taym-autun üzərinə əlavə edilən mütləq JS sərt son müddət güzəşti. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (söndürülüb) | Çağıranın sistem mesajına "Daxili veb axtarış imkanınız var. Suallara birbaşa axtarış nəticələrindən istifadə edərək cavab verin." cümləsini əlavə edir (`perplexity-web/protocol.ts`). Defolt olaraq söndürülüb — Perplexity onsuz da axtarış aparır və bu cümlə kodlaşdırma klientlərinə verilən cavablara meta-şərh kimi sızır. Bərpa etmək üçün `1`/`true`/`yes`/`on` təyin edin. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Native wreq-js sorğu taym-autu (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Native taym-autun üzərinə əlavə edilən mütləq JS sərt son müddət güzəşti. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Native wreq-js sorğu taym-autu (`notionTlsClient.ts`); uzun generasiyalar üçün `notion-web` bunu hər sorğu üzrə `180000` dəyərinə qaldırır. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Native taym-autun üzərinə əlavə edilən mütləq JS sərt son müddət güzəşti. | | `OMNIROUTE_BROWSER_POOL` | `on` | Brauzer əsaslı veb-kuki çat üçün paylaşılan Playwright brauzer hovuzu (`browserPool.ts`); söndürmək üçün `off` təyin edin. | | `OBSCURA_BIN` | `auto-detect` | Brauzer hovuzu və Cloudflare Playground icraedicisi tərəfindən əsas mühərrik kimi istifadə olunan `obscura` binar faylına yol (`open-sse/services/obscura.ts`); təyin edilmədikdə sistem PATH-dən avtomatik aşkarlanır. | | `OBSCURA_CDP_ENDPOINT` | _(təyin edilməyib)_ | Yeni proses başlatmaq əvəzinə artıq işləyən Obscura nümunəsinə (`http://host:port`) yönəldin; modul həmin prosesə sahib olmur (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `təsadüfi boş port` | Başladılan `obscura serve` üçün konkret port; təyin edilmədikdə boş port avtomatik seçilir (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Veb-kuki çat sorğusunun brauzer əsaslı yoldan istifadə etməsini seçir (`browserBackedChat.ts`); aktivləşdirmək üçün `1`. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Kimi Web (beynəlxalq kimi.ai Connect-RPC) icraedicisi üçün əsas URL (`kimi-web.ts`); yalnız güzgü/proksi son nöqtələri üçün dəyişdirin. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Kimi Web icraedicisi üçün tam çat son nöqtəsi (`kimi-web.ts`). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(avtomatik aşkarlanır)_ | Adobe Firefly interaktiv brauzer girişində istifadə olunan sistem Chrome/Edge icra faylına yol (`adobeFireflyBrowserLogin.ts`); hər ƏS üzrə avtomatik aşkarlamanı üstələyir. | | `OMNIROUTE_STANDALONE_DIR` | _.build/ müstəqil çıxışı_ | Qurmadan sonrakı birgə yerləşdirmə addımının istifadə etdiyi müstəqil çıxış qovluğu üçün qurma vaxtı dəyişdirməsi (`scripts/build/colocate-standalone.mjs`); icra vaxtına deyil, qurma alətlərinə aiddir. | Kombinə edilmiş hədəf cəhdləri müəyyən edilmiş yuxarı axın sorğu taym-autunu (`FETCH_TIMEOUT_MS` və ya fetch defoltunu təmin etdikdə `REQUEST_TIMEOUT_MS`) miras alır. Kombinə edilmiş geri dönüşü sürətləndirmək üçün kombinasiyada, kombinasiya defoltlarında və ya provayder dəyişdirməsində `targetTimeoutMs` təyin edin; cari yuxarı axın taym-autundan böyük dəyərlər yuxarı axın taym-autu ilə məhdudlaşdırılır. `comboTimeoutMs` keçid hədəfləri üzrə bütün kombinasiya üçün ayrıca ümumi real vaxt büdcəsidir. Limitsiz iterasiyanı saxlamaq üçün onu təyin etməyin və ya `0` təyin edin (`comboPredicates.ts` daxilindəki 10 dəqiqəlik sərt kodlaşdırılmış ilişmə dayandırıcısı yenə də tətbiq olunur). Müsbət dəyər kombinasiya üçün həmin təhlükəsizlik mexanizmini əvəz edir. Yavaş ilk hədəfdən sonra keçid üçün vaxt qalması məqsədilə `comboTimeoutMs` dəyərini `targetTimeoutMs` dəyərindən böyük saxlayın. ### Dövrə Qırıcısının Hədləri Provayder səviyyəsində dövrə qırıcısının tənzimlənməsi. Defoltlar v3.6 versiyasından bəri 500-dən çox bağlantı üçün istifadə edilən miqyaslandırılmış dəyərləri əks etdirir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------------------------------- | -------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Açar işə düşməzdən əvvəl OAuth provayderləri üçün ardıcıl xəta həddi. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | OAuth provayderinin açarı üçün sıfırlama intervalı (ms). | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | API açarı provayderləri üçün ardıcıl xəta həddi. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | API açarı provayderinin açarı üçün sıfırlama intervalı (ms). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Lokal provayderlər (Ollama, LM Studio, ...) üçün ardıcıl xəta həddi. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Lokal provayderin açarı üçün sıfırlama intervalı (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: bütün OAuth provayderi soyuma rejiminə keçməzdən əvvəl interval daxilində baş verən xətaların sayı. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: OAuth provayderləri üçün sürüşən xəta sayımı intervalı (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: OAuth provayderinin həddinə çatıldıqdan sonrakı soyuma müddəti (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth provayderi bu qədər xətadan sonra DEGRADED vəziyyətinə keçir. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | OAuth provayderi üçün maksimum resetTimeout artım əmsalı. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth provayderi bu qədər açıq dövrdən sonra gecikməni artırır. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: bütün API açarı provayderi soyuma rejiminə keçməzdən əvvəl interval daxilində baş verən xətaların sayı. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: API açarı provayderləri üçün sürüşən xəta sayımı intervalı (ms). | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: API açarı provayderinin həddinə çatıldıqdan sonrakı soyuma müddəti (ms). | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | API açarı provayderi bu qədər xətadan sonra DEGRADED vəziyyətinə keçir. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | API açarı provayderi üçün maksimum resetTimeout artım əmsalı. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | API açarı provayderi bu qədər açıq dövrdən sonra gecikməni artırır. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: bütün lokal provayder soyuma rejiminə keçməzdən əvvəl baş verən xətaların sayı. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: lokal provayderlər üçün sürüşən xəta sayımı intervalı (ms). | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Provayder səviyyəli açar: lokal provayderin həddinə çatıldıqdan sonrakı soyuma müddəti (ms). | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Yuxarı axından gələn 429 cavabında `Retry-After` olmadıqda çoxaçarlı API açarı rotasiyası tərəfindən hər açara tətbiq edilən soyuma müddəti (ms) (#14573). Müsbət olmayan və ya rəqəm olmayan dəyərlər standart dəyərə qaytarılır. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Kontekst keşinin pin provayderinin uzunmüddətli qeyri-sağlam hesab edildiyi və ehtiyat provayderə keçid üçün pinin ləğv edildiyi geriləmə dərinliyi. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Kontekst keşinin pinini ləğv etməzdən əvvəl qısamüddətli keçici soyuma hallarına dözümlülük göstərən dalğalanma əleyhinə interval (ms). | ### Ssenarilər | Ssenari | Konfiqurasiya | | ---------------------------------------- | ------------------------------------------------------------ | | **Uzunmüddətli kod generasiyası** | `REQUEST_TIMEOUT_MS=900000` (15 dəq) | | **Ümumi axın müddətini məhdudlaşdırmaq** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 dəq) | | **İstehsal API-si üçün sürətli xəta** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Genişləndirilmiş düşünmə modelləri** | `STREAM_IDLE_TIMEOUT_MS=300000` (fraqmentlər arasında 5 dəq) | --- ## 16. Jurnallaşdırma Jurnallaşdırma sistemi həm stdout-a, həm də rotasiya olunan jurnal fayllarına yazır. Bütün konfiqurasiya `src/lib/logEnv.ts` tərəfindən oxunur. | Dəyişən | Standart dəyər | Təsvir | | ----------------------------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Minimum jurnal səviyyəsi: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Çıxış formatı: `text` (insan tərəfindən oxuna bilən) və ya `json` (strukturlaşdırılmış). | | `APP_LOG_TO_FILE` | `true` | Jurnalları stdout ilə yanaşı fayla da yazır. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Jurnal faylının yolu (layihənin kökünə və ya `DATA_DIR`-ə nəzərən). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Rotasiyadan əvvəl maksimum fayl ölçüsü. Qəbul edilənlər: `50M`, `1G`, `512K` və ya sadə bayt dəyəri. | | `APP_LOG_RETENTION_DAYS` | `7` | Rotasiya olunmuş tətbiq jurnal fayllarının saxlanma müddəti (günlərlə). | | `APP_LOG_MAX_FILES` | `20` | Rotasiya olunmuş jurnal fayllarının maksimum ehtiyat nüsxəsi sayı. | | `CALL_LOG_RETENTION_DAYS` | `7` | Sorğu/çağırış jurnal qeydlərinin verilənlər bazasında saxlanma müddəti (günlərlə). | | `CALL_LOG_MAX_ENTRIES` | `10000` | Yaddaşdaxili buferdə çağırış jurnal qeydlərinin maksimum sayı. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Təmizləmədən əvvəl `call_logs` SQLite cədvəlindəki maksimum sətir sayı. | | `ENABLE_REQUEST_LOGS` | _(təyin edilməyib)_ | İdarəetmə panelinin parametrini üstələyərək ətraflı sorğu jurnallaşdırmasını məcburi şəkildə aktiv və ya deaktiv edir. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 saat) | Yaddaşdaxili təmizləmədən əvvəl sahibsiz aktiv sorğu jurnal qeydlərinin maksimum yaşı. | | `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | `call_log_pipeline_enabled=true` olduqda axın hissələrini konveyer artefaktlarında saxlayır. Könüllü seçimdir (`true`) — disk sahəsinə qənaət etmək üçün standart olaraq deaktivdir. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | `call_log_pipeline_enabled=true` olduqda konveyer çağırış jurnalı artefaktının KB ilə maksimum ölçüsü. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Təmizləmədən əvvəl `proxy_logs` SQLite cədvəlindəki maksimum sətir sayı. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `[ProxyEgress]` konsol jurnallarına müştəri/çıxış IP-lərini və hesab prefikslərini daxil edir. İdarəetmə panelindəki/verilənlər bazasındakı proksi jurnal qeydləri bütün təfərrüatları saxlayır. | | `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Proksi jurnal sətirlərində `first_chunk_ms` dəyərini (göndərmənin başlanmasından ilk faydalı gövdə baytına qədər) qeydə almaq üçün `"true"` və ya `"1"` təyin edin. Hər bir yuxarı axın gövdəsini tənbəl keçid axını ilə əhatə edir və bayt daxil olduqda sətri yeniləyir; cavabların dəyişdirilmədən ötürülməsi üçün standart olaraq deaktivdir. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 dəq) | `src/lib/logRotation.ts` aktiv jurnal faylının ölçüsünü hansı tezliklə yenidən yoxlayır. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Söhbət jurnalı artefaktlarında saxlanılan maksimum sətir uzunluğu (standart olaraq 64 KB). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Söhbət jurnalı faydalı yükləri qısaldılarkən massivin sonundan saxlanılan elementlərin sayı. | | `CHAT_LOG_MAX_DEPTH` | `6` | Söhbət jurnalı faydalı yüklərinin qısaldılmasından əvvəl maksimum iç-içə yerləşmə dərinliyi. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Söhbət jurnalı faydalı yüklərində saxlanılan maksimum obyekt açarı sayı (0 = limitsiz). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | Tam klon əvəzinə sadə xülasə ilə əvəz edilməzdən əvvəl bütün sorğu/cavab gövdəsinin ölçüsü (KB ilə). Uzun agent əsaslı söhbətlərdə idarəetmə panelində real mesajlar əvəzinə yer tutucu görünürsə, bu dəyəri artırın. | | `CHAT_DEBUG_FILE` | `false` | `true` olduqda `serializeArtifactForStorage` ölçüyə əsaslanan qısaltmanı ötürür. Yalnız sazlama üçündür. | --- ## 17. Yaddaşın optimallaşdırılması | Dəyişən | İlkin dəyər | Təsvir | | ----------------------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MEMORY_MB` | _avtomatik_ (fiziki server); Docker obrazında **`1024`** | Docker/müstəqil V8 heap limiti (MB) üçün **tövsiyə edilən** dəyər. Təyin edilmədikdə dinamik şəkildə kalibrlənir (sistem RAM-ının təxminən 35%-i, `[512, 4096]` aralığı ilə məhdudlaşdırılır); ümumi yaddaşı oxumaq mümkün olmadıqda `512` yalnız minimum həddir. `run-standalone.mjs`-də (Docker CMD) **açıq şəkildə göstərilmiş** dəyər `--max-old-space-size` kimi əlavə olunur və ziddiyyətli NODE_OPTIONS heap parametrini **üstələyir** (V8-də son parametr üstün olur). `omniroute serve` mövcud NODE_OPTIONS heap dəyərinə hələ də üstünlük verir (#5238). Hər ikisini fərqli ədədlərə təyin etməyin — proses hər iki dəyəri və qalibi göstərən xəbərdarlıq qeydə alır. **Rəsmi Docker obrazı həmişə `1024` təyin edir, buna görə orada kalibrləmə heç vaxt işə düşmür.** Kodlaşdırma agentinin `/v1/responses` endpoint-i üçün `8192`–`12288` və əlavə cgroup ehtiyatı lazımdır — baxın: [Docker Təlimatı — icra zamanı RAM](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). | | `OMNIROUTE_RSS_PRESSURE_MB` | _avtomatik_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; `OMNIROUTE_MEMORY_MB` təyin edilmədikdə deaktivdir) | `open-sse/utils/resourcePressure.ts` | V8 `heapUsed` tərəfindən görünməyən yerli/xarici yaddaş üçün mütləq proses RSS qoruyucusu (MB); bu həddən yuxarı olduqda yeni sorğular 503 `resource_pressure` xətası alır. RSS kəskin artımdan sonra nadir hallarda azalır, buna görə onu `OMNIROUTE_PRESSURE_SELF_RESTART` ilə birlikdə istifadə edin. | | `PROMPT_CACHE_MAX_SIZE` | `50` | Keşlənmiş sistem promptu qeydlərinin maksimum sayı. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Prompt keşinin maksimum ümumi ölçüsü. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 dəq) | Prompt keşi qeydinin TTL müddəti. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Keşlənmiş temperature=0 cavablarının maksimum sayı. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Semantik keşin maksimum ümumi ölçüsü. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 dəq) | Semantik keş qeydinin TTL müddəti. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Eyni anda aktiv yaddaşdaxili indeks saxlayan lokal korpus kökləri (`src/lib/localCorpus/configured.ts`). LRU: limitə çatdıqda ən uzun müddətdir istifadə olunmayan kökün indeksi çıxarılır və növbəti sorğuda yenidən qurulur. Minimum `1` ilə məhdudlaşdırılır; ədədi olmayan dəyər ilkin dəyərə qaytarılır. | | `STREAM_HISTORY_MAX` | `50` | İdarəetmə panelinin canlı görünüş buferindəki son axın hadisələrinin maksimum sayı. | | `CONTEXT_LENGTH_DEFAULT` | _(təyin edilməyib)_ | `CONTEXT_LENGTH_` dəyişəni olmayan hər bir provayder üçün qlobal kontekst uzunluğu əvəzetməsi (tokenlərlə). Təyin edildikdə həmin provayderlər üçün kataloq, idarəetmə paneli əvəzetməsi və reyestr dəyərlərini **əvəz edir**; təyin edilmədikdə OmniRoute son ehtiyat dəyəri `128000` olan daxili zəncirindən istifadə edir. Baxın: [Provayder üzrə kontekst uzunluğu](#per-provider-context-length-context_length_provider). | | `USAGE_TOKEN_BUFFER` | `100` | İstifadə kvotaları izlənərkən ayrılan əlavə token ehtiyatı. | ### Provayder üzrə kontekst uzunluğu (`CONTEXT_LENGTH_`) `open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) həmçinin adı icra zamanı provayder ID-si əsasında yaradılan **provayder üzrə** formanı oxuyur, buna görə onu yuxarıdakı cədvəldə və ya `.env.example` faylında sətir-sətir göstərmək mümkün deyil. **Ad.** `CONTEXT_LENGTH_`, burada `` provayder ID-sinin böyük hərflərlə yazılmış formasıdır və `A-Z` / `0-9` diapazonundan kənar hər bir simvol `_` ilə əvəz olunur. Provayder ID-si alias həll edildikdən sonrakı kanonik ID-dir (qısa alias həll edildikdən sonra `provider/model` sətrinin `provider` hissəsi). Xüsusi OpenAI və ya Anthropic uyğunluqlu qovşaqlar yaradılmış qovşaq ID-sindən istifadə edir, buna görə UUID dəyişən adının bir hissəsidir. Dəyər tokenlərin sayını göstərən müsbət tam ədəd olmalıdır; digər bütün dəyərlər (boş, `0`, mənfi, qeyri-rəqəmsal) nəzərə alınmır və həll prosesi növbəti mərhələyə keçir. | Provayder ID-si | Dəyişən adı | | ----------------------------------------------------------- | -------------------------------------------------------------------------- | | agentrouter | CONTEXT_LENGTH_AGENTROUTER | | openrouter | CONTEXT_LENGTH_OPENROUTER | | openai-compatible-chat-0f8e2c1a-5b7d-4e3f-9a6c-2d1b8e4f7a90 | CONTEXT_LENGTH_OPENAI_COMPATIBLE_CHAT_0F8E2C1A_5B7D_4E3F_9A6C_2D1B8E4F7A90 | **Üstünlük sırası.** `provider/model` cütü üçün dəyər qaytaran ilk mərhələ üstün sayılır: 1. Həmin provayder üçün `CONTEXT_LENGTH_`. 2. `CONTEXT_LENGTH_DEFAULT` (qlobal mühit dəyişəni ilə əvəzləmə). 3. Model üzrə pəncərə: saxlanılan kontekst əvəzləməsi (idarəetmə panelində təyin edilir və ya aşkarlama uyğunlaşdırıcısı tərəfindən avtomatik sabitlənir, baxın: `CONTEXT_WINDOW_RECONCILE_INTERVAL`); bu olmadıqda, sinxronlaşdırılmış kataloq / models.dev dəyəri. 4. Provayder reyestrindəki `defaultContextLength`. 5. Model adı üzrə evristikalar (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000). 6. Daxili provayder üzrə standart dəyərlər, sonra `128000`. Hər iki mühit mərhələsi **bütün provayderə** tətbiq olunur: həmin provayderin hər bir modeli eyni limiti əldə edir və bu dəyərlər idarəetmə panelində model üzrə təyin edilmiş əvəzləmələrdən üstün olur. Provayderin yalnız bir modeli üçün fərqli pəncərə lazım olduqda, bunun əvəzinə idarəetmə panelində model üzrə əvəzləmədən istifadə edin. **Əhatə dairəsi.** Bu zəncir sorğu zamanı kontekst pəncərəsinin yoxlanmasını (`open-sse/handlers/chatCore.ts` daxilində `context_length_exceeded` / "Daxiletmə kontekst pəncərəsini aşır" rəddi), sorğu sıxışdırma büdcələrini və kombinasiya edilmiş kontekst limitlərini idarə edir. `GET /v1/models` tərəfindən elan edilən `context_length` hələ də kataloq və ya reyestr metadatasından gələ bilər və mühit dəyişəni ilə əvəzləməni əks etdirməsinə zəmanət verilmir. **Nümunə.** Modeli 1,050,000 tokenlik pəncərəni qəbul edən, lakin kataloqda 128,000 göstərilən provayder: ```dotenv CONTEXT_LENGTH_AGENTROUTER=1050000 ``` Dəyişiklikdən sonra serveri yenidən başladın: dəyər server prosesinin mühitindən oxunur. **Masaüstü tətbiqində** server alt proses kimi işləyir və tətbiq başladıldıqdan sonra təyin edilmiş sistem dəyişənini görmür; sətri tətbiqin yüklədiyi `.env` faylına əlavə edin (axtarış ardıcıllığı üçün [Electron Təlimatı: Mühit faylının axtarışı](../guides/ELECTRON_GUIDE.md#environment-file-lookup) bölməsinə baxın), sonra tətbiqdən tam çıxın və onu yenidən başladın. ### Sıxışdırma | Dəyişən | Standart dəyər | Təsvir | | ------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | təyin edilməyib | `.rtk/trust.json` heşi olmadan layihənin `.rtk/filters.json` faylına etibar edin. Yalnız idarə olunan lokal inkişafda istifadə edin. | ### Yaddaş mühərriki (plan 21) ### Yaddaşın, bacarıqların və token yeniləməsinin hadisə dövrəsinə xərci (#10349) OmniRoute **vahid Node prosesidir**. Yaddaşın çıxarılması/axtarışı, bacarıqların daxil edilməsi və provayder tokenlərinin yenilənməsi `GET /healthz` və idarəetmə paneli ilə **eyni hadisə dövrəsində** işləyir. Bunlar işçi axınında işləmir. | İş | Kod | Standart dəyər | Operator idarəetməsi | | ------------------------------- | ---------------------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Yaddaşın çıxarılması / axtarışı | `src/lib/memory/` | İdarəetmə panelində **memoryEnabled** (standart olaraq aktivdir) | **Settings → Memory** bölməsində söndürün. Parametrlərdə funksiyanı söndürməkdən başqa ayrıca mühit əsaslı fövqəladə söndürmə açarı yoxdur. | | Bacarıqların daxil edilməsi | `src/lib/skills/injection.ts` | İdarəetmə panelində **skillsEnabled** (standart olaraq aktivdir) | **Settings → Memory/Skills** (`skillsEnabled`) bölməsində söndürün. Aşağıdakı qum qutusu tənzimləmələri yalnız daxiletmə artıq aktiv olduqdan sonra icranı məhdudlaşdırır. | | Token yeniləməsi | `src/sse/services/tokenRefresh.ts` | Qoşulmuş OAuth/veb provayderləri üçün aktivdir | Provayderi ayırın və ya tokenlərin etibarlı qalmasına imkan verin; hazırda `TOKEN_REFRESH=0` mühit dəyişəni yoxdur. | Sakit sistemdə `/healthz` ləngdirsə, əvvəlcə yaddaşı və bacarıqları söndürün, sonra kataloq/sıxışdırma yükünü yoxlayın (#10303, #9685). Bu funksiyalar `await` nöqtələrində idarəetməni ötürsə də, yenə də həmin vahid axın uğrunda rəqabət aparır. Davamlı yaddaş alt sistemi (`src/lib/memory/`) üçün yerləşdirmə qatı, vektor anbarı və yenidən sıralama tənzimləmələri. | Dəyişən | Standart dəyər | Təsvir | | ------------------------------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 dəq) | Yaddaşdaxili embedding keşi üçün TTL (hər mənbə/model/ölçü siqnatürü üzrə). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Embedding keşində saxlanılan maksimum LRU qeydlərinin sayı. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | Könüllü `@huggingface/transformers` lokal MiniLM pipeline-ı üçün HF repo ID-si (~23 MB int8, ~400 MB RAM). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | Statik potion/Model2Vec axtarış cədvəli embedder-i üçün HF repo ID-si. Keş qovluğuna yalnız lazım olduqda endirilir. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Statik potion model fayllarını keşləmək üçün istifadə olunan qovluq. Təyin edilmədikdə standart olaraq `DATA_DIR` altında yerləşir. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | `staticPotion.ts` tərəfindən istifadə olunan Hugging Face Hub əsas URL-ni əvəz edir (məsələn, şəbəkədən təcrid edilmiş quraşdırmalar üçün güzgü son nöqtəsi). | | `MEMORY_VEC_TOP_K` | `20` | `src/lib/memory/vectorStore.ts` daxilində `sqlite-vec` tam axtarışlı vektor axtarışının istifadə etdiyi standart top-K. | | `MEMORY_RRF_K` | `60` | Hibrid FTS5 + vektor əldəetməsi üçün Reciprocal Rank Fusion sabiti `k` (sqlite-vec resepti). | | `VECTOR_STORE_DISABLE_VEC` | `false` | `getVectorStore()` (`src/lib/memory/vectorStore.ts`) daxilində test/diaqnostika keçidi: `true` olduqda vektor anbarını məcburi olaraq `null` edir (`sqlite-vec` olmayan bulud/WASM mühitini simulyasiya edir) və yaddaşdan əldəetməni FTS5 açar söz axtarışına endirir. İstehsal mühitində təyin etməyin. | | `NOTION_API_KEY` | _(təyin edilməyib)_ | Notion backend-i üçün API açarı (`genericBackend.ts` məlum backend əvvəlcədən təyini tərəfindən istifadə olunur). | | `NOTION_API_URL` | `https://api.notion.com/v1` | Notion API üçün əsas URL (öz serverində yerləşdirilən Notion alternativləri üçün dəyişdirilə bilər). | | `OBSIDIAN_API_KEY` | _(təyin edilməyib)_ | Obsidian Vault backend-i üçün API açarı (`genericBackend.ts` məlum backend əvvəlcədən təyini tərəfindən istifadə olunur). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | Obsidian Vault API üçün əsas URL (uzaq vault üçün dəyişdirilə bilər). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | TV6 tipli yaddaş köhnəlməsinin əsas açarı. **Könüllüdür (standart olaraq söndürülüb)** — təmizləmə köhnəlmiş yaddaşları **silir**. Söndürülmüş olduqda `access_count`/`last_accessed_at` yalnız telemetriyadır və heç nə silinmir. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | İstifadə olunmayan `episodic` yaddaşın köhnəlməsinə qədər olan TTL (günlərlə). `0` episodik yaddaşı da toxunulmaz edir. Davamlı tiplər (`factual`/`procedural`/`semantic`) həmişə toxunulmazdır. Köhnəlmə saatı `last_accessed_at` əsasında yenidən hesablanır. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | `>=` bu sayda daxil edilmiş yaddaş, tipindən asılı olmayaraq köhnəlməyə qarşı toxunulmaz olur. `0` giriş toxunulmazlığını deaktiv edir. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (deaktivdir) | `src/lib/memory/typedDecay.ts` daxilindəki əlavə periodik köhnəlmə təmizləməsi üçün interval (saniyə ilə). `0`/təyin edilməyib = periodik təmizləmə yoxdur. İkiqat könüllüdür: həmçinin `MEMORY_TYPED_DECAY_ENABLED=true` tələb olunur. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(təyin edilməyib)_ | `system` mesajını **yalnız 0-cı indeksdə** qəbul edən vergüllə ayrılmış provayder ID-ləri (registrə həssas deyil) (`src/lib/memory/injection.ts`). Bunlar üçün keş baxımından təhlükəsiz olan massivin ortasına yaddaş əlavə edilməsi çoxgedişli söhbətlərdə təhlükəlidir, buna görə yaddaş birləşdirilir/əvvələ əlavə edilərək ilk sistem mesajına çevrilir. Standart olaraq yalnız `xiaomi-mimo`/`mimo`; söhbət şablonu eyni tək və ilk sistem mesajı məhdudiyyətini tətbiq edən, öz serverinizdə yerləşdirilən OpenAI-uyğun son nöqtələr (məsələn, Qwen3.5+/3.6) üçün genişləndirin. | ### Az RAM-li Docker nümunəsi `128` yalnız idarəetmə paneli üçündür. Bu heap ölçüsündə kodlaşdırma agentləri uzun `/v1/responses` sorğuları zamanı `FATAL ERROR` ilə dayanır. Bu nümunədən Claude/Codex/Grok şlüzü kimi istifadə etməyin. ```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. Qiymət Sinxronizasiyası Xarici mənbələrdən model qiymət məlumatlarının avtomatik sinxronizasiyası. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ----------------------- | ------------- | ------------------------ | ---------------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Dövri qiymət sinxronizasiyasını aktivləşdirir. | | `PRICING_SYNC_INTERVAL` | `86400` (24s) | `src/lib/pricingSync.ts` | Saniyələrlə sinxronizasiya intervalı. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Vergüllə ayrılmış məlumat mənbələri. | --- ## Arena ELO Sinxronizasiyası | Dəyişən | Standart | Mənbə faylı | Təsvir | | ---------------------------- | ------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Dashboard Funksiya Bayraqları vasitəsilə konfiqurasiya edilə bilən dövri Arena AI liderlər cədvəli ELO sinxronizasiyası; imtina etmək üçün `false` istifadə edin. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | `GET /v1/models` daxilində model identifikatorları üçün istifadə edilən prefiks forması. `dual` hər model üçün həm qısa ləqəb prefiksini, həm də kanonik provayder prefiksini göstərir (geriyə uyğunluq — kataloqun ölçüsünü təxminən ikiqat artırır); `alias` hər model üçün bir identifikator çıxarır; `canonical` yalnız tam provayder identifikatoru prefiksini çıxarır (ləqəbi artıq kanonik identifikator olan provayderlər tək qeydlərini saxlayır). Müştərilər hər sorğu üçün bunu `?prefix=alias` ilə dəyişə bilərlər. Baxın: [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24s) | `src/lib/arenaEloSync.ts` | Saniyələrlə sinxronizasiya intervalı. | --- ## PromptQL Playground Provayderi (Qeyri-rəsmi/Eksperimental) prompt.ql.app üçün əks mühəndislik üsulu ilə hazırlanmış GraphQL sessiya körpüsü (`src/shared/constants/providers/web-cookie.ts`). Hamısı istəyə bağlıdır — standart dəyərlər ictimai playground son nöqtələrinə yönəlir; yalnız öz serverinizdə yerləşdirilən və ya alternativ PromptQL quraşdırması üçün dəyişdirin. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | Söhbət/sessiya əməliyyatları üçün istifadə edilən GraphQL son nöqtəsi. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | Kredit balansını/istifadəsini sorğulamaq üçün istifadə edilən GraphQL son nöqtəsi. | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Mümkün olduğu qədər token yeniləməsi üçün istifadə edilən son nöqtə. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Taym-aut baş verməzdən əvvəl `thread_events` sorğusunun aparılması üçün maksimum vaxt (ms). | --- ## HyperAgent Veb Provayderi (Qeyri-rəsmi/Eksperimental) hyperagent.com üçün əks mühəndisliklə hazırlanmış sessiya körpüsü (`src/shared/constants/providers/web-cookie.ts`). İxtiyaridir — standart olaraq ictimai ödəniş/istifadə endpoint-inə yönəlir; yalnız öz serverinizdə yerləşdirilən/alternativ HyperAgent quraşdırması üçün dəyişdirin. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ---------------------- | --------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------- | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Ödəniş/istifadə kredit bloklarını əldə etmək üçün istifadə olunan endpoint. | --- ## Kilo Code İstifadə Kvotaları Kilo Code provayderi üçün şəxsi USD balansının və Kilo Pass istifadəsinin yoxlanılması. İxtiyaridir — standart olaraq ictimai Kilo API-yə yönəlir; yalnız relay/test qurğusu üçün dəyişdirin. Autentifikasiya bağlantının mövcud OAuth giriş tokenindən istifadə edir. | Dəyişən | Standart | Mənbə faylı | Təsvir | | -------------- | --------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------- | | `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Şəxsi Kilo Code balansını və Kilo Pass istifadəsini əldə etmək üçün istifadə olunan baza URL-i. | --- ## Adobe Firefly Veb Provayderi (Qeyri-rəsmi/Eksperimental) Adobe Firefly veb provayderi üçün brauzer vasitəsilə idarə olunan sessiya yeniləməsi (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`). İxtiyaridir — bütün standart parametrlər adi masaüstü quraşdırma üçün tənzimlənib. > **#9255-də silinib.** Köhnə CDP-yə qoşulmuş Chrome icra mühiti (adobeFireflyChromeRuntime.ts) > Playwright brauzer giriş xidməti ilə əvəz edilib və onun parametrləri artıq mövcud deyil. > ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART dəyişənləri, eləcə də > ADOBE_FIREFLY_LOGIN_WAIT_MS və ADOBE_FIREFLY_FORTER_WAIT_MS kod bazasının heç bir yerində > oxunmur — onları təyin etməyin heç bir təsiri yoxdur. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ------------------------------------ | ------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Həqiqi başsız Chrome üçün `1` olaraq təyin edin (generasiya üçün işləmədiyi məlumdur; yalnız sazlama üçündür). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Proaktiv brauzer isinməsini aktivləşdirir/deaktivləşdirir. `0` proaktiv isinməni deaktiv edir (paketin ortasında 408 bərpası yenə də tətbiq olunur). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly sessiyasının diskdə saxlanmasını deaktiv etmək üçün `0` olaraq təyin edin. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(təyin edilməyib)_ | `open-sse/services/adobeFireflySession.ts` | Ardıcıl göndərişlər arasında tətbiq edilən minimum interval (ms); daxili standart dəyəri əvəz edir. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(təyin edilməyib)_ | `open-sse/services/adobeFireflySession.ts` | Uğurlu paketdən sonra əlavə edilən əlavə interval (ms); daxili standart dəyəri əvəz edir. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(təyin edilməyib)_ | `open-sse/services/adobeFireflyClient.ts` | Generasiya sorğusunu göndərməzdən əvvəlki baza gecikməsi (ms); daxili standart dəyəri əvəz edir. | --- ## 19. Model Sinxronizasiyası (Dev) | Dəyişən | Standart | Mənbə Faylı | Təsvir | | ----------------------------------- | ------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(təyin edilməyib)_ | `src/lib/modelsDevSync.ts` | models.dev qiymət sinxronizasiyası üçün sərt əvəzləmə. Təyin edilməyibsə = Parametrlər > AI (`modelsDevSyncEnabled`) seçiminə əməl edir. `0`/`false`/`off`/`no` **DB üzərində üstünlük təşkil edir** və həm dövri sinxronizasiyanı, həm də `getModelsDevPricing()` SQL/JSON skanlarını ötürür (idarə paneli eyni hadisə dövrəsində ilişib qaldıqda bərpa üçün). `1`/`true`/`on`/`yes` sinxronizasiyanı məcburi aktivləşdirir. Qiymətlərin saxlanması/təmizlənməsi yenə də `backupDbFile("pre-write")` funksiyasını çağırır; bu funksiya 60 dəqiqəlik məhdudlaşdırma və ya `DISABLE_SQLITE_AUTO_BACKUP` aktiv olduqda heç bir əməliyyat icra etmir. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 saat) | `src/lib/modelsDevSync.ts` | İnkişaf zamanı model kataloqunun sinxronizasiya intervalı, saniyə ilə. | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 saat) | `src/lib/contextWindowResolver.ts` | Özünü düzəldən kontekst pəncərəsi uzlaşdırıcısı (5004) üçün interval (saniyə ilə): `/models` aşkarlanması vasitəsilə provayderin bəyan etdiyi pəncərələr kataloqdan fərqləndikdə onları `auto:discovery` əvəzləmələri kimi sabitləyir. Deaktiv etmək üçün `0` təyin edin. Artıq sinxronlaşdırılmış məlumatlardan təkrar istifadə edir (yeni sorğu etmir); `manual` əvəzləmələrin üzərinə heç vaxt yazmır. | --- ## 20. Provayderə Xüsusi Parametrlər | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ---------------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24 saat) | `src/lib/catalog/openrouterCatalog.ts` | OpenRouter model kataloqu keşinin TTL müddəti. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | `/v1/models` cavablarına göstərilmə üçün əlverişli `name` sahələrini daxil edin. Yalnız ID-lər gözləyən klientlər üçün deaktiv edin. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8 san.) | `src/app/api/v1/models/catalogCache.ts` | Birləşdirilmiş `GET /v1/models` kataloqunun yenidən qurulması üçün soyuq yolda gözləmə həddi (#12627). Taym-aut baş verdikdə, mövcuddursa, son uğurlu 200 cavabı təqdim edilir. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 gün) | `src/lib/db/models/activeSyncedCatalog.ts` | Bağlantının sinxronlaşdırılmış model siyahısının marşrutlaşdırma üçün etibarlı sayılmadığı və reyestrə açıq keçid etdiyi yaş həddi (#12849). Heç vaxt zaman damğası təyin edilməmiş sətirlər köhnəlmiş sayılır. | | `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60 san.) | `src/lib/usage/analyticsResponseCache.ts` | Yavaş `GET /api/usage/analytics` cavabının eyni sorğu sətri üçün təkrar istifadə müddəti (#15629). `0` keşi deaktiv edir. | | `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1 san.) | `src/lib/usage/analyticsResponseCache.ts` | Yalnız qurulması ən azı bu qədər vaxt çəkən analitika cavabları keşlənir, beləliklə kiçik instansiyalar həmişə aktual məlumatları görür. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | NanoBanana şəkil yaratma tapşırıqları üçün maksimum gözləmə müddəti. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | NanoBanana tapşırıqlarının sorğulanma tezliyi. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Adobe Firefly miqyas böyütmə göndərişinin təkrar cəhdi üçün eksponensial geri çəkilmənin baza gecikməsi. | | `AWS_REGION` | _(təyin edilməyib)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | AWS Bedrock son nöqtələrini (Kiro, audio) yaratmaq üçün istifadə olunan region. | | `AWS_DEFAULT_REGION` | _(təyin edilməyib)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | `AWS_REGION` təyin edilmədikdə ehtiyat dəyər. | | `CLOUDFLARE_ACCOUNT_ID` | _(təyin edilməyib)_ | `open-sse/executors/cloudflare-ai.ts` | Cloudflare Workers AI üçün hesab ID-si. | | `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(təyin edilməyib)_ | `open-sse/executors/cloudflare-playground.ts` | Başsız brauzer barmaq izi yoxlaması Playwright ilə birlikdə gələn Chromium-u blokladıqda istifadə olunan Cloudflare AI Playground icraçısı üçün masaüstü Chrome binar faylının tam yolu. | | `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) | `open-sse/executors/codebuddy/shared.ts` | CodeBuddy-yə (CN və International) göndərilən çağıran tərəfin sistem promptları üçün isteğe bağlı uzunluq həddi. Standart olaraq yalnız kodlaşdırma agenti kimliyi markerini daşıyan prompt neytral promptla əvəz olunur (Tencent-in məzmun filtri bunları rədd edir); uzun promptlar saxlanılır. 0-dan böyük tam ədəd həmçinin həmin simvol sayından uzun olan istənilən sistem promptunu əvəz edir; təyin edilməmiş, `0` və ya tam ədəd olmayan dəyər həddi deaktiv edir. Hər əvəzləmə hansı qaydanın işə düşdüyünü (kimlik markeri və ya uzunluq) jurnala yazır. | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Proksi hovuzu Workers relay yerləşdiricisinin istifadə etdiyi Cloudflare REST API bazasını dəyişdirin (#4640 / 9router#1360). | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Proksi hovuzunun "Relay Yerləşdir" modalında təklif olunan standart worker layihə adı. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Cloudflare Workers relay seçimini Proksi Hovuzu nişanından gizlətmək üçün `false` təyin edin. | | `CLOUDFLARED_BIN` | avtomatik aşkarlama | `src/lib/cloudflaredTunnel.ts` | `cloudflared` binar faylına xüsusi yol. | | `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Tunel nəqliyyat protokolu: `http2` (standart), `quic` və ya `auto`. | | `CLOUDFLARED_CONFIG` | _(təyin edilməyib)_ | `src/lib/cloudflaredTunnel.ts` | Lokal olaraq idarə edilən cloudflared `config.yml` faylına yol (`tunnel:`, `credentials-file:`, `ingress:` ilə). Təyin edildikdə, OmniRoute müvəqqəti sürətli tunel əvəzinə `tunnel --config run` (adlandırılmış tunel) əmrini işə salır. | | `CLOUDFLARED_HOSTNAME` | _(konfiqurasiyanın ingress parametrindən)_ | `src/lib/cloudflaredTunnel.ts` | Adlandırılmış tunelin `publicUrl`/`apiUrl` kimi bildirilən açıq host adı (məsələn, `ai.example.com`) üçün əvəzedici dəyər. Təyin edilmədikdə, konfiqurasiyanın ilk `ingress` host adından oxunur. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Proksi hovuzu relesinin yerləşdirmə vasitəsi tərəfindən istifadə olunan Deno Deploy REST API bazasını əvəz edir (#4643 / 9router#1437). | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Proksi hovuzunun "Releni yerləşdir" modal pəncərəsində təklif edilən standart Deno Deploy tətbiq adı. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Deno Deploy rele seçimini Proksi Hovuzu vərəqindən gizlətmək üçün `false` olaraq təyin edin. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 dəq) | `open-sse/services/searchCache.ts` | Axtarış API-si (Perplexity, Brave və s.) cavablarının keşlənməsi üçün TTL. | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Yalnız Claude Code releləri üçün eksperimental CC-uyğun provayder interfeysini göstərir. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Daxili 9router instansiyasının dinlədiyi hostu əvəz edir. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Daxili 9router instansiyasının dinlədiyi portu əvəz edir. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Daxili xidmətin WebSocket proksisi üçün qoşulma hostu (standart olaraq yalnız geri döngə interfeysi). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Daxili xidmətin WebSocket proksi serveri üçün port. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI körpüsünün hostu (köhnə inteqrasiya). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI körpüsünün portu. | | `CLIPROXYAPI_API_KEY` | _(boş)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | `cliproxyapi_api_key` parametri olmadıqda verilənlər müstəvisi açarı üçün ehtiyat dəyər. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(boş)_ | `src/lib/services/cliproxyAccountHealth.ts` | Xaricdən idarə olunan CLIProxyAPI instansiyasından hesab sağlamlığı məlumatlarını oxumaq üçün idarəetmə açarı. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | CLIProxyAPI konfiqurasiya qovluğu. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose-un `cliproxyapi` yan konteynerini yayımladığı host interfeysi (#12578). Onun verilənlər cildində provayder OAuth/API giriş məlumatları saxlanılır və sabitlənmiş obrazda mühit dəyişənlərinə əsaslanan verilənlər müstəvisi `api-keys` əvəzetməsi yoxdur (yalnız qoşulmuş `config.yaml` var), buna görə də `0.0.0.0` giriş məlumatlarını ehtiva edən xidməti bütün LAN üçün əlçatan edir. | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Daxili Mux (coder/mux) agent orkestrasiya demonunun dinlədiyi portu dəyişdirir (həmişə 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Daxili open-wa (WhatsApp Web avtomatlaşdırması) demonunun dinlədiyi portu dəyişdirir (həmişə 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario daxili xidmətinin qoşulma/bağlanma hostu (standart olaraq yalnız loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario daxili xidmətinin portu. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario daxili xidmətinin qoşulma/bağlanma hostu (standart olaraq yalnız loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario daxili xidmətinin portu. | | `LOCAL_HOSTNAMES` | _(boş)_ | `open-sse/config/providerRegistry.ts` | "Lokal" hesab edilən, vergüllə ayrılmış əlavə host adları (Docker xidmət adları və s.). | `ENABLE_CC_COMPATIBLE_PROVIDER` yalnız Claude Code klientlərini eksklüziv şəkildə qəbul edən üçüncü tərəf releləri üçündür. OmniRoute sorğuları yenidən yazır ki, həmin relelər onları qəbul etsin. Yalnız Claude Code CLI istifadə etmək istəyirsinizsə və ya bu relelərin nə olduğuna əmin deyilsinizsə, bunu deaktiv saxlayın və əvəzinə adi Anthropic-uyğun provayder əlavə edin. --- ## 21. Proksi Sağlamlığı | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Sürətli uğursuzluq üçün sağlamlıq yoxlamasının vaxt limiti. | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Gecikməyə görə optimallaşdırılmış hovuz strategiyasında namizəd proksilərin orta gecikməsini hesablamaq üçün vaxt pəncərəsi (saatla). | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | Sağlamlıq yoxlaması nəticəsi keşinin TTL-i. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | Uğursuz proksi sağlamlıq yoxlamaları üçün keş TTL-i. Bunu `PROXY_HEALTH_CACHE_TTL_MS` dəyərindən daha qısa saxlayın ki, yüksək paralellik şəraitində müvəqqəti proksi vaxt aşımı halları həqiqətən işləməyən proksilər üçün sürətli uğursuzluğu deaktiv etmədən tez bir zamanda yenidən yoxlanılsın. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Qeydiyyatdan keçmiş proksiləri vaxtaşırı yoxlayan fon proksi sağlamlığı planlaşdırıcısını deaktiv etmək üçün `false` təyin edin. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Fon sağlamlıq planlaşdırıcısının yoxlama intervalı, ms ilə (minimum `60000`). | | `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Sorğuları ödənişli serverless izolyatını oyadan kənar-rele proksiləri (`deno`/`vercel`/`cloudflare`) üçün ms ilə yoxlama intervalı (minimum `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Fon bərpa keçidinin ms ilə intervalı: əvvəllər qeyri-sağlam olan proksilərin hansı tezliklə yenidən yoxlanılmasını müəyyən edir ki, bərpa olunmuş proksi yenidən başlatma olmadan rotasiyaya qayıtsın. `60000` dəyərindən aşağı qiymətlər standart dəyərə qaytarılır. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Planlaşdırıcı və `/api/settings/proxies/auto-test` son nöqtəsi tərəfindən istifadə edilən əlçatanlıq yoxlaması hədəfi. İctimai standart hədəfdən istifadə etməmək üçün onu daxili/özünüzün host etdiyi URL-ə yönəldin. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Planlaşdırıcı və `/api/settings/proxies/auto-test` son nöqtəsi tərəfindən ortaq istifadə edilən, hər paketdə eyni anda başladılan yoxlamaların sayı. Minimum 1, maksimum isə 50 ilə məhdudlaşdırılır. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Paket daxilində iki yoxlama göndərişi arasındakı ms ilə gecikmə. Bu olmadıqda bütün paket eyni anda göndərilir və ortaq çıxış IP-si sorğu tezliyi məhdudlaşdırılmış hədəfin limitini işə sala bilər. Aralığı deaktiv etmək üçün `0` təyin edin; maksimum 5000 ilə məhdudlaşdırılır. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Proksiyə təyin edilmiş provayderin faktiki hostunun yoxlanılmasını (`GET /models`, API açarı olmadan) dayandırmaq və əvəzinə həmişə `PROXY_HEALTH_TEST_URL` istifadə etmək üçün `"false"` təyin edin. | | `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | `false` olduqda (standart), avtomatlaşdırılmış əlçatanlıq yoxlamaları (planlaşdırıcı + `/api/settings/proxies/auto-test` ünvanındakı "Hamısını sına" düyməsi) **yalnız oxumaq üçündür** və heç vaxt proksinin statusunu yazmır — aktiv/qeyri-aktiv statusunu yalnız operator təyin edir, beləliklə qeyri-sabit yoxlama təyin edilmiş proksini istifadəsiz vəziyyətdə qoya bilməz (#6246). Əvvəlki yoxla-və-təyin-et davranışını bərpa etmək üçün `true` təyin edin. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Könüllü aktivləşdirilən xüsusiyyət bayrağı ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) sənədinə baxın; idarəetmə panelindəki DB əvəzləməsi üstünlük təşkil edir). `true` (və ya `1`, `yes`) boş 200 və ya boş məzmunlu 502 göstərmək əvəzinə boş tərcümə edilmiş axın iterasiyalarını standart giriş məlumatları yolu ilə yenidən sınayır (`STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` həddinədək). | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Könüllü aktivləşdirilən xüsusiyyət bayrağı ([FEATURE_FLAGS.md](./FEATURE_FLAGS.md) sənədinə baxın; idarəetmə panelindəki DB əvəzləməsi üstünlük təşkil edir). `true` (və ya `1`, `yes`) idarəetmə panelində proksi hovuzunun altında yalnız oxumaq üçün çıxış müşahidəsini göstərir (proksi jurnalına əsasən son 24 saatdakı fərqli çıxış IP-ləri, bağlantılar və bir IP arxasında ən çox müşahidə olunan say). Marşrutlaşdırma üçün heç vaxt istifadə edilmir. | | `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Könüllü qoşulan funksiya bayrağı (baxın: [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); idarəetmə panelinin DB üzərindən təyin etdiyi dəyər üstünlük təşkil edir). `true` (və ya `1`, `yes`) hər hovuz üzvü üçün operator tərəfindən göndərilən tarixli müşahidə edilmiş ünvanları qəbul edir və göstərilmə və hovuz sıralaması üçün onları jurnal oxunuşu ilə birləşdirir. | | `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Operator tərəfindən göndərilən çıxış sətirləri üçün müşahidə müddəti, saatla (hər oxunuşda yenidən oxunur; yenidən başlatma tələb olunmur). `1..168` aralığı ilə məhdudlaşdırılır; diapazondan kənar, qeyri-rəqəm və ya boş dəyər xəta yaratmadan, proses üzrə yalnız bir dəfə xəbərdarlıq edilməklə 24 dəyərinə geri qayıdır. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Planlaşdırıcının ardıcıl təkrarlanan uğursuzluqlardan sonra proksiləri avtomatik silməsinə icazə vermək üçün `true` təyin edin. | | `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | Planlaşdırıcının proksini avtomatik silməsindən əvvəlki ardıcıl uğursuzluqların sayı (`PROXY_AUTO_REMOVE=true` olduqda). | | `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Planlaşdırıcının ardıcıl təkrarlanan uğursuzluqlardan sonra proksini silmək əvəzinə yumşaq şəkildə deaktiv etməsinə (status `dead`, heç vaxt silinmir) icazə vermək üçün `true` təyin edin. `PROXY_AUTO_REMOVE` üçün məlumatları məhv etməyən alternativdir: proksi dərhal hovuz/rotasiya həllindən çıxarılır (əhatə dairəsi hovuzunun həllində istifadə olunan aktiv status filtri onu artıq istisna edir) və yoxlamalardan yenidən uğurla keçməyə başladıqda avtomatik aktivləşdirilir. `PROXY_AUTO_REMOVE_AFTER` həddindən birgə istifadə edir. Hər iki bayraq `true` olarsa, `PROXY_AUTO_REMOVE` üstünlük təşkil edir. | | `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | Könüllü passiv ötürmə: `true` olduqda, son istehsal trafiki son nöqtənin işlək olduğunu artıq sübut edirsə (pəncərədə ən azı bir uğur və proksiyə aid edilən heç bir uğursuzluq yoxdursa, dəqiq bir provayder müşahidə edilibsə), planlaşdırıcı həmin son nöqtə üçün canlı yoxlamanı ötürür. Defolt olaraq söndürülüb: hər proksi yoxlanılır. | | `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Passiv ötürmənin nəzərə aldığı istehsal trafiki pəncərəsi, ms ilə (`60000..599999` aralığı ilə məhdudlaşdırılır). Bu müddət 10 dəqiqəlik yoxlama intervalından qısadır ki, son uğursuzluq təsirini itirmək əvəzinə üstünlük təşkil etsin. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Proksinin əlçatanlığı üzrə ilkin yoxlamalar uğursuz olduqda OAuth və provayder doğrulama axınlarının sabitlənmiş proksidən yan keçərək birbaşa qoşulmasına icazə verir. Effektiv üstünlük sırası belədir: Funksiya Bayraqları DB üzərindən təyin edilən dəyər > mühit dəyişəni > defolt. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30 san.) | `src/lib/resilience/settings.ts` | Defolt **növbədə gözləmə** büdcəsi: sorğunun provayder slotunu nə qədər gözləyə və rədd edilməzdən əvvəl növbədə nə qədər qala biləcəyini müəyyən edir; bu halda sorğu upstream-ə heç vaxt çatmır. Tapşırıq icra olunmağa başladıqdan sonra taymer təmizlənir — icra müddəti ayrıca `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` ilə məhdudlaşdırılır. Mühit dəyişəni yalnız defolt dəyəri təyin edir: əvvəlcə saxlanılmış `resilienceSettings.requestQueue.maxWaitMs`, sonra isə hər bağlantı üzrə `rateLimitOverrides.maxWaitMs` ona üstün gəlir. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 dəq.) | `open-sse/services/rateLimitManager.ts` | Qəbul edilmiş sorğunun sürət məhdudiyyəti rezervasiyasının müddəti bitməzdən əvvəl icrada qala biləcəyi maksimum müddət — növbədə gözləmə büdcəsindən ayrıdır ki, artımlı olmayan şlüzlərdə fetch əməliyyatının ləng başlaması taym-autla nəticələnməsin (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (deaktivdir) | `open-sse/services/rateLimitManager.ts` | Növbəyə qəbul həddi: bu sayda sorğu artıq növbədə olduqda 429 `queue_full` xətası ilə rədd edir. `0` = məhdudiyyətsiz (defolt). | | `RATE_LIMIT_AUTO_ENABLE` | _(təyin edilməyib)_ | `open-sse/services/rateLimitManager.ts` | Saxlanılmış Dashboard parametrindən asılı olmayaraq, sürət məhdudiyyəti təhlükəsizlik mexanizminin avtomatik aktivləşdirilməsini məcburi şəkildə aktivləşdirir/deaktivləşdirir. Məcburi aktivləşdirmək üçün `true`/`1`/`on`, məcburi deaktivləşdirmək üçün `false`/`0`/`off` qəbul edir. | | `PROVIDER_COOLDOWN_ENABLED` | _(təyin edilməyib → deaktiv)_ | `open-sse/services/providerCooldownTracker.ts` | Sorğular arasında qlobal provayder/bağlantı gözləmə müddətinin izlənməsi üçün seçimli parametr. Defolt olaraq DEAKTİVDİR (Connection Cooldown / Provider Circuit Breaker ilə üst-üstə düşür). Aktivləşdirmək üçün `true`/`1`/`on` qəbul edir. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Uğursuz provayder/bağlantı yenidən sınanmazdan əvvəl minimum gözləmə müddəti (ms). Ardıcıl uğursuzluqlar artdıqca eksponensial şəkildə artırılır. Yalnız `PROVIDER_COOLDOWN_ENABLED` aktiv olduqda istifadə edilir. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 dəq.) | `open-sse/services/providerCooldownTracker.ts` | Uğursuz provayder/bağlantının istənilən halda yenidən sınanmasından əvvəl maksimum gözləmə müddəti (ms) həddi. Yalnız `PROVIDER_COOLDOWN_ENABLED` aktiv olduqda istifadə edilir. | | `STREAM_RECOVERY_ENABLED` | _(təyin edilməyib → deaktiv)_ | `src/lib/resilience/settings.ts` (ilkin dəyər) → `open-sse/services/streamRecovery.ts` (məntiq) | **Nədir:** yarımçıq qalmış upstream axınlarının şəffaf bərpası (free-claude-code portu). Açılış SSE pəncərəsini `STREAM_RECOVERY.HOLDBACK_MS` müddətinədək (750 ms) saxlayır ki, _commit-dən əvvəlki_ kəsilmə — hər hansı bayt müştəriyə çatmazdan əvvəl baş verən kəsilmə — yenidən açılsın və görünmədən təkrar sınansın. **Nə vaxt aktivləşdirilməlidir:** axının başlanğıcında tez-tez 0 baytlıq kəsilmə yaradan qeyri-sabit upstream-lər üçün; hər axında ilk tokenədək olan müddətə 750 ms-ə qədər əlavə gecikmə qəbuledilməzdirsə, DEAKTİV saxlayın. `true`/`1`/`on` qəbul edir. Saxlanılmış Resilience parametrinin ilkin dəyərini təyin edir; Dashboard parametri təyin edildikdən sonra üstünlük qazanır. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(təyin edilməyib → söndürülüb)_ | `src/lib/resilience/settings.ts` (ilkin dəyər) → `open-sse/services/streamRecovery.ts` (məntiq) | **Nədir:** axının ortasında davam etdirmə (Mərhələ 4.4) — _təsdiqdən sonrakı_ kəsilmədən sonra (baytlar artıq müştəriyə çatıb) qismən mətni assistant ilkin doldurması kimi istifadə edərək yenidən sorğu göndərir və çatışmayan sonluğu birləşdirir. Yalnız OpenAI ilə uyğun sadə mətn axınları üçündür; davam edən tool çağırışı olduqda heç vaxt işə düşmür. **Nə vaxt aktivləşdirilməlidir:** cavabın ortasında kəsilən uzun generasiyalar üçün və bərpa edilmiş sonluğun token-token deyil, tək paket şəklində gəlməsini qəbul etdiyiniz halda. `STREAM_RECOVERY_ENABLED` parametrindən asılı deyil (risk profili fərqlidir). `true`/`1`/`on` dəyərlərini qəbul edir. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(təyin edilməyib → söndürülüb)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Seçim əsasında aktivləşdirilən, aktiv axının faydalı çıxışını izləyən nəzarət mexanizmi. Fraqmentlər göndərməyə davam edən, lakin konfiqurasiya edilmiş assistant çıxışı sürətindən aşağı qalan axınları aşkarlayır; heartbeat-lər, istifadə hadisələri, boş deltalar və tool/reasoning mərhələləri yanlış olaraq irəliləyiş kimi görünmür. Boşdayanma və sərt son müddət taymautlarından ayrıdır. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Ötürmə qabiliyyətinin qiymətləndirilməsindən əvvəlki güzəşt müddəti; 0–600000 ms aralığı ilə məhdudlaşdırılır. | | `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Sürüşən faydalı çıxış pəncərəsi; 1000–600000 ms aralığı ilə məhdudlaşdırılır; dayandırmadan əvvəl bir tam pəncərə tələb olunur. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Minimum UTF-8 assistant çıxışı bayt sürəti (konservativ token proksisi); 1–1000000 aralığı ilə məhdudlaşdırılır. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Ölçülə bilən hesab olunan minimum sıfırdan fərqli faydalı çıxış nümunəsi; 1–1000000 bayt aralığı ilə məhdudlaşdırılır. | | `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Başlanğıc zamanı provayder tokenlərinin sağlamlıq yoxlamaları arasındakı mərhələli interval (ms). | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Kəskin yük artımının qarşısını almaq üçün provayder tokenlərinin sağlamlıq yoxlamaları arasında `HEALTHCHECK_STAGGER_MS` üzərinə əlavə edilən minimum təsadüfi yayınma (ms) (Məsələ #1220). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Kəskin yük artımının qarşısını almaq üçün provayder tokenlərinin sağlamlıq yoxlamaları arasında `HEALTHCHECK_STAGGER_MS` üzərinə əlavə edilən maksimum təsadüfi yayınma (ms) (Məsələ #1220). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Başlanğıc token sağlamlığı yoxlaması üçün paralel yoxlama paketinin ölçüsü; daha böyük dəyərlər daha çox bağlantını paralel yoxlayır, daha kiçik dəyərlər isə kəskin yükü azaldır (Məsələ #7875, #7719-un reqressiyası). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Xətanı müştəriyə qaytarmazdan əvvəl model əhatəli soyuma müddəti cavabları üzrə avtomatik təkrar cəhdlərin sayı. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Gözləmə müddətinə görə təkrar cəhdlər arasındakı maksimum eksponensial gözləmə intervalı (saniyə ilə). Yuxarı axındakı `Retry-After` dəyərindən asılı olmayaraq bu dəyərlə məhdudlaşdırılır. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | Headroom token qənaətçisi proksisinin URL-i. İdarəetmə panelinin həyat dövrü (`api/headroom/*`) standart olaraq geri döngə interfeysində lokal `headroom-ai` CLI-ni işə salır; yalnız xarici Docker yan konteyner proksisinə yönləndirmək üçün bu dəyəri dəyişdirin. | ### Axın bərpasının tənzimləmə sabitləri Bərpa zamanı saxlayıb-gözləmə davranışı `open-sse/config/constants.ts` faylındakı (`STREAM_RECOVERY`) sabit kodlaşdırılmış sabitlərlə tənzimlənir; onlar istinad üçün burada göstərilib — onları dəyişdirmək mühit dəyişəni deyil, kod dəyişikliyi tələb edir: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — açılış SSE pəncərəsinin nə qədər saxlanıldığını müəyyən edir ki, erkən kəsilmə zamanı hər hansı bayt müştəriyə ötürülməzdən əvvəl təkrar cəhd edilə bilsin. - `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — saxlanılan pəncərə üçün sərt həddir; taymerdən asılı olmayaraq, bu qədər bayt toplanan kimi təsdiqləmə (buferi boşaltma + birbaşa ötürmə) həyata keçirilir. - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — saxlanılan məlumat hələ təsdiqlənmədiyi müddətdə yuxarı axın axınının maksimum şəffaf şəkildə yenidən açılma sayı. > **Provayder üzrə sürüşən pəncərəli sürət məhdudiyyəti (mühit dəyişəni yoxdur):** FCC-dən köçürülmüş > provayder üzrə sürüşən pəncərəli sürət məhdudiyyəti _ehtiyat mexanizmi_ kodda mövcuddur > (`open-sse/services/providerDefaultRateLimit.ts`, bağlantısı > `open-sse/services/rateLimitManager.ts` vasitəsilə qurulub), lakin **boş standart xəritə** ilə təqdim olunur > və hazırda **operator üçün mühit dəyişəni yoxdur** — yalnız test qoşulma nöqtəsi / > kod dəyişikliyi vasitəsilə aktivləşdirilir. O, qəsdən yuxarıdakı cədvəldə göstərilməyib. Tənzimləmə parametrinə malik olan hər bir `(token, IP)` üzrə > relay məhdudlaşdırıcısı `RELAY_IP_PER_MINUTE`-dır (§3 Şəbəkə və Portlar). --- ## 22. Sazlama > [!CAUTION] > Bu dəyişənlər **ətraflı çıxış** yaradır və həssas məlumatların sızmasına səbəb ola bilər. **Onları heç vaxt istehsal mühitində aktivləşdirməyin.** | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CURSOR_DEBUG` | _(təyin edilməyib)_ | `open-sse/executors/cursor.ts` | Ətraflı Cursor icraçı jurnallarını (dekodlanmış SSE fraqmentləri və s.) aktivləşdirmək üçün `1` təyin edin. | | `CURSOR_STREAM_DEBUG` | _(təyin edilməyib)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG` üçün geriyə uyğun alternativ addır. | | `CURSOR_DUMP_FILE` | _(təyin edilməyib)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG=1` olduqda xam dekodlanmış Cursor fraqmentlərinin yazıldığı istəyə bağlı fayl yolu. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Cursor icraçısı üçün axının boş qalma taymautu (ms). | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Baytlar buferdə qaldıqda composer kv_after_text yumşaq sonlandırıcısından sonrakı güzəşt müddəti (ms) — sondakı exec_mcp alət çağırışına öz çərçivəsini tamamlamaq üçün vaxt verir. | | `CURSOR_TOOL_DIRECTIVE` | aktivdir (`!== "0"`) | `open-sse/executors/cursor.ts` | composer-2.5-in alət çağırışlarını etibarlı şəkildə yaratmasını təmin edən alət təsdiqləmə direktivi. Deaktivləşdirmək üçün `0` təyin edin. | | `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(təyin edilməyib)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Tərcümədən SONRA sistem mesajına əlavə edilən operator tərəfindən müəyyənləşdirilmiş sistem sorğusu mətni (tərcümədən sonrakı inyeksiya); codex/Responses və `/v1/messages` yollarına çatır. Həmçinin əks etdirilmiş sistem preambulası bloklarından silinən direktiv prefiksi kimi istifadə olunur. Deaktiv saxlamaq üçün təyin etməyin. | | `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (söndürülüb) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | openai→claude axınının başlanğıcından əks etdirilmiş sistem sorğusu preambulası bloklarını silmək üçün `1` təyin edin. Standart olaraq söndürülüb — evristikalar ingilis nəsrinin strukturuna uyğunlaşdırılıb və cavab yükünü dəyişdirir, buna görə də qanuni olaraq belə bir bölmə ilə başlayan cavab həmin bölməni itirər. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Uzaq `image_url` vizual girişi üçün hər təsvir üzrə əldəetmə taymautu (ms). | | `CURSOR_STATE_DB_PATH` | _(yoxlanılır)_ | `open-sse/utils/cursorVersionDetector.ts` | IDE versiyasının aşkarlanması üçün istifadə olunan Cursor IDE vəziyyət verilənlər bazası axtarışını əvəz edin. | | `CURSOR_AGENT_CLI_VERSION` | _(aşkarlama / sabitləmə)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Agent Run-da `x-cursor-client-version: cli-…` üçün Agent CLI yığım identifikatoru (`YYYY.MM.DD-`). | | `CURSOR_AGENT_BIN` | _(təyin edilməyib)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Təsvir yaratmaq üçün istifadə olunan Cursor Agent binar faylının yolu. Təyin edilmədikdə işləyici əvvəlcə `providerSpecificData.agentBin`, sonra isə PATH istifadə edir. | | `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor Agent təsvir tapşırıqları üçün hər təsvir üzrə ümumi icra müddəti (ms). | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor təsvir tapşırıqları üçün ortaq yer üzrə paralellik məhdudiyyəti. | | `CURSOR_IMG_MODEL` | sorğu / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Təsvir tapşırıqları üçün Cursor CLI `--model` parametrini əvəz edin. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC (uncensored.com) təsvir yaratma nəticəsinin sorğulanma tezliyi (ms). | | `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC təsvir yaratma nəticəsinin sorğulanması üçün ümumi müddət (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC (uncensored.com) video yaratma nəticəsinin sorğulanma tezliyi (ms). | | `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC video yaratma nəticəsinin sorğulanması üçün ümumi müddət (ms). | | `CURSOR_DATA_DIR` | _(yoxlanılır)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Cursor Agent CLI məlumat qovluğunu (`…/versions/`) əvəz edin; rəsmi agentin istifadə etdiyi eyni dəyişəndir. | | `CURSOR_TOKEN` | _(təyin edilməyib)_ | `scripts/ad-hoc/cursor-tap.cjs` | Tərtibatçı alətləri tərəfindən istifadə olunan birbaşa Cursor bearer tokeni. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | deaktivdir (`"1"` vasitəsilə aktivləşdirilir) | `src/app/api/v1/chat/completions/route.ts` | `"1"` təyin edildikdə böyük söhbət yükləri üçün məzmun növü/uzunluğu göstəricilərini jurnala yazın. Jurnal səs-küyünü azaltmaq üçün standart olaraq söndürülüb. | | `DEBUG_RESPONSES_SSE_TO_JSON` | _(təyin edilməyib)_ | `open-sse/handlers/responseTranslator.ts` | Responses API SSE→JSON tərcümə təfərrüatlarını jurnala yazmaq üçün `true` təyin edin. | | `DEBUG_CLAUDE_NONSTREAM` | _(təyin edilməyib)_ | `open-sse/handlers/responseTranslator.ts` | Claude cavabının tərcümə yolunda boş textContent fraqmentlərini göstərmək üçün `true` təyin edin (yalnız sazlama üçün). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(təyin edilməyib)_ | E2E test infrastrukturu | E2E test rejimini (yumşaldılmış autentifikasiya, test qarmaqları) aktivləşdirmək üçün `true` təyin edin. | --- ## 23. GitHub İnteqrasiyası İstifadəçilərə problemləri birbaşa İdarəetmə panelindən bildirməyə imkan verin. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | --------------------- | ------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `GITHUB_ISSUES_REPO` | _(təyin edilməyib)_ | `src/app/api/v1/issues/report/route.ts` | `owner/repo` formatında repozitoriya. | | `GITHUB_ISSUES_TOKEN` | _(təyin edilməyib)_ | `src/app/api/v1/issues/report/route.ts` | `issues:write` əhatə dairəsinə malik GitHub Şəxsi Giriş Tokeni. | | `GITHUB_TOKEN` | _(təyin edilməyib)_ | problemlərin çeşidlənməsi / bulud agenti köməkçiləri | `GITHUB_ISSUES_TOKEN` üçün ehtiyat variant kimi istifadə edilən və `src/lib/cloudAgent/*` daxilindəki bulud agenti köməkçiləri tərəfindən istifadə olunan ümumi GitHub giriş tokeni. | --- ## Yerləşdirmə Ssenariləri Relay backend üçün SRE təlimatları (`ts`/`bifrost`/`auto` davranışı, 9router və CLIProxyAPI yerləşdirilməsi, eləcə də yüksək ötürmə qabiliyyətli ehtiyat strategiyası) üçün [Relay Backend Strategiyasına](/docs/reference/RELAY_BACKEND_STRATEGY.md) baxın. ### Minimal Lokal İnkişaf ```bash JWT_SECRET=$(openssl rand -base64 48) API_KEY_SECRET=$(openssl rand -hex 32) INITIAL_PASSWORD=dev123 PORT=20128 NODE_ENV=development ``` ### Docker İstehsal Mühiti ```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 ``` ### Şəbəkədən Təcrid Olunmuş Mühit / 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 ``` ### Əks Proksili 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. Bacarıqların İzolyasiya Mühiti (v3.8.0+) Bacarıqlar çərçivəsi (`src/lib/skills/`) istifadəçi tərəfindən müəyyən edilmiş avtomatlaşdırmaları izolyasiya edilmiş mühitdə icra edərkən tətbiq olunan məhdudiyyətlər və təhlükəsizlik parametrləri. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | --------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 san.) | `src/lib/skills/builtins.ts` | İzolyasiya edilmiş bacarıq kodunun hər icrası üçün ümumi vaxt limiti. Sərt limitdir; daha uzun çəkən hər şey dayandırılır. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _(`SKILLS_SANDBOX_TIMEOUT_MS` dəyərinə geri qayıdır)_ | `src/lib/skills/` | Yüksək səviyyəli bacarıq orkestrasiya vaxt limiti. Çoxmərhələli iş axınlarına imkan vermək üçün `SKILLS_SANDBOX_TIMEOUT_MS` dəyərindən yüksək təyin edin. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Bacarığın istənilən ayrıca izolyasiya edilmiş fayldan oxuya biləcəyi maksimum bayt sayı. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Bacarıq daxilində istənilən ayrıca HTTP cavabından götürülən maksimum bayt sayı. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | İzolyasiya mühiti çağırışından qaytarılan stdout/stderr simvollarının sayına tətbiq olunan sərt limit. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | İzolyasiya mühitindən çıxış şəbəkəsinə icazə vermək üçün `1`/`true` təyin edin. Təhlükəsizlik məqsədilə standart olaraq **təcrid olunub**. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(boş)_ | `src/lib/skills/builtins.ts` | İzolyasiya edilmiş icra üçün icazə verilən konteyner obrazlarının vergüllə ayrılmış siyahısı. Boş dəyər yalnız daxili standartın istifadə olunması deməkdir. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(daxili standart)_ | `src/lib/skills/` | Docker əsaslı izolyasiya mühiti yaradılarkən istifadə olunan konteyner obrazı. Fərdi sərtləşdirilmiş baza obrazını sabitləmək üçün bu dəyəri dəyişdirin. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Bacarıqların izolyasiyası üçün konteyner icra mühiti: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. `auto` hər bir əsas əməliyyat sistemi üçün quraşdırılmış ən uyğun icra mühitini seçir (macOS-da Apple Container/OrbStack, Windows-da WSL Container, Linux-da Podman), mümkün olmadıqda Docker-dən istifadə edir. | > [!CAUTION] > `SKILLS_SANDBOX_NETWORK_ENABLED=true` parametrinin aktivləşdirilməsi ixtiyari bacarıq kodu üçün çıxış yolu açır. Paylaşılan yerləşdirmələrdə bunu `OUTBOUND_SSRF_GUARD_ENABLED=true` və sərt `CORS_ORIGIN`/proksi siyasəti ilə birlikdə istifadə edin. --- ## 25. Provayder Kvotaları, Tunellər, Ehtiyat Nüsxələr və Müxtəlif İcra Mühiti Parametrləri Provayder kvotası son nöqtələri, şəbəkə tunelləri (Tailscale, Ngrok, MITM sazlama proksisi), 1Proxy çıxış hovuzu, verilənlər bazasının ehtiyat nüsxələri və icraedici qat və ya skriptlər tərəfindən istinad edilən ayrı-ayrı funksiyalar üçün kiçik fərdiləşdirmələr. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Sürət məhdudlaşdırıcısının arxa tərəfi üçün Redis bağlantı sətri. | | `ALIBABA_CODING_PLAN_HOST` | _(istehsal hostu)_ | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian kodlaşdırma planı kvotalarını əldə etmək üçün istifadə olunan hostu əvəz edir. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | hostdan törədilir | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian üçün tam kvota URL-ni əvəz edir. | | `QWEN_CLOUD_COOKIE` | _(təyin edilməyib)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Qwen Cloud / Model Studio şəxsi Token Plan kvota şlüzü üçün konsol sessiyası kukisi (inferensiya API açarı onu oxuya bilmir). Bütün `Cookie` sorğu başlığını — tərkibində `login_qwencloud_ticket` var — home.qwencloud.com › Billing › Subscription səhifəsində `cs-data.qwencloud.com` ünvanına edilən istənilən `api.json` çağırışından kopyalayın (F12 › Network). Həssasdır və sessiya ilə məhdudlaşır; hər bağlantı üçün ayrıca `qwenCloudCookie` Dashboard sahəsinə üstünlük verin. | | `QWEN_CLOUD_SEC_TOKEN` | _(təyin edilməyib)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Token Plan konsol şlüzü üçün əl ilə verilən `sec_token` əvəzləməsi. Həssasdır; təyin edilmədikdə, əldəetmə modulu kukidən istifadə edərək onu idarəetmə panelinin HTML-indən müəyyən edir. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Şəxsi Token Plan kvotasını əldə edən modul üçün şlüz hostunun əvəzlənməsi (məsələn, Model Studio konsolu üçün `bailian-singapore-cs.alibabacloud.com`). | | `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Daxil olunmuş HTML-dən `sec_token` müəyyən etmək üçün istifadə olunan idarəetmə paneli URL-si. | | `XIAOMI_MIMO_CONSOLE_COOKIE` | _(təyin edilməyib)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Xiaomi MiMo Token Plan kvota API-si (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — inferensiya API açarı onu oxuya bilmir) üçün konsol sessiyası kukisi. Bütün `Cookie` sorğu başlığını — tərkibində `api-platform_serviceToken` və `userId` var — Token Plan səhifəsində `platform.xiaomimimo.com` ünvanına edilən istənilən sorğudan kopyalayın (F12 › Network). Həssasdır və sessiya ilə məhdudlaşır; hər bağlantı üçün ayrıca `xiaomiMimoConsoleCookie` Dashboard sahəsinə üstünlük verin. | | `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Konsol kukisi konfiqurasiya edilmədikdə istifadə olunan və OmniRoute tərəfindən izlənilən Xiaomi MiMo ehtiyat variantı üçün aylıq büdcə (Kreditlər). Defolt olaraq Lite tarifinin 4.1B limiti istifadə olunur; bunu tarifin Kreditlərinə uyğun təyin edin (Standard 11B / Pro 38B / Max 82B). Hər bağlantı üçün `providerSpecificData.monthlyTokenLimit` keçərsizləşdirməsi bu mühit dəyişənindən üstündür. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio-nun pulsuz səviyyəli vizual/media kvotasını əldə etmək üçün konsolun ön ucdakı yolunun keçərsizləşdirilməsi. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio-nun pulsuz səviyyəli multimodal kvotasını əldə etmək üçün konsolun ön ucdakı yolunun keçərsizləşdirilməsi. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio-nun pulsuz səviyyəli audio kvotasını əldə etmək üçün konsolun ön ucdakı yolunun keçərsizləşdirilməsi. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(təyin edilməyib)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Daxili Alibaba pulsuz səviyyəli mətn modeli icazə siyahısını keçərsizləşdirən lokal JSON faylına aparan ixtiyari yol. Əvvəlcə `$DATA_DIR/alibaba-free-tier-allowlist.json`, sonra isə `config/alibaba-free-tier-allowlist.json` istifadə olunur. | | `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | Sorğu büdcələri hesablanarkən tamamlama çıxışı üçün rezerv edilən tokenlər. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Kontekst pəncərəsinə sığdırmaq məqsədilə köhnə daxili şəkillər ixtisar edilərkən ən yeni şəkillərdən neçəsinin saxlanacağı (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | aktiv | `open-sse/services/model.ts` | Köhnə klientlərin istifadə etdiyi irsi model ləqəbi uyğunluq qatını aktivləşdirir və ya deaktiv edir. | | `OMNIROUTE_EMERGENCY_FALLBACK` | aktiv | `open-sse/services/emergencyFallback.ts` | Uğursuz sorğuları pulsuz `nvidia`/`openai/gpt-oss-120b` modelinə yönləndirən büdcə tükənməsi üzrə fövqəladə ehtiyat mexanizmini deaktiv etmək üçün `false` (və ya `0`) təyin edin. Effektiv prioritet sırası: Funksiya Bayraqları verilənlər bazasının keçərsizləşdirilməsi > mühit dəyişəni > defolt; əlçatan olmadıqda, xidmət birbaşa mühit dəyişəninin dəyərindən istifadə edir. | | `COMMAND_CODE_CALLBACK_PORT` | _(təyin edilməyib)_ | `src/app/api/providers/command-code/auth/shared.ts` | Command Code CLI köməkçi vasitəsindən OAuth tipli geri çağırışlar üçün istifadə olunan lokal port. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Command Code yuxarı axınına `x-command-code-version` başlığı kimi göndərilən dəyər. CLI versiyasını artırmaq üçün dəyişdirin. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Smartfon kvota əldəetmə telemetriyası tərəfindən istifadə edilən Command Code istifadə/kvota yuxarı axını üçün baza URL-i. Öz hostinqinizdə yerləşdirilən və ya alternativ Command Code API-si üçün dəyişdirin. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | MITM sazlama proksisi üçün lokal qoşulma portu. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Yuxarı axının TLS yoxlamasını deaktiv etmək üçün `1` təyin edin (yalnız tərtibat üçün). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Proksidən keçirilən bağlantılar üçün qeyri-aktiv soket vaxt aşımı (ms); yarıaçıq tunellərin sızmasının qarşısını almaq üçün bu müddəti keçən qeyri-aktiv soketlərin bağlantısı kəsilir. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Antigravity MITM körpüsünün dinlədiyi port. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Körpünün Antigravity trafikini yönləndirdiyi marşrutlaşdırıcı son nöqtəsi. | | `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Körpünün TLS materiallarını oxuduğu qovluğu dəyişdirir. Sertifikat modeli AgentBridge serverində olduğu kimi seçilir: köhnə yarpaq sertifikat quraşdırması üçün `server.crt`/`server.key`, əks halda `ca.crt`/`ca.key` (kök CA, ələ keçirilən hər host üçün bir yarpaq sertifikatı; `MITM_ROOT_CA_ENABLED=true` ilə məcburi aktivləşdirilir). Aktiv model üçün fayllar çatışmırsa, körpü işə salınarkən dayanır. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Marşrutlaşdırma qərarı jurnallarının təfərrüat səviyyəsi: `0` jurnallaşdırmanı susdurur, daha yüksək dəyərlər isə daha çox yan keçmə/marşrut qərarını jurnallaşdırır. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Kök CA + hər host üçün yarpaq sertifikatı modelini (#6684) aktivləşdirmək üçün `true` təyin edin. Yeni quraşdırmalarda bu avtomatik aktivləşdirilir; əvvəlcədən mövcud olan etibarlı köhnə yarpaq sertifikatına malik quraşdırmalar isə ayrıca aktivləşdirilmədiyi halda köhnə sabit SAN sertifikatını saxlayır. | | `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | İşə salınan proksi prosesi üçün MITM meneceri TƏRƏFİNDƏN təyin edilir (`root-ca` \| `legacy`) — sertifikat miqrasiyası qərarını əks etdirir; əl ilə təyin edilməsi nəzərdə tutulmayıb. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | MITM sertifikatına etibar komandalarının əvvəlindəki `sudo` əmrini silmək üçün `1` (doğru) təyin edin — operatorun CA-ya əl ilə etibar etdiyi root-suz / istifadəçi ad məkanı ilə işləyən yerləşdirmələr üçün (məsələn, Node-un əlavə CA sertifikatları mexanizmi vasitəsilə). | | `SKIP_ANTIGRAVITY_DNS` | _(təyin edilməyib)_ | `src/mitm/dns/provision.ts` | Antigravity proksi host adları üçün `/etc/hosts` DNS qeydlərinin yaradılmasını tamamilə ötürmək məqsədilə `true` təyin edin — sudo/root girişi olmayan konteynerlər üçün. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(təyin edilməyib)_ | `src/mitm/dns/dnsConfig.ts` | DNS qeydləri əlavə edilərkən/silinərkən hosts faylına yazmağı ötürmək üçün `1` təyin edin — sandbox rejimli və ya yalnız oxunan test mühitləri üçün. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Yalnız test/CI üçün qoruyucu: sertifikat etibarının quraşdırılması/silinməsi əməliyyatlarını heç bir iş görməyən əməliyyata çevirmək üçün `1` təyin edin ki, test dəsti heç vaxt ƏS-in etibar anbarını dəyişməsin. Test quraşdırması və CI iş axınları tərəfindən avtomatik təyin edilir. | | `CHANGELOG_BASE_REF` | _(avtomatik)_ | `scripts/check/check-changelog-integrity.mjs` | CHANGELOG-un silinməsinə qarşı yoxlama üçün açıq baza istinadı (standart olaraq CI-də PR-ın baza budağı və ya ən yüksək `release/v*`). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Arxa planda pulsuz proksi hovuzunun avtomatik sinxronlaşdırma planlayıcısını aktivləşdirmək üçün `true` təyin edin. İstəyə bağlıdır, standart olaraq deaktivdir. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Avtomatik sinxronlaşdırma intervalı, millisaniyə ilə (standart 30 dəq.). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy pulsuz proksi mənbəyini aktivləşdirin. Deaktiv etmək üçün `false` təyin edin. | | `FREE_PROXY_1PROXY_API_URL` | _(oneproxy.ts faylına baxın)_ | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy API URL-ni əvəz edən dəyər. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Hər sinxronlaşdırma zamanı 1proxy-dən əldə edilən maksimum proksi sayı. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy idxalları üçün minimum keyfiyyət balı həddi. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly pulsuz proksi mənbəyini aktivləşdirin. Deaktivləşdirmək üçün `false` olaraq təyin edin. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Hər Proxifly sinxronizasiyası zamanı əldə ediləcək proksilərin sayı. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly üçün anonimlik səviyyəsi filtri (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate pulsuz proksi mənbəyini aktivləşdirin. Yalnız seçim əsasında aktivləşdirilir. | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate proksi siyahısının əsas URL ünvanını əvəz edir. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Webshare proksi hovuzu mənbəyini aktivləşdirin. Deaktivləşdirmək üçün `false` olaraq təyin edin; həmçinin `FREE_PROXY_WEBSHARE_API_KEY` təyin edilməlidir. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(yoxdur)_ | `src/lib/freeProxyProviders/webshare.ts` | Webshare hesabının API tokeni (`Authorization: Token `). Tələb olunur — bu olmadan provayder deaktiv qalır. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Webshare proksi siyahısı API URL ünvanını əvəz edir. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Hər Webshare sinxronizasiyası zamanı idxal edilən maksimum proksi sayı. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Proxy Pool tabında Deploy Vercel Relay düyməsini göstərir/gizlədir. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Vercel API baza URL-sinin əvəzlənməsi (test üçün). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Vercel Relay yerləşdirmə modalında əvvəlcədən doldurulan standart layihə adı. | | `TAILSCALE_BIN` | _(avtomatik aşkarlanır)_ | `src/lib/tailscaleTunnel.ts` | `tailscale` icra faylına açıq şəkildə göstərilən yol. | | `TAILSCALED_BIN` | _(avtomatik aşkarlanır)_ | `src/lib/tailscaleTunnel.ts` | `tailscaled` demonunun icra faylına açıq şəkildə göstərilən yol. | | `TAILSCALE_AUTHKEY` | _(təyin edilməyib)_ | `src/lib/tailscaleTunnel.ts` | İnteraktiv olmayan / başsız `tailscale up` üçün əvvəlcədən paylaşılmış Tailscale autentifikasiya açarı (`--auth-key=` vasitəsilə ötürülür). Təyin edilmədikdə, giriş üçün interaktiv brauzer autentifikasiya URL-si istifadə olunur. | | `NGROK_AUTHTOKEN` | _(təyin edilməyib)_ | `src/lib/ngrokTunnel.ts` | Xaricə yönələn ngrok tunellərini autentifikasiya edir. | | `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Əl ilə/planlaşdırılmış ehtiyat nüsxə təmizləməsi zamanı saxlanılan SQLite ehtiyat nüsxəsi fayllarının maksimum sayı. Miqrasiya anlıq görüntüləri məzmuna görə ünvanlanır və eyni DB vəziyyəti üçün təkrar istifadə edilir; onlar paralel miqrasiya pəncərəsi daxilində silinmir. Settings → Database bölməsində saxlanmış ehtiyat nüsxələrin saxlanma müddəti dəyərini əvəz edir. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Əl ilə/planlaşdırılmış ehtiyat nüsxə təmizləməsi zamanı saxlanılan maksimum yaş (günlərlə). `0` yaşa əsaslanan silinməni deaktiv edir. Miqrasiya anlıq görüntüləri paralel miqrasiya pəncərəsi daxilində silinmir. Settings → Database bölməsində saxlanmış ehtiyat nüsxələrin saxlanma müddəti dəyərini əvəz edir. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | `backup-schedule.json` faylını icra edən server tərəfli tapşırığın işə düşmə intervalı (ms). 1 dəqiqəlik cron dəqiqliyindən xeyli aşağı qalmalıdır; `5000`-dən kiçik və ya təhlil edilə bilməyən dəyərlər üçün `30000` istifadə olunur. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Giriş nöqtəsində icazələrin yoxlanması üçün konteyner icra mühiti göstərişi. İstənilən Podman topologiyası üçün `podman` olaraq təyin edin. Konteyner mühərrikin lokal olduğunu, yoxsa ona Podman Machine vasitəsilə qoşululduğunu müəyyən edə bilmədiyi üçün xəbərdarlıq topologiyadan asılı olmayan formada qalır və `contrib/podman/README.md` faylına yönləndirir. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Kvota payı istehlakı yaddaşının arxa sistemi: `sqlite` (standart) və ya `redis`. | | `QUOTA_STORE_REDIS_URL` | _(təyin edilməyib)_ | `src/lib/quota/storeFactory.ts` | `QUOTA_STORE_DRIVER=redis` olduqda istifadə edilən Redis bağlantı sətri (məsələn, `redis://localhost:6379`). | | `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Pulun doyma nisbəti (0..1); bu həddə çatdıqda və ya onu keçdikdə pul sərt rejimə keçir (borclanma olmur). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Yumşaq kvota siyasəti hədəfin prioritetini azaltdıqda ona tətbiq edilən xal çarpanı (0..1). | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | İlkin kvota kəsimi SÖNDÜRÜLDÜKDƏ (#4540), avtomatik kombinasiya qiymətləndirməsində limiti tükənmiş provayderə (`credits_exhausted`/`rate_limited`) tətbiq edilən xal çarpanı (0..1). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | GC-dən (`gcQuotaConsumption`) əvvəl `quota_consumption` bölmələri üçün saxlama müddəti (günlərlə). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Könüllü aktivləşdirmə (standart olaraq SÖNDÜRÜLÜB): qiymətləndirmədən əvvəl aşağı kvotalı namizədləri çıxaran avtomatik yönləndirmənin sərt kvota kəsimini aktivləşdirir. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Könüllü aktivləşdirmə (standart olaraq SÖNDÜRÜLÜB): `auto/:` filtri heç bir qoşulu namizədlə uyğun gəlmədikdə, boş pul qaytarmaq əvəzinə tam (filtrsiz) pula geri keçən köhnə davranışı bərpa edir. Standart olaraq SÖNDÜRÜLMƏSİ `:free` ifadəsinin «yalnız pulsuz səviyyə» mənasına gəlməsini təmin edir. | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | `auto/*:chaos` yayım variantı üçün panel ölçüsü həddi (1–10 aralığına məhdudlaşdırılır) — bir sorğu ən çoxu bu sayda müxtəlif provayderlərə aid modelə paylanır. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(mühərrikin standart dəyəri)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Xaos yayımı emalçısına ötürülən minimum panel ölçüsü tənzimləməsi; təyin edilmədikdə mühərrikin standart dəyəri saxlanılır. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(mühərrikin standart dəyəri)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Bütün xaos panelinin paralel sorğuları üçün sərt vaxt limiti (ms); təyin edilmədikdə mühərrikin standart dəyəri saxlanılır. | | `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | grok-web həftəlik kvotasını əldə etmək üçün istifadə edilən Grok CLI `auth.json` faylının yolu; testlər və ya qeyri-standart CLI quraşdırması üçün dəyişdirilə bilər. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(təyin edilməyib)_ | `src/mitm/manager.ts` | AgentBridge yuxarı axın TLS bağlantıları üçün etibar edilən əlavə CA sertifikatı (PEM). | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Traffic Inspector halqavari buferində saxlanılan qeydə alınmış sorğuların maksimum sayı. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Kəsilmədən əvvəl qeydə alınan sorğu/cavab gövdəsinin maksimum ölçüsü (KB). | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Traffic Inspector HTTP proksisi üçün lokal port. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Sistem başladıqda inspektorun HTTP proksisini avtomatik işə salır. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(təyin edilməyib)_ | `src/lib/inspector/captureState.ts` | Qeydəalma üçün LLM son nöqtələri kimi qəbul edilən əlavə host adları (vergüllə ayrılmış). | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Qeydə alınmış trafikdə məxfi məlumatları (identifikasiya başlıqları / API açarları) maskalayır. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Sistem proksisi qoruyucusunun ƏS proksi parametrlərini avtomatik geri qaytarmasından əvvəl keçən dəqiqələrin sayı. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(avtomatik)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | İnspektora daxili trafik tutma məlumatlarının qəbulunu autentifikasiya edən token. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Playground müqayisə rejimində yan-yana sütunların maksimum sayı. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(təyin edilməyib)_ | `src/app/(dashboard)/dashboard/playground/` | Playground-dakı “sorğunu təkmilləşdir” əməliyyatı üçün standart model (təyin edilmədikdə aktiv modeldən istifadə olunur). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost sidecar proksisi üçün əsas qəza söndürmə açarı. `0` olaraq təyin edildikdə, marşrut `X-Bifrost-Killswitch` başlığı ilə 503 qaytarır və operator TS yoluna yönləndirilir. Sidecar-ı yenidən yerləşdirmədən deaktiv etmək üçün istifadə edin (1-ci səviyyəli marşrutlaşdırıcı insidenti, açar rotasiyası). | | `BIFROST_BASE_URL` | _(təyin edilməyib)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Təyin edildikdə, Bifrost sidecar proksi marşrutu `/v1/chat/completions` trafikini TS relay emalçısı əvəzinə bu Go şlüzünə yönləndirir. Təyin edilməyib → geri dönüşlə 503. Sondakı əyri xətt silinir. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | OmniRoute Bifrost sidecar-ının həyat dövrünü idarə edərkən nəzarət olunan daxili Bifrost xidmətinin bağlandığı port (`127.0.0.1:`). Standart olaraq `8080` istifadə olunur. | | `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Nəzarət olunan LLMLingua sıxılma xidmətinin bağlandığı port (`127.0.0.1:`). Standart olaraq `20135` istifadə olunur. | | `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Lokal LLMLingua HTTP sıxılma mikroxidməti demonu üçün baza URL-i. Standart olaraq `http://127.0.0.1:20135` istifadə olunur. | | `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | Nəzarət olunan LLMLingua sidecar-ının yüklədiyi Hugging Face model identifikatoru (alt prosesin mühitinə ötürülür). | | `BIFROST_API_KEY` | _(təyin edilməyib)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost şlüzü üçün API açarı (`Authorization: Bearer ...` kimi göndərilir). Təyin edilməyibsə, marşrut sorğuda etibarlı OmniRoute API açarının olmasını gözləyir; bu açar yalnız şlüz tərəfində autentifikasiya üçündür. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `true` olduqda Bifrost yan proses marşrutu cavabları TS axın icraçısı əvəzinə şlüz vasitəsilə SSE üzərindən axınla geri qaytarır. Şlüz vasitəsilə axınsız JSON cavablarını məcbur etmək üçün `0` təyin edin. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost şlüzünə proksi edilərkən hər sorğu üçün vaxt aşımı (ms). Vaxt aşımı baş verdikdə marşrut `X-Bifrost-Fallback` başlığı vasitəsilə TS retranslyasiya yolunu qaytarır. | | `OMNIROUTE_BIFROST_KEY` | _(təyin edilməyib)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `BIFROST_API_KEY` üçün alternativ ad (`OMNIROUTE_*` vasitəsilə mühit dəyişənlərini oxuyan skriptlər tərəfindən istifadə olunur). Hər ikisi təyin edildikdə `BIFROST_API_KEY` üstünlük təşkil edir. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `/api/v1/relay/chat/completions` üçün retranslyasiya arxa tərəfi: `ts \| bifrost \| auto`. `ts` = TypeScript retranslyasiyası (Bifrost konfiqurasiya edilmədikdə standart); `auto`, `BIFROST_BASE_URL` təyin edildikdə və `BIFROST_ENABLED` ≠ `0` olduqda Bifrost-u seçir, yan proses əlçatmaz olduqda isə avtomatik TS ehtiyat yolundan istifadə edir; `bifrost` Bifrost istifadəsini məcbur edir (sərt rejim, ehtiyat yol yoxdur). Autentifikasiya/sürət məhdudiyyəti/inyeksiya qoruması/icazə siyahısı həmişə əvvəlcə Next marşrutunda icra olunur. Cavablar `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason` başlıqlarını daşıyır. | | `RELAY_ROUTING_BACKEND` | _(təyin edilməyib)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `OMNIROUTE_RELAY_BACKEND` üçün qəbul edilən alternativ ad (eyni `ts \| bifrost \| auto` dəyərləri). Hər ikisi təyin edildikdə `OMNIROUTE_RELAY_BACKEND` üstünlük təşkil edir. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | `auto` rejimində Bifrost yan prosesinə keçid uğursuz olduqdan sonra retranslyasiyanın yan prosesi yenidən sınamasından əvvəlki gözləmə müddəti (ms); bu müddət ərzində sorğular birbaşa TS yoluna yönləndirilir, sonra yenidən yoxlama aparılır. `0` bunu deaktiv edir. Yalnız `OMNIROUTE_RELAY_BACKEND=auto` olduqda tətbiq edilir. | | `OMNIROUTE_TLS_CERT` | _(təyin edilməyib)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` xidmətini HTTPS üzərindən təqdim etmək üçün PEM TLS sertifikatının yolu (`--tls-cert` ilə ekvivalentdir). `OMNIROUTE_TLS_KEY` ilə birlikdə təyin edilməlidir; bundan sonra müstəqil server eyni dinləyicidə TLS-i sonlandırır (`wss://` dəyişmədən işləyir). Təyin edilməyib → adi HTTP. Sertifikat/açardan yalnız birinin verilməsi və ya yolun oxunmaz olması xəbərdarlığın qeydə alınmasına və HTTP rejimində qalmasına səbəb olur. | | `OMNIROUTE_TLS_KEY` | _(təyin edilməyib)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` HTTPS üçün PEM TLS məxfi açarının yolu (`--tls-key` ilə ekvivalentdir). `OMNIROUTE_TLS_CERT` ilə birlikdə təyin edilməlidir. `OMNIROUTE_TLS_CERT` bölməsinə baxın. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | `/api/local/*` marşrutları üçün əsas keçid. Təyin edilmədikdə və ya `0` olduqda bütün `/api/local/*` marşrutları istehsal mühitində 503 qaytarır. Redis başladıcı və oxşar bir kliklə yerli xidmət başladıcılarını aktivləşdirmək üçün geri dövrə interfeysindən istifadə etməyən yerləşdirmələrdə `1` olmalıdır. `isLocalOnlyPath()` marşrut qoruyucusu təsnifatı ilə əlavə qoruma təmin edir (`src/server/authz/routeGuard.ts` daxilində `LOCAL_ONLY_API_PREFIXES`). | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(təyin edilməyib)_ | `src/lib/security/localEndpoints.ts` | Geri dövrə interfeysində olmayan `/api/local/*` çağırıcıları (məsələn, masaüstü tətbiqi) üçün Bearer tokeni. Təyin edildikdə geri dövrə interfeysinə aid olmayan IP-lərdən gələn sorğular `Authorization: Bearer ` daşımalıdır. Geri dövrə interfeysindən istifadə etməyən yerləşdirmələrdə `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` olduqda tələb olunur. | | `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | 1 kliklə Redis işəsalıcı üçün konteyner adı (`omniroute redis up`). Həm CLI, həm də `RedisLauncherPanel` GUI-si tərəfindən istifadə olunur. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | 1 kliklə Redis işəsalıcı üçün host portu. Host artıq 6379 portundan istifadə edirsə, dəyəri artırın. Konteynerin daxili portu 6379 olaraq qalır. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | 1 kliklə Redis işəsalıcısının yayımlandığı host interfeysi. İşəsalıcı Redis-i parol OLMADAN başladır, buna görə `0.0.0.0` ünvanına bağlanmaq LAN şəbəkənizdəki hər bir hosta autentifikasiya olunmamış Redis girişi verir — bu əhatəni yalnız instansiyada özünüz də parol təyin etdikdə genişləndirin. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose-un Redis yan xidmətini yayımladığı host interfeysi (#9286). Compose Redis `requirepass` olmadan işləyir; tətbiq konteynerləri ona compose şəbəkəsi (`redis:6379`) üzərindən qoşulur — yayımlanan port yalnız host tərəfindəki alətlər üçündür. `0.0.0.0` autentifikasiya olunmamış Redis-i bütün LAN şəbəkəsinə açır. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Compose Redis yan xidməti üçün host portu. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | docker-compose-un tətbiqin öz idarəetmə paneli/API/canlı-WS portlarını yayımladığı host interfeysi (#12568). `.env.example` faylında standart olaraq `REQUIRE_API_KEY=false` təqdim edildiyinə görə, `0.0.0.0` anonim `/v1` LLM proksisini bütün LAN/WAN şəbəkəsinə açır — əhatəni yalnız `REQUIRE_API_KEY=true` etdikdən və ya öndəki əks proksi öz autentifikasiyasını tətbiq etdikdən sonra genişləndirin. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose-un Qdrant yaddaş yan xidmətini yayımladığı host interfeysi (#12578). `REDIS_BIND_HOST` ilə eyni LAN-a məruz qalma əsaslandırması tətbiq olunur. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose-un Bifrost marşrutlaşdırıcı yan xidmətini yayımladığı host interfeysi (#12578). `REDIS_BIND_HOST` ilə eyni LAN-a məruz qalma əsaslandırması tətbiq olunur. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Hər bir OmniRoute Redis açarına tətbiq olunan ad məkanı prefiksi (sürət məhdudlaşdırıcısı, autentifikasiya keşi, kvota yaddaşı, ilkin isinmə dövrəqırıcısı). Redis instansiyası digər tətbiqlərlə paylaşıldıqda açar toqquşmalarının qarşısını alır (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(təyin edilməyib — mexanizm deaktivdir)_ | `src/lib/api/internalServiceAuth.ts` | İdentikliyi qoruyan daxili REST keçidləri üçün paylaşılan məxfi dəyər (#9260): digər yerli OmniRoute marşrutlarını çağıran OmniRoute komponentləri ilkin çağıranın identikliyini qorumaq üçün onu `x-omniroute-internal-service-token` kimi göndərir. `timingSafeEqual` ilə müqayisə edilir. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(təyin edilməyib)_ | `src/lib/api/internalServiceAuth.ts` | Daxili xidmət tokeninin məxfi fayl variantı: boşluqları kəsilmiş məzmunu token olan fayla gedən yol. Yalnız daxili dəyişən təyin edilmədikdə istifadə olunur. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | İdarəetmə panelindəki provayderlər siyahısını OpenRouter-in həftəlik reytinq statistikası ilə zənginləşdirir (#9324). Defolt olaraq aktivdir; fon sorğusunu tamamilə ötürmək üçün `false` təyin edin (bloklamır və heç vaxt kritik xətaya səbəb olmur). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24 saat) | `src/lib/catalog/openrouterProviderStats.ts` | OpenRouter provayder statistikası anlıq görüntüsünün keşdə saxlanma müddəti (TTL), millisaniyə ilə. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | 1 kliklə Redis işəsalma vasitəsinin istifadə etdiyi Redis obrazı. Ehtiyac olduqda `redis:8-alpine` və ya özəl reyestr güzgüsü ilə əvəz edin. | | `QDRANT_HOST` | `qdrant` | _(istəyə bağlı klaster profili)_ | `--profile memory` aktiv olduqda Qdrant yan konteynerinin host adı. Defolt olaraq şəbəkədaxili qdrant xidmət adına yönəlir; xarici yerləşdirmə üçün dəyişdirin. Yalnız kodda (`src/lib/memory/vectorStore.ts:108`) `qdrantEnabled` dəyəri `true` olduqda istifadə edilir. | | `QDRANT_PORT` | `6333` | _(istəyə bağlı klaster profili)_ | Qdrant yan konteynerinin REST portu. | | `QDRANT_GRPC_PORT` | `6334` | _(istəyə bağlı klaster profili)_ | Qdrant yan konteynerinin gRPC portu. Axın əməliyyatları üçün REST əvəzinə gRPC-yə üstünlük verən müştəri kitabxanaları tərəfindən istifadə olunur. | | `QDRANT_API_KEY` | _(təyin edilməyib)_ | _(istəyə bağlı klaster profili)_ | Qdrant Cloud və ya autentifikasiya olunan lokal instansiya üçün ixtiyari API açarı. Boş olduqda → `api-key` başlığı göndərilmir. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(istəyə bağlı klaster profili)_ | OmniRoute-un söhbət yaddaşı yerləşdirmələri üçün kolleksiya adı. İlk işəsalma zamanı `QDRANT_VECTOR_SIZE` ölçüsü ilə yaradılır. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(istəyə bağlı klaster profili)_ | Qdrant kolleksiyasının metadatasında qeyd edilən defolt yerləşdirmə modeli adı. Faktiki yerləşdirmələr OmniRoute parametrlərindəki `embeddingModel` sahəsinin göstərdiyi provayder tərəfindən yaradılır. | | `QDRANT_VECTOR_SIZE` | `1536` | _(seçimlə aktivləşdirilən klaster profili)_ | Embeddinq vektorunun ölçüsü. Embeddinq üçün istifadə etdiyiniz modelə uyğun olmalıdır (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(seçimlə aktivləşdirilən klaster profili)_ | HNSW indeksinin qurulma zamanı dəqiqliyi. Daha yüksək dəyər = daha yavaş qurulma, daha sürətli axtarış. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Operator tərəfindən konfiqurasiya edilə bilən hesab rotasiyası üçün əsas keçid. `false` olduqda, aşağıdakı `OMNIROUTE_ROTATE_*` siniflərinin heç biri ehtiyat hesaba keçidi işə salmır (əsas keçidin söndürülməsi standart olaraq aktiv olan 429/500/502 siniflərini də bloklayır). Nəzarət edən ön tərəfə (məs., VibeProxy masaüstü tətbiqinə) öz rotasiya qaydalarını arxa tərəfin ehtiyat hesaba keçid mexanizmində əks etdirməyə imkan verir. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Yuxarı axın açıq sıfırlama göstərişi vermədikdə sorğu tezliyi məhdudlaşdırılmış hesaba tətbiq edilən gözləmə müddəti (saniyə). `0` = sabit əvəzləmə dəyəri əvəzinə mexanizmin standart gözləmə müddətindən istifadə etmək. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Ön tərəfdəki «sıfırlama vaxtı olmadan sorğu tezliyi məhdudlaşdırılmış kimi işarələmə» seçiminin əksi. | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | `429` xətaları üçün status üzrə ehtiyat keçidin aktivləşdirilməsi. `false` olduqda (`OMNIROUTE_ROTATION_ENABLED=true` olduğu halda), `429` artıq hesab rotasiyasını işə salmır və əvəzində müştəriyə qaytarılır. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesab rotasiya edilməzdən əvvəl `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` ərzində tələb olunan `429` xətalarının sayı. `1` (standart) əvvəlki davranışı qoruyaraq dərhal rotasiya edir. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `429` xətalarının `OMNIROUTE_ROTATE_429_THRESHOLD` həddinə çatmaq üçün sayıldığı sürüşən zaman pəncərəsi (saniyə). | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | `5xx` server xətaları üçün status üzrə ehtiyat keçidin aktivləşdirilməsi (öz sinfi olan `502` istisna olmaqla). `false` olduqda, bu xətalar artıq hesab rotasiyasını işə salmır. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesab rotasiya edilməzdən əvvəl `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` ərzində tələb olunan `5xx` xətalarının sayı. `1` (standart) dərhal rotasiya edir. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `5xx` xətalarının `OMNIROUTE_ROTATE_500_THRESHOLD` həddinə çatmaq üçün hesablandığı sürüşən zaman pəncərəsi (saniyə ilə). | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | `502` (yanlış şlüz) xətaları üçün statusa görə ehtiyat keçidini aktivləşdirir. `false` olduqda, `502` xətaları artıq hesab rotasiyasını işə salmır. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesab rotasiya edilməzdən əvvəl `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` ərzində tələb olunan `502` xətalarının sayı. `1` (standart) dərhal rotasiya edir. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `502` xətalarının `OMNIROUTE_ROTATE_502_THRESHOLD` həddinə çatmaq üçün hesablandığı sürüşən zaman pəncərəsi (saniyə ilə). | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Könüllü aktivləşdirmə (standart olaraq SÖNÜLÜDÜR): `true` olduqda, adi `400` (yanlış sorğu) da hesab rotasiyasını işə salır. Bu, yalnız əlavə davranışdır — bu bayraqdan asılı olmayaraq, sürət limiti/kvota mətni daşıyan `400` xətası zamanı mühərrikin mövcud ehtiyat keçidi davranışını heç vaxt bloklamır. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesab rotasiya edilməzdən əvvəl `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` ərzində tələb olunan `400` xətalarının sayı (yalnız `OMNIROUTE_ROTATE_ON_400=true` olduqda nəzərə alınır). | | `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `400` xətalarının `OMNIROUTE_ROTATE_400_THRESHOLD` həddinə çatmaq üçün hesablandığı sürüşən zaman pəncərəsi (saniyə ilə). | ### Claude İlkin Hazırlıq Planlaşdırıcısı Anthropic OAuth bağlantıları üçün cron ilə idarə olunan, könüllü aktivləşdirilən ilkin hazırlıq mexanizmi; bunun sayəsində 5 saatlıq sürət limiti pəncərəsi ilk real sorğu əvəzinə cüzi planlaşdırılmış sorğu ilə açılır (#8848). `OMNIROUTE_WARMUP_ENABLED` doğru dəyərli olmadıqda **və** bağlantı `settings.claudeWarmup.connections` daxilində işarələnmədikdə planlaşdırıcı sönülü qalır; boş bağlantı siyahısı env dəyişəni aktiv olsa belə heç bir bağlantının ilkin hazırlıqdan keçirilməməsi deməkdir. | Dəyişən | İlkin dəyər | Mənbə faylı | Təsvir | | ------------------------------ | -------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_WARMUP_ENABLED` | _(təyin edilməyib → deaktivdir)_ | `src/lib/warmupScheduler.ts` | İsinmə planlaşdırıcısı üçün əsas keçid. `1`/`true`/`yes`/`on` dəyərlərini qəbul edir (böyük-kiçik hərfə həssas deyil, kənar boşluqlar silinir). İstənilən digər dəyər və ya dəyərin təyin edilməməsi planlaşdırıcını deaktiv saxlayır. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | İsinmə işə salınması üçün beş sahəli cron ifadəsi; host saatından asılı olmayaraq `America/Los_Angeles` (Anthropic-in sıfırlama saat qurşağı) üzrə hesablanır. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Hər işə salınmada paralel olaraq neçə bağlantının isidiləcəyini müəyyən edir. `1`-`10` aralığı ilə məhdudlaşdırılır; ədədi olmayan dəyər üçün `3` istifadə edilir. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | İsinmə sorğusu üçün istifadə edilən model. Yalnız ilkin model planınızda mövcud olmadıqda dəyişdirin; pəncərəni aça bilən ən ucuz modeli seçin. | ### Brauzer Girişi üçün VNC Sessiyaları və Data-Dir Ləqəbi İnteraktiv brauzer girişi etimadnamələrinin əldə edilməsi (`/api/vnc-session`) üçün konteynerləşdirilmiş Chromium+VNC, həmçinin köhnə `DATA_DIR` ləqəbi. Hamısı seçimlidir — VNC-nin ilkin dəyərləri paketə daxil edilmiş `omniroute-vnc-chromium:local` təsvirini hədəfləyir və yalnız xüsusi konteyner təsviri, portlar və ya həyat dövrünün sazlanması üçün dəyişdirilir. | Dəyişən | İlkin dəyər | Mənbə faylı | Təsvir | | ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Chromium+VNC giriş konteyneri üçün Docker təsvir teqi. `docker/vnc-browser/chromium` yaradın və ya bunu xüsusi təsvirə yönəldin. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC konteynerini işə salmaq üçün istifadə edilən konteyner icra mühiti binar faylı (məsələn, `podman` olaraq təyin edin). | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Konteyner daxilində əlçatan edilən VNC/noVNC portu. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Konteyner daxilindəki Chrome DevTools Protocol portu. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Konteyner daxilindəki Chromium profil qovluğunun yolu. | | `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Saxlanılan brauzer girişi profillərinin yerləşdiyi host qovluğu. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 dəq) | `src/lib/vncSession/manifest.ts` | Qeyri-aktiv VNC sessiyası dayandırılmamışdan əvvəlki boşdayanma vaxt limiti (ms). | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 dəq) | `src/lib/vncSession/manifest.ts` | Bir VNC sessiyasının istifadə müddəti üçün sərt limit (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Paralel VNC sessiyalarının maksimum sayı. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Konteynerləşdirilmiş brauzerin CDP üçün hazır olmasını gözləmə vaxt limiti (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Giriş tamamlandıqdan sonra əldə edilmiş sessiyanın/kukilərin toplanması üçün vaxt limiti (ms). | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Konteynerləşdirilmiş Chromium-a ötürülən əlavə komanda sətri bayraqları. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | VNC giriş konteynerinin ilkin körpü əvəzinə qoşulduğu xüsusi Docker şəbəkəsi (#12571); beləliklə, eyni səviyyəli konteynerlər onun CDP körpü portuna çata bilmir. | | `VIBEPROXY_DATA_DIR` | _(təyin edilməyib)_ | `open-sse/services/notionThreadSessions.ts` | `DATA_DIR` üçün **köhnə ləqəb**; yalnız həm `DATA_DIR`, həm də `OMNIROUTE_DATA_DIR` təyin edilmədikdə yoxlanılır. Notion veb-mövzu sessiyası keşinin yerini müəyyən edir (`/notion-web-thread-sessions.json`). | --- ## 26. Test və E2E infrastrukturu `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`, `scripts/dev/run-ecosystem-tests.mjs` və `scripts/build/uninstall.mjs` tərəfindən istifadə olunur. İstehsal mühitlərində aşağıdakı bütün dəyərləri təyin edilməmiş saxlayın. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | -------------------------------------- | --------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Playwright icraedicisi üçün E2E ilkin yükləmə rejimi (`auth`, `fresh`, `reuse`). | | `OMNIROUTE_E2E_PASSWORD` | `INITIAL_PASSWORD` dəyərinə keçir | `scripts/dev/run-next-playwright.mjs` | Playwright mühitinə daxil edilən administrator parolu. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright icraları zamanı lokal sağlamlıq yoxlaması sorğusunu deaktiv edir. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Testlər zamanı OAuth tokeninin sağlamlıq yoxlaması dövrəsini deaktiv edir. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(təyin edilməyib)_ | `src/lib/tokenHealthCheck.ts` | Proaktiv token yeniləmə yoxlamasından çıxarılan, vergüllə ayrılmış provayderlər (məsələn, `codex,openai`). Sağlamlıq yoxlamasını tamamilə deaktiv etməyə məqsədli alternativdir — qısa TTL-li provayderlər yenilənməyə davam edir, kaskad provayderlər isə yalnız reaktiv qalır. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright stdout çıxışındakı sağlamlıq yoxlaması ilə bağlı lazımsız qeydləri susdurur. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Playwright başlamazdan əvvəl Next.js istehsal yığımını ötürür (CI optimallaşdırması). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | OmniRoute silmə qarmağını ötürür (CI tərəfindən `node_modules` qovluğunu toxunulmaz saxlamaq üçün istifadə olunur). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Ekosistem/protokol testlərini icra etməzdən əvvəl serverin sağlam vəziyyətə gəlməsi üçün gözləmə müddəti (ms). | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | Electron tüstü testi alətinin paketlənmiş tətbiqin xidmət göstərməsini gözlədiyi URL. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Tüstü testi alətinin imtina etməsindən əvvəl ümumi taymaut müddəti (ms). | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Səhifə yükləndikdən sonrakı sabitləşmə müddəti (ms). | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(avtomatik)_ | `scripts/dev/smoke-electron-packaged.mjs` | Paketlənmiş Electron icra faylına birbaşa yol. | | `ELECTRON_SMOKE_DATA_DIR` | _(tmpdir)_ | `scripts/dev/smoke-electron-packaged.mjs` | Electron tüstü testinin icrası üçün məlumat qovluğu. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | İcradan sonra tüstü testi məlumat qovluğunu saxlamaq üçün `1` təyin edin. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | İcra zamanı Electron jurnallarını stdout çıxışına yayımlamaq üçün `1` təyin edin. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: eyni məlumat qovluğundan istifadə edərək yenidən başladır və ikinci başlanğıcda yerli SQLite drayverinin seçildiyini təsdiqləyir. | | `CLI_DEVIN_BIN` | _(PATH axtarışı)_ | `open-sse/executors/devin-cli.ts` | Devin CLI binar faylının yolunu əvəz edir. | ### Sənədlərin tərcümə konveyeri `scripts/i18n/run-translation.mjs` tərəfindən istifadə olunur (`npm run i18n:run` əmri). Beş dəyişənin hamısı standart olaraq təyin edilməyib — onları yalnız sənəd tərcüməçisini işə sala bilməli olan maşınlarda `.env` faylında təyin edin. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ----------------------------------- | ------------------- | ---------------------------------- | ------------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(təyin edilməyib)_ | `scripts/i18n/run-translation.mjs` | Tərcümə serveri üçün OpenAI ilə uyğun baza URL-i. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(təyin edilməyib)_ | `scripts/i18n/run-translation.mjs` | Tərcümə serveri üçün Bearer tokeni (heç vaxt jurnala yazılmır). | | `OMNIROUTE_TRANSLATION_MODEL` | _(təyin edilməyib)_ | `scripts/i18n/run-translation.mjs` | Model identifikatoru, məsələn, `gpt-4o-mini` və ya `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Hər sorğu üçün millisaniyə ilə taymaut. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Bir neçə fayl / lokalizasiya üzrə işləyərkən paralel tərcümə sorğularının sayı. | --- ## 27. Radar Lenti (Öz Serverində Yerləşdirmə) RADAR_ENABLED funksiya bayrağı ilə idarə olunan əlavə modul (standart olaraq söndürülüb — bu, mühit dəyişəni deyil, Settings/DB vasitəsilə dəyişdirilən funksiya bayrağıdır; bax: [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)). Aşağıdakı ilk dörd dəyişən öz serverində yerləşdirilən və ya fork edilmiş lent, eləcə də dəstəkçi açarı axınları üçün istəyə bağlı əvəzetmələrdir. Beşinci dəyişən olan `RADAR_ADMIN_URL`, sahibin şəxsi əməliyyatlar panelinə yönləndirən, ayrıca və standart dəyəri olmayan keçiddir. Modulun tam sənədləri və onun [başdan sona aktivləşdirmə və istiqamətləndirilən quraşdırma ardıcıllığı](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup) üçün [docs/frameworks/RADAR.md](../frameworks/RADAR.md) sənədinə baxın. Ümumi Ana səhifə/Dəyişiklik jurnalı elan oxuyucusu mühit dəyişəni ilə konfiqurasiya edilmir və RADAR_ENABLED funksiya bayrağından asılı deyil. O, yalnız GET vasitəsilə `src/shared/utils/releaseNotes.ts` daxilində elan edilmiş ictimai repozitoriyanın `news.json` URL-ni oxuyur; rəddetmə ID-ləri brauzerin lokal yaddaşında qalır. | Dəyişən | Standart | Mənbə faylı | Təsvir | | ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | Ayrı-ayrılıqda imzalanmış kataloq, yönləndirmələr, dəstəkçi təklifləri və Intel lentləri tərəfindən paylaşılan baza URL-si. Öz serverində yerləşdirilən və ya fork edilmiş xidmətə yönəltmək üçün əvəz edin. | | `RADAR_FEED_PUBKEY` | _(sabitlənmiş standart açar)_ | `src/lib/radar/pinnedKeys.ts` | Fərdi lentdən gələn lent imzalarını yoxlamaq üçün istifadə olunan Ed25519 açıq açarı (base64-DER SPKI və ya PEM). | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | İdarəetmə panelindəki «Mən töhfəçiyəm» düyməsinin açdığı URL (GitHub OAuth dəstəkçi açarını əldəetmə axını). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | İdarəetmə panelindəki «Layihəni dəstəklə» düyməsinin açdığı URL (ödəniş/planlar səhifəsi). | | `RADAR_ADMIN_URL` | _(təyin edilməyib)_ | `src/lib/radar/links.ts` | Yalnız sahib üçün nəzərdə tutulmuş şəxsi əməliyyatlar panelinə keçid. HTTP geriyə dövrəli SSH yönləndirməsi istisna olmaqla HTTPS tələb olunur; təyin edilməmiş və ya etibarsız dəyərlər naviqasiya elementi yaratmır. | --- ## Audit: Silinmiş / İstifadəsiz Dəyişənlər Aşağıdakı dəyişənlər `.env.example` faylının əvvəlki versiyalarında mövcud idi, lakin cari kod bazasında **heç bir icra vaxtı istinadı yoxdur**. Onlar silinib: | Dəyişən | Səbəb | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `STORAGE_DRIVER=sqlite` | Heç bir mənbə faylı tərəfindən oxunmur. SQLite dəstəklənən yeganə drayverdir — seçimə ehtiyac yoxdur. | | `INSTANCE_NAME=omniroute` | Köhnə sənədlərdə/env şablonlarında mövcuddur, lakin icra zamanı istifadə edilmir. Gələcəkdə çoxsaylı instansiya funksiyasında geri qayıda bilər. | | `SQLITE_MAX_SIZE_MB=2048` | Mənbə kodunda istinad edilmir. Verilənlər bazasının ölçüsü süni şəkildə məhdudlaşdırılmır. | | `SQLITE_CLEAN_LEGACY_FILES=true` | Mənbə kodunda istinad edilmir. Köhnə faylların təmizlənməsi, ehtimal ki, ləğv edilib. | | `CLI_ROO_BIN` | `src/shared/services/cliRuntime.ts` daxilində qeydiyyata alınmayıb. | | `CLI_KIMI_CODING_BIN` | `src/shared/services/cliRuntime.ts` daxilində qeydiyyata alınmayıb (Kimi Coding CLI binar faylından deyil, OAuth-dan istifadə edir). | | `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Mənbə kodunun heç bir yerində istinad edilmir. | | `CEREBRAS_API_KEY` / `COHERE_API_KEY` / `FIREWORKS_API_KEY` / `GROQ_API_KEY` / `MISTRAL_API_KEY` / `NEBIUS_API_KEY` / `PERPLEXITY_API_KEY` / `TOGETHER_API_KEY` / `XAI_API_KEY` | v3.8.0 versiyasında silinib. İcra mühiti artıq bu env dəyişənlərini oxumur — giriş məlumatları İdarəetmə panelindən / `data/provider-credentials.json` faylından / şifrələnmiş verilənlər bazasından əldə edilir. | | `CURSOR_PROTOBUF_DEBUG` | v3.8.0 versiyasında silinib. Cursor icraçısı `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` dəyişənlərindən istifadə edir (§22-yə baxın). | | `CLI_COMPAT_KIRO` | v3.8.0 versiyasında silinib. Kiro `CLI_COMPAT_OMITTED_PROVIDER_IDS` siyahısındadır — onun keçidinin heç bir təsiri yoxdur. | | `QIANFAN_API_KEY` | v3.8.0 versiyasında digər istifadə olunmayan provayder API açarı şablonları ilə birlikdə silinib. | ### Standart Dəyər Düzəlişləri | Dəyişən | Köhnə `.env.example` Dəyəri | Koddakı Faktiki Standart Dəyər | Düzəliş | | ------------------------- | --------------------------- | ------------------------------ | ----------------------------------------------------------------------- | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Yanıldıcı dəyər silindi; standart dəyərin `7` olduğu sənədləşdirildi | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Yanıldıcı dəyər silindi; standart dəyərin `7` olduğu sənədləşdirildi | ### OpenCode konfiqurasiyasının yenidən yaradılması (xüsusi alətlər) İşləyən OmniRoute instansiyasından əldə edilən dəqiq `limit.context` və `limit.output` dəyərləri ilə `opencode.json` faylını yenidən yaratmaq üçün `scripts/ad-hoc/regen-opencode-config.ts` tərəfindən istifadə olunur. Bunların heç biri normal iş üçün tələb olunmur — skript yalnız tərtibatçılar üçün nəzərdə tutulmuş alətdir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------ | ------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | `/v1/models` sorğusu üçün OmniRoute instansiyasının əsas URL-i. | | `OMNIROUTE_KEY` | _(təyin edilməyib)_ | `scripts/ad-hoc/regen-opencode-config.ts` | OmniRoute `/v1/models` son nöqtəsində autentifikasiya üçün API açarı. Təyin edilmədikdə `OPENCODE_API_KEY` istifadə olunur. | | `OPENCODE_API_KEY` | _(təyin edilməyib)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Yenidən yaradılan `opencode.json` faylına yazılan OpenCode tipli API açarı (`sk-...`). Təyin edilmədikdə `OMNIROUTE_KEY` istifadə olunur. | ### Sıxılmanın oflayn qiymətləndirmə infrastrukturu (xüsusi alətlər) Oflayn sıxılma qiymətləndirməsi CLI-si olan `scripts/compression-eval/index.ts` tərəfindən istifadə edilir. Normal iş üçün tələb olunmur — yalnız tərtibatçı alətləridir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ---------------------------- | -------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (boş) | `scripts/compression-eval/index.ts` | Oflayn sıxılma qiymətləndirməsi CLI-sinin istifadə etdiyi provayder üçün operator tərəfindən təqdim olunan JSON giriş məlumatları (`JSON.parse` ilə təhlil edilir). Sınaq icrası üçün təyin etməyin. | ### VNC brauzer sessiyaları Brauzer avtomatlaşdırması provayderləri üçün Docker əsaslı başsız Chromium sessiyalarını konfiqurasiya etmək məqsədilə `src/lib/vncSession/manifest.ts` tərəfindən istifadə edilir. Hamısı ixtiyaridir — standart dəyərlər aşağıda göstərilib. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------- | ------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------- | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC konteynerlərini işə salmaq üçün istifadə edilən Docker binar faylının yolu. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | VNC Chromium konteyneri üçün Docker təsviri. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(daxili flaq­lar)_ | `src/lib/vncSession/manifest.ts` | Konteyner daxilində brauzerə ötürülən əlavə Chromium CLI arqumentləri. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Konteyner daxilindəki VNC portu. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Konteyner daxilindəki Chrome DevTools Protocol portu. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Konteyner daxilindəki profil kataloqu. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(təyin edilməyib)_ | `src/lib/vncSession/manifest.ts` | Davamlı brauzer profilləri üçün host tərəfindəki kataloq. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | VNC sessiyasının yığışdırılmasından əvvəlki boşdayanma vaxtı limiti (ms). | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Maksimum sessiya müddəti (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Eyni vaxtda maksimum VNC sessiyalarının sayı. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Brauzerin hazır olması üçün vaxt limiti (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Yığışdırma/təmizləmə vaxt limiti (ms). | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Konteynerin qoşulduğu, standart körpüdən ayrı olan xüsusi Docker şəbəkəsi (#12571). | | `VIBEPROXY_DATA_DIR` | _(təyin edilməyib)_ | `open-sse/services/notionThreadSessions.ts` | Notion mövzu sessiyalarının davamlı saxlanması üçün kataloq. | ### Daxili xidmət autentifikasiyası | Dəyişən | Standart dəyər | Təsvir | | --------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | İdarəetmə müstəvisində xidmətlərarası autentifikasiya üçün birbaşa token. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Daxili xidmət tokenini ehtiva edən faylın yolu (konteynerlərdə üstünlük verilir; birbaşa dəyişənin dəyərini əvəz edir). | ### OpenRouter provayder statistikası | Dəyişən | Standart dəyər | Təsvir | | ----------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Kataloqu zənginləşdirmək üçün hər provayder üzrə OpenRouter statistikasının alınmasını ötürmək məqsədilə `false` olaraq təyin edin. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | Alınmış OpenRouter provayder statistikası üçün keşin etibarlılıq müddəti (ms). | ### Daxili Redis əlaqələndirməsi | Dəyişən | Standart dəyər | Təsvir | | --------------------------- | -------------- | -------------------------------------------------------------------- | | `REDIS_BIND_HOST` | `127.0.0.1` | Daxili Redis xidməti üçün bağlanma ünvanı. | | `REDIS_PORT` | `6379` | Daxili Redis xidməti üçün port. | | `OMNIROUTE_REDIS_BIND_HOST` | – | Daxili Redis bağlanma ünvanı üçün OmniRoute əhatə dairəli üstəyazma. | --- ## 24. v3.8.50 buraxılışına əlavələr Bu parametrlər əvvəlki mühit müqaviləsi görüntüsündən sonra təqdim edilib. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Yenidən cəhd edilə bilən `503` cavabından əvvəl resurs tutumlu söhbət qəbulu slotunu gözləmək üçün maksimum müddət; qısa və məhdud gözləmə agent sıçrayışlarını dərhal `503` qaytarmaq əvəzinə ardıcıllığa salır. `0` dərhal rəddetməni bərpa edir. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Qəbul gözləməsi üçün növbəyə alınmış bayt büdcəsi: gözləmənin yığın yaddaş istifadəsini artıra bilməməsi üçün proses miqyasında saxlanılan buferlənmiş gövdə baytlarının ümumi həcmini məhdudlaşdırır (#4380). Büdcəni aşan gözləmələr dərhal yenidən cəhd edilə bilən `503` cavabı alır. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | #10110-dan etibarən köhnəlmiş və heç bir əməliyyat yerinə yetirməyən parametrdir: sessiya üzrə qəbul zolaqları vahid proses miqyaslı büdcənin xeyrinə silinib. Konfiqurasiya uyğunluğu üçün qəbul edilir, lakin nəzərə alınmır. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | #10110-dan etibarən köhnəlmiş və heç bir əməliyyat yerinə yetirməyən parametrdir: sessiya üzrə qəbul zolaqları vahid proses miqyaslı büdcənin xeyrinə silinib. Konfiqurasiya uyğunluğu üçün qəbul edilir, lakin nəzərə alınmır. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (söndürülüb) | `open-sse/services/admission/runtime.ts` | Adaptiv icra vaxtı virtual qəbul zolaqları (#9654): icarəçi üzrə adaptiv keçid üçün əsas açar (sistem 2). Yuxarıdakı köhnəlmiş bağlantı üzrə zolaq dəyişənlərindən fərqlidir (TTL_MS / MAX_SESSIONS, #10110-dan etibarən heç bir əməliyyat yerinə yetirmir). Eyni adlı idarə paneli funksiya bayrağıdır; mühit dəyişəni idarə panelindəki əvəzləmədən üstündür; yenidən başlatma tələb edir. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Növbəyə alınmış icranı başlatmazdan əvvəl `run-now` çağırışının icrada olan tapşırığı nə qədər gözləyəcəyini məhdudlaşdırır. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | aktivdir | `open-sse/services/adobeFireflySession.ts` | Hesab üzrə Chrome CDP sessiyaları vasitəsilə IMS və brauzer risk vəziyyətini aktual saxlayır; söndürmək üçün `0` təyin edin. | | `ADOBE_FIREFLY_SESSION_DISK` | aktivdir | `open-sse/services/adobeFireflySession.ts` | Bərpa edilmiş Adobe sessiyalarını `DATA_DIR` altında daimi saxlayır; yalnız yaddaşda saxlamaq üçün `0` təyin edin. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly generasiya göndərişləri arasındakı minimum interval. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Hər üçüncü uğurlu Adobe göndərişindən sonra əlavə fasilə müddəti. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Yalnız sazlama üçün həqiqi başsız rejim; Adobe colligo adətən nəticədə yaranan risk sessiyasını rədd edir. | | `CHROME_PATH` | avtomatik aşkarlama | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Platformanın avtomatik aşkarlaması kifayət etmədikdə brauzer vasitəsilə işləyən icraçılar tərəfindən istifadə olunan Chrome icra faylına ixtiyari mütləq yol. | | `TELEGRAM_BOT_TOKEN` | _(təyin edilməyib)_ | `src/lib/telegram/config.ts` | Daxil olan webhook-u aktivləşdirən və Mini App `initData` məlumatını imzalayan BotFather tokeni. | | `TELEGRAM_WEBHOOK_SECRET` | _(təyin edilməyib)_ | `src/lib/telegram/config.ts` | `setWebhook` vasitəsilə qeydiyyata alınan və hər webhook çatdırılmasında `X-Telegram-Bot-Api-Secret-Token` başlığı ilə yoxlanılan ortaq məxfi dəyər. Webhook yolu üçün tələb olunur; təyin edilməməsi webhook çatdırılmalarının 503 ilə rədd olunması deməkdir. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Telegram söhbət cavabları üçün istifadə olunan model. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Proksilər və ya öz serverinizdə yerləşdirilən Bot API serverləri üçün Bot API əsas URL əvəzləməsi. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Xaricə yönələn Bot API çağırışları üçün millisaniyə ilə vaxt limiti. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (aktivdir) | `scripts/build/optionalPackStaging.mjs` | Electron müstəqil ağacı üçün ixtiyari ML/brauzer paketlərini hazırlayarkən `.tar.gz` tarball fayllarının yaradılmasını keçmək üçün `0` təyin edin (paket qovluqları və `optional-packs.index.json` yenə də yaradılır). Artefakt yükləməsinin ölçüsünü azaltmaq üçün masaüstü buraxılış iş axını tərəfindən istifadə olunur. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | xAI abunəlik təsvir marşrutlarının qeydiyyatını aktivləşdirir; API açarı ilə işləyən təsvir yolunun dəyişməz qalması üçün standart olaraq söndürülüb. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | `429` cavabında istifadə edilə bilən `Retry-After` ipucu olmadıqda hər açar üzrə millisaniyə ilə gözləmə müddəti. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | aktivdir | `open-sse/services/estimatorCalibration.ts` | Yaddaşdaxili qiymətləndirici kalibrləmə qeydiyyatını və tətbiqini söndürmək üçün `off`, `0` və ya `false` təyin edin. | | `NEXT_MANUAL_SIG_HANDLE` | _(daxili)_ | `scripts/dev/standalone-server-ws.mjs` | Müstəqil server üçün daxili siqnal emalçısı əvəzləməsi; adətən operatorlar tərəfindən konfiqurasiya edilmək əvəzinə işəsalıcı tərəfindən təyin edilir və təmizlənir. | ### ChatGPT Web (Codex) Başsız brauzer və xaricə yönələn alət tuneli üçün qlobal standart dəyərlər. İdarə panelində təyin edilmiş bağlantı dəyərləri üstünlük təşkil edir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(avtomatik aşkarlama)_ | `open-sse/executors/chatgpt-web-codex.ts` | npm, systemd və PM2 ilə işləmək üçün açıq şəkildə göstərilən Chrome/Chromium yolu. | | `CHROME_PATH` | _(avtomatik aşkarlama)_ | `open-sse/executors/chatgpt-web-codex.ts` | Açıq şəkildə göstərilən Chrome/Chromium yolu üçün ortaq ehtiyat variantı. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(təyin edilməyib)_ | `open-sse/executors/chatgpt-web-codex.ts` | Daxili CDP son nöqtəsi; Docker `9223` portundakı sidecar-dan istifadə edir. | | `CDP_PROXY_TOKEN` | _(təyin edilməyib)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Təyin edilibsə, CDP proksi sidecar-ına göndərilən hər sorğu bu dəyəri `X-Omni-Cdp-Token` başlığında ötürməlidir (#13679). Dəyər olmadıqda proksi autentifikasiya olmadan yönləndirir — bu halda yalnız `chatgpt-web-codex-net` Compose şəbəkəsinin şəbəkə izolyasiyası qoruma təmin edir. `openssl rand -hex 32` ilə yaradın. | | `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(təyin edilməyib)_ | `open-sse/executors/chatgpt-web-codex.ts` | Lokal Codex alət raundları üçün qlobal OpenAI tunel ID-si. | | `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(təyin edilməyib)_ | `open-sse/executors/chatgpt-web-codex.ts` | Qlobal tunel icra mühiti açarı; heç vaxt jurnallara yazmayın. | | `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | MCP körpüsü üçün yeni yaradılmış ChatGPT fərdi konnektorunun dəqiq adı. | | `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Brauzer, broker və tunel vəziyyəti üçün ayrılmış qovluq. | | `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | `1` olduqda hər yoxlama nöqtəsində brauzer diaqnostika şəkilləri çəkilir. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(təyin edilməyib)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Daimi launcher binar faylına aparan ixtiyari mütləq yol. | | `CODEX_CHATGPT_WEB_BUN` | _(avtomatik aşkarlama)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Bun icra mühiti binar faylına aparan ixtiyari mütləq yol. | | `CODEX_WEB_GPT_BUN` | _(təyin edilməyib)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | `CODEX_CHATGPT_WEB_BUN` üçün köhnə ehtiyat variantı; yeni quraşdırmalar kanonik addan istifadə edir. | --- ## OmniConductor körpüsü OmniConductor mərkəzindəki tapşırıqları lokal A2A TaskManager-ə (`src/lib/conductor/`) əks etdirən uzunömürlü SSE istehlakçısı. İstəyə bağlıdır — körpü yalnız `CONDUCTOR_HUB_URL` təyin edildikdə işə düşür. Yalnız server tərəfindədir: mərkəz tokeni heç vaxt brauzerə ötürülməməlidir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ------------------------------ | ----------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(boş)_ | `src/lib/conductor/boot.ts` | OmniConductor mərkəzinin əsas URL-i (məs., `http://127.0.0.1:7910`). Təyin edilməyib = körpü deaktivdir. | | `CONDUCTOR_HUB_TOKEN` | _(boş)_ | `src/lib/conductor/boot.ts` | SSE axını üçün mərkəz giriş məlumatı — mərkəzdə `spokesperson` növlü tərəf yaradın (`POST /v1/peers`, admin). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(boş)_ | `src/lib/conductor/hubProxy.ts` | Daxil olan A2A→mərkəz tapşırıq həvaləsi üçün giriş məlumatı (`POST /v1/tasks`); təyin edilmədikdə `CONDUCTOR_HUB_TOKEN` istifadə olunur. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | İdarəetmə panelinin çat proksisinin (`/api/conductor/ask`) arxasındakı spokesperson (Faro) xidmətinin əsas URL-i. | ### Kvotadan xəbərdar planlaşdırma Sorğudan əvvəl token büdcəsinin yoxlanılması üçün `open-sse/services/combo.ts` və `src/lib/quota/quotaScheduler.ts` tərəfindən istifadə olunur. İstəyə bağlıdır — təyin edilmədikdə standart marşrutlaşdırma davranışı dəyişmir. | Dəyişən | Standart dəyər | Mənbə faylı | Təsvir | | ---------------------------------- | -------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | `1` olduqda, hər pəncərə üzrə token büdcəsi (`rateLimitOverrides.tpm`, `provider_quota_state` cədvəli) göndərişdən əvvəl təxmini sorğu xərcini qarşılaya bilməyən bağlantıları ötürür. Büdcə konfiqurasiya edilməyibsə, yoxlamaya baxmayaraq davam edir. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(aktiv)_ | `open-sse/services/estimatorCalibration.ts` | Kontekst qoruyucusunun token qiymətləndiricisinin əks-əlaqə əsasında kalibrlənməsi (#14931): `usage.prompt_tokens` / qiymətləndirmə nisbətinin hər (provayder, model, alətlərin mövcudluğu) üzrə EMA-sı, 0.15–2.0 aralığı ilə məhdudlaşdırılır və yalnız yaddaşda saxlanılır. `off`, `0` və ya `false` qeydəalmanı və tətbiqi deaktiv edir. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | `xai-oauth` (`xao`) və `grok-cli` təsvir marşrutlarını qeydiyyatdan keçirir. Eyni adlı idarəetmə paneli funksiya bayrağıdır; verilənlər bazasındakı əvəzləmə bu dəyərdən üstündür. |