# Environment Variables Reference (Malti) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/docs/reference/ENVIRONMENT.md) · 🇦🇿 [az](../../../az/docs/reference/ENVIRONMENT.md) · 🇧🇬 [bg](../../../bg/docs/reference/ENVIRONMENT.md) · 🇧🇩 [bn](../../../bn/docs/reference/ENVIRONMENT.md) · 🇧🇦 [bs](../../../bs/docs/reference/ENVIRONMENT.md) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇲 [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) --- > Referenza kompluta għal kull varjabbli tal-ambjent rikonoxxuta minn OmniRoute. > Għal mudell ta’ bidu rapidu, ara [`.env.example`](../../.env.example). > [!IMPORTANT] > Kull varjabbli ddokumentata hawn trid tidher ukoll f’`.env.example`, u > kull varjabbli f’`.env.example` trid tidher hawn. `npm run check:env-doc-sync` > jinforza dan meta jsir commit u fis-CI. Biex tħalli barra varjabbli apposta, żidha > mal-lista tal-permessi ġewwa `scripts/check/check-env-doc-sync.mjs`. --- ## Werrej - [1. Sigrieti Meħtieġa](#1-required-secrets) - [2. Ħażna u Bażi tad-Data](#2-storage--database) - [3. Network u Ports](#3-network--ports) - [4. Sigurtà u Awtentikazzjoni](#4-security--authentication) - [5. Sanitizzazzjoni tal-Input u Protezzjoni tal-PII](#5-input-sanitization--pii-protection) - [6. Politiki tal-Għodod u tar-Rotot](#6-tool--routing-policies) - [7. URLs u Sinkronizzazzjoni mal-Cloud](#7-urls--cloud-sync) - [8. Proxy tal-Ħruġ](#8-outbound-proxy) - [9. Integrazzjoni tal-Għodod CLI](#9-cli-tool-integration) - [10. Integrazzjonijiet tal-Aġent Intern u tal-MCP](#10-internal-agent--mcp-integrations) - [11. Kredenzjali tal-Fornitur OAuth](#11-oauth-provider-credentials) - [12. Sostituzzjonijiet tal-User-Agent tal-Fornitur](#12-provider-user-agent-overrides) - [13. Kompatibbiltà tal-Fingerprint tas-CLI](#13-cli-fingerprint-compatibility) - [14. Fornituri taċ-Ċwievet API](#14-api-key-providers) - [15. Settings tal-Limitu ta’ Żmien](#15-timeout-settings) - [16. Reġistrazzjoni](#16-logging) - [17. Ottimizzazzjoni tal-Memorja](#17-memory-optimization) - [18. Sinkronizzazzjoni tal-Prezzijiet](#18-pricing-sync) - [19. Sinkronizzazzjoni tal-Mudelli (Żvilupp)](#19-model-sync-dev) - [20. Settings Speċifiċi għall-Fornitur](#20-provider-specific-settings) - [21. Stat tal-Proxy](#21-proxy-health) - [22. Debugging](#22-debugging) - [23. Integrazzjoni ma’ GitHub](#23-github-integration) - [24. Sandbox tal-Ħiliet (v3.8.0+)](#24-skills-sandbox-v380) - [27. Feed tar-Radar (Self-Hosting)](#27-radar-feed-self-hosting) - [Xenarji ta’ Deployment](#deployment-scenarios) - [Awditjar: Varjabbli Mneħħija / Mhux Użati](#audit-removed--dead-variables) --- ## 1. Sigrieti Meħtieġa Sigrieti mhux issettjati mmarkati b’**Iva** jiġu ġġenerati awtomatikament fl-ewwel tħaddim (`JWT_SECRET`, `API_KEY_SECRET`) u jiġu salvati f’`server.env` fid-direttorju tad-dejta — issejjahom espliċitament meta dak id-direttorju huwa temporanju. L-eċċezzjoni hija `OMNIROUTE_WS_BRIDGE_SECRET`: mhux jiġi salvat f’`server.env` — l-entrypoints tas-server joħolqu valur temporanju għal kull boot li jista’ juża biss il-bridge in-process, għalhekk il-klijenti tal-bridge esterni jkollhom bżonn issejjhulu espliċitament. | Varjabbli | Meħtieġa | Valur Awtomatiku | Fajl tas-Sors | Deskrizzjoni | | ---------------------------- | ------------------------- | ---------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | **Iva** | _(xejn)_ | `src/lib/auth` | Jiffirma/jivverifika l-cookies kollha tas-sessjoni tad-dashboard (JWT). Iġġenerah b’`openssl rand -base64 48`. | | `API_KEY_SECRET` | **Iva** | _(xejn)_ | `src/lib/db/apiKeys.ts` | Ċavetta tal-kriptaġġ AES għall-valuri taċ-ċwievet API maħżuna f’SQLite. Iġġeneraha b’`openssl rand -hex 32`. | | `INITIAL_PASSWORD` | Le | _(mhux issettjat)_ | `src/lib/auth/managementPassword.ts` | Jissettja l-password tad-dashboard mat-tħaddim sakemm ma jkun hemm l-ebda password salvata; jiġi injorat ladarba password tkun salvata. L-installazzjoniet npm u dawk mis-sors jikkopjaw `.env.example` għal `.env`, għalhekk jibdew bil-placeholder pubblikament magħruf tagħha `CHANGEME`: ibdlu qabel l-ewwel boot, jew issettja `INITIAL_PASSWORD=` (vojt) f’dak il-`.env` biex toħloq il-password fil-wizard tal-onboarding fl-ewwel żjara, kif jagħmel valur mhux issettjat (id-default tal-imaġni Docker). Ibdel password salvata f’Dashboard → Settings → Security, jew esegwi `omniroute reset-password` (`node bin/reset-password.mjs` f’checkout tas-sors) b’`DATA_DIR` issettjat għad-direttorju tad-dejta tas-server. | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Iva** (fil-produzzjoni) | _(mhux issettjat)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Sigriet kondiviż għall-bridge intern tal-WebSocket ta’ Codex Responses. Jawtentika t-talbiet tal-bridge bejn ir-relay WS ta’ Electron/browser u OmniRoute. ⚠️ **MEĦTIEĠ fil-produzzjoni — meta ma jkunx issettjat, it-talbiet kollha tal-bridge WS jiġu rrifjutati.** Iġġenerah b’`openssl rand -base64 32`. | | `OMNIROUTE_SW_BUILD_ID` | Le | _(SHA ta’ git)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Identifikatur espliċitu għall-invalidazzjoni tal-cache tas-service worker għall-qoxra PWA (#11779); l-ewwel fil-katina tar-riżoluzzjoni. | | `SOURCE_VERSION` | Le | _(mhux issettjat)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | It-tieni fil-katina — jiġi ssettjat mill-bennejja PaaS (eż. stil Heroku) bħala l-commit ippubblikat. | | `NEXT_PUBLIC_SW_BUILD_ID` | Le | _(derivat)_ | `src/shared/components/PwaRegister.tsx` | Valur pubbliku ta’ waqt il-bini li l-klijent juża biex jirreġistra `/sw.js?v=…`; jiġi derivat mit-tnejn ta’ hawn fuq, imbagħad mix-SHA ta’ git. | | `OMNIROUTE_PEER_STAMP_TOKEN` | Le (awtomatiku) | _(awtomatiku ma’ kull boot)_ | `src/server/authz/policies/management.ts` | Sigriet għal kull proċess li jagħti prova li t-timbru fdat tal-IP tal-peer ġie mis-server HTTP ta’ OmniRoute stess (`scripts/dev/peer-stamp.mjs`). Il-middleware authz jafda l-lokalità tat-talba (restrizzjoni għal loopback/LAN tar-rotot LOCAL_ONLY) biss meta t-timbru jkun fih dan it-token. Jiġi ġġenerat awtomatikament ma’ kull boot — ħallih mhux issettjat; issettjah b’mod fiss biss għal konfigurazzjonijiet b’diversi proċessi li jridu jikkondividu t-timbru. | | `OMNIROUTE_TRUSTED_PROXIES` | Le | _(mhux issettjat)_ | `scripts/dev/peer-stamp.mjs` | IPs jew meded CIDR separati b’virgoli ta’ reverse proxies li l-lista ta’ permess/projbizzjoni tal-IP tista’ tafda l-`X-Forwarded-For` / `X-Real-IP` tagħhom, flimkien mal-loopback, l-indirizzi tan-network privat u l-edges ta’ Cloudflare, li huma dejjem fdati. Meħtieġ biss għal proxy fuq kwalunkwe indirizz pubbliku ieħor; inkella jkun l-indirizz tal-proxy stess li jiġi evalwat mill-filtru. | ### Kmandi tal-Ġenerazzjoni ```bash # Iġġenera l-erba’ sigrieti kollha f’daqqa: 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] > Qatt tikkommittja fajls `.env` b’sigrieti reali fil-kontroll tal-verżjonijiet. Il-`.gitignore` diġà jeskludi `.env`, iżda vverifika qabel tagħmel push. --- ## 2. Ħażna u Bażi tad-Data OmniRoute juża **SQLite** (permezz ta’ `better-sqlite3`) għall-persistenza kollha. Dawn il-varjabbli jikkontrollaw il-post tad-data, il-kriptaġġ, u ċ-ċiklu tal-ħajja. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | Direttorju ewlieni għall-bażi tad-data SQLite, il-backups, u l-fajls tad-data. Ibdel dan il-valur għal volumi Docker jew mogħdijiet personalizzati. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(mhux issettjat)_ | `src/lib/dataPaths.ts` | Mekkaniżmu ta’ ħarba għall-protezzjoni DATA_DIR tat-testijiet/valutazzjoni (#10428). It-testijiet u s-sondi ta’ eval/stampar ta’ Node (`-e`/`--eval`/`-p`/`--print`, inklużi l-forom `--eval=`/`--print=`) mingħajr `DATA_DIR` jiġu ridiretti lejn direttorju temporanju li jintrema sabiex ma jkunux jistgħu jiftħu l-bażi tad-data reali tal-operatur; issettja għal `1` biex terġa’ tagħżel id-direttorju reali. | | `OMNIROUTE_BUILD_SHA` | _(mhux issettjat)_ | `src/lib/monitoring/buildSha.ts` | Il-Git SHA tal-artefatt li qed jaħdem. Jiġi ttimbrat minn `npm run build:release`; jista’ jiġi injettat f’containers li jitwasslu mingħajr is-sentinella `dist/BUILD_SHA`. Jiġi espost bħala `system.buildSha` fuq `/api/monitoring/health`. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Ir-ref li l-kontroll tal-provenjenza tal-ippakkjar tal-artefatt iqabbel miegħu l-build SHA (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(mhux issettjat)_ | `scripts/build/buildProvenance.ts` | Issettja għal `1` biex tippermetti l-ippakkjar ta’ build li s-SHA tiegħu mhuwiex fuq il-linja tar-rilaxx, billi jiġi rreġistrat bħala canary intenzjonat minflok ma l-kontroll ifalli (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(mhux issettjat)_ | `scripts/ops/deploy-canary.mjs` | Ċavetta tal-API għas-sonda smoke tal-iskjerament canary, mibgħuta bħala `Authorization: Bearer` fuq `/v1/chat/completions`. Tintuża biss mill-iskript tal-iskjerament (#10429), u qatt mis-server. Mhijiex relatata mal-varjabbli `OMNIROUTE_SMOKE_*` tal-għodda CLI smoke li tintuża biss meta tintgħażel espliċitament (`RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS` f’`tests/integration/upstream-cli-smoke.int.test.ts`) — ara [Integrazzjonijiet CLI → Sweep smoke reali](../guides/CLI-INTEGRATIONS.md). | | `OMNIROUTE_BUILDING` | _(mhux issettjat)_ | `src/lib/buildPhase.ts` | Sinjal tal-fażi tal-build (#10060): jiġi ssettjat għal `1` minn `scripts/build/build-next-isolated.mjs` u jintiret minn kull worker tal-build li jinbeda sabiex is-saff tal-bażi tad-data jirritorna stub li ma jagħmel xejn minflok itella’ l-addon nattiv better-sqlite3 (li jwaqqaf il-worker meta joħroġ). Qatt ma jiġi ssettjat għas-server li jkun qed jaħdem. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Issettja għal `1` biex taqbeż il-kontroll fakultattiv ta’ qabel il-build għad-dipendenzi nattivi għal siġar vendored eżotiċi. Dan ma jagħmilx dipendenza nieqsa possibbli biex tinbena; użah biss meta d-dipendenzi nattivi jiġu pprovduti minn kanal separat. | | `OMNIROUTE_DATA_DIR` | _(mhux issettjat)_ | `open-sse/executors/promptql/threadSticky.ts` | **Alias ta’ riżerva** għal `DATA_DIR`, ivverifikat biss meta `DATA_DIR` ma jkunx issettjat. Jintuża biex jinstab il-cache fuq id-diska tas-sessjonijiet thread-sticky tal-eżekutur PromptQL (`/promptql-thread-sessions.json`); jekk l-ebda waħda mill-varjabbli ma tkun issettjata, il-cache jibqa’ fil-memorja biss (ma jiġix ippersistit bejn bidu mill-ġdid). | | `OMNIROUTE_PLUGINS_DIR` | _(mhux issettjat)_ | `src/lib/plugins/scanner.ts` | Id-direttorju li jaqra l-**iskaner tal-plugins waqt it-tħaddim** — u l-għerq li fih jinstalla l-maniġer tal-plugins — filwaqt li jissostitwixxi l-valur predefinit derivat mid-direttorju home (#11827). Ippuntah lejn is-siġra tal-plugins immuntata b’bind f’Docker/K8s minflok ma tmexxi HOME sempliċement biex tibdel il-post tal-mogħdija tal-iskannjar (HOME jirregola wkoll kull mġiba oħra relattiva għall-home). Mhux issettjat = `~/.omniroute/plugins`, jew `/tmp/.omniroute/plugins` meta l-proċess ma jesporta l-ebda home — in-nuqqas sieket ta’ skoperta li din il-varjabbli telimina. Id-direttorju riżolt jiġi rreġistrat darba fil-log waqt l-istartjar bħala `scanner.dir_resolved` flimkien mal-input li ntgħażel. Għan-naħa tas-server biss: il-plugins tal-kmandi CLI jżommu l-`OMNIROUTE_PLUGIN_PATH` tagħhom stess (taqsima 9). | | `STORAGE_ENCRYPTION_KEY` | _(vojta = diżattivata)_ | `src/lib/db/encryption.ts` | Ċavetta AES għall-kriptaġġ sħiħ tad-database SQLite meta tkun maħżuna. Iġġeneraha b’`openssl rand -hex 32`. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Tikketta tal-verżjoni għaċ-ċavetta tal-kriptaġġ. Żidha meta twettaq rotazzjoni taċ-ċavetta biex tappoġġja d-dekriptaġġ ta’ backups qodma. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | Meta tkun `true`, taqbeż il-backups ta’ rutina/ta’ qabel il-kitba tal-fajl SQLite (issejvjar/tħassir tal-ipprezzar ta’ models.dev, kitbiet tas-settings). Il-backups manwali u dawk ta’ qabel ir-restawr jibqgħu jitħaddmu. Din **ma** tiddiżattivax l-istampa permanenti u obbligatorja tas-sigurtà tal-eżekutur tal-migrazzjonijiet jew il-protezzjoni kontra migrazzjonijiet tal-massa għal DB persistenti eżistenti. Il-backups mhux manwali jiġu limitati għal mhux aktar minn darba kull 60 minuta. **Settings → Storage** fid-dashboard jista’ jiddiżattiva l-backup awtomatiku ta’ rutina b’mod indipendenti. | | `OMNIROUTE_CRYPT_KEY` | _(mhux issettjata)_ | `src/lib/db/encryption.ts` | **Alias legat** għal `STORAGE_ENCRYPTION_KEY`. Jiġi aċċettat bħala alternattiva meta l-varjabbli primarja tkun nieqsa. | | `OMNIROUTE_API_KEY_BASE64` | _(mhux issettjata)_ | `src/lib/db/encryption.ts` | **Alias legat** (f’forma kkodifikata b’Base64) aċċettat bħala alternattiva. Jiġi dekodifikat awtomatikament qabel l-użu. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(mhux issettjata)_ | `src/lib/db/core.ts` | Jissostitwixxi l-intervall tal-kontroll perjodiku tas-saħħa ta’ SQLite (ms). Meta ma jkunx issettjat, il-valuri predefiniti jiġu derivati minn `NODE_ENV`. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(imneħħija)_ | `src/lib/db/walMaintenance.ts` | **Imneħħija.** `wal_checkpoint(TRUNCATE)` perjodiku waqt li s-sistema tkun attiva jista’ jinvalida l-immappjar kondiviż tal-wal-index u jikkraxxja l-proċess b’SIGBUS (#13973), għalhekk l-iskedatur ma għadux jeżisti. Il-varjabbli hija inattiva: valur pożittiv jirreġistra twissija ta’ deprekazzjoni ta’ darba, filwaqt li `0` jew valur mhux issettjat jibqa’ sieket. Il-WAL jinżamm permezz ta’ checkpoints PASSIVE (hawn taħt) u jiġi maqtugħ mill-checkpoint waqt l-għeluq. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | Jissostitwixxi l-intervall frekwenti ta’ `wal_checkpoint(PASSIVE)` (ms). Iżomm il-frames WAL pendenti żgħar sabiex il-checkpoints jibqgħu veloċi u l-fajl WAL jibqa’ limitat bejn it-tqattigħ waqt l-għeluq. `0` jiddiżattivah. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Meta ċiklu PASSIVE jsib li l-fajl WAL qabeż dan id-daqs, iħaddem `wal_checkpoint(RESTART)` sabiex il-WAL jerġa’ jibda mingħajr ma jerġa’ jikteb il-wal-index immappjat. Il-checkpoints bil-modalità ta’ tqattigħ waqt li s-sistema tkun attiva tneħħew (ara r-ringiela `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS`). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Issettjaha għal `1`/`true`/`yes`/`on` biex tagħlaq il-proċess wara li pressjoni kritika fuq ir-riżorsi tippersisti għal `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS`, biex b’hekk superviżur (systemd `Restart=always`, politika ta’ ristartjar ta’ Docker) ikun jista’ jerġa’ jħaddem proċess nadif minflok jibqa’ jservi 503s indefinittivament. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | Għal kemm żmien trid tippersisti l-pressjoni kritika qabel ma jiġi attivat l-għeluq għall-istartjar mill-ġdid awtomatiku. | | `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Issettjaha għal `1`/`true`/`yes`/`on` biex tinjora `/proc/pressure/memory` (`psi_some` / `psi_full`) tal-host kollu meta ġar storbjuż jiskatta 503s minkejja li dan il-proċess ikun qed jaħdem sew (#13124). Il-protezzjonijiet tas-cgroup u tal-heap V8 jibqgħu attivi. PSI jieqaf ukoll jitqies bħala prova ta’ throttling mill-kernel għal `cgroup_high`: total tas-cgroup ogħla minn `memory.high` imbagħad isir kritiku biss meta jiżdied `high`/`max` f’`memory.events`. Mingħajr `memory.events`, jinżamm il-proporzjon mhux ipproċessat. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(sejbien awtomatiku)_ | `src/lib/db/adapters/sqljsAdapter.ts` | Mogħdija espliċita (assoluta jew relattiva għal cwd) lejn `sql-wasm.wasm` meta jintuża l-adapter alternattiv WASM ta’ `sql.js`. Meta ma tkunx issettjata, tinstab awtomatikament permezz tad-dipendenzi tal-pakketti u arranġamenti kandidati. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | In-numru ta’ jiem li għalihom il-checkpoints, il-fajls ta’ input/output/żbalji referenzjati, u r-ringiela ta’ xogħol terminali (completed/failed/cancelled/expired) tal-Batch API jinżammu mill-proċess awtomatiku ta’ tindif qabel it-tħassir. Jidħol fis-seħħ biss ladarba `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` jiġi attivat; jaqbel mal-perjodu ta’ żamma tal-output tal-Batch API ta’ OpenAI stess. Ma jaffettwax ir-rotta `DELETE /api/v1/batches/delete-completed` attivata mill-operatur, li b’mod intenzjonat tibqa’ mingħajr kundizzjonijiet (mingħajr filtru tal-età). | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | Meta jkun `true`, jippermetti li l-proċess awtomatiku tat-tindif iħassar il-kompiti terminali tal-Batch API (u l-punti ta’ kontroll tagħhom) li jkunu qabżu `OMNIROUTE_BATCH_RETENTION_DAYS`, u jneħħi l-kontenut BLOB tal-fajls imtellgħin li jkunu qabżu l-`expires_at` tagħhom stess. Diżattivat b’mod awtomatiku: kull installazzjoni eżistenti żżomm din id-data eżattament kif kienet qabel sakemm operatur jagħżel li jattivah. Huwa wkoll feature flag li jista’ jiġi editjat mid-dashboard — ara `docs/reference/FEATURE_FLAGS.md` → Ħin tal-eżekuzzjoni. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Issettjah għal `1` biex taqbeż għalkollox il-verifika tas-saħħa tad-DB waqt l-istartjar. Utli għal kompiti ta’ ħajja qasira u testijiet tal-integrazzjoni. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Issettjah għal `1` biex iġġiegħel il-loop tal-verifika tas-saħħa tad-DB jinxtegħel, anke meta normalment jinqabeż (eż., għal kompiti ta’ ħajja qasira). | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | Issettjah għal `1` biex taqbeż it-tħejjija inizjali tar-runtime nattiv waqt `npm install`. Utli f’installazzjonijiet CI/headless fejn sqlite jkun diġà nbena. | | `OMNIROUTE_MIGRATIONS_DIR` | _(individwat awtomatikament)_ | `src/lib/db/migrationRunner.ts` | Ibdel id-direttorju li jiskennja l-proċess tal-migrazzjoni. Utli meta jiġu distribwiti migrazzjonijiet ippakkjati f’builds personalizzati. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(mhux issettjat)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Direttorji addizzjonali tal-migrazzjoni bħala entrati `namespace=dir` separati bid-delimitatur tal-path tal-pjattaforma (eż. `ee=/opt/app/enterprise/db/migrations`). Il-fajls li jinstabu hemm jiġu rreġistrati bħala `-`, biex distribuzzjoni li tinkludi l-migrazzjonijiet tagħha stess qatt ma taħbat mal-islots numeriċi upstream. Entrata fformattjata ħażin, namespace invalidu jew direttorju nieqes jikkawża żball waqt l-istartjar minflok ma l-iskema tinqabeż mingħajr avviż. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Limitu ta’ sikurezza għal għadd kbir ta’ migrazzjonijiet pendenti (#3416). L-istartjar jiġi abortit jekk ikun hemm aktar minn dan l-għadd ta’ migrazzjonijiet pendenti fuq DB eżistenti (biex jipproteġi kontra tabella tat-traċċar li tkun tħassret). Żidu biex tirrestawra backup eqdem; issettjah għal `0` biex tiddiżattiva l-verifika. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | Id-direttorju tax-xogħol għall-gate tar-rilaxx `check:install-upgrade`. Jeħtieġ madwar 12 GB (żewġ siġar ta’ installazzjoni ta’ ~3 GB flimkien mat-tarball), għalhekk ma għandux jitħaddem fuq tmpfs żgħir — fuq ir-runner self-hosted, `/tmp` huwa tmpfs ta’ 12 GB sostnut mir-RAM u l-gate eżawrieh, u b’hekk qata’ l-pakkett. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(default fil-kodiċi)_ | `src/lib/spend/batchWriter.ts` | Intervall tal-flush (ms) għall-writer raggruppat tal-infiq/kost. Valuri aktar baxxi jnaqqsu l-għaqda tal-kitbiet; valuri ogħla jnaqqsu l-kontenzjoni tad-DB. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(default fil-kodiċi)_ | `src/lib/spend/batchWriter.ts` | Għadd massimu ta’ entrati tal-infiq fil-buffer qabel flush sfurzat. Żidu f’deployments b’QPS għoli; naqqsu meta memorja limitata tkun aktar importanti. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(mhux issettjat)_ | `open-sse/utils/proxyFetch.ts` | Issettjah għal `"true"` biex joħroġ logs tad-debug `[ProxyFetch]` fil-path tar-relay ta’ Vercel. Diżattivat b’mod awtomatiku biex jevita li jikxef ħjiel dwar ir-routing. | | `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(mhux issettjat)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Il-path assolut tal-binary lokali tal-qalba tal-proxy (fajl bl-isem `sing-box`) li jivverifika konfigurazzjoni ġġenerata tal-qalba qabel ma din tissostitwixxi l-fajl adottat. Jekk ma jkunx issettjat, jikteb biss `.generated` ħdejn il-fajl adottat. Għall-ambjent tal-host biss: qatt ma jinħażen fid-database u lanqas ma jiġi aċċettat permezz tal-API tal-ġestjoni, minħabba li l-binary jiġi eżegwit. | | `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(mhux issettjat)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Kif il-qalba lokali tal-proxy terġa’ titgħabba wara sostituzzjoni vverifikata tal-konfigurazzjoni: array ta’ argumenti JSON imħaddem mingħajr shell, jew eżattament `external` meta osservatur estern japplika l-fajl. Qatt ma jinħażen fid-database u lanqas ma jiġi espost permezz tal-API. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Issettjah għal `"true"` jew `"1"` biex tinkludi l-IPs tal-klijent/ħruġ u l-prefiss tal-kont fil-linja dettaljata tal-log tal-proċess `[ProxyEgress]`. Jinżamm DIŻATTIVAT b’mod awtomatiku sabiex il-log tal-proċess ma jikxifx IPs jew il-prefiss tal-kont. | | `OMNIROUTE_DEBUG` | _(mhux issettjat)_ | `bin/cli/commands/quota.mjs` | Issettja għal `1` biex tipprintja dijanjostiċi tal-ħin għal kull talba (`[omniroute] GET tlestiet f'Nms`) mill-kmandi tal-kwota tas-CLI lejn stderr. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(awtomatiku)_ | `scripts/dev/healthcheck.mjs` | Mogħdija espliċita ttestjata mill-kontroll tas-saħħa tal-kontenitur. Jekk ma tkunx issettjata, it-test jidderivaha minn `OMNIROUTE_BASE_PATH`; jekk tiġi ssettjata, jerġa' jintuża l-endpoint ta' monitoraġġ profond. | | `OMNIROUTE_DEBUG_COMPLETION` | _(mhux issettjat)_ | `bin/cli/commands/completion.mjs` | Issettja għal kwalunkwe valur mhux vojt biex toħroġ dijanjostiċi `[omniroute completion]` mill-mogħdijiet tal-cache tal-awtokompletament tas-shell tas-CLI (qari/aġġornament/kitba). Diżattivat b'mod awtomatiku — dawn il-caches ifallu fis-skiet sabiex cache nieqsa jew korrotta qatt ma tħarbat l-awtokompletament bit-tab. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24s) | `open-sse/services/batchProcessor.ts` | Tieqa massima ta' tentattivi mill-ġdid għal elementi individwali tal-lott (ms). Elementi li jaqbżu dan it-tul jiġu mmarkati bħala falluti. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Dewmien bażi (ms) għall-backoff esponenzjali fit-tentattivi mill-ġdid tal-elementi tal-lott. | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1s) | `open-sse/services/batchProcessor.ts` | Limitu massimu (ms) għall-backoff esponenzjali bejn tentattiv u ieħor tal-elementi tal-lott. | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Numru massimu ta' lottijiet ipproċessati fl-istess ħin. Għollih biex iżżid il-fluss tax-xogħol; żommu baxx biex tevita żieda qawwija ta' talbiet li jilħqu l-limitu tar-rata. | > [!IMPORTANT] > Qabel ma jibdel database persistenti eżistenti, l-eżekutur tal-migrazzjoni jippubblika snapshot komplut, > indirizzat skont il-kontenut taħt `DATA_DIR/db_backups/`. Il-pubblikazzjoni teħtieġ sistema tal-fajls > li tappoġġja hard links fl-istess sistema tal-fajls mingħajr kitba fuq fajl eżistenti, flimkien ma' sinkronizzazzjoni dejjiema tal-fajls. Il-hosts POSIX jeħtieġu wkoll > sinkronizzazzjoni tad-direttorji; fuq Windows, Node jista' jirrifjuta handles tad-direttorji, għalhekk OmniRoute jikteb id-data pendenti tal- > fajl ippubblikat u jqis is-sinkronizzazzjoni tal-entrata tad-direttorju bħala sforz tal-aħjar li jista' jsir. > Jekk id-`DATA_DIR` immuntat ma jistax jipprovdi dawk il-garanziji, l-istartjar jieqaf b'mod sigur qabel ma japplika > migrazzjoni. Mexxi `DATA_DIR` għal volum b'dawk il-primitivi; tużax > `DISABLE_SQLITE_AUTO_BACKUP` biex tevita s-sikurezza tal-migrazzjoni. ### Xenarji | Xenarju | Konfigurazzjoni | | ------------------------- | ------------------------------------------------------------------------------------------------------- | | **Żvilupp lokali** | Ħalli l-valuri awtomatiċi kollha. Id-DB tinsab f'`~/.omniroute/omniroute.db`. | | **Docker** | `DATA_DIR=/data` + immonta volum f'`/data`. | | **Kriptat waqt il-ħażna** | Issettja `STORAGE_ENCRYPTION_KEY` + żomm kopji ta' riżerva taċ-ċavetta! Jekk titlifha = titlef id-data. | | **CI/Ittestjar** | `DATA_DIR=/tmp/omniroute-test` — temporanju, ma hemmx bżonn kriptaġġ. | --- ## 3. Netwerk u Ports | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PORT` | `20128` | `src/lib/runtime/ports.ts` | Il-port primarju kemm għall-UI tad-Dashboard kif ukoll għall-endpoints tal-API (modalità ta’ port wieħed). | | `OMNIROUTE_BASE_PATH` | _(vojt = għerq)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | Subpath tal-URL biex OmniRoute jiġi servut wara reverse proxy (jissettja `basePath` ta’ Next.js; ir-redirects tal-awtentikazzjoni jqisu l-basePath). Eż. `/omniroute`. F’Docker, il-valur jiġi inkorporat waqt `docker build` (`ARG OMNIROUTE_BASE_PATH`); immaġnijiet tal-għerq mibnija minn qabel jistgħu japplikaw valur differenti waqt ir-runtime darba, fil-bidu tal-container qabel ma jibda Next.js. Issettja `NEXT_PUBLIC_BASE_URL` għall-oriġini pubblika inkluż l-istess subpath. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(vojt = għerq)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Rifless ta’ `OMNIROUTE_BASE_PATH` viżibbli għall-browser, inkorporat waqt il-build sabiex il-wiri tal-endpoint fid-dashboard juri `https://host/omniroute/v1` minflok `https://host/v1`. Jekk ma jkunx issettjat, juża `OMNIROUTE_BASE_PATH`. Erġa’ wettaq il-build wara li tibdlu (`basePath` ta’ Next jiġi stabbilit waqt il-build). | | `DASHBOARD_ALLOW_EMBED` | _(mhux issettjat = qatt ma jista’ jitqiegħed f’frame)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | Għażla espliċita biex il-paġni HTML ikunu jistgħu jiġu inkorporati f’iframe. Meta ma jkunx issettjat, kull route tintbagħat b’`frame-ancestors 'none'` + `X-Frame-Options: DENY`. Issettjah għal `vscode` biex il-paġni (dashboard, login, dokumentazzjoni, landing page) jiġu servuti b’`frame-ancestors 'self' vscode-webview:` u mingħajr `X-Frame-Options`, sabiex il-VS Code Simple Browser ikun jista’ jirrendihom (il-modalità `dashboardOpen: "editor"` ta’ OmniCopilot). Is-superfiċje tal-API (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, aliases fil-livell tal-għerq) iżżomm l-headers stretti fiż-żewġ każijiet. `vscode` biss huwa rikonoxxut — `1`/`true` ma jattivawhx. Waqt il-build: erġa’ wettaq il-build wara li tibdlu (`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` għall-immaġnijiet; l-issettjar tiegħu fuq installazzjoni mibnija minn qabel ma jkollu l-ebda effett). | | `API_PORT` | _(mhux issettjat)_ | `src/lib/runtime/ports.ts` | Meta jkun issettjat, iservi l-API proxy `/v1/*` fuq dan il-port separat. | | `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | L-indirizz tal-bind għall-port tal-API. | | `DASHBOARD_PORT` | _(mhux issettjat)_ | `src/lib/runtime/ports.ts` | Meta jkun issettjat, iservi l-UI tad-Dashboard fuq dan il-port separat. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(diżattivat)_ | `src/sse/utils/backpressure.ts` | Jillimita l-konnessjonijiet taċ-chat konkorrenti li jkunu għadhom qed jiġu pproċessati; talbiet li jaqbżu l-limitu jirċievu `503` b’`Retry-After`. Numru sħiħ pożittiv jattiva l-protezzjoni; jekk ma jkunx issettjat jew ikun `0`, din tiġi diżattivata. | | `OMNIROUTE_INSTANCE_ID` | _(mhux issettjat)_ | `src/shared/resilience/peerRouting.ts` | ID stabbli u uniku għal dan il-gateway meta jiġu kkatinati istanzi ta’ OmniRoute. Jippermetti kontrolli deħlin għal loops bejn il-peers. Karattri permessi: ittri, ċifri, `.`, `_`, `:`, u `-`; massimu ta’ 64 karattru. | | `OMNIROUTE_PEER_URLS` | _(mhux issettjat)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | URLs bażi ta’ OmniRoute separati b’virgola li jistgħu jirċievu `X-OmniRoute-Peer-Trace`. Il-metadati tal-peer jintbagħtu biss lil URLs upstream inklużi espliċitament fil-lista ta’ permessi; il-fornituri l-oħra kollha jibqgħu mhux mittiefsa. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Numru massimu ta’ istanzi OmniRoute miżjura preċedentement li jiġu aċċettati f’talba magħquda f’katina (`1`-`32`). Istanza ripetuta jew baġit eżawrit jirritornaw HTTP `508 Loop Detected`. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Port ippubblikat fuq in-naħa tal-host għad-Dashboard fil-modalità ta’ produzzjoni ta’ Docker. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Port ippubblikat fuq in-naħa tal-host għall-API fil-modalità ta’ produzzjoni ta’ Docker. | | `OMNIROUTE_PORT` | _(mhux issettjat)_ | `src/lib/runtime/ports.ts` | Jieħu preċedenza fuq `PORT` meta jitħaddem ġewwa Electron jew wrappers oħra. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Port għas-server ta’ monitoraġġ dirett f’ħin reali permezz ta’ WebSocket. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Indirizz tal-bind għas-server WebSocket dirett. Issettjah għal `0.0.0.0` biex tesponih fuq il-LAN (ikkonfigura wkoll `LIVE_WS_ALLOWED_ORIGINS`). | | `LIVE_WS_ALLOWED_ORIGINS` | _(mhux issettjat)_ | `src/server/ws/liveServer.ts` | Oriġini addizzjonali, separati b’virgola, li huma permessi jiftħu WebSocket dirett. L-oriġini tad-dashboard fuq loopback huma diġà permessi b’mod awtomatiku. | | `LIVE_WS_ALLOWED_HOSTS` | _(mhux issettjat)_ | `src/server/ws/liveServerAllowList.ts` | Ismijiet tal-host addizzjonali, separati b’virgola, permessi għall-oriġini tal-WebSocket dirett. B’differenza minn `LIVE_WS_ALLOWED_ORIGINS` (URLs sħaħ tal-oriġini), jaqbel biss mal-parti tal-host — utli għal konfigurazzjonijiet LAN/Tailscale. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(mhux issettjat)_ | `src/hooks/useLiveDashboard.ts` | URL pubbliku għall-WebSocket tad-dashboard dirett (fuq in-naħa tal-browser). Issettjah meta s-server WS ikun wara reverse proxy jew Cloudflare Tunnel (eż. `wss://ws.my-ai.com/live-ws`); il-browser jikkonnettja hemm minflok ma’ `ws://hostname:20132`. Il-parti tal-pathname tintuża wkoll bħala l-mogħdija tal-upgrade tal-WebSocket (default: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` u `scripts/start-ws-server.mjs` | Issettjah għal `0` jew `false` biex tiddiżattiva s-server WebSocket f’ħin reali (attivat b’mod awtomatiku, marbut mal-loopback). Toggle tas-CI/harness li jiddiżattiva l-iskript helper awtonomu tal-WebSocket dirett. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Limitu tar-rata tar-relay għal kull (token, IP), f’talbiet/minuta. Fil-memorja, għal kull istanza. `0` jew valur negattiv jiddiżattiva l-kontroll tad-dimensjoni tal-IP (il-limitu tad-DB għal kull token jibqa’ japplika). | | `NODE_ENV` | `production` | Il-qalba ta' Next.js | Jikkontrolla l-livell ta' dettall tal-logging, il-caching, l-espożizzjoni tad-dettalji tal-iżbalji, u l-ottimizzazzjonijiet ta' Next.js. | | `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — valur predefinit fil-kodiċi) | `package.json` / Next.js 16 | Turbopack huwa l-bundler predefinit għal `npm run dev` u `npm run build` (builds 2-3× aktar veloċi, skont il-benchmarks). Issettjah għal `0` biex terġa' tuża webpack fuq Windows, meta tiltaqa' ma' inkompatibbiltajiet ta' native bindings / kompatibbiltà tal-bundler, **jew fuq magni b'RAM limitata** — huwa magħruf upstream li l-builds ta' produzzjoni ta' Turbopack fuq din il-linja ta' verżjonijiet ta' Next.js (16.2.x) jilħqu quċċata ta' użu tal-memorja ferm ogħla minn webpack fuq graphs kbar ta' moduli (il-korrezzjoni tal-evizzjoni mill-memorja ta' Turbopack f'Next 16.3 għadha mhix stabbli); il-fallback għal webpack jilħaq quċċata ferm aktar baxxa. Ara #6409. **Il-builds tal-immaġni Docker jużaw `0` (webpack) b'mod predefinit**: id-`Dockerfile` jiddikjara `ARG OMNIROUTE_USE_TURBOPACK=0` sabiex `docker build .` sempliċi (Railway u hosts oħra b'klikk waħda, jew self-hosters ad hoc) ma jiġix terminat minħabba OOM fuq builder b'limitu tal-memorja; għaddi `--build-arg OMNIROUTE_USE_TURBOPACK=1` biex tibni l-immaġni b'Turbopack. Ara `docs/guides/DOCKER_GUIDE.md` → Riżorsi waqt il-build. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(mhux issettjat)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Issettjah għal `1` biex taqbeż il-verifika tas-saħħa tal-integrità ta' SQLite waqt l-istartjar. Utli għal boot aktar veloċi fuq databases kbar. | | `NOTIFY_SOCKET` | _(mhux issettjat)_ | systemd (protokoll sd_notify) | Jiġi ssettjat minn systemd meta l-proċess jaħdem taħt unità ta' servizz b'integrazzjoni sd_notify; OmniRoute jaqrah (ara `OMNIROUTE_DISABLE_SD_NOTIFY`) biex jibgħat notifiki READY/WATCHDOG. Qatt m'għandu jiġi ssettjat mill-utent. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(mhux issettjat)_ | `scripts/dev/systemd-notify.mjs` | Issettjah għal `1` biex tiddiżattiva sd_notify ta' systemd (Type=notify / WatchdogSec=) anki meta jkun qed jaħdem taħt unità ta' systemd. In-notifier ma jagħmel xejn barra minn systemd fi kwalunkwe każ. | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Intervall (ms) għall-iskedatur fl-isfond tal-verifika tas-saħħa tal-kredenzjali. Minimu: 10000 (10s). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | TTL (ms) għall-istat tas-saħħa tal-kredenzjali maħżun fil-cache. | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Issettjah għal `1` jew `true` biex tiddiżattiva l-ittestjar perjodiku fl-isfond tal-konnessjonijiet tal-fornituri. Il-fornituri tat-tiftix (SEARCH_VALIDATOR_CONFIGS f'`src/lib/providers/validation/searchProviders.ts`, eż. `tavily-search`) huma dejjem esklużi mill-kontroll — il-"validazzjoni" tagħhom hija query upstream reali u bi ħlas, għalhekk qatt ma ssirilhom verifika tas-saħħa skedata (#9970). | | `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Issettjah għal `1` biex tippermetti lil min jagħmel sejħa awtentikata jitlob `/api/monitoring/health?deep=1`, li jieħu kampjun tas-superfiċje tal-completions darba għal kull TTL. Sejħiet anonimi qatt ma jattivaw il-probe. | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Indirizz tal-bind għas-server dev/start ta' Next.js. Jissostitwixxi l-valur predefinit `0.0.0.0` meta jkun issettjat. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Indirizz tal-bind użat mir-runner ta' Playwright meta jniedi Next.js. B'mod predefinit juża `127.0.0.1` għal testijiet ermetiċi. **Tużahx għal `omniroute serve`** — minflok uża `OMNIROUTE_SERVER_HOST` (is-shells POSIX jissettjaw `HOSTNAME` awtomatikament għall-isem tal-magna; `.env` ma jistax jissostitwih). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | Indirizz tal-irbit għal `omniroute serve`. Jevita kunflitt mal-varjabbli `HOSTNAME` tax-shell POSIX (li dejjem tiġi ssettjata għall-isem tal-magna minn bash/zsh). Jirrikorri għal `0.0.0.0` meta ma tkunx issettjata. (#6194) | ### Modi tal-Ports ``` ┌─────────────────────────── Port Wieħed (default) ───────────────────────────┐ │ PORT=20128 │ │ → Dashboard: http://localhost:20128 │ │ → API: http://localhost:20128/v1/chat/completions │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Ports Separati ──────────────────────────────────┐ │ DASHBOARD_PORT=20128 │ │ API_PORT=20129 │ │ API_HOST=0.0.0.0 │ │ → Dashboard: http://localhost:20128 │ │ → API: http://0.0.0.0:20129/v1/chat/completions │ │ Każ ta' użu: Esponi l-API għal-LAN filwaqt li tillimita d-Dashboard għal │ │ localhost. │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Produzzjoni b'Docker ────────────────────────────┐ │ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │ │ → Jimmappja l-ports tal-container mal-ports tal-host f'docker-compose.prod.yml. │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 4. Sigurtà u Awtentikazzjoni | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Salt ikkombinat ma’ identifikaturi tal-hardware għall-ħolqien ta’ marka tas-swaba’ tal-magna. Ibdlu għal kull skjerament biex tiżgura l-iżolament. | | `OMNIROUTE_CLI_SALT` | _(mhux issettjat = salt każwali għal kull installazzjoni, ippersistit f’`/cli-token-salt.json`)_ | `src/lib/machineToken.ts` | Salt HMAC biex jiġi derivat it-token lokali tal-awtentikazzjoni tas-CLI. L-issettjar ta’ dan il-valur idawwar it-tokens kollha tas-CLI fuq il-magna u dejjem jingħata prijorità fuq is-salt ippersistit. Ara `docs/security/CLI_TOKEN.md`. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Jissettja l-flag `Secure` fuq il-cookies tas-sessjoni. **Għandu jkun `true`** meta jitħaddem wara HTTPS. | | `REQUIRE_API_KEY` | `false` | Middleware tal-API | Meta jkun `true`, it-talbiet proxy kollha għal `/v1/*` iridu jinkludu API key valida. **Dan il-flag ma jikkontrollax `GET /v1/models`**, li minflok isegwi l-pożizzjoni tal-login tad-dashboard (`requireAuthForModels`) — għalhekk `401` minn `/v1/models` MA jfissirx li l-inferenza hija protetta. Ara `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Jippermetti li jintwerew il-valuri sħaħ tal-API keys fl-interfaċċa tad-Dashboard. Jista’ jiġi kkonfigurat mill-Feature Flags tad-Dashboard; joħloq riskju għas-sigurtà f’istanzi kondiviżi. | | `NO_LOG_API_KEY_IDS` | _(vojt)_ | `src/lib/compliance/index.ts` | IDs tal-API keys separati b’virgoli li jaqbżu l-illoggjar tat-talbiet (konformità mal-GDPR). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(mhux issettjat = bla limitu)_ | `src/shared/utils/apiKeyPolicy.ts` | Baġit alternattiv ta’ talbiet kuljum applikat għal API keys li l-kolonna `rate_limits` tagħhom hija null. Mhux issettjat jew vojt: ebda limitu impliċitu (#2289, #11017). `0` għandu l-istess tifsira (bla limitu). Numru sħiħ pożittiv N jippermetti N/kuljum, 5N/fil-ġimgħa, 20N/fix-xahar. Valuri mhux vojta u b’format ħażin jerġgħu lura għat-twieqi preċedenti ta’ 1000/kuljum, 5000/fil-ġimgħa, 20000/fix-xahar. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | Id-daqs massimu permess għall-korp tat-talba. Jirrifjuta payloads li jaqbżu dan il-limitu. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Korpi reali tat-talbiet li jilħqu jew jaqbżu dan il-limitu jieħdu l-lease atomiku u lokali għall-proċess ta’ ammissjoni għal tagħbijiet tqal qabel il-parsing tal-JSON (mogħdija BYTE, inkluż `POST /v1/responses`). L-istess mekkaniżmu ta’ ħruġ meta jkun hemm marġni operattiv b’saħħtu ta’ [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) bħal fil-każ ta’ struttura tqila; xorta limitat minn `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) sabiex [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) ma jerġax iseħħ. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Limitu massimu strett tar-rotta taċ-chat infurzat fuq il-bytes moqrija waqt l-inġestjoni limitata, inklużi talbiet b’`Content-Length` nieqes, invalidu jew qarrieqi; l-eċċess jirċievi `413`. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(mhux issettjat — ebda limitu fuq l-għadd ta’ talbiet)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** dan il-limitu legat fuq l-GĦADD ta’ talbiet issa japplika biss meta jiġi ssettjat b’mod espliċitu. Jekk jitħalla mhux issettjat (il-valur predefinit), l-ammissjoni ta’ chat tqil minflok tiġi kkontrollata minn `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — baġit ta’ BYTES derivat awtomatikament u kkalkolat mil-limitu reali tal-memorja tal-proċess fi **proċess wieħed** (heap wieħed ta’ V8). Żewġ talbiet `/v1/responses` li jikkoinċidu ta’ madwar 750k token iwaqqgħu heaps ta’ madwar 12 Gi (#7849) — twissija dwar **baġit tal-memorja**, mhux massimu strett tal-prodott ta’ 2. Proċess f’saħħtu (heap taħt il-proporzjon tar-rilaxx tat-tagħbija) JISTA’ jaċċetta aktar talbiet twal konkorrenti lil `/v1/responses` permezz ta’ `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM`. Għexieren ta’ klijenti SSE fit-tul (40–50) jiddependu mill-heap + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110, mhux minn “massimu ta’ 2”. Jekk iżżid dan bl-addoċċ biex “tuża l-host”, terġa’ ddaħħal #7849. Immultiplika l-**heaps** b’**N `DATA_DIR`s indipendenti** (#11024); qatt tuża `replicas>1` fuq fajl SQLite wieħed. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(derivat awtomatikament)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** override għall-baġit ta’ bytes tal-inġestjoni derivat awtomatikament (25% tal-aktar limitu strett tal-memorja V8/cgroup diviż b’amplifikazzjoni tranżitorja ta’ 8x). Il-valuri derivati u espliċiti huma limitati għal 8 MiB–2 GiB. Body akbar mill-baġit effettiv ifalli minnufih b’`413 body_exceeds_budget`; il-kontenzjoni bejn bodies li kull wieħed minnhom jista’ jiġi pproċessat tibqa’ tippermetti tentattiv mill-ġdid b’`503`. 40–50 klijent SSE konkorrenti fit-tul jiddependu minn dan il-baġit + il-heap, mhux minn “massimu ta’ 2” strett. Aqra `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` f’`/api/monitoring/health` qabel l-irfinar. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | Proporzjon ta’ rilaxx tat-tagħbija taħt pressjoni tal-heap (`heapUsed / heap_size_limit`) għall-ammissjoni tqila skont BYTE u STRUCTURE (#10183, #10268, #10437). Talba tqila konkorrenti lil hinn minn `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` tiġi rilaxxata bit-`503` li jippermetti tentattiv mill-ġdid biss meta l-heap ikun WKOLL f’dan il-proporzjon jew ogħla minnu; fuq heap f’saħħtu tiġi aċċettata minflok permezz tal-ispazju żejjed għal stat f’saħħtu. | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (valur predefinit `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Kapaċità żejda limitata għall-perkors veloċi ta’ heap f’saħħtu (#10437) kemm għal STRUCTURE kif ukoll għal BYTE (`admitChatRequest`, inklużi bodies ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). Mingħajr dan il-limitu, kull talba fuq sistema okkupata iżda b’heap f’saħħtu kienet tevita l-ammissjoni mingħajr ebda limitu massimu. Ladarba jkun hemm daqstant leases konkorrenti attivi permezz tal-perkors ta’ heap f’saħħtu, talbiet okkupati addizzjonali jgħaddu għall-ISTESS perkors limitat ta’ stennija/rilaxx tat-tagħbija użat taħt pressjoni reali tal-heap. `0` jiddiżattiva kompletament dan il-bypass. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Għadd ta’ messaġġi li jikklassifika talba taċ-chat bħala tqila anke meta l-body tagħha jkun taħt il-livell limitu tal-bytes. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Għadd ta’ għodod li jikklassifika talba taċ-chat bħala tqila anke meta l-body tagħha jkun taħt il-livell limitu tal-bytes. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Stima konservattiva tat-token ibbażata fuq id-daqs tal-string li tikklassifika talba bħala tqila; din hija indikazzjoni tal-ispiża tal-ammissjoni, mhux it-tokenizzazzjoni tal-kontijiet tal-fornitur. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (diżattivat) | `src/shared/middleware/chatBodyAdmission.ts` | Limitu fakultattiv u attivabbli għall-istorja taċ-chat. Diżattivat b’mod predefinit: għadd ta’ messaġġi huwa politika tad-deployment, mhux proprjetà universali ta’ talba, u l-impożizzjoni ta’ limitu hawnhekk tirrifjuta konverżazzjonijiet b’`413` terminali qabel ma l-pipeline tal-kompressjoni jkun jista’ jagħmilhom proċessabbli. It-tkabbir tal-heap huwa limitat minn `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` u r-rilaxx tat-tagħbija taħt pressjoni tal-heap. Issettja valur pożittiv fuq deployments b’memorja limitata li jeħtieġu limitu massimu strett; l-eċċess imbagħad jirċievi `413` strutturat li jindika li hija meħtieġa l-kompattazzjoni. | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Limitu massimu strett għal rispons upstream mhux streaming li jinħażen kollu kemm hu fil-memorja. Lil hinn minnu, il-qarrej upstream jiġi kkanċellat u t-talba tfalli minnufih minflok tkompli tkabbar string mingħajr limitu sakemm il-heap jiġi eżawrit. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Għadd massimu ta’ bytes trażmessi mill-headers tar-rispons upstream. Meta jinqabeż il-baġit, jitneħħew headers bi prijorità aktar baxxa (eż., `x-codex-*`, `x-oai-request-id`) biex jibqgħu fil-limiti komuni tal-headers tar-reverse proxy. Issettjah għal valur ogħla biex tibgħat aktar metadata upstream, bl-ispiża ta’ daqs akbar tal-headers tar-rispons. | | `CORS_ORIGIN` | _(mhux issettjat)_ | `src/server/cors/origins.ts` | Lista ta’ permessi CORS antika għal origin wieħed. Ippreferi `CORS_ALLOWED_ORIGINS` għal deployments ġodda. CORS huwa biss għal klijenti tal-API fil-browser minn origin differenti; il-kitbiet awtentikati tad-dashboard minflok jużaw talbiet mill-istess origin flimkien ma’ protezzjoni CSRF marbuta mas-sessjoni. | | `CORS_ALLOWED_ORIGINS` | _(mhux issettjat)_ | `src/server/cors/origins.ts` | Lista ta’ permessi CORS separata b’virgoli. Ma jintbagħat l-ebda wildcard sakemm `CORS_ALLOW_ALL=true` ma jkunx ikkonfigurat espliċitament. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Għażla ta’ emerġenza għall-iżvilupp biss biex tirrifletti kwalunkwe `Origin` tal-browser. Tattivahiex fuq deployments kondiviżi jew tal-produzzjoni. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Alias antik. It-toggle tiegħu fid-dashboard (override fid-DB) jinqara qabel dan il-valur tal-ambjent; `false`, `0`, `no`, jew `off` fi kwalunkwe wieħed minnhom jitfi l-kontrolli tal-host bl-istess mod bħal `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`, anki meta t-toggle ta’ dik il-flag fid-dashboard ikun salvat bħala mitfi; valuri oħra jħallu l-gwardja f’idejn iż-żewġ flags ta’ hawn taħt. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Itfi l-kontrolli tal-host tal-gwardja tal-URLs outbound, inkluż l-imblukkar tal-cloud metadata (169.254.0.0/16 kollu, metadata.google.internal), fil-mogħdijiet tal-provider li jsegwu l-modalità tal-gwardja: validazzjoni tal-URL, skoperta tal-mudelli, URLs bażi tan-nodi tal-provider (inklużi nodi remoti ta’ rerank), u t-test ta’ proxy fallback, fost mogħdijiet outbound oħra relatati mal-provider bħall-ġbid remot ta’ immaġnijiet/media. Jippermetti wkoll miri privati tal-webhooks, ħlief endpoints tal-cloud metadata/link-local, li jibqgħu mblukkati anki meta din il-flag tkun mixgħula. Talbiet taċ-chat mibgħuta permezz ta’ `BaseExecutor.execute()` iżommu l-kontroll tagħhom tal-cloud metadata. Il-providers lokali jaħdmu bis-settings predefiniti: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (default `true`) diġà jippermetti URLs lokali u tal-LAN fil-mogħdijiet tal-validazzjoni, l-iskoperta, u n-nodi tal-provider; it-test ta’ proxy fallback u l-miri privati tal-webhooks jikkonsultaw din il-flag biss u jimblukkaw hosts lokali/tal-LAN meta tkun mitfija. Jissostitwixxi `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false`. Valur salvat mit-toggle fid-dashboard jieħu preċedenza fuq din il-varjabbli. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Ippermetti URLs tal-provider fuq indirizzi lokali/privati (127.0.0.1, localhost, LAN, firxiet privati) għall-validazzjoni tal-provider, l-iskoperta tal-mudelli, iċ-chat, u l-mogħdijiet outbound l-oħra relatati mal-provider li tirregola l-modalità tal-gwardja. **Default `true`** (lokali l-ewwel): il-gwardja mbagħad timblokka l-endpoints tal-cloud metadata — 169.254.0.0/16 kollu flimkien mal-hostnames magħrufa tal-metadata (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254). Issettja `false` għall-modalità pubblika biss, li timblokka wkoll hosts privati u loopback. Il-gwardja tiċċekkja l-hostname jew il-litteral tal-IP kif inhu miktub, qabel kwalunkwe tfittxija DNS; fil-modalità pubblika biss, it-tgeżwir safe-fetch isolvi wkoll il-hostname u jirrifjuta kwalunkwe risposta privata. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` jitfi dawn il-kontrolli fil-mogħdijiet elenkati fir-ringiela tiegħu. Providers lokali integrati, bħal LM Studio, Ollama, vLLM, Llamafile, u Triton, jaqbżu l-kontrolli kollha tal-host għall-validazzjoni taċ-ċavetta u ċ-chat. Valur salvat mit-toggle fid-dashboard jieħu preċedenza fuq din il-varjabbli. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | Ħalli r-rotot `/v1/audio/*` (traskrizzjonijiet, diskors, traduzzjonijiet) jużaw nodu tal-provider kompatibbli ma’ OpenAI ospitat barra minn localhost. Mitfi b’mod predefinit — ir-routing tal-awdjo lejn host remot ibiddel l-identità tal-egress u jrid ikun deċiżjoni espliċita tal-operatur. Nodi loopback/privati (localhost, 127.0.0.1, 172.16-31.x) huma dejjem permessi u mhux affettwati. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | Ħalli `POST /v1/rerank` (u l-pass loopback ta’ rerank tal-magna tal-memorja) juża nodu tal-provider kompatibbli ma’ OpenAI ospitat barra minn localhost — magna fuq il-LAN jew peer ta’ Tailscale li jħaddem TEI, Infinity, vLLM, eċċ. Mitfi b’mod predefinit — ir-routing lejn host remot ibiddel l-identità tal-egress u jrid ikun deċiżjoni espliċita tal-operatur. Nodi loopback (localhost, 127.0.0.1, 172.16-31.x) huma dejjem permessi u mhux affettwati. Il-URL bażi ta’ nodu remot irid jgħaddi wkoll mill-politika tal-URLs outbound tal-provider (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`). | | `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(vojt)_ | `src/shared/network/localNodeHosts.ts` | Ismijiet tal-hosts (separati b’virgola jew spazji) li r-routing tan-nodi tal-fornitur jittratta bħala lokali — tipikament l-isem tas-servizz Docker/Compose ta’ reranker, TEI jew sidecar tal-awdjo fuq in-network Docker ta’ OmniRoute stess (`http://reranker:8080/v1`), sabiex in-nodu ma jkollux bżonn IP tal-kontejner ikkodifikat direttament. Il-hosts elenkati huma eliġibbli għal `/v1/rerank`, `/v1/audio/*` u l-verifika tas-saħħa lokali mingħajr ma jiġu attivati `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` għal kull nodu remot, u jissejħu direttament — qatt permezz ta’ `HTTP(S)_PROXY` jew proxy ffissat tal-konnessjoni. Xorta jibagħtu ċ-ċavetta API tal-konnessjoni. Jiġu aċċettati biss ismijiet b’tikketta waħda u ismijiet `.internal`/`.local`; FQDNs pubbliċi, indirizzi IP litterali u ismijiet tal-metadata tal-cloud jiġu injorati bi twissija. (#14635) | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Meta OIDC ikun attivat, iddiżattiva l-login bil-password sabiex l-utenti jkunu jistgħu jawtentikaw biss permezz ta’ Single Sign-On b’OIDC. L-alias sempliċi `OIDC_DISABLE_PASSWORD_LOGIN` huwa aċċettat ukoll; il-Feature Flag tad-Dashboard bl-istess ċavetta jieħu preċedenza. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Alias sempliċi ta’ `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889). | ### Lista ta’ Kontroll għat-Tisħiħ tas-Sigurtà ```bash # Minimu tas-sigurtà għall-produzzjoni: AUTH_COOKIE_SECURE=true # Jeħtieġ HTTPS REQUIRE_API_KEY=true # Awtentika s-sejħiet kollha tal-proxy ALLOW_API_KEY_REVEAL=false # Qatt tikxef iċ-ċwievet fl-UI CORS_ALLOWED_ORIGINS=https://your.domain.com MAX_BODY_SIZE_BYTES=5242880 # Limitu ta’ 5 MB ``` --- ## 5. Sanitizzazzjoni tal-Input u Protezzjoni tal-PII OmniRoute jipprovdi difiża b’żewġ saffi: skennjar kontra l-injezzjoni fuq in-naħa tat-talba u t-tneħħija tal-PII fuq in-naħa tar-rispons. > **⚠️ Limitazzjonijiet:** Dawn il-miżuri protettivi huma detezzjonijiet euristiċi tal-_aħjar sforz_, mhux firewall komplut kontra l-injezzjoni fil-prompt jew sistema DLP għall-PII. Jistgħu jipproduċu pożittivi foloz (prompts beninni ta’ persona/RPG jiġu mmarkati) u negattivi foloz (leetspeak, spazjar, mudelli mhux bl-Ingliż). Waħedhom mhumiex biżżejjed għall-konformità. Irranġa l-modi u ttestjahom mat-traffiku tiegħek qabel tiddependi fuqhom. ### Fuq in-Naħa tat-Talba: Protezzjoni Kontra l-Injezzjoni fil-Prompt | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | --------------------------------- | ------------------ | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Jippermetti l-iskennjar tal-messaġġi deħlin għal mudelli ta’ injezzjoni fil-prompt. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Politika tal-injezzjoni: `warn` = irreġistra biss, `block` = irrifjuta t-talba b’400. Il-modalità antika `redact` **ma** tneħħix it-test tal-injezzjoni; uża `PII_REDACTION_ENABLED` biex tikteb mill-ġdid il-PII fit-talba. | | `INJECTION_GUARD_MODE` | _(mhux issettjat)_ | `src/middleware/promptInjectionGuard.ts` | Alias antik għal `INPUT_SANITIZER_MODE` — l-istess imġiba. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | Is-severità minima li `MODE=block` jirrifjuta: `high` (predefinita), `medium`, jew `low`. Il-mudelli ta’ severità medja jiġu osservati biss sakemm il-livell ma jitbaxxiex. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(mhux issettjat)_ | `src/shared/utils/injectionSeverity.ts` | Alias antik għal `INPUT_SANITIZER_BLOCK_THRESHOLD` — l-istess imġiba. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | Meta jkun `true`, jaħbi l-PII fit-talbiet deħlin (indipendentement mill-modalità tal-injezzjoni). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | Jaħbi mudelli magħrufa sew ta’ ċwievet tal-API / tokens sigrieti mill-payloads tat-talbiet u tar-risposti. Fakultattiv; jirrifletti `PII_REDACTION_ENABLED`. | ### Fuq in-Naħa tar-Rispons: Sanitizzatur tal-PII | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | -------------------------------- | ---------------- | ------------------------- | ----------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Jiskennja r-risposti tal-LLM għal PII żvelata qabel jirritornahom lill-klijent. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = aħbi l-PII, `warn` = irreġistra biss, `block` = warrab ir-rispons kollu. | ### Sanitizzatur tal-Kuntest tar-Rotta b’Token ta’ VS Code | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ----------------------------------- | ---------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | Ineħħi l-kuntest impliċitu tal-editur attiv (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) mit-talbiet lil `/v1/vscode/[token]/*` u jaħbi l-kontenut ta’ fajls sensittivi mehmuża b’mod espliċitu. Sikur b’mod predefinit; issettjah għal `0` biex tiddiżattivah. | ### Xenarji | Xenarju | Konfigurazzjoni | | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Konformità tal-intrapriża** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (imblukkar tal-injezzjoni + ħabi tal-PII fit-talbiet/risposti; il-modi huma indipendenti) | | **Monitoraġġ biss** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — jirreġistra iżda qatt ma jimblokka | | **Użu personali** | Ħallihom kollha diżattivati — ebda spiża addizzjonali | --- ## 6. Politiki tal-Għodod u tar-Rotot | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ----------------------------------------------------------- | ---------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | Jikkontrolla l-aċċess tal-LLM għas-sejħiet ta’ għodod/funzjonijiet. `allowlist` = l-għodod elenkati biss, `denylist` = kollha ħlief dawk elenkati, `disabled` = ebda restrizzjoni. | | `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Mogħdija għall-fajl JSON tar-regoli għall-manipulazzjoni tal-payload (aġġustamenti upstream skont il-mudell/protokoll). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Intervall ta’ tagħbija mill-ġdid (ms) għat-tagħbija dinamika mill-ġdid tal-fajl tar-regoli tal-payload. Minimu `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Għażla fakultattiva: idderieġi l-IDs tal-mudelli `claude-*` mingħajr prefiss minn klijenti Claude Code permezz tal-kont OAuth ta’ Claude Code minflok ma teħtieġ prefiss tal-fornitur. Il-prefissi espliċiti tal-fornituri xorta jieħdu preċedenza. Jista’ jiġi kkonfigurat ukoll permezz ta’ swiċċ fid-dashboard fuq il-paġna tal-fornitur Claude. | | `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Imġiba legata ta’ `resolveBareModelToConnectionDefault` (#4825): ibdel kwalunkwe isem ta’ mudell mingħajr prefiss bil-`defaultModel` tal-konnessjoni magħżula. Mitfi b’mod predefinit; jiġu sostitwiti biss `auto` jew mudell vojt; meta jkun mixgħul, jirreġistra twissija waħda għal kull par. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Limitu ta’ konkorenza għal kull mudell għal kombinazzjonijiet round-robin (#9100). Is-semaforu tal-kombinazzjoni round-robin kellu limitu fiss ta’ 3 talbiet konkorrenti għal kull mudell mingħajr possibbiltà ta’ override, u b’hekk it-traffiku b’konkorrenza ogħla kien jiġi sserjalizzat wara dak il-limitu. Ivvalidat għal `>= 1`, limitat għal `<= 32`. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Għażla fakultattiva perikoluża li taqbeż il-verifika lokali ta’ OmniRoute għat-tieqa tal-kuntest / l-għadd massimu ta’ tokens tal-input għal talbiet diretti lil mudell wieħed. Il-fornituri upstream xorta jinfurzaw il-limiti effettivi tagħhom; il-kompressjoni tal-prompt u l-limitu tat-tokens tal-output tal-mudell stess jibqgħu attivi. Il-preċedenza effettiva hija override fid-DB tal-Feature Flags > varjabbli tal-ambjent > valur predefinit; ma huwa meħtieġ ebda restart. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(mhux issettjat)_ | `open-sse/services/selfHostedEntry.ts` | Dokument YAML inline `providers:` (RIC-738, D4). Meta jkun issettjat (bi blokka `strategy:` jew mingħajrha), `/v1/chat/completions` jiġi ddevjat lejn l-endpoint unifikat self-hosted kompatibbli ma’ OpenAI minflok lejn il-pipeline tal-cloud. Meta ma jkunx issettjat (il-valur predefinit): ir-rotta tgħaddi direttament għall-pipeline eżistenti tal-cloud. Ara `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(mhux issettjat)_ | `open-sse/services/selfHostedEntry.ts` | Mogħdija għal fajl YAML li jkun fih l-istess dokument `providers:` bħal `OMNIROUTE_SELF_HOSTED_PROVIDERS`, għal deployments li jippreferu fajl minflok varjabbli tal-ambjent inline. Kwalunkwe wieħed minnhom jattiva l-endpoint self-hosted. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _(mhux issettjat — rotta miftuħa)_ | `open-sse/services/selfHostedEntry.ts` | API key kondiviża fakultattiva għall-endpoint unifikat self-hosted (scaffold D5, riżervat għas-sistema ta’ kwoti għal kull key). Meta tkun issettjata, it-talbiet iridu jinkludu `Authorization: Bearer `. Meta ma tkunx issettjata: ir-rotta tkun miftuħa, b’mod konformi mal-mudell eżistenti tal-fornitur lokali self-hosted (deployment fuq loopback/netwerk fdat). | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(mhux issettjat)_ | `open-sse/services/routingStrategies.ts` | Dokument YAML inline `strategy:` għall-magna deterministika tar-rotot (M2/RIC-740, D3) — lista sewda/lista bajda, circuit breaker b’perjodu ta’ stennija, prijorità skont l-ispiża, konxju tal-latenza, katina ta’ fallback. Jagħmel override ta’ blokka inline `strategy:` innestata ġewwa `OMNIROUTE_SELF_HOSTED_PROVIDERS`, għal kull key. Ara `docs/routing/DETERMINISTIC_ROUTING.md`. | | `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(mhux issettjat)_ | `open-sse/services/routingStrategies.ts` | Mogħdija għal fajl YAML li jkun fih l-istess dokument `strategy:` bħal `OMNIROUTE_SELF_HOSTED_STRATEGY`, għal skjeramenti li jippreferu fajl minflok varjabbli tal-ambjent inline. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(mhux issettjat)_ | `open-sse/services/conversationTracker.ts` | Issettja `1` biex twaqqaf il-ġbir tal-istorja tal-konversazzjonijiet. `resolveConversationId()` jirritorna riżultat mhux traċċat qabel ma jaqra SQLite jew jipproċessa l-istorja tal-messaġġi, u l-IDs tas-sessjoni pprovduti mill-klijent huma koperti wkoll. L-immaniġġjar tas-sessjoni tar-routing jibqa' l-istess u r-rekords eżistenti ma jitħassrux. Għal skjeramenti li ma jużawx id-dehra tal-konversazzjonijiet tad-dashboard u jridu li t-tabella tat-turns tieqaf tikber. | | `OMNIROUTE_NADIR_API_KEY` | _(mhux issettjat)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | Ċavetta tal-API għall-istrateġija fakultattiva tar-router auto-combo `nadir`, użata meta `config.nadir.apiKey` tal-combo nnifsu ma jkunx issettjat. Fakultattiva: sejħiet mingħajr ċavetta jgħaddu għal-livell anonimu ta' Nadir, li għandu limitu tar-rata għal kull IP u għalhekk ma jistax jintuża wara gateway kondiviż. Sensittiva; ippreferi l-kamp għal kull combo meta l-combos jużaw kontijiet differenti. | | `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | L-oriġini bażi tal-API tad-deċiżjonijiet ta' Nadir, użata meta `config.nadir.baseUrl` tal-combo nnifsu ma jkunx issettjat. Meħtieġa biss għal Nadir self-hosted, li jżomm il-bidu tal-prompts fin-network tiegħek stess. `/v1` fl-aħħar huwa aċċettat u jitneħħa. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | Intervall ta' kull ġimgħa għal-limiti tal-użu f'USD għal kull ċavetta tal-API (infurzar tat-talbiet, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: il-ġimgħa tintemm mal-ewwel reset ta' kull ġimgħa fost il-konnessjonijiet upstream li ċ-ċavetta tista' taċċessa, jew tkun perjodu kontinwu ta' 7 ijiem meta ma jkun magħruf l-ebda reset. `calendar`: il-ġimgħa lokali mit-Tnejn 00:00 sat-Tnejn ta' wara 00:00, identika għal kull ċavetta. `calendar` huwa rakkomandat meta ġabra waħda ta' kontijiet upstream tkun kondiviża minn ħafna ċwievet b'baġits individwali. Valuri invalidi jerġgħu lura għal `provider`. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(iż-żona tal-ħin tal-proċess)_ | `src/lib/usage/apiKeyUsageLimits.ts` | Żona tal-ħin IANA (pereżempju `Asia/Shanghai`) li tiddefinixxi t-Tnejn 00:00 għall-intervall ta' kull ġimgħa `calendar`. Mhux issettjata jew invalida: iż-żona tal-ħin tal-proċess OmniRoute (it-`TZ` tal-host jew tal-container, li spiss ma tkunx issettjata, jiġifieri l-Ħin Universali Koordinat, fl-images tal-containers). Injorata fil-modalità `provider`. | | `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | In-numru massimu predefinit ta' għodod permessi f'talba (il-valur predefinit ta' OpenAI). Numri sħaħ pożittivi biss; valuri mhux issettjati jew invalidi jżommu `128`. Fornitur b'limitu magħruf/proattiv (`grok-cli` 200, `nvidia` 1536) xorta japplika l-limitu massimu tiegħu stess — dan ibiddel biss il-limitu massimu predefinit. | | `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(mixgħul)_ | `open-sse/executors/syntxChat.ts` | Sejħiet ta' għodod emulati permezz tal-prompt ta' SYNTX.ai: jekk mhux issettjat jew ikun `1`/`true`/`on`/`yes`, il-katalgu lokali tal-għodod jiddaħħal fil-prompt; kwalunkwe valur ieħor (eż. `0`) jaqbeż dik l-injezzjoni. | --- ## 7. URLs u Sinkronizzazzjoni mal-Cloud | Varjabbli | Valur Default | Fajl tas-Sors | Deskrizzjoni | | ---------------------------------------- | --------------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | URL min-naħa tas-server biex il-kompiti interni tas-sinkronizzazzjoni jsejħu `/api/sync/cloud`. Żomm dan bħala URL tal-loopback/kontenitur anke meta l-app tkun aċċessibbli pubblikament permezz ta’ proxy. | | `CLOUD_URL` | _(vojt)_ | `src/lib/cloudSync.ts` | URL tal-endpoint tar-relay tal-cloud (funzjonalità premium). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | Limitu taż-żmien HTTP għat-talbiet tas-sinkronizzazzjoni mal-cloud. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Konfigurazzjoni tal-build ta’ Webpack | Profil waqt il-build (issettjah għal `minimal` biex teskludi fiżikament il-moduli privileġġati mill-bundle). | | `OMNIROUTE_STANDALONE_DIR` | _output standalone ta’ .build/_ | `scripts/build/colocate-standalone.mjs` | Override waqt il-build għad-direttorju tal-output standalone użat mill-pass ta’ kolokazzjoni ta’ wara l-build. Din mhijiex konfigurazzjoni waqt l-eżekuzzjoni. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(vojt)_ | `src/lib/cloudSync.ts` | Sigriet kondiviż użat biex tiġi vverifikata l-firma HMAC-SHA256 tat-tweġibiet tas-Sinkronizzazzjoni mal-Cloud. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Issettja għal `true` biex tippermetti lill-endpoint tas-Sinkronizzazzjoni mal-Cloud jissostitwixxi l-kredenzjali lokali. Il-valur default huwa `false`. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Issettja għal `true` biex tirrifjuta tweġiba mhux iffirmata tas-Sinkronizzazzjoni mal-Cloud meta ma jkun ikkonfigurat ebda sigriet lokali (#13679). Firma preżenti dejjem tiġi vverifikata — u dejjem tiġi rrifjutata meta `OMNIROUTE_CLOUD_SYNC_SECRET` ma jkunx issettjat — irrispettivament minn dan l-indikatur. Il-valur default jinbidel għal infurzat f’v3.9. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | Issettja għal `true` biex terġa’ lura għall-imġiba ta’ v3.8.5 fi stadju wieħed li “timporta kollox” mingħajr konferma mill-utent. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, Dashboard, sinkronizzazzjoni | URL pubbliku għal OAuth redirect_uri, links tad-Dashboard, u URLs pubbliċi ġġenerati. Issettja dan għall-URL pubbliku stabbli meta callbacks ta’ OAuth jew links iġġenerati għall-browser ikollhom jużaw host canoniku ta’ reverse proxy. | | `NEXT_PUBLIC_CLOUD_URL` | _(vojt)_ | Min-naħa tal-klijent | Kopja min-naħa tal-klijent ta’ `CLOUD_URL`. | | `NEXT_PUBLIC_APP_URL` | _(mhux issettjat)_ | `src/shared/services/cloudSyncScheduler.ts` | Alternattiva ta' riżerva antika għal `NEXT_PUBLIC_BASE_URL`. | | `NEXT_PUBLIC_PORT` | _(mhux issettjat — jaqa' lura għal `PORT`)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Port ta' riżerva fuq in-naħa tal-klijent għall-URLs tal-wiri meta ma tkun magħrufa ebda oriġini (SSR/testijiet); jinqara qabel `PORT`. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(mhux issettjat)_ | Riżolvitur tal-oriġini pubblika, URLs tal-immaġnijiet | L-oriġini OmniRoute li tidher mill-brawżer bl-ogħla prijorità, użata għall-ġenerazzjoni ta' URLs pubbliċi u għall-validazzjoni tal-oriġini tal-brawżer barra mid-dashboard. Issettja din meta OpenWebUI jew relay ieħor jaċċessa OmniRoute permezz ta' URL intern, iżda l-brawżer tal-utent ikollu jġib il-midja ġġenerata minn LAN, mina, jew oriġini pubblika. **Tinkludix** `/v1`. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(mhux issettjat)_ | `open-sse/config/providerPluginManifestUrl.ts` | URL assolut tal-manifest tal-plugin tal-fornitur irreklamat lill-klijenti sidecar. Meta ma jkunx issettjat, OmniRoute jidderiva `/api/v1/provider-plugin-manifest` mill-oriġini tat-talba jew minn HOST/PORT. | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Protokoll użat meta jiġi dderivat il-URL tal-manifest tal-plugin tal-fornitur minn HOST/PORT mingħajr oriġini tat-talba. Issettjah għal `https` wara proxy pubbliku li jittermina TLS meta ma jkun issettjat ebda `OMNIROUTE_PROVIDER_MANIFEST_URL` espliċitu. | | `OMNIROUTE_TRUST_PROXY` | _(mhux issettjat)_ | `src/server/origin/publicOrigin.ts` | Modalità ta' fiduċja fakultattiva għall-headers mgħoddija tal-oriġini pubblika. Mhux issettjat = tafdax `Forwarded` / `X-Forwarded-*` għal deċiżjonijiet tas-sigurtà. `true` / `loopback` jafda l-host/protokoll mgħoddija biss minn proxy loopback immarkat b'token. `private` / `lan` jafda wkoll peers proxy fuq LAN privata, u jippermetti lill-bridge ta' `API_PORT` iżomm l-`X-Forwarded-For` ta' peer bħal dan. Fil-produzzjoni, ippreferi `NEXT_PUBLIC_BASE_URL` espliċitu. | | `KIE_CALLBACK_URL` | _(mhux issettjat)_ | `open-sse/utils/kieTask.ts` | URL pubbliku ta' callback għal xogħlijiet asinkroni kie.ai. Override bl-ogħla prijorità qabel `OMNIROUTE_KIE_CALLBACK_URL` u `OMNIROUTE_PUBLIC_URL`. | | `OMNIROUTE_KIE_CALLBACK_URL` | _(mhux issettjat)_ | `open-sse/utils/kieTask.ts` | Ortografija alternattiva ta' `KIE_CALLBACK_URL`. Jintuża bħala riżerva meta l-varjabbli primarja ma tkunx issettjata. | | `OMNIROUTE_PUBLIC_URL` | _(mhux issettjat)_ | `open-sse/utils/kieTask.ts` | Oriġini pubblika użata biex jinħolqu URLs ta' callback asinkroni. Alternattiva ta' riżerva bl-aktar prijorità baxxa għal callbacks ta' kie.ai; tintuża wkoll bħala URL pubbliku ġeneriku għal relays oħra. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Endpoint għat-tiftix tal-kwota ta' CrofAI użat mill-paġna tal-Użu. Issostitwih għal relays / fixtures tat-testijiet. | | `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | Endpoint tal-kwota ta' 5 sigħat / ta' kull ġimgħa / ta' kull xahar ta' ClinePass użat mill-paġna tal-Użu. Issostitwih għal relays / fixtures tat-testijiet. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Endpoint uffiċjali tal-użu ta' OpenCode Go awtentikat b'ċavetta API u użat mill-paġna tal-Użu. Issostitwih għal relays / fixtures tat-testijiet. | | `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | Jiġġenera headers tal-identità tal-CLI ta' OpenCode (User-Agent, x-opencode-client/project, UUIDs tat-talba/sessjoni) fuq talbiet upstream ta' opencode-go/zen li l-klijent ma jkunx bagħat, sabiex Cloudflare fuq ħruġ minn VPS jaċċettahom (#6210/#5997). Attivat b'mod awtomatiku minn #10571; iddiżattivah b'`false`/`0`/`no`/`off`. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | User-Agent predefinit użat meta `OPENCODE_SYNTHESIZE_CLI_HEADERS` ikun attivat u ma jkun stabbilit l-ebda override `_USER_AGENT` għal fornitur speċifiku. Jiġi applikat biss għall-eżekuturi ta’ opencode. Fuq talba mingħajr ċavetta li tiġi kkontrollata mill-gates upstream, valur ikkonfigurat li ma jkunx fih `opencode/= 1.17>` jiġi sostitwit b’dan il-valur predefinit minflok ma jiġi rrifjutat. | | `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (attivat) | `open-sse/utils/opencodeHeaders.ts` | Jibgħat il-headers tal-attribuzzjoni tal-app tal-klijent (`x-session-id`, `x-title`, `http-referer`) lill-fornituri upstream, sabiex talba li tibda ġewwa harness elenkat iżżomm l-identità tagħha permezz tar-router (il-gates tal-pubblikaturi ta’ OpenRouter jiddependu fuq dawn). `0`/`false`/`no`/`off` iżomm l-identità tar-reġistru/operatur u jneħħi l-valuri pprovduti mill-klijent. Headers personalizzati kkonfigurati mill-operatur dejjem jieħdu preċedenza fuq il-valuri tal-klijent. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | Valur għall-header sintetizzat `x-opencode-client` meta `OPENCODE_SYNTHESIZE_CLI_HEADERS` ikun attivat. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | Valur għall-header sintetizzat `x-opencode-project` meta `OPENCODE_SYNTHESIZE_CLI_HEADERS` ikun attivat. | | `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(mhux issettjat)_ | `open-sse/config/providerErrorRules.ts` | Is-sett effettiv ta’ fornituri li l-fallimenti upstream tagħhom jiġu raggruppati skont l-IP tal-ħruġ (429 wieħed iwaqqaf kull konnessjoni relatata li taqsam dak l-IP). Jekk mhux issettjat, jintuża l-valur predefinit tal-livell bla ħlas `opencode,opencode-go,opencode-cli`; `none`/`off`/`false`/`0` jiddiżattiva kompletament il-kaskata; lista separata b’virgoli tissostitwixxi s-sett. Il-pjanijiet imħallsa jiġu raggruppati skont il-kont upstream u jistgħu jiddiżattivawh b’mod sikur (#9611). | | `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(mhux issettjat)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Issettja għal `off` biex twaqqaf l-aġġustament tal-body tat-talbiet OpenCode mingħajr ċavetta (il-flag tal-istreaming u l-lista tal-għodod). Il-headers xorta jiġu applikati. Jinqara għal kull talba, għalhekk bidla tidħol fis-seħħ minnufih. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(mhux issettjat)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Ismijiet ta’ għodod separati b’virgoli li għandhom jiġu ddikjarati fuq talba OpenCode mingħajr ċavetta li ma ġġorr l-ebda waħda, meta jkun għadu ma ġie osservat xejn għal dak il-mudell. Valur vojt jerġa’ juża placeholder wieħed li l-mudell jingħata struzzjoni biex ma jsejjaħx. Massimu ta’ 32 entrata, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; entrati invalidi jiġu injorati. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | URL tas-settings ta’ Ollama Cloud użat għall-estrazzjoni tal-kwota. Issostitwih għal relays / fixtures tat-testijiet. | | `OLLAMA_USAGE_COOKIE` | _(mhux issettjat)_ | `open-sse/services/usage.ts` | Cookie `__Secure-session` ta’ Ollama Cloud użat għall-estrazzjoni tal-kwota mill-paġna tas-settings. Sensittiv; meta jkunu kkonfigurati diversi kontijiet, ippreferi l-field tad-Dashboard għal kull konnessjoni. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(mhux issettjat)_ | `open-sse/services/usage.ts` | Varjabbli tal-ambjent alternattiva għall-cookie `__Secure-session` ta’ Ollama Cloud. Sensittiva; meta jkunu kkonfigurati diversi kontijiet, ippreferi l-field tad-Dashboard għal kull konnessjoni. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(mhux issettjat)_ | `open-sse/services/usage.ts` | Varjabbli tal-ambjent alternattiva għall-cookie `__Secure-session` ta’ Ollama Cloud, użata qabel l-aliases iqsar. Sensittiva; meta jkunu kkonfigurati diversi kontijiet, ippreferi l-field tad-Dashboard għal kull konnessjoni. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | Endpoint tal-limiti tal-użu ta’ CodeWhisperer (AWS Kiro). Issostitwih għal relays / fixtures tat-testijiet. | > [!IMPORTANT] > Meta tkun qed tagħmel deployment wara reverse proxy (nginx, Caddy), issettja `NEXT_PUBLIC_BASE_URL` għall-URL pubbliku stabbli tiegħek (eż., `https://omniroute.example.com`) meta l-callbacks ta’ OAuth jew il-links pubbliċi ġġenerati jkollhom jużaw dak l-hostname. Mingħajr dan, il-callbacks ta’ OAuth jistgħu jfallu minħabba li r-redirect_uri ma tkunx taqbel, u l-links pubbliċi ġġenerati jistgħu jippuntaw lejn l-oriġini interna tal-container. > > Żomm `BASE_URL` bħala URL intern tal-loopback/container għal kompiti minn server għal server. Tużax `Origin` tal-browser jew hostname pubbliku għal self-fetches interni li jinkludu kredenzjali. > > Il-kitbiet awtentikati mid-dashboard ma jeħtiġux URL bażi pubbliku statiku: id-dashboard jibgħat talbiet mhux sikuri tal-istess oriġini b’token CSRF marbut mas-sessjoni. OmniRoute xorta jiċċentralizza l-validazzjoni tal-oriġini pubblika għal integrazzjonijiet tal-browser li mhumiex tad-dashboard: l-ewwel jiġu fdati l-varjabbli tal-ambjent espliċiti għall-URL pubbliku; l-headers mhux ipproċessati `Forwarded` / `X-Forwarded-*` jiġu injorati sakemm `OMNIROUTE_TRUST_PROXY` ma jkunx attivat u l-peer tal-proxy immedjat ma jkunx immarkat b’token bħala fdat. Tużax is-settings ta’ CORS biex tirranġa talbiet tad-dashboard tal-istess oriġini; CORS huwa biss għal klijenti tal-browser minn oriġini differenti. --- ## 8. Proxy tal-Ħruġ Idderieġi s-sejħiet lill-fornitur LLM upstream permezz ta’ proxy HTTP jew SOCKS5 għall-kontroll tal-ħruġ, għar-rottaġġ ġeografiku, jew għall-ħabi tal-IP. `OMNIROUTE_UPSTREAM_HTTP2_ENABLED` għandu valur predefinit ta’ `true`. Issettjah għal `false`, `0`, `no`, jew `off` biex timponi HTTP/1.1 fuq id-dispatchers Undici f’`open-sse/utils/proxyDispatcher.ts` u `open-sse/utils/proxyFetch.ts`: ħruġ dirett, proxies HTTP(S)/SOCKS, relays, u t-tentattivi mill-ġdid tagħhom b’socket ġdid. Dan iżomm il-verifika taċ-ċertifikat TLS, l-awtentikazzjoni tal-proxy, il-limiti tal-konnessjonijiet, u s-settings tal-keep-alive. Erġa’ ibda OmniRoute wara li tbiddlu, għax id-dispatchers jinżammu fil-cache u l-aġenti tar-relay jinħolqu waqt l-istartjar. Dan is-swiċċ ma jikkontrollax it-TLS fingerprinting ta’ wreq jew it-trasporti speċifiċi għall-fornituri. | Varjabbli | Valur predefinit | Fajl tas-sors | Deskrizzjoni | | ---------------------------------------- | ------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Jippermetti l-aġent proxy SOCKS5 għal sejħiet upstream. Iddiżattivah b’`false`. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Min-naħa tal-klijent | Għarfien min-naħa tal-klijent dwar id-disponibbiltà ta’ SOCKS5. | | `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Flag tal-karatteristika attiv b’mod predefinit (ara [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); override mid-DB tad-dashboard jieħu preċedenza). Il-pools tal-proxy u r-rotazzjoni għal kull kont jieqfu jerġgħu jservu membru li jkun għadu kemm falla (sonda TCP miċħuda, jew 429 permezz tiegħu) għal perjodu li jirdoppja ma’ kull ripetizzjoni, sa limitu massimu. `false` jirrestawra l-għażla sempliċi. | | `SELECTOR_CONTROL_ALLOWLIST` | _(mhux issettjat)_ | `src/lib/proxySubscription/selectorGuard.ts` | Lista ta’ permessi għal miri lokali ta’ kontroll tas-selettur lil hinn mil-loopback (hosts jew IPs separati b’virgoli/spazji; `*` jiftaħ il-LAN/privat iżda qatt il-metadata/link-local). Il-loopback permezz ta’ http/https huwa permess b’mod predefinit. Valur mid-DB tad-dashboard jieħu preċedenza fuq din il-varjabbli meta jkun issettjat u mhux vojt. | | `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | Il-perjodu bażi (ms) tat-twarrib minħabba 429, li jirdoppja ma’ kull ripetizzjoni. Jinqara darba waqt l-istartjar. Limitat għal `1000..3600000`; valur barra mill-medda jew li ma jistax jinqara jerġa’ lura għall-valur predefinit bi twissija. | | `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | Il-limitu massimu (ms) tat-twarrib minħabba 429. Jinqara darba waqt l-istartjar. Limitat għal `1000..3600000`; valur barra mill-medda jew li ma jistax jinqara jerġa’ lura għall-valur predefinit bi twissija. Meta l-limitu massimu jkun inqas mill-bażi, jerġa’ lura għall-valur predefinit. It-tnaqqis tal-limitu massimu jqassar ukoll iż-żmien biex is-sensiela tintesa: l-entrati jitneħħew `2 x max` wara l-iskadenza. | | `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | Flag tal-karatteristika li jiġi attivat b’mod fakultattiv (ara [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); override mid-DB tad-dashboard jieħu preċedenza). Għall-fornituri li l-kwota tagħhom tinġabar skont l-indirizz tal-ħruġ, jikklassifika membru tal-pool li jaqsam l-indirizz tal-ħruġ osservat ta’ membru miċħud reċentement eżatt taħt il-membri f’saħħithom. Jaffettwa biss l-ordni u qatt ma jeskludi. Jeħtieġ `PROXY_SKIP_RECENTLY_FAILED`, li jipproduċi s-sinjal ta’ rifjut li jaqra. | | `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | Tieqa ta’ rebound (ms) li tillimita t-twissijiet ripetuti tal-webhook `proxy.set_aside` għal kull membru tal-pool sabiex mewġa ta’ rifjuti tibgħat avveniment wieħed. Tinqara ma’ kull emissjoni. Limitata għal `1000..3600000`; valur barra mill-medda jew li ma jistax jinqara jerġa’ lura għall-valur predefinit mingħajr twissija. | | `HTTP_PROXY` | _(mhux issettjat)_ | Standard ta’ Node.js | Proxy HTTP għal sejħiet upstream. | | `HTTPS_PROXY` | _(mhux issettjat)_ | Standard ta’ Node.js | Proxy HTTPS għal sejħiet upstream. | | `ALL_PROXY` | _(mhux issettjat)_ | Standard ta’ Node.js | Proxy universali (jappoġġja `socks5://`). | | `OMNIROUTE_PROXY_ECHO_URL` | _(mhux issettjat)_ | `src/lib/proxyEchoTarget.ts` | Jorbot il-mira tal-echo-IP użata mis-sondi tal-ħruġ tal-proxy ma' URL wieħed. Meta ma jkunx issettjat, is-sonda tipprova `api64.ipify.org` u mbagħad `api4.ipify.org` sabiex tunnels li jaħdmu biss b'IPv4 ma jiġux irrapportati bħala inattivi (#9694). | | `NO_PROXY` | _(mhux issettjat)_ | Standard ta' Node.js | Ismijiet tal-hosts/IPs separati b'virgoli biex jiġi evitat il-proxy. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Għadd massimu ta' sockets konkorrenti għal kull dispatcher tal-proxy HTTP/SOCKS fil-cache. Flussi SSE fit-tul bħal Codex `/v1/responses` jeħtieġu aktar minn konnessjoni waħda meta diversi talbiet jaqsmu l-istess proxy fil-livell tal-kont. Il-valuri ogħla minn `256` jiġu limitati. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | Limitu ta' żmien f'ms għall-handshake (konnessjoni) ta' SOCKS5. Għollih meta host wieħed ta' gateway residenzjali jintlaqat minn konkorrenza għolja (eż. 100 talba simultanja) — il-handshake reali jista' jaqbeż l-10s meta l-pool ikun saturat, anki jekk il-proxy ikun aċċessibbli, u mingħajr dan jidher b'mod żbaljat bħala `[Proxy Fast-Fail] Proxy unreachable`. Limitat għal `120000`. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | Meta jkun `false` (default), talba li l-proxy assenjat lilha ma jirnexxilux jiġi solvut tiġi **rrifjutata (fail-closed)** minflok ma taqa' lura għal konnessjoni diretta — dan jipprevjeni tnixxijiet tal-IP reali. Issettjah għal `true` biex terġa' tattiva l-alternattiva DIRETTA preċedenti. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | Jiffalsifika l-marki tas-swaba' TLS bl-użu ta' wreq-js (jimita Chrome 124). Jikkontrobatti l-imblukkar JA3/JA4. | | `TLS_FINGERPRINT_PROVIDERS` | _(mhux issettjat)_ | `open-sse/utils/proxyFetch.ts` | Lista ta' fornituri permessi, separati b'virgoli, għar-routing TLS il-ġdid permezz ta' proxy (`open-sse/utils/proxyFetch.ts`). TLS dirett iżomm l-imġiba preċedenti tiegħu meta dan ma jkunx issettjat; dawn il-fornituri biss jiġu diretti mill-bridge tal-marki tas-swaba' ta' Chrome 124. Groq (`api.groq.com`) huwa eskluż anki meta l-lista tal-permessi ma tkunx issettjata, għax Chrome JA3 jiskatta Cloudflare 1010 filwaqt li undici nattiv jilħaq l-API. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Jippermetti lill-kuntest tal-browser Playwright ta' Claude Turnstile jinjora żbalji taċ-ċertifikati HTTPS. | ### Xenarji | Xenarju | Konfigurazzjoni | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **SOCKS5 permezz ta' tunnel SSH** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` | | **Proxy HTTP korporattiv** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` | | **Kontra l-marki tas-swaba'** | `ENABLE_TLS_FINGERPRINT=true` — jeħtieġ `wreq-js` (inkluż) | | **Ħruġ ikkontrollat / ebda aċċess dirett** | Ħalli `PROXY_FAIL_OPEN=false` (default). It-talbiet ifallu kompletament meta l-proxy ma jkunx disponibbli minflok ma jnixxu permezz ta' konnessjoni diretta. | | **Preċedenti / żvilupp — ippermetti alternattiva diretta** | `PROXY_FAIL_OPEN=true`. Jerġa' jattiva l-imġiba ta' qabel it-tisħiħ: tintuża konnessjoni diretta meta s-soluzzjoni tal-proxy tfalli. | > **Nota (evitar tal-validazzjoni ta' NVIDIA — #3226):** L-endpoint ta' NVIDIA għall-validazzjoni taċ-ċavetta API > jeħel meta jiġi dirett permezz tal-fetch globali bil-proxy/bit-TLS patched (dispatcher ta' undici → 504). > `src/lib/providers/validation.ts::directHttpsRequest()` intenzjonalment jevita l- > patch tal-proxy għal dik is-sejħa waħda ta' validazzjoni billi juża `safeOutboundFetch({ bypassProxyPatch: true })`. > Din hija eċċezzjoni dokumentata u limitata fl-ambitu — **ma** taffettwax il-ħruġ taċ-chat/tal-użu. > L-evitar huwa marbut ma' dan l-ambitu minn `tests/unit/proxy-bypass-scope-guard-3226.test.ts`. --- ## 9. Integrazzjoni tal-Għodda CLI Jikkontrolla kif OmniRoute jiskopri u jħaddem sidecars CLI (Claude Code, Codex, eċċ.). | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | --------------------------------- | -------------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = fittex fil-PATH tas-sistema; `manual` = uża biss mogħdijiet speċifiċi. | | `CLI_EXTRA_PATHS` | _(mhux issettjat)_ | `src/shared/services/cliRuntime.ts` | Entrati addizzjonali fil-PATH għall-iskoperta tal-fajls binarji tas-CLI (separati b’żewġ punti). | | `CLI_CONFIG_HOME` | _(mhux issettjat)_ | `src/shared/services/cliRuntime.ts` | Jissostitwixxi d-direttorju home għall-qari tal-konfigurazzjonijiet tas-CLI (`~/.claude`, `~/.codex`). Għandu jkun assolut u ġewwa l-home tal-proċess — **jew**, f’container, mogħdija mmuntata b’bind mount (hekk jaħdem `/host-home`). Kull ħaġa oħra terġa’ taqa’ lura għad-direttorju home. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | Jippermetti lil OmniRoute jikteb il-fajls tal-konfigurazzjoni tas-CLI (aġġornament tat-token, data tas-sessjoni). Issettjah għal `false` biex kull tentattiv ta’ kitba fil-konfigurazzjoni tas-CLI ifalli bi żball espliċitu ta’ "kitbiet diżattivati". | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Claude. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Codex. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Droid. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ OpenClaw. | | `CLI_CURSOR_BIN` | `agent`, imbagħad `cursor` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tal-aġent ta’ Cursor. Mingħajrha, l-iskoperta l-ewwel tipprova `agent` u, jekk ma jirnexxilhiex, tuża `cursor`. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Cline. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ 5dive. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | Id-direttorju tal-istat tas-sistema ta’ 5dive (profili tal-awtentikazzjoni proprjetà ta’ root); jirrifletti l-valur predefinit STATE_DIR ta’ 5dive stess. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Continue. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Qoder. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Qwen Code. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Aider. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Goose. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Google Gemini — għall-iskoperta u l-kontrolli tas-saħħa min-naħa tas-server biss; `omniroute run gemini` jirriżolvi l-fajl binarju `gemini` mill-PATH tas-sistema. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ Kilo Code. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-fajl binarju tas-CLI ta’ OpenCode. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju ta’ Hermes. Kondiviża miż-żewġ entrati tal-katalgu (`hermes` u `hermes-agent`). | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ ForgeCode. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ jcode. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tat-TUI ta’ DeepSeek. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ CodeWhale. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ Smelt. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju ta’ Pi (pi-coding-agent). | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ Crush. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tal-aġent Oh My Pi (`omp`). | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ Letta. | | `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju ta’ Prime Agent (Prime Intellect). | | `CLI_WINDSURF_BIN` | _(ebda wieħed)_ | `src/shared/services/cliRuntime.ts` | Mogħdija personalizzata għall-binarju ta’ Windsurf. Windsurf jiġi **mingħajr kmand predefinit** — l-identifikazzjoni tal-binarju tibqa’ diżattivata sakemm dan jiġi ssettjat. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Mogħdija personalizzata għall-binarju tas-CLI ta’ Devin (v3.8.0). Użata mill-eżekutur ta’ Windsurf/Devin. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | `ide_version` ta’ Devin Desktop. Is-sostituzzjonijiet iridu jużaw il-format `x.y.z`; valuri invalidi jerġgħu lura għall-valur predefinit ivverifikat. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | `extension_version` inkluża ta’ Codeium/language-server, distinta mill-`ide_version` ta’ Desktop. Is-sostituzzjonijiet iridu jużaw `x.y.z`; valuri invalidi jużaw il-valur predefinit inkluż. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Sostituzzjoni tas-CLI ta’ Devin għall-bridge aġentiku biss. L-eżekutur jaċċetta biss l-upstream ACP stdio lokali. | | `DEVIN_AGENTIC_HOME` | _(meħtieġ)_ | `open-sse/executors/devin-cli-agentic.ts` | Direttorju home assolut u iżolat għas-sottoproċess aġentiku ta’ Devin; il-mogħdijiet tal-bridge aċċettati huma `/home/bridge` u mogħdijiet `.sandbox` lokali għall-kompitu (fuq Windows, `C:\...\.sandbox\...`). | | `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Tul massimu ta’ turn wieħed ta’ Devin ACP qabel ma l-bridge jittermina l-proċess wild u jirritorna skadenza espliċita. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Alias tal-mudell ewlieni ta’ Claude Code għall-bridge iżolat. Il-harness attiv jissostitwixxi l-eżempju b’mudell ritornat mill-kont attwali ta’ Devin. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias tal-bridge iżolat użat meta Claude Code jitlob il-valur predefinit tiegħu ta’ Sonnet. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias tal-bridge iżolat użat meta Claude Code jitlob il-valur predefinit tiegħu ta’ Opus. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias tal-bridge iżolat użat meta Claude Code jitlob il-valur predefinit tiegħu ta’ Haiku. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias tal-bridge iżolat użat għas-sottoaġenti ta’ Claude Code. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Sostituzzjoni fakultattiva għall-API tal-ġestjoni tal-postijiet ta' Codeium użata għall-kwota ta' Devin CLI (`GetUserStatus`). | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Sostituzzjoni b'passaġġ assolut għall-binarju CLI ta' Augment (Auggie) użat mill-fornitur lokali `auggie`. Jekk ma jkunx disponibbli, tintuża `CLI_AUGGIE_BIN`, imbagħad issir tfittxija fil-PATH. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Sostituzzjoni alternattiva għall-passaġġ tal-binarju CLI ta' Augment (Auggie) (ivverifikata wara `AUGGIE_BIN`). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Binarju użat mill-klijent stdio tal-fornitur lokali `zcode`. Jekk ma jkunx disponibbli, jintuża `zcode` mill-PATH. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | Array JSON (≤16-il string) ta' argumenti addizzjonali mgħoddija lill-binarju `zcode` meta jitħaddem permezz ta' `cliTools`. | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | Direttorju tax-xogħol għas-sottoproċess tal-app-server ta' ZCode. | | `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | Sostituzzjoni għall-ID tal-fornitur mibgħuta lill-app-server. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | Għerq tal-ambjent ta' eżekuzzjoni tal-app-server ta' ZCode (fejn jinsabu l-`node` u `zcode-server.cjs` inklużi). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | Eżekutibbli ta' Node użat biex iħaddem l-app-server ta' ZCode. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | Skript tad-dħul tal-app-server użat biex iħaddem is-server ta' ZCode. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | Limitu ta' żmien għall-istartjar (ms) li warajh it-tnedija ta' app-server ta' ZCode titqies li falliet. | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | Limitu ta' żmien RPC għal kull talba (ms) għal sejħa lill-app-server ta' ZCode. | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Tul massimu (ms) ta' ċiklu wieħed ta' ZCode qabel ma s-superviżur iwaqqfu minħabba li jkun skada l-limitu ta' żmien. | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | Intervall ta' polling (ms) għat-tlestija taċ-ċiklu ta' ZCode. | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | Direttorju ewlieni ta' Hermes Agent fejn OmniRoute jaqra/jikteb il-konfigurazzjoni tal-Hermes CLI. Jaqbel mal-varjabbli tal-ambjent li l-installatur PowerShell ta' Hermes jissettja fuq Windows (`%LOCALAPPDATA%\hermes`). | ### Sinkronizzazzjoni Awtomatika tal-Profili CLI Dawn il-flags tal-karatteristiċi jeħtieġu attivazzjoni espliċita u huma diżattivati b'mod awtomatiku. Jistgħu wkoll jiġu attivati jew diżattivati mid-dashboard ta' CLI Code. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------- | ---------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Wara sinkronizzazzjoni tal-mudelli tal-fornitur, jerġa' jikteb awtomatikament il-fajls tal-profili `~/.codex/*.config.toml` mill-katalgu attiv. Jeħtieġ `CLI_ALLOW_CONFIG_WRITES`; qatt ma jibdel il-konfigurazzjoni attiva/predefinita ta' Codex, l-awtentikazzjoni, is-settings ta' Codex-lb, jew l-għażla tal-fornitur. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Wara sinkronizzazzjoni tal-mudelli tal-fornitur, jerġa' jikteb awtomatikament il-fajls tal-profili ta' Claude Code `~/.claude/profiles//settings.json` mill-katalgu attiv. Jeħtieġ `CLI_ALLOW_CONFIG_WRITES`; qatt ma jibdel il-konfigurazzjoni attiva/predefinita ta' Claude, l-awtentikazzjoni, jew l-għażla tal-fornitur. | ### Eżempju ta' Docker ```bash # Immonta l-binarji tal-host fil-container u għid lil OmniRoute fejn jinsabu: 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` jidħol fis-seħħ biss meta l-mogħdija tkun effettivament immuntata b'bind mill-host — użah flimkien ma' mounts bħal `~/.codex:/host-home/.codex:rw` (ara l-profil `host` f'`docker-compose.yml`). Mogħdija li la tinsab ġewwa d-direttorju home tal-utent tal-container u lanqas hija bind mount tiġi injorata, għax kull kitba fiha tintilef meta l-container jerġa' jinħoloq. L-image taħdem bħala `USER node`, għalhekk `/root` mhux immuntat **mhuwiex** override validu. | Varjabbli | Default | Fajl tas-Sors | Deskrizzjoni | | ---------------------------------------- | -------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(awtomatiku)_ | `src/shared/utils/containerEnv.ts` | Ġiegħel id-detezzjoni tal-container tkun mixgħula (`1`/`true`) jew mitfija (`0`/`false`). Meħtieġ biss fuq runtimes li d-detezzjoni awtomatika ma tagħrafx. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | Ippermetti xorta waħda l-kitba tal-konfigurazzjoni tal-għodod CLI f'mogħdija mhux immuntata tal-container. L-ekwivalenti tas-CLI huwa `--allow-container-write`. | ### Għodod tal-Binarju CLI (`omniroute`) Dawn il-varjabbli jirregolaw l-imġiba tal-binarju CLI `omniroute` innifsu (mhux id-detezzjoni tas-sidecar ta' hawn fuq). | Varjabbli | Default | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(sistema)_ | `bin/cli/i18n.mjs` | Ġiegħel il-lingwa tal-output tas-CLI. Locale BCP-47 (eż. `en`, `pt-BR`). Jieħu preċedenza fuq il-varjabbli tal-ambjent tal-locale tas-sistema (LC_ALL, LC_MESSAGES). | | `OMNIROUTE_SHOW_LOG` | _(mhux issettjat)_ | `bin/cli/runtime/processSupervisor.mjs` | Issettja għal `1` biex tgħaddi l-stdout/stderr tas-server lit-terminal fil-modalità ssorveljata. Ekwivalenti għall-flag `--log` fuq `omniroute serve`. | | `OMNIROUTE_CLI_TOKEN` | _(mhux issettjat)_ | `bin/cli/api.mjs` | Token tal-awtentikazzjoni tal-magna injettat bħala l-header `x-omniroute-cli-token`. Iġġenerat awtomatikament fil-kompitu 8.12. | | `GEMINI_CLI_HOME` | _(mhux issettjat)_ | `bin/cli/commands/setup-gemini.mjs` | Għerq home persistenti ta' Gemini; eżekuzzjoni ta' darba tuża home temporanju u iżolat. | | `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Perjodu ta' grazzja f'millisekondi qabel ma proċess child tas-CLI li jkun irċieva sinjal jinqatel bil-forza. | | `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(mhux issettjat)_ | `bin/omniroute.mjs` | Issettja għal 1 flimkien ma' DATA_DIR espliċitu biex taqbeż il-fajl tal-ambjent tad-direttorju tad-data tal-utent default. | | `OMNIROUTE_SYNC_TOKEN` | _(mhux issettjat)_ | `bin/cli/commands/sync.mjs` | Token tas-sinkronizzazzjoni għal `omniroute sync bundle` (`GET /api/sync/bundle` jaċċetta biss token tas-sinkronizzazzjoni, mhux API key). Ekwivalenti għal `--token`. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | Timeout HTTP għal kull tentattiv (ms) għal talbiet mis-CLI → lis-server. | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | Ħin massimu (ms) li s-CLI tistenna l-endpoint tas-saħħa tas-server qabel ma tipprintja twissija ta' timeout. Utli għal starts inizjali bil-mod (eż. Windows). Jista' jiġi ssettjat ukoll permezz ta' `--ready-timeout`. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | Issettja għal `1` biex tipprintja dijanjostiċi ta' tentattivi mill-ġdid/backoff fuq stderr waqt il-kmandi tas-CLI. | | `OMNIROUTE_PLUGIN_PATH` | _(mhux issettjat)_ | `bin/cli/plugins.mjs` | Direttorju personalizzat għall-iskoperta tal-plugins tas-CLI (packages `omniroute-cmd-*`). Meta ma jkunx issettjat, id-default huwa `~/.omniroute/plugins/`. Għas-CLI biss — qatt ma jasal għand l-iskaner tal-plugins tan-naħa tas-server, li lejh jipponta `OMNIROUTE_PLUGINS_DIR` (taqsima 2). | | `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(mhux issettjat)_ | `bin/omniroute.mjs` | Aħbi n-notifika tal-aġġornament tas-CLI mal-ħruġ tal-proċess meta tkun issettjata għal kwalunkwe valur mhux vojt. In-notifika tibqa' diżattivata b'mod indipendenti f'CI, fil-modalità siekta, u fil-modalitajiet ta' output mhux testwali. | | `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(derivat)_ | `bin/cli/commands/doctor.mjs` | URL tal-liveness ittestjat minn `omniroute doctor`. Għażla programmatika `livenessUrl` tieħu preċedenza; inkella dan il-valur jintuża eżatt kif inhu. Jekk mhux issettjat, is-CLI tidderiva l-endpoint `/api/health/degradation` tad-dashboard lokali. | | `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | Mogħdija tal-katalgu tal-fornituri użata mill-kmandi tal-fornituri tas-CLI. Għażla programmatika `catalogPath` tieħu preċedenza. Mogħdijiet assoluti jintużaw kif inhuma; mogħdijiet relattivi jiġu riżolti mill-għerq tal-proġett. Jekk mhux issettjat, is-CLI tuża d-direttorju tal-kostanti tal-fornituri, bil-fajl legat `providers.ts` bħala fallback. | | `OMNIROUTE_PROVIDER_TEST_MODEL` | _(default tal-fornitur)_ | `bin/cli/provider-test.mjs` | Mudell fallback globali għat-testijiet tal-konnessjoni tal-fornituri tas-CLI. L-ordni ta' preċedenza hija: il-mudell tal-konnessjoni kkonfigurata, l-override tal-mudell speċifiku għall-fornitur, dan il-valur, u mbagħad il-mudell tat-test inkorporat tal-fornitur. | --- ## 10. Integrazzjonijiet Interni tal-Aġent u MCP | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | individwazzjoni awtomatika | `open-sse/mcp-server/server.ts` | URL espliċitu biex l-għodod MCP/A2A jilħqu OmniRoute. Jissostitwixxi l-individwazzjoni awtomatika ta’ localhost. | | `OMNIROUTE_API_KEY` | _(mhux issettjat)_ | Moduli MCP/A2A | Ċavetta tal-API għas-sejħiet interni tal-għodda MCP u tal-ħiliet A2A. | | `OMNIROUTE_API_KEY_ID` | _(mhux issettjat)_ | `open-sse/mcp-server/audit.ts` | ID taċ-ċavetta għall-attribuzzjoni tar-reġistru tal-awditjar MCP. | | `ROUTER_API_KEY` | _(mhux issettjat)_ | Legat | Alias legat għal `OMNIROUTE_API_KEY`. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Għadd ta’ jiem li għalihom l-istorja tal-kompiti A2A tinżamm fil-bażi tad-data lokali qabel ma t-tindif ta’ kuljum iħassar ringiela. Jekk ma jkunx issettjat, ma jkunx numeriku, jew ikun `<= 0`, jerġa’ lura għal `30`. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | Swiċċ ta’ waqfien għall-karatteristika ta’ osservabbiltà tal-qbiliet mal-memorja A2A. Issettjah għal `0` biex taqbeż kompletament it-tiftixa għar-rikjamar mill-memorja għal kompitu; kwalunkwe valur ieħor (inkluż jekk mhux issettjat) iżommha attivata. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Jattiva l-endpoint offline/lokali tat-trijaġġ irreġistrat tal-Issue Agent. Ħallih diżattivat sakemm ma tkunx qed tħaddem b’mod espliċitu flussi tax-xogħol lokali ta’ trijaġġ irreġistrat. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(mhux issettjat)_ | `src/lib/issueAgent/execution.ts` | Limitu ta’ żmien (ms) għal eżekuzzjoni waħda ta’ trijaġġ irreġistrat tal-Issue Agent. Huwa limitat għal massimu intern; jerġa’ lura għall-valur predefinit inkorporat meta ma jkunx issettjat jew ikun invalidu. | | `OMNIROUTE_CONTEXT` | _(kuntest attiv)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | Kuntest/profil tal-modalità remota tas-CLI għall-kmandi `omniroute`; jissostitwixxi l-kuntest attiv fil-ħażna lokali tal-kuntesti. Ekwivalenti għal `--context `. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | Jiddiżattiva l-backend fakultattiv `keytar` tal-keychain tas-sistema operattiva għall-kredenzjali tal-kuntest tas-CLI. Meta jkun attivat, il-kredenzjali jibqgħu f’`config.json` bil-modalità `0600` u s-CLI joħroġ twissija ta’ fallback darba biss; maħsub għal tħaddim intenzjonat mingħajr interfaċċa grafika/f’container. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | Jinforza kontroll tal-aċċess ibbażat fuq l-ambiti fis-sejħiet tal-għodod MCP. | | `OMNIROUTE_MCP_SCOPES` | _(kollha)_ | `open-sse/mcp-server/server.ts` | Ambiti separati b’virgoli: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Jikkompressa d-deskrizzjonijiet tal-għodod MCP qabel is-serializzazzjoni tal-manifest. Valuri li jattivawh: `1`, `true`, `on`. | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Algoritmu/profil tal-kompressjoni. Valuri li jiddiżattivawh: `0`, `false`, `off`. | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | Baġit ta’ żmien qabel l-abort (ms) għall-qari intern ta’ ġestjoni tas-server MCP (saħħa, reżiljenza, kombinazzjonijiet, kwota, użu). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Limitu ta' żmien għall-abort (ms) għal qabżiet MCP li jistennew fornitur (`route_request`, `web_search`, `web_fetch`). | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Għadd massimu ta' istanzi tal-indiċi tal-korpus lokali miżmuma fil-cache tal-memorja (LRU, wieħed għal kull direttorju għerq indiċjat). Limitat għal minimu ta' `1`. | | `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Intervall tas-sinkronizzazzjoni tal-katalgu tal-mudelli f'sigħat. | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Intervall tal-verifika tal-limiti tar-rata u tal-kwota tal-fornitur. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Intervall (ms) bejn talbiet konsekuttivi għall-kwota OAuth f'sinkronizzazzjoni tal-massa; il-konnessjonijiet OAuth jintalbu waħda waħda biex jiġi evitat fluss f'daqqa lejn servizz upstream. `0` jeskludi din l-imġiba (konkorrenti). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Intervall minimu (ms) bejn talbiet konsekuttivi għall-kwota upstream fil-mogħdija ta' kontroll preliminari/monitoraġġ għal kull talba; iqassam is-sejħiet konkorrenti tan-network sabiex ħafna kontijiet fuq IP wieħed ma joħolqux fluss f'daqqa lejn is-servizz upstream. Integrat fil-mekkaniżmi li jġibu l-kwota għal Codex (`/wham/usage`), DeepSeek, Bailian (fiż-żewġ siti tat-talbiet), OpenCode, u Crof (#6009, #6911). Il-mogħdija ġenerika tad-dispaċċ `usage.ts::getUsageForProvider` (github/glm/minimax/nanogpt/xai/eċċ.) għadha mhix koperta — qed tiġi segwita separatament. Il-qari mill-cache mhuwiex affettwat. `0` jiddiżattiva; limitat għal `0..5000`. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Dewmien (ms) qabel ma jiġu aġġornati l-limiti tal-fornitur wara avveniment reali ta' użu, sabiex l-API tal-kwota upstream tingħata żmien tirreġistra l-konsum. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | skoperta awtomatika | `open-sse/services/adobeFireflyBrowserLogin.ts` | Mogħdija assoluta lejn eżekutibbli tas-sistema ta' Chrome jew Edge użat għad-dħul interattiv f'Adobe Firefly u għat-tiġdid barra mill-iskrin. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | attivat | `open-sse/services/adobeFireflySession.ts` | Iżomm l-istat ta' IMS u tar-riskju tal-brawżer aġġornat permezz ta' sessjonijiet Chrome CDP speċifiċi għall-kont. Issettja għal `0` biex tiddiżattiva t-tiġdid permezz tal-brawżer. | | `ADOBE_FIREFLY_SESSION_DISK` | attivat | `open-sse/services/adobeFireflySession.ts` | Jippersisti s-sessjonijiet Adobe msewwija taħt `DATA_DIR` bejn bidu mill-ġdid tal-proċess. Issettja għal `0` biex iżżomm is-sessjonijiet fil-memorja biss. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Intervall minimu f'millisekondi bejn sottomissjonijiet ta' ġenerazzjoni lil Adobe Firefly; `0` jiddiżattiva l-intervall. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Perjodu kwiet addizzjonali f'millisekondi wara kull tielet sottomissjoni Adobe li tirnexxi. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Stennija bażi progressiva f'millisekondi wara tweġibiet temporanji Adobe 408; ikkombinata mal-intervall bejn is-sottomissjonijiet fuq massimu ta' ħames tentattivi. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Iddiżattiva s-servizzi kollha fl-isfond (sinkronizzazzjoni, ipprezzar, aġġornament tal-mudelli). Utli għal CI/testijiet. | | `OMNIROUTE_HEADLESS` | _(mhux issettjat)_ | `src/lib/system/headless.ts` | Bidu bil-magna tal-proxy biss: jaqbeż is-subsistemi fakultattivi, `/dashboard` → 404. L-istess bħal `omniroute serve --headless`. Ara [HEADLESS.md](../guides/HEADLESS.md). | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(mhux issettjat)_ | `src/lib/config/runtimeSettings.ts` | Iġiegħel il-kompiti fl-isfond jibqgħu attivi meta jinstab test awtomatizzat. Issettja `1` biex tegħleb l-euristika tat-test. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Frekwenza tal-verifika tar-risettjar tal-baġit (ms). Minimu `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Frekwenza tal-irkupru proattiv mill-perjodu ta’ stennija tal-konnessjoni (ms): tivvalida mill-ġdid il-konnessjonijiet li l-`rate_limited_until` temporanju tagħhom ikun skada, barra mill-mogħdija kritika tat-talba. Minimu `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Itfi l-iskedatur tal-irkupru proattiv mill-perjodu ta’ stennija tal-konnessjoni (l-irkupru għażżien f’`getProviderCredentials` jibqa’ japplika). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Frekwenza tat-tindif tal-cache tar-raġunament (ms). Minimu `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _mhux issettjat_ (diżattivat) | `open-sse/services/reasoningTokenBuffer.ts` | Limitu minimu fakultattiv għall-baġits tal-output ta’ mudelli tal-ħsieb: il-`max_tokens` tas-sejjieħ f’`[256, floor)` jiżdied sal-limitu minimu (limitat mil-limitu massimu tal-output tal-mudell). Mhux issettjat = il-baġits tal-klijent qatt ma jitkabbru (#9507). | | `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _mhux issettjat_ (diżattivat) | `open-sse/services/learnedReasoningEffortCaps.ts` | Fakultattiv, IDs tal-fornituri separati b’virgola (jew `*`): meta żball 400/422 ta’ `reasoning_effort` ma jsemmi ebda sett aċċettat, erġa’ pprova darba f’livell wieħed aktar baxx (qatt taħt `low`) u tgħallem dak il-livell biss jekk is-sonda tingħata tweġiba (#14895). | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Espressjoni cron (UTC) għall-kompitu tal-esportazzjoni tar-reġistru tas-sejħiet li jbattal kull destinazzjoni attivata għall-esportazzjoni tar-reġistri. | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Intervall tal-polling (ms) għat-tagħbija mill-ġdid immedjata tal-konfigurazzjoni. Valur inqas minn `1000` jiġi miċħud. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(attivat)_ | `src/lib/db/apiKeys.ts` | Issettja `1` biex taqbeż il-cache tal-awtentikazzjoni taċ-ċwievet tal-API appoġġjat minn Redis (iġiegħel il-qari mid-DB). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Afda r-regoli tal-filtri tal-proġett RTK immaniġġjati mill-utent mingħajr verifiki stretti tal-firma. | | `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | Limitu ta’ karattri għat-tronkament proattiv tar-riżultati tal-għodod Lite meta `lite.maxToolLength` ma jkunx issettjat. Medda 256–1000000. L-issettjar tad-dashboard jieħu preċedenza fuq dan il-varjabbli tal-ambjent. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Numru massimu ta’ workers sinkroniċi RTK/Caveman li jistgħu jaħdmu fl-istess ħin; il-kompiti żejda jistennew skont FIFO. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Skadenza għal kull kompitu f’millisekondi. Il-workers li jaqbżu l-ħin jiġu terminati u t-talba tkompli miftuħa mingħajr tibdil. | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Żmien ta’ inattività f’millisekondi qabel ma worker tal-kompressjoni mhux użat jiġi terminat. | | `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Limitu tal-heap tal-ġenerazzjoni l-qadima ta’ V8 f’MB għal kull worker tal-kompressjoni, fil-modi kollha (minimu `128`). Kompitu li jaqbżu jfalli b’mod miftuħ (mhux ikkompressat) minflok ikabbar il-heap tal-gateway. | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Swiċċ ewlieni tas-circuit breaker għal kull engine fil-pipeline f’munzelli T02. **Fakultattiv (diżattivat b’mod awtomatiku)** — meta jkun attivat, engine li ripetutament jarmi żbalji f’talbiet differenti jinqabeż (fail-open) għal perjodu ta’ stennija; diżattivat = imġiba preċedenti identika byte b’byte. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Numru ta’ fallimenti konsekuttivi bejn talbiet differenti qabel jinfetaħ il-breaker ta’ engine. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Millisekondi li matulhom magna miftuħa tibqa’ tinqabeż qabel sonda nofs-miftuħa. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | Rampa ta’ feedback tal-irkupru T08/H8 CCR: kull irkupru preċedenti ta’ blokka maħżuna jgħolli l-`minChars` effettiv tagħha b’mod lineari (kontenut irkuprat ta’ spiss jiġi kkompressat inqas; `>=3` irkupri = qatt ma jiġi kkompressat). `1` jiddiżattiva r-rampa (qbiż binarju fil-limitu biss). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | Maħżen durabbli tal-blokok CCR (#9061). Jappoġġja l-maħżen fil-memorja permezz ta’ SQLite sabiex blokka tibqa’ teżisti wara t-tneħħija LRU, it-TTL, bidu mill-ġdid, jew irkupru li jasal fuq istanza oħra. Issettja `false` biex iżżomm il-blokok fil-memorja biss. Blokok akbar minn 512KB u ambjenti ta’ eżekuzzjoni fil-cloud jibqgħu fil-memorja biss fi kwalunkwe każ. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | Swiċċ ewlieni għall-iffriżar tal-prefiss osservat mill-użu T08/H5. **Fuq għażla espliċita (diżattivat awtomatikament)** — meta jkun mixgħul, prompt tas-sistema osservat `>=` il-limitu jiġi ttrattat bħala prefiss stabbli li jista’ jinħażen fil-cache u jiġi ppreservat mill-kompressjoni anki għal fornituri li l-euristika statika tal-cache ma taqbadx (l-iffriżar _jippreserva_ biss, qatt ma jimmodifika). | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Għadd ta’ osservazzjonijiet ta’ prompt tas-sistema qabel ma jiġi ttrattat bħala prefiss stabbli ffriżat. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | Jiġi ssettjat għal `true` mill-iskript tal-bootstrap wara l-konfigurazzjoni inizjali. Jikkontrolla l-viżibbiltà tal-wizard tal-konfigurazzjoni. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Mekkaniżmu ta’ ħruġ: jippermetti lill-body tat-talba jissostitwixxi l-kamp tal-proġett Antigravity. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Politika tal-krediti Google One AI: `off` qatt ma jinjetta krediti, `retry` jinjetta darba wara żball 429 eliġibbli tal-kwota, u `always` jinjetta mal-ewwel talba. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Jippermetti lit-traduttur tat-talbiet Antigravity jaqbeż il-validazzjoni stretta tiegħu tal-firma tat-talba CLI meta s-servizz upstream jirrifjuta firem reali (modalità ta’ debug/CLI antikwat). Valur mhux żero jattiva l-qbiż. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Jissostitwixxi l-mogħdija tal-fajl tat-token tal-Antigravity CLI (agy) għall-importazzjoni tal-login lokali permezz ta’ sejbien awtomatiku. | ### Pont OAuth CLI (Intern) | Varjabbli | Valur Awtomatiku | Fajl Sors | Deskrizzjoni | | ------------------- | ------------------ | ------------------------------- | ------------------------------------------------------------ | | `OMNIROUTE_SERVER` | sejbien awtomatiku | `src/lib/oauth/config/index.ts` | URL tas-server għall-pont tal-awtentikazzjoni CLI↔OmniRoute. | | `OMNIROUTE_TOKEN` | _(mhux issettjat)_ | `src/lib/oauth/config/index.ts` | Token tal-awtentikazzjoni għall-pont CLI. | | `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | ID tal-utent għas-sessjonijiet tal-pont CLI. | | `SERVER_URL` | _(mhux issettjat)_ | `src/lib/oauth/config/index.ts` | Alias antik għal `OMNIROUTE_SERVER`. | | `CLI_TOKEN` | _(mhux issettjat)_ | `src/lib/oauth/config/index.ts` | Alias antik għal `OMNIROUTE_TOKEN`. | | `CLI_USER_ID` | _(mhux issettjat)_ | `src/lib/oauth/config/index.ts` | Alias antik għal `OMNIROUTE_USER_ID`. | --- ## 11. Kredenzjali tal-Fornitur OAuth Kredenzjali integrati għall-**iżvilupp lokali**. Għal skjeramenti remoti, irreġistra tiegħek f'kull console tal-iżviluppatur tal-fornitur. | Varjabbli | Fornitur | Noti | | :------------------------------------------ | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | Klijent pubbliku — l-ebda sigriet m'hu meħtieġ. | | `CLAUDE_CODE_REDIRECT_URI` | Claude Code | Tissupera l-URI tar-ridirezzjoni. Default: `https://platform.claude.com/oauth/code/callback` | | `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | Klijent pubbliku. | | `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Jeħtieġ `_SECRET` li jaqbel. | | `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — | | `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | Klijent pubbliku. | | `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | Tissupera fakultattiva għall-ID tal-klijent tal-fluss tal-apparat tal-Muse CLI pubbliku. Ħalli mhux issettjat biex tuża l-klijent pubbliku integrat. | | `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Jeħtieġ `_SECRET` li jaqbel. | | `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — | | `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | Klijent pubbliku. | | `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | Tissupera fakultattiva għall-ID tal-klijent OAuth ta' GitHub Enterprise Copilot. Tirritorna għall-default pubbliku ta' `GITHUB_OAUTH_CLIENT_ID` meta ma tkunx issettjata. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | Tissupera fakultattiva għall-ID tal-integrazzjoni tal-klijent ta' GitHub Copilot mibgħuta fl-headers `Copilot-Integration-Id` u `Editor-Plugin-Version`. Default: `copilot-developer-cli`. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Fallback taċ-ċavetta API użat minn `open-sse/executors/devin-cli.ts` meta ma tkunx disponibbli kredenzjali għal kull konnessjoni. Fakultattiva. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Mogħdija personalizzata għall-binarju tal-Devin CLI (`devin`). Riżolta minn `open-sse/executors/devin-cli.ts`. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | ID tal-klijent OAuth għal GitLab Duo. Irreġistra app fuq `https://gitlab.com/-/profile/applications` b'URI ta' ridirezzjoni `/callback` u skopijiet `api, read_user, openid, profile, email`. Tirritorna għal `GITLAB_OAUTH_CLIENT_ID`. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Sigriet tal-klijent OAuth għal GitLab Duo. Fakultattiva — il-fluss PKCE ma jeħtieġx sigriet. Tirritorna għal `GITLAB_OAUTH_CLIENT_SECRET`. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | Tissupera l-URL bażi ta' GitLab (GitLab self-hosted). Default: `https://gitlab.com`. Tirritorna għal `GITLAB_BASE_URL`. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | Fallback legat għal `GITLAB_DUO_BASE_URL`. Użat meta l-varjant `_DUO_` ma jkunx issettjat. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | Fallback legat għal `GITLAB_DUO_OAUTH_CLIENT_ID` ikkonsmat minn `src/lib/oauth/constants/oauth.ts`. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Fallback legat għal `GITLAB_DUO_OAUTH_CLIENT_SECRET` ikkonsmat minn `src/lib/oauth/constants/oauth.ts`. | | `QODER_OAUTH_CLIENT_SECRET` | Qoder | — | | `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Issettjat biex jippermetti Qoder OAuth. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Fallback dirett taċ-ċavetta tal-API (jaqbeż l-OAuth). | | `QODER_CLI_WORKSPACE` | Qoder | ID tal-ispazju tax-xogħol għal Qoder CLI. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | Alias għal `QODER_CLI_WORKSPACE`. | | `QODER_CLI_CONFIG_DIR` | Qoder | Jissupera d-direttorju tal-konfigurazzjoni tal-Qoder CLI (sessjoni PAT iżolata, tevita li tħassar login tal-browser). | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | Token `tk` tal-frontend biex jintbagħat bħala `validated` fuq `/api/chat`. Meħtieġ meta Blackbox jinfurza t-tqabbil tat-tokens; inkella OmniRoute jaqa' lura għal UUID każwali. Ara l-kwistjoni #2252. | | `VISION_BRIDGE_BASE_URL` | Vision Bridge guardrail | URL bażi kompatibbli mal-OpenAI għal sejħiet vision-bridge mhux Anthropic. Jirritorna għall-env tal-URL legat tal-OpenAI jew api.openai.com. Ipponta lejn is-self-loop `/v1` ta' OmniRoute jew kwalunkwe endpoint kompatibbli mal-OpenAI (Gemini OpenAI-compat, OpenRouter). Kwistjoni #2232. Meta l-URL ikun `/v1` ta' OmniRoute stess, is-sub-talba tad-deskrizzjoni tibgħat `x-omniroute-admission-bypass: internal` u tawtentika bil-kredenzjali self-loop riżolta (sentinella `sk_omniroute` fil-modalità lokali, jew `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350) sabiex id-deployments `REQUIRE_API_KEY=true` jaħdmu. | | `VISION_BRIDGE_API_KEY` | Vision Bridge guardrail | Ċavetta tal-API għall-URL ta' hawn fuq. Jissupera l-varjabbli tal-ambjent OpenAI / Google għal kull fornitur għal sejħiet vision-bridge mhux Anthropic. Il-mudelli Anthropic iżommu l-mogħdija ddedikata tagħhom taċ-ċavetta Anthropic. Kwistjoni #2232. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Vision Bridge guardrail | Kemm idum riżultat ta' routing "l-ebda kandidat utilizzabbli" jiġi kkaċċjat, f'ms (default `30000`). Valuri invalidi jew negattivi jirritornaw għall-default; `0` tiddiżattiva l-cache negattiva. Sors: `src/lib/guardrails/visionBridgeRouter.ts`. | > [!WARNING] > > 1. Mur fuq [Google Cloud Console → Credentials](https://console.cloud.google.com/apis/credentials) > 2. Oħloq OAuth 2.0 Client ID (tip: "Applikazzjoni tal-web") > 3. Żid il-URL tas-server tiegħek bħala URI ta' redirect awtorizzat > 4. Ibdel il-valuri tal-kredenzjali f'`.env`. --- ## 12. Sostituzzjonijiet tal-User-Agent tal-Fornitur Issostitwixxi l-header `User-Agent` mibgħut lil kull fornitur upstream. Dan jiġi riżolt b’mod dinamiku waqt l-eżekuzzjoni mill-klassi bażi tal-eżekutur: ``` process.env[`${PROVIDER_ID}_USER_AGENT`] ``` > **Sors:** `open-sse/executors/base.ts` → `buildHeaders()` | Varjabbli | Valur Default | Meta Għandu Jiġi Aġġornat | | -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Meta Anthropic toħroġ verżjoni ġdida tas-CLI | | `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Issettjah għal `1`/`true` biex tgħaddi l-ismijiet tal-għodod tal-harness ta’ partijiet terzi kelma b’kelma lil Anthropic fiż-żewġ rotot diretti lejn Anthropic (OAuth nattiv u CLIProxyAPI). B’mod default, l-eżekutur jagħti aliases deterministiċi lill-ismijiet tal-għodod li mhumiex ta’ Claude Code (bl-immappjar kanoniku ta’ Claude Code fejn jeżisti, inkella PascalCase) u jaqilbu lura fit-tweġiba permezz ta’ `_toolNameMap`, sabiex harnesses b’għodod snake_case ma jiġux irrifjutati bħala klijenti ta’ partijiet terzi identifikati permezz tal-fingerprint. Għad-debugging biss. | | `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | Meta OpenAI taġġorna s-CLI ta’ Codex | | `CODEX_CLIENT_VERSION` | `0.155.0` | Issostitwixxi l-verżjoni tal-klijent Codex indipendentement mis-sekwenza UA sħiħa | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Issostitwixxi l-verżjoni reklamata ta’ Claude Code indipendentement minn `CLAUDE_USER_AGENT`. Anthropic tillimita xi mudelli abbażi ta’ dan il-valur (#12417). | | `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Issostitwixxi s-suffiss ta’ 3 karattri li OmniRoute tehmeż ma’ `cc_version=` fil-blokka tal-kontijiet ta’ Claude. Żidu flimkien ma’ `CLAUDE_CODE_CLIENT_VERSION` — jekk tiffissa l-verżjoni biss, tkun qed tirreklama par `version.revision` li l-ebda binarju reali ma joħroġ. | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Issostitwixxi l-verżjoni reklamata tas-CLI ta’ Copilot indipendentement minn `GITHUB_USER_AGENT` | | `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | Meta GitHub Copilot Chat jiġi aġġornat | | `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Meta l-IDE Antigravity jiġi aġġornat | | `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Meta l-IDE Kiro jiġi aġġornat | | `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Issostitwixxi l-`clientId` (ID pubbliku) tal-kodiċi tal-apparat soċjali ta’ Kiro | | `KIRO_VERIFY_FULL_CRC` | `false` | Għażla fakultattiva: validazzjoni CRC sħiħa għal kull frame fuq l-event stream ta’ Kiro (għad-debugging ta’ streams korrotti) | | `QODER_USER_AGENT` | `Qoder-Cli` | Meta s-CLI ta’ Qoder tiġi aġġornata | | `CURSOR_USER_AGENT` | `Cursor/3.3` | Meta Cursor jiġi aġġornat | > [!TIP] > Tista’ żżid sostituzzjonijiet tal-User-Agent għal **kwalunkwe** fornitur billi tuża l-mudell `{PROVIDER_ID}_USER_AGENT`. L-eżekutur jibni l-isem tal-varjabbli tal-ambjent b’mod dinamiku. --- ## 13. Kompatibbiltà tal-Marka Diġitali tas-CLI Meta tkun attivata, OmniRoute jerġa’ jordna l-headers HTTP u l-oqsma tal-body JSON biex jaqblu eżattament mal-firma tal-għodod CLI uffiċjali. Dan inaqqas ir-riskju li l-kont jiġi mmarkat filwaqt li jippreserva l-IP tal-proxy tiegħek. **Sors:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts` ### Għal Kull Fornitur | Varjabbli | Attivazzjoni | Effett | | ------------------------ | ------------ | ------------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Jimita l-firma tat-talba tas-CLI Codex | | `CLI_COMPAT_CLAUDE` | `=1` | Jimita l-firma tat-talba ta’ Claude Code | | `CLI_COMPAT_GITHUB` | `=1` | Jimita l-firma tat-talba ta’ GitHub Copilot | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Jimita l-firma tat-talba ta’ Antigravity | | `CLI_COMPAT_CURSOR` | `=1` | Jimita l-firma tat-talba ta’ Cursor | | `CLI_COMPAT_KIMI_CODING` | `=1` | Jimita l-firma tat-talba ta’ Kimi Coding | | `CLI_COMPAT_KILOCODE` | `=1` | Jimita l-firma tat-talba ta’ Kilo Code | | `CLI_COMPAT_CLINE` | `=1` | Jimita l-firma tat-talba ta’ Cline | ### Globali | Varjabbli | Attivazzjoni | Effett | | ---------------- | ------------ | ----------------------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Attiva l-kompatibbiltà tal-marka diġitali għall-fornituri **kollha** f’daqqa. | ### Sostituzzjonijiet tal-identità tas-CLI Kimi Coding | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ----------------------- | --------------------------------- | ---------------------------------------- | ------------------------------------------------------------------ | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | Ibdel il-verżjoni tas-CLI Kimi mibgħuta waqt is-sejħiet OAuth/API. | | `KIMI_CODING_DEVICE_ID` | _(valur maqbud b’mod predefinit)_ | `src/lib/oauth/providers/kimi-coding.ts` | Ibdel l-ID maqbud tal-apparat Kimi użat fil-headers tal-klijent. | > [!NOTE] > Din il-karatteristika taħdem flimkien mas-sostituzzjonijiet tal-User-Agent (§12). Is-sistema tal-marki diġitali tieħu ħsieb l-ordni tal-headers u tal-oqsma tal-body, filwaqt li s-sostituzzjonijiet tal-User-Agent jieħdu ħsieb is-sekwenza UA speċifika. It-tnejn jistgħu jiġu attivati indipendentement. --- ## 14. Fornituri taċ-Ċwievet API Ċwievet API għal fornituri li jużaw awtentikazzjoni diretta. **Konfigurazzjoni ppreferuta:** Dashboard → Providers → Add API Key. L-issettjar permezz ta’ varjabbli tal-ambjent huwa alternattiva għal skjeramenti Docker jew mingħajr interfaċċa grafika. Mudell rikonoxxut: `{PROVIDER_ID}_API_KEY` | Varjabbli | Fornitur | | ------------------ | -------------------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + riżerva ta’ Reader) | | `JINA_API_KEY` | Jina AI (alias għal `JINA_AI_API_KEY`) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) embeddings + riżerva għaċ-chat | | `GOOGLE_API_KEY` | Gemini (alias għal `GEMINI_API_KEY`) | > [!NOTE] > L-entrati statiċi `${PROVIDER}_API_KEY` għal Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius, u Qianfan tneħħew f’v3.8.0 minħabba li r-runtime m’għadux jaqrahom — dawk il-fornituri jiddependu esklussivament fuq id-Dashboard / `data/provider-credentials.json` / id-DB ikkriptata. Ara t-taqsima _Verifika: Varjabbli Mneħħija / Mhux Użati_ fil-qiegħ ta’ dan id-dokument għall-perkors tal-migrazzjoni. > [!TIP] > Iċ-ċwievet issettjati permezz tad-Dashboard jinħażnu kriptati f’SQLite u jingħataw prijorità fuq il-varjabbli tal-ambjent. > > **Jina:** L-embeddings `jina-ai/…`, ir-rerank, il-classify, is-segment, u `jina-search` **ma** jiffatturawx ċavetta tal-ambjent tal-cluster meta tkun teżisti konnessjoni `jina-ai` (jew `jina-reader` kondiviża) fid-dashboard — `getProviderCredentials` jimla l-ewwel. `JINA_AI_API_KEY` / `JINA_API_KEY` jintużaw biss meta ma tkun teżisti l-ebda ċavetta tad-dashboard li tista’ tintuża. Ir-reġistri tas-sejħiet jattribwixxu r-riżerva tal-ambjent bħala `connection_id=env:JINA_AI_API_KEY`. Il-kard Reader (`jina-reader`, `r.jina.ai`) qatt ma taqdi `/v1/embeddings` jew `/v1/rerank`. > > **Gemini:** `gemini/gemini-embedding-2` (alias `google/gemini-embedding-2`) juża l-ewwel il-konnessjoni `gemini` tad-dashboard. `GEMINI_API_KEY` / `GOOGLE_API_KEY` jintużaw biss meta ma tkun teżisti l-ebda ċavetta tad-dashboard li tista’ tintuża. Ir-reġistri tas-sejħiet jattribwixxu r-riżerva tal-ambjent bħala `connection_id=env:GEMINI_API_KEY`. It-traffiku multimodali nattiv juża `x-goog-api-key` ma’ `:embedContent` / `:batchEmbedContents` — N elementi OpenAI `input` isiru N vetturi. --- ## 15. Konfigurazzjonijiet tal-Ħin ta' Stennija Il-valuri kollha huma f'**millisekondi**. Ir-riżoluzzjoni ċentralizzata tinsab f'`src/shared/utils/runtimeTimeouts.ts`. ### Ġerarkija tal-Ħinijiet ta' Stennija ``` REQUEST_TIMEOUT_MS (sovrastruttura globali) ├─→ FETCH_TIMEOUT_MS (sejħiet lill-fornitur upstream, valur predefinit: 600000) │ ├─→ FETCH_HEADERS_TIMEOUT_MS (jiret minn FETCH_TIMEOUT_MS) │ ├─→ FETCH_BODY_TIMEOUT_MS (jiret minn FETCH_TIMEOUT_MS) │ ├─→ TLS_CLIENT_TIMEOUT_MS (jiret minn FETCH_TIMEOUT_MS) │ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (indipendenti, valur predefinit: 10000) │ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (indipendenti, valur predefinit: 15000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (indipendenti, valur predefinit: 0 = mitfi, issuġġerit: 30000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (indipendenti, valur predefinit: 2) │ ├── FETCH_CONNECT_TIMEOUT_MS (indipendenti, valur predefinit: 30000) │ └── FETCH_KEEPALIVE_TIMEOUT_MS (indipendenti, valur predefinit: 4000) ├─→ STREAM_IDLE_TIMEOUT_MS (jiret minn REQUEST_TIMEOUT_MS, valur predefinit: 600000) ├─→ STREAM_ACTIVE_TIMEOUT_MS (indipendenti, valur predefinit: 1260000; 0 jiddiżattivah) ├─→ STREAM_READINESS_TIMEOUT_MS (jiret minn REQUEST_TIMEOUT_MS, valur predefinit: 80000) ├─→ STREAM_READINESS_MAX_TIMEOUT_MS (jillimita l-estensjonijiet adattivi tal-prontezza, valur predefinit: 180000) └─→ API_BRIDGE_PROXY_TIMEOUT_MS (jiret minn REQUEST_TIMEOUT_MS, valur predefinit: 30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (derivat, valur predefinit: 300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (valur predefinit: 60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (valur predefinit: 5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (valur predefinit: 0 = diżattivat) ``` | Varjabbli | Valur predefinit | Deskrizzjoni | | ----------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(mhux issettjat)_ | Taqsira globali — tissostitwixxi l-valuri predefiniti kemm ta’ `FETCH_TIMEOUT_MS` kif ukoll ta’ `STREAM_IDLE_TIMEOUT_MS`. | | `FETCH_TIMEOUT_MS` | `600000` | Il-limitu taż-żmien totali tat-talba HTTP għas-sejħiet lill-fornitur upstream. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | Is-skiet massimu bejn bytes mhux ipproċessati mill-upstream qabel ma titwaqqaf l-operazzjoni. Mudelli b’ħsieb estiż rarament jieqfu għal >90s. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | It-tul massimu totali ta’ ħajja ta’ stream SSE attiv; qatt ma jerġa’ jiġi ssettjat minn bytes upstream u huwa indipendenti minn `REQUEST_TIMEOUT_MS`. Derivat mill-akbar `timeoutMs` għal kull mudell fir-reġistru (1200000, Codex) flimkien ma’ marġni ta’ 60000, sabiex mudell li jitħalla juża l-baġit kollu tiegħu qatt ma jitwaqqaf f’nofs tweġiba. Issettjah għal `0` biex tiddiżattivah. | | `OMNIROUTE_SSE_COMMENTS` | _(diżattivat)_ | Jekk OmniRoute jistax joħroġ linji ta’ kummenti SSE `:` (eż. il-heartbeat `: keepalive` u t-trailers tal-metadata `x-omniroute-*`). Diżattivat b’mod predefinit (#10524) peress li klijenti stretti kompatibbli ma’ OpenAI japplikaw JSON.parse għal kull linja SSE u jiġġarrfu fuq kummenti `:`; il-heartbeats `data:` mhumiex affettwati. Issettja `on`/`true`/`1`/`yes` biex terġa’ tagħżel li tattivah. Użat minn `open-sse/utils/sseHeartbeat.ts`. | | `SSE_COALESCE_MS` | `0` (mitfi) | Fakultattiv: għaqqad avvenimenti konsekuttivi `content_block_delta` ta’ Claude (bl-istess indiċi tal-blokka u tip ta’ delta) mibgħuta lill-klijenti Claude, bi flush tal-anqas kull N ms. Mingħajr telf; `signature_delta` u l-avvenimenti tal-konfini qatt ma jingħaqdu. Japplika għal kull tip ta’ delta sakemm ma tkunx issettjata varjabbli għal tip speċifiku hawn taħt. Użat minn `open-sse/utils/sseDeltaCoalesce.ts`. | | `SSE_COALESCE_THINKING_MS` | `0` (mitfi) | Sostituzzjoni għal tip speċifiku ta’ `SSE_COALESCE_MS` għal `thinking_delta`. | | `SSE_COALESCE_TEXT_MS` | `0` (mitfi) | Sostituzzjoni għal tip speċifiku ta’ `SSE_COALESCE_MS` għal `text_delta`. | | `SSE_COALESCE_INPUT_JSON_MS` | `0` (mitfi) | Sostituzzjoni għal tip speċifiku ta’ `SSE_COALESCE_MS` għal `input_json_delta`. | | `SSE_FRAME_COALESCE_MS` | `0` (mitfi) | Fakultattiv: aggruppa l-frames SSE mgħoddija fi żmien N ms f’kitba waħda lill-klijent. L-ewwel frame u l-frames terminali (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) qatt ma jiġu ttardjati; bl-iggruppar attivat, ITL ikejjel l-intervalli bejn il-gruppi. Użat minn `open-sse/utils/sseOutputSink.ts`. | | `SSE_STALL_WATCHDOG` | `timer` | L-implimentazzjoni tal-watchdog għal waqfien tal-bytes fit-tweġibiet streamed. `timer` jerġa’ jattiva timer wieħed għal kull chunk upstream (jiskatta eżatt mal-limitu ta’ żmien tal-waqfien); `interval` iżomm verifika waħda għal kull stream b’perjodu `clamp(budget/4, 1s, 5s)`, għalhekk waqfien jiġi identifikat fil-limitu taż-żmien flimkien mal-perjodu. Użat minn `open-sse/utils/streamStallWatchdog.ts`. | | `STREAM_READINESS_TIMEOUT_MS` | `80000` | Iż-żmien biex jiġi riċevut l-ewwel avveniment SSE li mhuwiex ping. Jiret `REQUEST_TIMEOUT_MS` meta dan ikun issettjat. | | `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | It-tieqa adattiva massima ta’ tħejjija għall-ewwel avveniment għal talbiet streaming kbar, b’użu intensiv ta’ għodod, jew b’livell għoli ta’ raġunament. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | Swiċċ ta’ emerġenza għall-ewristika `/goal`. Issettja `false`/`0`/`off` biex tiddiżattiva kompletament is-sejbien — il-limiti taż-żmien tat-tħejjija u l-irkupru tal-stream qatt ma jiżdiedu minħabba l-body/headers tat-talba, biex b’hekk tittaffa l-amplifikazzjoni tal-limitu taż-żmien ikkontrollata mill-klijent. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | It-tieqa massima ta’ tħejjija għall-ewwel avveniment għal eżekuzzjonijiet ta’ aġent `/goal` misjuba jew għal talbiet sfurzati b’`x-omniroute-agent-goal`. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Ippermetti awtomatikament l-irkupru bikri tal-stream għal eżekuzzjonijiet ta’ aġent `/goal` misjuba. Issettja `false`/`0`/`off` biex tiddiżattiva l-attivazzjoni fakultattiva speċifika għall-għan. Dan jista’ biss IŻID l-irkupru fuq il-valur predefinit tal-operatur — qatt ma jissostitwixxi diżattivazzjoni espliċita mis-settings ta’ `STREAM_RECOVERY_ENABLED`/DB. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | Neħħi avvenimenti SSE `codex.*` mhux standard (eż. `codex.rate_limits`) li jikkawżaw ħsara lil `responses.stream()` tal-OpenAI SDK b’502. ATTIV b’mod predefinit (#11014). Issettja `0`/`false`/`no`/`off` biex tgħaddihom. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(mhux issettjat)_ | Trasport fakultattiv għall-app-server ta’ Codex. Endpoint WebSocket (`ws://`/`wss://`) ta’ sidecar lokali `codex app-server`. Meta jkun issettjat flimkien ma’ token, it-talbiet Codex jiġu indirizzati permezz ta’ JSON-RPC lejn is-sidecar minflok l-HTTP Responses API. Jista’ jiġi ssettjat ukoll għal kull konnessjoni permezz ta’ `providerSpecificData.codexAppServerUrl`. Użat minn `open-sse/executors/codex/appServerConfig.ts`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(mhux issettjat)_ | Token inline ta’ kapaċità/bearer ippreżentat lill-app-server. Sostituzzjoni għal kull konnessjoni: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(mhux issettjat)_ | Mogħdija għal fajl li jkun fih it-token tal-kapaċità tal-app-server (minn `codex app-server --ws-token-file`). Jintuża meta `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` ma jkunx issettjat. Sovrastruttura għal kull konnessjoni: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Id-direttorju tax-xogħol li fih titħaddem id-dawra tal-app-server. Sovrastruttura għal kull konnessjoni: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(mhux issettjat)_ | Politika tal-approvazzjoni mgħoddija lid-dawra tal-app-server (eż. `never`, `on-request`). Sovrastruttura għal kull konnessjoni: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(mhux issettjat)_ | Politika tas-sandbox mgħoddija lid-dawra tal-app-server (eż. `read-only`, `workspace-write`, `danger-full-access`). Meta ma tkunx issettjata, l-eżekutur juża `workspace-write` bħala valur predefinit (imsaħħaħ; qabel kien `danger-full-access`). Sovrastruttura għal kull konnessjoni: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Japprova awtomatikament it-talbiet għall-approvazzjoni tal-app-server stess (eżekuzzjoni ta' kmandi/fajls/permessi fuq il-host). Diżattivat b'mod predefinit — it-talbiet jiġu miċħuda awtomatikament; is-sejħiet tal-għodod tal-harness ma jiġux affettwati (jgħaddu mill-passthrough separat `item/tool/call`). Jaċċetta `true`/`1`/`yes`. Sovrastruttura għal kull konnessjoni: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Żmien biex jiġu riċevuti l-headers tar-rispons. | | `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Stennija massima għall-headers tar-rispons fuq talbiet bi streaming (ms). `0` jiddiżattiva dan il-limitu; `fetchStartTimeoutCapMs` espliċitu tal-fornitur jieħu preċedenza. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | Stennija massima għall-bidu tar-rispons (ms) għal kull tentattiv dirett mingħajr proxy. F'każ ta' timeout jerġa' jipprova darba fuq socket ġdid; issettja `0` biex tiddiżattiva l-limitu u żżomm l-imġiba preċedenti. | | `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 min) | Limitu minimu għall-bidu tar-rispons (ms) għal tentattivi diretti mingħajr proxy li l-host fil-mira tagħhom ikun privat/LAN/loopback (pereżempju `localhost`, `host.docker.internal`, `192.168.x.x`), sabiex bidu kiesaħ ta' Ollama nattiv ma jinqatax mill-valur predefinit ta' 30s hawn fuq. Jaġixxi bħala limitu minimu: l-istennija effettiva tkun l-akbar minn dan il-valur u `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS`; `0` jew valur invalidu jneħħi l-limitu minimu lokali. Il-hosts remoti ma jiġux affettwati. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 min) | Limitu massimu (ms) għat-tentattiv RETRY fuq socket ġdid wara timeout fil-bidu tar-rispons ta' tentattiv miġbur f'pool hawn fuq (#13703). Japplika biss meta s-sejjieħ ikun diġà waħħal is-sinjal tal-iskadenza tiegħu stess (il-kaskata tal-konnessjoni/mudell/fornitur/`FETCH_TIMEOUT_MS` riżolta); dak is-sinjal huwa l-limitu reali u jiskatta l-ewwel fil-fluss maħsub, għalhekk dan huwa mekkaniżmu ta' sikurezza ġeneruż aktar milli limitu fiss — mingħajru, it-tentattiv mill-ġdid kien jerġa' juża l-istess tieqa qasira ta' `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` bħat-tentattiv miġbur f'pool u jirritorna 504 għal mudelli ta' raġunament b'TTFB bil-mod iżda f'saħħithom. Qatt ma jista' jkun inqas mil-limitu minimu fiss hawn fuq; meta s-sejjieħ ma jipprovdi ebda sinjal tal-iskadenza, it-tentattiv mill-ġdid iżomm il-limitu minimu fiss mingħajr tibdil. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Żmien biex jiġi riċevut il-korp kollu tar-rispons. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Timeout għall-istabbiliment tal-konnessjoni TCP. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Timeout ta' inattività tas-socket keep-alive. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Timeout tal-proxy tal-marki tas-swaba' TLS (wreq-js). | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Jistabbilixxi limitu għaż-żmien sal-ewwel byte speċifikament fuq il-korp tat-trasport tal-marka tas-swaba' TLS ta' wreq-js; `TLS_CLIENT_TIMEOUT_MS` waħdu ma jistax jaqbad korp imwaħħal, peress li jiġi riżolt malli jaslu l-headers (#12656). Timeout jikkanċella l-qarrej ta' wreq u jaqa' lura fuq id-dispatcher dirett/tal-proxy; `0` jiddiżattiva l-watchdog. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Għall-eżekutur OpenCode biss, u biss waqt li l-feature flag `OPENCODE_RESPONSES_STALL_ROTATION` ikun attiv (diżattivat b'mod predefinit): jistabbilixxi limitu għall-istennija tal-ewwel byte tal-korp ta' tweġiba Responses bi streaming wara l-headers tagħha (#13484). Stream ta' Responses jinfetaħ b'`response.created`, għalhekk silenzju lil hinn minn din it-tieqa huwa waqfien: il-kont jiddaħħal f'perjodu ta' cooldown u t-talba tgħaddi għall-kont li jmiss darba; waqfien ieħor ifalli minnufih. `0` jiddiżattiva l-protezzjoni anki meta l-flag ikun attiv. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= diżattivat) | Għall-eżekutur OpenCode biss: jistabbilixxi limitu għall-istennija tal-headers tar-rispons upstream fuq sejħa Responses bi streaming meta jkun għadu disponibbli kont ieħor — talba fil-kju tieqaf tistenna u tkompli minflok ma tibqa' żżomm it-tieqa sħiħa tal-headers. Jiġu affettwati biss is-sejħiet Responses bi streaming (l-istream ta' Responses jinfetaħ b'`response.created`, għalhekk is-silenzju hemmhekk huwa kju, mhux ġenerazzjoni); it-tlestijiet taċ-chat u s-sejħiet mhux bi streaming jibqgħu kif inhuma, u t-tieqa tqassar biss il-limitu massimu effettiv tal-bidu tal-fetch, u qatt ma testendih. Valur issuġġerit meta tattivah: `30000`. `0` jiddiżattivah. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Għall-eżekutur OpenCode biss: kemm-il darba għal kull talba l-limitu ta’ stennija għall-headers ta’ hawn fuq jista’ jgħaddi għall-kont li jmiss. L-aħħar kont li jifdal dejjem iżomm il-perjodu sħiħ għall-headers. | | `OPENCODE_PARK_AND_RESUME` | `false` | Għall-eżekutur OpenCode biss: ipparkja t-talba b’heartbeat wara 429s tranżitorji ripetuti (jew markatur ġdid ta’ pressjoni fuq il-pool), imbagħad erġa’ ħaddem parti waħda limitata sa 3 kontijiet sekwenzjali minflok ma tqassamha mal-flotta kollha (#13924). Mitfi b’mod awtomatiku: kull 429 idawwar għall-kont li jmiss eżattament bħal qabel. | | `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | Għall-eżekutur OpenCode biss: meta kull kont lest wara l-cooldown fil-parti ta’ replay tal-park-and-resume jitwarrab mill-memorja tar-rifjut tal-proxy, użahom xorta waħda minflok ma ma jerġa’ jitħaddem xejn (#14851, segwitu għal #14750). Mitfi b’mod awtomatiku: f’dak il-każ il-parti ta’ replay tkun vojta, bħal qabel #14750. | | `STREAM_READINESS_STALL_RETRY` | `false` | Għaċ-chat bi streaming biss: meta l-ewwel korp upstream jeħel qabel ma jipproduċi avveniment li jista’ jintuża, agħmel it-tieni tentattiv limitat mill-istess mogħdija tar-routing, bl-istess baġit ta’ prontezza u mingħajr penali għall-kont. Mitfi b’mod awtomatiku: jekk l-ewwel korp jeħel, it-talba tfalli mingħajr tentattiv mill-ġdid. | | `OPENCODE_POOL_RESELECT` | `false` | Għall-eżekutur OpenCode biss: wara 429 mingħand fornitur imqassam f’buckets skont l-egress fuq kont mingħajr proxy taħt kuntest ambjentali tal-pool, itlob lill-pool tal-konnessjonijiet membru ieħor għat-tentattiv li jmiss minflok terġa’ tipprova bl-istess indirizz tal-egress. Jordna, qatt ma jeskludi: pool eżawrit iżomm l-imġiba attwali. Mitfi b’mod awtomatiku: kull 429 idawwar għall-kont li jmiss eżattament bħal qabel. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(mhux issettjat)_ | Għall-eżekutur OpenCode biss: ibdel il-path tal-markatur tal-pressjoni fuq il-pool li jinqara qabel l-ipparkjar (`{since, reason, ttl_s}`, valur awtomatiku `/tmp/opencode-pool-strain.json`, #13924). Markatur ġdid jipparkja mingħajr ma jerġa’ jgħodd; jekk ikun nieqes jew skadut, jerġa’ juża l-counter tal-burst. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | Timeout tal-hop tal-proxy għat-talbiet tal-bridge `/v1`. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Ippunta l-eżekutur tal-ġbir mill-web ta’ Firecrawl lejn istanza self-hosted (iċ-ċavetta tal-API hija fakultattiva barra mill-cloud). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Timeout għal kull talba għall-eżekutur tal-ġbir mill-web ta’ Firecrawl. | | `TAVILY_BASE_URL` | _(mhux issettjat)_ | URL bażi għall-ġabbar tal-kwota `/usage` ta’ Tavily (Limiti tal-Fornitur); jiġi injorat meta jippunta lejn `api.tavily.com`. Jekk mhux issettjat, juża l-URL bażi tal-konnessjoni. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Timeout ġenerali għat-talba tas-server għall-bridge. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Żmien biex jintbagħtu l-headers tar-rispons permezz tal-bridge. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Timeout ta’ inattività tal-keep-alive tal-bridge. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Timeout tas-socket mhux ipproċessat (0 = diżattivat). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Perjodu ta’ grazzja fuq SIGTERM/SIGINT qabel ħruġ sfurzat. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | Valur ta’ riżerva użat minn `src/shared/utils/fetchTimeout.ts` meta `FETCH_TIMEOUT_MS` ma jkunx issettjat. | | `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | Timeout (ms) għall-presets `validationRead` u `modelsProbe` f’`src/shared/network/safeOutboundFetch.ts`. Żidu għal endpoints bil-mod (Cerebras, Cloudflare AI, Groq) biex tevita ċaqliq ripetut bejn attiv/żball fid-dashboard. Għal valuri invalidi (<1000) jew mhux numeriċi, jerġa’ juża 8000ms. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | Timeout tal-ġbir speċifiku għar-relay f’`open-sse/utils/proxyFetch.ts` (#9158). Relay imwaħħal irid ifalli qabel it-timeout tal-klijent/aġent (~30s) sabiex min jagħmel it-talba jara falliment speċifiku għar-relay minflok timeout upstream ġeneriku. Limitat għal `29000` sabiex dejjem jiskatta l-ewwel. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | Backoff kondiviż għat-tentattivi mill-ġdid għall-mogħdijiet direct/relay/proxy li jerġgħu jippruvaw darba f’`open-sse/utils/proxyFetch.ts` (#9158). `0` = erġa’ pprova minnufih. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Timeout nattiv tat-talba ta’ wreq-js (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Perjodu ta’ grazzja assolut għall-hard-deadline ta’ JS miżjud fuq it-timeout nattiv. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Timeout nattiv tat-talba ta’ wreq-js (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Perjodu ta’ grazzja għall-iskadenza assoluta stretta ta’ JS, miżjud mat-timeout nattiv. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (mitfi) | Iżid "Għandek tfittxija integrata fuq il-web. Wieġeb il-mistoqsijiet direttament billi tuża r-riżultati tat-tfittxija." mal-messaġġ tas-sistema ta’ min jagħmel is-sejħa (`perplexity-web/protocol.ts`). Mitfi b’mod awtomatiku — Perplexity xorta waħda jwettaq it-tiftix, u s-sentenza tidher fit-tweġibiet bħala meta-kummentarju għall-klijenti tal-ipprogrammar. Issettja `1`/`true`/`yes`/`on` biex tirrestawrah. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Timeout nattiv tat-talba wreq-js (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Perjodu ta’ grazzja għall-iskadenza assoluta stretta ta’ JS, miżjud mat-timeout nattiv. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Timeout nattiv tat-talba wreq-js (`notionTlsClient.ts`); `notion-web` iżidu għal kull talba għal `180000` għal ġenerazzjonijiet twal. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Perjodu ta’ grazzja għall-iskadenza assoluta stretta ta’ JS, miżjud mat-timeout nattiv. | | `OMNIROUTE_BROWSER_POOL` | `on` | Ġabra kondiviża ta’ browsers Playwright għaċ-chat ibbażat fuq cookies tal-web u sostnut minn browser (`browserPool.ts`); issettja `off` biex tiddiżattivaha. | | `OBSCURA_BIN` | `auto-detect` | Mogħdija għall-binarju `obscura` użat bħala l-magna primarja mill-ġabra ta’ browsers u mill-eżekutur ta’ Cloudflare Playground (`open-sse/services/obscura.ts`); jiġi individwat awtomatikament mill-PATH tas-sistema meta ma jkunx issettjat. | | `OBSCURA_CDP_ENDPOINT` | _(mhux issettjat)_ | Ipponta lejn Obscura li diġà qed jaħdem (`http://host:port`) minflok ma tniedi wieħed; il-modulu ma jkunx sid ta’ dak il-proċess (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `port liberu każwali` | Port espliċitu għall-`obscura serve` imniedi; jintgħażel port liberu awtomatikament meta ma jkunx issettjat (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Agħżel li talba taċ-chat bil-cookie tal-web tuża l-mogħdija sostnuta minn browser (`browserBackedChat.ts`); `1` biex tattivaha. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | URL bażi għall-eżekutur ta’ Kimi Web (Connect-RPC internazzjonali ta’ kimi.ai) (`kimi-web.ts`); ibdlu biss għal endpoints ta’ mirror/proxy. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Endpoint sħiħ taċ-chat għall-eżekutur ta’ Kimi Web (`kimi-web.ts`). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(individwat awtomatikament)_ | Mogħdija għal eżekutibbli Chrome/Edge tas-sistema għad-dħul interattiv permezz tal-browser ta’ Adobe Firefly (`adobeFireflyBrowserLogin.ts`); tieħu preċedenza fuq l-individwazzjoni awtomatika għal kull OS. | | `OMNIROUTE_STANDALONE_DIR` | _output standalone ta’ .build/_ | Override waqt il-build għad-direttorju tal-output standalone użat mill-pass ta’ kollokazzjoni ta’ wara l-build (`scripts/build/colocate-standalone.mjs`); għodod tal-build, mhux tar-runtime. | It-tentattivi tal-miri combo jirtu t-timeout solvut tat-talba upstream (`FETCH_TIMEOUT_MS`, jew `REQUEST_TIMEOUT_MS` meta dan jipprovdi l-valur awtomatiku għall-fetch). Issettja `targetTimeoutMs` f’combo, fil-valuri awtomatiċi tal-combo, jew f’override tal-fornitur biss biex tagħmel il-fallback tal-combo aktar veloċi; il-valuri ogħla mit- timeout upstream attwali jiġu limitati għat-timeout upstream. `comboTimeoutMs` huwa baġit separat skont l-arloġġ għall-combo kollu mifrux fuq il-miri ta’ failover. Ħallih mhux issettjat jew `0` biex iżżomm l-iterazzjoni mingħajr limitu (waqfien strett hardcoded ta’ 10 minuti f’ `comboPredicates.ts` xorta japplika). Valur pożittiv jissostitwixxi dik ix-xibka ta’ sikurezza għall-combo. Żomm `comboTimeoutMs` itwal minn `targetTimeoutMs` sabiex il-failover xorta jkollu l-ħin wara l-ewwel mira kajmana. ### Limiti tas-Circuit Breaker Irfinar tas-circuit breaker fil-livell tal-fornitur. Il-valuri awtomatiċi jirriflettu l-valuri skalati użati minn v3.6 għal aktar minn 500 konnessjoni. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------------------------------- | ---------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Limitu ta’ fallimenti konsekuttivi għall-fornituri OAuth qabel ma jiskatta l-interruttur. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | Perjodu ta’ reset (ms) għall-interruttur tal-fornitur OAuth. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | Limitu ta’ fallimenti konsekuttivi għall-fornituri b’API key. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | Perjodu ta’ reset (ms) għall-interruttur tal-fornitur b’API key. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Limitu ta’ fallimenti konsekuttivi għall-fornituri lokali (Ollama, LM Studio, ...). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Perjodu ta’ reset (ms) għall-interruttur tal-fornitur lokali. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: għadd ta’ fallimenti fil-perjodu qabel ma l-fornitur OAuth kollu jidħol f’perjodu ta’ stennija. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: perjodu kontinwament aġġornat għall-għadd tal-fallimenti (ms) għall-fornituri OAuth. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: perjodu ta’ stennija (ms) ladarba jintlaħaq il-limitu tal-fornitur OAuth. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | Il-fornitur OAuth jidħol fl-istat DEGRADED wara dan l-għadd ta’ fallimenti. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | Multiplikatur massimu taż-żieda ta’ resetTimeout għall-fornitur OAuth. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | Il-fornitur OAuth iżid il-livell wara dan l-għadd ta’ ċikli miftuħa. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: għadd ta’ fallimenti fil-perjodu qabel ma l-fornitur b’API key kollu jidħol f’perjodu ta’ stennija. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: perjodu kontinwament aġġornat għall-għadd tal-fallimenti (ms) għall-fornituri b’API key. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: perjodu ta’ stennija (ms) ladarba jintlaħaq il-limitu tal-fornitur b’API key. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | Il-fornitur b’API key jidħol fl-istat DEGRADED wara dan l-għadd ta’ fallimenti. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | Multiplikatur massimu taż-żieda ta’ resetTimeout għall-fornitur b’API key. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | Il-fornitur b’API key iżid il-livell wara dan l-għadd ta’ ċikli miftuħa. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: għadd ta’ fallimenti qabel ma l-fornitur lokali kollu jidħol f’perjodu ta’ stennija. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: perjodu kontinwament aġġornat għall-għadd tal-fallimenti (ms) għall-fornituri lokali. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Interruttur fil-livell tal-fornitur: perjodu ta’ stennija (ms) ladarba jintlaħaq il-limitu tal-fornitur lokali. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Perjodu ta’ stennija għal kull key (ms) applikat mir-rotazzjoni b’diversi API keys meta 429 mis-servizz upstream ma jkunx fih `Retry-After` (#14573). Valuri mhux pożittivi jew mhux numeriċi jerġgħu jużaw il-valur predefinit. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Il-livell ta’ backoff li fih il-fornitur ta’ pin tal-context cache jitqies bħala mhux tajjeb għal żmien twil u l-pin jitneħħa biex isir failover. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Perjodu kontra l-varjazzjonijiet ripetuti (ms) li jittollera perjodi qosra u tranżitorji ta’ stennija qabel ma jitneħħa pin tal-context cache. | ### Xenarji | Xenarju | Konfigurazzjoni | | ---------------------------------------------- | ---------------------------------------------------------- | | **Ġenerazzjoni ta’ kodiċi fit-tul** | `REQUEST_TIMEOUT_MS=900000` (15-il minuta) | | **Illimita t-tul totali tal-stream** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 minuta) | | **Falliment rapidu għall-API tal-produzzjoni** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Mudelli b’ħsieb estiż** | `STREAM_IDLE_TIMEOUT_MS=300000` (5 minuti bejn il-biċċiet) | --- ## 16. Reġistrazzjoni Is-sistema tar-reġistrazzjoni tikteb kemm fuq stdout kif ukoll f'fajls tar-reġistru rotati. Il-konfigurazzjoni kollha tinqara minn `src/lib/logEnv.ts`. | Varjabbli | Valur predefinit | Deskrizzjoni | | ----------------------------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Livell minimu tar-reġistrazzjoni: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Format tal-output: `text` (li jinqara mill-bniedem) jew `json` (strutturat). | | `APP_LOG_TO_FILE` | `true` | Ikteb ir-reġistri f'fajl flimkien ma' stdout. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Mogħdija tal-fajl tar-reġistru (relattiva għall-għerq tal-proġett jew `DATA_DIR`). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Daqs massimu tal-fajl qabel ir-rotazzjoni. Jaċċetta: `50M`, `1G`, `512K`, jew bytes sempliċi. | | `APP_LOG_RETENTION_DAYS` | `7` | Għadd ta' jiem li għalihom jinżammu l-fajls rotati tar-reġistru tal-applikazzjoni. | | `APP_LOG_MAX_FILES` | `20` | Għadd massimu ta' kopji ta' riżerva tal-fajls rotati tar-reġistru. | | `CALL_LOG_RETENTION_DAYS` | `7` | Għadd ta' jiem li għalihom jinżammu l-entrati tar-reġistru tat-talbiet/sejħiet fil-bażi tad-data. | | `CALL_LOG_MAX_ENTRIES` | `10000` | Għadd massimu ta' entrati tar-reġistru tas-sejħiet fil-buffer fil-memorja. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Għadd massimu ta' ringieli fit-tabella SQLite `call_logs` qabel it-tnaqqija. | | `ENABLE_REQUEST_LOGS` | _(mhux issettjat)_ | Ġiegħel ir-reġistrazzjoni dettaljata tat-talbiet tinxtegħel jew tintefa, filwaqt li tegħleb l-issettjar tad-dashboard. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (siegħa) | Età massima għall-entrati orfni tar-reġistru tat-talbiet attivi qabel it-tindif mill-memorja. | | `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | Aħżen il-biċċiet tal-fluss fl-artefatti tal-pipeline meta `call_log_pipeline_enabled=true`. Attivazzjoni fakultattiva (`true`) — mitfi b'mod predefinit biex jiġi ffrankat l-ispazju fuq id-diska. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | Daqs massimu f'KB tal-artefatt tar-reġistru tas-sejħiet tal-pipeline meta `call_log_pipeline_enabled=true`. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Għadd massimu ta' ringieli fit-tabella SQLite `proxy_logs` qabel it-tnaqqija. | | `PROXY_LOG_INCLUDE_IPS` | `false` | Inkludi l-IP tal-klijent/ħruġ u l-prefissi tal-kont fir-reġistri tal-console `[ProxyEgress]`. Ir-rekords tar-reġistru tal-proxy fid-dashboard/bażi tad-data jżommu d-dettalji kollha. | | `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Issettja għal `"true"` jew `"1"` biex tirreġistra `first_chunk_ms` (mill-bidu tat-trażmissjoni sal-ewwel byte utli tal-kontenut) fir-ringieli tar-reġistru tal-proxy. Tkebbeb kull kontenut upstream fi fluss passthrough għażżien u taġġorna r-ringiela malli jasal il-byte; mitfi b'mod predefinit sabiex it-tweġibiet jgħaddu mingħajr tibdil. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (minuta) | Kemm-il darba `src/lib/logRotation.ts` jerġa' jiċċekkja d-daqs tal-fajl tar-reġistru attiv. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Tul massimu tas-sekwenza ta' karattri miżmuma fl-artefatti tar-reġistru taċ-chat (64 KB b'mod predefinit). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Għadd ta' elementi tal-array miżmuma mit-tarf meta jitqassru l-payloads tar-reġistru taċ-chat. | | `CHAT_LOG_MAX_DEPTH` | `6` | Fond massimu ta' ndħil qabel ma jitqassru l-payloads tar-reġistru taċ-chat. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Għadd massimu ta' ċwievet tal-oġġett miżmuma fil-payloads tar-reġistru taċ-chat (0 = bla limitu). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | Daqs tal-kontenut kollu tat-talba/tweġiba (KB) li, jekk jinqabeż, jiġi sostitwit b'sommarju bażiku minflok bil-klonu sħiħ. Żid dan jekk konverżazzjonijiet twal ibbażati fuq aġenti juru placeholder minflok il-messaġġi reali fid-dashboard. | | `CHAT_DEBUG_FILE` | `false` | Meta jkun true, `serializeArtifactForStorage` jaqbeż it-tqassir ibbażat fuq id-daqs. Għad-debugging biss. | --- ## 17. Ottimizzazzjoni tal-Memorja | Varjabbli | Valur predefinit | Deskrizzjoni | | ----------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MEMORY_MB` | _awtomatiku_ (bare metal); **`1024` fl-immaġni Docker** | Limitu **rrakkomandat** għall-heap ta’ V8 (MB) f’Docker/standalone. Meta ma jkunx issettjat, jiġi kkalibrat dinamikament (~35% tar-RAM tas-sistema, limitat għal `[512, 4096]`); `512` huwa biss il-limitu minimu meta l-memorja totali ma tkunx tista’ tinqara. Fuq `run-standalone.mjs` (Docker CMD), valur **espliċitu** jiġi miżjud bħala `--max-old-space-size` u **jieħu preċedenza** fuq flag tal-heap kunfliġġenti f’NODE_OPTIONS (l-aħħar flag ta’ V8). `omniroute serve` xorta jippreferi flag tal-heap eżistenti f’NODE_OPTIONS (#5238). Tissettjax it-tnejn għal numri differenti — il-proċess jirreġistra twissija li ssemmi ż-żewġ valuri u dak li jieħu preċedenza. **L-immaġni Docker uffiċjali dejjem tissettja `1024`, għalhekk il-kalibrazzjoni qatt ma titħaddem fiha.** Il-endpoint `/v1/responses` tal-aġent tal-kodifikazzjoni jeħtieġ `8192`–`12288` flimkien ma’ marġni addizzjonali għaċ-cgroup — ara [Gwida għal Docker — RAM waqt it-tħaddim](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). | | `OMNIROUTE_RSS_PRESSURE_MB` | _awtomatiku_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; diżattivat meta `OMNIROUTE_MEMORY_MB` ma jkunx issettjat) | `open-sse/utils/resourcePressure.ts` | Limitu assolut ta’ sigurtà għall-RSS tal-proċess (MB) għall-memorja nattiva/esterna li `heapUsed` ta’ V8 ma jistax jara; ’il fuq minnu, talbiet ġodda jirċievu 503 `resource_pressure`. L-RSS rarament jonqos wara żieda qawwija, għalhekk użah flimkien ma’ `OMNIROUTE_PRESSURE_SELF_RESTART`. | | `PROMPT_CACHE_MAX_SIZE` | `50` | Għadd massimu ta’ entrati fil-cache tal-prompt tas-sistema. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Daqs totali massimu tal-cache tal-prompt. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 minuti) | TTL tal-entrata fil-cache tal-prompt. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Għadd massimu ta’ risposti b’temperature=0 fil-cache. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Daqs totali massimu tal-cache semantika. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 minuta) | TTL tal-entrata fil-cache semantika. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Għeruq tal-korpus lokali li jżommu indiċi attiv fil-memorja fl-istess ħin (`src/lib/localCorpus/configured.ts`). LRU: meta jintlaħaq il-limitu, l-indiċi tal-għerq li jkun intuża l-inqas reċentement jitneħħa u jerġa’ jinbena mal-mistoqsija li jmiss tiegħu. Limitat għal minimu ta’ `1`; valur mhux numeriku jerġa’ lura għall-valur predefinit. | | `STREAM_HISTORY_MAX` | `50` | Għadd massimu ta’ avvenimenti reċenti tal-fluss fil-buffer tal-viżwalizzazzjoni diretta tad-Dashboard. | | `CONTEXT_LENGTH_DEFAULT` | _(mhux issettjat)_ | Valur globali li jieħu post it-tul tal-kuntest (tokens) għal kull fornitur li m’għandux varjabbli `CONTEXT_LENGTH_`. Meta jkun issettjat, dan **jissostitwixxi** l-valuri tal-katalgu, il-valur alternattiv tad-dashboard u r-reġistru għal dawk il-fornituri; meta ma jkunx issettjat, OmniRoute juża l-katina integrata tiegħu, li bħala l-aħħar għażla tuża `128000`. Ara [Tul tal-kuntest għal kull fornitur](#per-provider-context-length-context_length_provider). | | `USAGE_TOKEN_BUFFER` | `100` | Marġni addizzjonali ta’ tokens irriżervat waqt it-traċċar tal-kwoti tal-użu. | ### Tul tal-kuntest għal kull fornitur (`CONTEXT_LENGTH_`) `open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) jaqra wkoll forma **għal kull fornitur** li isimha jinbena mill-ID tal-fornitur waqt it-tħaddim, għalhekk ma tistax tiġi elenkata ringiela b’ringiela fit-tabella ta’ hawn fuq jew f’`.env.example`. **Isem.** `CONTEXT_LENGTH_`, fejn `` huwa l-ID tal-fornitur b’ittri kapitali, b’kull karattru barra minn `A-Z` / `0-9` sostitwit b’`_`. L-ID tal-fornitur huwa dak kanoniku wara r-riżoluzzjoni tal-alias (il-parti `provider` ta’ string `provider/model` wara li jkun ġie riżolt alias qasir). Nodi personalizzati kompatibbli ma’ OpenAI jew Anthropic jużaw l-ID iġġenerat tan-nodu tagħhom, għalhekk il-UUID huwa parti mill-isem tal-varjabbli. Il-valur huwa numru sħiħ pożittiv ta’ tokens; kull ħaġa oħra (vojta, `0`, negattiva, mhux numerika) tiġi injorata u r-riżoluzzjoni tgħaddi għall-pass li jmiss. | ID tal-fornitur | Isem tal-varjabbli | | ----------------------------------------------------------- | -------------------------------------------------------------------------- | | 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 | **Preċedenza.** Għal par `provider/model`, jirbaħ l-ewwel pass li jipproduċi valur: 1. `CONTEXT_LENGTH_` għal dak il-fornitur. 2. `CONTEXT_LENGTH_DEFAULT` (sovrastruttura globali tal-ambjent). 3. It-tieqa għal kull mudell: sovrastruttura persistenti tal-kuntest (issettjata fid-dashboard, jew ippinnjata awtomatikament mir-rikonċiljatur tal-iskoperta, ara `CONTEXT_WINDOW_RECONCILE_INTERVAL`), inkella l-valur sinkronizzat tal-katalgu / models.dev. 4. Il-`defaultContextLength` tar-reġistru tal-fornitur. 5. Euristiċi tal-isem tal-mudell (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000). 6. Valuri predefiniti integrati għal kull fornitur, imbagħad `128000`. Iż-żewġ passi tal-ambjent japplikaw għall-**fornitur kollu**: kull mudell ta’ dak il-fornitur jirċievi l-istess limitu, u dawn jieħdu preċedenza fuq is-sovrastrutturi għal kull mudell fid-dashboard. Meta mudell wieħed biss ta’ fornitur ikun jeħtieġ tieqa differenti, uża minflok sovrastruttura għal kull mudell fid-dashboard. **Ambitu.** Din il-katina tikkontrolla l-verifika tat-tieqa tal-kuntest waqt it-talba (ir-rifjut `context_length_exceeded` / "L-input jaqbeż it-tieqa tal-kuntest" f’ `open-sse/handlers/chatCore.ts`), il-baġits tal-kompressjoni tal-prompt u l-limiti tal-kuntest ikkombinati. Il- `context_length` reklamat minn `GET /v1/models` xorta jista’ jiġi mill-katalgu jew mill-metadata tar-reġistru u mhuwiex garantit li jirrifletti s-sovrastruttura tal-ambjent. **Eżempju.** Fornitur li l-mudell tiegħu jaċċetta tieqa ta’ 1,050,000 token filwaqt li l-katalgu jirrapporta 128,000: ```dotenv CONTEXT_LENGTH_AGENTROUTER=1050000 ``` Erġa’ ibda s-server wara li tibdlu: il-valur jinqara mill-ambjent tal-proċess tas-server. Fl-**app tad-desktop**, is-server jaħdem bħala proċess wild u ma jarax varjabbli tas-sistema issettjat wara li tkun tnediet l-app; poġġi l-linja fil-fajl `.env` li ttella’ l-app (l-ordni tat-tiftix tinsab f’ [Gwida ta’ Electron: Tiftix tal-fajl tal-ambjent](../guides/ELECTRON_GUIDE.md#environment-file-lookup)), imbagħad agħlaq l-app kompletament u erġa’ iftaħha. ### Kompressjoni | Varjabbli | Valur predefinit | Deskrizzjoni | | ------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | mhux issettjat | Afda l-`.rtk/filters.json` tal-proġett mingħajr hash `.rtk/trust.json`. Uża biss fi żvilupp lokali kkontrollat. | ### Magna tal-Memorja (pjan 21) ### Spiża fuq il-loop tal-avvenimenti tal-memorja, il-ħiliet u l-aġġornament tat-token (#10349) OmniRoute huwa **proċess Node wieħed**. L-estrazzjoni/irkupru tal-memorja, l-injezzjoni tal-ħiliet u l-aġġornament tat-token tal-fornitur jaħdmu fuq dak l-**istess loop tal-avvenimenti** bħal `GET /healthz` u d-dashboard. Mhumiex thread ta’ worker. | Xogħol | Kodiċi | Valur predefinit | Kontroll tal-operatur | | --------------------------------- | ---------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Estrazzjoni / irkupru tal-memorja | `src/lib/memory/` | **memoryEnabled** fid-dashboard (mixgħul awtomatikament) | Itfi **Settings → Memory**. M’hemm l-ebda swiċċ ta’ emerġenza separat tal-env lil hinn milli tiddiżattiva l-karatteristika fis-settings. | | Injezzjoni tal-ħiliet | `src/lib/skills/injection.ts` | **skillsEnabled** fid-dashboard (mixgħul awtomatikament) | Itfi **Settings → Memory/Skills** (`skillsEnabled`). Il-parametri tas-sandbox hawn taħt jillimitaw biss l-eżekuzzjoni wara li l-injezzjoni tkun diġà mixgħula. | | Aġġornament tat-token | `src/sse/services/tokenRefresh.ts` | Mixgħul għal fornituri OAuth/web konnessi | Skonnettja l-fornitur jew ħalli t-tokens jibqgħu validi; bħalissa m’hemm l-ebda env `TOKEN_REFRESH=0`. | Jekk `/healthz` ikun bil-mod fuq magna mhux okkupata, iddiżattiva l-memorja + il-ħiliet l-ewwel, imbagħad iċċekkja t-tagħbija tal-katalgu/kompressjoni (#10303, #9685). Dawn il-karatteristiċi jċedu f’punti `await` iżda xorta jikkompetu għat-thread wieħed. Parametri tas-saff tal-embedding, tal-maħżen tal-vetturi u tar-riklassifikazzjoni għas-subsistema tal-memorja persistenti (`src/lib/memory/`). | Varjabbli | Valur predefinit | Deskrizzjoni | | ------------------------------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 min) | TTL għall-cache tal-embeddings fil-memorja (għal kull firma ta’ sors/mudell/dimensjoni). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Għadd massimu ta’ entrati LRU miżmuma fil-cache tal-embeddings. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | ID tar-repo HF għall-pipeline lokali MiniLM ta’ `@huggingface/transformers`, attivat fuq għażla (~23 MB int8, ~400 MB RAM). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | ID tar-repo HF għall-embedder statiku potion/Model2Vec ibbażat fuq tabella ta’ tfittxija. Jitniżżel b’mod għażżien fid-direttorju tal-cache. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Direttorju użat biex jinżammu fil-cache l-fajls tal-mudell statiku potion. Meta ma jkunx issettjat, il-valur predefinit ikun taħt `DATA_DIR`. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | Jissostitwixxi l-URL bażi ta’ Hugging Face Hub użat minn `staticPotion.ts` (eż. endpoint mera għal konfigurazzjonijiet iżolati min-network). | | `MEMORY_VEC_TOP_K` | `20` | Top-K predefinit użat mit-tiftix vettorjali brute-force ta’ `sqlite-vec` ġewwa `src/lib/memory/vectorStore.ts`. | | `MEMORY_RRF_K` | `60` | Il-kostanti `k` ta’ Reciprocal Rank Fusion għall-irkupru ibridu FTS5 + vettorjali (riċetta ta’ sqlite-vec). | | `VECTOR_STORE_DISABLE_VEC` | `false` | Punt ta’ kontroll għall-ittestjar/dijanjostika f’`getVectorStore()` (`src/lib/memory/vectorStore.ts`): meta jkun `true`, iġiegħel il-ħażna vettorjali tkun `null` (jissimula ambjent cloud/WASM mingħajr `sqlite-vec`), u jiddegrada l-irkupru tal-memorja għal tiftix bil-kliem ewlieni FTS5. Ħallih mhux issettjat fil-produzzjoni. | | `NOTION_API_KEY` | _(mhux issettjat)_ | Ċavetta API għall-backend ta’ Notion (użata mill-konfigurazzjoni predefinita ta’ backend magħruf f’`genericBackend.ts`). | | `NOTION_API_URL` | `https://api.notion.com/v1` | URL bażi għall-API ta’ Notion (jista’ jiġi sostitwit għal alternattivi ta’ Notion ospitati lokalment). | | `OBSIDIAN_API_KEY` | _(mhux issettjat)_ | Ċavetta API għall-backend ta’ Obsidian Vault (użata mill-konfigurazzjoni predefinita ta’ backend magħruf f’`genericBackend.ts`). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | URL bażi għall-API ta’ Obsidian Vault (jista’ jiġi sostitwit għal vault remot). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | Is-swiċċ ewlieni għad-dekadenza tal-memorja ttajpjata TV6. **Attivazzjoni fakultattiva (mitfi b’mod predefinit)** — it-tindif **iħassar** memorji dekomposti. Meta jkun mitfi, `access_count`/`last_accessed_at` huma biss telemetrija u qatt ma jitħassar xejn. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (jiem) li warajh memorja `episodic` mhux użata tiddekomponi. `0` jagħmel ukoll il-memorja episodika immuni. Tipi dejjiema (`factual`/`procedural`/`semantic`) huma dejjem immuni. L-arloġġ tad-dekadenza jerġa’ jibda abbażi ta’ `last_accessed_at`. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | Memorja injettata `>=` dan in-numru ta’ drabi ssir immuni għad-dekadenza irrispettivament mit-tip. `0` jiddiżattiva l-immunità bbażata fuq l-aċċess. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (diżattivat) | Intervall (sekondi) għat-tindif perjodiku fakultattiv tad-dekadenza f’`src/lib/memory/typedDecay.ts`. `0`/mhux issettjat = l-ebda tindif perjodiku. Jeħtieġ attivazzjoni doppja: jirrikjedi wkoll `MEMORY_TYPED_DECAY_ENABLED=true`. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(mhux issettjat)_ | IDs tal-fornituri separati b’virgoli (mingħajr distinzjoni bejn ittri kbar u żgħar) li jaċċettaw messaġġ `system` **biss fl-indiċi 0** (`src/lib/memory/injection.ts`). Għal dawn, id-dħul tal-memorja f’nofs l-array li huwa sikur għall-cache mhuwiex sikur f’konverżazzjonijiet b’diversi dawriet, għalhekk il-memorja tiġi magħquda/miżjuda fil-bidu bħala l-ewwel messaġġ tas-sistema. B’mod predefinit jinkludi biss `xiaomi-mimo`/`mimo`; estendih għal endpoints kompatibbli ma’ OpenAI u ospitati lokalment (eż. Qwen3.5+/3.6) li l-mudell taċ-chat tagħhom jinforza l-istess restrizzjoni ta’ messaġġ tas-sistema wieħed u ewlieni. | ### Eżempju ta’ Docker b’RAM Baxxa `128` huwa biss għad-dashboard. Aġenti tal-ipprogrammar fuq dan il-heap jiltaqgħu ma’ `FATAL ERROR` waqt talbiet twal lil `/v1/responses`. Tużax dan l-eżempju bħala gateway għal Claude/Codex/Grok. ```bash OMNIROUTE_MEMORY_MB=128 PROMPT_CACHE_MAX_SIZE=20 PROMPT_CACHE_MAX_BYTES=524288 # 512 KB SEMANTIC_CACHE_MAX_SIZE=25 SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MB STREAM_HISTORY_MAX=10 ``` --- ## 18. Sinkronizzazzjoni tal-Ipprezzar Sinkronizzazzjoni awtomatika tad-dejta tal-ipprezzar tal-mudelli minn sorsi esterni. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ----------------------- | ---------------- | ------------------------ | ------------------------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Sinkronizzazzjoni perjodika tal-ipprezzar fakultattiva. | | `PRICING_SYNC_INTERVAL` | `86400` (24h) | `src/lib/pricingSync.ts` | Intervall tas-sinkronizzazzjoni f'sekondi. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Sorsi tad-dejta separati b'virgola. | --- ## Sinkronizzazzjoni tal-ELO tal-Arena | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Sinkronizzazzjoni perjodika tal-ELO tal-klassifika Arena AI, konfigurabbli mill-Feature Flags tad-Dashboard jew b'`false` biex ma tipparteċipax. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | Il-forma tal-prefiss użata għall-IDs tal-mudelli f'`GET /v1/models`. `dual` jippubblika kemm il-prefiss qasir tal-alias kif ukoll il-prefiss kanoniku tal-fornitur għal kull mudell (kompatibbiltà b'lura — bejn wieħed u ieħor jirdoppja l-katalgu); `alias` joħroġ ID wieħed għal kull mudell; `canonical` joħroġ biss il-prefiss sħiħ tal-ID tal-fornitur (il-fornituri li l-alias tagħhom diġà huwa l-ID kanoniku jżommu l-entrata unika tagħhom). Il-klijenti jistgħu jegħlbu dan għal kull talba permezz ta' `?prefix=alias`. Ara [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24h) | `src/lib/arenaEloSync.ts` | Intervall tas-sinkronizzazzjoni f'sekondi. | --- ## Fornitur tal-Playground ta' PromptQL (Mhux Uffiċjali/Esperimentali) Pont tas-sessjoni GraphQL maħdum permezz ta' reverse engineering għal prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`). Kollha huma fakultattivi — il-valuri predefiniti jindikaw l-endpoints pubbliċi tal-playground; ibdilhom biss għal deployment ta' PromptQL ospitat minnek stess jew alternattiv. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | Endpoint GraphQL użat għall-operazzjonijiet taċ-chat/tas-sessjoni. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | Endpoint GraphQL użat biex jiġi mistoqsi l-bilanċ/l-użu tal-krediti. | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Endpoint użat għall-aġġornament tat-token bl-aħjar sforz possibbli. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Ħin massimu (ms) għall-polling ta' `thread_events` qabel jiskadi l-ħin. | --- ## Fornitur tal-Web HyperAgent (Mhux Uffiċjali/Esperimentali) Pont tas-sessjoni maħdum permezz ta' reverse engineering għal hyperagent.com (`src/shared/constants/providers/web-cookie.ts`). Mhux obbligatorju — il-valur predefinit jipponta lejn l-endpoint pubbliku tal-kontijiet/użu; ibdlu biss għal deployment HyperAgent self-hosted/alternattiv. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ---------------------- | --------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------- | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Endpoint użat biex jinġiebu l-blokok ta' kreditu tal-kontijiet/użu. | --- ## Kwoti tal-Użu ta' Kilo Code Tiftix tal-bilanċ personali f'USD u tal-użu ta' Kilo Pass għall-fornitur Kilo Code. Mhux obbligatorju — il-valur predefinit jipponta lejn l-API pubblika ta' Kilo; ibdlu biss għal relay/fixture tal-ittestjar. L-awtentikazzjoni tuża t-token ta' aċċess OAuth eżistenti tal-konnessjoni. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | -------------- | --------------------- | ------------------------------------- | ----------------------------------------------------------------------------------- | | `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | URL bażi użat biex jinġiebu l-bilanċ personali ta' Kilo Code u l-użu ta' Kilo Pass. | --- ## Fornitur tal-Web Adobe Firefly (Mhux Uffiċjali/Esperimentali) Aġġornament tas-sessjoni mmexxi mill-browser għall-fornitur tal-web Adobe Firefly (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`). Mhux obbligatorju — il-valuri predefiniti kollha huma rfinati għal installazzjoni normali fuq desktop. > **Tneħħa f'#9255.** Ir-runtime l-antik ta' Chrome imqabbad ma' CDP (adobeFireflyChromeRuntime.ts) > ġie sostitwit b'servizz ta' login fil-browser ta' Playwright, u l-parametri tiegħu m'għadhomx jeżistu. Il-varjabbli > ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART, flimkien ma' > ADOBE_FIREFLY_LOGIN_WAIT_MS u ADOBE_FIREFLY_FORTER_WAIT_MS, ma jinqraw imkien fil- > codebase — l-issettjar tagħhom m'għandu l-ebda effett. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------ | ------------------ | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Issettjah għal `1` għal Chrome verament headless (magħruf li ma jaħdimx għall-ġenerazzjoni; għad-debugging biss). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Għażla biex jiġi attivat/diżattivat it-tisħin proattiv tal-browser. `0` jiddiżattiva t-tisħin proattiv (l-irkupru minn 408 f'nofs batch jibqa' japplika). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Issettjah għal `0` biex tiddiżattiva l-persistenza tas-sessjoni Adobe Firefly fuq id-diska. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(mhux issettjat)_ | `open-sse/services/adobeFireflySession.ts` | Intervall minimu (ms) infurzat bejn sottomissjonijiet suċċessivi, li jieħu post il-valur predefinit inkorporat. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(mhux issettjat)_ | `open-sse/services/adobeFireflySession.ts` | Intervall addizzjonali (ms) miżjud wara batch li jirnexxi, li jieħu post il-valur predefinit inkorporat. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(mhux issettjat)_ | `open-sse/services/adobeFireflyClient.ts` | Dewmien bażi (ms) qabel tintbagħat talba ta' ġenerazzjoni, li jieħu post il-valur predefinit inkorporat. | --- ## 19. Sinkronizzazzjoni tal-Mudelli (Żvilupp) | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ----------------------------------- | ------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(mhux issettjat)_ | `src/lib/modelsDevSync.ts` | Sovrascrittura obbligatorja għas-sinkronizzazzjoni tal-prezzijiet ta’ models.dev. Mhux issettjat = jirrispetta Settings > AI (`modelsDevSyncEnabled`). `0`/`false`/`off`/`no` **jieħu preċedenza fuq id-DB** u jaqbeż kemm is-sinkronizzazzjoni perjodika kif ukoll l-iskans SQL/JSON ta’ `getModelsDevPricing()` (għall-irkupru meta d-dashboard jeħel fuq l-istess ċiklu tal-avvenimenti). `1`/`true`/`on`/`yes` jisforza s-sinkronizzazzjoni. L-issejvjar/it-tħassir tal-prezzijiet xorta jsejjaħ `backupDbFile("pre-write")`, li ma jagħmel xejn taħt il-limitazzjoni ta’ 60 minuta jew `DISABLE_SQLITE_AUTO_BACKUP`. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24s) | `src/lib/modelsDevSync.ts` | Intervall f’sekondi għas-sinkronizzazzjoni tal-katalgu tal-mudelli waqt l-iżvilupp. | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24s) | `src/lib/contextWindowResolver.ts` | Intervall (f’sekondi) għar-rikonċiljatur li jikkoreġi lilu nnifsu tat-tieqa tal-kuntest (5004): jiffissa t-twieqi ddikjarati mill-fornitur mill-iskoperta ta’ `/models` bħala sovrascrizzjonijiet `auto:discovery` meta dawn ikunu differenti mill-katalgu. Issettjah għal `0` biex tiddiżattivah. Jerġa’ juża d-data diġà sinkronizzata (mingħajr ġibda ġdida); qatt ma jissostitwixxi sovrascrizzjonijiet `manual`. | --- ## 20. Settings Speċifiċi għall-Fornitur | Varjabbli | Valur Default | Fajl tas-Sors | Deskrizzjoni | | ---------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24s) | `src/lib/catalog/openrouterCatalog.ts` | TTL tal-cache tal-katalgu tal-mudelli ta' OpenRouter. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Inkludi oqsma `name` faċli biex jintwerew fit-tweġibiet ta' `/v1/models`. Iddiżattiva għal klijenti li jistennew IDs biss. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | Limitu ta' stennija fil-cold path għal rikostruzzjoni kkonsolidata tal-katalgu `GET /v1/models` (#12627). Meta jiskadi l-ħin, jiġi servut l-aħħar 200 tajjeb meta jkun hemm wieħed. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 jum) | `src/lib/db/models/activeSyncedCatalog.ts` | Età li warajha l-lista sinkronizzata tal-mudelli ta' konnessjoni ma tibqax awtorevoli għar-routing u, f'każ ta' falliment, tuża r-reġistru (#12849). Ringieli li qatt ma ngħataw timestamp jitqiesu skaduti. | | `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | Għal kemm żmien tweġiba bil-mod ta' `GET /api/usage/analytics` terġa' tintuża għall-istess string tal-mistoqsija (#15629). `0` jiddiżattiva l-cache. | | `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | Huma maħżuna fil-cache biss tweġibiet analitiċi li damu mill-inqas daqshekk biex jinbnew, sabiex istanzi żgħar dejjem jaraw data friska. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | Stennija massima għall-kompiti ta' ġenerazzjoni tal-immaġnijiet ta' NanoBanana. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | Frekwenza tal-polling tal-kompiti ta' NanoBanana. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Dewmien bażi għall-backoff esponenzjali meta jerġa' jiġi ppruvat is-submit tal-upscale ta' Adobe Firefly. | | `AWS_REGION` | _(mhux issettjat)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Reġjun użat biex jinbnew l-endpoints ta' AWS Bedrock (Kiro, awdjo). | | `AWS_DEFAULT_REGION` | _(mhux issettjat)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Valur alternattiv meta `AWS_REGION` ma jkunx issettjat. | | `CLOUDFLARE_ACCOUNT_ID` | _(mhux issettjat)_ | `open-sse/executors/cloudflare-ai.ts` | ID tal-kont għal Cloudflare Workers AI. | | `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(mhux issettjat)_ | `open-sse/executors/cloudflare-playground.ts` | Path sħiħ għall-binarju ta' Chrome tad-desktop għall-eżekutur Cloudflare AI Playground, użat meta l-verifika tal-fingerprint headless timblokka l-Chromium inkluż ma' Playwright. | | `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) | `open-sse/executors/codebuddy/shared.ts` | Limitu fakultattiv tat-tul għall-prompts tas-sistema tal-persuna li qed issejjaħ mibgħuta lil CodeBuddy (CN u Internazzjonali). B'mod default, jiġi sostitwit b'wieħed newtrali biss prompt li jkollu markatur tal-identità ta' aġent tal-kodifikazzjoni (il-filtru tal-kontenut ta' Tencent jirrifjutahom); prompts twal jinżammu. Numru sħiħ > 0 jissostitwixxi wkoll kwalunkwe prompt tas-sistema itwal minn dak in-numru ta' karattri; jekk ma jkunx issettjat, ikun `0`, jew ikun valur mhux sħiħ, il-limitu jiġi diżattivat. Kull sostituzzjoni tirreġistra liema regola ġiet attivata (markatur tal-identità jew tul). | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Ibdel il-bażi tal-API REST ta' Cloudflare użata mid-deployer tar-relay tal-Workers tal-proxy pool (#4640 / 9router#1360). | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Isem default tal-proġett tal-worker issuġġerit fil-modal "Deploy Relay" tal-proxy pool. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Issettja għal `false` biex taħbi l-għażla tar-relay ta' Cloudflare Workers mit-tab tal-Proxy Pool. | | `CLOUDFLARED_BIN` | individwazzjoni awtomatika | `src/lib/cloudflaredTunnel.ts` | Mogħdija personalizzata għall-fajl binarju `cloudflared`. | | `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Protokoll tat-trasport tat-tunnel: `http2` (predefinit), `quic`, jew `auto`. | | `CLOUDFLARED_CONFIG` | _(mhux issettjat)_ | `src/lib/cloudflaredTunnel.ts` | Mogħdija għal `config.yml` ta’ cloudflared immaniġġjat lokalment (b’`tunnel:`, `credentials-file:`, `ingress:`). Meta jkun issettjat, OmniRoute jħaddem `tunnel --config run` (tunnel b’isem) minflok tunnel rapidu temporanju. | | `CLOUDFLARED_HOSTNAME` | _(mill-ingress tal-konfigurazzjoni)_ | `src/lib/cloudflaredTunnel.ts` | Sostituzzjoni għall-isem tal-host pubbliku tat-tunnel b’isem (eż. `ai.example.com`), irrappurtat bħala `publicUrl`/`apiUrl`. Meta ma jkunx issettjat, jinqara mill-ewwel isem tal-host ta’ `ingress` fil-konfigurazzjoni. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Jissostitwixxi l-bażi tar-REST API ta’ Deno Deploy użata mid-deployer tar-relay tal-grupp ta’ proxies (#4643 / 9router#1437). | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Isem predefinit tal-app Deno Deploy issuġġerit fil-modal “Deploy Relay” tal-grupp ta’ proxies. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Issettja għal `false` biex taħbi l-għażla tar-relay ta’ Deno Deploy mit-tab tal-Grupp ta’ Proxies. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 min) | `open-sse/services/searchCache.ts` | TTL għall-cache tar-risposti tal-API tat-tiftix (Perplexity, Brave, eċċ.). | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Juri l-interfaċċa sperimentali tal-fornitur kompatibbli ma’ CC għal relays ta’ Claude Code biss. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Jissostitwixxi l-host fejn tisma’ l-istanza integrata ta’ 9router. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Jissostitwixxi l-port fejn tisma’ l-istanza integrata ta’ 9router. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Host tal-binding għall-proxy WebSocket tas-servizz integrat (b’mod predefinit, loopback biss). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Port għas-server proxy WebSocket tas-servizz integrat. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | Host tal-bridge CLIProxyAPI (integrazzjoni legacy). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | Port tal-bridge CLIProxyAPI. | | `CLIPROXYAPI_API_KEY` | _(vojt)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | Ċavetta alternattiva tal-pjan tad-data meta l-issettjar `cliproxyapi_api_key` ikun nieqes. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(vojt)_ | `src/lib/services/cliproxyAccountHealth.ts` | Ċavetta tal-ġestjoni għall-qari tal-istat tal-kont minn istanza CLIProxyAPI mmaniġġjata esternament. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | Direttorju tal-konfigurazzjoni ta’ CLIProxyAPI. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfaċċa tal-host li fuqha docker-compose jippubblika s-sidecar `cliproxyapi` (#12578). Il-volum tad-data tiegħu jżomm il-kredenzjali OAuth/API tal-fornitur u l-immaġni ffissata ma għandhiex sostituzzjoni għal `api-keys` tal-pjan tad-data bbażata fuq varjabbli tal-ambjent (`config.yaml` immuntat biss), għalhekk `0.0.0.0` jesponi servizz li fih kredenzjali għal-LAN kollu. | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Issostitwixxi l-port fejn jisma' d-daemon inkorporat Mux (coder/mux) għall-orkestrazzjoni tal-aġenti (dejjem 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Issostitwixxi l-port fejn jisma' d-daemon inkorporat open-wa (awtomatizzazzjoni ta' WhatsApp Web) (dejjem 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Il-host ta' konnessjoni/assoċjazzjoni tas-servizz inkorporat Dario (loopback biss b'mod awtomatiku). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Il-port tas-servizz inkorporat Dario. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Il-host ta' konnessjoni/assoċjazzjoni tas-servizz inkorporat Dario (loopback biss b'mod awtomatiku). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Il-port tas-servizz inkorporat Dario. | | `LOCAL_HOSTNAMES` | _(vojt)_ | `open-sse/config/providerRegistry.ts` | Ismijiet tal-host addizzjonali separati b'virgoli li jiġu ttrattati bħala "lokali" (ismijiet tas-servizzi Docker, eċċ.). | `ENABLE_CC_COMPATIBLE_PROVIDER` huwa biss għal relays ta' partijiet terzi li jaċċettaw klijenti Claude Code b'mod esklussiv. OmniRoute jerġa' jikteb it-talbiet sabiex dawk ir-relays jaċċettawhom. Jekk trid tuża biss Claude Code CLI, jew m'intix ċert x'inhuma dawn ir-relays, żomm din l-għażla diżattivata u minflok żid fornitur regolari kompatibbli ma' Anthropic. --- ## 21. Saħħa tal-Proxy | Varjabbli | Valur Default | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Limitu ta’ żmien għall-kontroll tas-saħħa bi falliment rapidu. | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Perjodu ta’ żmien (f’sigħat) għall-kalkolu tal-latenza medja tal-proxies kandidati fl-istrateġija tal-pool ottimizzata għal-latenza. | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | TTL tal-cache tar-riżultat tal-kontroll tas-saħħa. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | TTL tal-cache għal testijiet tas-saħħa tal-proxy li fallew. Żomm dan iqsar minn `PROXY_HEALTH_CACHE_TTL_MS` sabiex it-timeouts temporanji tal-proxy taħt konkorrenza għolja jerġgħu jiġu ppruvati malajr mingħajr ma jiġi diżattivat il-falliment rapidu għal proxies li tassew ma jaħdmux. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Issettja għal `false` biex tiddiżattiva l-iskedatur tal-isfond għas-saħħa tal-proxy li perjodikament jittestja l-proxies irreġistrati. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Intervall f’ms bejn kull ċiklu ta’ kontroll tal-iskedatur tas-saħħa fl-isfond (minimu `60000`). | | `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Intervall tal-proba f’ms għall-proxies relay tat-tarf (`deno`/`vercel`/`cloudflare`), li l-probi tagħhom iqajmu iżolat serverless bi ħlas (minimu `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Intervall f’ms tal-proċess ta’ rkupru fl-isfond: kemm-il darba l-proxies li qabel kienu mhux f’saħħithom jerġgħu jiġu ppruvati sabiex proxy li jkun irkupra jerġa’ jidħol fir-rotazzjoni mingħajr ristartjar. Valuri taħt `60000` jerġgħu lura għall-valur predefinit. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Mira tal-proba tal-aċċessibbiltà użata mill-iskedatur u mill-endpoint `/api/settings/proxies/auto-test`. Ippuntaha lejn URL intern/ospitat minnek stess biex tevita l-valur predefinit pubbliku. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Għadd ta’ probi mibdija f’daqqa għal kull lott, kondiviż mill-iskedatur u mill-endpoint `/api/settings/proxies/auto-test`. Arrotondat ’l isfel għal minimu ta’ 1 u limitat għal massimu ta’ 50. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Dewmien f’ms bejn it-tluq ta’ żewġ probi fl-istess lott. Mingħajru, il-lott kollu jitlaq fl-istess ħin u IP ta’ ħruġ kondiviż jista’ jattiva l-limitu tar-rata tal-mira. Issettjah għal `0` biex tiddiżattiva l-ispazjar; limitat għal massimu ta’ 5000. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Issettja "false" biex tieqaf tittestja l-host reali tal-fornitur assenjat lil proxy (`GET /models`, ebda API key) u minflok dejjem tuża `PROXY_HEALTH_TEST_URL`. | | `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | Meta jkun `false` (predefinit), il-probi awtomatizzati tal-aċċessibbiltà (l-iskedatur + il-buttuna "Ittestja Kollha" ta’ `/api/settings/proxies/auto-test`) ikunu **għall-qari biss** u qatt ma jiktbu l-istatus ta’ proxy — l-operatur biss jissettjah bħala attiv/inattiv, sabiex proba instabbli ma tkunx tista’ tħalli proxy assenjat imwaħħal (#6246). Issettja `true` biex tirrestawra l-imġiba preċedenti ta’ ttestjar u ssettjar. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Flag ta’ funzjonalità opt-in (ara [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); override tad-DB mid-dashboard jieħu preċedenza). `true` (jew `1`, `yes`) jerġa’ jipprova dawriet ta’ streaming tradotti vojta permezz tal-perkors normali tal-kredenzjali (sa `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` tentattivi mill-ġdid) minflok jesponi 200 vojt jew 502 b’kontenut vojt. | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Flag ta’ funzjonalità opt-in (ara [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); override tad-DB mid-dashboard jieħu preċedenza). `true` (jew `1`, `yes`) juri l-osservazzjoni tal-ħruġ tal-pool għall-qari biss taħt pool ta’ proxies fid-dashboard (IPs ta’ ħruġ distinti, konnessjonijiet u l-akbar għadd osservat wara IP wieħed matul l-aħħar 24 siegħa, mil-log tal-proxy). Qatt ma jintuża għar-routing. | | `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Flag ta' funzjonalità opt-in (ara [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); override mid-DB tad-dashboard jieħu preċedenza). `true` (jew `1`, `yes`) jaċċetta indirizzi osservati u datati mibgħuta mill-operatur għal kull membru tal-pool u jgħaqqadhom mal-qari mill-ġurnal għall-wiri u għall-ordni tal-pool. | | `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Tieqa ta' osservazzjoni f'sigħat għar-ringieli tal-egress mibgħuta mill-operatur (tinqara ma' kull qari; mhu meħtieġ l-ebda restart). Limitata għal 1..168; valur barra mill-firxa, mhux numeriku, jew vojt jaqa' lura għal 24 bi twissija waħda għall-proċess kollu, u qatt ma jitfa' eċċezzjoni. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Issettja `true` biex tippermetti lill-iskedatur ineħħi proxies awtomatikament wara fallimenti konsekuttivi ripetuti. | | `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | L-għadd ta' fallimenti konsekuttivi qabel ma l-iskedatur ineħħi proxy awtomatikament (meta `PROXY_AUTO_REMOVE=true`). | | `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Issettja `true` biex tippermetti lill-iskedatur jiddiżattiva proxy b'mod mhux permanenti (status `dead`, qatt ma jitħassar) wara fallimenti konsekuttivi ripetuti, minflok ineħħih. Alternattiva mhux distruttiva għal `PROXY_AUTO_REMOVE`: il-proxy jitneħħa immedjatament mir-riżoluzzjoni tal-pool/rotazzjoni (il-filtru tal-istatus attiv użat mir-riżoluzzjoni tal-pool tal-ambitu diġà jeskludih) u jerġa' jiġi attivat awtomatikament ladarba jerġa' jibda jgħaddi mill-probes. Juża l-istess limitu ta' `PROXY_AUTO_REMOVE_AFTER`. Jekk iż-żewġ flags ikunu `true`, `PROXY_AUTO_REMOVE` jieħu preċedenza. | | `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | Qbiż passiv opt-in: meta jkun `true`, l-iskedatur jaqbeż il-probe dirett għal endpoint li t-traffiku reċenti tal-produzzjoni tiegħu diġà juri li qed jaħdem (mill-inqas suċċess wieħed u l-ebda falliment attribwit lill-proxy fit-tieqa, bi provider wieħed eżatt osservat). Mitfi b'mod awtomatiku: kull proxy jiġi ttestjat bi probe. | | `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Tieqa f'ms tat-traffiku tal-produzzjoni li jqis il-qbiż passiv (limitata għal `60000..599999`). Iqsar mill-intervall ta' sweep ta' 10 minuti sabiex falliment reċenti jiddomina minflok ma jiġi dilwit. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Jippermetti lill-flussi ta' OAuth u tal-validazzjoni tal-provider jevitaw proxy fiss u jikkonnettjaw direttament meta l-kontrolli preliminari tal-aċċessibbiltà tal-proxy jfallu. Il-preċedenza effettiva hija override tad-DB tal-Feature Flags > varjabbli tal-ambjent > valur predefinit. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30s) | `src/lib/resilience/settings.ts` | Baġit predefinit ta' **stennija fil-kju**: kemm talba tista' tistenna għal post għand fornitur u tibqa' fil-kju qabel ma tiġi miċħuda, mingħajr qatt ma tasal għand is-servizz upstream. It-tajmer jitneħħa ladarba l-kompitu jibda jiġi eżegwit — l-eżekuzzjoni hija limitata separatament minn `RATE_LIMIT_EXECUTION_MAX_WAIT_MS`. Il-varjabbli tal-ambjent tissettja biss il-valur predefinit: `resilienceSettings.requestQueue.maxWaitMs` persistit, u mbagħad `rateLimitOverrides.maxWaitMs` għal kull konnessjoni, it-tnejn jieħdu preċedenza fuqu. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 min) | `open-sse/services/rateLimitManager.ts` | Limitu massimu ta' kemm talba aċċettata tista' tibqa' fl-eżekuzzjoni qabel ma tiskadi r-riżervazzjoni tagħha tal-limitu tar-rata — separat mill-baġit ta' stennija fil-kju sabiex bidu bil-mod tal-fetch fuq gateways mhux inkrementali ma jiskadix (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (diżattivat) | `open-sse/services/rateLimitManager.ts` | Limitu għad-dħul fil-kju: irrifjuta b'429 `queue_full` ladarba dan l-għadd ta' talbiet ikun diġà fil-kju. `0` = mingħajr limitu (predefinit). | | `RATE_LIMIT_AUTO_ENABLE` | _(mhux issettjat)_ | `open-sse/services/rateLimitManager.ts` | Ġiegħel ix-xibka ta' sikurezza tal-attivazzjoni awtomatika tal-limitu tar-rata tinxtegħel/tintefa irrispettivament mill-konfigurazzjoni persistita tad-Dashboard. Jaċċetta `true`/`1`/`on` biex jiġi sfurzat mixgħul, `false`/`0`/`off` biex jiġi sfurzat mitfi. | | `PROVIDER_COOLDOWN_ENABLED` | _(mhux issettjat → mitfi)_ | `open-sse/services/providerCooldownTracker.ts` | Traċċar globali u bejn it-talbiet, fuq bażi ta' għażla volontarja, tal-perjodu ta' stennija tal-fornitur/konnessjoni. MITFI b'mod predefinit (jikkoinċidi ma' Connection Cooldown / Provider Circuit Breaker). Jaċċetta `true`/`1`/`on` biex jiġi attivat. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Perjodu minimu ta' stennija (ms) qabel ma jerġa' jsir tentattiv b'fornitur/konnessjoni li falla/falliet. Jiżdied b'mod esponenzjali ma' fallimenti konsekuttivi. Jintuża biss meta `PROVIDER_COOLDOWN_ENABLED`. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 min) | `open-sse/services/providerCooldownTracker.ts` | Limitu massimu għall-perjodu ta' stennija (ms) qabel ma jerġa' jsir tentattiv b'fornitur/konnessjoni li falla/falliet, irrispettivament minn kollox. Jintuża biss meta `PROVIDER_COOLDOWN_ENABLED`. | | `STREAM_RECOVERY_ENABLED` | _(mhux issettjat → mitfi)_ | `src/lib/resilience/settings.ts` (valur inizjali) → `open-sse/services/streamRecovery.ts` (loġika) | **X'inhu:** irkupru trasparenti ta' streams upstream maqtugħin (port ta' free-claude-code). Iżomm it-tieqa SSE tal-ftuħ sa `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) sabiex qtugħ _qabel il-commit_ — wieħed li jseħħ qabel ma kwalunkwe byte jasal għand il-klijent — jerġa' jinfetaħ u jiġi ppruvat mill-ġdid b'mod inviżibbli. **Meta għandu jiġi attivat:** għal upstreams instabbli/li ta' spiss jaqtgħu l-stream b'0 bytes fil-bidu; ħallih MITFI jekk ma tistax taċċetta sa 750 ms ta' żieda fil-ħin sal-ewwel token fuq kull stream. Jaċċetta `true`/`1`/`on`. Jissettja l-valur inizjali tal-konfigurazzjoni persistita tar-Reżiljenza; il-konfigurazzjoni tad-Dashboard tieħu preċedenza ladarba tiġi ssettjata. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(mhux issettjat → mitfi)_ | `src/lib/resilience/settings.ts` (valur inizjali) → `open-sse/services/streamRecovery.ts` (loġika) | **X'inhu:** kontinwazzjoni minn nofs l-istrim (Fażi 4.4) — wara truncation _wara l-commit_ (il-bytes ikunu diġà waslu għand il-klijent), terġa' ssir talba bit-test parzjali bħala prefill tal-assistent u titwaħħal il-parti finali nieqsa. Għal strims b'test sempliċi kompatibbli ma' OpenAI biss; qatt ma jiġi attivat meta tkun għaddejja sejħa ta' għodda. **Meta għandu jiġi attivat:** għal ġenerazzjonijiet twal li jinqatgħu f'nofs it-tweġiba u meta taċċetta li l-parti finali rkuprata tasal f'daqqa minflok token b'token. Indipendenti minn `STREAM_RECOVERY_ENABLED` (profil ta' riskju differenti). Jaċċetta `true`/`1`/`on`. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(mhux issettjat → mitfi)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Watchdog fakultattiv għall-output utli ta' strim attiv. Jidentifika strims li jibqgħu jibagħtu biċċiet iżda jibqgħu taħt ir-rata kkonfigurata tal-output tal-assistent; heartbeats, avvenimenti tal-użu, deltas vojta, u fażijiet tal-għodod/tar-raġunament ma jidhrux b'mod falz bħala progress. Separat mit-timeouts ta' inattività u tal-iskadenza assoluta. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Perjodu ta' grazzja qabel l-evalwazzjoni tat-throughput, limitat għal 0–600000 ms. | | `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Tieqa kontinwa tal-output utli, limitata għal 1000–600000 ms; hija meħtieġa tieqa sħiħa waħda qabel l-interruzzjoni. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Rata minima f'bytes UTF-8 tal-output tal-assistent (approssimazzjoni konservattiva tat-tokens), limitata għal 1–1000000. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Kampjun minimu mhux żero ta' output utli li jitqies li jista' jitkejjel, limitat għal 1–1000000 bytes. | | `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Intervall gradwali (ms) bejn il-kontrolli tas-saħħa tat-tokens tal-fornitur waqt l-istartjar. | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Jitter każwali minimu (ms) miżjud ma' `HEALTHCHECK_STAGGER_MS` bejn il-kontrolli tas-saħħa tat-tokens tal-fornitur, biex jiġu evitati żidiet f'daqqa fit-tagħbija (Kwistjoni #1220). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Jitter każwali massimu (ms) miżjud ma' `HEALTHCHECK_STAGGER_MS` bejn il-kontrolli tas-saħħa tat-tokens tal-fornitur, biex jiġu evitati żidiet f'daqqa fit-tagħbija (Kwistjoni #1220). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Daqs tal-lott ta' kontrolli konkorrenti għall-iskannjar tal-kontroll tas-saħħa tat-tokens waqt l-istartjar; valuri akbar jiċċekkjaw aktar konnessjonijiet b'mod parallel, filwaqt li valuri iżgħar inaqqsu t-tagħbija f'daqqa (Kwistjoni #7875, rigressjoni ta' #7719). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Għadd ta' tentattivi awtomatiċi mill-ġdid għal risponsi ta' cooldown marbuta mal-mudell qabel ma jintbagħat żball lura lill-klijent. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Intervall massimu ta’ backoff (sekondi) bejn tentattivi mill-ġdid wara cooldown. Limitat għal dan il-valur irrispettivament mill-`Retry-After` upstream. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | URL tal-proxy Headroom għall-iffrankar tat-tokens. Iċ-ċiklu tal-ħajja tad-dashboard (`api/headroom/*`) iniedi CLI lokali `headroom-ai` fuq il-loopback b’mod awtomatiku; ibdlu biss biex jipponta lejn proxy sidecar estern ta’ Docker. | ### Kostanti għall-irfinar tal-irkupru tal-istream L-imġiba taż-żamma lura waqt l-irkupru hija rfinata permezz ta’ kostanti hardcoded f’ `open-sse/config/constants.ts` (`STREAM_RECOVERY`), murija hawn bħala referenza — biex jinbidlu jeħtieġ modifika fil-kodiċi, mhux varjabbli tal-ambjent: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — kemm iddum tinżamm it-tieqa inizjali tal-SSE sabiex qtugħ bikri jkun jista’ jerġa’ jiġi ppruvat qabel ma kwalunkwe byte jiġi kkommettut lill-klijent. - `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — limitu massimu strett fuq it-tieqa miżmuma; ikkommetti (flush + passthrough) malli jakkumulaw daqstant bytes, irrispettivament mit-tajmer. - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — għadd massimu ta’ ftuħ mill-ġdid trasparenti tal-istream upstream waqt li ż-żamma lura tkun għadha mhix ikkommettuta. > **Limitu tar-rata għal kull fornitur b’tieqa li tiżżerżaq (mingħajr varjabbli tal-ambjent):** il-_fallback_ > tal-limitu tar-rata għal kull fornitur b’tieqa li tiżżerżaq, portat mill-FCC, jeżisti fil-kodiċi > (`open-sse/services/providerDefaultRateLimit.ts`, konness permezz ta’ > `open-sse/services/rateLimitManager.ts`) iżda jiġi b’**mappa awtomatika vojta** > u llum **m’għandu l-ebda varjabbli tal-ambjent għall-operatur** — jiġi attivat biss permezz ta’ hook tat-test / > modifika fil-kodiċi. Intenzjonalment mhuwiex elenkat fit-tabella ta’ hawn fuq. Il-limitatur tar-relay għal kull `(token, IP)` > li _għandu_ kontroll huwa `RELAY_IP_PER_MINUTE` (§3 Network & Ports). --- ## 22. Debugging > [!CAUTION] > Dawn il-varjabbli jipproduċu **output dettaljat** u jistgħu jiżvelaw data sensittiva. **Qatt tattivahom fil-produzzjoni.** | Varjabbli | Valur predefinit | Fajl tas-sors | Deskrizzjoni | | ------------------------------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CURSOR_DEBUG` | _(mhux issettjat)_ | `open-sse/executors/cursor.ts` | Issettja għal `1` biex tattiva logs dettaljati tal-eżekutur Cursor (biċċiet SSE dekodifikati, eċċ.). | | `CURSOR_STREAM_DEBUG` | _(mhux issettjat)_ | `open-sse/executors/cursor.ts` | Alias ta’ `CURSOR_DEBUG` kompatibbli ma’ verżjonijiet preċedenti. | | `CURSOR_DUMP_FILE` | _(mhux issettjat)_ | `open-sse/executors/cursor.ts` | Perkors fakultattiv għal fajl li jirċievi l-biċċiet Cursor mhux ipproċessati u dekodifikati meta `CURSOR_DEBUG=1`. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Limitu ta’ żmien ta’ inattività tal-fluss (ms) għall-eżekutur Cursor. | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Intervall ta’ tolleranza (ms) wara terminatur mhux strett `kv_after_text` tal-composer meta jkun għad fadal bytes fil-buffer — jagħti ħin lil sejħa sussegwenti tal-għodda `exec_mcp` biex tlesti l-qafas tagħha. | | `CURSOR_TOOL_DIRECTIVE` | attivat (`!== "0"`) | `open-sse/executors/cursor.ts` | Direttiva ta’ konferma tal-għodda li ġġiegħel lil composer-2.5 joħroġ sejħiet tal-għodod b’mod affidabbli. Issettja għal `0` biex tiddiżattivaha. | | `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(mhux issettjat)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Test tal-prompt tas-sistema definit mill-operatur li jiżdied mal-messaġġ tas-sistema WARA t-traduzzjoni (injezzjoni wara t-traduzzjoni), u jasal sal-perkorsi ta’ codex/Responses u `/v1/messages`. Jintuża wkoll bħala l-prefiss tad-direttiva li jitneħħa mill-blokki tal-preambolu tas-sistema ripetuti fl-output. Ħallih mhux issettjat biex tiddiżattivah. | | `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (mitfi) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | Issettja għal `1` biex tneħħi blokki tal-preambolu tal-prompt tas-sistema ripetuti fl-output mill-bidu ta’ fluss openai→claude. Mitfi b’mod predefinit — l-ewristiċi huma mfassla skont proża bl-Ingliż u jimmodifikaw il-payload tar-rispons, għalhekk tweġiba li leġittimament tibda b’taqsima bħal din titlifha. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Limitu ta’ żmien għal kull immaġni (ms) biex jinġabar input viżiv remot `image_url`. | | `CURSOR_STATE_DB_PATH` | _(imfittex awtomatikament)_ | `open-sse/utils/cursorVersionDetector.ts` | Jissostitwixxi t-tfittxija tad-database tal-istat ta’ Cursor IDE użata għad-detezzjoni tal-verżjoni tal-IDE. | | `CURSOR_AGENT_CLI_VERSION` | _(skoperta / iffissata)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Identifikatur tal-build tal-Agent CLI (`YYYY.MM.DD-`) għal `x-cursor-client-version: cli-…` f’Agent Run. | | `CURSOR_AGENT_BIN` | _(mhux issettjat)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Perkors għall-binarju ta’ Cursor Agent użat għall-ġenerazzjoni tal-immaġnijiet. Jekk mhux issettjat, il-handler juża `providerSpecificData.agentBin` u mbagħad PATH. | | `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Ħin massimu totali għal kull immaġni (ms) għall-kompiti tal-immaġnijiet ta’ Cursor Agent. | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Limitu ta’ konkorenza għal postijiet kondiviżi għall-kompiti tal-immaġnijiet ta’ Cursor. | | `CURSOR_IMG_MODEL` | talba / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Jissostitwixxi l-valur `--model` ta’ Cursor CLI għall-kompiti tal-immaġnijiet. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Frekwenza tal-verifika tar-riżultat tal-ġenerazzjoni tal-immaġnijiet ta’ UC (uncensored.com) (ms). | | `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Ħin massimu totali għall-verifika tar-riżultat tal-ġenerazzjoni tal-immaġnijiet ta’ UC (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Frekwenza tal-verifika tar-riżultat tal-ġenerazzjoni tal-vidjows ta’ UC (uncensored.com) (ms). | | `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Ħin massimu totali għall-verifika tar-riżultat tal-ġenerazzjoni tal-vidjows ta’ UC (ms). | | `CURSOR_DATA_DIR` | _(imfittex awtomatikament)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Jissostitwixxi d-direttorju tad-data ta’ Cursor Agent CLI (`…/versions/`); l-istess varjabbli li juża l-aġent uffiċjali. | | `CURSOR_TOKEN` | _(mhux issettjat)_ | `scripts/ad-hoc/cursor-tap.cjs` | Token bearer dirett ta’ Cursor użat mill-għodod tal-iżviluppaturi. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | diżattivat (attivazzjoni permezz ta’ `"1"`) | `src/app/api/v1/chat/completions/route.ts` | Jirreġistra indikaturi tat-tip u t-tul tal-kontenut għal payloads kbar taċ-chat meta jkun issettjat `"1"`. Mitfi b’mod predefinit biex jitnaqqas l-istorbju fil-logs. | | `DEBUG_RESPONSES_SSE_TO_JSON` | _(mhux issettjat)_ | `open-sse/handlers/responseTranslator.ts` | Issettja għal `true` biex tirreġistra d-dettalji tat-traduzzjoni SSE→JSON tal-Responses API. | | `DEBUG_CLAUDE_NONSTREAM` | _(mhux issettjat)_ | `open-sse/handlers/responseTranslator.ts` | Issettja għal `true` biex turi biċċiet vojta ta’ textContent fil-perkors tat-traduzzjoni tar-rispons ta’ Claude (għad-debugging biss). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(mhux issettjat)_ | Sistema tat-testijiet E2E | Issettja għal `true` biex tattiva l-modalità tat-testijiet E2E (awtentikazzjoni inqas stretta, hooks tat-testijiet). | --- ## 23. Integrazzjoni ma' GitHub Ippermetti lill-utenti jirrapportaw problemi direttament mid-Dashboard. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | --------------------- | ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `GITHUB_ISSUES_REPO` | _(mhux issettjat)_ | `src/app/api/v1/issues/report/route.ts` | Repożitorju fil-format `owner/repo`. | | `GITHUB_ISSUES_TOKEN` | _(mhux issettjat)_ | `src/app/api/v1/issues/report/route.ts` | Token ta' Aċċess Personali ta' GitHub bl-ambitu `issues:write`. | | `GITHUB_TOKEN` | _(mhux issettjat)_ | għodod għall-klassifikazzjoni tal-problemi / aġent tal-cloud | Token ġeneriku ta' aċċess għal GitHub użat bħala alternattiva għal `GITHUB_ISSUES_TOKEN` u kkunsmat mill-għodod tal-aġent tal-cloud f'`src/lib/cloudAgent/*`. | --- ## Xenarji ta’ Distribuzzjoni Għal gwida SRE dwar il-backend tar-relay (l-imġiba ta’ ts/bifrost/auto, it-tqegħid ta’ 9router meta mqabbel ma’ CLIProxyAPI, u l-istrateġija ta’ fallback għal throughput għoli), ara [Strateġija tal-Backend tar-Relay](/docs/reference/RELAY_BACKEND_STRATEGY.md). ### Żvilupp Lokali Minimu ```bash JWT_SECRET=$(openssl rand -base64 48) API_KEY_SECRET=$(openssl rand -hex 32) INITIAL_PASSWORD=dev123 PORT=20128 NODE_ENV=development ``` ### Produzzjoni b’Docker ```bash JWT_SECRET= API_KEY_SECRET= INITIAL_PASSWORD= STORAGE_ENCRYPTION_KEY= DATA_DIR=/data PORT=20128 API_PORT=20129 NODE_ENV=production AUTH_COOKIE_SECURE=true REQUIRE_API_KEY=true NEXT_PUBLIC_BASE_URL=https://omniroute.example.com BASE_URL=http://localhost:20128 OMNIROUTE_MEMORY_MB=8192 CORS_ORIGIN=https://your-frontend.example.com ``` ### Ambjent Iżolat / CI ```bash JWT_SECRET=test-jwt-secret-for-ci API_KEY_SECRET=test-api-key-secret-for-ci INITIAL_PASSWORD=testpass NODE_ENV=production OMNIROUTE_DISABLE_BACKGROUND_SERVICES=true APP_LOG_TO_FILE=false ``` ### VPS bi Reverse Proxy (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. Sandbox tal-Ħiliet (v3.8.0+) Limiti u kontrolli tas-sikurezza applikati meta l-qafas tal-Ħiliet (`src/lib/skills/`) jeżegwixxi awtomazzjonijiet definiti mill-utent f'ambjent sandbox. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | --------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 s) | `src/lib/skills/builtins.ts` | Limitu ta' ħin reali għal kull eżekuzzjoni ta' kodiċi ta' ħila fis-sandbox. Limitu assolut; kull proċess li jdum aktar jitwaqqaf. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _(jerġa' lura għal `SKILLS_SANDBOX_TIMEOUT_MS`)_ | `src/lib/skills/` | Limitu ta' żmien għall-orkestrazzjoni ta' livell għoli tal-ħiliet. Issettjah ogħla minn `SKILLS_SANDBOX_TIMEOUT_MS` biex tippermetti flussi tax-xogħol b'diversi passi. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | L-għadd massimu ta' bytes li ħila tista' taqra minn kwalunkwe fajl individwali fis-sandbox. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | L-għadd massimu ta' bytes irreġistrati minn kwalunkwe tweġiba HTTP individwali fi ħdan ħila. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Limitu assolut fuq il-karattri ta' stdout/stderr mibgħuta lura minn invokazzjoni tas-sandbox. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Issettja għal `1`/`true` biex tippermetti konnessjonijiet ħerġin minn ġewwa s-sandbox. B'mod predefinit ikun **iżolat** għas-sikurezza. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(vojt)_ | `src/lib/skills/builtins.ts` | Lista separata b'virgoli ta' immaġnijiet tal-kontejners permessi għall-eżekuzzjoni fis-sandbox. Lista vojta tfisser biss il-valur predefinit inkorporat. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(valur predefinit inkorporat)_ | `src/lib/skills/` | Immaġni tal-kontejner użata meta tinħoloq sandbox ibbażata fuq Docker. Issostitwiha biex tiffissa immaġni bażi personalizzata u msaħħa. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Runtime tal-kontejner għat-tħaddim tal-ħiliet fis-sandbox: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. `auto` jagħżel l-aħjar runtime installat għal kull OS tal-host (Apple Container/OrbStack fuq macOS, WSL Container fuq Windows, Podman fuq Linux), u juża Docker bħala alternattiva. | > [!CAUTION] > L-attivazzjoni ta' `SKILLS_SANDBOX_NETWORK_ENABLED=true` tiftaħ rotta ta' ħruġ minn kodiċi arbitrarju tal-ħiliet. Użaha flimkien ma' `OUTBOUND_SSRF_GUARD_ENABLED=true` u politika stretta ta' `CORS_ORIGIN`/proxy f'deployments kondiviżi. --- ## 25. Kwoti tal-Fornitur, Mini, Backups u Runtime Mixxellanju Endpoints tal-kwoti tal-fornitur, mini tan-network (Tailscale, Ngrok, proxy tad-debugging MITM), il-pool tal-ħruġ ta’ 1Proxy, backups tad-database u overrides żgħar għal kull funzjonalità msemmija mis-saff tal-eżekutur jew mill-iskripts. | Varjabbli | Valur predefinit | Fajl tas-sors | Deskrizzjoni | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Stringa tal-konnessjoni ma’ Redis għall-backend tal-limitatur tar-rata. | | `ALIBABA_CODING_PLAN_HOST` | _(host tal-produzzjoni)_ | `open-sse/services/bailianQuotaFetcher.ts` | Jissostitwixxi l-host użat biex jinġabru l-kwoti tal-pjan ta’ kodifikazzjoni ta’ Alibaba Bailian. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | derivat mill-host | `open-sse/services/bailianQuotaFetcher.ts` | Sostituzzjoni tal-URL sħiħ tal-kwota għal Alibaba Bailian. | | `QWEN_CLOUD_COOKIE` | _(mhux issettjat)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Cookie tas-sessjoni tal-console għall-gateway tal-kwota personali tat-Token Plan ta’ Qwen Cloud / Model Studio (iċ-ċavetta tal-API tal-inferenza ma tistax taqrah). Ikkopja l-header sħiħ tat-talba `Cookie` — li fih `login_qwencloud_ticket` — minn kwalunkwe sejħa lil `api.json` lejn `cs-data.qwencloud.com` fuq home.qwencloud.com › Fatturazzjoni › Abbonament (F12 › Netwerk). Sensittiv u limitat għas-sessjoni; ippreferi l-qasam `qwenCloudCookie` fid-Dashboard għal kull konnessjoni. | | `QWEN_CLOUD_SEC_TOKEN` | _(mhux issettjat)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Sostituzzjoni manwali ta’ `sec_token` għall-gateway tal-console tat-Token Plan. Sensittiv; meta ma jkunx issettjat, il-komponent li jġib id-data jiksbu mill-HTML tad-dashboard billi juża l-cookie. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Sostituzzjoni tal-host tal-gateway għall-komponent li jġib il-kwota personali tat-Token Plan (eż. `bailian-singapore-cs.alibabacloud.com` għall-console ta’ Model Studio). | | `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | URL tad-dashboard użat biex jiġi ddeterminat `sec_token` mill-HTML wara l-login. | | `XIAOMI_MIMO_CONSOLE_COOKIE` | _(mhux issettjat)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Cookie tas-sessjoni tal-console għall-API tal-kwota tat-Token Plan ta’ Xiaomi MiMo (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — iċ-ċavetta tal-API tal-inferenza ma tistax taqrah). Ikkopja l-header sħiħ tat-talba `Cookie` — li fih `api-platform_serviceToken` u `userId` — minn kwalunkwe talba lejn `platform.xiaomimimo.com` fuq il-paġna tat-Token Plan (F12 › Netwerk). Sensittiv u limitat għas-sessjoni; ippreferi l-qasam `xiaomiMimoConsoleCookie` fid-Dashboard għal kull konnessjoni. | | `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Baġit ta’ kull xahar (Credits) għall-fallback ta’ Xiaomi MiMo traċċat minn OmniRoute, li jintuża meta ma jkun ikkonfigurat ebda cookie tal-console. B’mod awtomatiku juża l-4.1B tal-livell Lite; issettjah għall-Credits tal-pjan (Standard 11B / Pro 38B / Max 82B). Valur ta’ sostituzzjoni `providerSpecificData.monthlyTokenLimit` għal kull konnessjoni jieħu preċedenza fuq din il-varjabbli tal-ambjent. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Valur ta’ sostituzzjoni għall-mogħdija tal-front-end tal-console biex tinkiseb il-kwota bla ħlas ta’ Alibaba Model Studio għall-viżjoni/midja. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Valur ta’ sostituzzjoni għall-mogħdija tal-front-end tal-console biex tinkiseb il-kwota multimodali bla ħlas ta’ Alibaba Model Studio. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Valur ta’ sostituzzjoni għall-mogħdija tal-front-end tal-console biex tinkiseb il-kwota tal-awdjo bla ħlas ta’ Alibaba Model Studio. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(mhux issettjat)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Mogħdija fakultattiva għal valur ta’ sostituzzjoni JSON lokali għal-lista integrata ta’ mudelli tat-test permessi fil-livell bla ħlas ta’ Alibaba. Jekk ma tinstabx, jintuża `$DATA_DIR/alibaba-free-tier-allowlist.json`, imbagħad `config/alibaba-free-tier-allowlist.json`. | | `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | Tokens riżervati għall-output tat-tlestija meta jiġu kkalkolati l-baġits tal-prompt. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Kemm mill-aktar immaġnijiet inline ġodda għandhom jinżammu meta jitneħħew dawk eqdem biex joqogħdu fit-tieqa tal-kuntest (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | attivat | `open-sse/services/model.ts` | Jattiva jew jiddiżattiva s-saff legat ta’ kompatibbiltà tal-aliases tal-mudelli użat minn klijenti eqdem. | | `OMNIROUTE_EMERGENCY_FALLBACK` | attivat | `open-sse/services/emergencyFallback.ts` | Issettja `false` (jew `0`) biex tiddiżattiva l-fallback ta’ emerġenza għall-eżawriment tal-baġit, li jidderieġi mill-ġdid it-talbiet li fallew lejn il-mudell bla ħlas `nvidia`/`openai/gpt-oss-120b`. Il-preċedenza effettiva hija: valur ta’ sostituzzjoni fid-DB tal-Feature Flags > varjabbli tal-ambjent > valur awtomatiku; jekk ma jkunx disponibbli, is-servizz jerġa’ juża l-valur mhux ipproċessat tal-varjabbli tal-ambjent. | | `COMMAND_CODE_CALLBACK_PORT` | _(mhux issettjat)_ | `src/app/api/providers/command-code/auth/shared.ts` | Port lokali użat għal callbacks stil OAuth mill-għodda ta’ għajnuna Command Code CLI. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Valur mibgħut bħala l-header `x-command-code-version` lis-servizz upstream ta' Command Code. Ibdel dan biex taġġorna l-verżjoni tas-CLI. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | URL bażi għas-servizz upstream tal-użu/kwota ta' Command Code, użat mit-telemetrija tal-ġbir tal-kwota tal-ismartphone. Ibdel dan għal API ta' Command Code self-hosted/alternattiva. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | Port lokali tal-bind għall-proxy tad-debug MITM. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Issettja għal `1` biex tiddiżattiva l-verifika TLS upstream (għall-iżvilupp biss). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Timeout ta' inattività tas-socket (ms) għall-konnessjonijiet ipproksjati; sockets inattivi lil hinn minn dan jingħalqu biex jiġi evitat it-tnixxif ta' mini nofshom miftuħa. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Il-port li fuqu jisma' l-bridge MITM ta' Antigravity. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | L-endpoint tar-router li lejh il-bridge jgħaddi t-traffiku ta' Antigravity. | | `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Jissostitwixxi d-direttorju li minnu l-bridge jaqra l-materjal TLS tiegħu. Il-mudell taċ-ċertifikat jintgħażel kif jagħmel is-server AgentBridge: `server.crt`/`server.key` għal installazzjoni legacy ta' ċertifikat leaf, inkella `ca.crt`/`ca.key` (CA root, ċertifikat leaf għal kull host interċettat; impost minn `MITM_ROOT_CA_ENABLED=true`). Il-bridge joħroġ waqt l-istartjar jekk il-fajls għall-mudell attiv ikunu neqsin. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Livell ta' dettall tal-log tad-deċiżjonijiet tar-routing: `0` isikket il-logs, filwaqt li valuri ogħla jirreġistraw aktar deċiżjonijiet ta' bypass/routing. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Issettja għal `true` biex tagħżel il-mudell b'CA root + ċertifikat leaf għal kull host (#6684). Installazzjonijiet ġodda jiksbuh awtomatikament; installazzjonijiet b'ċertifikat leaf legacy diġà fdat iżommu ċ-ċertifikat legacy b'SAN fiss sakemm ma jagħżlux dan il-mudell. | | `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | Issettjat MILL-maniġer MITM għall-proċess tal-proxy mniedi (`root-ca` \| `legacy`) — jirrifletti d-deċiżjoni tal-migrazzjoni taċ-ċertifikat; mhux maħsub biex jiġi ssettjat manwalment. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | Issettja għal `1` (valur veru) biex tneħħi l-`sudo` inizjali mill-kmandi tal-fiduċja fiċ-ċertifikat MITM — għal deployments mingħajr root / b'namespace tal-utent fejn l-operatur jafda lis-CA manwalment (eż. permezz tal-mekkaniżmu extra-CA-certs ta' Node). | | `SKIP_ANTIGRAVITY_DNS` | _(mhux issettjat)_ | `src/mitm/dns/provision.ts` | Issettja għal `true` biex taqbeż kompletament il-proviżjonament tal-entrati DNS f'`/etc/hosts` għall-ismijiet tal-host tal-proxy Antigravity — għal containers fejn sudo/root mhuwiex disponibbli. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(mhux issettjat)_ | `src/mitm/dns/dnsConfig.ts` | Issettja għal `1` biex taqbeż il-kitba fil-fajl tal-hosts meta żżid/tneħħi entrati DNS — għal ambjenti tat-test sandboxed jew li jinqraw biss. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Protezzjoni għat-testijiet/CI biss: issettja għal `1` biex l-installazzjoni/id-diżinstallazzjoni tal-fiduċja fiċ-ċertifikat ma tagħmel xejn, sabiex is-suite qatt ma timmodifika l-maħżen tal-fiduċja tal-OS. Jiġi ssettjat awtomatikament mill-konfigurazzjoni tat-testijiet u mill-flussi tax-xogħol tas-CI. | | `CHANGELOG_BASE_REF` | _(awtomatiku)_ | `scripts/check/check-changelog-integrity.mjs` | Referenza bażi espliċita għall-gate kontra t-tħassir tal-CHANGELOG (b'mod awtomatiku juża l-fergħa bażi tal-PR fis-CI, jew l-ogħla `release/v*`). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Issettja għal `true` biex tattiva l-iskedatur fl-isfond għas-sinkronizzazzjoni awtomatika tal-pool ta' proxies b'xejn. Jeħtieġ attivazzjoni espliċita u huwa diżattivat b'mod awtomatiku. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Intervall tas-sinkronizzazzjoni awtomatika f'millisekondi (b'mod awtomatiku 30 min). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | Attiva s-sors ta' proxies b'xejn 1proxy. Issettja għal `false` biex tiddiżattivah. | | `FREE_PROXY_1PROXY_API_URL` | _(ara oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | Override tal-URL tal-API ta' 1proxy. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Għadd massimu ta' proxies miksuba minn 1proxy għal kull sinkronizzazzjoni. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | Limitu minimu tal-punteġġ tal-kwalità għall-importazzjonijiet minn 1proxy. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Ippermetti s-sors ta' proxy b'xejn Proxifly. Issettja għal `false` biex tiddiżattivah. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Għadd ta' proxies li għandhom jinġiebu f'kull sinkronizzazzjoni ta' Proxifly. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Filtru tal-livell ta' anonimità għal Proxifly (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | Ippermetti s-sors ta' proxy b'xejn IPLocate. Disponibbli biss b'għażla espliċita. | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | Sovras żvilupp tal-URL bażi tal-lista ta' proxies ta' IPLocate. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Ippermetti s-sors tal-ġabra ta' proxies Webshare. Issettja għal `false` biex tiddiżattivah; jeħtieġ ukoll li `FREE_PROXY_WEBSHARE_API_KEY` tkun issettjata. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(xejn)_ | `src/lib/freeProxyProviders/webshare.ts` | Token tal-API tal-kont Webshare (`Authorization: Token `). Meħtieġ — il-fornitur jibqa' diżattivat mingħajru. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Sovras żvilupp tal-URL tal-API tal-lista ta' proxies ta' Webshare. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Għadd massimu ta' proxies importati f'kull sinkronizzazzjoni ta' Webshare. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Uri/aħbi l-buttuna Deploy Vercel Relay fit-tab Proxy Pool. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Sostituzzjoni tal-URL bażi tal-API ta’ Vercel (għall-ittestjar). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Isem predefinit tal-proġett, mimli minn qabel fil-modal tal-iskjerament ta’ Vercel Relay. | | `TAILSCALE_BIN` | _(identifikazzjoni awtomatika)_ | `src/lib/tailscaleTunnel.ts` | Mogħdija espliċita għall-binarju `tailscale`. | | `TAILSCALED_BIN` | _(identifikazzjoni awtomatika)_ | `src/lib/tailscaleTunnel.ts` | Mogħdija espliċita għall-binarju tad-daemon `tailscaled`. | | `TAILSCALE_AUTHKEY` | _(mhux issettjat)_ | `src/lib/tailscaleTunnel.ts` | Ċavetta tal-awtentikazzjoni Tailscale kondiviża minn qabel għal `tailscale up` mhux interattiv / mingħajr interfaċċa grafika (mgħoddija permezz ta’ `--auth-key=`). Meta ma tkunx issettjata, il-login jaqleb għall-URL tal-awtentikazzjoni interattiva fil-browser. | | `NGROK_AUTHTOKEN` | _(mhux issettjat)_ | `src/lib/ngrokTunnel.ts` | Jawtentika l-mini ngrok ħerġin. | | `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Numru massimu ta’ fajls tal-backup ta’ SQLite miżmuma mit-tindif manwali/skedat tal-backups. L-istampi tal-migrazzjoni huma indirizzati skont il-kontenut u jerġgħu jintużaw għal stat identiku tad-DB; dawn ma jitneħħewx matul it-tieqa tal-migrazzjoni konkorrenti. Jieħu post il-valur issejvjat minn Settings → Database backup retention. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Età massima (f’jiem) miżmuma mit-tindif manwali/skedat tal-backups. `0` jiddiżattiva t-tneħħija bbażata fuq l-età. L-istampi tal-migrazzjoni ma jitneħħewx matul it-tieqa tal-migrazzjoni konkorrenti. Jieħu post il-valur issejvjat minn Settings → Database backup retention. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | Intervall tat-tikkjar (ms) tal-kompitu fuq in-naħa tas-server li jeżegwixxi `backup-schedule.json`. Għandu jibqa’ ferm taħt il-granularità ta’ minuta tal-cron; valuri taħt `5000` jew li ma jistgħux jiġu analizzati jerġgħu lura għal `30000`. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Ħjiel dwar ir-runtime tal-container għall-verifika tal-permessi tal-entrypoint. Issettjah għal `podman` għal kwalunkwe topoloġija ta’ Podman. Minħabba li l-container ma jistax jiddetermina jekk l-engine huwiex lokali jew aċċessat permezz ta’ Podman Machine, it-twissija tibqa’ newtrali fir-rigward tat-topoloġija u tirreferi għal `contrib/podman/README.md`. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Backend tal-maħżen tal-konsum tas-sehem tal-kwota: `sqlite` (predefinit) jew `redis`. | | `QUOTA_STORE_REDIS_URL` | _(mhux issettjat)_ | `src/lib/quota/storeFactory.ts` | Stringa tal-konnessjoni ma’ Redis użata meta `QUOTA_STORE_DRIVER=redis` (eż. `redis://localhost:6379`). | | `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Proporzjon tas-saturazzjoni tal-pool (0..1); meta jilħaq jew jaqbeż dan il-valur, il-pool jidħol fil-modalità stretta (mingħajr self). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Multiplikatur tal-punteġġ (0..1) applikat għal mira meta l-politika flessibbli tal-kwota tnaqqsilha l-prijorità. | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Multiplikatur tal-punteġġ (0..1) applikat għal fornitur eżawrit (`credits_exhausted`/`rate_limited`) fil-kalkolu tal-punteġġ auto-combo meta l-limitu preventiv tal-kwota jkun MITFI (#4540). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | Perjodu ta’ żamma (jiem) għall-buckets ta’ `quota_consumption` qabel il-GC (`gcQuotaConsumption`). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Għażla fakultattiva (MITFI b’mod predefinit): tattiva l-limitu strett tal-kwota tar-routing awtomatiku li jneħħi l-kandidati bi kwota baxxa qabel il-kalkolu tal-punteġġ. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Għażla fakultattiva (MITFI b’mod predefinit): meta filtru `auto/:` ma jaqbel ma’ ebda kandidat konness, jerġa’ jġib l-imġiba preċedenti li jaqa’ lura għall-pool sħiħ (mhux iffiltrat) minflok jirritorna pool vojt. Il-valur predefinit MITFI jfisser li `:free` tfisser "il-livell bla ħlas biss". | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | Limitu fuq id-daqs tal-panel (ristrett għal 1–10) għall-varjant ta’ xandir `auto/*:chaos` — talba waħda tinfirex għal mhux aktar minn dan l-għadd ta’ mudelli minn fornituri differenti. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(valur predefinit tal-magna)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Irfinar tad-daqs minimu tal-panel mgħoddi lill-handler tax-xandir chaos; jekk ma jiġix issettjat, jinżamm il-valur predefinit tal-magna. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(valur predefinit tal-magna)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Limitu ta’ żmien assolut (ms) għad-distribuzzjoni kollha tal-panel chaos; jekk ma jiġix issettjat, jinżamm il-valur predefinit tal-magna. | | `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | Il-path tal-`auth.json` tal-Grok CLI użat biex tinkiseb il-kwota ta’ kull ġimgħa ta’ grok-web; issovraskrivih għat-testijiet jew għal installazzjoni mhux standard tas-CLI. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(mhux issettjat)_ | `src/mitm/manager.ts` | Ċertifikat CA addizzjonali (PEM) fdat għall-konnessjonijiet TLS upstream ta’ AgentBridge. | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | L-għadd massimu ta’ talbiet maqbuda miżmuma fir-ring buffer tat-Traffic Inspector. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Id-daqs massimu (KB) tal-body tat-talba/tat-tweġiba maqbuda qabel ma jiġi maqtugħ. | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Port lokali għall-proxy HTTP tat-Traffic Inspector. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Ibda awtomatikament il-proxy HTTP tal-ispettur waqt l-ibbutjar. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(mhux issettjat)_ | `src/lib/inspector/captureState.ts` | Hostnames addizzjonali (separati b’virgola) ittrattati bħala endpoints tal-LLM għall-qbid. | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Aħbi s-sigrieti (headers tal-awtentikazzjoni / API keys) fit-traffiku maqbud. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Minuti qabel ma l-protezzjoni tas-system-proxy tirrestawra awtomatikament is-settings tal-proxy tal-OS. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(awtomatiku)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Token li jawtentika l-inġestjoni interna tal-qbid fl-ispettur. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | L-għadd massimu ta’ kolonni maġenb xulxin fil-modalità ta’ tqabbil tal-Playground. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(mhux issettjat)_ | `src/app/(dashboard)/dashboard/playground/` | Il-mudell predefinit għall-azzjoni “ittejjeb il-prompt” tal-Playground (meta ma jkunx issettjat, juża l-mudell attiv). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Swiċċ prinċipali ta’ emerġenza għall-proxy sidecar Bifrost. Meta jiġi ssettjat għal `0`, ir-rotta tirritorna 503 bl-header `X-Bifrost-Killswitch` u l-operatur jiġi ridirezzjonat lejn il-perkors TS. Użah biex tiddiżattiva s-sidecar mingħajr ma terġa’ tagħmel deployment (inċident fir-router tal-livell 1, rotazzjoni taċ-ċwievet). | | `BIFROST_BASE_URL` | _(mhux issettjat)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Meta jkun issettjat, ir-rotta tal-proxy sidecar Bifrost tgħaddi t-traffiku ta’ `/v1/chat/completions` lil dan il-gateway Go minflok lill-handler tar-relay TS. Mhux issettjat → 503 b’fallback. Is-slash finali titneħħa. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | Il-port li miegħu jintrabat is-servizz inkorporat u ssorveljat Bifrost (`127.0.0.1:`) meta OmniRoute jimmaniġġja ċ-ċiklu tal-ħajja tas-sidecar Bifrost. Il-valur predefinit huwa `8080`. | | `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Il-port li miegħu jintrabat is-servizz ta’ kompressjoni ssorveljat LLMLingua (`127.0.0.1:`). Il-valur predefinit huwa `20135`. | | `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Il-URL bażi għad-daemon lokali tal-mikroservizz HTTP ta’ kompressjoni LLMLingua. Il-valur predefinit huwa `http://127.0.0.1:20135`. | | `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | L-ID tal-mudell Hugging Face li jitgħabba mis-sidecar issorveljat LLMLingua (mgħoddi lill-env tal-proċess sekondarju). | | `BIFROST_API_KEY` | _(mhux issettjat)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Iċ-ċavetta API għall-gateway Bifrost (tintbagħat bħala `Authorization: Bearer ...`). Jekk ma tkunx issettjata, ir-rotta tistenna li t-talba ġġorr ċavetta API OmniRoute valida; din iċ-ċavetta hija biss għall-awtentikazzjoni min-naħa tal-gateway. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Meta jkun true, ir-rotta sidecar ta’ Bifrost tistrimja r-risposti lura permezz ta’ SSE mill-gateway minflok mill-eżekutur tal-istreaming ta’ TS. Issettja għal `0` biex tisforza risposti JSON mhux strimjati mill-gateway. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Limitu ta’ żmien għal kull talba meta ssir prokura lejn il-gateway ta’ Bifrost (ms). Meta jiskadi l-ħin, ir-rotta tirritorna l-mogħdija tar-relay ta’ TS permezz tal-header `X-Bifrost-Fallback`. | | `OMNIROUTE_BIFROST_KEY` | _(mhux issettjat)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Alias għal `BIFROST_API_KEY` (użat minn skripts li jaqraw l-ambjent permezz ta’ `OMNIROUTE_*`). `BIFROST_API_KEY` jieħu preċedenza meta t-tnejn ikunu ssettjati. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Backend tar-relay għal `/api/v1/relay/chat/completions`: `ts \| bifrost \| auto`. `ts` = relay ta’ TypeScript (predefinit meta Bifrost ma jkunx ikkonfigurat); `auto` jagħżel Bifrost meta `BIFROST_BASE_URL` ikun issettjat u `BIFROST_ENABLED` ≠ `0`, b’fallback awtomatiku għal TS jekk is-sidecar ma jkunx aċċessibbli; `bifrost` jisforza Bifrost (strett, mingħajr fallback). L-awtentikazzjoni/il-limitu tar-rata/il-protezzjoni kontra l-injezzjoni/il-lista ta’ permessi dejjem jitħaddmu l-ewwel fir-rotta Next. Ir-risposti jkollhom `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason`. | | `RELAY_ROUTING_BACKEND` | _(mhux issettjat)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Alias aċċettat għal `OMNIROUTE_RELAY_BACKEND` (l-istess valuri `ts \| bifrost \| auto`). `OMNIROUTE_RELAY_BACKEND` jieħu preċedenza meta t-tnejn ikunu ssettjati. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | Perjodu ta’ stennija (ms) wara li tfalli qabża lejn is-sidecar ta’ Bifrost fil-modalità `auto` qabel ma r-relay jerġa’ jipprova s-sidecar; sakemm idum il-perjodu ta’ stennija, jibgħat it-traffiku direttament lejn il-mogħdija ta’ TS, imbagħad jerġa’ jittestja. `0` jiddiżattivah. Japplika biss meta `OMNIROUTE_RELAY_BACKEND=auto`. | | `OMNIROUTE_TLS_CERT` | _(mhux issettjat)_ | `bin/cli/commands/serve.mjs` | Mogħdija għal ċertifikat TLS PEM biex `omniroute serve` jiġi servut permezz ta’ HTTPS (ekwivalenti għal `--tls-cert`). Għandu jkun flimkien ma’ `OMNIROUTE_TLS_KEY`; imbagħad is-server awtonomu jittermina TLS fuq l-istess listener (`wss://` jaħdem mingħajr tibdil). Mhux issettjat → HTTP sempliċi. Jekk jiġi pprovdut wieħed biss miċ-ċertifikat/ċavetta, jew mogħdija li ma tistax tinqara, tiġi rreġistrata twissija u jibqa’ jintuża HTTP. | | `OMNIROUTE_TLS_KEY` | _(mhux issettjat)_ | `bin/cli/commands/serve.mjs` | Mogħdija lejn iċ-ċavetta privata TLS PEM għal HTTPS ta’ `omniroute serve` (ekwivalenti għal `--tls-key`). Għandha tkun flimkien ma’ `OMNIROUTE_TLS_CERT`. Ara `OMNIROUTE_TLS_CERT`. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | Swiċċ ewlieni għar-rotot `/api/local/*`. Meta ma jkunx issettjat jew ikun `0`, ir-rotot kollha `/api/local/*` jirritornaw 503 fil-produzzjoni. Għandu jkun `1` f’deployments mhux loopback biex jippermetti l-lanċjatur ta’ Redis u servizzi lokali simili li jinbdew bi klikk waħda. Protezzjoni doppja flimkien mal-klassifikazzjoni ta’ kontroll tar-rotta `isLocalOnlyPath()` (`LOCAL_ONLY_API_PREFIXES` f’`src/server/authz/routeGuard.ts`). | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(mhux issettjat)_ | `src/lib/security/localEndpoints.ts` | Bearer token għal min isejjaħ `/api/local/*` u ma jkunx fuq loopback (eż. l-app tad-desktop). Meta jkun issettjat, talbiet minn IPs mhux loopback għandhom jinkludu `Authorization: Bearer `. Meħtieġ meta `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` f’deployments mhux loopback. | | `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | Isem il-container għall-lanċjatur Redis b'klikk waħda (`omniroute redis up`). Jintuża kemm mis-CLI kif ukoll mill-GUI `RedisLauncherPanel`. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | Port tal-host għal-lanċjatur Redis b'klikk waħda. Ibdel għal valur ogħla jekk il-host diġà juża 6379. Il-port intern tal-container jibqa' 6379. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | Interfaċċa tal-host li fuqha jippubblika l-lanċjatur Redis b'klikk waħda. Il-lanċjatur jibda Redis MINGĦAJR password, għalhekk jekk torbot ma' `0.0.0.0` tkun qed tagħti lil kull host fuq il-LAN tiegħek Redis mingħajr awtentikazzjoni — wessa' dan biss jekk tissettja wkoll password fuq l-istanza int stess. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfaċċa tal-host li fuqha docker-compose jippubblika s-sidecar Redis (#9286). Ir-Redis ta' compose jaħdem mingħajr `requirepass`; il-containers tal-app jaċċessawh permezz tan-network ta' compose (`redis:6379`) — il-port ippubblikat jeżisti biss għal għodod fuq in-naħa tal-host. `0.0.0.0` jesponi Redis mingħajr awtentikazzjoni għal-LAN kollu. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Port tal-host għas-sidecar Redis ta' compose. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | Interfaċċa tal-host li fuqha docker-compose jippubblika l-ports tad-dashboard/API/live-WS tal-app stess (#12568). Billi `REQUIRE_API_KEY=false` jiġi bħala l-valur default ta' `.env.example`, `0.0.0.0` jesponi l-proxy LLM anonimu `/v1` għal-LAN/WAN kollu — wessa' biss meta `REQUIRE_API_KEY=true` jew meta reverse proxy quddiemu jinforza l-awtentikazzjoni tiegħu stess. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfaċċa tal-host li fuqha docker-compose jippubblika s-sidecar tal-memorja Qdrant (#12578). Japplika l-istess raġunament dwar l-esponiment għal-LAN bħal għal `REDIS_BIND_HOST`. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfaċċa tal-host li fuqha docker-compose jippubblika s-sidecar tar-router Bifrost (#12578). Japplika l-istess raġunament dwar l-esponiment għal-LAN bħal għal `REDIS_BIND_HOST`. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Prefiss tan-namespace applikat għal kull key Redis ta' OmniRoute (limitatur tar-rata, cache tal-awtentikazzjoni, maħżen tal-kwoti, circuit breaker tat-tisħin). Jipprevjeni kolliżjonijiet bejn il-keys meta l-istanza Redis tkun kondiviża ma' apps oħra (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(mhux issettjat — il-mekkaniżmu diżattivat)_ | `src/lib/api/internalServiceAuth.ts` | Sigriet kondiviż għal passaġġi REST interni li jippreservaw l-identità (#9260): il-komponenti OmniRoute li jsejħu routes lokali oħra ta' OmniRoute jibagħtuh bħala `x-omniroute-internal-service-token` sabiex tiġi ppreservata l-identità oriġinali ta' min għamel is-sejħa. Jiġi mqabbel permezz ta' `timingSafeEqual`. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(mhux issettjat)_ | `src/lib/api/internalServiceAuth.ts` | Varjant tal-fajl sigriet tat-token tas-servizz intern: mogħdija għal fajl li l-kontenut tiegħu, wara li jitneħħew l-ispazji żejda, ikun it-token. Jiġi kkonsultat biss meta l-varjabbli inline ma tkunx issettjata. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Jarrikkixxi l-lista tal-fornituri fid-dashboard bi statistika tal-klassifikazzjoni ta' kull ġimgħa minn OpenRouter (#9324). Attivat b'mod awtomatiku; issettja `false` biex taqbeż kompletament il-ġbir fl-isfond (ma jimblukkax u qatt ma jkun fatali). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24s) | `src/lib/catalog/openrouterProviderStats.ts` | TTL tal-cache għall-istampa momentanja tal-istatistika tal-fornituri ta' OpenRouter, f'millisekondi. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Immaġni ta' Redis użata mil-lanċjatur ta' Redis bi klikk waħda. Ibdel għal `redis:8-alpine` jew għal mera ta' reġistru privat skont il-ħtieġa. | | `QDRANT_HOST` | `qdrant` | _(profil tal-cluster fakultattiv)_ | Isem il-host tas-sidecar ta' Qdrant meta `--profile memory` ikun attiv. Il-valur awtomatiku jindika l-isem tas-servizz qdrant fin-network; ibdlu għal skjerament estern. Jintuża biss meta `qdrantEnabled` ikun `true` fil-kodiċi (`src/lib/memory/vectorStore.ts:108`). | | `QDRANT_PORT` | `6333` | _(profil tal-cluster fakultattiv)_ | Port REST tas-sidecar ta' Qdrant. | | `QDRANT_GRPC_PORT` | `6334` | _(profil tal-cluster fakultattiv)_ | Port gRPC tas-sidecar ta' Qdrant. Jintuża minn libreriji tal-klijent li jippreferu gRPC minflok REST għal operazzjonijiet ta' streaming. | | `QDRANT_API_KEY` | _(mhux issettjat)_ | _(profil tal-cluster fakultattiv)_ | API key fakultattiva għal Qdrant Cloud jew istanza awtentikata fuq il-post. Vojta → ma jintbagħat l-ebda header `api-key`. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(profil tal-cluster fakultattiv)_ | Isem il-kollezzjoni għall-embeddings tal-memorja tal-konverżazzjonijiet ta' OmniRoute. Tinħoloq mal-ewwel eżekuzzjoni b'dimensjonijiet `QDRANT_VECTOR_SIZE`. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(profil tal-cluster fakultattiv)_ | Isem tal-mudell tal-embedding awtomatiku rreġistrat fil-metadata tal-kollezzjoni ta' Qdrant. L-embeddings reali jiġu ġġenerati minn kwalunkwe fornitur li għalih jindika l-qasam `embeddingModel` fis-settings ta' OmniRoute. | | `QDRANT_VECTOR_SIZE` | `1536` | _(profil tal-cluster li jrid jiġi attivat)_ | Id-dimensjoni tal-vettur tal-embedding. Trid taqbel mal-mudell li tuża għall-embedding (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(profil tal-cluster li jrid jiġi attivat)_ | Il-preċiżjoni tal-indiċi HNSW waqt il-kostruzzjoni. Valur ogħla = kostruzzjoni aktar bil-mod, tfittxija aktar mgħaġġla. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Swiċċ ewlieni għar-rotazzjoni tal-kontijiet konfigurabbli mill-operatur. Meta jkun `false`, l-ebda waħda mill-klassijiet `OMNIROUTE_ROTATE_*` ta' hawn taħt ma tiskatta fallback tal-kont (l-istat meta s-swiċċ ewlieni jkun mitfi jimblokka wkoll il-klassijiet 429/500/502 attivati awtomatikament). Dan jippermetti lil front-end ta' superviżjoni (eż. l-app tad-desktop VibeProxy) jirrifletti r-regoli tar-rotazzjoni tiegħu stess fuq il-magna tal-backend għall-fallback tal-kontijiet. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Il-perjodu ta' stennija (f'sekondi) applikat għal kont limitat bir-rata meta s-servizz upstream ma jipprovdi l-ebda ħjiel espliċitu dwar ir-reset. `0` = uża l-perjodu ta' stennija predefinit tal-magna minflok override fiss. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Riflessjoni tal-preferenza tal-front-end "timmarkax bħala limitat bir-rata mingħajr ħin ta' reset". | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | Attivazzjoni tal-fallback għal kull status għall-iżbalji `429`. Meta jkun `false` (u `OMNIROUTE_ROTATION_ENABLED=true`), żball `429` ma jibqax jiskatta r-rotazzjoni tal-kont u minflok jintbagħat lura lill-klijent. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | L-għadd ta' żbalji `429` fi ħdan `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` meħtieġ qabel ma l-kont jiġi rotat. `1` (valur predefinit) iwettaq ir-rotazzjoni minnufih, filwaqt li jippreserva l-imġiba storika. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Tieqa li tiżżerżaq (f'sekondi) li matulha l-iżbalji `429` jingħaddu lejn `OMNIROUTE_ROTATE_429_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | Attivazzjoni tal-fallback għal kull status għall-iżbalji tas-server `5xx` (minbarra `502`, li għandu l-klassi tiegħu stess). Meta jkun `false`, dawn l-iżbalji ma jibqgħux jiskattaw ir-rotazzjoni tal-kont. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | L-għadd ta' żbalji `5xx` fi ħdan `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` meħtieġ qabel ma l-kont jiġi rotat. `1` (valur predefinit) iwettaq ir-rotazzjoni minnufih. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Tieqa li tiżżerżaq (f'sekondi) li matulha l-iżbalji `5xx` jingħaddu lejn `OMNIROUTE_ROTATE_500_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | Attivazzjoni alternattiva għal kull status għall-iżbalji `502` (gateway ħażin). Meta jkun `false`, l-iżbalji `502` ma jibqgħux jiskattaw ir-rotazzjoni tal-kont. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | L-għadd ta' żbalji `502` fi ħdan `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` meħtieġ qabel ma l-kont jiġi rrotat. `1` (valur predefinit) iwettaq ir-rotazzjoni minnufih. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Tieqa li tiżżerżaq (f'sekondi) li matulha l-iżbalji `502` jingħaddu lejn `OMNIROUTE_ROTATE_502_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Għażla fakultattiva (predefinitament MITFIJA): meta jkun `true`, `400` sempliċi (talba ħażina) jiskatta wkoll ir-rotazzjoni tal-kont. Dan huwa biss addittiv — qatt ma jimblokka l-imġiba eżistenti tal-magna fejn `400` li jinkludi test dwar limitu tar-rata/kwota xorta jaqleb għal kont ieħor irrispettivament minn din il-marka. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | L-għadd ta' żbalji `400` fi ħdan `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` meħtieġ qabel ma l-kont jiġi rrotat (jiġi kkunsidrat biss meta `OMNIROUTE_ROTATE_ON_400=true`). | | `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Tieqa li tiżżerżaq (f'sekondi) li matulha l-iżbalji `400` jingħaddu lejn `OMNIROUTE_ROTATE_400_THRESHOLD`. | ### Skedatur tat-Tisħin ta' Claude Tisħin immexxi minn cron għall-konnessjonijiet Anthropic OAuth li jkunu għażlu li jipparteċipaw, sabiex it-tieqa tal-limitu tar-rata ta' 5 sigħat tinfetaħ permezz ta' talba skedata trivjali minflok permezz tal-ewwel talba reali (#8848). L-iskedatur ikun mitfi sakemm `OMNIROUTE_WARMUP_ENABLED` ma jkunx veru **u** l-konnessjoni ma tkunx immarkata f'`settings.claudeWarmup.connections`; lista vojta ta' konnessjonijiet tfisser li ma jissaħħan xejn anki meta l-varjabbli tal-ambjent ikun attiv. | Varjabbli | Valur Default | Fajl tas-Sors | Deskrizzjoni | | ------------------------------ | --------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_WARMUP_ENABLED` | _(mhux issettjat → mitfi)_ | `src/lib/warmupScheduler.ts` | Swiċċ ewlieni għall-iskedatur tat-tisħin. Jaċċetta `1`/`true`/`yes`/`on` (mingħajr distinzjoni bejn ittri kbar u żgħar, u bl-ispazji żejda mneħħija). Kwalunkwe valur ieħor, jew jekk ma jkunx issettjat, iħalli l-iskedatur mitfi. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Espressjoni cron b’ħames oqsma għaċ-ċiklu tat-tisħin, evalwata f’`America/Los_Angeles` (iż-żona tal-ħin tar-reset ta’ Anthropic) irrispettivament mill-arloġġ tal-host. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Kemm-il konnessjoni jissaħħnu b’mod parallel għal kull ċiklu. Limitat għal `1`-`10`; valur mhux numeriku jerġa’ jaqa’ għal `3`. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Mudell użat għat-talba tat-tisħin. Ibdel dan biss jekk il-valur default ma jkunx disponibbli fil-pjan tiegħek; agħżel l-orħos mudell li xorta jiftaħ it-tieqa. | ### Sessjonijiet VNC ta’ Login mill-Brawżer u Alias tad-Direttorju tad-Data Chromium+VNC f’container użat għall-qbid interattiv tal-kredenzjali ta’ login mill-brawżer (`/api/vnc-session`), flimkien ma’ alias legat `DATA_DIR`. Kollha fakultattivi — il-valuri default tal-VNC huma maħsuba għall-immaġni inkluża `omniroute-vnc-chromium:local` u jiġu sostitwiti biss għal immaġni ta’ container personalizzata, ports, jew aġġustament taċ-ċiklu tal-ħajja. | Varjabbli | Valur Default | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Tag tal-immaġni Docker għall-container tal-login ta’ Chromium+VNC. Ibni `docker/vnc-browser/chromium` jew ipponta dan lejn immaġni personalizzata. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Binarju tar-runtime tal-container użat biex jitnieda l-container VNC (eż. issettjah għal `podman`). | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Port VNC/noVNC espost ġewwa l-container. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Port tal-Chrome DevTools Protocol ġewwa l-container. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Path tad-direttorju tal-profil ta’ Chromium ġewwa l-container. | | `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Direttorju tal-host li fih jinżammu l-profili persistenti tal-login mill-brawżer. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 minuti) | `src/lib/vncSession/manifest.ts` | Timeout ta’ inattività (ms) qabel ma sessjoni VNC inattiva titneħħa. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 minuta) | `src/lib/vncSession/manifest.ts` | Limitu assolut (ms) fuq it-tul ta’ sessjoni VNC waħda. | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Għadd massimu ta’ sessjonijiet VNC simultanji. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Timeout (ms) waqt l-istennija biex il-brawżer fil-container ikun lest għas-CDP. | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Timeout (ms) għall-ġbir tas-sessjoni/cookies maqbuda wara li jitlesta l-login. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Flags addizzjonali tal-linja tal-kmand mgħoddija lil Chromium fil-container. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Network Docker iddedikat li jingħaqad miegħu l-container tal-login VNC (#12571) minflok il-bridge default, sabiex containers aħwa ma jkunux jistgħu jaċċessaw il-port tal-bridge CDP tiegħu. | | `VIBEPROXY_DATA_DIR` | _(mhux issettjat)_ | `open-sse/services/notionThreadSessions.ts` | **Alias legat** għal `DATA_DIR`, iċċekkjat biss wara li kemm `DATA_DIR` kif ukoll `OMNIROUTE_DATA_DIR` ma jkunux issettjati. Jidentifika l-cache tas-sessjoni tal-web-thread ta’ Notion (`/notion-web-thread-sessions.json`). | --- ## 26. Qafas tat-Testijiet u E2E Użat minn `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`, `scripts/dev/run-ecosystem-tests.mjs`, u `scripts/build/uninstall.mjs`. Ħalli kull valur hawn taħt mhux issettjat fl-ambjenti tal-produzzjoni. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | -------------------------------------- | ---------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Modalità tal-inizjalizzazzjoni E2E (`auth`, `fresh`, `reuse`) għar-runner ta’ Playwright. | | `OMNIROUTE_E2E_PASSWORD` | juża `INITIAL_PASSWORD` fin-nuqqas | `scripts/dev/run-next-playwright.mjs` | Password tal-amministratur injettata fl-ambjent ta’ Playwright. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Iddiżattiva l-verifika lokali tas-saħħa matul l-eżekuzzjonijiet ta’ Playwright. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Iddiżattiva ċ-ċiklu tal-verifika tas-saħħa tat-token OAuth matul it-testijiet. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(mhux issettjat)_ | `src/lib/tokenHealthCheck.ts` | Fornituri separati b’virgoli esklużi mill-iskan proattiv tat-tiġdid tat-token (eż. `codex,openai`). Alternattiva mmirata għad-diżattivazzjoni sħiħa tal-verifika tas-saħħa — il-fornituri b’TTL qasir jibqgħu jiġġeddu filwaqt li l-fornituri kaskata jibqgħu reattivi biss. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Isikket il-messaġġi żejda tal-verifika tas-saħħa fl-stdout ta’ Playwright. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Aqbeż il-build tal-produzzjoni ta’ Next.js qabel ma jibda Playwright (ottimizzazzjoni tas-CI). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | Aqbeż il-hook tad-diżinstallazzjoni ta’ OmniRoute (użat mis-CI biex iżomm `node_modules` intatt). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Ħin ta’ stennija (ms) biex is-server isir operattiv qabel jitħaddmu t-testijiet tal-ekosistema/protokoll. | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL li l-qafas tat-test tad-duħħan ta’ Electron jistenna li l-app ippakkjata tipprovdi. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Limitu ta’ żmien totali (ms) qabel ma l-qafas tat-test tad-duħħan jieqaf jipprova. | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Perjodu ta’ stabbilizzazzjoni (ms) wara li titgħabba l-paġna. | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(awtomatiku)_ | `scripts/dev/smoke-electron-packaged.mjs` | Path espliċitu għall-eżekutibbli ppakkjat ta’ Electron. | | `ELECTRON_SMOKE_DATA_DIR` | _(tmpdir)_ | `scripts/dev/smoke-electron-packaged.mjs` | Direttorju tad-data għall-eżekuzzjoni tat-test tad-duħħan ta’ Electron. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Issettja għal `1` biex tippreserva d-direttorju tad-data tat-test smoke wara l-eżekuzzjoni. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Issettja għal `1` biex tibgħat il-logs ta’ Electron lejn stdout matul l-eżekuzzjoni. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: erġa’ niedi bl-istess direttorju tad-data u vverifika li t-tieni tnedija tagħżel id-driver nattiv ta’ SQLite. | | `CLI_DEVIN_BIN` | _(tfittxija f’PATH)_ | `open-sse/executors/devin-cli.ts` | Issostitwixxi l-mogħdija għall-binarju tas-CLI ta’ Devin. | ### Proċess tat-traduzzjoni tad-dokumentazzjoni Użat minn `scripts/i18n/run-translation.mjs` (il-kmand `npm run i18n:run`). Il-ħames varjabbli kollha mhumiex issettjati b’mod awtomatiku — issettjahom f’`.env` biss fuq magni li għandhom ikunu jistgħu jħaddmu t-traduttur tad-dokumentazzjoni. | Varjabbli | Valur awtomatiku | Fajl tas-sors | Deskrizzjoni | | ----------------------------------- | ------------------ | ---------------------------------- | ------------------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(mhux issettjat)_ | `scripts/i18n/run-translation.mjs` | URL bażi kompatibbli ma’ OpenAI għall-backend tat-traduzzjoni. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(mhux issettjat)_ | `scripts/i18n/run-translation.mjs` | Token Bearer għall-backend tat-traduzzjoni (qatt ma jiġi rreġistrat). | | `OMNIROUTE_TRANSLATION_MODEL` | _(mhux issettjat)_ | `scripts/i18n/run-translation.mjs` | ID tal-mudell, eż. `gpt-4o-mini` jew `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Limitu ta’ żmien għal kull talba, f’millisekondi. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Talbiet paralleli ta’ traduzzjoni meta jiġu pproċessati diversi fajls / lokalitajiet. | --- ## 27. Fluss tar-Radar (Self-Hosting) Żieda fakultattiva kkontrollata mill-feature flag RADAR_ENABLED (mitfija awtomatikament — feature flag li tinbidel permezz tas-Settings/DB, mhux varjabbli tal-ambjent; ara [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)). L-ewwel erba’ varjabbli hawn taħt huma overrides fakultattivi għal fluss self-hosted jew forked u għall-flussi tas-supporter key. Il-ħames waħda, `RADAR_ADMIN_URL`, hija link separata mingħajr valur awtomatiku għall-pannell privat tal-operazzjonijiet tas-sid. Ara [docs/frameworks/RADAR.md](../frameworks/RADAR.md) għad-dokumentazzjoni sħiħa tal-modulu u s- [sekwenza minn tarf sa tarf għall-attivazzjoni u l-konfigurazzjoni ggwidata](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup). Il-qarrej ġeneriku tal-avviżi tal-Home/Changelog mhuwiex ikkonfigurat permezz ta’ varjabbli tal-ambjent u ma jiddependix mill-feature flag RADAR_ENABLED. Huwa jaqra l-URL pubbliku `news.json` tar-repożitorju ddikjarat f’`src/shared/utils/releaseNotes.ts` permezz ta’ GET biss; l-IDs tal-avviżi miċħuda jibqgħu fil-ħażna lokali tal-browser. | Varjabbli | Valur awtomatiku | Fajl tas-sors | Deskrizzjoni | | ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | URL bażi kondiviż mill-flussi ffirmati separatament tal-katalgu, tar-referrals, tal-offerti għall-partitarji u tal-Intel. Ibdel il-valur biex jipponta lejn servizz self-hosted jew forked. | | `RADAR_FEED_PUBKEY` | _(ċavetta awtomatika fissa)_ | `src/lib/radar/pinnedKeys.ts` | Ċavetta pubblika Ed25519 (SPKI base64-DER jew PEM) użata biex tivverifika l-firem tal-fluss minn fluss personalizzat. | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | URL li tiftaħ il-buttuna "Jien kontributur" fid-dashboard (fluss ta’ talba għal supporter key permezz ta’ GitHub OAuth). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL li tiftaħ il-buttuna "Appoġġja l-proġett" fid-dashboard (paġna tal-ħlas/pjanijiet). | | `RADAR_ADMIN_URL` | _(mhux issettjat)_ | `src/lib/radar/links.ts` | Link privata għall-pannell tal-operazzjonijiet, għas-sid biss. HTTPS huwa meħtieġ ħlief għal HTTP loopback SSH forward; valuri mhux issettjati jew invalidi ma joħolqu ebda element ta’ navigazzjoni. | --- ## Awditu: Varjabbli Mneħħija / Mejta Il-varjabbli li ġejjin dehru f’verżjonijiet preċedenti ta’ `.env.example` iżda **m’għandhom ebda referenza waqt l-eżekuzzjoni** fil-codebase attwali. Dawn tneħħew: | Varjabbli | Raġuni | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `STORAGE_DRIVER=sqlite` | Qatt ma tinqara minn ebda fajl tas-sors. SQLite huwa l-uniku driver appoġġjat — mhi meħtieġa ebda għażla. | | `INSTANCE_NAME=omniroute` | Preżenti f'dokumentazzjoni u mudelli env qodma iżda ma tintużax waqt it-tħaddim. Tista' terġa' tintuża f'funzjonalità futura b'diversi istanzi. | | `SQLITE_MAX_SIZE_MB=2048` | Mhix referenzjata fil-kodiċi tas-sors. Id-daqs tad-database mhuwiex limitat artifiċjalment. | | `SQLITE_CLEAN_LEGACY_FILES=true` | Mhix referenzjata fil-kodiċi tas-sors. It-tindif ta' fajls legati x'aktarx tneħħa. | | `CLI_ROO_BIN` | Mhix irreġistrata f'`src/shared/services/cliRuntime.ts`. | | `CLI_KIMI_CODING_BIN` | Mhix irreġistrata f'`src/shared/services/cliRuntime.ts` (Kimi Coding juża OAuth, mhux fajl binarju CLI). | | `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Mhumiex referenzjati mkien fil-kodiċi tas-sors. | | `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` | Tneħħew f'v3.8.0. Ir-runtime m'għadux jaqra dawn il-varjabbli env — il-kredenzjali jiġu mid-Dashboard / `data/provider-credentials.json` / database kriptata. | | `CURSOR_PROTOBUF_DEBUG` | Tneħħiet f'v3.8.0. L-eżekutur ta' Cursor juża `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` (ara §22). | | `CLI_COMPAT_KIRO` | Tneħħiet f'v3.8.0. Kiro jinsab f'`CLI_COMPAT_OMITTED_PROVIDER_IDS` — it-toggle tiegħu m'għandu ebda effett. | | `QIANFAN_API_KEY` | Tneħħiet flimkien ma' stubs oħra mhux użati taċ-ċwievet API tal-fornituri f'v3.8.0. | ### Korrezzjonijiet tal-Valuri Predefiniti | Varjabbli | Valur Qadim ta' `.env.example` | Valur Predefinit Attwali fil-Kodiċi | Ikkoreġut | | ------------------------- | ------------------------------ | ----------------------------------- | ------------------------------------------------------------------ | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Tneħħa l-valur qarrieqi; `7` ġie ddokumentat bħala l-predefinit | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Tneħħa l-valur qarrieqi; `7` ġie ddokumentat bħala l-predefinit | ### Riġenerazzjoni tal-konfigurazzjoni ta' OpenCode (għodod ad hoc) Jintuża minn `scripts/ad-hoc/regen-opencode-config.ts` biex jiġi riġenerat `opencode.json` b'valuri preċiżi ta' `limit.context` u `limit.output` miksuba mill-istanza OmniRoute li tkun qed taħdem. L-ebda wieħed minn dawn mhu meħtieġ għat-tħaddim normali — l-iskript huwa biss għodda għall-iżviluppaturi. | Varjabbli | Valur predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------ | ------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | Il-URL bażi tal-istanza ta' OmniRoute li għandha tiġi mistoqsija għal `/v1/models`. | | `OMNIROUTE_KEY` | _(mhux issettjat)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Ċavetta tal-API għall-awtentikazzjoni mal-endpoint `/v1/models` ta' OmniRoute. Jintuża `OPENCODE_API_KEY` jekk ma jkunx issettjat. | | `OPENCODE_API_KEY` | _(mhux issettjat)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Ċavetta tal-API bl-istil ta' OpenCode (`sk-...`) miktuba fl-`opencode.json` iġġenerat mill-ġdid. Jintuża `OMNIROUTE_KEY` jekk ma jkunx issettjat. | ### Għodda ad hoc tal-evalwazzjoni offline tal-kompressjoni Użata minn `scripts/compression-eval/index.ts`, is-CLI għall-evalwazzjoni offline tal-kompressjoni. Mhijiex meħtieġa għat-tħaddim normali — hija biss għodda għall-iżviluppaturi. | Varjabbli | Valur predefinit | Fajl tas-Sors | Deskrizzjoni | | ---------------------------- | ---------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (vojt) | `scripts/compression-eval/index.ts` | Kredenzjali JSON ipprovduti mill-operatur għall-fornitur ittestjat mis-CLI tal-evalwazzjoni offline tal-kompressjoni (ipproċessati b'`JSON.parse`). Ħallih mhux issettjat għal eżekuzzjoni bi prova. | ### Sessjonijiet tal-Brawżer VNC Użati minn `src/lib/vncSession/manifest.ts` biex jiġu kkonfigurati sessjonijiet Chromium mingħajr interfaċċa grafika bbażati fuq Docker għal fornituri tal-awtomatizzazzjoni tal-brawżer. Kollha fakultattivi — il-valuri predefiniti jidhru hawn taħt. | Varjabbli | Valur predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------- | ------------------------------ | ------------------------------------------- | --------------------------------------------------------------------------------------------------- | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Mogħdija għall-fajl binarju ta' Docker użat biex jinħolqu kontenituri VNC. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Immaġni Docker għall-kontenitur VNC Chromium. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(parametri integrati)_ | `src/lib/vncSession/manifest.ts` | Parametri CLI addizzjonali ta' Chromium mgħoddija lill-brawżer ġewwa l-kontenitur. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Port VNC ġewwa l-kontenitur. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Port ta' Chrome DevTools Protocol ġewwa l-kontenitur. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Direttorju tal-profil ġewwa l-kontenitur. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(mhux issettjat)_ | `src/lib/vncSession/manifest.ts` | Direttorju fuq il-host għal profili persistenti tal-brawżer. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | Limitu ta' żmien ta' inattività (ms) qabel ma tinġabar sessjoni VNC. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Tul massimu tas-sessjoni (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Għadd massimu ta' sessjonijiet VNC simultanji. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Limitu ta' żmien (ms) sakemm il-brawżer ikun lest. | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Limitu ta' żmien (ms) għall-ġbir/tindif. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Network Docker iddedikat li jingħaqad miegħu l-kontenitur (#12571), separat mill-bridge predefinit. | | `VIBEPROXY_DATA_DIR` | _(mhux issettjat)_ | `open-sse/services/notionThreadSessions.ts` | Direttorju għall-ħżin persistenti tas-sessjonijiet tat-thread ta' Notion. | ### Awtentikazzjoni interna tas-servizzi | Varjabbli | Valur predefinit | Deskrizzjoni | | --------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Token inline għall-awtentikazzjoni bejn servizz u ieħor fil-pjan ta' ġestjoni. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Mogħdija għal fajl li fih it-token intern tas-servizz (ippreferuta fil-kontenituri; tieħu preċedenza fuq il-varjabbli inline). | ### Statistika tal-fornitur OpenRouter | Varjabbli | Valur predefinit | Deskrizzjoni | | ----------------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Issettja għal `false` biex ma tinġabarx l-istatistika ta' OpenRouter għal kull fornitur għat-titjib tal-katalgu. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | TTL tal-cache (ms) għall-istatistika miġbura tal-fornituri ta' OpenRouter. | ### Konnessjoni Redis integrata | Varjabbli | Valur Predefinit | Deskrizzjoni | | --------------------------- | ---------------- | ---------------------------------------------------------------------------------------------- | | `REDIS_BIND_HOST` | `127.0.0.1` | Indirizz tal-irbit għas-servizz Redis inkorporat. | | `REDIS_PORT` | `6379` | Port għas-servizz Redis inkorporat. | | `OMNIROUTE_REDIS_BIND_HOST` | – | Valur ta' sostituzzjoni fl-ambitu ta' OmniRoute għall-indirizz tal-irbit ta' Redis inkorporat. | --- ## 24. Żidiet fir-rilaxx v3.8.50 Dawn is-settings ġew introdotti wara l-istampa preċedenti tal-kuntratt tal-ambjent. | Varjabbli | Valur Predefinit | Fajl tas-Sors | Deskrizzjoni | | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Il-ħin massimu ta’ stennija għal slot ta’ ammissjoni taċ-chat intensiv qabel `503` li jista’ jerġa’ jiġi ppruvat; stennija qasira u limitata tissettjalizza l-influss f’daqqa ta’ aġenti minflok ma tagħti `503` immedjat. `0` jerġa’ jattiva r-rifjut immedjat. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Baġit ta’ bytes fil-kju għall-istennija tal-ammissjoni: jillimita l-għadd totali ta’ bytes tal-body ibbaferjati u miżmuma fil-proċess kollu sabiex l-istennija ma tkunx tista’ tkabbar il-heap (#4380). Stennijiet li jaqbżu l-baġit jirċievu minnufih `503` li jista’ jerġa’ jiġi ppruvat. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | No-op deprekat minn #10110: il-lanes tal-ammissjoni għal kull sessjoni tneħħew favur baġit wieħed għall-proċess kollu. Aċċettat għall-kompatibbiltà tal-konfigurazzjoni; jiġi injorat. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | No-op deprekat minn #10110: il-lanes tal-ammissjoni għal kull sessjoni tneħħew favur baġit wieħed għall-proċess kollu. Aċċettat għall-kompatibbiltà tal-konfigurazzjoni; jiġi injorat. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (mitfi) | `open-sse/services/admission/runtime.ts` | Lanes virtwali adattivi għall-ammissjoni waqt it-tħaddim (#9654): swiċċ ewlieni għall-gate adattiv għal kull tenant (sistema 2). Huwa distint mill-varjabbli deprekati tal-lane għal kull konnessjoni msemmija hawn fuq (TTL_MS / MAX_SESSIONS, no-ops minn #10110). Feature flag bl-istess isem fid-dashboard; il-varjabbli tal-ambjent jieħu preċedenza fuq l-override tad-dashboard; jeħtieġ ristartjar. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Jillimita kemm sejħa run-now tistenna job li jkun għaddej qabel ma tibda l-eżekuzzjoni fil-kju. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | attivat | `open-sse/services/adobeFireflySession.ts` | Iżomm l-istat ta’ IMS u tar-riskju tal-browser aġġornat permezz ta’ sessjonijiet Chrome CDP marbuta mal-kont; issettja `0` biex tiddiżattivah. | | `ADOBE_FIREFLY_SESSION_DISK` | attivat | `open-sse/services/adobeFireflySession.ts` | Jippersisti s-sessjonijiet Adobe msewwija taħt `DATA_DIR`; issettja `0` għal stat fil-memorja biss. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | L-intervall minimu bejn sottomissjonijiet ta’ ġenerazzjoni lil Adobe Firefly. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Perjodu kwiet addizzjonali wara kull tielet sottomissjoni Adobe li tirnexxi. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Modalità true-headless għad-debugging biss; Adobe colligo normalment jirrifjuta s-sessjoni tar-riskju li tirriżulta. | | `CHROME_PATH` | skoperta awtomatika | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Eżekutibbli assolut fakultattiv ta’ Chrome użat mill-eżekuturi mħaddma mill-browser meta l-iskoperta awtomatika tal-pjattaforma ma tkunx biżżejjed. | | `TELEGRAM_BOT_TOKEN` | _(mhux issettjat)_ | `src/lib/telegram/config.ts` | Token ta’ BotFather li jattiva l-webhook dieħel u jiffirma l-`initData` tal-Mini App. | | `TELEGRAM_WEBHOOK_SECRET` | _(mhux issettjat)_ | `src/lib/telegram/config.ts` | Sigriet kondiviż irreġistrat permezz ta’ `setWebhook` u vverifikat mal-header `X-Telegram-Bot-Api-Secret-Token` ma’ kull kunsinna tal-webhook. Meħtieġ għall-path tal-webhook; jekk ma jkunx issettjat, il-kunsinni tal-webhook jiġu rrifjutati b’503. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Il-mudell użat għat-tweġibiet taċ-chat ta’ Telegram. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Override tal-URL bażi tal-Bot API għal proxies jew servers tal-Bot API ospitati lokalment. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Timeout f’millisekondi għal sejħiet ħerġin tal-Bot API. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (attivat) | `scripts/build/optionalPackStaging.mjs` | Issettja `0` biex ma jiġux iġġenerati tarballs `.tar.gz` waqt l-istaging ta’ pakketti fakultattivi tal-ML/browser għas-siġra awtonoma ta’ Electron (id-direttorji tal-pakketti u `optional-packs.index.json` xorta jiġu prodotti). Użat mill-workflow tar-rilaxx tad-desktop biex jitnaqqas id-daqs tal-uploads tal-artefatti. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Jattiva r-reġistrazzjoni tar-rotot tal-immaġnijiet tal-abbonament xAI; diżattivat b’mod predefinit sabiex il-path tal-immaġnijiet tal-API key jibqa’ l-istess. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Perjodu ta’ cooldown għal kull key, f’millisekondi, meta tweġiba `429` ma jkollhiex indikazzjoni `Retry-After` li tista’ tintuża. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | attivat | `open-sse/services/estimatorCalibration.ts` | Issettja għal `off`, `0`, jew `false` biex tiddiżattiva r-reġistrazzjoni u l-applikazzjoni tal-kalibrazzjoni tal-estimatur fil-memorja. | | `NEXT_MANUAL_SIG_HANDLE` | _(intern)_ | `scripts/dev/standalone-server-ws.mjs` | Override intern tal-handler tas-sinjali tas-server awtonomu; normalment jiġi ssettjat u mneħħi mil-launcher minflok ma jiġi kkonfigurat mill-operaturi. | ### ChatGPT Web (Codex) Valuri predefiniti globali għall-browser headless u għat-tunnel tal-għodod ħerġin. Il-valuri tal-konnessjoni ssettjati fid-dashboard għandhom preċedenza. | Varjabbli | Valur default | Fajl tas-sors | Deskrizzjoni | | --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(skoperta awtomatika)_ | `open-sse/executors/chatgpt-web-codex.ts` | Mogħdija espliċita għal Chrome/Chromium għat-tħaddim b’npm, systemd u PM2. | | `CHROME_PATH` | _(skoperta awtomatika)_ | `open-sse/executors/chatgpt-web-codex.ts` | Alternattiva komuni għal mogħdija espliċita għal Chrome/Chromium. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(mhux issettjata)_ | `open-sse/executors/chatgpt-web-codex.ts` | Endpoint intern tas-CDP; Docker juża s-sidecar fuq il-port `9223`. | | `CDP_PROXY_TOKEN` | _(mhux issettjata)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Jekk tkun issettjata, kull talba lis-sidecar tal-proxy tas-CDP trid tinkludi dan il-valur fl-header `X-Omni-Cdp-Token` (#13679). Mingħajr valur, il-proxy jgħaddi t-talbiet mingħajr awtentikazzjoni — f’dak il-każ, il-protezzjoni tingħata biss mill-iżolament tan-network tan-network ta’ Compose `chatgpt-web-codex-net`. Iġġeneraha b’`openssl rand -hex 32`. | | `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(mhux issettjata)_ | `open-sse/executors/chatgpt-web-codex.ts` | ID globali tat-tunnel ta’ OpenAI għal ċikli lokali tal-għodod Codex. | | `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(mhux issettjata)_ | `open-sse/executors/chatgpt-web-codex.ts` | Runtime key globali tat-tunnel; qatt turih fil-logs. | | `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | L-isem eżatt tal-konnettur personalizzat il-ġdid ta’ ChatGPT għall-bridge tal-MCP. | | `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Direttorju ddedikat għall-istat tal-browser, tal-broker u tat-tunnel. | | `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | Meta jkun `1`, jinqabdu immaġnijiet dijanjostiċi tal-browser f’kull checkpoint. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(mhux issettjata)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Mogħdija assoluta fakultattiva għal binary permanenti tal-launcher. | | `CODEX_CHATGPT_WEB_BUN` | _(skoperta awtomatika)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Mogħdija assoluta fakultattiva għall-binary tar-runtime Bun. | | `CODEX_WEB_GPT_BUN` | _(mhux issettjata)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Alternattiva legacy għal `CODEX_CHATGPT_WEB_BUN`; setups ġodda jużaw l-isem kanoniku. | --- ## OmniConductor Bridge Konsumatur SSE persistenti li jirrifletti l-kompiti tal-hub OmniConductor fit-TaskManager A2A lokali (`src/lib/conductor/`). Fakultattiv — il-bridge jibda biss meta `CONDUCTOR_HUB_URL` ikun issettjat. Għan-naħa tas-server biss: it-token tal-hub qatt ma għandu jasal fil-browser. | Varjabbli | Default | Fajl tas-Sors | Deskrizzjoni | | ------------------------------ | ----------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(vojt)_ | `src/lib/conductor/boot.ts` | Il-URL bażi tal-hub OmniConductor (eż. `http://127.0.0.1:7910`). Jekk mhux issettjat = il-bridge diżattivat. | | `CONDUCTOR_HUB_TOKEN` | _(vojt)_ | `src/lib/conductor/boot.ts` | Kredenzjali tal-hub għall-feed SSE — oħloq peer tat-tip `spokesperson` fuq il-hub (`POST /v1/peers`, amministratur). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(vojt)_ | `src/lib/conductor/hubProxy.ts` | Kredenzjali għad-delega ta' kompiti A2A→hub deħlin (`POST /v1/tasks`); jekk mhux issettjat, juża `CONDUCTOR_HUB_TOKEN`. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Il-URL bażi tas-servizz spokesperson (Faro) wara l-proxy taċ-chat tad-dashboard (`/api/conductor/ask`). | ### Skedar konxju tal-kwota Użat minn `open-sse/services/combo.ts` u `src/lib/quota/quotaScheduler.ts` għal kontrolli tal-baġit tat-tokens qabel it-talba. Fakultattiv — l-imġiba default tar-routing tibqa' l-istess meta ma jkunx issettjat. | Varjabbli | Default | Fajl tas-Sors | Deskrizzjoni | | ---------------------------------- | ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | Meta jkun `1`, jaqbeż konnessjonijiet li l-baġit tat-tokens tagħhom għal kull perjodu (`rateLimitOverrides.tpm`, tabella `provider_quota_state`) ma jiflaħx għall-ispiża stmata tat-talba qabel id-dispaċċ. Jippermetti t-talba tgħaddi jekk ma jkunx ikkonfigurat baġit. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(mixgħul)_ | `open-sse/services/estimatorCalibration.ts` | Kalibrazzjoni b'feedback tal-istimatur tat-tokens tal-context guard (#14931): għal kull (fornitur, mudell, preżenza ta' għodod), EMA ta' `usage.prompt_tokens` / stima, limitata għal 0.15–2.0, fil-memorja biss. `off`, `0` jew `false` jiddiżattivaw ir-reġistrazzjoni u l-applikazzjoni. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Jirreġistra r-rotot tal-immaġnijiet `xai-oauth` (`xao`) u `grok-cli`. Feature flag tad-dashboard bl-istess isem; override mid-DB jieħu preċedenza fuq dan il-valur. |