# Environment Variables Reference (Slovenčina)
🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/docs/reference/ENVIRONMENT.md) · 🇦🇿 [az](../../../az/docs/reference/ENVIRONMENT.md) · 🇧🇬 [bg](../../../bg/docs/reference/ENVIRONMENT.md) · 🇧🇩 [bn](../../../bn/docs/reference/ENVIRONMENT.md) · 🇧🇦 [bs](../../../bs/docs/reference/ENVIRONMENT.md) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇮 [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)
---
> Kompletný prehľad všetkých premenných prostredia, ktoré OmniRoute rozpoznáva.
> Šablónu na rýchly začiatok nájdete v súbore [`.env.example`](../../.env.example).
> [!IMPORTANT]
> Každá premenná zdokumentovaná na tomto mieste sa musí nachádzať aj v súbore `.env.example` a
> každá premenná v súbore `.env.example` musí byť uvedená aj tu. Príkaz `npm run check:env-doc-sync`
> kontroluje túto zhodu pri commite aj v CI. Ak chcete premennú zámerne vynechať, pridajte ju do
> zoznamu povolených výnimiek v súbore `scripts/check/check-env-doc-sync.mjs`.
---
## Obsah
- [1. Povinné tajné údaje](#1-povinné-tajné-údaje)
- [2. Úložisko a databáza](#2-úložisko-a-databáza)
- [3. Sieť a porty](#3-sieť-a-porty)
- [4. Zabezpečenie a overovanie](#4-zabezpečenie-a-overovanie)
- [5. Sanitizácia vstupov a ochrana osobných údajov](#5-sanitizácia-vstupov-a-ochrana-osobných-údajov)
- [6. Zásady používania nástrojov a smerovania](#6-zásady-používania-nástrojov-a-smerovania)
- [7. Adresy URL a cloudová synchronizácia](#7-adresy-url-a-cloudová-synchronizácia)
- [8. Odchádzajúci proxy server](#8-odchádzajúci-proxy-server)
- [9. Integrácia nástrojov CLI](#9-integrácia-nástrojov-cli)
- [10. Integrácie interných agentov a MCP](#10-integrácie-interných-agentov-a-mcp)
- [11. Prihlasovacie údaje poskytovateľov OAuth](#11-prihlasovacie-údaje-poskytovateľov-oauth)
- [12. Prepísanie hlavičky User-Agent poskytovateľov](#12-prepísanie-hlavičky-user-agent-poskytovateľov)
- [13. Kompatibilita odtlačkov CLI](#13-kompatibilita-odtlačkov-cli)
- [14. Poskytovatelia kľúčov API](#14-poskytovatelia-kľúčov-api)
- [15. Nastavenia časových limitov](#15-nastavenia-časových-limitov)
- [16. Zaznamenávanie udalostí](#16-zaznamenávanie-udalostí)
- [17. Optimalizácia pamäte](#17-optimalizácia-pamäte)
- [18. Synchronizácia cien](#18-synchronizácia-cien)
- [19. Synchronizácia modelov (vývoj)](#19-synchronizácia-modelov-vývoj)
- [20. Nastavenia špecifické pre poskytovateľov](#20-nastavenia-špecifické-pre-poskytovateľov)
- [21. Stav proxy servera](#21-stav-proxy-servera)
- [22. Ladenie](#22-ladenie)
- [23. Integrácia so službou GitHub](#23-integrácia-so-službou-github)
- [24. Sandbox pre zručnosti (v3.8.0+)](#24-sandbox-pre-zručnosti-v380)
- [27. Kanál Radar (vlastný hosting)](#27-kanál-radar-vlastný-hosting)
- [Scenáre nasadenia](#scenáre-nasadenia)
- [Audit: odstránené/nepoužívané premenné](#audit-odstránené--nepoužívané-premenné)
---
## 1. Vyžadované tajomstvá
Nenastavené tajomstvá označené **Áno** sa pri prvom spustení vygenerujú automaticky (`JWT_SECRET`, `API_KEY_SECRET`) a uložia sa do `server.env` v dátovom adresári — nastavte ich explicitne, ak je tento adresár dočasný. Výnimkou je `OMNIROUTE_WS_BRIDGE_SECRET`: neukladá sa do `server.env` — vstupné body servera pri každom spustení vytvoria dočasnú hodnotu, ktorú môže použiť len most bežiaci v rámci procesu, takže externí klienti mosta ho musia nastaviť explicitne.
| Premenná | Vyžadovaná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------- | ------------------- | --------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | **Áno** | _(žiadna)_ | `src/lib/auth` | Podpisuje/overuje všetky cookies relácií dashboardu (JWT). Vygenerujte pomocou `openssl rand -base64 48`. |
| `API_KEY_SECRET` | **Áno** | _(žiadna)_ | `src/lib/db/apiKeys.ts` | AES šifrovací kľúč pre hodnoty API kľúčov uložené v SQLite. Vygenerujte pomocou `openssl rand -hex 32`. |
| `INITIAL_PASSWORD` | Nie | _(nenastavené)_ | `src/lib/auth/managementPassword.ts` | Nastaví heslo dashboardu pri spustení, pokiaľ zatiaľ nie je žiadne uložené; po uložení hesla sa ignoruje. Inštalácie cez npm a zo zdrojového kódu skopírujú `.env.example` do `.env`, takže začínajú s jeho verejne známou zástupnou hodnotou `CHANGEME`: pred prvým spustením ju nahraďte, alebo v tomto `.env` nastavte `INITIAL_PASSWORD=` (prázdne), aby sa heslo vytvorilo v uvítacom sprievodcovi pri prvej návšteve, rovnako ako pri nenastavenej hodnote (predvolené správanie Docker image). Uložené heslo zmeníte v Dashboard → Nastavenia → Zabezpečenie, alebo spustením `omniroute reset-password` (`node bin/reset-password.mjs` v priečinku so zdrojovým kódom) s `DATA_DIR` nastaveným na dátový adresár servera. |
| `OMNIROUTE_WS_BRIDGE_SECRET` | **Áno** (produkcia) | _(nenastavené)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Zdieľané tajomstvo pre interný Codex Responses WebSocket most. Overuje požiadavky mosta medzi WS relay v Electrone/prehliadači a OmniRoute. ⚠️ **VYŽADOVANÉ v produkcii — ak nie je nastavené, všetky požiadavky WS mosta sa zamietnu.** Vygenerujte pomocou `openssl rand -base64 32`. |
| `OMNIROUTE_SW_BUILD_ID` | Nie | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Explicitné id na obídenie cache service workera pre PWA shell (#11779); prvé v reťazci rozlúštenia. |
| `SOURCE_VERSION` | Nie | _(nenastavené)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Druhé v reťazci — nastavujú ho PaaS buildery (napr. v štýle Heroku) ako nasadený commit. |
| `NEXT_PUBLIC_SW_BUILD_ID` | Nie | _(odvodené)_ | `src/shared/components/PwaRegister.tsx` | Verejná hodnota z času buildu, ktorú klient používa na registráciu `/sw.js?v=…`; odvodená z dvoch predchádzajúcich, prípadne z git SHA. |
| `OMNIROUTE_PEER_STAMP_TOKEN` | Nie (auto) | _(auto pri spustení)_ | `src/server/authz/policies/management.ts` | Tajomstvo pre každý proces, ktoré dokazuje, že dôveryhodná pečať peer-IP pochádza z vlastného HTTP servera OmniRoute (`scripts/dev/peer-stamp.mjs`). Authz middleware dôveruje lokalite požiadavky (loopback/LAN obmedzenie LOCAL_ONLY trás) len vtedy, keď pečať nesie tento token. Generuje sa automaticky pri každom spustení — nechajte nenastavené; pripnite ho len pri viacprocesových konfiguráciách, ktoré musia pečať zdieľať. |
| `OMNIROUTE_TRUSTED_PROXIES` | Nie | _(nenastavené)_ | `scripts/dev/peer-stamp.mjs` | IP adresy alebo CIDR rozsahy reverzných proxy oddelené čiarkami, ktorých hlavičkám `X-Forwarded-For` / `X-Real-IP` môže zoznam povolených/zakázaných IP dôverovať — okrem loopback, adries privátnych sietí a Cloudflare edge, ktoré sú dôveryhodné vždy. Potrebné len pre proxy na akejkoľvek inej verejnej adrese; inak filter posudzuje vlastnú adresu tejto proxy. Obmedzovač relay pre klienta (`/api/v1/relay/chat/completions`) sa viaže na tú istú rozlúštenú adresu klienta, nikdy len na hlavičky presmerovania. |
### Príkazy na generovanie
```bash
# Vygenerujte všetky štyri tajomstvá naraz:
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]
> Nikdy necommitujte súbory `.env` so skutočnými tajomstvami do verziovacieho systému. `.gitignore` už `.env` vylučuje, no pred pushom to overte.
---
## 2. Úložisko a databáza
OmniRoute používa **SQLite** (prostredníctvom `better-sqlite3`) na všetku perzistenciu. Tieto premenné riadia umiestnenie dát, šifrovanie a životný cyklus.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | Koreňový adresár pre SQLite DB, zálohy a dátové súbory. Prepíšte ho pre Docker volumy alebo vlastné cesty. |
| `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(nenastavená)_ | `src/lib/dataPaths.ts` | Východisko pre ochranu DATA_DIR pri testoch/eval (#10428). Testy a Node eval/print sondy (`-e`/`--eval`/`-p`/`--print`, vrátane foriem `--eval=`/`--print=`) bez nastavenej `DATA_DIR` sa presmerujú do jednorazového dočasného adresára, aby nemohli otvoriť skutočnú databázu operátora; nastavte na `1` pre opätovné povolenie skutočného adresára. |
| `OMNIROUTE_BUILD_SHA` | _(nenastavená)_ | `src/lib/monitoring/buildSha.ts` | Git SHA bežiaceho artefaktu. Označuje ho `npm run build:release`; vložiteľné v kontajneroch, ktoré sa dodávajú bez sentinelu `dist/BUILD_SHA`. Zobrazuje sa ako `system.buildSha` na `/api/monitoring/health`. |
| `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Ref, voči ktorému brána proveniencie pack-artefaktu overuje SHA buildu (#10427). |
| `OMNIROUTE_ALLOW_CANARY_BUILD` | _(nenastavená)_ | `scripts/build/buildProvenance.ts` | Nastavte na `1`, aby sa povolilo zabalenie buildu, ktorého SHA nie je na release línii, pričom sa zaznamená ako zámerný canary namiesto zlyhania brány (#10427). |
| `OMNIROUTE_SMOKE_API_KEY` | _(nenastavená)_ | `scripts/ops/deploy-canary.mjs` | API kľúč pre smoke sondu canary nasadenia, odosielaný ako `Authorization: Bearer` na `/v1/chat/completions`. Používa ho iba deploy skript (#10429), nikdy nie server. Nesúvisí s premennými `OMNIROUTE_SMOKE_*` opt-in CLI smoke harnessu (`RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS` v `tests/integration/upstream-cli-smoke.int.test.ts`) — pozri [CLI integrácie → Reálny smoke sweep](../guides/CLI-INTEGRATIONS.md). |
| `OMNIROUTE_BUILDING` | _(nenastavená)_ | `src/lib/buildPhase.ts` | Signál fázy buildu (#10060): nastavuje sa na `1` skriptom `scripts/build/build-next-isolated.mjs` a dedí ho každý spawnovaný build worker, takže DB vrstva vráti no-op stub namiesto načítania natívneho addonu better-sqlite3 (ktorý spôsobí abort workera pri jeho ukončení). Nikdy sa nenastavuje pre bežiaci server. |
| `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Nastavte na `1` pre preskočenie voliteľnej kontroly prebuildu natívnych závislostí pri exotických vendored stromoch. Chýbajúca závislosť sa tým buildovateľnou nestane; používajte iba vtedy, keď sú natívne závislosti dodané mimo štandardného procesu. |
| `OMNIROUTE_DATA_DIR` | _(nenastavená)_ | `open-sse/executors/promptql/threadSticky.ts` | **Záložný alias** pre `DATA_DIR`, kontrolovaný iba vtedy, keď `DATA_DIR` nie je nastavená. Používa sa na nájdenie diskovej cache thread-sticky relácií PromptQL executoru (`
/promptql-thread-sessions.json`); ak nie je nastavená ani jedna premenná, cache zostáva iba v pamäti (neuchováva sa medzi reštartami). |
| `OMNIROUTE_PLUGINS_DIR` | _(nenastavená)_ | `src/lib/plugins/scanner.ts` | Adresár, ktorý číta **runtime skener pluginov** — a koreň, do ktorého inštaluje manažér pluginov — čím prepisuje predvolenú hodnotu odvodenú z home adresára (#11827). Namierte ho na bind-mountovaný strom pluginov v Dockeri/K8s namiesto presúvania HOME len kvôli zmene cesty skenovania (HOME riadi aj všetko ostatné správanie relatívne k home). Nenastavená = `~/.omniroute/plugins`, alebo `/tmp/.omniroute/plugins`, keď proces vôbec neexportuje home — tiché nenájdenie pluginov, ktoré táto premenná odstraňuje. Vyhodnotený adresár sa pri štarte jedenkrát zaloguje ako `scanner.dir_resolved` spolu so vstupom, ktorý zvíťazil. Iba na strane servera: CLI príkazové pluginy používajú vlastnú `OMNIROUTE_PLUGIN_PATH` (sekcia 9). |
| `STORAGE_ENCRYPTION_KEY` | _(prázdne = vypnuté)_ | `src/lib/db/encryption.ts` | Kľúč AES na úplné šifrovanie databázy SQLite v pokoji. Vygenerujte pomocou `openssl rand -hex 32`. |
| `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Označenie verzie šifrovacieho kľúča. Zvýšte ho pri rotácii kľúčov, aby bolo možné dešifrovať staré zálohy. |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | Ak je nastavené na `true`, preskočí rutinné zálohy súboru SQLite pred zápisom (uloženie/vymazanie cenníkov models.dev, zápisy nastavení). Manuálne zálohy a zálohy pred obnovením sa stále vykonávajú. **Nevypína** povinnú trvanlivú bezpečnostnú snímku spúšťača migrácií ani ochranu pred hromadnou migráciou existujúcej perzistentnej databázy. Nemanuálne zálohy sú obmedzené na maximálne raz za 60 minút. **Nastavenia → Úložisko** na dashboarde môže rutinné automatické zálohovanie vypnúť nezávisle. |
| `OMNIROUTE_SQLITE_SLOW_MS` | _(nenastavené/vypnuté)_ | `src/lib/db/adapters/slowDiagnostics.ts` | Milisekundy; hodnoty pod 1 alebo nečíselné zostávajú vypnuté; varuje najviac raz za 10 s; riadok logu obsahuje iba driver, operation a elapsedMs. |
| `OMNIROUTE_CRYPT_KEY` | _(nenastavené)_ | `src/lib/db/encryption.ts` | **Zastaraný alias** pre `STORAGE_ENCRYPTION_KEY`. Akceptuje sa ako náhradná možnosť, keď primárna premenná chýba. |
| `OMNIROUTE_API_KEY_BASE64` | _(nenastavené)_ | `src/lib/db/encryption.ts` | **Zastaraný alias** (forma kódovaná v Base64) akceptovaný ako náhradná možnosť. Pred použitím sa automaticky dekóduje. |
| `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(nenastavené)_ | `src/lib/db/core.ts` | Prepíše interval pravidelnej kontroly stavu SQLite (ms). Ak nie je nastavený, predvolené hodnoty sa odvodzujú od `NODE_ENV`. |
| `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(odstránené)_ | `src/lib/db/walMaintenance.ts` | **Odstránené.** Pravidelný `wal_checkpoint(TRUNCATE)` za behu môže znehodnotiť zdieľané mapovanie wal-indexu a zhavariť proces so signálom SIGBUS (#13973), preto plánovač už neexistuje. Premenná je inertná: kladná hodnota zapíše jednorazové varovanie o zastaraní, zatiaľ čo `0` alebo nenastavenie zostáva ticho. WAL udržiavajú kontrolné body PASSIVE (nižšie) a skracuje ho kontrolný bod pri vypnutí. |
| `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | Prepíše interval častých `wal_checkpoint(PASSIVE)` (ms). Udržiava čakajúce rámce WAL malé, aby kontrolné body zostali rýchle a súbor WAL zostal ohraničený medzi skráteniami pri vypnutí. `0` vypína. |
| `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Keď cyklus PASSIVE zistí, že súbor WAL presahuje túto veľkosť, spustí sa `wal_checkpoint(RESTART)`, aby WAL začal odznova bez prepisovania mapovaného wal-indexu. Kontrolné body v režime truncate za behu boli odstránené (pozri riadok `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS`). |
| `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Nastavte na `1`/`true`/`yes`/`on`, aby sa proces ukončil potom, čo kritický tlak na prostriedky pretrvá počas `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS`, čím môže supervízor (systemd `Restart=always`, politika reštartovania Dockeru) spustiť čistý proces namiesto nekonečného vracania odpovedí 503. |
| `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | Ako dlho musí kritický tlak pretrvávať, kým sa spustí ukončenie s automatickým reštartom. |
| `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Nastavte na `1`/`true`/`yes`/`on`, aby sa ignoroval celohosťovský `/proc/pressure/memory` (`psi_some` / `psi_full`), keď hlučný sused vyvolá odpovede 503, zatiaľ čo tento proces je v poriadku (#13124). Ochrany cgroup a haldy V8 zostávajú zapnuté. PSI sa tiež prestáva počítať ako dôkaz obmedzenia jadrom pre `cgroup_high`: súčet cgroup nad `memory.high` sa potom stane kritickým iba pri náraste `high`/`max` v `memory.events`. Bez `memory.events` sa zachováva surový pomer. |
| `OMNIROUTE_SQLJS_WASM_PATH` | _(automatická detekcia)_ | `src/lib/db/adapters/sqljsAdapter.ts` | Explicitná cesta (absolútna alebo relatívna voči cwd) k `sql-wasm.wasm` pri použití záložného adaptéra `sql.js` WASM. Ak nie je nastavená, zisťuje sa automaticky cez závislosti balíka a kandidátske rozloženia. |
| `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Počet dní, počas ktorých automatický čistiaci prechod uchováva kontrolné body, odkazované vstupné/výstupné/chybové súbory a riadok terminálnej (dokončenej/zlyhanej/zrušenej/exspirovanej) úlohy Batch API pred jej vymazaním. Nadobudne účinnosť až po zapnutí `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED`; zodpovedá retenčnému oknu výstupov vlastného Batch API od OpenAI. Neovplyvňuje operátorom spúšťanú trasu `DELETE /api/v1/batches/delete-completed`, ktorá zostáva zámerne bezpodmienečná (bez vekového filtra). |
| `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | Keď je nastavené na `true`, automatický čistiaci prechod odstraňuje terminálne úlohy Batch API (a ich kontrolné body) staršie ako `OMNIROUTE_BATCH_RETENTION_DAYS` a maže BLOB obsah nahraných súborov po uplynutí ich vlastnej hodnoty `expires_at`. Predvolene vypnuté: každá existujúca inštalácia ponecháva tieto údaje presne tak, ako doteraz, kým sa operátor nerozhodne zapnúť. Zároveň ide o prepínač funkcie upraviteľný z dashboardu — pozri `docs/reference/FEATURE_FLAGS.md` → Runtime. |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Nastavte na `1`, aby sa pri štarte úplne preskočila kontrola stavu databázy (DB healthcheck). Užitočné pre krátkodobé úlohy a integračné testy. |
| `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Nastavte na `1`, aby sa vynútilo zapnutie slučky kontroly stavu databázy, aj keby sa normálne preskočila (napr. pri krátkodobých úlohách). |
| `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | Nastavte na `1`, aby sa preskočilo zahrievanie natívneho runtime počas `npm install`. Užitočné pri CI/headless inštaláciách, kde je sqlite už zostavené. |
| `OMNIROUTE_MIGRATIONS_DIR` | _(automatická detekcia)_ | `src/lib/db/migrationRunner.ts` | Prepíše adresár, ktorý prehliada nástroj na spúšťanie migrácií. Užitočné pri distribúcii zabudovaných migrácií vo vlastných buildoch. |
| `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(nenastavené)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Dodatočné adresáre migrácií ako záznamy `namespace=dir` oddelené oddeľovačom ciest danej platformy (napr. `ee=/opt/app/enterprise/db/migrations`). Nájdené súbory sa zaznamenajú ako `-`, takže distribúcia dodávajúca vlastné migrácie sa nikdy nezráža s číselnými slotmi upstreamu. Chybný záznam, neplatný namespace alebo chýbajúci adresár vyvolá chybu pri štarte namiesto tichého preskočenia schémy. |
| `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Bezpečnostný prah pre hromadné čakajúce migrácie (#3416). Štart sa preruší, ak na existujúcej databáze čaká viac migrácií, než je táto hodnota (chráni pred vymazanou sledovacou tabuľkou). Na obnovenie staršej zálohy hodnotu zvýšte; nastavením na `0` kontrolu vypnete. |
| `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | Pracovný adresár pre release gate `check:install-upgrade`. Potrebuje približne 12 GB (dva ~3 GB inštalačné stromy plus tarball), takže nesmie bežať na malom tmpfs — na self-hosted runneri je `/tmp` 12 GB tmpfs v RAM a gate ho vyčerpal, čím orezal balík. |
| `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(predvolené v kóde)_ | `src/lib/spend/batchWriter.ts` | Interval flushovania (ms) pre dávkový zapisovač výdavkov/nákladov. Nižšie hodnoty znižujú zlučovanie zápisov; vyššie hodnoty znižujú záťaž databázy. |
| `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(predvolené v kóde)_ | `src/lib/spend/batchWriter.ts` | Maximálny počet záznamov o výdavkoch vo vyrovnávacej pamäti pred vynúteným flushom. Zvýšte pri nasadeniach s vysokým QPS; znížte, keď je dôležitejšia ohraničená pamäť. |
| `OMNIROUTE_PROXY_FETCH_DEBUG` | _(nenastavené)_ | `open-sse/utils/proxyFetch.ts` | Nastavte na `"true"`, aby sa na ceste Vercel relay vypisovali ladiace logy `[ProxyFetch]`. Predvolene vypnuté, aby neunikali náznaky smerovania. |
| `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(nenastavené)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Absolútna cesta k lokálnemu binárnemu súboru proxy jadra (súbor s názvom `sing-box`), ktorý skontroluje vygenerovanú konfiguráciu jadra predtým, než nahradí prevzatý súbor. Ak nie je nastavená, zapíše sa len `.generated` vedľa prevzatého súboru. Iba hostiteľské prostredie: nikdy sa neukladá do databázy ani sa neprijíma cez management API, pretože binárny súbor sa spúšťa. |
| `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(nenastavené)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Spôsob, akým sa lokálne proxy jadro znovu načíta po overenej výmene konfigurácie: JSON pole argumentov spustené bez shellu, alebo presne `external`, keď súbor aplikuje externý pozorovateľ. Nikdy sa neukladá do databázy ani sa nevystavuje cez API. |
| `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Nastavte na `"true"` alebo `"1"`, aby sa do podrobného riadka procesného logu `[ProxyEgress]` zahrnuli IP adresy klienta/výstupu a predpona účtu. Predvolene vypnuté, aby procesný log neprezradzal IP adresy ani predponu účtu. |
| `OMNIROUTE_DEBUG` | _(nenastavené)_ | `bin/cli/commands/quota.mjs` | Nastavte na `1`, aby CLI príkazy quota vypisovali do stderr časovaciu diagnostiku jednotlivých požiadaviek (`[omniroute] GET completed in Nms`). |
| `OMNIROUTE_HEALTHCHECK_PATH` | _(automaticky)_ | `scripts/dev/healthcheck.mjs` | Explicitná cesta, ktorú testuje kontrola stavu kontajnera. Ak nie je nastavená, sonda ju odvodí z `OMNIROUTE_BASE_PATH`; jej nastavením sa opäť aktivuje hĺbkový monitorovací endpoint. |
| `OMNIROUTE_DEBUG_COMPLETION` | _(nenastavené)_ | `bin/cli/commands/completion.mjs` | Nastavte na ľubovoľnú neprázdnu hodnotu, aby sa vypisovala diagnostika `[omniroute completion]` z ciest vyrovnávacej pamäte dopĺňania príkazového riadka (čítanie/obnovenie/zápis). Predvolene vypnuté — tieto vyrovnávacie pamäte zlyhávajú ticho, takže chýbajúca alebo poškodená vyrovnávacia pamäť nikdy nerozbije dopĺňanie tabulátorom. |
| `BATCH_RETRY_DURATION_MS` | `86400000` (24h) | `open-sse/services/batchProcessor.ts` | Maximálne okno opakovaní pre jednotlivé položky dávky (ms). Položky presahujúce toto trvanie sa označia ako neúspešné. |
| `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Základné oneskorenie (ms) pre exponenciálne spomaľovanie pri opakovaniach položiek dávky. |
| `BATCH_BACKOFF_MAX_MS` | `3600000` (1h) | `open-sse/services/batchProcessor.ts` | Horná hranica (ms) exponenciálneho spomaľovania medzi opakovaniami položiek dávky. |
| `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Maximálny počet súbežne spracovávaných dávok. Zvýšením zvýšite priepustnosť; nízka hodnota zabraňuje búrkam rate-limitov. |
> [!IMPORTANT]
> Pred zmenou existujúcej perzistentnej databázy nástroj na migráciu publikuje úplný,
> obsahovo adresovaný snímok v `DATA_DIR/db_backups/`. Publikovanie vyžaduje súborový
> systém, ktorý podporuje pevné odkazy v rámci toho istého súborového systému bez prepisovania
> a trvanlivú synchronizáciu súborov. Hostitelia POSIX navyše vyžadujú synchronizáciu
> adresárov; vo Windows môže Node odmietnuť popisovače adresárov, takže OmniRoute vynúti
> zápis publikovaného súboru a synchronizáciu položiek adresára považuje za best-effort.
> Ak pripojený `DATA_DIR` nemôže poskytnúť tieto záruky, spustenie zlyhá bezpečne (fail-closed)
> ešte pred aplikovaním migrácie. Presuňte `DATA_DIR` na zväzok s týmito primitívmi;
> na obídenie bezpečnosti migrácie nepoužívajte `DISABLE_SQLITE_AUTO_BACKUP`.
### Scenáre
| Scenár | Konfigurácia |
| ----------------------- | ----------------------------------------------------------------------------------- |
| **Lokálny vývoj** | Ponechajte všetky predvolené hodnoty. DB sa nachádza v `~/.omniroute/omniroute.db`. |
| **Docker** | `DATA_DIR=/data` + pripojte zväzok na `/data`. |
| **Šifrovanie v pokoji** | Nastavte `STORAGE_ENCRYPTION_KEY` + zálohujte kľúč! Jeho strata = strata dát. |
| **CI/Testovanie** | `DATA_DIR=/tmp/omniroute-test` — efemérne, šifrovanie nie je potrebné. |
---
## 3. Sieť a porty
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PORT` | `20128` | `src/lib/runtime/ports.ts` | Primárny port pre Dashboard UI aj API endpointy (režim jedného portu). |
| `OMNIROUTE_BASE_PATH` | _(prázdne = koreň)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | Podcesta URL na poskytovanie OmniRoute za reverzným proxy (nastavuje Next.js `basePath`; presmerovania autentifikácie zohľadňujú basePath). Napr. `/omniroute`. V Dockeri sa hodnota zapečie počas `docker build` (`ARG OMNIROUTE_BASE_PATH`); predzostavené root obrazy môžu použiť inú runtime hodnotu jednorazovo pri štarte kontajnera, pred spustením Next.js. Nastavte `NEXT_PUBLIC_BASE_URL` na verejný origin vrátane rovnakej podcesty. |
| `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(prázdne = koreň)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Prehliadačom viditeľná kópia `OMNIROUTE_BASE_PATH`, vložená inline počas buildu, aby dashboard pri zobrazení endpointov ukazoval `https://host/omniroute/v1` namiesto `https://host/v1`. Ak nie je nastavená, použije sa `OMNIROUTE_BASE_PATH`. Po zmene je potrebný rebuild (Next `basePath` sa určuje počas buildu). |
| `DASHBOARD_ALLOW_EMBED` | _(nenastavené = nikdy nie je vložiteľné do framu)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | Opt-in vkladanie HTML stránok do iframe. Ak nie je nastavené, každá route obsahuje `frame-ancestors 'none'` + `X-Frame-Options: DENY`. Nastavte na `vscode`, aby sa stránky (dashboard, prihlásenie, dokumentácia, landing) poskytovali s `frame-ancestors 'self' vscode-webview:` a bez `X-Frame-Options`, takže ich VS Code Simple Browser dokáže vykresliť (režim OmniCopilot `dashboardOpen: "editor"`). Plocha API (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, aliasy na koreňovej úrovni) si v každom prípade ponechá prísne hlavičky. Rozpoznáva sa iba `vscode` — `1`/`true` ho nezapnú. Nastavenie počas buildu: po zmene je potrebný rebuild (`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` pre obrazy; nastavenie na predzostavenej inštalácii nemá žiadny účinok). |
| `API_PORT` | _(nenastavené)_ | `src/lib/runtime/ports.ts` | Ak je nastavený, poskytuje proxy API `/v1/*` na tomto samostatnom porte. |
| `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | Adresa väzby (bind) pre API port. |
| `DASHBOARD_PORT` | _(nenastavené)_ | `src/lib/runtime/ports.ts` | Ak je nastavený, poskytuje Dashboard UI na tomto samostatnom porte. |
| `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(vypnuté)_ | `src/sse/utils/backpressure.ts` | Obmedzuje počet súbežne spracovávaných chat pripojení; požiadavky nad limit dostanú odpoveď `503` s hlavičkou `Retry-After`. Kladné celé číslo ochranu zapína; nenastavené/`0` ju vypína. |
| `OMNIROUTE_INSTANCE_ID` | _(nenastavené)_ | `src/shared/resilience/peerRouting.ts` | Stabilné, jedinečné ID tejto brány pri reťazení inštancií OmniRoute. Zapína kontroly prichádzajúcich peer slučiek. Povolené znaky: písmená, číslice, `.`, `_`, `:` a `-`; maximálne 64 znakov. |
| `OMNIROUTE_PEER_URLS` | _(unset)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | Základné URL adresy OmniRoute oddelené čiarkou, ktoré môžu prijímať `X-OmniRoute-Peer-Trace`. Metadáta partnera (peer) prijímajú iba explicitne povolené upstream URL adresy; všetci ostatní poskytovatelia zostanú nedotknutí. |
| `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Maximálny počet predtým navštívených inštancií OmniRoute akceptovaných pri reťazenej požiadavke (`1`-`32`). Opakujúce sa inštancie alebo vyčerpaný limit vrátia HTTP `508 Loop Detected`. |
| `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Publikovaný port na strane hostiteľa pre Dashboard v produkčnom režime Dockeru. |
| `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Publikovaný port na strane hostiteľa pre API v produkčnom režime Dockeru. |
| `OMNIROUTE_PORT` | _(unset)_ | `src/lib/runtime/ports.ts` | Má prednosť pred `PORT` pri spustení vo vnútri Electronu alebo iných obalov (wrapperov). |
| `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Port pre server živého monitorovania cez WebSocket v reálnom čase. |
| `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Väzobná (bind) adresa pre živý WebSocket server. Nastavte na `0.0.0.0` pre sprístupnenie v sieti LAN (nakonfigurujte tiež `LIVE_WS_ALLOWED_ORIGINS`). Pripojenia sa overujú pomocou session cookie dashboardu alebo Bearer API kľúča, ktorý má rozsah správy (`manage`/`admin`). |
| `LIVE_WS_ALLOWED_ORIGINS` | _(unset)_ | `src/server/ws/liveServer.ts` | Dodatočné originy oddelené čiarkou, ktorým je povolené otvárať živý WebSocket. Loopback originy dashboardu sú už predvolene povolené. |
| `LIVE_WS_ALLOWED_HOSTS` | _(unset)_ | `src/server/ws/liveServerAllowList.ts` | Dodatočné názvy hostiteľov oddelené čiarkou, povolené pre originy živého WebSocketu. Na rozdiel od `LIVE_WS_ALLOWED_ORIGINS` (úplné URL originy) sa porovnáva iba časť hostiteľa — užitočné pre nastavenia LAN/Tailscale. |
| `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(unset)_ | `src/hooks/useLiveDashboard.ts` | Verejná URL pre WebSocket živého dashboardu (na strane prehliadača). Nastavte, keď je pred WS serverom reverzné proxy alebo Cloudflare Tunnel (napr. `wss://ws.my-ai.com/live-ws`); prehliadač sa pripája tam namiesto `ws://hostname:20132`. Časť pathname sa používa aj ako cesta pre WebSocket upgrade (predvolené: `/live-ws`). |
| `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` and `scripts/start-ws-server.mjs` | Nastavte na `0` alebo `false` na vypnutie WebSocket servera v reálnom čase (predvolene zapnutý, viazaný na loopback). Prepínač CI/harness, ktorý vypína samostatný pomocný skript živého WebSocketu. |
| `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Rate limit relayu na dvojicu (token, IP), požiadavky/minútu. V pamäti, na inštanciu. `0` alebo záporná hodnota vypne bránu dimenzie IP (limit DB na token sa naďalej uplatňuje). |
| `NODE_ENV` | `production` | Jadro Next.js | Riadi podrobnosť logovania, ukladanie do vyrovnávacej pamäte, zobrazovanie detailov chýb a optimalizácie Next.js. |
| `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — predvolené v kóde) | `package.json` / Next.js 16 | Turbopack je predvolený bundler pre `npm run dev` a `npm run build` (2–3× rýchlejšie buildy, odmerané benchmarkom). Nastavte na `0` pre návrat k webpacku na Windowse, pri problémoch s natívnymi väzbami / kompatibilitou bundlera, **alebo na strojoch s obmedzenou RAM** — produkčné buildy Turbopacku na tejto línii verzií Next.js (16.2.x) sú v upstreame známe tým, že pri veľkých grafoch modulov dosahujú výrazne vyššie pamäťové špičky než webpack (oprava vypúšťania pamäte Turbopacku v Next 16.3 ešte nie je stabilná); fallback na webpack má špičky oveľa nižšie. Pozri #6409. **Buildy Docker obrazov majú predvolene `0` (webpack)**: `Dockerfile` deklaruje `ARG OMNIROUTE_USE_TURBOPACK=0`, takže pri holom `docker build .` (Railway a ďalší hostovatelia s nasadením na jedno kliknutie, príležitostní self-hosteri) nedôjde k OOM zabitiu na builderi s obmedzenou pamäťou; zadajte `--build-arg OMNIROUTE_USE_TURBOPACK=1` na zostavenie obrazu s Turbopackom. Pozri `docs/guides/DOCKER_GUIDE.md` → Prostriedky v čase buildu. |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(nenastavené)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Nastavte na `1`, aby ste preskočili kontrolu integrity SQLite pri spustení. Užitočné pre rýchlejší štart pri veľkých databázach. |
| `NOTIFY_SOCKET` | _(nenastavené)_ | systemd (protokol sd_notify) | Nastavuje ho systemd, keď proces beží pod servisnou jednotkou s integráciou sd_notify; OmniRoute ho číta (pozri `OMNIROUTE_DISABLE_SD_NOTIFY`) na odosielanie notifikácií READY/WATCHDOG. Používateľ ho nikdy nenastavuje. |
| `OMNIROUTE_DISABLE_SD_NOTIFY` | _(nenastavené)_ | `scripts/dev/systemd-notify.mjs` | Nastavte na `1`, aby ste vypili systemd sd_notify (Type=notify / WatchdogSec=), aj keď proces beží pod jednotkou systemd. Mimo systemd je notifikátor v každom prípade nečinný (no-op). |
| `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Interval (ms) plánovača kontroly stavu prihlasovacích údajov na pozadí. Minimum: 10000 (10 s). |
| `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | TTL (ms) pre stav prihlasovacích údajov uložený vo vyrovnávacej pamäti. |
| `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Nastavte na `1` alebo `true`, aby ste vypili pravidelné testovanie pripojení poskytovateľov na pozadí. Vyhľadávací poskytovatelia (SEARCH_VALIDATOR_CONFIGS v `src/lib/providers/validation/searchProviders.ts`, napr. `tavily-search`) sú zo sweepu vždy vylúčení — ich „validácia“ je skutočný spoplatnený upstream dotaz, takže nikdy nie sú kontrolovaní časovačom (#9970). |
| `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Nastavte na `1`, aby ste autentifikovanému volajúcemu umožnili požiadať o `/api/monitoring/health?deep=1`, čím sa raz za TTL odobere vzorka z rozhrania completions. Anonymní volajúci sondu nikdy nespustia. |
| `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | Prah zaseknutia (ms) pre záznamník slučky udalostí pri boote: zamrznutie dlhšie ako táto hodnota pri obnovení zaznamená jeden riadok `event loop stalled` so stavom pamäte a počtom prebiehajúcich operácií a zvýši počítadlo/maximum `eventLoopStall` na `/api/monitoring/health`. Nastavte na `0` na vypnutie; nečitateľná alebo záporná hodnota sa vráti na `5000`. |
| `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Adresa väzby (bind) pre dev/start server Next.js. Ak je nastavená, prepíše predvolenú hodnotu `0.0.0.0`. |
| `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Adresa viazania, ktorú runner Playwright používa pri spúšťaní Next.js. Predvolená hodnota je `127.0.0.1` pre hermetické testy. **Nepoužívajte ju pre `omniroute serve`** — namiesto toho použite `OMNIROUTE_SERVER_HOST` (shelly POSIX automaticky nastavujú `HOSTNAME` na názov stroja; súbor `.env` ho nedokáže prepísať). |
| `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | Adresa viazania pre `omniroute serve`. Zabraňuje kolízii s premennou `HOSTNAME` shellu POSIX (bash/zsh ju vždy nastavia na názov stroja). Ak nie je nastavená, použije sa `0.0.0.0`. (#6194) |
### Režimy portov
```
┌────────────────────────── Jeden port (predvolené) ─────────────────────────┐
│ PORT=20128 │
│ → Dashboard: http://localhost:20128 │
│ → API: http://localhost:20128/v1/chat/completions │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Rozdelené porty ────────────────────────────────┐
│ 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 │
│ Prípad použitia: API sprístupnené do LAN, Dashboard len na localhost. │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Docker – produkcia ─────────────────────────────┐
│ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │
│ → Mapuje porty kontajnera na porty hostiteľa v docker-compose.prod.yml. │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 4. Zabezpečenie a autentifikácia
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ------------------------------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Soľ kombinovaná s hardvérovými identifikátormi na vytvorenie odtlačku stroja. Kvôli izolácii ju zmeňte pri každom nasadení. |
| `OMNIROUTE_CLI_SALT` | _(nenastavené = náhodná soľ pre každú inštaláciu uložená v `/cli-token-salt.json`)_ | `src/lib/machineToken.ts` | HMAC soľ na odvodenie lokálneho CLI autentifikačného tokenu. Nastavenie tejto hodnoty zrotuje všetky CLI tokeny na stroji a vždy má prednosť pred uloženou soľou. Pozri `docs/security/CLI_TOKEN.md`. |
| `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Nastavuje príznak `Secure` na súboroch cookie relácie. **Musí byť `true`** pri prevádzke za HTTPS. |
| `REQUIRE_API_KEY` | `false` | Middleware API | Keď je `true`, všetky proxy požiadavky `/v1/*` musia obsahovať platný API kľúč. **Tento príznak nechráni `GET /v1/models`**, ktorý namiesto toho nasleduje režim prihlásenia do dashboardu (`requireAuthForModels`) — takže `401` z `/v1/models` NEznamená, že inferencia je chránená. Pozri `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). |
| `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Umožňuje odhaliť plné hodnoty API kľúčov v používateľskom rozhraní Dashboardu. Konfigurovateľné z Feature Flags v Dashboarde; bezpečnostné riziko na zdieľaných inštanciách. |
| `NO_LOG_API_KEY_IDS` | _(prázdne)_ | `src/lib/compliance/index.ts` | ID API kľúčov oddelené čiarkami, ktoré obchádzajú zaznamenávanie požiadaviek (súlad s GDPR). |
| `DEFAULT_RATE_LIMIT_PER_DAY` | _(nenastavené = neobmedzené)_ | `src/shared/utils/apiKeyPolicy.ts` | Záložný denný rozpočet požiadaviek aplikovaný na API kľúče, ktorých stĺpec `rate_limits` je null. Nenastavené alebo prázdne: žiadny implicitný limit (#2289, #11017). `0` je to isté (neobmedzené). Kladné celé číslo N povolí N/deň, 5N/týždeň, 20N/mesiac. Chybné neprázdne hodnoty sa vrátia k pôvodným oknám 1000/deň, 5000/týždeň, 20000/mesiac. |
| `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | Maximálna povolená veľkosť tela požiadavky. Odmietne dáta presahujúce tento limit. |
| `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Skutočné telá požiadaviek na tejto hranici alebo nad ňou získajú atomický procesovo-lokálny heavyweight admission lease pred parsovaním JSON (BYTE cesta, vrátane `POST /v1/responses`). Rovnaký únik zdravej rezervy z [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) ako pri structure-heavy; stále ohraničené `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110), takže [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) sa nevráti. |
| `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Pevný limit chat-route vynucovaný voči bajtom prečítaným počas obmedzeného príjmu, vrátane požiadaviek s chýbajúcou, neplatnou alebo nepoctivou hlavičkou `Content-Length`; prebytok dostáva `413`. |
| `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(nenastavené — bez limitu počtu požiadaviek)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** tento starý limit POČTU požiadaviek sa uplatňuje len vtedy, keď je explicitne nastavený. Ak ostane nenastavený (predvolené), prijímanie ťažkých chat požiadaviek je namiesto toho riadené cez `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — automaticky odvodený BAJTOVÝ rozpočet dimenzovaný z reálneho pamäťového stropu procesu v **jednom procese** (jedna V8 halda). Dve prekrývajúce sa ~750k-tokenové `/v1/responses` prerušia ~12 Gi haldy (#7849) — ide o varovanie **pamäťového rozpočtu**, nie pevné produktové maximum 2. Zdravý proces (halda pod pomerom zahodenia) MÔŽE prijať viac súbežných dlhých `/v1/responses` cez `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM`. Desiatky dlhých SSE klientov (40–50) sú halda + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110, nie „max 2“. Slepé zvýšenie tohto na „využiť hostiteľa“ znovu zavádza #7849. Násobte **haldy** pomocou **N nezávislých `DATA_DIR`** (#11024); nikdy `replicas>1` na jednom SQLite súbore. |
| `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(automaticky odvodené)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** prepísanie automaticky odvodeného bajtového rozpočtu príjmu (25 % prísnejšieho pamäťového stropu V8/cgroup delené 8-násobnou prechodnou amplifikáciou). Odvodené aj explicitné hodnoty sa obmedzujú na 8 MiB–2 GiB. Telo väčšie ako efektívny rozpočet okamžite zlyhá s `413 body_exceeds_budget`; súperenie medzi jednotlivo obsluhovateľnými telami zostáva opakovateľné `503`. 40–50 súbežných dlhých SSE klientov je tento rozpočet + halda, nie pevné „max 2“. Pred ladením si pozrite `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` na `/api/monitoring/health`. |
| `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | Pomer zahodenia pri tlaku haldy (`heapUsed / heap_size_limit`) pre prijímanie ťažkých požiadaviek BYTE a STRUCTURE (#10183, #10268, #10437). Súbežná ťažká požiadavka nad `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` sa zahodí s opakovateľným `503` len vtedy, keď je halda ZÁROVEŇ na tomto pomere alebo nad ním; na zdravej halde je namiesto toho prijatá cez healthy-headroom. |
| `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (predvolené `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Obmedzená dodatočná kapacita pre rýchlu cestu pri zdravej halde (#10437) na **oboch** STRUCTURE aj BYTE (`admitChatRequest`, vrátane tiel ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). Bez tohto obmedzenia by každá požiadavka s vyťaženou, ale zdravou haldou obchádzala prijímanie bez stropu. Keď je cez cestu zdravej haldy aktívnych toľko súbežných prenájmov, ďalšie vyťažené požiadavky prepadnú do ROVNAKEJ cesty obmedzeného čakania/zahodenia, ktorá sa používa pri skutočnom tlaku haldy. `0` obchádzanie úplne vypína. |
| `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Počet správ, ktorý klasifikuje chat požiadavku ako ťažkú, aj keď je jej telo pod bajtovým prahom. |
| `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Počet nástrojov, ktorý klasifikuje chat požiadavku ako ťažkú, aj keď je jej telo pod bajtovým prahom. |
| `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Konzervatívny odhad tokenov podľa veľkosti reťazca, ktorý klasifikuje požiadavku ako ťažkú; ide o proxy nákladov na prijatie, nie o fakturačnú tokenizáciu poskytovateľa. |
| `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (vypnuté) | `src/shared/middleware/chatBodyAdmission.ts` | Voliteľný opt-in limit histórie chatu. Predvolene vypnuté: počet správ je politika nasadenia, nie univerzálna vlastnosť požiadavky, a obmedzenie tu odmietne konverzácie terminálnym `413` skôr, než ich kompresná pipeline dokáže urobiť obsluhovateľnými. Rast haldy je obmedzený cez `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` a zahodenie pri tlaku haldy. Nastavte kladnú hodnotu na nasadeniach s obmedzenou pamäťou, ktoré potrebujú pevný strop; prebytok potom dostane štruktúrované `413` vyžadujúce kompakciu. |
| `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Pevný limit pre neprúdovú upstream odpoveď bufferovanú celú do pamäte. Po jeho prekročení sa upstream čítač zruší a požiadavka rýchlo zlyhá, namiesto toho, aby rástol neobmedzený reťazec, kým sa nevyčerpá halda. |
| `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Maximálny počet bajtov prenášaných z hlavičiek odpovede upstreamu. Po prekročení rozpočtu sa hlavičky s nižšou prioritou (napr. vlastné `x-codex-*`, `x-oai-request-id`) vynechajú, aby sa zostalo v rámci bežných limitov hlavičiek reverzných proxy. Nastavte vyššiu hodnotu, aby sa prenieslo viac metadát upstreamu za cenu väčšej veľkosti hlavičiek odpovede. |
| `CORS_ORIGIN` | _(nenastavené)_ | `src/server/cors/origins.ts` | Zastaralý zoznam povolených pôvodov CORS pre jediný pôvod. Pre nové nasadenia uprednostnite `CORS_ALLOWED_ORIGINS`. CORS slúži len pre prehliadačových API klientov pristupujúcich z iného pôvodu; autentifikované zápisy z dashboardu namiesto toho používajú požiadavky rovnakého pôvodu plus CSRF ochranu viazanú na reláciu. |
| `CORS_ALLOWED_ORIGINS` | _(nenastavené)_ | `src/server/cors/origins.ts` | Zoznam povolených pôvodov CORS oddelený čiarkami. Žiadny zástupný znak sa neodosiela, pokiaľ nie je explicitne nakonfigurované `CORS_ALLOW_ALL=true`. |
| `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Únikový ventil len pre vývoj, ktorý odráža ľubovoľnú hlavičku `Origin` prehliadača. Nepovoľujte v zdieľaných ani produkčných nasadeniach. |
| `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Zastaralý alias. Jeho prepínač v dashboardu (prepis v databáze) sa číta pred touto hodnotou prostredia; `false`, `0`, `no` alebo `off` v ktoromkoľvek z nich vypne kontroly hostiteľov rovnako ako `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`, aj keď je prepínač tohto flagu v dashboardu uložený ako vypnutý; iné hodnoty ponechajú ochranu na dvoch flagoch nižšie. |
| `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Vypína kontroly hostiteľov ochrany odchádzajúcich URL vrátane blokovania cloudových metadát (celý rozsah 169.254.0.0/16, metadata.google.internal) na cestách poskytovateľov, ktoré sa riadia režimom ochrany: validácia URL, zisťovanie modelov, základné URL uzlov poskytovateľov (vrátane vzdialených uzlov reranku) a test záložného proxy, okrem iných odchádzajúcich ciest súvisiacich s poskytovateľmi, ako je vzdialené sťahovanie obrázkov/médií. Umožňuje aj súkromné ciele webhookov, okrem koncových bodov cloudových metadát/link-local, ktoré zostávajú blokované aj pri zapnutom tomto flagu. Požiadavky na chat odosielané cez `BaseExecutor.execute()` si ponechávajú kontrolu cloudových metadát. Lokálni poskytovatelia fungujú s predvolenými hodnotami: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (predvolene `true`) už povoľuje lokálne a LAN URL na cestách validácie, zisťovania a uzlov poskytovateľov; test záložného proxy a súkromné ciele webhookov sa riadia len týmto flagom a blokujú lokálne/LAN hostiteľov, kým je vypnutý. Prepisuje `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false`. Hodnota uložená z prepínača v dashboardu má prednosť pred touto premennou. |
| `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Povoľuje URL poskytovateľov na lokálnych/súkromných adresách (127.0.0.1, localhost, LAN, súkromné rozsahy) pre validáciu poskytovateľov, zisťovanie modelov, chat a ostatné odchádzajúce cesty súvisiace s poskytovateľmi, ktoré režim ochrany riadi. **Predvolene `true`** (local-first): ochrana potom blokuje koncové body cloudových metadát — celý rozsah 169.254.0.0/16 plus známe hostnames metadát (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254). Nastavte `false` pre režim len verejných adries, ktorý blokuje aj súkromných a loopback hostiteľov. Ochrana kontroluje hostname alebo IP literál tak, ako je napísaný, pred akýmkoľvek DNS vyhľadávaním; v režime len verejných adries obal safe-fetch navyše hostname preloží a odmietne akúkoľvek súkromnú odpoveď. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` tieto kontroly vypína na cestách, ktoré uvádza jeho riadok. Vstavaní lokálni poskytovatelia, ako sú LM Studio, Ollama, vLLM, Llamafile a Triton, preskakujú všetky kontroly hostiteľov pre validáciu kľúčov a chat. Hodnota uložená z prepínača v dashboardu má prednosť pred touto premennou. (#5066) |
| `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | Umožňuje trasám `/v1/audio/*` (transkripcie, reč, preklady) používať uzol poskytovateľa kompatibilný s OpenAI hosťovaný mimo localhost. Predvolene vypnuté — smerovanie audia na vzdialeného hostiteľa mení identitu odchádzajúcej komunikácie a musí to byť explicitné rozhodnutie operátora. Loopback/súkromné uzly (localhost, 127.0.0.1, 172.16-31.x) sú vždy povolené a nie sú ovplyvnené. (#3963) |
| `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | Umožňuje `POST /v1/rerank` (a krok reranku cez loopback v pamäťovom engine) používať uzol poskytovateľa kompatibilný s OpenAI hosťovaný mimo localhost — zariadenie v LAN alebo Tailscale peer so spusteným TEI, Infinity, vLLM atď. Predvolene vypnuté — smerovanie na vzdialeného hostiteľa mení identitu odchádzajúcej komunikácie a musí to byť explicitné rozhodnutie operátora. Loopback uzly (localhost, 127.0.0.1, 172.16-31.x) sú vždy povolené a nie sú ovplyvnené. Základná URL vzdialeného uzla musí tiež prejsť politikou odchádzajúcich URL poskytovateľov (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`). |
| `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(prázdne)_ | `src/shared/network/localNodeHosts.ts` | Názvy hostiteľov (oddelené čiarkou alebo bielymi znakmi), ktoré smerovanie uzlov poskytovateľa považuje za lokálne — zvyčajne názov služby Docker/Compose rerankera, TEI alebo audio sidecaru vo vlastnej Docker sieti OmniRoute (`http://reranker:8080/v1`), takže uzol nepotrebuje napevno zadanú IP adresu kontajnera. Uvedené hostiteľské názvy sú oprávnené pre `/v1/rerank`, `/v1/audio/*` a lokálnu kontrolu stavu (health check) bez zapnutia `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` pre každý vzdialený uzol a volajú sa priamo — nikdy cez `HTTP(S)_PROXY` alebo pripnutý proxy pripojenia. Stále odosielajú API kľúč pripojenia. Akceptované sú iba názvy s jediným labelom a názvy `.internal`/`.local`; verejné FQDN, IP literály a názvy cloudových metadát sa s upozornením ignorujú. (#14635) |
| `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Keď je OIDC povolené, zakáže prihlásenie heslom, aby sa používatelia mohli autentifikovať iba prostredníctvom OIDC Single Sign-On. Akceptovaný je aj alias bez prefixu `OIDC_DISABLE_PASSWORD_LOGIN`; prednosť má Feature Flag na Dashboarde s rovnakým kľúčom. (#10889) |
| `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Alias bez prefixu premennej `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889). |
### Kontrolný zoznam hardeningu
```bash
# Bezpečnostné minimum pre produkciu:
AUTH_COOKIE_SECURE=true # Vyžaduje HTTPS
REQUIRE_API_KEY=true # Autentifikácia všetkých volaní proxy
ALLOW_API_KEY_REVEAL=false # Nikdy nezobrazovať kľúče v UI
CORS_ALLOWED_ORIGINS=https://your.domain.com
MAX_BODY_SIZE_BYTES=5242880 # Limit 5 MB
```
---
## 5. Sanitizácia vstupov a ochrana osobných údajov
OmniRoute poskytuje dvojvrstvovú ochranu: kontrolu injekcií na strane požiadaviek a odstraňovanie osobných údajov na strane odpovedí.
> **⚠️ Obmedzenia:** Tieto ochranné mechanizmy predstavujú detekciu založenú na heuristike s vynaložením _primeraného úsilia_, nie úplný firewall proti prompt injection ani systém DLP pre osobné údaje. Môžu viesť k falošne pozitívnym výsledkom (označenie neškodných promptov s personami/RPG) aj falošne negatívnym výsledkom (leetspeak, medzery, vzory v iných jazykoch než angličtina). Samy osebe nepostačujú na zabezpečenie súladu s predpismi. Predtým, než sa na ne spoľahnete, nastavte režimy a otestujte ich na svojej prevádzke.
### Strana požiadaviek: ochrana proti prompt injection
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| --------------------------------- | ------------------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Povolí kontrolu prichádzajúcich správ na prítomnosť vzorov prompt injection. |
| `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Pravidlá pre injekcie: `warn` = iba zaznamenať, `block` = odmietnuť požiadavku so stavom 400. Starší režim `redact` text injekcie **neodstraňuje**; na prepísanie osobných údajov v požiadavke použite `PII_REDACTION_ENABLED`. |
| `INJECTION_GUARD_MODE` | _(nenastavené)_ | `src/middleware/promptInjectionGuard.ts` | Starší alias pre `INPUT_SANITIZER_MODE` — rovnaké správanie. |
| `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | Minimálna závažnosť, ktorú režim `MODE=block` odmietne: `high` (predvolené), `medium` alebo `low`. Vzory so strednou závažnosťou sa iba monitorujú, pokiaľ prah neznížite. |
| `INJECTION_GUARD_BLOCK_THRESHOLD` | _(nenastavené)_ | `src/shared/utils/injectionSeverity.ts` | Starší alias pre `INPUT_SANITIZER_BLOCK_THRESHOLD` — rovnaké správanie. |
| `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | Ak je nastavené na `true`, odstráni osobné údaje z prichádzajúcich požiadaviek (nezávisle od režimu injekcií). |
| `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | Odstráni známe vzory API kľúčov a tajných tokenov z dát požiadaviek/odpovedí. Voliteľné; funguje obdobne ako `PII_REDACTION_ENABLED`. |
### Strana odpovedí: sanitizátor osobných údajov
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| -------------------------------- | ------------------ | ------------------------- | ---------------------------------------------------------------------------------------------- |
| `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Pred vrátením odpovedí LLM klientovi ich skontroluje na prítomnosť uniknutých osobných údajov. |
| `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = zamaskovať osobné údaje, `warn` = iba zaznamenať, `block` = zahodiť celú odpoveď. |
### Sanitizátor kontextu tokenizovanej trasy VS Code
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ----------------------------------- | ------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | Odstráni implicitný kontext aktívneho editora (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) z požiadaviek `/v1/vscode/[token]/*` a začierni obsah explicitne priložených citlivých súborov. Predvolene zabezpečené; nastavením na `0` túto funkciu zakážete. |
### Scenáre
| Scenár | Konfigurácia |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Podnikový súlad s predpismi** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (blokovanie injekcií + odstránenie osobných údajov z požiadaviek/odpovedí; režimy sú nezávislé) |
| **Iba monitorovanie** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — zaznamenáva, ale nikdy neblokuje |
| **Osobné použitie** | Ponechajte všetko zakázané — nulová réžia |
---
## 6. Politiky nástrojov a smerovania
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ----------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | Riadi prístup k nástrojom LLM / volaniu funkcií. `allowlist` = iba uvedené nástroje, `denylist` = všetky okrem uvedených, `disabled` = bez obmedzení. |
| `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Cesta k JSON súboru s pravidlami manipulácie payloadu (úpravy upstreamu podľa modelu/protokolu). |
| `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Interval opätovného načítania (ms) pre hot-reloading súboru s pravidlami payloadu. Minimum `1000`. |
| `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Opt-in: smeruje holé ID modelov `claude-*` od klientov Claude Code cez účet Claude Code OAuth namiesto vyžadovania prefixu poskytovateľa. Explicitné prefixy poskytovateľa majú stále prednosť. Konfigurovateľné aj cez prepínač na dashboarde na stránke poskytovateľa Claude. |
| `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | Nastavte `false`, aby OmniRoute prestalo samé pridávať Anthropic betu `redact-thinking-2026-02-12` (prázdne thinking bloky iba s podpisom). Požiadavky s `thinking.display: "summarized"` ju vynechávajú v každom prípade; beta vyjednaná klientom alebo opt-in `requestDefaults.redactThinking` kompatibilný s CC ju zachová. Požiadavky Claude OAuth si betu ponechajú (je súčasťou odtlačku Claude Code OAuth), pokiaľ nie je zapnutý feature flag `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED` (predvolene vypnutý). |
| `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Staršie správanie `resolveBareModelToConnectionDefault` (#4825): nahrádza akýkoľvek holý názov modelu hodnotou `defaultModel` vybraného pripojenia. Predvolene vypnuté, nahrádza sa iba `auto` alebo prázdny model; pri zapnutí zaznamená jedno upozornenie na dvojicu. |
| `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Limit súbežnosti podľa modelu pre round-robin kombá (#9100). Semafor round-robin komba bol pevne obmedzený na 3 súbežné požiadavky na model bez možnosti prekrytia, čím serializoval prevádzku s vyššou súbežnosťou za tento limit. Validované na `>= 1`, obmedzené na `<= 32`. |
| `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Nebezpečný opt-in, ktorý preskočí lokálnu kontrolu kontextového okna / maximálneho počtu vstupných tokenov OmniRoute pre priame požiadavky s jedným modelom. Upstream poskytovatelia stále vynucujú svoje skutočné limity; kompresia promptu a vlastný limit výstupných tokenov modelu zostávajú aktívne. Efektívna priorita je: prekrytie vo Feature Flags DB > premenná prostredia > predvolené; reštart nie je potrebný. |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(nenastavené)_ | `open-sse/services/selfHostedEntry.ts` | Inline YAML dokument `providers:` (RIC-738, D4). Keď je nastavený (s blokom `strategy:` alebo bez neho), `/v1/chat/completions` sa presmeruje na self-hosted zjednotený OpenAI-kompatibilný vstup namiesto cloud pipeline. Nenastavený (predvolené): trasa prechádza priamo do existujúcej cloud pipeline. Pozri `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`. |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(nenastavené)_ | `open-sse/services/selfHostedEntry.ts` | Cesta k YAML súboru obsahujúcemu rovnaký dokument `providers:` ako `OMNIROUTE_SELF_HOSTED_PROVIDERS`, pre nasadenia, ktoré uprednostňujú súbor pred inline env premennou. Ktorýkoľvek z nich aktivuje self-hosted vstup. |
| `OMNIROUTE_SELF_HOSTED_API_KEY` | _(nenastavené — otvorená trasa)_ | `open-sse/services/selfHostedEntry.ts` | Voliteľný zdieľaný API kľúč pre zjednotený self-hosted vstup (kostra D5, rezervovaná pre systém kvót podľa kľúča). Keď je nastavený, požiadavky musia obsahovať `Authorization: Bearer `. Nenastavený: trasa je otvorená, čo zodpovedá existujúcemu vzoru self-hosted lokálnych poskytovateľov (nasadenie v loopback/dôveryhodnej sieti). |
| `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(nenastavené)_ | `open-sse/services/routingStrategies.ts` | Inline YAML dokument `strategy:` pre deterministický smerovací engine (M2/RIC-740, D3) — blacklist/whitelist, cooldown breaker, cost-priority, latency-aware, fallback chain. Prepisuje inline blok `strategy:` vnorený v `OMNIROUTE_SELF_HOSTED_PROVIDERS`, a to pre každý kľúč samostatne. Pozri `docs/routing/DETERMINISTIC_ROUTING.md`. |
| `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(nenastavené)_ | `open-sse/services/routingStrategies.ts` | Cesta k YAML súboru obsahujúcemu rovnaký dokument `strategy:` ako `OMNIROUTE_SELF_HOSTED_STRATEGY`, pre nasadenia, ktoré uprednostňujú súbor pred inline env premennou. |
| `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(nenastavené)_ | `open-sse/services/conversationTracker.ts` | Nastavte `1`, aby sa zastavilo zhromažďovanie histórie konverzácií. `resolveConversationId()` vráti nesledovaný výsledok ešte pred čítaním SQLite alebo parsovaním histórie správ a vzťahuje sa to aj na session ID poskytnuté klientom. Spracovanie routing sessions zostáva nezmenené a existujúce záznamy sa neodstraňujú. Pre nasadenia, ktoré nepoužívajú zobrazenie konverzácií na dashboarde a chcú, aby tabuľka ťahov prestala rásť. |
| `OMNIROUTE_NADIR_API_KEY` | _(nenastavené)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | API kľúč pre opt-in stratégiu auto-combo routera `nadir`, ktorý sa použije, keď nie je nastavené vlastné `config.nadir.apiKey` komba. Voliteľné: volania bez kľúča spadajú do anonymnej úrovne Nadiru, ktorá má rate limit podľa IP, a preto nie je použiteľná za zdieľanou bránou. Citlivý údaj; ak komby používajú rôzne účty, uprednostnite pole pre jednotlivé komby. |
| `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Základný origin Nadir decision API, ktorý sa použije, keď nie je nastavené vlastné `config.nadir.baseUrl` komba. Potrebné len pre self-hosted Nadir, ktorý udržuje hlavičky promptov vo vašej vlastnej sieti. Koncové `/v1` sa toleruje a odstráni. |
| `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | Týždenné okno pre limity využitia USD na API kľúč (vynucovanie pri požiadavkách, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: týždeň končí pri najskoršom týždennom resete spomedzi upstream pripojení, ku ktorým má kľúč prístup, alebo ide o kĺzavých 7 dní, ak nie je známy žiadny. `calendar`: lokálny týždeň od pondelka 00:00 do nasledujúceho pondelka 00:00, rovnaký pre každý kľúč. `calendar` sa odporúča, keď jeden pool upstream účtov zdieľa veľa individuálne rozpočtovaných kľúčov. Neplatné hodnoty prepadnú na `provider`. |
| `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(časové pásmo procesu)_ | `src/lib/usage/apiKeyUsageLimits.ts` | Časové pásmo IANA (napríklad `Asia/Shanghai`), ktoré definuje pondelok 00:00 pre týždenné okno `calendar`. Nenastavené alebo neplatné: časové pásmo procesu OmniRoute (`TZ` hostiteľa alebo kontajnera, ktoré je v kontajnerových obrazoch často nenastavené, t. j. koordinovaný svetový čas). V režime `provider` sa ignoruje. |
| `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | Predvolený maximálny počet nástrojov povolených v požiadavke (predvolená hodnota OpenAI). Len kladné celé čísla; nenastavené alebo neplatné hodnoty ponechajú `128`. Poskytovateľ so známym/proaktívnym limitom (`grok-cli` 200, `nvidia` 1536) stále uplatňuje svoj vlastný strop — toto posúva len predvolený strop. |
| `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(zapnuté)_ | `open-sse/executors/syntxChat.ts` | Volanie nástrojov SYNTX.ai emulované promptom: nenastavené alebo `1`/`true`/`on`/`yes` vloží lokálny katalóg nástrojov do promptu; akákoľvek iná hodnota (napr. `0`) toto vloženie preskočí. |
---
## 7. URL adresy a cloudová synchronizácia
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | URL adresa na strane servera, ktorú interné synchronizačné úlohy používajú na volanie `/api/sync/cloud`. Ponechajte ju ako URL adresu spätnej slučky alebo kontajnera, aj keď je aplikácia verejne sprístupnená cez proxy. |
| `CLOUD_URL` | _(prázdne)_ | `src/lib/cloudSync.ts` | URL adresa koncového bodu cloudového prenosu (prémiová funkcia). |
| `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | Časový limit HTTP pre požiadavky cloudovej synchronizácie. |
| `OMNIROUTE_BUILD_PROFILE` | `full` | Konfigurácia zostavenia Webpack | Profil pri zostavení (nastavte na `minimal`, aby sa privilegované moduly fyzicky vylúčili z balíka). |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ samostatný výstup_ | `scripts/build/colocate-standalone.mjs` | Prepísanie adresára samostatného výstupu pri zostavení, ktorý používa krok spoločného umiestnenia po zostavení. Nejde o nastavenie za behu. |
| `OMNIROUTE_CLOUD_SYNC_SECRET` | _(prázdne)_ | `src/lib/cloudSync.ts` | Zdieľaný tajný kľúč používaný na overenie podpisu HMAC-SHA256 odpovedí cloudovej synchronizácie. |
| `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Nastavte na `true`, aby koncový bod cloudovej synchronizácie mohol prepísať lokálne prihlasovacie údaje. Predvolená hodnota je `false`. |
| `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Nastavte na `true`, aby sa odmietla nepodpísaná odpoveď cloudovej synchronizácie, keď nie je nakonfigurovaný žiadny lokálny tajný kľúč (#13679). Prítomný podpis sa vždy overuje — a vždy sa odmietne, keď premenná `OMNIROUTE_CLOUD_SYNC_SECRET` nie je nastavená — bez ohľadu na tento príznak. Od verzie v3.9 bude overovanie predvolene vynútené. |
| `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | Nastavte na `true`, aby sa bez potvrdenia používateľa použilo ako náhradné správanie jednokrokové „importovanie všetkého“ z verzie v3.8.5. |
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, ovládací panel, synchronizácia | Verejná URL adresa pre redirect_uri OAuth, odkazy ovládacieho panela a generované verejné URL adresy. Nastavte ju na stabilnú verejnú URL adresu, keď spätné volania OAuth alebo generované odkazy pre prehliadač musia používať kanonického hostiteľa reverzného proxy servera. |
| `NEXT_PUBLIC_CLOUD_URL` | _(prázdne)_ | Na strane klienta | Zrkadlo premennej `CLOUD_URL` na strane klienta. |
| `NEXT_PUBLIC_APP_URL` | _(nenastavené)_ | `src/shared/services/cloudSyncScheduler.ts` | Starší záložná možnosť pre `NEXT_PUBLIC_BASE_URL`. |
| `NEXT_PUBLIC_PORT` | _(nenastavené — použije sa `PORT`)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Záložný port na strane klienta pre zobrazované URL, keď nie je známy žiadny pôvod (SSR/testy); načítava sa pred `PORT`. |
| `OMNIROUTE_PUBLIC_BASE_URL` | _(nenastavené)_ | Prekladač verejného pôvodu, URL obrázkov | Pôvod OmniRoute určený pre prehliadač s najvyššou prioritou, ktorý sa používa na generovanie verejných URL a overovanie pôvodu prehliadača mimo ovládacieho panela. Nastavte ho, keď OpenWebUI alebo iné relé pristupuje k OmniRoute cez internú URL, ale prehliadač používateľa musí načítavať vygenerované médiá z LAN, tunela alebo verejného pôvodu. Neuvádzajte `/v1`. |
| `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(nenastavené)_ | `open-sse/config/providerPluginManifestUrl.ts` | Absolútna URL manifestu doplnku poskytovateľa oznamovaná klientom sidecar. Ak nie je nastavená, OmniRoute odvodí `/api/v1/provider-plugin-manifest` z pôvodu požiadavky alebo z HOST/PORT. |
| `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Protokol používaný pri odvodzovaní URL manifestu doplnku poskytovateľa z HOST/PORT bez pôvodu požiadavky. Nastavte ho na `https` za verejným proxy ukončujúcim TLS, keď nie je nastavená explicitná hodnota `OMNIROUTE_PROVIDER_MANIFEST_URL`. |
| `OMNIROUTE_TRUST_PROXY` | _(nenastavené)_ | `src/server/origin/publicOrigin.ts` | Voliteľný režim dôveryhodnosti pre hlavičky presmerovaného verejného pôvodu. Nenastavené = pri bezpečnostných rozhodnutiach nedôverovať hlavičkám `Forwarded` / `X-Forwarded-*`. `true` / `loopback` dôveruje presmerovanému hostiteľovi/protokolu iba z proxy na spätnej slučke označeného tokenom. `private` / `lan` dôveruje aj partnerským proxy v súkromnej sieti LAN a umožňuje mostu `API_PORT` zachovať hlavičku `X-Forwarded-For` takéhoto partnera. V produkcii uprednostnite explicitné nastavenie `NEXT_PUBLIC_BASE_URL`. |
| `KIE_CALLBACK_URL` | _(nenastavené)_ | `open-sse/utils/kieTask.ts` | Verejná URL spätného volania pre asynchrónne úlohy kie.ai. Prepísanie s najvyššou prioritou pred `OMNIROUTE_KIE_CALLBACK_URL` a `OMNIROUTE_PUBLIC_URL`. |
| `OMNIROUTE_KIE_CALLBACK_URL` | _(nenastavené)_ | `open-sse/utils/kieTask.ts` | Alternatívny zápis pre `KIE_CALLBACK_URL`. Použije sa ako záložná možnosť, keď primárna premenná nie je nastavená. |
| `OMNIROUTE_PUBLIC_URL` | _(nenastavené)_ | `open-sse/utils/kieTask.ts` | Verejný pôvod používaný na zostavenie URL asynchrónnych spätných volaní. Záložná možnosť s najnižšou prioritou pre spätné volania kie.ai; používa sa aj ako všeobecná verejná URL pre iné relé. |
| `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Koncový bod na zisťovanie kvóty CrofAI používaný stránkou Využitie. Prepíšte ho pre relé/testovacie dáta. |
| `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | Koncový bod 5-hodinovej/týždennej/mesačnej kvóty ClinePass používaný stránkou Využitie. Prepíšte ho pre relé/testovacie dáta. |
| `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Oficiálny koncový bod využitia OpenCode Go overovaný pomocou kľúča API, ktorý používa stránka Využitie. Prepíšte ho pre relé/testovacie dáta. |
| `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | Syntetizuje hlavičky identity OpenCode CLI (User-Agent, x-opencode-client/project, UUID požiadaviek/relácií) v upstream požiadavkách opencode-go/zen, ktoré klient neodoslal, aby ich Cloudflare pri výstupe z VPS prijal (#6210/#5997). Predvolene zapnuté od #10571; vypnete pomocou `false`/`0`/`no`/`off`. |
| `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | Predvolený User-Agent používaný, keď je zapnuté `OPENCODE_SYNTHESIZE_CLI_HEADERS` a nie je nastavené prepísanie `_USER_AGENT` pre konkrétneho poskytovateľa. Používa sa iba pre vykonávacie moduly opencode. Ak upstream pri požiadavke bez kľúča vyžaduje túto hodnotu, nakonfigurovaná hodnota, ktorá neobsahuje `opencode/= 1.17>`, sa namiesto odmietnutia nahradí touto predvolenou hodnotou. |
| `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (zapnuté) | `open-sse/utils/opencodeHeaders.ts` | Preposiela upstream poskytovateľom hlavičky klienta s atribúciou aplikácie (`x-session-id`, `x-title`, `http-referer`), takže požiadavka, ktorá vznikne v uvedenom spúšťacom prostredí, si pri prechode cez smerovač zachová svoju identitu (kontroly vydavateľa OpenRouter sa riadia týmito hlavičkami). `0`/`false`/`no`/`off` zachová identitu registra/operátora a zahodí hodnoty dodané klientom. Vlastné hlavičky nakonfigurované operátorom majú vždy prednosť pred hodnotami klienta. |
| `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | Hodnota syntetizovanej hlavičky `x-opencode-client`, keď je zapnuté `OPENCODE_SYNTHESIZE_CLI_HEADERS`. |
| `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | Hodnota syntetizovanej hlavičky `x-opencode-project`, keď je zapnuté `OPENCODE_SYNTHESIZE_CLI_HEADERS`. |
| `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(nenastavené)_ | `open-sse/config/providerErrorRules.ts` | Výsledná množina poskytovateľov, ktorých zlyhania upstreamu sa zoskupujú podľa odchádzajúcej IP adresy (jedna odpoveď 429 odstaví všetky súvisiace pripojenia zdieľajúce túto IP adresu). Ak hodnota nie je nastavená, použije sa predvolená hodnota bezplatnej úrovne `opencode,opencode-go,opencode-cli`; `none`/`off`/`false`/`0` kaskádu úplne vypne; zoznam oddelený čiarkami túto množinu nahradí. Platené programy sú na upstreame zoskupované podľa účtu a môžu túto funkciu bezpečne vypnúť (#9611). |
| `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(nenastavené)_ | `open-sse/config/providerErrorRules.ts` | Rozsah rotácie odchádzajúcich pripojení pri odmietnutí z dôvodu kvóty. Ak hodnota nie je nastavená, člen fondu sa pri odpovedi 429 odstaví iba pre vyššie uvedenú skupinu zoskupovanú podľa IP adresy; `all` rozšíri tento zápis na každého poskytovateľa, takže po prijatí obmedzenia rýchlosti prostredníctvom daného člena použije ďalší výber iné odchádzajúce pripojenie. Každá iná hodnota než `all` sa ignoruje. Vyžaduje `PROXY_SKIP_RECENTLY_FAILED` (predvolene zapnuté). Úložisko je indexované podľa odchádzajúcej adresy, nie podľa dvojice (poskytovateľ, adresa), takže rozšírená odpoveď 429 odstaví daného člena pre každého poskytovateľa až do uplynutia intervalu (5 min, ktorý sa zdvojnásobí na 15). Hodnota sa načítava pri každom výsledku odpovede, takže zmena sa uplatní bez reštartu. |
| `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(nenastavené)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Nastavením na `off` sa prestane upravovať telo požiadaviek OpenCode bez kľúča (príznak streamovania a zoznam nástrojov). Hlavičky sa naďalej používajú. Hodnota sa načítava pri každej požiadavke, takže zmena sa prejaví okamžite. |
| `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(nenastavené)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Názvy nástrojov oddelené čiarkami, ktoré sa majú deklarovať v požiadavke OpenCode bez kľúča, ktorá žiadne nástroje neobsahuje, ak pre daný model ešte neboli žiadne zaznamenané. Prázdna hodnota použije jeden zástupný nástroj, o ktorom model dostane pokyn, aby ho nevolal. Najviac 32 položiek, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; neplatné položky sa ignorujú. |
| `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | URL nastavení Ollama Cloud používaná na získavanie údajov o kvóte. Prepíšte ju pre sprostredkujúce služby/testovacie dáta. |
| `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Zdokumentovaný upstream koncový bod zostatku Ollama Cloud (`GET https://ollama.com/api/balance`, `Authorization: Bearer `). Načíta sa raz pri načítaní modulu. Používa sa ako prvý zdroj údajov o kvóte Ollama Cloud, keď má pripojenie kľúč API; získavanie údajov zo stránky nastavení pomocou cookie zostáva záložnou možnosťou. Prepíšte ho pre sprostredkujúce služby/testovacie dáta. |
| `OLLAMA_USAGE_COOKIE` | _(nenastavené)_ | `open-sse/services/usage.ts` | Cookie Ollama Cloud `__Secure-session` používaná na získavanie údajov o kvóte zo stránky nastavení. Citlivá hodnota; ak je nakonfigurovaných viacero účtov, uprednostnite pole pre konkrétne pripojenie na ovládacom paneli. |
| `OLLAMA_CLOUD_USAGE_COOKIE` | _(nenastavené)_ | `open-sse/services/usage.ts` | Alternatívna premenná prostredia pre cookie Ollama Cloud `__Secure-session`. Citlivá hodnota; ak je nakonfigurovaných viacero účtov, uprednostnite pole pre konkrétne pripojenie na ovládacom paneli. |
| `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(nenastavené)_ | `open-sse/services/usage.ts` | Alternatívna premenná prostredia pre súbor cookie `__Secure-session` služby Ollama Cloud, ktorá sa používa pred kratšími aliasmi. Obsahuje citlivé údaje; ak je nakonfigurovaných viacero účtov, uprednostnite pole pre jednotlivé pripojenia na riadiacom paneli. |
| `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | Koncový bod limitov používania služby CodeWhisperer (AWS Kiro). Prepíšte ho pre relay servery/testovacie dáta. |
> [!IMPORTANT]
> Pri nasadení za reverzným proxy serverom (nginx, Caddy) nastavte `NEXT_PUBLIC_BASE_URL` na svoju stabilnú verejnú URL adresu (napr. `https://omniroute.example.com`), keď musia spätné volania OAuth alebo generované verejné odkazy používať tento názov hostiteľa. Bez tohto nastavenia môžu spätné volania OAuth zlyhať, pretože hodnota redirect_uri sa nebude zhodovať, a generované verejné odkazy môžu odkazovať na interný pôvod kontajnera.
>
> Ponechajte `BASE_URL` ako internú adresu URL spätnej slučky/kontajnera pre úlohy medzi servermi. Pre interné načítania s prihlasovacími údajmi nepoužívajte hlavičku prehliadača `Origin` ani verejný názov hostiteľa.
>
> Autentifikované zápisy z riadiaceho panela nevyžadujú statickú verejnú základnú URL adresu: riadiaci panel odosiela nebezpečné požiadavky s rovnakým pôvodom a tokenom CSRF viazaným na reláciu. OmniRoute naďalej centralizuje overovanie verejného pôvodu pre integrácie prehliadača mimo riadiaceho panela: najskôr sa dôveruje explicitným premenným prostredia s verejnou URL adresou; nespracované hlavičky `Forwarded` / `X-Forwarded-*` sa ignorujú, pokiaľ nie je povolená premenná `OMNIROUTE_TRUST_PROXY` a bezprostredný proxy server nie je označený tokenom ako dôveryhodný. Nastavenia CORS nepoužívajte na opravu požiadaviek riadiaceho panela s rovnakým pôvodom; CORS je určený iba pre klientov prehliadača s odlišným pôvodom.
---
## 8. Odchádzajúci proxy
Smerujte volania upstream LLM poskytovateľov cez HTTP alebo SOCKS5 proxy na kontrolu odchádzajúcej prevádzky, geografické smerovanie alebo maskovanie IP adries.
`OMNIROUTE_UPSTREAM_HTTP2_ENABLED` má predvolenú hodnotu `true`. Nastavte ju na `false`, `0`, `no` alebo `off`, aby ste vynútili HTTP/1.1 na dispečeroch Undici v súboroch `open-sse/utils/proxyDispatcher.ts` a `open-sse/utils/proxyFetch.ts`: priama odchádzajúca komunikácia, HTTP(S)/SOCKS proxy, relaye a ich opakované pokusy s novými socketmi. Zachováva sa tak overovanie TLS certifikátov, autentifikácia proxy, limity pripojení a nastavenia keep-alive. Po zmene reštartujte OmniRoute, pretože dispečeri sa ukladajú do cache a relay agenti sa vytvárajú pri spustení. Tento prepínač neovplyvňuje TLS fingerprinting knižnice wreq ani transporty špecifické pre jednotlivých poskytovateľov.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------------------- | ------------------ | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Povoľuje SOCKS5 proxy agenta pre volania na upstream. Vypnete hodnotou `false`. |
| `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Strana klienta | Informovanosť na strane klienta o dostupnosti SOCKS5. |
| `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Štandardne zapnutý prepínač funkcie (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prednosť má prepísanie z databázy dashboardu). Proxy pooly a rotácia po jednotlivých účtoch prestanú znovu obsluhovať člena, ktorý práve zlyhal (odmietnutá TCP sonda alebo 429 cezeň), na dobu, ktorá sa pri každom opakovaní zdvojnásobuje až po strop. `false` obnoví jednoduchý výber. |
| `SELECTOR_CONTROL_ALLOWLIST` | _(nenastavené)_ | `src/lib/proxySubscription/selectorGuard.ts` | Zoznam povolených cieľov ovládania selektora lokálneho jadra mimo loopback (hostitelia alebo IP adresy oddelené čiarkou/medzerou, `*` otvorí LAN/súkromné rozsahy, ale nikdy nie metadata/link-local). Loopback cez http/https je predvolene povolený. Ak je v databáze dashboardu nastavená neprázdna hodnota, má prednosť pred touto premennou. |
| `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | Základná doba (ms) odloženia po 429, ktorá sa pri každom opakovaní zdvojnásobuje. Číta sa raz pri spustení. Ohraničené na `1000..3600000`; hodnota mimo rozsahu alebo nečitateľná hodnota sa s varovaním vráti na predvolenú. |
| `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | Strop (ms) odloženia po 429. Číta sa raz pri spustení. Ohraničené na `1000..3600000`; hodnota mimo rozsahu alebo nečitateľná hodnota sa s varovaním vráti na predvolenú. Ak je strop nižší ako základ, použije sa predvolená hodnota. Zníženie stropu skracuje aj zabúdanie sérií: záznamy sa po uplynutí platnosti vyčistia po `2 x max`. |
| `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | Voliteľný prepínač funkcie (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prednosť má prepísanie z databázy dashboardu). U poskytovateľov, ktorých kvóta je zoskupená podľa výstupnej adresy, zaradí člena poolu zdieľajúceho pozorovanú výstupnú adresu nedávno odmietnutého člena tesne pod zdravých členov. Iba poradie, nikdy nie vylúčenie. Vyžaduje `PROXY_SKIP_RECENTLY_FAILED`, ktorý vytvára signál odmietnutia, ktorý tento prepínač číta. |
| `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | Okno odrazu (ms), ktoré obmedzuje opakované upozornenia webhooku `proxy.set_aside` na člena poolu, takže nával odmietnutí odošle jednu udalosť. Číta sa pri každom odoslaní. Ohraničené na `1000..3600000`; hodnota mimo rozsahu alebo nečitateľná hodnota sa ticho vráti na predvolenú. |
| `HTTP_PROXY` | _(nenastavené)_ | Štandard Node.js | HTTP proxy pre volania na upstream. |
| `HTTPS_PROXY` | _(nenastavené)_ | Štandard Node.js | HTTPS proxy pre volania na upstream. |
| `ALL_PROXY` | _(nenastavené)_ | Štandard Node.js | Univerzálne proxy (podporuje `socks5://`). |
| `OMNIROUTE_PROXY_ECHO_URL` | _(nenastavené)_ | `src/lib/proxyEchoTarget.ts` | Pripne cieľ echo-IP používaný sondami výstupnej proxy na jednu URL. Ak nie je nastavená, sonda skúsi `api64.ipify.org` a potom `api4.ipify.org`, aby tunely len s IPv4 neboli hlásené ako mŕtve (#9694). |
| `NO_PROXY` | _(nenastavené)_ | Štandard Node.js | Názvy hostiteľov/IP adresy oddelené čiarkou, ktoré majú obísť proxy. |
| `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Maximálny počet súbežných soketov na jeden kešovaný HTTP/SOCKS proxy dispatcher. Dlho trvajúce SSE streamy, ako je Codex `/v1/responses`, potrebujú viac než jedno spojenie, keď viaceré požiadavky zdieľajú tú istú proxy na úrovni účtu. Hodnoty nad `256` sú obmedzené. |
| `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | Časový limit SOCKS5 handshake (pripojenia) v ms. Zvýšte ho, keď je jeden rezidenčný gateway hostiteľ vystavený vysokej súbežnosti (napr. 100 súbežných požiadaviek) — skutočný handshake môže pri saturovanom pooli prekročiť 10 s, aj keď je proxy dosiahnuteľná, čo sa inak prejaví ako falošné `[Proxy Fast-Fail] Proxy unreachable`. Obmedzené na `120000`. |
| `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | Keď `false` (predvolené), požiadavka, ktorej priradenú proxy sa nepodarí rozlíšiť, je **odmietnutá (fail-closed)** namiesto prepnutia na priame spojenie — zabraňuje úniku skutočnej IP. Nastavte `true` na obnovenie starého režimu DIRECT fallback. |
| `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | Falšuje TLS odtlačok pomocou wreq-js (napodobňuje Chrome 124). Pôsobí proti blokovaniu JA3/JA4. |
| `TLS_FINGERPRINT_PROVIDERS` | _(nenastavené)_ | `open-sse/utils/proxyFetch.ts` | Zoznam povolených poskytovateľov oddelených čiarkou pre nové smerovanie TLS cez proxy (`open-sse/utils/proxyFetch.ts`). Priame TLS si pri nenastavení ponecháva pôvodné správanie; cez most odtlačkov Chrome-124 sú smerovaní len títo poskytovatelia. Groq (`api.groq.com`) je vylúčený aj vtedy, keď zoznam nie je nastavený, pretože Chrome JA3 spúšťa Cloudflare 1010, zatiaľ čo natívne undici sa k API dostane. |
| `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Umožní kontextu prehliadača Claude Turnstile Playwright ignorovať chyby HTTPS certifikátov. |
### Scenáre
| Scenár | Konfigurácia |
| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **SOCKS5 cez SSH tunel** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` |
| **Firemná HTTP proxy** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` |
| **Ochrana proti odtlačkom** | `ENABLE_TLS_FINGERPRINT=true` — vyžaduje `wreq-js` (súčasť balíka) |
| **Kontrolovaný výstup / bez priameho prístupu** | Ponechajte `PROXY_FAIL_OPEN=false` (predvolené). Požiadavky tvrdne zlyhajú, keď je proxy nedostupná, namiesto úniku cez priame spojenie. |
| **Starý režim / vývoj — povoliť priamy fallback** | `PROXY_FAIL_OPEN=true`. Obnoví správanie spred zabezpečenia: priame spojenie sa použije, keď rozlíšenie proxy zlyhá. |
> **Poznámka (obídenie validácie NVIDIA — #3226):** Endpoint validácie API kľúča
> NVIDIA zamrzne, keď je smerovaný cez globálny fetch s patchom proxy/TLS
> (undici dispatcher → 504).
> `src/lib/providers/validation.ts::directHttpsRequest()` zámerne obchádza
> patch proxy pre toto jedno validačné volanie pomocou `safeOutboundFetch({ bypassProxyPatch: true })`.
> Toto je zdokumentovaná, presne vymedzená výnimka — **neovplyvňuje** výstup chatu/využitia.
> Rozsah obídenia je fixovaný súborom `tests/unit/proxy-bypass-scope-guard-3226.test.ts`.
---
## 9. Integrácia CLI nástrojov
Určuje, ako OmniRoute vyhľadáva a spúšťa CLI sidecar nástroje (Claude Code, Codex atď.).
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| --------------------------------- | -------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = hľadať v systémovej PATH; `manual` = používať iba explicitné cesty. |
| `CLI_EXTRA_PATHS` | _(nenastavené)_ | `src/shared/services/cliRuntime.ts` | Dodatočné položky PATH pre vyhľadávanie CLI binárnych súborov (oddelené dvojbodkou). |
| `CLI_CONFIG_HOME` | _(nenastavené)_ | `src/shared/services/cliRuntime.ts` | Prepíše domovský adresár pre čítanie CLI konfigurácií (`~/.claude`, `~/.codex`). Musí byť absolútna a vnútri domovského adresára procesu — **alebo**, v kontajneri, bind-mountovaná cesta (tak funguje `/host-home`). Všetko ostatné sa vráti k domovskému adresáru. |
| `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | Povolí OmniRoute zapisovať CLI konfiguračné súbory (obnovenie tokenu, údaje relácie). Nastavte na `false`, aby každý zápis CLI konfigurácie zlyhal s explicitnou chybou "writes disabled". |
| `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Claude CLI. |
| `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Codex CLI. |
| `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Droid CLI. |
| `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru OpenClaw CLI. |
| `CLI_CURSOR_BIN` | `agent`, potom `cursor` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru agenta Cursor. Bez nej sa detekcia najprv pokúsi o `agent` a potom prejde na `cursor`. |
| `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Cline CLI. |
| `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru 5dive CLI. |
| `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | Systémový stavový adresár 5dive (autentifikačné profily vo vlastníctve roota); zrkadlí predvolenú hodnotu STATE_DIR samotného 5dive. |
| `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Continue CLI. |
| `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Qoder CLI. |
| `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Qwen Code CLI. |
| `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Aider CLI. |
| `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Goose CLI. |
| `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Google Gemini CLI — iba detekcia a kontroly stavu na strane servera; `omniroute run gemini` vyhľadá binárny súbor `gemini` zo systémovej PATH. |
| `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Kilo Code CLI. |
| `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru OpenCode CLI. |
| `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Hermes. Zdieľajú ju obe katalógové položky (`hermes` a `hermes-agent`). |
| `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru ForgeCode CLI. |
| `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru jcode CLI. |
| `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru DeepSeek TUI. |
| `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru CodeWhale CLI. |
| `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Smelt CLI. |
| `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Pi (pi-coding-agent). |
| `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Crush CLI. |
| `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru agenta Oh My Pi (`omp`). |
| `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Letta CLI. |
| `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Prime Agent (Prime Intellect). |
| `CLI_WINDSURF_BIN` | _(žiadny)_ | `src/shared/services/cliRuntime.ts` | Vlastná cesta k binárnemu súboru Windsurf. Windsurf sa dodáva **bez predvoleného príkazu** — detekcia binárneho súboru zostáva vypnutá, kým sa táto hodnota nenastaví. |
| `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Vlastná cesta k binárnemu súboru Devin CLI (v3.8.0). Používa ju executor Windsurf/Devin. |
| `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | `ide_version` pre Devin Desktop. Prepísania musia používať formát `x.y.z`; neplatné hodnoty sa vrátia na overenú predvolenú hodnotu. |
| `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | `extension_version` pribaleného Codeium/language-servera, odlišná od `ide_version` Desktopu. Prepísania musia používať `x.y.z`; neplatné hodnoty použijú pribalenú predvolenú hodnotu. |
| `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Prepísanie Devin CLI iba pre agentický bridge. Executor akceptuje iba lokálny upstream ACP stdio. |
| `DEVIN_AGENTIC_HOME` | _(povinné)_ | `open-sse/executors/devin-cli-agentic.ts` | Absolútny izolovaný domovský adresár pre agentický podproces Devin; akceptované cesty bridge sú `/home/bridge` a cesty `.sandbox` viazané na úlohu (vo Windows `C:\...\.sandbox\...`). |
| `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Maximálne trvanie jedného kola Devin ACP, kým bridge ukončí podriadený proces a vráti explicitný timeout. |
| `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Alias hlavného modelu Claude Code pre izolovaný bridge. Živý harness nahradí príklad modelom vráteným aktuálnym účtom Devin. |
| `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izolovaného bridge použitý, keď Claude Code požiada o svoj predvolený model Sonnet. |
| `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izolovaného bridge použitý, keď Claude Code požiada o svoj predvolený model Opus. |
| `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izolovaného bridge použitý, keď Claude Code požiada o svoj predvolený model Haiku. |
| `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izolovaného bridge použitý pre podagentov Claude Code. |
| `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Voliteľné prepísanie API na správu seatov Codeium, ktoré používa kvóta Devin CLI (`GetUserStatus`). |
| `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Prepísanie absolútnej cesty k binárnemu súboru CLI Augment (Auggie) používanému lokálnym poskytovateľom `auggie`. Ak nie je nastavené, použije sa `CLI_AUGGIE_BIN` a potom vyhľadávanie v PATH. |
| `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Alias pre prepísanie cesty k binárnemu súboru CLI Augment (Auggie) (kontroluje sa po `AUGGIE_BIN`). |
| `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Binárny súbor používaný stdio klientom lokálneho poskytovateľa `zcode`. Ak nie je nastavený, použije sa `zcode` z PATH. |
| `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | Pole JSON (≤16 reťazcov) dodatočných argumentov odovzdaných binárnemu súboru `zcode` pri spustení cez `cliTools`. |
| `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | Pracovný adresár podprocesu aplikačného servera ZCode. |
| `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | Prepísanie ID poskytovateľa odosielaného aplikačnému serveru. |
| `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | Koreňový adresár runtime aplikačného servera ZCode (kde sa nachádzajú pribalené `node` a `zcode-server.cjs`). |
| `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | Spustiteľný súbor Node používaný na hosťovanie aplikačného servera ZCode. |
| `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | Vstupný skript aplikačného servera používaný na hosťovanie servera ZCode. |
| `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | Časový limit spustenia (ms), po ktorom sa spustenie aplikačného servera ZCode považuje za neúspešné. |
| `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | Časový limit RPC na požiadavku (ms) pre volanie aplikačného servera ZCode. |
| `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Maximálne trvanie (ms) jedného kola ZCode, po ktorom ho supervízor preruší z dôvodu časového limitu. |
| `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | Interval opakovaného dotazovania (ms) na dokončenie kola ZCode. |
| `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | Domovský adresár Hermes Agent, kde OmniRoute číta a zapisuje konfiguráciu Hermes CLI. Zodpovedá premennej prostredia, ktorú inštalátor Hermes PowerShell nastavuje vo Windows (`%LOCALAPPDATA%\hermes`). |
### Automatická synchronizácia CLI profilov
Tieto príznaky funkcií sú nepovinné (opt-in) a predvolene vypnuté. Môžete ich
prepínať aj z panela CLI Code.
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ------------------------------------- | ---------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Po synchronizácii modelov poskytovateľa automaticky prepíše profilové súbory `~/.codex/*.config.toml` z aktuálneho katalógu. Vyžaduje `CLI_ALLOW_CONFIG_WRITES`; nikdy nemení aktívnu/predvolenú konfiguráciu Codex, autentifikáciu, nastavenia Codex-lb ani výber poskytovateľa. |
| `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Po synchronizácii modelov poskytovateľa automaticky prepíše profilové súbory Claude Code `~/.claude/profiles//settings.json` z aktuálneho katalógu. Vyžaduje `CLI_ALLOW_CONFIG_WRITES`; nikdy nemení aktívnu/predvolenú konfiguráciu Claude, autentifikáciu ani výber poskytovateľa. |
### Príklad Docker
```bash
# Pripojte hostiteľské binárne súbory do kontajnera a oznámte OmniRoute, kde sa nachádzajú:
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` sa uplatní len vtedy, keď je cesta skutočne bind-mountovaná z
hostiteľa — spárujte ju s mountmi ako `~/.codex:/host-home/.codex:rw` (pozrite
profil `host` v `docker-compose.yml`). Cesta, ktorá nie je ani v domovskom
adresári používateľa kontajnera, ani bind mount, sa ignoruje, pretože zápis do
nej by sa pri opätovnom vytvorení kontajnera zahodil.
Obraz beží ako `USER node`, takže nepripojený `/root` **nie je** platné
prepísanie.
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ---------------------------------------- | --------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_CONTAINER` | _(automaticky)_ | `src/shared/utils/containerEnv.ts` | Vynúti detekciu kontajnera zapnutú (`1`/`true`) alebo vypnutú (`0`/`false`). Potrebné len na runtime prostrediach, ktoré automatická detekcia nezachytí. |
| `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | Povolí zápisy konfigurácie CLI nástrojov aj do cesty kontajnera, ktorá nie je mountovaná. Ekvivalent v CLI je `--allow-container-write`. |
| `DOCKER_UPDATE_TRIGGER_FILE` | nenastavené | `src/lib/system/autoUpdate.ts` | Len pre Docker image: tlačidlo **Aktualizovať teraz** na dashboarde zapíše JSON požiadavku do tohto súboru (musí byť vnútri `DATA_DIR`), podľa ktorej watcher na strane hostiteľa stiahne a znovu vytvorí kontajner. Pozrite [Príručku Docker](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker). |
### Pomocné premenné CLI binárky (`omniroute`)
Tieto premenné ladía vlastné správanie CLI binárky `omniroute` (nie detekciu
sidecaru uvedenú vyššie).
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ------------------------------------- | --------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_LANG` | _(systém)_ | `bin/cli/i18n.mjs` | Vynúti jazyk výstupu CLI. Lokalita BCP-47 (napr. `en`, `pt-BR`). Prepíše systémové premenné prostredia lokality (LC_ALL, LC_MESSAGES). |
| `OMNIROUTE_SHOW_LOG` | _(nenastavené)_ | `bin/cli/runtime/processSupervisor.mjs` | Nastavte na `1`, aby sa stdout/stderr servera presmerovali do terminálu v supervízovanom režime. Ekvivalent prepínača `--log` pri `omniroute serve`. |
| `OMNIROUTE_CLI_TOKEN` | _(nenastavené)_ | `bin/cli/api.mjs` | Token strojovej autentifikácie vložený ako hlavička `x-omniroute-cli-token`. Automaticky sa generuje v úlohe 8.12. |
| `GEMINI_CLI_HOME` | _(nenastavené)_ | `bin/cli/commands/setup-gemini.mjs` | Trvalý koreň domova Gemini; jednorazové spustenie použije dočasný izolovaný domov. |
| `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Čakacia doba v milisekundách pred núteným ukončením podriadeného procesu CLI, ktorému bol poslaný signál. |
| `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(nenastavené)_ | `bin/omniroute.mjs` | Nastavte na 1 spolu s explicitným DATA_DIR, aby sa preskočil súbor prostredia dátového adresára predvoleného používateľa. |
| `OMNIROUTE_SYNC_TOKEN` | _(nenastavené)_ | `bin/cli/commands/sync.mjs` | Synchronizačný token pre `omniroute sync bundle` (`GET /api/sync/bundle` akceptuje iba synchronizačný token, nie API kľúč). Ekvivalent `--token`. |
| `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | HTTP timeout na jeden pokus (ms) pre požiadavky CLI → server. |
| `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | Maximálny čas (ms), počas ktorého CLI čaká na health endpoint servera, kým vypíše upozornenie na timeout. Užitočné pri pomalých studených štartoch (napr. Windows). Dá sa nastaviť aj cez `--ready-timeout`. |
| `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | Nastavte na `1`, aby sa počas CLI príkazov vypisovala diagnostika retry/backoff na stderr. |
| `OMNIROUTE_PLUGIN_PATH` | _(nenastavené)_ | `bin/cli/plugins.mjs` | Vlastný adresár pre vyhľadávanie CLI pluginov (balíky `omniroute-cmd-*`). Ak nie je nastavený, predvolene sa použije `~/.omniroute/plugins/`. Iba pre CLI — nikdy sa nedostane k serverovému skeneru pluginov, ktorý určuje `OMNIROUTE_PLUGINS_DIR` (sekcia 2). |
| `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(nenastavené)_ | `bin/omniroute.mjs` | Pri nastavení na ľubovoľnú neprázdnu hodnotu potlačí upozornenie CLI na aktualizáciu pri ukončení procesu. Upozornenie zostáva nezávisle vypnuté aj v CI, tichom režime a režimoch netextového výstupu. |
| `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(odvodené)_ | `bin/cli/commands/doctor.mjs` | Liveness URL, ktorú sondá `omniroute doctor`. Programová voľba `livenessUrl` má prednosť; inak sa táto hodnota použije doslovne. Ak nie je nastavená, CLI odvodí endpoint `/api/health/degradation` lokálneho dashboardu. |
| `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | Cesta ku katalógu poskytovateľov používaná CLI príkazmi poskytovateľov. Programová voľba `catalogPath` má prednosť. Absolútne cesty sa použijú tak, ako sú; relatívne cesty sa vyhodnotia od koreňa projektu. Ak nie je nastavená, CLI použije adresár konštánt poskytovateľov, so záložným legacy súborom `providers.ts`. |
| `OMNIROUTE_PROVIDER_TEST_MODEL` | _(predvolené poskytovateľa)_ | `bin/cli/provider-test.mjs` | Globálny záložný model pre CLI testy pripojenia poskytovateľov. Priorita je: nakonfigurovaný model pripojenia, prepísanie modelu špecifické pre poskytovateľa, táto hodnota a potom vstavaný testovací model poskytovateľa. |
---
## 10. Integrácie interného agenta a MCP
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_BASE_URL` | automatická detekcia | `open-sse/mcp-server/server.ts` | Explicitná URL adresa, cez ktorú MCP/A2A nástroje dosiahnu OmniRoute. Prepisuje automatickú detekciu localhost. |
| `OMNIROUTE_API_KEY` | _(nenastavené)_ | MCP/A2A moduly | API kľúč pre interné volania MCP nástrojov a A2A zručností. |
| `OMNIROUTE_API_KEY_ID` | _(nenastavené)_ | `open-sse/mcp-server/audit.ts` | ID kľúča pre priradenie v zázname auditu MCP. |
| `ROUTER_API_KEY` | _(nenastavené)_ | Zastaralé | Zastaralý alias pre `OMNIROUTE_API_KEY`. |
| `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Počet dní histórie A2A úloh uchovávaných v lokálnej databáze, kým denné prečistenie riadok nevymaže. Pri nenastavení, nečíselnej hodnote alebo `<= 0` sa použije predvolená hodnota `30`. |
| `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | Vypínač (kill-switch) pre funkciu pozorovateľnosti A2A memory-hits. Nastavte na `0`, aby sa vyhľadávanie v pamäti pre úlohu úplne preskočilo; akákoľvek iná hodnota (vrátane nenastavenej) ponecháva funkciu zapnutú. |
| `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Povolí offline/lokálny endpoint Issue Agenta pre zaznamenaný triage. Ponechajte vypnuté, pokiaľ explicitne nespúšťate lokálne workflow zaznamenaného triage. |
| `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(nenastavené)_ | `src/lib/issueAgent/execution.ts` | Časový limit (ms) pre jedno spustenie zaznamenaného triage Issue Agenta. Obmedzený na interné maximum; pri nenastavení alebo neplatnej hodnote sa použije vstavaná predvolená hodnota. |
| `OMNIROUTE_CONTEXT` | _(aktívny kontext)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | Kontext/profil CLI vzdialeného režimu pre príkazy `omniroute`; prepisuje aktívny kontext v lokálnom úložisku kontextov. Ekvivalent `--context `. |
| `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | Zakáže voliteľný backend OS kľúčenky `keytar` pre poverenia CLI kontextu. Keď je zapnuté, poverenia zostávajú v `config.json` s režimom `0600` a CLI vydá jednorazové upozornenie na núdzový režim; určené na zámernú headless/kontajnerovú prevádzku. |
| `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | Vynucuje riadenie prístupu založené na rozsahoch pri volaniach MCP nástrojov. |
| `OMNIROUTE_MCP_SCOPES` | _(všetky)_ | `open-sse/mcp-server/server.ts` | Rozsahy oddelené čiarkou: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. |
| `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Komprimuje popisy MCP nástrojov pred serializáciou manifestu. Hodnoty na zapnutie: `1`, `true`, `on`. |
| `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Algoritmus/profil kompresie. Hodnoty na vypnutie: `0`, `false`, `off`. |
| `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | Rozpočet na prerušenie (ms) pre interné manažérske čítania MCP servera (stav, odolnosť, kombinácie, kvóta, využitie). |
| `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Časový rozpočet na prerušenie (ms) pre MCP skoky, ktoré čakajú na poskytovateľa (`route_request`, `web_search`, `web_fetch`). |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Maximálny počet inštancií indexu lokálneho korpusu uchovávaných v pamäti (LRU, jedna na každý indexovaný koreňový adresár). Obmedzené minimálne na `1`. |
| `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Interval synchronizácie katalógu modelov v hodinách. |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Interval dotazovania na rate-limity a kvóty poskytovateľa. |
| `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Odstup (ms) medzi po sebe idúcimi načítaniami OAuth kvót pri hromadnej synchronizácii; OAuth pripojenia sa načítavajú po jednom, aby sa predišlo zahlteniu upstreamu. `0` toto správanie vypne (súbežné načítavanie). |
| `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Minimálny interval (ms) medzi po sebe idúcimi načítaniami upstream kvót na ceste preflight/monitoringu jednotlivých požiadaviek; rozloží súbežné sieťové volania, aby mnoho účtov na jednej IP nezahltilo upstream. Zapojené do načítačov kvót Codex (`/wham/usage`), DeepSeek, Bailian (obe miesta načítania), OpenCode a Crof (#6009, #6911). Všeobecná dispečerská cesta `usage.ts::getUsageForProvider` (github/glm/minimax/nanogpt/xai/atď.) zatiaľ nie je pokrytá — sleduje sa samostatne. Zásahy cache nie sú ovplyvnené. `0` vypne; obmedzené na `0..60000`. |
| `OMNIROUTE_QUOTA_FETCH_JITTER_MS` | `120` | `open-sse/services/quotaFetchThrottle.ts` | Dodatočný náhodný odstup (ms) na požiadavku, vzorkovaný pri každom rezervovanom načítaní upstream kvóty. Predvolene 120; obmedzené na `0..60000`; `0` odstráni iba jitter. Na vypnutie celého obmedzovača nastavte `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS=0`. Jitter nezaručuje zabránenie zákazov zo strany upstreamu. |
| `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Oneskorenie (ms) pred obnovením limitov poskytovateľa po skutočnej udalosti spotreby, ktoré dáva upstream API kvót čas na zaregistrovanie spotreby. |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | automatická detekcia | `open-sse/services/adobeFireflyBrowserLogin.ts` | Absolútna cesta k systémovému spustiteľnému súboru Chrome alebo Edge používanému na interaktívne prihlásenie do Adobe Firefly a obnovovanie mimo obrazovky. |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | povolené | `open-sse/services/adobeFireflySession.ts` | Udržiava stav IMS a browser-risk aktuálny pomocou Chrome CDP relácií viazaných na účet. Nastavte na `0` na vypnutie obnovovania prehliadača. |
| `ADOBE_FIREFLY_SESSION_DISK` | povolené | `open-sse/services/adobeFireflySession.ts` | Uchováva opravené Adobe relácie pod `DATA_DIR` aj po reštarte procesu. Nastavte na `0`, aby relácie zostali iba v pamäti. |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Minimálny odstup v milisekundách medzi odoslaniami generovania Adobe Firefly; `0` odstup vypne. |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatočná doba ticha v milisekundách po každom treťom úspešnom odoslaní Adobe. |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Základný backoff v milisekundách po prechodných odpovediach Adobe 408; kombinovaný s odstupom odosielania počas maximálne piatich pokusov. |
| `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Vypne všetky služby na pozadí (synchronizácia, ceny, obnova modelov). Užitočné pre CI/test. |
| `OMNIROUTE_HEADLESS` | _(nenastavené)_ | `src/lib/system/headless.ts` | Spustenie iba s proxy engine: preskočí voliteľné subsystémy, `/dashboard` → 404. Rovnaké ako `omniroute serve --headless`. Pozri [HEADLESS.md](../guides/HEADLESS.md). |
| `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(nenastavené)_ | `src/lib/config/runtimeSettings.ts` | Vynúti zapnutie úloh na pozadí pri detekcii automatizovaného testovania. Nastavte `1` na potlačenie testovacej heuristiky. |
| `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Interval kontroly resetovania rozpočtu (ms). Minimum `10000`. |
| `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Interval proaktívneho obnovovania spojení v režime cooldown (ms): znova overuje spojenia, ktorých prechodná hodnota `rate_limited_until` už uplynula, mimo horúcej cesty požiadaviek. Minimum `5000`. |
| `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Vypne plánovač proaktívneho obnovovania spojení v režime cooldown (odložené obnovenie v `getProviderCredentials` sa stále uplatňuje). |
| `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Interval čistenia medzipamäte uvažovania (ms). Minimum `60000`. |
| `OMNIROUTE_REASONING_MIN_BUDGET` | _nenastavené_ (vypnuté) | `open-sse/services/reasoningTokenBuffer.ts` | Voliteľné minimum pre výstupné rozpočty modelov s uvažovaním: `max_tokens` volajúceho v intervale `[256, floor)` sa zvýši na toto minimum (obmedzené výstupným stropom modelu). Nenastavené = rozpočty klienta sa nikdy nezväčšujú (#9507). |
| `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _nenastavené_ (vypnuté) | `open-sse/services/learnedReasoningEffortCaps.ts` | Voliteľné, čiarkou oddelené ID poskytovateľov (alebo `*`): keď chyba 400/422 pri `reasoning_effort` neuvádza akceptovanú množinu, vykoná sa jeden pokus o úroveň nižšie (nikdy nie pod `low`) a táto úroveň sa naučí len vtedy, ak sonda dostane odpoveď (#14895). |
| `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Cron výraz (UTC) pre úlohu exportu záznamov volaní, ktorá vyprázdni všetky povolené ciele exportu záznamov. Pri exporte tiel uprednostnite `*/5 * * * *`. |
| `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | Časový limit podriadeného procesu na cieľ v milisekundách (reálny čas). Pri vypršaní limitu sa zaznamená zlyhanie a proces sa ukončí bez posunutia nepotvrdenej dávky. Neplatné, nekladné alebo neceločíselné hodnoty použijú predvolenú hodnotu. |
| `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | Limit old-space V8 podriadeného procesu exportu Node v MB (nie celkové RSS). Predvolená hodnota ponecháva rezervu pre 500 riadkov obmedzených artefaktov s telami; príliš veľké dávky môžu napriek tomu vyčerpať haldu podriadeného procesu. Zlyhanie odporúča znížiť veľkosť dávky alebo zvýšiť tento limit. Neplatné, nekladné alebo neceločíselné hodnoty použijú predvolenú hodnotu. Exporty Bun sa vrátia späť do procesu bez tohto limitu. |
| `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Interval dotazovania (ms) pre hot-reload konfigurácie. Hodnota nižšia ako `1000` sa odmietne. |
| `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(zapnuté)_ | `src/lib/db/apiKeys.ts` | Nastavte `1` na obídenie medzipamäte autentifikácie API kľúčov postavenej na Redise (vynúti čítania z databázy). |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Dôverovať používateľom spravovaným pravidlám filtrov projektu RTK bez prísnych kontrol podpisov. |
| `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | Limit počtu znakov pre proaktívne skracovanie výsledkov nástrojov v režime Lite, keď `lite.maxToolLength` nie je nastavené. Rozsah 256–1000000. Nastavenie v nástenke má prednosť pred touto premennou prostredia. |
| `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Maximálny počet súbežných synchronných pracovníkov RTK/Caveman; nadbytočné úlohy čakajú v poradí FIFO. |
| `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Časový limit na úlohu v milisekundách. Pracovníci s vypršaným limitom sa ukončia a požiadavka zlyhá otvorene a prejde nezmenená. |
| `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Doba nečinnosti v milisekundách pred ukončením nevyužitého kompresného pracovníka. |
| `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Limit haldy starej generácie V8 (old-generation) v MB pre každý kompresný worker, vo všetkých režimoch (spodná hranica `128`). Úloha, ktorá ho prekročí, zlyhá v režime fail-open (bez kompresie) namiesto zväčšovania haldy brány. |
| `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Hlavný vypínač circuit-breakera T02 stacked-pipeline pre jednotlivé enginy. **Aktivácia na vyžiadanie (predvolene vypnuté)** — keď je zapnutý, engine, ktorý opakovane vyhadzuje chyby naprieč požiadavkami, sa na dobu cooldown preskočí (fail-open); vypnutý = bajtovo identické pôvodné správanie. |
| `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Počet po sebe idúcich zlyhaní naprieč požiadavkami pred otvorením breakera daného enginu. |
| `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Počet milisekúnd, počas ktorých zostáva otvorený engine preskakovaný, kým sa vykoná half-open skúška. |
| `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | Rampa spätnej väzby načítania T08/H8 CCR: každé predchádzajúce načítanie uloženého bloku lineárne zvyšuje jeho efektívne `minChars` (často načítavaný obsah sa komprimuje menej; `>=3` načítania = nikdy sa nekomprimuje). Hodnota `1` rampu vypína (binárne preskočenie iba na prahu). |
| `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | Trvanlivé úložisko blokov CCR (#9061). Podopiera úložisko v pamäti pomocou SQLite, takže blok prežije LRU vyradenie, TTL, reštart alebo načítanie smerujúce na inú inštanciu. Nastavte `false`, aby bloky zostali iba v pamäti. Bloky nad 512KB a cloudové runtime zostávajú bez ohľadu na to iba v pamäti. |
| `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | Hlavný vypínač zmrazenia prefixu na základe pozorovaného použitia T08/H5. **Aktivácia na vyžiadanie (predvolene vypnuté)** — keď je zapnutý, systémový prompt pozorovaný `>=` prah sa považuje za stabilný kešovateľný prefix a je chránený pred kompresiou aj u poskytovateľov, ktorých statická kešová heuristika nezachytí (zmrazenie iba _zachováva_, nikdy nemení). |
| `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Počet pozorovaní systémového promptu, kým sa považuje za zmrazený stabilný prefix. |
| `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | Bootstrap skript nastaví po počiatočnom nastavení hodnotu `true`. Riadi viditeľnosť sprievodcu nastavením. |
| `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Núdzový východ: umožní telu požiadavky prepísať pole projektu Antigravity. |
| `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Politika kreditov Google One AI: `off` kredity nikdy nevstrekne, `retry` ich vstrekne raz po oprávnenej kvótovej chybe 429 a `always` ich vstrekne pri prvej požiadavke. |
| `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Umožní prekladaču požiadaviek Antigravity preskočiť jeho striktnú validáciu podpisu CLI požiadaviek, keď upstream odmieta skutočné podpisy (režim ladenia/zastaraného CLI). Nenulová hodnota obídenie zapína. |
| `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Prepíše cestu k súboru tokenu Antigravity CLI (agy) pre import lokálneho prihlásenia s automatickou detekciou. |
### OAuth CLI most (interný)
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------- | -------------------- | ------------------------------- | -------------------------------------------------- |
| `OMNIROUTE_SERVER` | automatická detekcia | `src/lib/oauth/config/index.ts` | URL servera pre autentifikačný most CLI↔OmniRoute. |
| `OMNIROUTE_TOKEN` | _(nenastavené)_ | `src/lib/oauth/config/index.ts` | Autentifikačný token pre most CLI. |
| `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | ID používateľa pre relácie mosta CLI. |
| `SERVER_URL` | _(nenastavené)_ | `src/lib/oauth/config/index.ts` | Zastaraný alias pre `OMNIROUTE_SERVER`. |
| `CLI_TOKEN` | _(nenastavené)_ | `src/lib/oauth/config/index.ts` | Zastaraný alias pre `OMNIROUTE_TOKEN`. |
| `CLI_USER_ID` | _(nenastavené)_ | `src/lib/oauth/config/index.ts` | Zastaraný alias pre `OMNIROUTE_USER_ID`. |
---
## 11. Prihlasovacie údaje poskytovateľov OAuth
Vstavané prihlasovacie údaje pre **vývoj na localhoste**. Pri vzdialených nasadeniach si zaregistrujte vlastné vo vývojárskej konzole každého poskytovateľa.
| Variable | Provider | Notes |
| ------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | Verejný klient — nie je potrebný žiadny secret. |
| `CLAUDE_CODE_REDIRECT_URI` | Claude Code | Prepíše redirect URI. Predvolené: `https://platform.claude.com/oauth/code/callback` |
| `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | Verejný klient. |
| `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Vyžaduje zodpovedajúce `_SECRET`. |
| `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — |
| `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | Verejný klient. |
| `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | Voliteľné prepisanie verejného client id Muse CLI pre device-flow. Ak ho nenastavíte, použije sa vstavaný verejný klient. |
| `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Vyžaduje zodpovedajúce `_SECRET`. |
| `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — |
| `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | Verejný klient. |
| `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | Voliteľné prepisanie OAuth client id pre GitHub Enterprise Copilot. Ak nie je nastavené, použije sa verejná predvolená hodnota z `GITHUB_OAUTH_CLIENT_ID`. |
| `COPILOT_INTEGRATION_ID` | GitHub Copilot | Voliteľné prepisanie integračného ID klienta GitHub Copilot odosielaného v hlavičkách `Copilot-Integration-Id` a `Editor-Plugin-Version`. Predvolená hodnota je `copilot-developer-cli`. |
| `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Záložný API kľúč, ktorý používa `open-sse/executors/devin-cli.ts`, keď nie je k dispozícii žiadne poverenie pre konkrétne pripojenie. Voliteľné. |
| `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Vlastná cesta k binárnemu súboru Devin CLI (`devin`). Rozpoznáva ju `open-sse/executors/devin-cli.ts`. |
| `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | OAuth client ID pre GitLab Duo. Zaregistrujte aplikáciu na `https://gitlab.com/-/profile/applications` s redirect URI `/callback` a rozsahmi `api, read_user, openid, profile, email`. Ak nie je nastavené, použije sa `GITLAB_OAUTH_CLIENT_ID`. |
| `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | OAuth client secret pre GitLab Duo. Voliteľné — PKCE flow nevyžaduje secret. Ak nie je nastavené, použije sa `GITLAB_OAUTH_CLIENT_SECRET`. |
| `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | Prepíše základnú URL GitLabu (self-hosted GitLab). Predvolená hodnota je `https://gitlab.com`. Ak nie je nastavené, použije sa `GITLAB_BASE_URL`. |
| `GITLAB_BASE_URL` | GitLab Duo (v3.8) | Starší fallback za `GITLAB_DUO_BASE_URL`. Použije sa, keď varianta `_DUO_` nie je nastavená. |
| `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | Starší fallback za `GITLAB_DUO_OAUTH_CLIENT_ID`, ktorý spracováva `src/lib/oauth/constants/oauth.ts`. |
| `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Starší fallback za `GITLAB_DUO_OAUTH_CLIENT_SECRET`, ktorý spracováva `src/lib/oauth/constants/oauth.ts`. |
| `QODER_OAUTH_CLIENT_SECRET` | Qoder | — |
| `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Nastavte na povolenie Qoder OAuth. |
| `QODER_OAUTH_TOKEN_URL` | Qoder | — |
| `QODER_OAUTH_USERINFO_URL` | Qoder | — |
| `QODER_OAUTH_CLIENT_ID` | Qoder | — |
| `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Priamy fallback na API kľúč (obchádza OAuth). |
| `QODER_CLI_WORKSPACE` | Qoder | ID pracovného priestoru pre Qoder CLI. |
| `OMNIROUTE_QODER_WORKSPACE` | Qoder | Alias pre `QODER_CLI_WORKSPACE`. |
| `QODER_CLI_CONFIG_DIR` | Qoder | Prepíše konfiguračný adresár Qoder CLI (izolovaná PAT relácia, zabráni prepísaniu prihlásenia v prehliadači). |
| `QODER_CLI_MAX_CONCURRENCY` | Qoder | Maximálny počet súbežných spustení qodercli (spustenia print alebo ACP výzvy); ďalšie požiadavky čakajú vo fronte FIFO. Nenastavené (predvolené) = bez limitu. |
| `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | Ako dlho požiadavka Qoder čaká na slot qodercli (iba pri nastavenom limite), kým zlyhá s chybou 429 `qodercli_busy` + `Retry-After`. Predvolené `120000`. |
| `QODER_CLI_TRANSPORT` | Qoder | `print` (predvolené) spustí `qodercli --print` pre každú požiadavku; `acp` udržiava jeden trvalý proces `qodercli --acp` na jeden PAT. |
| `QODER_CLI_ACP_IDLE_TIMEOUT_MS` | Qoder | ACP transport: ukončí trvalý proces qodercli po uplynutí tohto času nečinnosti. Predvolené `600000`. |
| `QODER_CLI_ACP_STARTUP_TIMEOUT_MS` | Qoder | ACP transport: časový limit, v ktorom musí qodercli odpovedať na ACP `initialize`. Predvolené `60000`. |
| `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | ACP transport: recykluje trvalý proces qodercli po tomto počte relácií. Predvolené `500`. |
| `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | Frontend token `tk`, ktorý sa odošle ako `validated` na `/api/chat`. Vyžaduje sa, keď Blackbox vynucuje zhodu tokenov; inak OmniRoute použije náhodný UUID. Pozri issue #2252. |
| `VISION_BRIDGE_BASE_URL` | Guardrail Vision Bridge | Základná URL kompatibilná s OpenAI pre vision-bridge volania mimo Anthropic. Predvolene používa starú env premennú s OpenAI URL alebo api.openai.com. Nasaďte na self-loop `/v1` OmniRoute alebo na akýkoľvek endpoint kompatibilný s OpenAI (Gemini OpenAI-compat, OpenRouter). Issue #2232. Keď je URL vlastná `/v1` OmniRoute, podžiadavka describe odosiela `x-omniroute-admission-bypass: internal` a autentifikuje sa pomocou vyriešeného self-loop poverenia (`sk_omniroute` sentinel v lokálnom režime alebo `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350), takže fungujú aj nasadenia s `REQUIRE_API_KEY=true`. |
| `VISION_BRIDGE_API_KEY` | Guardrail Vision Bridge | API kľúč pre vyššie uvedenú URL. Pre vision-bridge volania mimo Anthropic prepisuje env premenné OpenAI / Google podľa poskytovateľa. Modely Anthropic si ponechávajú svoju vyhradenú cestu ku kľúču Anthropic. Issue #2232. |
| `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Guardrail Vision Bridge | Ako dlho sa ukladá do cache výsledok smerovania „žiadny použiteľný kandidát", v ms (predvolene `30000`). Neplatné alebo záporné hodnoty sa vrátia na predvolenú hodnotu; `0` negatívnu cache vypína. Zdroj: `src/lib/guardrails/visionBridgeRouter.ts`. |
> [!WARNING]
>
> 1. Prejdite na [Google Cloud Console → Poverenia](https://console.cloud.google.com/apis/credentials)
> 2. Vytvorte OAuth 2.0 Client ID (typ: „Webová aplikácia")
> 3. Pridajte URL svojho servera ako autorizovanú presmerovaciu URI
> 4. Nahraďte hodnoty poverení v `.env`.
---
## 12. Prepísania User-Agent pre poskytovateľov
Prepíše hlavičku `User-Agent` odosielanú každému upstream poskytovateľovi. Za behu ju dynamicky vyhodnocuje základná trieda executora:
```
process.env[`${PROVIDER_ID}_USER_AGENT`]
```
> **Zdroj:** `open-sse/executors/base.ts` → `buildHeaders()`
| Premenná | Predvolená hodnota | Kedy aktualizovať |
| -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Keď Anthropic vydá novú verziu CLI |
| `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Nastavte na `1`/`true`, aby sa názvy nástrojov harnessov tretích strán posielali doslovne do Anthropic na oboch cestách smerujúcich do Anthropic (natívne OAuth a CLIProxyAPI). Predvolene executor deterministicky vytvára aliasy pre názvy nástrojov, ktoré nepatria do Claude Code (kanonické mapovanie Claude Code, ak existuje, inak PascalCase), a pri odpovedi ich prevráti späť cez `_toolNameMap`, takže harnessy s nástrojmi snake_case nie sú odmietnuté ako klienti tretích strán rozpoznaní podľa odtlačku. Iba na ladenie. |
| `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | Keď OpenAI aktualizuje Codex CLI |
| `CODEX_CLIENT_VERSION` | `0.155.0` | Prepíše verziu klienta Codex nezávisle od celého reťazca UA |
| `GROK_CLI_CLIENT_VERSION` | `1.0.41` | Prepíše `x-grok-client-version` pre inferenciu, synchronizáciu modelov a OAuth s kódom zariadenia, ako aj predvolený User-Agent Grok CLI pre inferenciu a synchronizáciu modelov. Akceptuje SemVer s voliteľnými metadátami predbežného vydania/zostavenia, do 128 znakov po odstránení okolitých bielych znakov. Nenastavené, prázdne, neplatné hodnoty alebo hodnoty obsahujúce zalomenie riadka používajú dodávanú pripnutú hodnotu. Existujúce prepísanie celého User-Agent pre inferenciu si zachováva prednosť. |
| `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Prepíše uvádzanú verziu Claude Code nezávisle od `CLAUDE_USER_AGENT`. Anthropic podmieňuje niektoré modely touto hodnotou (#12417). |
| `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Prepíše 3-znakovú príponu, ktorú OmniRoute pripája k `cc_version=` vo fakturačnom bloku Claude. Zvýšte ju spolu s `CLAUDE_CODE_CLIENT_VERSION` — pripnutie iba samotnej verzie uvádza pár `version.revision`, ktorý nevydáva žiadny skutočný binárny súbor. |
| `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Prepíše uvádzanú verziu Copilot CLI nezávisle od `GITHUB_USER_AGENT` |
| `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | Keď sa aktualizuje GitHub Copilot Chat |
| `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Keď sa aktualizuje Antigravity IDE |
| `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Keď sa aktualizuje Kiro IDE |
| `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Prepíše `clientId` sociálneho kódu zariadenia Kiro (verejné id) |
| `KIRO_VERIFY_FULL_CRC` | `false` | Voliteľné: úplná validácia CRC správ pre každý rámec v toku udalostí Kiro (ladenie poškodených tokov) |
| `KIRO_CREDIT_PRICE_USD` | `0.02` | USD za kredit Kiro; prevádza kredity `meteringEvent` na presné náklady na požiadavku |
| `KIRO_REQUIRE_CREDITS` | `false` | Odpoveď Kiro, ktorá nehlási žiadne meranie kreditov, zlyhá namiesto toho, aby sa zaznamenala ako nefakturovaná |
| `QODER_USER_AGENT` | `Qoder-Cli` | Keď sa aktualizuje Qoder CLI |
| `CURSOR_USER_AGENT` | `Cursor/3.3` | Keď sa aktualizuje Cursor |
> [!TIP]
> Prepísania User-Agent môžete pridať pre **ktoréhokoľvek** poskytovateľa pomocou vzoru `{PROVIDER_ID}_USER_AGENT`. Executor dynamicky zostavuje názov env premennej.
---
## 13. Kompatibilita odtlačkov CLI
Keď je táto funkcia povolená, OmniRoute zmení poradie HTTP hlavičiek a polí tela JSON tak, aby presne zodpovedali podpisu oficiálnych nástrojov CLI. Tým sa znižuje riziko označenia účtu a zároveň sa zachová vaša proxy IP.
**Zdroj:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts`
### Podľa poskytovateľa
| Premenná | Aktivácia | Účinok |
| ------------------------ | --------- | --------------------------------------------- |
| `CLI_COMPAT_CODEX` | `=1` | Napodobňuje podpis požiadaviek Codex CLI |
| `CLI_COMPAT_CLAUDE` | `=1` | Napodobňuje podpis požiadaviek Claude Code |
| `CLI_COMPAT_GITHUB` | `=1` | Napodobňuje podpis požiadaviek GitHub Copilot |
| `CLI_COMPAT_ANTIGRAVITY` | `=1` | Napodobňuje podpis požiadaviek Antigravity |
| `CLI_COMPAT_CURSOR` | `=1` | Napodobňuje podpis požiadaviek Cursor |
| `CLI_COMPAT_KIMI_CODING` | `=1` | Napodobňuje podpis požiadaviek Kimi Coding |
| `CLI_COMPAT_KILOCODE` | `=1` | Napodobňuje podpis požiadaviek Kilo Code |
| `CLI_COMPAT_CLINE` | `=1` | Napodobňuje podpis požiadaviek Cline |
### Globálne
| Premenná | Aktivácia | Účinok |
| ---------------- | --------- | --------------------------------------------------------------------- |
| `CLI_COMPAT_ALL` | `=1` | Naraz povolí kompatibilitu odtlačkov pre **všetkých** poskytovateľov. |
### Prepísanie identity Kimi Coding CLI
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ----------------------- | -------------------------------- | ---------------------------------------- | -------------------------------------------------------------------- |
| `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | Prepíše verziu Kimi CLI odosielanú počas volaní OAuth/API. |
| `KIMI_CODING_DEVICE_ID` | _(zachytená predvolená hodnota)_ | `src/lib/oauth/providers/kimi-coding.ts` | Prepíše zachytené ID zariadenia Kimi používané v hlavičkách klienta. |
> [!NOTE]
> Táto funkcia funguje spolu s prepísaním User-Agent (§12). Systém odtlačkov zabezpečuje poradie hlavičiek a polí tela, zatiaľ čo prepísanie User-Agent zabezpečuje konkrétny reťazec UA. Obe funkcie možno povoliť nezávisle.
---
## 14. Poskytovatelia s kľúčmi API
Kľúče API pre poskytovateľov, ktorí používajú priame overovanie. **Preferované nastavenie:** Ovládací panel → Poskytovatelia → Pridať kľúč API.
Nastavenie prostredníctvom premenných prostredia je alternatívou pre nasadenia v Dockeri alebo bez grafického rozhrania.
Rozpoznávaný vzor: `{PROVIDER_ID}_API_KEY`
| Premenná | Poskytovateľ |
| ------------------ | --------------------------------------------------- |
| `DEEPSEEK_API_KEY` | DeepSeek |
| `NVIDIA_API_KEY` | NVIDIA NIM |
| `JINA_AI_API_KEY` | Jina AI (Foundation API + záložný Reader) |
| `JINA_API_KEY` | Jina AI (alias pre `JINA_AI_API_KEY`) |
| `GEMINI_API_KEY` | Gemini (Google AI Studio) embeddingy + záložný chat |
| `GOOGLE_API_KEY` | Gemini (alias pre `GEMINI_API_KEY`) |
> [!NOTE]
> Statické položky `${PROVIDER}_API_KEY` pre Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius a Qianfan boli odstránené vo v3.8.0, pretože ich runtime už nečíta — títo poskytovatelia používajú výhradne ovládací panel / `data/provider-credentials.json` / šifrovanú databázu. Postup migrácie nájdete v časti _Audit: Odstránené / nepoužívané premenné_ na konci tohto dokumentu.
> [!TIP]
> Kľúče nastavené prostredníctvom ovládacieho panela sú uložené zašifrované v SQLite a majú prednosť pred premennými prostredia.
>
> **Jina:** Embeddingy `jina-ai/…`, zmena poradia, klasifikácia, segmentácia a `jina-search` **neúčtujú** kľúč prostredia klastra, ak existuje pripojenie `jina-ai` (alebo zdieľané pripojenie `jina-reader`) z ovládacieho panela — `getProviderCredentials` uprednostňuje prvú dostupnú hodnotu. `JINA_AI_API_KEY` / `JINA_API_KEY` sa používajú iba vtedy, keď neexistuje použiteľný kľúč z ovládacieho panela. Protokoly volaní pripisujú záložné použitie premennej prostredia ako `connection_id=env:JINA_AI_API_KEY`. Karta Reader (`jina-reader`, `r.jina.ai`) nikdy neobsluhuje `/v1/embeddings` ani `/v1/rerank`.
>
> **Gemini:** `gemini/gemini-embedding-2` (alias `google/gemini-embedding-2`) používa najprv pripojenie `gemini` z ovládacieho panela. `GEMINI_API_KEY` / `GOOGLE_API_KEY` sa používajú iba vtedy, keď neexistuje použiteľný kľúč z ovládacieho panela. Protokoly volaní pripisujú záložné použitie premennej prostredia ako `connection_id=env:GEMINI_API_KEY`. Natívna multimodálna komunikácia používa `x-goog-api-key` voči `:embedContent` / `:batchEmbedContents` — N položiek OpenAI `input` sa zmení na N vektorov.
---
## 15. Nastavenia timeoutov
Všetky hodnoty sú v **milisekundách**. Centralizované vyhodnotenie v `src/shared/utils/runtimeTimeouts.ts`.
### Hierarchia timeoutov
```
REQUEST_TIMEOUT_MS (globálne prepísanie)
├─→ FETCH_TIMEOUT_MS (volania upstream poskytovateľa, predvolené: 600000)
│ ├─→ FETCH_HEADERS_TIMEOUT_MS (dedí z FETCH_TIMEOUT_MS)
│ ├─→ FETCH_BODY_TIMEOUT_MS (dedí z FETCH_TIMEOUT_MS)
│ ├─→ TLS_CLIENT_TIMEOUT_MS (dedí z FETCH_TIMEOUT_MS)
│ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (nezávislé, predvolené: 10000)
│ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (nezávislé, predvolené: 15000)
│ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (nezávislé, predvolené: 0 = vypnuté, odporúčané: 30000)
│ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (nezávislé, predvolené: 2)
│ ├── FETCH_CONNECT_TIMEOUT_MS (nezávislé, predvolené: 30000)
│ └── FETCH_KEEPALIVE_TIMEOUT_MS (nezávislé, predvolené: 4000)
├─→ STREAM_IDLE_TIMEOUT_MS (dedí z REQUEST_TIMEOUT_MS, predvolené: 600000)
├─→ STREAM_ACTIVE_TIMEOUT_MS (nezávislé, predvolené: 1260000; 0 vypína)
├─→ STREAM_READINESS_TIMEOUT_MS (dedí z REQUEST_TIMEOUT_MS, predvolené: 80000)
├─→ STREAM_READINESS_MAX_TIMEOUT_MS (obmedzuje adaptívne predĺženia pripravenosti, predvolené: 180000)
└─→ API_BRIDGE_PROXY_TIMEOUT_MS (dedí z REQUEST_TIMEOUT_MS, predvolené: 30000)
├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (odvodené, predvolené: 300000)
├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (predvolené: 60000)
├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (predvolené: 5000)
└── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (predvolené: 0 = vypnuté)
```
| Premenná | Predvolená hodnota | Popis |
| ----------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `REQUEST_TIMEOUT_MS` | _(nenastavené)_ | Globálna skratka — prepisuje predvolené hodnoty `FETCH_TIMEOUT_MS` aj `STREAM_IDLE_TIMEOUT_MS`. |
| `FETCH_TIMEOUT_MS` | `600000` | Celkový časový limit HTTP požiadavky pre volania na upstream poskytovateľa. |
| `STREAM_IDLE_TIMEOUT_MS` | `600000` | Maximálna doba nečinnosti medzi surovými upstream bajtmi pred prerušením. Modely s rozšíreným myslením zriedka robia pauzu dlhšiu ako 90 s. |
| `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Maximálna celková životnosť aktívneho SSE streamu; nikdy sa neresetuje pri príchode upstream bajtov a je nezávislá od `REQUEST_TIMEOUT_MS`. Odvodená z najväčšej hodnoty `timeoutMs` na model v registri (1200000, Codex) plus rezerva 60000, takže model, ktorý môže bežať počas celého svojho rozpočtu, nie je nikdy zastavený uprostred odpovede. Nastavte `0` na vypnutie. |
| `OMNIROUTE_SSE_COMMENTS` | _(vypnuté)_ | Či môže OmniRoute vysielať riadky SSE komentárov `:` (napr. heartbeat `: keepalive` a metadátové zápatia `x-omniroute-*`). Predvolene vypnuté (#10524), pretože striktní klienti kompatibilní s OpenAI vykonávajú JSON.parse na každom SSE riadku a zrútia sa na komentároch `:`; heartbeaty `data:` nie sú ovplyvnené. Nastavte `on`/`true`/`1`/`yes` na opätovné zapnutie. Používa sa v `open-sse/utils/sseHeartbeat.ts`. |
| `SSE_COALESCE_MS` | `0` (vypnuté) | Dobrovoľné: zlučuje po sebe idúce udalosti Claude `content_block_delta` (s rovnakým indexom bloku a typom delty) odosielané klientom Claude, s vyprázdnením aspoň každých N ms. Bezstratové; `signature_delta` a hraničné udalosti sa nikdy nezlučujú. Vzťahuje sa na každý typ delty, pokiaľ nie je nižšie nastavená premenná pre konkrétny typ. Používa sa v `open-sse/utils/sseDeltaCoalesce.ts`. |
| `SSE_COALESCE_THINKING_MS` | `0` (vypnuté) | Prepísanie `SSE_COALESCE_MS` pre konkrétny typ — `thinking_delta`. |
| `SSE_COALESCE_TEXT_MS` | `0` (vypnuté) | Prepísanie `SSE_COALESCE_MS` pre konkrétny typ — `text_delta`. |
| `SSE_COALESCE_INPUT_JSON_MS` | `0` (vypnuté) | Prepísanie `SSE_COALESCE_MS` pre konkrétny typ — `input_json_delta`. |
| `SSE_FRAME_COALESCE_MS` | `0` (vypnuté) | Dobrovoľné: združuje SSE rámce preposlané v rámci N ms do jedného zápisu klientovi. Prvý rámec a koncové rámce (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) sa nikdy neoneskoria; pri zapnutom združovaní ITL meria medzery medzi dávkami. Používa sa v `open-sse/utils/sseOutputSink.ts`. |
| `SSE_STALL_WATCHDOG` | `timer` | Implementácia watchdogu zaseknutia bajtov pre streamované odpovede. `timer` znovu aktivuje jeden časovač na každý upstream chunk (spustí sa presne pri rozpočte zaseknutia); `interval` udržiava jednu kontrolu na stream s periódou `clamp(budget/4, 1s, 5s)`, takže zaseknutie sa zachytí v rámci rozpočtu + periódy. Používa sa v `open-sse/utils/streamStallWatchdog.ts`. |
| `STREAM_READINESS_TIMEOUT_MS` | `80000` | Čas na prijatie prvej SSE udalosti, ktorá nie je ping. Ak je nastavená, dedí z `REQUEST_TIMEOUT_MS`. |
| `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | Maximálne adaptívne okno pripravenosti prvej udalosti pre veľké streamované požiadavky, náročné na nástroje alebo s vysokými nárokmi na reasoning. |
| `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | Vypínač heuristiky `/goal`. Nastavte `false`/`0`/`off` na úplné vypnutie detekcie — časové limity pripravenosti a obnova streamu potom nie sú nikdy zvyšované telom/hlavičkami požiadavky, čím sa zmierňuje zosilnenie časových limitov ovládané klientom. |
| `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Maximálne okno pripravenosti prvej udalosti pre detekované behy agenta `/goal` alebo požiadavky vynútené pomocou `x-omniroute-agent-goal`. |
| `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Automaticky zapína včasnú obnovu streamu pre detekované behy agenta `/goal`. Nastavte `false`/`0`/`off` na vypnutie tohto dobrovoľného zapnutia špecifického pre goal. Toto môže iba PRIDAŤ obnovu navyše k predvolenému nastaveniu operátora — nikdy neprepisuje explicitné vypnutie cez `STREAM_RECOVERY_ENABLED`/nastavenia DB. |
| `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | Odstraňuje neštandardné SSE udalosti `codex.*` (napr. `codex.rate_limits`), ktoré rozbijú `responses.stream()` OpenAI SDK s chybou 502. Predvolene ZAPNUTÉ (#11014). Nastavte `0`/`false`/`no`/`off` na ich preposielanie. |
| `OMNIROUTE_CODEX_APPSERVER_WS` | _(nenastavené)_ | Dobrovoľný transport Codex app-servera. WebSocket endpoint (`ws://`/`wss://`) lokálneho sidecaru `codex app-server`. Keď je nastavený spolu s tokenom, požiadavky Codex sa smerujú cez JSON-RPC do sidecaru namiesto HTTP Responses API. Dá sa nastaviť aj pre jednotlivé pripojenia cez `providerSpecificData.codexAppServerUrl`. Používa sa v `open-sse/executors/codex/appServerConfig.ts`. |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(nenastavené)_ | Inline capability/bearer token predkladaný app-serveru. Prepísanie pre jednotlivé pripojenia: `providerSpecificData.codexAppServerToken`. |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(nenastavené)_ | Cesta k súboru obsahujúcemu capability token app-servera (z `codex app-server --ws-token-file`). Používa sa, keď `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` nie je nastavená. Prepis na úrovni pripojenia: `providerSpecificData.codexAppServerTokenFile`. |
| `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Pracovný adresár, v ktorom beží kolo app-servera. Prepis na úrovni pripojenia: `providerSpecificData.codexAppServerCwd`. |
| `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(nenastavené)_ | Politika schvaľovania odovzdaná kolu app-servera (napr. `never`, `on-request`). Prepis na úrovni pripojenia: `providerSpecificData.codexAppServerApprovalPolicy`. |
| `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(nenastavené)_ | Politika sandboxu odovzdaná kolu app-servera (napr. `read-only`, `workspace-write`, `danger-full-access`). Ak nie je nastavená, executor štandardne používa `workspace-write` (sprísnené; predtým `danger-full-access`). Prepis na úrovni pripojenia: `providerSpecificData.codexAppServerSandbox`. |
| `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Automaticky schvaľuje vlastné výzvy app-servera na schválenie (spúšťanie príkazov/súborov/oprávnení na hostiteľovi). Štandardne vypnuté — výzvy sa automaticky zamietajú; volania nástrojov harnessu nie sú ovplyvnené (prechádzajú samostatným passthrough `item/tool/call`). Akceptuje `true`/`1`/`yes`. Prepis na úrovni pripojenia: `providerSpecificData.codexAppServerAutoApprove`. |
| `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Čas na prijatie hlavičiek odpovede. |
| `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Maximálne čakanie na hlavičky odpovede pri streamovacích požiadavkách (ms). `0` tento strop vypína; explicitné `fetchStartTimeoutCapMs` poskytovateľa má prednosť. |
| `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | Maximálne čakanie na začiatok odpovede (ms) pre každý priamy pokus bez proxy. Po časovom limite sa pokus raz zopakuje na novom sockete; nastavte `0` na vypnutie tohto ohraničenia a zachovanie predchádzajúceho správania. |
| `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 min) | Spodná hranica čakania na začiatok odpovede (ms) pre priame pokusy bez proxy, ktorých cieľový hostiteľ je privátny/LAN/loopback (napríklad `localhost`, `host.docker.internal`, `192.168.x.x`), aby natívny studený štart Ollamy nebol prerušený vyššie uvedenou 30s predvoľbou. Funguje ako spodná hranica: efektívne čakanie je väčšia z hodnôt tejto premennej a `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS`; `0` alebo neplatná hodnota lokálnu spodnú hranicu odstráni. Vzdialení hostitelia nie sú ovplyvnení. |
| `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 min) | Strop (ms) pre opakovaný pokus na novom sockete po vypršaní čakania na začiatok odpovede pokusu z poolu uvedeného vyššie (#13703). Platí len vtedy, keď volajúci už pripojil vlastný signál termínu (kaskáda rozlíšeného pripojenia/modelu/poskytovateľa/`FETCH_TIMEOUT_MS`); tento signál je skutočným ohraničením a v zamýšľanej ceste sa aktivuje prvý, takže ide o štedrú záložnú poistku, nie pevný strop — bez nej by opakovaný pokus použil rovnaké krátke okno `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` ako pokus z poolu a zdravé reasoning modely s pomalým TTFB by zlyhali s 504. Nikdy nedovolené pod vyššie uvedenou plochou spodnou hranicou; keď volajúci neposkytne žiadny signál termínu, opakovaný pokus ponecháva plochú spodnú hranicu nezmenenú. |
| `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Čas na prijatie celého tela odpovede. |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Časový limit nadviazania TCP spojenia. |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Časový limit nečinnosti keep-alive socketu. |
| `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Časový limit proxy s TLS odtlačkom (wreq-js). |
| `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Ohraničuje čas do prvého bajtu konkrétne pre telo transportu wreq-js s TLS odtlačkom; samotný `TLS_CLIENT_TIMEOUT_MS` nedokáže zachytiť zaseknuté telo, pretože sa vyhodnotí hneď po príchode hlavičiek (#12656). Časový limit zruší čítač wreq a prepne sa späť na priamy/proxy dispatcher; `0` watchdog vypína. |
| `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Len executor OpenCode, a len keď je zapnutý feature flag `OPENCODE_RESPONSES_STALL_ROTATION` (štandardne vypnutý): ohraničuje čakanie na prvý bajt tela streamovanej odpovede Responses po jej hlavičkách (#13484). Stream Responses sa otvára s `response.created`, takže ticho po tomto okne znamená zaseknutie: účet sa ochladí a požiadavka sa raz presunie na ďalší účet; druhé zaseknutie rýchlo zlyhá. `0` ochranu vypína aj pri zapnutom flagu. |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= vypnuté) | Len executor OpenCode: ohraničuje čakanie na hlavičky odpovede upstreamu pri streamovanom volaní Responses, keď je ešte k dispozícii ďalší účet — požiadavka vo fronte prestane čakať a prejde ďalej namiesto držania celého okna hlavičiek. Ovplyvnené sú len streamované volania Responses (stream Responses sa otvára s `response.created`, takže ticho tam znamená frontu, nie generovanie); chat completions a nestreamované volania sú nedotknuté a okno len skracuje efektívny strop fetch-start, nikdy ho nepredlžuje. Odporúčaná hodnota pri zapnutí: `30000`. `0` vypína. |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Iba vykonávateľ OpenCode: koľkokrát sa na jednu požiadavku môže vyššie uvedená hranica čakania na hlavičky presunúť na ďalší účet. Posledný zostávajúci účet si vždy ponechá celé okno hlavičiek. |
| `OPENCODE_PARK_AND_RESUME` | `false` | Iba vykonávateľ OpenCode: po opakovaných prechodných chybách 429 (alebo čerstvom markeri zaťaženia poolu) zaparkuje požiadavku so signálom heartbeat a potom prehrá jednu obmedzenú vetvu až 3 po sebe idúcich účtov namiesto rozloženia na celú flotilu (#13924). Predvolene vypnuté: každá chyba 429 sa presunie na ďalší účet presne tak ako predtým. |
| `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | Iba vykonávateľ OpenCode: keď je každý účet pripravený po cooldown-e vo vetve prehrávania park-and-resume odložený bokom pamäťou odmietnutí proxy, obslúži ich napriek tomu namiesto toho, aby sa neprehralo nič (#14851, pokračovanie #14750). Predvolene vypnuté: v takom prípade je vetva prehrávania prázdna, ako pred #14750. |
| `STREAM_READINESS_STALL_RETRY` | `false` | Iba streamovaný chat: keď sa prvé upstream telo zasekne skôr, než vyprodukuje použiteľnú udalosť, vykoná sa jeden obmedzený druhý pokus tou istou smerovacou cestou s rovnakým rozpočtom pripravenosti a bez penalizácie účtu. Predvolene vypnuté: zaseknuté prvé telo spôsobí zlyhanie požiadavky bez opakovania. |
| `OPENCODE_POOL_RESELECT` | `false` | Iba vykonávateľ OpenCode: po chybe 429 od poskytovateľa s egress bucketmi na účte bez proxy v kontexte okolitého poolu požiada fond pripojení o iného člena pre ďalší pokus namiesto opakovania rovnakej egress adresy. Usporiada, nikdy nevylučuje: vyčerpaný pool si ponechá súčasné správanie. Predvolene vypnuté: každá chyba 429 sa presunie na ďalší účet presne tak ako predtým. |
| `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(nenastavené)_ | Iba vykonávateľ OpenCode: prepíše cestu k markeru zaťaženia poolu, ktorý sa číta pred parkovaním (`{since, reason, ttl_s}`, predvolene `/tmp/opencode-pool-strain.json`, #13924). Čerstvý marker zaparkuje bez prepočítania; pri chýbajúcom alebo zastaranom sa použije počítadlo nárazov. |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | Časový limit proxy skoku pre požiadavky `/v1` cez bridge. |
| `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Nasmeruje vykonávateľa web-fetch Firecrawl na self-hosted inštanciu (API kľúč je mimo cloudu voliteľný). |
| `FIRECRAWL_TIMEOUT_MS` | `30000` | Časový limit na požiadavku pre vykonávateľa web-fetch Firecrawl. |
| `TAVILY_BASE_URL` | _(nenastavené)_ | Základná URL pre nástroj na získavanie kvóty Tavily `/usage` (Limity poskytovateľa); ignoruje sa, keď smeruje na `api.tavily.com`. Ak nie je nastavená, použije sa základná URL pripojenia. |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Celkový časový limit serverovej požiadavky pre bridge. |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Čas na odoslanie hlavičiek odpovede cez bridge. |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Časový limit nečinnosti keep-alive pre bridge. |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Časový limit nespracovaného socketu (0 = vypnuté). |
| `SHUTDOWN_TIMEOUT_MS` | `30000` | Odkladacia lehota po SIGTERM/SIGINT pred núteným ukončením. |
| `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | Záložná hodnota používaná súborom `src/shared/utils/fetchTimeout.ts`, keď `FETCH_TIMEOUT_MS` nie je nastavená. |
| `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | Časový limit (ms) pre predvoľby `validationRead` a `modelsProbe` v `src/shared/network/safeOutboundFetch.ts`. Zvýšte ho pre pomalé koncové body (Cerebras, Cloudflare AI, Groq), aby ste zabránili prepínaniu medzi stavmi active/error na nástenke. Pre neplatné (<1000) alebo nečíselné hodnoty sa použije 8000 ms. |
| `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | Časový limit fetch špecifický pre relay v `open-sse/utils/proxyFetch.ts` (#9158). Zaseknutý relay musí zlyhať pred časovým limitom klienta/agenta (~30 s), aby volajúci videli zlyhanie špecifické pre relay namiesto všeobecného upstream časového limitu. Obmedzené na `29000`, aby sa vždy spustil prvý. |
| `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | Zdieľaný backoff opakovania pre cesty direct/relay/proxy s jedným opakovaním v `open-sse/utils/proxyFetch.ts` (#9158). `0` = opakovať okamžite. |
| `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Natívny časový limit požiadavky wreq-js (`claudeTlsClient.ts`). |
| `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Absolútna odkladacia lehota pevného termínu JS pridaná k natívnemu časovému limitu. |
| `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Natívny časový limit požiadavky wreq-js (`perplexityTlsClient.ts`). |
| `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Absolútna rezerva pevnej konečnej lehoty JS pridaná nad rámec natívneho timeout-u. |
| `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (vypnuté) | Pripojí "You have built-in web search. Answer questions directly using search results." k systémovej správe volajúceho (`perplexity-web/protocol.ts`). Predvolene vypnuté — Perplexity vyhľadáva aj tak a veta presakuje do odpovedí ako meta-komentár pre kódovacie klienty. Nastavte `1`/`true`/`yes`/`on` na obnovenie. |
| `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Natívny timeout požiadavky wreq-js (`grokTlsClient.ts`). |
| `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Absolútna rezerva pevnej konečnej lehoty JS pridaná nad rámec natívneho timeout-u. |
| `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Natívny timeout požiadavky wreq-js (`notionTlsClient.ts`); `notion-web` ho na úrovni požiadavky zvyšuje na `180000` pri dlhých generovaniach. |
| `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Absolútna rezerva pevnej konečnej lehoty JS pridaná nad rámec natívneho timeout-u. |
| `OMNIROUTE_BROWSER_POOL` | `on` | Zdieľaný pool prehliadačov Playwright pre web-cookie chat podporovaný prehliadačom (`browserPool.ts`); nastavte `off` na vypnutie. |
| `OBSCURA_BIN` | `auto-detect` | Cesta k binárnemu súboru `obscura` používanému ako primárny engine poolom prehliadačov a executorom Cloudflare Playground (`open-sse/services/obscura.ts`); pri nenastavení sa automaticky detekuje zo systémovej premennej PATH. |
| `OBSCURA_CDP_ENDPOINT` | _(nenastavené)_ | Nasmeruje na už spustený Obscura (`http://host:port`) namiesto spúšťania nového; modul tento proces nevlastní (`open-sse/services/obscura.ts`). |
| `OBSCURA_PORT` | `random free port` | Explicitný port pre spustené `obscura serve`; pri nenastavení sa automaticky vyberie voľný port (`open-sse/services/obscura.ts`). |
| `WEB_COOKIE_USE_BROWSER` | `0` | Zaradí požiadavku web-cookie chatu do cesty podporovanej prehliadačom (`browserBackedChat.ts`); `1` na zapnutie. |
| `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Základná URL pre executor Kimi Web (medzinárodný Connect-RPC kimi.ai) (`kimi-web.ts`); prepíšte len pre zrkadlové/proxy koncové body. |
| `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Úplný koncový bod chatu pre executor Kimi Web (`kimi-web.ts`). |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | _(automaticky detekované)_ | Cesta k systémovému spustiteľnému súboru Chrome/Edge pre interaktívne prihlásenie Adobe Firefly cez prehliadač (`adobeFireflyBrowserLogin.ts`); prepisuje automatickú detekciu podľa OS. |
| `OMNIROUTE_STANDALONE_DIR` | _výstup standalone z .build/_ | Prepísanie výstupného adresára standalone počas zostavovania, ktoré spotrebúva krok kolokácie po zostavení (`scripts/build/colocate-standalone.mjs`); nástroj zostavovania, nie runtime. |
Pokusy o ciele komba zdedia vyriešený timeout upstream požiadavky (`FETCH_TIMEOUT_MS`, alebo
`REQUEST_TIMEOUT_MS`, keď poskytuje predvolenú hodnotu pre fetch). Nastavte `targetTimeoutMs` v kombe,
v predvolených hodnotách komba alebo v prepísaní poskytovateľa len na zrýchlenie fallbacku komba;
hodnoty nad aktuálnym upstream timeoutom sa obmedzia na upstream timeout.
`comboTimeoutMs` je samostatný rozpočet reálneho času (wall-clock) celého komba naprieč cieľmi failoveru.
Ponechajte ho nenastavený alebo `0`, aby ste zachovali neobmedzenú iteráciu (stále však platí
10-minútové pevne zakódované zastavenie pri zaseknutí v `comboPredicates.ts`). Kladná hodnota nahradí
túto poistnú sieť pre kombo. Udržujte `comboTimeoutMs` dlhší ako `targetTimeoutMs`, aby mal failover
dostatok času aj po pomalom prvom cieli.
### Prahové hodnoty circuit breakera
Ladenie circuit breakera na úrovni poskytovateľa. Predvolené hodnoty odrážajú škálované hodnoty používané od v3.6 pre 500+ pripojení.
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ------------------------------------------------------------- | ---------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Prah po sebe idúcich zlyhaní pre OAuth poskytovateľov, po ktorom sa istič aktivuje. |
| `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | Okno resetu (ms) pre istič OAuth poskytovateľa. |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | Prah po sebe idúcich zlyhaní pre poskytovateľov s API kľúčom. |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | Okno resetu (ms) pre istič poskytovateľa s API kľúčom. |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prah po sebe idúcich zlyhaní pre lokálnych poskytovateľov (Ollama, LM Studio, ...). |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Okno resetu (ms) pre istič lokálneho poskytovateľa. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: počet zlyhaní v rámci okna, po ktorom celý OAuth poskytovateľ prejde do stavu cooldown. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: posuvné okno počítania zlyhaní (ms) pre OAuth poskytovateľov. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: cooldown (ms) po dosiahnutí prahu OAuth poskytovateľa. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth poskytovateľ prejde do stavu DEGRADED po tomto počte zlyhaní. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | Maximálny násobiteľ eskalácie resetTimeout pre OAuth poskytovateľa. |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth poskytovateľ eskaluje po tomto počte otvorených cyklov. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: počet zlyhaní v rámci okna, po ktorom celý poskytovateľ s API kľúčom prejde do stavu cooldown. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: posuvné okno počítania zlyhaní (ms) pre poskytovateľov s API kľúčom. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: cooldown (ms) po dosiahnutí prahu poskytovateľa s API kľúčom. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | Poskytovateľ s API kľúčom prejde do stavu DEGRADED po tomto počte zlyhaní. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | Maximálny násobiteľ eskalácie resetTimeout pre poskytovateľa s API kľúčom. |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | Poskytovateľ s API kľúčom eskaluje po tomto počte otvorených cyklov. |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: počet zlyhaní, po ktorom celý lokálny poskytovateľ prejde do stavu cooldown. |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: posuvné okno počítania zlyhaní (ms) pre lokálnych poskytovateľov. |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Istič na úrovni poskytovateľa: cooldown (ms) po dosiahnutí prahu lokálneho poskytovateľa. |
| `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Cooldown (ms) na jednotlivý kľúč, ktorý sa uplatní pri rotácii viacerých API kľúčov, keď upstream odpoveď 429 neobsahuje `Retry-After` (#14573). Nekladné alebo nečíselné hodnoty sa vrátia na predvolenú hodnotu. |
| `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Hĺbka backoffu, pri ktorej sa poskytovateľ pinu kontextovej cache považuje za trvalo nezdravého a pin sa zahodí kvôli failoveru. |
| `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Anti-flap okno (ms), ktoré toleruje krátke prechodné cooldowny pred zahodením pinu kontextovej cache. |
### Scenáre
| Scenár | Konfigurácia |
| ------------------------------------------------- | ----------------------------------------------------- |
| **Dlhodobé generovanie kódu** | `REQUEST_TIMEOUT_MS=900000` (15 min) |
| **Obmedzená celková životnosť streamu** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 min) |
| **Rýchle zlyhanie (fast-fail) pre produkčné API** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` |
| **Modely s rozšíreným myslením** | `STREAM_IDLE_TIMEOUT_MS=300000` (5 min medzi chunkmi) |
---
## 16. Protokolovanie
Systém protokolovania zapisuje na štandardný výstup aj do rotovaných súborov denníka. Celá konfigurácia sa načítava zo súboru `src/lib/logEnv.ts`.
| Premenná | Predvolená hodnota | Popis |
| ----------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `APP_LOG_LEVEL` | `info` | Minimálna úroveň protokolovania: `debug`, `info`, `warn`, `error`. |
| `APP_LOG_FORMAT` | `text` | Formát výstupu: `text` (čitateľný pre človeka) alebo `json` (štruktúrovaný). |
| `APP_LOG_TO_FILE` | `true` | Zapisuje denníky do súboru súbežne so štandardným výstupom. |
| `APP_LOG_FILE_PATH` | `logs/application/app.log` | Cesta k súboru denníka (relatívna ku koreňovému adresáru projektu alebo `DATA_DIR`). |
| `APP_LOG_MAX_FILE_SIZE` | `50M` | Maximálna veľkosť súboru pred rotáciou. Akceptované hodnoty: `50M`, `1G`, `512K` alebo počet bajtov bez jednotky. |
| `APP_LOG_RETENTION_DAYS` | `7` | Počet dní uchovávania rotovaných súborov denníka aplikácie. |
| `APP_LOG_MAX_FILES` | `20` | Maximálny počet záložných rotovaných súborov denníka. |
| `CALL_LOG_RETENTION_DAYS` | `7` | Počet dní uchovávania záznamov denníka požiadaviek/volaní v databáze. |
| `CALL_LOG_MAX_ENTRIES` | `10000` | Maximálny počet záznamov denníka volaní vo vyrovnávacej pamäti. |
| `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Maximálny počet riadkov v tabuľke SQLite `call_logs` pred odstránením starých záznamov. |
| `ENABLE_REQUEST_LOGS` | _(nenastavené)_ | Vynúti zapnutie alebo vypnutie podrobného protokolovania požiadaviek a prepíše nastavenie ovládacieho panela. |
| `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 hodina) | Maximálny vek osirelých aktívnych záznamov denníka požiadaviek pred ich odstránením z pamäte. |
| `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | Ukladá časti streamu do artefaktov pipeline, keď je `call_log_pipeline_enabled=true`. Voliteľné (`true`) — predvolene vypnuté, aby sa šetrilo miesto na disku. |
| `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | Maximálna veľkosť artefaktu denníka volaní pipeline v KB, keď je `call_log_pipeline_enabled=true`. |
| `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Maximálny počet riadkov v tabuľke SQLite `proxy_logs` pred odstránením starých záznamov. |
| `PROXY_LOG_INCLUDE_IPS` | `false` | Zahŕňa IP adresy klienta/výstupného pripojenia a predpony účtov v konzolových denníkoch `[ProxyEgress]`. Záznamy denníka proxy v ovládacom paneli/databáze si zachovávajú úplné podrobnosti. |
| `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Nastavte na `"true"` alebo `"1"`, aby sa v riadkoch denníka proxy zaznamenávalo `first_chunk_ms` (čas od začiatku odosielania po prvý užitočný bajt tela). Každé telo odpovede nadradeného servera zabalí do lenivo inicializovaného priechodného streamu a po prijatí bajtu aktualizuje riadok; predvolene je táto možnosť vypnutá, takže odpovede prechádzajú bez úprav. |
| `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 min) | Ako často `src/lib/logRotation.ts` opätovne kontroluje veľkosť aktívneho súboru denníka. |
| `CHAT_LOG_TEXT_LIMIT` | `65536` | Maximálna dĺžka reťazca uchovávaného v artefaktoch denníka chatu (predvolene 64 KB). |
| `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Počet položiek poľa uchovávaných od konca pri skracovaní dát denníka chatu. |
| `CHAT_LOG_MAX_DEPTH` | `6` | Maximálna hĺbka vnorenia, po ktorej sa dáta denníka chatu skrátia. |
| `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Maximálny počet kľúčov objektu uchovávaných v dátach denníka chatu (0 = neobmedzené). |
| `CHAT_LOG_MAX_BODY_KB` | `1024` | Veľkosť celého tela požiadavky/odpovede (KB), po ktorej sa namiesto úplnej kópie nahradí stručným súhrnom. Zvýšte túto hodnotu, ak sa pri dlhých agentných konverzáciách v ovládacom paneli namiesto skutočných správ zobrazuje zástupný text. |
| `CHAT_DEBUG_FILE` | `false` | Keď je nastavené na true, `serializeArtifactForStorage` vynechá skracovanie podľa veľkosti. Len na ladenie. |
---
## 17. Optimalizácia pamäte
| Premenná | Predvolená hodnota | Popis |
| ----------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_MEMORY_MB` | _auto_ (bare metal); **`1024` v obraze Docker** | **Odporúčaný** limit V8 heapu (MB) pre Docker/samostatné nasadenie. Ak nie je nastavený, kalibruje sa dynamicky (~35 % systémovej RAM, ohraničené na `[512, 4096]`); `512` je len spodná hranica pre prípad, že sa celková pamäť nedá prečítať. V `run-standalone.mjs` (Docker CMD) sa **explicitná** hodnota pripojí ako `--max-old-space-size` a **vyhrá** nad konfliktným heap flagom v NODE_OPTIONS (V8 last-flag). `omniroute serve` stále uprednostní existujúci heap v NODE_OPTIONS (#5238). Nenastavujte obe hodnoty na rôzne čísla — proces zaznamená upozornenie s oboma hodnotami a víťazom. **Oficiálny obraz Docker vždy nastavuje `1024`, takže kalibrácia sa tam nikdy nespustí.** Coding-agent `/v1/responses` potrebuje `8192`–`12288` plus rezervu cgroup — pozri [Príručka Docker — RAM počas behu](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). |
| `OMNIROUTE_RSS_PRESSURE_MB` | _auto_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; vypnuté, keď `OMNIROUTE_MEMORY_MB` nie je nastavené) | `open-sse/utils/resourcePressure.ts` | Absolútna poistka RSS procesu (MB) pre natívnu/externú pamäť, ktorú V8 `heapUsed` nevidí; nad touto hranicou dostávajú nové požiadavky odpoveď 503 `resource_pressure`. RSS po špičke zriedka klesne, preto ju spárujte s `OMNIROUTE_PRESSURE_SELF_RESTART`. |
| `PROMPT_CACHE_MAX_SIZE` | `50` | Maximálny počet cachovaných položiek systémových promptov. |
| `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Maximálna celková veľkosť cache promptov. |
| `PROMPT_CACHE_TTL_MS` | `300000` (5 min) | TTL položky cache promptov. |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | Maximálny počet cachovaných odpovedí s temperature=0. |
| `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Maximálna celková veľkosť semantickej cache. |
| `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 min) | TTL položky semantickej cache. |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Korene lokálneho korpusu, ktoré súčasne držia živý index v pamäti (`src/lib/localCorpus/configured.ts`). LRU: na limite sa index najdlhšie nepoužívaného koreňa odstráni a pri jeho ďalšom dotaze sa znovu vytvorí. Ohraničené minimom `1`; nečíselná hodnota sa vráti na predvolenú. |
| `STREAM_HISTORY_MAX` | `50` | Maximálny počet nedávnych udalostí streamu vo vyrovnávacej pamäti živého zobrazenia Dashboardu. |
| `CONTEXT_LENGTH_DEFAULT` | _(nenastavené)_ | Globálne prepísanie dĺžky kontextu (v tokenoch) pre každého poskytovateľa, ktorý nemá premennú `CONTEXT_LENGTH_`. Ak je nastavené, **nahradí** katalógové hodnoty, prepísanie z dashboardu aj hodnoty registra pre týchto poskytovateľov; ak nie je nastavené, OmniRoute použije svoju vstavanú reťaz, ktorej poslednou záchranou je `128000`. Pozri [Dĺžka kontextu podľa poskytovateľa](#per-provider-context-length-context_length_provider). |
| `USAGE_TOKEN_BUFFER` | `100` | Dodatočná rezerva tokenov pri sledovaní kvót využitia. |
### Dĺžka kontextu podľa poskytovateľa (`CONTEXT_LENGTH_`)
`open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) tiež číta
formu **pre jednotlivých poskytovateľov**, ktorej názov sa za behu skladá z ID poskytovateľa,
takže ju nemožno vymenovať riadok po riadku v tabuľke vyššie ani v `.env.example`.
**Názov.** `CONTEXT_LENGTH_`, kde `` je ID poskytovateľa prevedené na veľké písmená, pričom každý znak mimo `A-Z` / `0-9` sa nahradí `_`. ID poskytovateľa je kanonické ID po rozlíšení aliasov (časť `provider` reťazca `provider/model` po rozlíšení krátkeho aliasu). Vlastné uzly kompatibilné s OpenAI alebo Anthropic používajú svoje vygenerované ID uzla, takže UUID je súčasťou názvu premennej. Hodnota je kladné celé číslo vyjadrujúce počet tokenov; čokoľvek iné (prázdne, `0`, záporné, nečíselné) sa ignoruje a rozlíšenie prechádza na ďalší krok.
| ID poskytovateľa | Názov premennej |
| ----------------------------------------------------------- | -------------------------------------------------------------------------- |
| 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 |
**Priorita.** Pre pár `provider/model` vyhráva prvý krok, ktorý poskytne hodnotu:
1. `CONTEXT_LENGTH_` pre daného poskytovateľa.
2. `CONTEXT_LENGTH_DEFAULT` (globálne prepísanie prostredím).
3. Okno pre jednotlivé modely: trvalé prepísanie kontextu (nastavené v dashboarde alebo automaticky pripnuté rekonciliátorom objavovania, pozri `CONTEXT_WINDOW_RECONCILE_INTERVAL`), inak hodnota zo synchronizovaného katalógu / models.dev.
4. `defaultContextLength` z registra poskytovateľa.
5. Heuristiky podľa názvu modelu (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000).
6. Vstavané predvolené hodnoty pre jednotlivých poskytovateľov, potom `128000`.
Oba kroky prostredia sa vzťahujú na **celého poskytovateľa**: každý model tohto poskytovateľa dostane rovnaký limit a majú prednosť pred prepísaniami jednotlivých modelov v dashboarde. Ak odlišné okno potrebuje iba jeden model poskytovateľa, použite namiesto toho prepísanie pre daný model v dashboarde.
**Rozsah.** Táto reťaz riadi kontrolu kontextového okna pri spracovaní požiadavky (odmietnutie `context_length_exceeded` / „Input exceeds context window" v `open-sse/handlers/chatCore.ts`), rozpočty kompresie promptov a limity kontextu kombinácií. `context_length` zverejňovaný cez `GET /v1/models` môže naďalej pochádzať z metadát katalógu alebo registra a nie je zaručené, že odráža prepísanie prostredím.
**Príklad.** Poskytovateľ, ktorého model prijíma okno s 1 050 000 tokenmi, zatiaľ čo katalóg uvádza 128 000:
```dotenv
CONTEXT_LENGTH_AGENTROUTER=1050000
```
Po zmene server reštartujte: hodnota sa číta z prostredia serverového procesu. V **desktopovej aplikácii** beží server ako podriadený proces a nevidí systémovú premennú nastavenú až po spustení aplikácie; vložte riadok do súboru `.env`, ktorý aplikácia načítava (poradie vyhľadávania v [Príručka Electron: vyhľadávanie súboru prostredia](../guides/ELECTRON_GUIDE.md#environment-file-lookup)), potom aplikáciu úplne ukončite a znova spustite.
### Kompresia
| Premenná | Predvolená hodnota | Popis |
| ------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | nenastavené | Dôverovať projektovému súboru `.rtk/filters.json` bez hashu v `.rtk/trust.json`. Používajte iba v kontrolovanom lokálnom vývoji. |
### Memory Engine (plán 21)
### Náklady pamäte, zručností a obnovy tokenov na slučku udalostí (#10349)
OmniRoute je **jediný proces Node**. Extrakcia/získavanie pamäte, vkladanie zručností a obnova tokenov poskytovateľov bežia na **rovnakej slučke udalostí** ako `GET /healthz` a dashboard. Nejde o pracovné vlákno (worker thread).
| Úloha | Kód | Predvolené | Kontrola operátorom |
| ----------------------------- | ---------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Extrakcia / získavanie pamäte | `src/lib/memory/` | Dashboard **memoryEnabled** (predvolene zapnuté) | Vypnite v **Settings → Memory**. Okrem vypnutia funkcie v nastaveniach neexistuje samostatný vypínač cez premennú prostredia. |
| Vkladanie zručností | `src/lib/skills/injection.ts` | Dashboard **skillsEnabled** (predvolene zapnuté) | Vypnite v **Settings → Memory/Skills** (`skillsEnabled`). Nastavenia sandboxu nižšie len obmedzujú vykonávanie potom, čo je vkladanie už zapnuté. |
| Obnova tokenov | `src/sse/services/tokenRefresh.ts` | Zapnuté pre pripojených OAuth/web poskytovateľov | Odpojte poskytovateľa alebo nechajte tokeny platné; dnes neexistuje premenná prostredia `TOKEN_REFRESH=0`. |
Ak je `/healthz` pomalý na inak nevyťaženom stroji, najprv vypnite pamäť + zručnosti, potom skontrolujte záťaž katalógu/kompresie (#10303, #9685). Tieto funkcie sa v bodoch `await` vzdávajú riadenia, ale stále konkurujú o jediné vlákno.
Nastavenia vrstvy embeddingov, vektorového úložiska a rerankingu pre subsystém perzistentnej pamäte (`src/lib/memory/`).
| Premenná | Predvolená hodnota | Popis |
| ------------------------------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 min) | TTL pre medzipamäť embeddingov v pamäti (podľa podpisu zdroja/modelu/dimenzie). |
| `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Maximálny počet LRU položiek uchovávaných v medzipamäti embeddingov. |
| `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | ID HF repozitára pre voliteľný lokálny MiniLM pipeline `@huggingface/transformers` (~23 MB int8, ~400 MB RAM). |
| `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | ID HF repozitára pre statický embedder potion/Model2Vec s vyhľadávacou tabuľkou. Sťahuje sa lenivo do adresára medzipamäte. |
| `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Adresár používaný na ukladanie súborov statického modelu potion do medzipamäte. Ak nie je nastavený, predvolene sa nachádza pod `DATA_DIR`. |
| `HF_HUB_ENDPOINT` | `https://huggingface.co` | Prepísanie základnej URL Hugging Face Hub používanej v `staticPotion.ts` (napr. zrkadlový endpoint pre air-gapped prostredia). |
| `MEMORY_VEC_TOP_K` | `20` | Predvolené top-K používané brute-force vektorovým vyhľadávaním `sqlite-vec` v súbore `src/lib/memory/vectorStore.ts`. |
| `MEMORY_RRF_K` | `60` | Konštanta `k` Reciprocal Rank Fusion pre hybridné vyhľadávanie FTS5 + vektorové (recept sqlite-vec). |
| `VECTOR_STORE_DISABLE_VEC` | `false` | Testovacia/diagnostická štrbina v `getVectorStore()` (`src/lib/memory/vectorStore.ts`): keď je `true`, vynúti vektorové úložisko na `null` (simuluje cloud/WASM prostredie bez `sqlite-vec`), čím sa vyhľadávanie v pamäti degraduje na fulltextové vyhľadávanie kľúčových slov FTS5. V produkcii ponechajte nenastavené. |
| `NOTION_API_KEY` | _(nenastavené)_ | API kľúč pre backend Notion (používa ho známa predvoľba backendu v `genericBackend.ts`). |
| `NOTION_API_URL` | `https://api.notion.com/v1` | Základná URL pre Notion API (možno prepísať pre self-hosted alternatívy Notionu). |
| `OBSIDIAN_API_KEY` | _(nenastavené)_ | API kľúč pre backend Obsidian Vault (používa ho známa predvoľba backendu v `genericBackend.ts`). |
| `OBSIDIAN_API_URL` | `http://localhost:27123` | Základná URL pre Obsidian Vault API (možno prepísať pre vzdialený vault). |
| `MEMORY_TYPED_DECAY_ENABLED` | `false` | Hlavný prepínač typovaného zániku pamäte TV6. **Voliteľné (predvolene vypnuté)** — sweep **maže** zaniknuté spomienky. Pri vypnutí sú `access_count`/`last_accessed_at` čisto telemetria a nič sa nikdy nemaže. |
| `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (dni), po ktorom nepoužívaná `episodic` spomienka zaniká. `0` urobí aj epizodickú imunnou. Trvanlivé typy (`factual`/`procedural`/`semantic`) sú vždy imunné. Hodiny zániku sa resetujú podľa `last_accessed_at`. |
| `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | Spomienka vložená `>=` toľkokrát sa stane imunnou voči zániku bez ohľadu na typ. `0` vypína imunitu prístupu. |
| `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (disabled) | Interval (sekundy) pre voliteľný periodický sweep zániku v `src/lib/memory/typedDecay.ts`. `0`/nenastavené = žiadny periodický sweep. Dvojnásobne voliteľné: vyžaduje aj `MEMORY_TYPED_DECAY_ENABLED=true`. |
| `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(nenastavené)_ | ID poskytovateľov oddelené čiarkou (nerozlišujú veľkosť písmen), ktorí akceptujú `system` správu **iba na indexe 0** (`src/lib/memory/injection.ts`). Pre týchto je bezpečné vloženie pamäte do stredu poľa (cache-safe) nebezpečné vo viackolových konverzáciách, takže sa pamäť namiesto toho zlúči/pridá na začiatok ako vedúca systémová správa. Predvolene len `xiaomi-mimo`/`mimo`; rozšírte pre self-hosted OpenAI-kompatibilné endpointy (napr. Qwen3.5+/3.6), ktorých šablóna četu vynucuje rovnaké obmedzenie jednej vedúcej systémovej správy. |
### Príklad Dockeru s nízkou RAM
`128` je len pre dashboard. Kódovací agenti s touto veľkosťou haldy zlyhajú s `FATAL ERROR` počas dlhých `/v1/responses`. Nepoužívajte tento príklad ako bránu 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. Synchronizácia cien
Automatická synchronizácia údajov o cenách modelov z externých zdrojov.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ----------------------- | ------------------ | ------------------------ | ----------------------------------------- |
| `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Voliteľná pravidelná synchronizácia cien. |
| `PRICING_SYNC_INTERVAL` | `86400` (24h) | `src/lib/pricingSync.ts` | Interval synchronizácie v sekundách. |
| `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Zdroje údajov oddelené čiarkami. |
---
## Synchronizácia ELO rebríčka Arena
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------- | ------------------ | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Pravidelná synchronizácia ELO rebríčka Arena AI, konfigurovateľná pomocou príznakov funkcií na ovládacom paneli; nastavením na `false` ju možno vypnúť. |
| `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | Forma prefixu používaná pre ID modelov v `GET /v1/models`. Hodnota `dual` uvádza pre každý model prefix krátkeho aliasu aj kanonický prefix poskytovateľa (spätná kompatibilita — približne zdvojnásobuje katalóg); `alias` poskytuje jedno ID pre každý model; `canonical` poskytuje iba úplný prefix ID poskytovateľa (poskytovatelia, ktorých alias už je kanonickým ID, si zachovajú jednu položku). Klienti môžu toto nastavenie pre konkrétnu požiadavku prepísať pomocou `?prefix=alias`. Pozrite si [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). |
| `ARENA_ELO_SYNC_INTERVAL` | `86400` (24h) | `src/lib/arenaEloSync.ts` | Interval synchronizácie v sekundách. |
---
## Poskytovateľ PromptQL Playground (neoficiálny/experimentálny)
Reverzne analyzované premostenie relácií GraphQL pre prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`). Všetky možnosti sú voliteľné — predvolené hodnoty smerujú na verejné koncové body prostredia Playground; prepíšte ich iba pri vlastnom hosťovaní alebo alternatívnom nasadení PromptQL.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | Koncový bod GraphQL používaný na operácie s chatom a reláciami. |
| `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | Koncový bod GraphQL používaný na zisťovanie zostatku a využitia kreditov. |
| `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Koncový bod používaný na obnovenie tokenu podľa možností. |
| `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Maximálny čas (ms) zisťovania `thread_events` pred vypršaním časového limitu. |
---
## Webový poskytovateľ HyperAgent (neoficiálny/experimentálny)
Reverzne analyzovaný most relácie pre hyperagent.com (`src/shared/constants/providers/web-cookie.ts`). Voliteľné — predvolene odkazuje na verejný koncový bod fakturácie/využitia; prepíšte ho iba pri vlastnom hosťovaní alebo alternatívnom nasadení HyperAgent.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------- | --------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------- |
| `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Koncový bod používaný na načítanie blokov kreditov fakturácie/využitia. |
---
## Kvóty využitia Kilo Code
Vyhľadávanie osobného zostatku v USD a využitia Kilo Pass pre poskytovateľa Kilo Code. Voliteľné — predvolene odkazuje na verejné rozhranie API služby Kilo; prepíšte ho iba pre relay alebo testovaciu fixtúru. Overenie používa existujúci prístupový token OAuth daného pripojenia.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| -------------- | --------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------- |
| `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Základná URL adresa používaná na načítanie osobného zostatku Kilo Code a využitia Kilo Pass. |
---
## Webový poskytovateľ Adobe Firefly (neoficiálny/experimentálny)
Obnovenie relácie riadené prehliadačom pre webového poskytovateľa Adobe Firefly
(`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`,
`open-sse/services/adobeFireflyClient.ts`). Voliteľné — všetky predvolené hodnoty sú vyladené pre bežnú
inštaláciu na stolnom počítači.
> **Odstránené v #9255.** Staré runtime prostredie Chrome pripojené cez CDP (adobeFireflyChromeRuntime.ts) bolo
> nahradené službou prihlasovania cez prehliadač Playwright a jeho nastavenia už neexistujú. Premenné
> ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART spolu s
> ADOBE_FIREFLY_LOGIN_WAIT_MS a ADOBE_FIREFLY_FORTER_WAIT_MS sa nikde v
> kódovej základni nenačítavajú — ich nastavenie nemá žiadny účinok.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------ | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Nastavte na `1` pre skutočne bezhlavý režim Chrome (je známe, že generovanie nefunguje; iba na ladenie). |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Zapnutie/vypnutie proaktívneho predhriatia prehliadača. Hodnota `0` zakáže proaktívne predhriatie (obnova po chybe 408 uprostred dávky sa naďalej uplatňuje). |
| `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Nastavením na `0` zakážete ukladanie relácie Adobe Firefly na disk. |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(nenastavené)_ | `open-sse/services/adobeFireflySession.ts` | Minimálny interval (ms) vynútený medzi po sebe nasledujúcimi odoslaniami, ktorý prepíše vstavanú predvolenú hodnotu. |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(nenastavené)_ | `open-sse/services/adobeFireflySession.ts` | Dodatočný interval (ms) pridaný po úspešnej dávke, ktorý prepíše vstavanú predvolenú hodnotu. |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(nenastavené)_ | `open-sse/services/adobeFireflyClient.ts` | Základné oneskorenie (ms) pred odoslaním požiadavky na generovanie, ktoré prepíše vstavanú predvolenú hodnotu. |
---
## 19. Synchronizácia modelov (vývoj)
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ----------------------------------- | ------------------ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MODELS_DEV_SYNC_ENABLED` | _(nenastavené)_ | `src/lib/modelsDevSync.ts` | Pevné prepísanie nastavenia synchronizácie cien models.dev. Nenastavené = rešpektuje Nastavenia > AI (`modelsDevSyncEnabled`). `0`/`false`/`off`/`no` **má prednosť pred databázou** a preskočí pravidelnú synchronizáciu aj skenovanie SQL/JSON pomocou `getModelsDevPricing()` (obnovenie, keď je ovládací panel zablokovaný v rovnakej slučke udalostí). `1`/`true`/`on`/`yes` vynúti synchronizáciu. Uloženie/vymazanie cien naďalej volá `backupDbFile("pre-write")`, čo pri 60-minútovom obmedzení alebo `DISABLE_SQLITE_AUTO_BACKUP` nevykoná žiadnu operáciu. |
| `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 h) | `src/lib/modelsDevSync.ts` | Interval synchronizácie katalógu modelov počas vývoja v sekundách. |
| `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 h) | `src/lib/contextWindowResolver.ts` | Interval (v sekundách) pre samoopravný mechanizmus zosúladenia kontextového okna (5004): okná deklarované poskytovateľom a zistené prostredníctvom `/models` pripne ako prepísania `auto:discovery`, keď sa odlišujú od katalógu. Nastavením na `0` ho zakážete. Opätovne používa už synchronizované údaje (bez nového načítania); nikdy neprepíše `manual` prepísania. |
---
## 20. Nastavenia špecifické pre poskytovateľa
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ---------------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterCatalog.ts` | TTL cache katalógu modelov OpenRouter. |
| `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Zahrnúť do odpovedí `/v1/models` polia `name` vhodné na zobrazenie. Vypnite pre klientov, ktorí očakávajú iba ID. |
| `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | Horná hranica čakania v studenej ceste pre zlúčené znovuzostavenie katalógu `GET /v1/models` (#12627). Pri vypršaní časového limitu sa vráti posledná platná odpoveď 200, ak existuje. |
| `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 dní) | `src/lib/db/models/activeSyncedCatalog.ts` | Vek, po ktorom synchronizovaný zoznam modelov pripojenia prestane byť smerodajný pre smerovanie a otvorene zlyhá (fails open) do registra (#12849). Riadky bez časovej pečiatky sa považujú za zastarané. |
| `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | Ako dlho sa pomalá odpoveď `GET /api/usage/analytics` znovu používa pre rovnaký query string (#15629). `0` cache vypne. |
| `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | Do cache sa ukladajú iba analytické odpovede, ktorých zostavenie trvalo aspoň takto dlho, takže malé inštancie vždy vidia čerstvé dáta. |
| `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | nenastavené (vypnuté) | `src/app/api/cache/route.ts` cez `src/lib/usage/analyticsResponseCache.ts` | Dobrovoľné zapnutie (opt-in) (#16361). Ak je nastavené na nezáporné celé číslo N, časť histórie použitia odpovede `GET /api/cache` (súčty prompt-cache + trend) sa obslúži zo zdieľanej cache analytických odpovedí, ak jej zostavenie trvalo aspoň N ms, pre každé obmedzené (clamped) okno `trendHours`, na dobu `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` (história môže zaostávať až o toto TTL; `DELETE /api/cache` ju zneplatní). Nenastavené alebo neplatné = história sa číta naživo pri každej požiadavke. |
| `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | Maximálne čakanie na úlohy generovania obrázkov NanoBanana. |
| `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | Frekvencia pollingu úloh NanoBanana. |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Základné oneskorenie exponenciálneho backoffu pri opakovanom odosielaní upscale u Adobe Firefly. |
| `AWS_REGION` | _(nenastavené)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Región použitý na zostavenie koncových bodov AWS Bedrock (Kiro, audio). |
| `AWS_DEFAULT_REGION` | _(nenastavené)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Záložná hodnota, keď `AWS_REGION` nie je nastavená. |
| `CLOUDFLARE_ACCOUNT_ID` | _(nenastavené)_ | `open-sse/executors/cloudflare-ai.ts` | ID účtu pre Cloudflare Workers AI. |
| `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(nenastavené)_ | `open-sse/executors/cloudflare-playground.ts` | Úplná cesta k binárnemu súboru desktopového Chrome pre exekútor Cloudflare AI Playground, použitá, keď kontrola headless odtlačku zablokuje Chromium dodávané s Playwrightom. |
| `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _(nenastavené = bez limitu dĺžky)_ | `open-sse/executors/codebuddy/shared.ts` | Voliteľný limit dĺžky systémových promptov volajúceho odosielaných do CodeBuddy (CN a medzinárodná verzia). Predvolene sa nahradí neutrálnym iba prompt nesúci značku identity kódovacieho agenta (obsahový filter Tencentu ich zamietne); dlhé prompty sa ponechajú. Celé číslo > 0 nahradí aj každý systémový prompt dlhší než daný počet znakov; nenastavené, `0` alebo neceločíselná hodnota limit vypne. Každá náhrada sa zapíše do logu s uvedením, ktoré pravidlo sa aktivovalo (značka identity alebo dĺžka). |
| `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Prepíše základňu Cloudflare REST API používanú nasadzovačom Workers relay proxy poolu (#4640 / 9router#1360). |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Predvolený názov projektu workera navrhovaný v modálnom okne „Deploy Relay“ fondu proxy. |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Nastavte na `false`, aby sa na karte Proxy Pool skryla možnosť relay Cloudflare Workers. |
| `CLOUDFLARED_BIN` | automatická detekcia | `src/lib/cloudflaredTunnel.ts` | Vlastná cesta k binárnemu súboru `cloudflared`. |
| `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Transportný protokol tunela: `http2` (predvolený), `quic` alebo `auto`. |
| `CLOUDFLARED_CONFIG` | _(nenastavené)_ | `src/lib/cloudflaredTunnel.ts` | Cesta k lokálne spravovanému súboru `config.yml` pre cloudflared (s `tunnel:`, `credentials-file:`, `ingress:`). Ak je nastavená, OmniRoute spustí `tunnel --config run` (pomenovaný tunel) namiesto dočasného rýchleho tunela. |
| `CLOUDFLARED_HOSTNAME` | _(z položky ingress v konfigurácii)_ | `src/lib/cloudflaredTunnel.ts` | Prepísanie verejného hostname pomenovaného tunela (napr. `ai.example.com`), hlásené ako `publicUrl`/`apiUrl`. Ak nie je nastavené, číta sa z prvého hostname `ingress` v konfigurácii. |
| `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Prepíše základňu REST API Deno Deploy používanú nasadzovačom relay fondu proxy (#4643 / 9router#1437). |
| `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Predvolený názov aplikácie Deno Deploy navrhovaný v modálnom okne „Deploy Relay“ fondu proxy. |
| `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Nastavte na `false`, aby sa na karte Proxy Pool skryla možnosť relay Deno Deploy. |
| `SEARCH_CACHE_TTL_MS` | `300000` (5 min) | `open-sse/services/searchCache.ts` | TTL pre ukladanie odpovedí vyhľadávacieho API (Perplexity, Brave atď.) do medzipamäte. |
| `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Odkryje experimentálne používateľské rozhranie poskytovateľa kompatibilného s CC pre relay určené iba pre Claude Code. |
| `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Prepíše hostiteľa, na ktorom počúva vstavaná inštancia 9router. |
| `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Prepíše port, na ktorom počúva vstavaná inštancia 9router. |
| `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Hostiteľ väzby pre WebSocket proxy vstavanej služby (predvolene iba loopback). |
| `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Port pre server WebSocket proxy vstavanej služby. |
| `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | Hostiteľ mosta CLIProxyAPI (staršia integrácia). |
| `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | Port mosta CLIProxyAPI. |
| `CLIPROXYAPI_API_KEY` | _(prázdne)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | Záložný kľúč dátovej roviny, keď chýba nastavenie `cliproxyapi_api_key`. |
| `CLIPROXYAPI_MANAGEMENT_KEY` | _(prázdne)_ | `src/lib/services/cliproxyAccountHealth.ts` | Správcovský kľúč na čítanie stavu účtu z externe spravovanej inštancie CLIProxyAPI. |
| `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | Konfiguračný adresár CLIProxyAPI. |
| `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Rozhranie hostiteľa, na ktorom docker-compose publikuje sidecar `cliproxyapi` (#12578). Jeho dátový svazok obsahuje prihlasovacie údaje OAuth/API poskytovateľa a pripnutý obraz nemá žiadne prepísanie `api-keys` dátovej roviny prostredníctvom premenných prostredia (iba pripojený `config.yaml`), takže `0.0.0.0` vystaví službu obsahujúcu prihlasovacie údaje celej sieti LAN. |
| `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Prepíše port, na ktorom počúva vstavaný démon orchestrácie agentov Mux (coder/mux) (vždy 127.0.0.1). |
| `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Prepíše port, na ktorom počúva vstavaný démon open-wa (automatizácia WhatsApp Web) (vždy 127.0.0.1). |
| `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Host na bind/connect vstavanej služby Dario (predvolene iba loopback). |
| `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Port vstavanej služby Dario. |
| `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Host na bind/connect vstavanej služby Dario (predvolene iba loopback). |
| `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Port vstavanej služby Dario. |
| `LOCAL_HOSTNAMES` | _(prázdne)_ | `open-sse/config/providerRegistry.ts` | Ďalšie názvy hostov oddelené čiarkami, ktoré sa považujú za „lokálne“ (názvy služieb Docker atď.). |
`ENABLE_CC_COMPATIBLE_PROVIDER` je určená iba pre relé tretích strán, ktoré prijímajú výhradne
klientov Claude Code. OmniRoute prepisuje požiadavky tak, aby ich tieto relé prijali. Ak chcete
používať iba Claude Code CLI, alebo si nie ste istí, čo tieto relé sú, nechajte túto možnosť
vypnutú a namiesto toho pridajte bežného poskytovateľa kompatibilného s Anthropic.
---
## 21. Zdravie proxy
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Časový limit kontroly zdravia pre rýchle zlyhanie (fast-fail). |
| `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Časové okno (v hodinách) na výpočet priemernej latencie kandidátnych proxy serverov v stratégii fondu optimalizovanej na latenciu. |
| `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | TTL vyrovnávacej pamäte výsledkov kontroly zdravia. |
| `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | TTL vyrovnávacej pamäte pre neúspešné sondy zdravia proxy. Táto hodnota by mala byť kratšia ako `PROXY_HEALTH_CACHE_TTL_MS`, aby sa prechodné časové limity proxy pri vysokej súbežnosti rýchlo opakovali bez vypnutia mechanizmu fast-fail pre skutočne nefunkčné proxy servery. |
| `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Nastavte `false` na vypnutie plánovača zdravia proxy na pozadí, ktorý pravidelne sonduje registrované proxy servery. |
| `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval prehľadávania plánovača zdravia na pozadí v ms (minimum `60000`). |
| `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Interval sondovania v ms pre edge-relay proxy (`deno`/`vercel`/`cloudflare`), ktorých sondy prebúdzajú spoplatnený serverless izolát (minimum `60000`). |
| `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval prechodu obnovy na pozadí v ms: ako často sa opätovne sondujú predtým nefunkčné proxy, aby sa obnovená proxy vrátila do rotácie bez reštartu. Hodnoty pod `60000` sa vrátia na predvolenú hodnotu. |
| `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Cieľ sondy dostupnosti, ktorý používa plánovač a endpoint `/api/settings/proxies/auto-test`. Nastavte ho na internú/self-hosted URL, aby ste sa vyhli verejnej predvolenej hodnote. |
| `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Počet sond spustených naraz v rámci dávky, zdieľaný plánovačom a endpointom `/api/settings/proxies/auto-test`. Spodná hranica je 1 a horná hranica 50. |
| `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Oneskorenie v ms medzi dvoma odštartovaniami sond v rámci dávky. Bez neho celá dávka odchádza v rovnakom okamihu a zdieľaná egress IP môže naraziť na rate-limitovaný cieľ. Nastavte `0` na vypnutie rozostupu; obmedzené na 5000. |
| `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Nastavte "false", aby ste prestali sondovať skutočného hostiteľa priradeného poskytovateľa proxy (`GET /models`, bez API kľúča) a vždy namiesto toho použili `PROXY_HEALTH_TEST_URL`. |
| `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | Keď je `false` (predvolené), automatizované sondy dostupnosti (plánovač + tlačidlo "Test All" na `/api/settings/proxies/auto-test`) sú **iba na čítanie** a nikdy nezapisujú stav proxy — iba operátor nastavuje aktívny/neaktívny stav, takže nestabilná sonda nemôže odrezať priradenú proxy (#6246). Nastavte `true` na obnovenie pôvodného správania test-and-set. |
| `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Opt-in feature flag (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prepis z dashboard DB má prednosť). `true` (alebo `1`, `yes`) zopakuje prázdne preložené streamované ťahy cez bežnú cestu poverení (maximálne `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` pokusov) namiesto vystavenia prázdnej odpovede 200 alebo odpovede 502 s prázdnym obsahom. |
| `EMPTY_STREAM_SIBLING_RECOVERY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Opt-in feature flag (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prepis z dashboard DB má prednosť). `true` (alebo `1`, `yes`) aktivuje sondu obsahu prázdneho streamu pre Claude/Codex a po ťahu `empty_content` využije existujúci obmedzený pokus na iné vhodné pripojenie, bez cooldownu alebo blokovania modelu. |
| `STREAM_LATE_OUTPUT_PROBE_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Opt-in feature flag (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prepis z dashboard DB má prednosť). `true` (alebo `1`, `yes`) pokračuje vo vzorkovaní jedného preposlaného chunku zo 16 po prvých 64, aby neskorý viditeľný výstup stále označil stream ako taký, ktorý vyprodukoval výstup (osamelá chyba 5xx po výstupe zostáva v rozsahu požiadavky namiesto blokovania iba modelu). |
| `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Voliteľný feature flag (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prednosť má prepísanie z dashboard DB). `true` (alebo `1`, `yes`) zobrazí v dashboarde pod proxy poolom iba-čítacie pozorovanie egress poolu (odlišné egress IP adresy, pripojenia a najviac videných za jednou IP za posledných 24 h, z proxy logu). Nikdy sa nepoužíva na smerovanie. |
| `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Voliteľný feature flag (pozri [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); prednosť má prepísanie z dashboard DB). `true` (alebo `1`, `yes`) prijíma operátorom poslané datované pozorované adresy pre každého člena poolu a zlučuje ich s čítaním žurnálu na účely zobrazenia a poradia poolu. |
| `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Pozorovacie okno v hodinách pre operátorom poslané egress riadky (načítava sa pri každom čítaní; reštart nie je potrebný). Obmedzené na 1..168; hodnota mimo rozsahu, nečíselná alebo prázdna sa vráti na 24 s jediným varovaním pre celý proces, nikdy sa nevyhodí výnimka. |
| `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Nastavte `true`, aby plánovač automaticky odstraňoval proxy po opakovaných po sebe idúcich zlyhaniach. |
| `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | Počet po sebe idúcich zlyhaní, po ktorých plánovač automaticky odstráni proxy (keď `PROXY_AUTO_REMOVE=true`). |
| `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Nastavte `true`, aby plánovač po opakovaných po sebe idúcich zlyhaniach proxy mäkko deaktivoval (stav `dead`, nikdy sa nevymaže) namiesto jeho odstránenia. Nedestruktívna alternatíva k `PROXY_AUTO_REMOVE`: proxy okamžite vypadne z rozlíšenia poolu/rotácie (filter živého stavu používaný pri rozlíšení scope-poolu ho už vylučuje) a automaticky sa znova aktivuje, keď začne opäť prechádzať sondami. Zdieľa prah `PROXY_AUTO_REMOVE_AFTER`. Ak sú oba flagy `true`, prednosť má `PROXY_AUTO_REMOVE`. |
| `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | Voliteľné pasívne preskočenie: keď `true`, plánovač preskočí živú sondu pre endpoint, ktorého nedávna produkčná prevádzka už dokazuje jeho funkčnosť (aspoň jeden úspech a žiadne pripísané zlyhanie proxy v okne, pozorovaný presne jeden provider). Predvolene vypnuté: každá proxy sa sonduje. |
| `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Okno produkčnej prevádzky v ms, ktoré pasívne preskočenie sleduje (obmedzené `60000..599999`). Kratšie než 10-minútový interval prehliadky, aby nedávne zlyhanie dominovalo namiesto toho, aby bolo zriedené. |
| `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Povolí OAuth a validačným tokom providera obísť pripnutú proxy a pripojiť sa priamo, keď predbežné kontroly dosiahnuteľnosti proxy zlyhajú. Efektívna priorita je: prepísanie z Feature Flags DB > env premenná > predvolená hodnota. |
| `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30 s) | `src/lib/resilience/settings.ts` | Predvolený rozpočet **čakania vo fronte**: ako dlho môže požiadavka čakať na slot poskytovateľa a zostať vo fronte, kým bude zamietnutá, pričom sa nikdy nedostane k upstreamu. Časovač sa zruší, keď sa úloha začne vykonávať — vykonávanie je ohraničené samostatne pomocou `RATE_LIMIT_EXECUTION_MAX_WAIT_MS`. Premenná prostredia nastavuje iba predvolenú hodnotu: perzistentné `resilienceSettings.requestQueue.maxWaitMs` a následne `rateLimitOverrides.maxWaitMs` na jednotlivé pripojenie majú prednosť pred ňou. |
| `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 min) | `open-sse/services/rateLimitManager.ts` | Strop pre to, ako dlho môže prijatá požiadavka zostať vo vykonávaní, kým vyprší jej rate-limit rezervácia — oddelené od rozpočtu čakania vo fronte, aby pomalý štart sťahovania na neinkrementálnych bránach nespôsobil timeout (#12027). |
| `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (vypnuté) | `open-sse/services/rateLimitManager.ts` | Limit prijímania do fronty: zamietne so stavom 429 `queue_full`, keď je už toľko požiadaviek vo fronte. `0` = bez obmedzenia (predvolené). |
| `RATE_LIMIT_AUTO_ENABLE` | _(nenastavené)_ | `open-sse/services/rateLimitManager.ts` | Vynúti zapnutie/vypnutie automatickej záchytenej siete rate limitu bez ohľadu na perzistentné nastavenie v Dashboarde (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`). Akceptuje `true`/`1`/`on` na vynútenie zapnutia, `false`/`0`/`off` na vynútenie vypnutia. Keď je aktívna (predvolené), aktívne pripojenia s API kľúčom sú automaticky chránené rate limitom. Nastavenie `rateLimitProtection: false` na jednotlivé pripojenie vypne explicitnú ochranu, ale nevyníma z tejto záchytenej siete; nastavenie tejto premennej prostredia na `false` je globálny mechanizmus na spustenie pripojení s API kľúčom bez front rate limitu. |
| `PROVIDER_COOLDOWN_ENABLED` | _(nenastavené → vypnuté)_ | `open-sse/services/providerCooldownTracker.ts` | Voliteľné (opt-in) globálne sledovanie cooldownu poskytovateľa/pripojenia naprieč požiadavkami. Predvolene VYPNUTÉ (prekrýva sa s Connection Cooldown / Provider Circuit Breaker). Akceptuje `true`/`1`/`on` na zapnutie. |
| `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Minimálny cooldown (ms), kým sa zlyhavší poskytovateľ/pripojenie skúsi znova. Škáluje sa exponenciálne s počtom po sebe idúcich zlyhaní. Používa sa iba pri zapnutom `PROVIDER_COOLDOWN_ENABLED`. |
| `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 min) | `open-sse/services/providerCooldownTracker.ts` | Maximálny strop cooldownu (ms), po ktorom sa zlyhavší poskytovateľ/pripojenie bezpodmienečne skúsi znova. Používa sa iba pri zapnutom `PROVIDER_COOLDOWN_ENABLED`. |
| `STREAM_RECOVERY_ENABLED` | _(nenastavené → vypnuté)_ | `src/lib/resilience/settings.ts` (seed) → `open-sse/services/streamRecovery.ts` (logika) | **Čo:** transparentná obnova skrátených upstream streamov (port z free-claude-code). Podrží úvodné SSE okno až do hodnoty `STREAM_RECOVERY.HOLDBACK_MS` (750 ms), aby sa _pre-commit_ prerušenie — také, ktoré nastane skôr, než akýkoľvek bajt dosiahne klienta — znova otvorilo a neviditeľne zopakovalo. **Kedy zapnúť:** pri nespoľahlivých upstreamoch, ktoré sa na začiatku streamu často skrátia na 0 bajtov; nechajte VYPNUTÉ, ak si nemôžete dovoliť až 750 ms pridaného času do prvého tokenu pri každom streame. Akceptuje `true`/`1`/`on`. Napĺňa perzistentné nastavenie Resilience; po jeho nastavení má prednosť nastavenie z Dashboardu. |
| `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(nenastavené → vypnuté)_ | `src/lib/resilience/settings.ts` (predvolené) → `open-sse/services/streamRecovery.ts` (logika) | **Čo:** pokračovanie uprostred streamu (Fáza 4.4) — po _post-commit_ skrátení (bajty už dosiahli klienta) sa odošle nová požiadavka s čiastočným textom ako assistant prefill a chýbajúca koncovka sa prišije. Len čisto textové streamy kompatibilné s OpenAI; nikdy sa nespustí, ak prebieha volanie nástroja. **Kedy povoliť:** dlhé generovania, ktoré sa prerušia uprostred odpovede, a akceptujete, že obnovený koniec dorazí naraz ako jedna dávka namiesto token po tokene. Nezávislé od `STREAM_RECOVERY_ENABLED` (iný profil rizika). Akceptuje `true`/`1`/`on`. |
| `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(nenastavené → vypnuté)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Dobrovoľný watchdog užitočného výstupu aktívneho streamu. Detekuje streamy, ktoré síce ďalej odosielajú chunky, ale zostávajú pod nakonfigurovanou rýchlosťou výstupu asistenta; heartbeaty, udalosti usage, prázdne delty a fázy nástrojov/uvažovania sa nevydávajú za pokrok. Oddelené od timeoutov nečinnosti a pevných časových limitov. |
| `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Ochranná lehota pred vyhodnotením priepustnosti, ohraničená na 0–600000 ms. |
| `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Kĺzavé okno užitočného výstupu, ohraničené na 1000–600000 ms; pred prerušením sa vyžaduje jedno celé okno. |
| `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Minimálna rýchlosť bajtov výstupu asistenta v UTF-8 (konzervatívna aproximácia tokenov), ohraničená na 1–1000000. |
| `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Minimálna nenulová vzorka užitočného výstupu považovaná za merateľnú, ohraničená na 1–1000000 bajtov. |
| `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Interval rozloženia (ms) medzi kontrolami zdravia tokenov poskytovateľov pri spustení. |
| `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Minimálny náhodný jitter (ms) pridaný k `HEALTHCHECK_STAGGER_MS` medzi kontrolami zdravia tokenov poskytovateľov, aby sa predišlo nárazovým vlnám požiadaviek (Issue #1220). |
| `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Maximálny náhodný jitter (ms) pridaný k `HEALTHCHECK_STAGGER_MS` medzi kontrolami zdravia tokenov poskytovateľov, aby sa predišlo nárazovým vlnám požiadaviek (Issue #1220). |
| `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Veľkosť dávky súbežných kontrol pri počiatočnom prechode zdravím tokenov; väčšie hodnoty kontrolujú viac pripojení paralelne, menšie hodnoty znižujú nárazovú záťaž (Issue #7875, regresia #7719). |
| `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Počet automatických opakovaní pri odpovediach cooldownu v rozsahu modelu pred vrátením chyby klientovi. |
| `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Maximálny backoff interval (v sekundách) medzi opakovanými pokusmi počas cooldownu. Je obmedzený touto hodnotou bez ohľadu na upstream `Retry-After`. |
| `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | URL Headroom proxy na úsporu tokenov. Životný cyklus dashboardu (`api/headroom/*`) štandardne spúšťa lokálne CLI `headroom-ai` na loopbacku; prepíšte ju len vtedy, ak má ukazovať na externý Docker sidecar proxy. |
### Konštanty ladenia obnovy streamu
Správanie podržania (holdback) počas obnovy sa ladí pevne zakódovanými konštantami v
`open-sse/config/constants.ts` (`STREAM_RECOVERY`), ktoré sú tu uvedené len pre referenciu —
ich zmena vyžaduje úpravu kódu, nie env premennú:
- `STREAM_RECOVERY.HOLDBACK_MS = 750` — ako dlho sa úvodné SSE okno podrží,
aby sa mohlo predčasné skrátenie zopakovať ešte predtým, než sa klientovi odošle akýkoľvek bajt.
- `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — pevný limit podržaného okna; commit
(vyprázdnenie + priame prepúšťanie) nastane hneď, ako sa nazhromaždí toľko bajtov, bez ohľadu na časovač.
- `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — maximálny počet transparentných opätovných otvorení upstream
streamu, kým podržanie ešte nie je commitnuté.
> **Rate limit s kĺzavým oknom pre jednotlivých poskytovateľov (bez env premennej):** _fallback_
> rate limitu s kĺzavým oknom pre jednotlivých poskytovateľov, portovaný z FCC, existuje v kóde
> (`open-sse/services/providerDefaultRateLimit.ts`, zapojený cez
> `open-sse/services/rateLimitManager.ts`), ale dodáva sa s **prázdnou predvolenou mapou**
> a dnes **nemá žiadnu operátorskú env premennú** — dá sa povoliť len cez testovací hook /
> úpravu kódu. Zámerne nie je uvedený v tabuľke vyššie. Relay limiter pre dvojice `(token, IP)`,
> ktorý ovládací prvok _má_, je `RELAY_IP_PER_MINUTE` (§3 Sieť a porty).
---
## 22. Ladenie
> [!CAUTION]
> Tieto premenné vytvárajú **podrobný výstup** a môžu odhaliť citlivé údaje. **Nikdy ich nepovoľujte v produkčnom prostredí.**
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CURSOR_DEBUG` | _(nenastavené)_ | `open-sse/executors/cursor.ts` | Nastavením na `1` povolíte podrobné protokoly vykonávacieho modulu Cursor (dekódované bloky SSE atď.). |
| `CURSOR_STREAM_DEBUG` | _(nenastavené)_ | `open-sse/executors/cursor.ts` | Spätne kompatibilný alias pre `CURSOR_DEBUG`. |
| `CURSOR_DUMP_FILE` | _(nenastavené)_ | `open-sse/executors/cursor.ts` | Voliteľná cesta k súboru, do ktorého sa ukladajú nespracované dekódované bloky Cursor, keď je nastavené `CURSOR_DEBUG=1`. |
| `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Časový limit nečinnosti prúdu (ms) pre vykonávací modul Cursor. |
| `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Dodatočné časové okno (ms) po mäkkom ukončovači composer kv_after_text, keď vo vyrovnávacej pamäti zostávajú bajty — poskytuje následnému volaniu nástroja exec_mcp čas na dokončenie rámca. |
| `CURSOR_TOOL_DIRECTIVE` | povolené (`!== "0"`) | `open-sse/executors/cursor.ts` | Direktíva potvrdenia nástroja, ktorá zabezpečuje, že composer-2.5 spoľahlivo vykonáva volania nástrojov. Nastavením na `0` ju zakážete. |
| `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(nenastavené)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Operátorom definovaný text systémovej výzvy pripojený k systémovej správe PO preklade (vloženie po preklade), ktorý sa dostane do ciest codex/Responses a `/v1/messages`. Používa sa aj ako prefix direktívy odstraňovaný z opakovaných blokov systémovej preambuly. Ak ho chcete zakázať, ponechajte ho nenastavený. |
| `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (vypnuté) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | Nastavením na `1` odstránite opakované bloky preambuly systémovej výzvy zo začiatku prúdu openai→claude. Predvolene je táto možnosť vypnutá — heuristiky sú prispôsobené anglickej próze a menia obsah odpovede, takže odpoveď, ktorá oprávnene začína takouto časťou, by o ňu prišla. |
| `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Časový limit načítania jedného obrázka (ms) pre vzdialený vizuálny vstup `image_url`. |
| `CURSOR_STATE_DB_PATH` | _(zisťované)_ | `open-sse/utils/cursorVersionDetector.ts` | Prepíše vyhľadávanie databázy stavu IDE Cursor používanej na zisťovanie verzie IDE. |
| `CURSOR_AGENT_CLI_VERSION` | _(zistiť / pripnúť)_ | `open-sse/utils/cursorAgentCliVersion.ts` | ID zostavy Agent CLI (`YYYY.MM.DD-`) pre `x-cursor-client-version: cli-…` pri spustení agenta. |
| `CURSOR_AGENT_BIN` | _(nenastavené)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cesta k binárnemu súboru Cursor Agent používanému na generovanie obrázkov. Ak nie je nastavená, obslužný modul použije `providerSpecificData.agentBin` a potom PATH. |
| `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Časový limit podľa reálneho času (ms) na jeden obrázok pre úlohy Cursor Agent. |
| `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Limit súbežnosti zdieľanej relácie pre úlohy obrázkov Cursor. |
| `CURSOR_IMG_MODEL` | požiadavka / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Prepíše parameter `--model` rozhrania Cursor CLI pre úlohy obrázkov. |
| `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Interval zisťovania výsledku generovania obrázkov UC (uncensored.com) (ms). |
| `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Časový limit podľa reálneho času (ms) na zisťovanie výsledku generovania obrázkov UC. |
| `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Interval zisťovania výsledku generovania videí UC (uncensored.com) (ms). |
| `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Časový limit podľa reálneho času (ms) na zisťovanie výsledku generovania videí UC. |
| `CURSOR_DATA_DIR` | _(zisťované)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Prepíše dátový adresár Cursor Agent CLI (`…/versions/`); ide o rovnakú premennú, akú používa oficiálny agent. |
| `CURSOR_TOKEN` | _(nenastavené)_ | `scripts/ad-hoc/cursor-tap.cjs` | Priamy bearer token Cursor používaný vývojárskymi nástrojmi. |
| `OMNIROUTE_LOG_REQUEST_SHAPE` | zakázané (voliteľne cez `"1"`) | `src/app/api/v1/chat/completions/route.ts` | Zaznamenáva indikátory typu a dĺžky obsahu pre veľké dátové časti chatu, keď je nastavené `"1"`. Predvolene je táto možnosť vypnutá, aby sa obmedzil šum v protokoloch. |
| `DEBUG_RESPONSES_SSE_TO_JSON` | _(nenastavené)_ | `open-sse/handlers/responseTranslator.ts` | Nastavením na `true` zapnete zaznamenávanie podrobností prekladu Responses API SSE→JSON. |
| `DEBUG_CLAUDE_NONSTREAM` | _(nenastavené)_ | `open-sse/handlers/responseTranslator.ts` | Nastavením na `true` zobrazíte prázdne bloky textContent v ceste prekladu odpovede Claude (iba na ladenie). |
| `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(nenastavené)_ | Testovacie prostredie E2E | Nastavením na `true` povolíte testovací režim E2E (uvoľnené overovanie, testovacie háky). |
---
## 23. Integrácia s GitHubom
Umožnite používateľom nahlasovať problémy priamo z ovládacieho panela.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| --------------------- | ------------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `GITHUB_ISSUES_REPO` | _(nenastavené)_ | `src/app/api/v1/issues/report/route.ts` | Repozitár vo formáte `owner/repo`. |
| `GITHUB_ISSUES_TOKEN` | _(nenastavené)_ | `src/app/api/v1/issues/report/route.ts` | Osobný prístupový token GitHubu s rozsahom `issues:write`. |
| `GITHUB_TOKEN` | _(nenastavené)_ | triedenie problémov / pomocné nástroje cloudového agenta | Všeobecný prístupový token GitHubu používaný ako záložná možnosť pre `GITHUB_ISSUES_TOKEN` a pomocnými nástrojmi cloudového agenta v `src/lib/cloudAgent/*`. |
---
## Scenáre nasadenia
Usmernenia SRE pre backend relay (správanie ts/bifrost/auto, umiestnenie 9router oproti CLIProxyAPI a stratégia záložného riešenia pre vysokú priepustnosť) nájdete v dokumente [Stratégia backendu relay](/docs/reference/RELAY_BACKEND_STRATEGY.md).
### Minimálny lokálny vývoj
```bash
JWT_SECRET=$(openssl rand -base64 48)
API_KEY_SECRET=$(openssl rand -hex 32)
INITIAL_PASSWORD=dev123
PORT=20128
NODE_ENV=development
```
### Produkčné prostredie 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
```
### Izolované prostredie / 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 s reverzným 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 zručností (v3.8.0+)
Limity a bezpečnostné nastavenia používané pri spúšťaní používateľom definovaných automatizácií prostredníctvom rámca Skills (`src/lib/skills/`) v izolovanom prostredí.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| --------------------------------- | ------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 s) | `src/lib/skills/builtins.ts` | Časový limit reálneho času pre každé spustenie kódu zručnosti v sandboxe. Pevný limit; všetko, čo trvá dlhšie, sa ukončí. |
| `SKILLS_EXECUTION_TIMEOUT_MS` | _(použije sa `SKILLS_SANDBOX_TIMEOUT_MS`)_ | `src/lib/skills/` | Časový limit koordinácie zručnosti na vysokej úrovni. Nastavte ho vyššie než `SKILLS_SANDBOX_TIMEOUT_MS`, aby ste umožnili viackrokové pracovné postupy. |
| `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Maximálny počet bajtov, ktoré môže zručnosť načítať z jedného súboru v sandboxe. |
| `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Maximálny počet bajtov zachytených z jednej odpovede HTTP v rámci zručnosti. |
| `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Pevný limit počtu znakov stdout/stderr vrátených zo spustenia sandboxu. |
| `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Nastavením na `1`/`true` povolíte odchádzajúce sieťové pripojenia zo sandboxu. Z bezpečnostných dôvodov je predvolený stav **izolovaný**. |
| `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(prázdne)_ | `src/lib/skills/builtins.ts` | Čiarkami oddelený zoznam povolených obrazov kontajnerov pre spúšťanie v sandboxe. Prázdna hodnota povoľuje iba vstavanú predvolenú možnosť. |
| `SKILLS_SANDBOX_DOCKER_IMAGE` | _(vstavaná predvolená hodnota)_ | `src/lib/skills/` | Obraz kontajnera používaný pri vytváraní sandboxu založeného na Dockeri. Prepísaním tejto hodnoty môžete pripnúť vlastný zabezpečený základný obraz. |
| `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Runtime kontajnera pre sandbox zručností: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. Hodnota `auto` vyberie najvhodnejší nainštalovaný runtime podľa hostiteľského operačného systému (Apple Container/OrbStack v systéme macOS, WSL Container v systéme Windows, Podman v systéme Linux), pričom ako záložnú možnosť použije Docker. |
> [!CAUTION]
> Povolenie `SKILLS_SANDBOX_NETWORK_ENABLED=true` otvorí cestu pre odchádzajúcu komunikáciu z ľubovoľného kódu zručnosti. V zdieľaných nasadeniach ho kombinujte s `OUTBOUND_SSRF_GUARD_ENABLED=true` a prísnymi pravidlami `CORS_ORIGIN`/proxy.
---
## 25. Kvóty poskytovateľov, tunely, zálohy a ostatné časti runtime
Koncové body kvót poskytovateľov, sieťové tunely (Tailscale, Ngrok, MITM ladiaci proxy), egress pool 1Proxy, zálohy databáz a drobné prepísania pre jednotlivé funkcie, na ktoré odkazuje vrstva executoru alebo skripty.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Pripojovací reťazec Redis pre backend rate limitera. |
| `ALIBABA_CODING_PLAN_HOST` | _(produkčný hostiteľ)_ | `open-sse/services/bailianQuotaFetcher.ts` | Prepíše hostiteľa použitého na získavanie kvót coding-planu Alibaba Bailian. |
| `ALIBABA_CODING_PLAN_QUOTA_URL` | odvodené od hostiteľa | `open-sse/services/bailianQuotaFetcher.ts` | Úplné prepísanie URL kvóty pre Alibaba Bailian. |
| `QWEN_CLOUD_COOKIE` | _(nenastavené)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Cookie relácie konzoly pre bránu kvóty osobného Token Planu Qwen Cloud / Model Studio (inferenčný API kľúč ju nedokáže prečítať). Skopírujte celú hlavičku požiadavky `Cookie` — obsahuje `login_qwencloud_ticket` — z ľubovoľného volania `api.json` na `cs-data.qwencloud.com` na home.qwencloud.com › Fakturácia › Predplatné (F12 › Sieť). Citlivá a viazaná na reláciu; uprednostnite pole `qwenCloudCookie` v Dashboarde, ktoré sa nastavuje pre každé pripojenie zvlášť. |
| `QWEN_CLOUD_SEC_TOKEN` | _(nenastavené)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Manuálne prepísanie `sec_token` pre bránu konzoly Token Planu. Citlivé; ak nie je nastavené, fetcher ho získa z HTML dashboardu pomocou cookie. |
| `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Prepísanie hostiteľa brány pre fetcher kvóty osobného Token Planu (napr. `bailian-singapore-cs.alibabacloud.com` pre konzolu Model Studio). |
| `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | URL dashboardu použitá na získanie `sec_token` z prihláseného HTML. |
| `XIAOMI_MIMO_CONSOLE_COOKIE` | _(nenastavené)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Cookie relácie konzoly pre API kvóty Xiaomi MiMo Token Plan (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — inferenčný API kľúč ju nedokáže prečítať). Skopírujte celú hlavičku požiadavky `Cookie` — obsahuje `api-platform_serviceToken` a `userId` — z ľubovoľnej požiadavky na `platform.xiaomimimo.com` na stránke Token Plan (F12 › Sieť). Citlivá a viazaná na reláciu; uprednostnite pole `xiaomiMimoConsoleCookie` v Dashboarde, ktoré sa nastavuje pre každé pripojenie zvlášť. |
| `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Mesačný rozpočet (kredity) pre fallback Xiaomi MiMo sledovaný cez OmniRoute, ktorý sa použije, keď nie je nakonfigurovaná žiadna cookie konzoly. Predvolene úroveň Lite so 4.1B; nastavte ho na kredity daného plánu (Standard 11B / Pro 38B / Max 82B). Prepis `providerSpecificData.monthlyTokenLimit` na úrovni pripojenia má prednosť pred touto premennou prostredia. |
| `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Prepis cesty front-endu konzoly na získavanie kvóty vision/médií bezplatnej úrovne Alibaba Model Studio. |
| `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Prepis cesty front-endu konzoly na získavanie multimodálnej kvóty bezplatnej úrovne Alibaba Model Studio. |
| `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Prepis cesty front-endu konzoly na získavanie audio kvóty bezplatnej úrovne Alibaba Model Studio. |
| `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(nenastavené)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Voliteľná cesta k lokálnemu JSON prepisu pre vstavaný zoznam povolených textových modelov bezplatnej úrovne Alibaba. Ak nie je nastavená, použije sa `$DATA_DIR/alibaba-free-tier-allowlist.json` a potom `config/alibaba-free-tier-allowlist.json`. |
| `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | Tokeny rezervované pre výstup dokončenia pri výpočte rozpočtov promptov. |
| `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Koľko najnovších vložených obrázkov ponechať pri odstraňovaní starších, aby sa zmestili do kontextového okna (#8560). |
| `MODEL_ALIAS_COMPAT_ENABLED` | zapnuté | `open-sse/services/model.ts` | Prepína vrstvu kompatibility starých aliasov modelov, ktorú používajú starší klienti. |
| `OMNIROUTE_EMERGENCY_FALLBACK` | zapnuté | `open-sse/services/emergencyFallback.ts` | Nastavte `false` (alebo `0`) na vypnutie núdzového fallbacku pri vyčerpaní rozpočtu, ktorý presmerúva neúspešné požiadavky na bezplatný model `nvidia`/`openai/gpt-oss-120b`. Skutočná priorita je: prepis v databáze Feature Flags > premenná prostredia > predvolená hodnota; ak prepis nie je dostupný, služba použije priamo surovú hodnotu premennej prostredia. |
| `COMMAND_CODE_CALLBACK_PORT` | _(nenastavené)_ | `src/app/api/providers/command-code/auth/shared.ts` | Lokálny port používaný na spätné volania v štýle OAuth z pomocníka Command Code CLI. |
| `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Hodnota odoslaná ako hlavička `x-command-code-version` upstreamu Command Code. Prepíšte na navýšenie verzie CLI. |
| `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Základná URL pre upstream využitia/kvót Command Code, ktorú používa telemetria získavania kvót zo smartfónu. Prepíšte pre vlastnú/alternatívnu API Command Code. |
| `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | Lokálny port, na ktorý sa viaže MITM ladiaci proxy server. |
| `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Nastavte `1` na vypnutie overovania upstream TLS (len pre vývoj). |
| `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Časový limit nečinnosti socketu (ms) pre proxyované spojenia; nečinné sockety po uplynutí tejto doby sa ukončia, aby sa zabránilo úniku polootvorených tunelov. |
| `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Port, na ktorom počúva Antigravity MITM bridge. |
| `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Koncový bod routera, na ktorý bridge presmerúva prevádzku Antigravity. |
| `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Prepíše adresár, z ktorého bridge číta svoj TLS materiál. Model certifikátu sa vyberá rovnako ako na serveri AgentBridge: `server.crt`/`server.key` pre staršiu inštaláciu s listovým certifikátom, inak `ca.crt`/`ca.key` (koreňová CA, jeden listový certifikát na každého zachyteného hostiteľa; vynútené pomocou `MITM_ROOT_CA_ENABLED=true`). Bridge pri spustení skončí, ak súbory pre aktívny model chýbajú. |
| `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Úroveň podrobnosti protokolu rozhodnutí smerovania: `0` stlmí výstup, vyššie hodnoty zaznamenávajú viac rozhodnutí o obídení/smerovaní. |
| `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Nastavte `true` na explicitné zapnutie modelu certifikátov koreňová CA + listový certifikát pre každého hostiteľa (#6684). Nové inštalácie ho získajú automaticky; inštalácie s existujúcim dôveryhodným starším listovým certifikátom si ponechajú starší certifikát s pevným SAN, pokiaľ ho explicitne nezapnete. |
| `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | Nastavuje MITM manažér pre spustený proxy proces (`root-ca` \| `legacy`) — odráža rozhodnutie o migrácii certifikátov; nie je určené na manuálne nastavenie. |
| `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | Nastavte `1` (pravdivá hodnota) na odstránenie úvodného `sudo` z príkazov MITM na dôverovanie certifikátom — pre nasadenia bez roota / v používateľských namespace-och, kde operátor dôveruje CA manuálne (napr. cez mechanizmus extra-CA-certs v Node). |
| `SKIP_ANTIGRAVITY_DNS` | _(nenastavené)_ | `src/mitm/dns/provision.ts` | Nastavte `true` na úplné preskočenie poskytovania DNS záznamov v `/etc/hosts` pre hostnames Antigravity proxy — pre kontajnery bez dostupného sudo/root. |
| `OMNIROUTE_SKIP_DNS_WRITE` | _(nenastavené)_ | `src/mitm/dns/dnsConfig.ts` | Nastavte `1` na preskočenie zápisu do súboru hosts pri pridávaní/odstraňovaní DNS záznamov — pre sandboxované alebo read-only testovacie prostredia. |
| `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Ochrana len pre testy/CI: nastavte `1`, aby sa inštalácia/odinštalovanie dôvery certifikátov stali no-op a testovacia sada nikdy nemenila úložisko dôvery OS. Nastavuje sa automaticky pri príprave testov a v CI workflow. |
| `CHANGELOG_BASE_REF` | _(automaticky)_ | `scripts/check/check-changelog-integrity.mjs` | Explicitný základný ref pre kontrolnú bránu proti „zhltnutiu“ CHANGELOG-u (predvolene základná vetva PR v CI, alebo najvyššia `release/v*`). |
| `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Nastavte `true` na povolenie plánovača automatickej synchronizácie poolu bezplatných proxy na pozadí. Funkcia je opt-in, predvolene vypnutá. |
| `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Interval automatickej synchronizácie v milisekundách (predvolene 30 min). |
| `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | Povolí zdroj bezplatných proxy 1proxy. Nastavte `false` na jeho zakázanie. |
| `FREE_PROXY_1PROXY_API_URL` | _(pozri oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | Prepísanie URL API pre 1proxy. |
| `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Maximálny počet proxy načítaných pri jednej synchronizácii z 1proxy. |
| `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | Minimálny prah skóre kvality pre importy z 1proxy. |
| `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Povolí zdroj bezplatných proxy Proxifly. Nastavte na `false` na zakázanie. |
| `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Počet proxy, ktoré sa majú načítať pri každej synchronizácii Proxifly. |
| `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Filter úrovne anonymity pre Proxifly (`elite`, `anonymous`, `transparent`). |
| `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | Povolí zdroj bezplatných proxy IPLocate. Iba na explicitné zapnutie (opt-in). |
| `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | Prepísanie základnej URL zoznamu proxy IPLocate. |
| `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Povolí zdroj proxy poolu Webshare. Nastavte na `false` na zakázanie; vyžaduje sa tiež nastavenie `FREE_PROXY_WEBSHARE_API_KEY`. |
| `FREE_PROXY_WEBSHARE_API_KEY` | _(žiadne)_ | `src/lib/freeProxyProviders/webshare.ts` | API token účtu Webshare (`Authorization: Token `). Povinné — bez neho zostáva poskytovateľ zakázaný. |
| `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Prepísanie URL API zoznamu proxy Webshare. |
| `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Maximálny počet proxy importovaných pri jednej synchronizácii Webshare. |
| `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Zobrazenie/skrytie tlačidla nasadenia Vercel Relay na karte Proxy Pool. |
| `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Prepísanie základnej URL adresy Vercel API (na testovanie). |
| `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Predvolený názov projektu predvyplnený v modálnom okne nasadenia Vercel Relay. |
| `TAILSCALE_BIN` | _(automatická detekcia)_ | `src/lib/tailscaleTunnel.ts` | Explicitná cesta k binárnemu súboru `tailscale`. |
| `TAILSCALED_BIN` | _(automatická detekcia)_ | `src/lib/tailscaleTunnel.ts` | Explicitná cesta k binárnemu súboru démona `tailscaled`. |
| `TAILSCALE_AUTHKEY` | _(nenastavené)_ | `src/lib/tailscaleTunnel.ts` | Vopred zdieľaný autentifikačný kľúč Tailscale pre neinteraktívne/bezhlavé spustenie `tailscale up` (odovzdáva sa cez `--auth-key=`). Ak nie je nastavený, prihlásenie sa vráti na interaktívnu autentifikačnú URL v prehliadači. |
| `NGROK_AUTHTOKEN` | _(nenastavené)_ | `src/lib/ngrokTunnel.ts` | Overuje odchádzajúce tunely ngrok. |
| `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Maximálny počet záložných súborov SQLite, ktoré si ponechá manuálne/plánované čistenie záloh. Migračné snímky sú adresované podľa obsahu a pri identickom stave databázy sa opätovne používajú; počas okna súbežnej migrácie sa neodstraňujú. Prepisuje hodnotu uloženú v Nastavenia → Uchovávanie záloh databázy. |
| `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Maximálny vek (v dňoch) záloh, ktorý si ponechá manuálne/plánované čistenie záloh. `0` vypína odstraňovanie podľa veku. Migračné snímky sa počas okna súbežnej migrácie neodstraňujú. Prepisuje hodnotu uloženú v Nastavenia → Uchovávanie záloh databázy. |
| `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | Interval cyklu (ms) úlohy na strane servera, ktorá vykonáva `backup-schedule.json`. Musí ostať výrazne pod 1-minútovou granularitou cronu; hodnoty pod `5000` alebo nespracovateľné hodnoty sa vrátia na `30000`. |
| `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Nápoveda runtime kontajnera pre kontrolu oprávnení entrypointu. Nastavte na `podman` pre akúkoľvek topológiu Podman. Keďže kontajner nedokáže určiť, či je engine lokálny alebo dostupný cez Podman Machine, upozornenie zostáva neutrálne voči topológii a odkazuje na `contrib/podman/README.md`. |
| `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Backend úložiska spotreby zdieľanej kvóty: `sqlite` (predvolené) alebo `redis`. |
| `QUOTA_STORE_REDIS_URL` | _(nenastavené)_ | `src/lib/quota/storeFactory.ts` | Pripojovací reťazec Redis použitý, keď `QUOTA_STORE_DRIVER=redis` (napr. `redis://localhost:6379`). |
| `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Pomer saturácie poolu (0..1); pri ňom alebo nad ním pool prechádza do prísneho režimu (bez požičiavania). |
| `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Násobiteľ skóre (0..1) aplikovaný na cieľ, keď ho politika mäkkej kvóty depriorizuje. |
| `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Násobiteľ skóre (0..1) aplikovaný na vyčerpaného poskytovateľa (`credits_exhausted`/`rate_limited`) pri hodnotení auto-combo, keď je predbežné kvótové obmedzenie VYPNUTÉ (#4540). |
| `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | Retenčné okno (dni) pre buckety `quota_consumption` pred GC (`gcQuotaConsumption`). |
| `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Opt-in (predvolene VYPNUTÉ): povoluje tvrdé kvótové obmedzenie automatického smerovania, ktoré zahodí kandidátov s nízkou kvótou pred hodnotením. |
| `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Opt-in (predvolene VYPNUTÉ): keď filter `auto/:` nezodpovedá žiadnym pripojeným kandidátom, obnoví pôvodné (legacy) správanie návratu k plnému (nefiltrovanému) poolu namiesto vrátenia prázdneho poolu. Predvolené VYPNUTÉ znamená, že `:free` znamená „iba bezplatná úroveň“. |
| `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | Strop veľkosti panelu (obmedzený na 1–10) pre broadcast variant `auto/*:chaos` — jedna požiadavka sa rozvetví najviac na toľko modelov od rôznych poskytovateľov. |
| `OMNIROUTE_CHAOS_MIN_PANEL` | _(predvolená hodnota enginu)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Minimálne doladenie veľkosti panela, ktoré sa odovzdáva handleru chaos broadcastu; ak nie je nastavené, zostáva predvolená hodnota enginu. |
| `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(predvolená hodnota enginu)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Pevný časový limit (ms) pre celý fan-out chaos panela; ak nie je nastavený, zostáva predvolená hodnota enginu. |
| `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | Cesta k súboru `auth.json` Grok CLI, ktorý sa používa na získanie týždňovej kvóty grok-web; prepíšte pre testy alebo neštandardnú inštaláciu CLI. |
| `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(nenastavené)_ | `src/mitm/manager.ts` | Dodatočný CA certifikát (PEM), ktorému sa dôveruje pri upstream TLS pripojeniach AgentBridge. |
| `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Maximálny počet zachytených požiadaviek uchovávaných v kruhovom buffri Traffic Inspector. |
| `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Maximálna veľkosť tela zachytenej požiadavky/odpovede (KB) pred skrátením. |
| `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Lokálny port pre HTTP proxy Traffic Inspector. |
| `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Automatické spustenie HTTP proxy inspectoru pri štarte. |
| `INSPECTOR_LLM_HOSTS_EXTRA` | _(nenastavené)_ | `src/lib/inspector/captureState.ts` | Dodatočné názvy hostiteľov (oddelené čiarkou), ktoré sa pri zachytávaní považujú za LLM endpointy. |
| `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Maskovanie tajných údajov (autentifikačné hlavičky / API kľúče) v zachytenej komunikácii. |
| `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Minúty, po ktorých strážca systémového proxy automaticky vráti nastavenia proxy operačného systému. |
| `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(automaticky)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Token na autentifikáciu interného príjmu zachytených údajov do inšpektora. |
| `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Maximálny počet stĺpcov vedľa seba v režime porovnávania v Playgrounde. |
| `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(nenastavené)_ | `src/app/(dashboard)/dashboard/playground/` | Predvolený model pre akciu „vylepšiť prompt“ v Playgrounde (ak nie je nastavený, použije sa aktívny model). |
| `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Hlavný núdzový vypínač pre sidecar proxy bifrost. Keď je nastavený na `0`, trasa vráti 503 s hlavičkou `X-Bifrost-Killswitch` a operátor je presmerovaný na cestu TS. Použite na vypnutie sidecaru bez opätovného nasadenia (incident smerovača 1. úrovne, rotácia kľúčov). |
| `BIFROST_BASE_URL` | _(nenastavené)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Keď je nastavená, trasa sidecar proxy Bifrost presmerováva prevádzku `/v1/chat/completions` na túto bránu Go namiesto obsluhy TS relay. Nenastavené → 503 s náhradným režimom. Koncové lomítko sa odstráni. |
| `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | Port, na ktorý sa viaže supervizovaná vstavaná služba Bifrost (`127.0.0.1:`), keď OmniRoute spravuje životný cyklus sidecaru Bifrost. Predvolene `8080`. |
| `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Port, na ktorý sa viaže supervizovaná kompresná služba LLMLingua (`127.0.0.1:`). Predvolene `20135`. |
| `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Základná URL lokálneho démona HTTP kompresnej mikroslužby LLMLingua. Predvolene `http://127.0.0.1:20135`. |
| `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | ID modelu Hugging Face, ktorý načítava supervizovaný sidecar LLMLingua (odovzdáva sa do prostredia podriadeného procesu). |
| `BIFROST_API_KEY` | _(nenastavené)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | API kľúč pre bránu Bifrost (odosiela sa ako `Authorization: Bearer ...`). Ak nie je nastavený, trasa očakáva, že požiadavka obsahuje platný API kľúč OmniRoute; tento kľúč slúži len na autentifikáciu na strane brány. |
| `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Ak je nastavená na true, sidecar trasa Bifrost streamuje odpovede späť cez SSE cez bránu namiesto TS streaming exekútora. Nastavte na `0`, aby ste vynútili ne-streamované JSON odpovede cez bránu. |
| `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Časový limit na požiadavku pri proxyingu na bránu Bifrost (ms). Pri vypršaní časového limitu trasa vráti cestu TS relay cez hlavičku `X-Bifrost-Fallback`. |
| `OMNIROUTE_BIFROST_KEY` | _(nenastavené)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Alias pre `BIFROST_API_KEY` (používajú ho skripty, ktoré čítajú env cez `OMNIROUTE_*`). Ak sú nastavené obe, `BIFROST_API_KEY` má prednosť. |
| `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Backend relay pre `/api/v1/relay/chat/completions`: `ts \| bifrost \| auto`. `ts` = TypeScript relay (predvolené, keď Bifrost nie je nakonfigurovaný); `auto` vyberie Bifrost, keď je nastavená `BIFROST_BASE_URL` a `BIFROST_ENABLED` ≠ `0`, s automatickým fallbackom na TS, ak je sidecar nedostupný; `bifrost` vynúti Bifrost (prísne, bez fallbacku). Auth/rate-limit/injection-guard/allowlist sa vždy spustia najprv v Next trase. Odpovede nesú hlavičky `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason`. |
| `RELAY_ROUTING_BACKEND` | _(nenastavené)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Akceptovaný alias pre `OMNIROUTE_RELAY_BACKEND` (rovnaké hodnoty `ts \| bifrost \| auto`). Ak sú nastavené obe, `OMNIROUTE_RELAY_BACKEND` má prednosť. |
| `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | Cooldown (ms) po zlyhaní skoku na Bifrost sidecar v režime `auto`, kým relay znova skúsi sidecar; počas trvania cooldownu smeruje priamo na TS cestu a potom znova testuje. `0` vypína. Platí len pri `OMNIROUTE_RELAY_BACKEND=auto`. |
| `OMNIROUTE_TLS_CERT` | _(nenastavené)_ | `bin/cli/commands/serve.mjs` | Cesta k PEM TLS certifikátu na obsluhu `omniroute serve` cez HTTPS (ekvivalent `--tls-cert`). Musí byť spárovaná s `OMNIROUTE_TLS_KEY`; samostatný server potom ukončuje TLS na tom istom listeneri (`wss://` funguje bezo zmien). Nenastavené → obyčajné HTTP. Zadanie len jedného z dvojice cert/key alebo nečitateľnej cesty zapíše varovanie a zostane pri HTTP. |
| `OMNIROUTE_TLS_KEY` | _(nenastavené)_ | `bin/cli/commands/serve.mjs` | Cesta k PEM TLS súkromnému kľúču pre `omniroute serve` HTTPS (ekvivalent `--tls-key`). Musí byť spárovaná s `OMNIROUTE_TLS_CERT`. Pozri `OMNIROUTE_TLS_CERT`. |
| `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | Hlavný prepínač pre trasy `/api/local/*`. Ak nie je nastavený alebo je `0`, všetky trasy `/api/local/*` vracajú v produkcii 503. V non-loopback nasadeniach musí byť `1`, aby sa povolil Redis launcher a podobné jednoklikové spúšťače lokálnych služieb. Dvojité zabezpečenie s klasifikáciou route-guard `isLocalOnlyPath()` (`LOCAL_ONLY_API_PREFIXES` v `src/server/authz/routeGuard.ts`). |
| `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(nenastavené)_ | `src/lib/security/localEndpoints.ts` | Bearer token pre volajúcich `/api/local/*`, ktorí nie sú na loopback (napr. desktopová aplikácia). Ak je nastavený, požiadavky z non-loopback IP adries musia niesť `Authorization: Bearer `. Vyžaduje sa pri `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` v non-loopback nasadeniach. |
| `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | Názov kontajnera pre spúšťač Redis na 1 kliknutie (`omniroute redis up`). Používa ho CLI aj GUI `RedisLauncherPanel`. |
| `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | Port hostiteľa pre spúšťač Redis na 1 kliknutie. Zmeňte ho, ak hostiteľ už viaže port 6379. Interný port kontajnera zostáva 6379. |
| `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | Hostiteľské rozhranie, na ktorom spúšťač Redis na 1 kliknutie publikuje port. Spúšťač spúšťa Redis BEZ hesla, takže naviazanie na `0.0.0.0` odovzdá každému hostiteľovi vo vašej LAN Redis bez autentifikácie — rozšírte to len vtedy, ak si na inštancii sami nastavíte heslo. |
| `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Hostiteľské rozhranie, na ktorom docker-compose publikuje Redis sidecar (#9286). Redis v compose beží bez `requirepass`; aplikačné kontajnery sa k nemu dostávajú cez compose sieť (`redis:6379`) — publikovaný port existuje len pre nástroje na strane hostiteľa. `0.0.0.0` vystavuje Redis bez autentifikácie celej LAN. |
| `REDIS_PORT` | `6379` | `docker-compose.yml` | Port hostiteľa pre Redis sidecar v compose. |
| `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | Hostiteľské rozhranie, na ktorom docker-compose publikuje vlastné porty dashboardu/API/live-WS aplikácie (#12568). Keďže predvolená hodnota dodávaná v `.env.example` je `REQUIRE_API_KEY=false`, `0.0.0.0` vystavuje anonymný `/v1` LLM proxy celej LAN/WAN — rozšírte to až keď `REQUIRE_API_KEY=true` alebo keď reverzný proxy pred ním vynucuje vlastnú autentifikáciu. |
| `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Hostiteľské rozhranie, na ktorom docker-compose publikuje Qdrant memory sidecar (#12578). Rovnaké zdôvodnenie vystavenia LAN ako pri `REDIS_BIND_HOST`. |
| `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Hostiteľské rozhranie, na ktorom docker-compose publikuje Bifrost router sidecar (#12578). Rovnaké zdôvodnenie vystavenia LAN ako pri `REDIS_BIND_HOST`. |
| `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Prefix menného priestoru aplikovaný na každý Redis kľúč OmniRoute (rate limiter, auth cache, quota store, warmup circuit breaker). Zabraňuje kolíziám kľúčov, keď je inštancia Redis zdieľaná s inými aplikáciami (#11042). |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(nenastavené — mechanizmus je vypnutý)_ | `src/lib/api/internalServiceAuth.ts` | Zdieľané tajomstvo pre interné REST preskocenia zachovávajúce identitu (#9260): komponenty OmniRoute volajúce iné lokálne trasy OmniRoute ho posielajú ako `x-omniroute-internal-service-token`, aby sa zachovala identita pôvodného volajúceho. Porovnáva sa pomocou `timingSafeEqual`. |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(nenastavené)_ | `src/lib/api/internalServiceAuth.ts` | Variant interného servisného tokenu zo súboru s tajomstvom: cesta k súboru, ktorého orezaný obsah predstavuje token. Použije sa len vtedy, keď inline premenná nie je nastavená. |
| `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Obohatí zoznam poskytovateľov na dashboardu o týždenné rebríčkové štatistiky OpenRouter (#9324). Predvolene zapnuté; nastavte `false`, ak chcete sťahovanie na pozadí úplne preskočiť (neblokujúce, nikdy nie fatálne). |
| `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterProviderStats.ts` | TTL vyrovnávacej pamäte pre snímku štatistík poskytovateľov OpenRouter, v milisekundách. |
| `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Image Redis používaný spúšťačom Redis na jedno kliknutie. V prípade potreby prepíšte na `redis:8-alpine` alebo zrkadlo súkromného registra. |
| `QDRANT_HOST` | `qdrant` | _(voliteľný klastrový profil)_ | Názov hostiteľa sidecaru Qdrant, keď je aktívny `--profile memory`. Predvolene ukazuje na názov služby qdrant v internej sieti; pre externé nasadenie prepíšte. Spotrebuje sa len vtedy, keď je `qdrantEnabled` v kóde nastavené na `true` (`src/lib/memory/vectorStore.ts:108`). |
| `QDRANT_PORT` | `6333` | _(voliteľný klastrový profil)_ | REST port sidecaru Qdrant. |
| `QDRANT_GRPC_PORT` | `6334` | _(voliteľný klastrový profil)_ | gRPC port sidecaru Qdrant. Používajú ho klientske knižnice, ktoré pre streamovacie operácie uprednostňujú gRPC pred REST. |
| `QDRANT_API_KEY` | _(nenastavené)_ | _(voliteľný klastrový profil)_ | Voliteľný API kľúč pre Qdrant Cloud alebo autentifikovanú on-prem inštanciu. Prázdny → hlavička `api-key` sa neodosiela. |
| `QDRANT_COLLECTION` | `omniroute-memory` | _(voliteľný klastrový profil)_ | Názov kolekcie pre embeddingy konverzačnej pamäte OmniRoute. Vytvorí sa pri prvom spustení s počtom dimenzií podľa `QDRANT_VECTOR_SIZE`. |
| `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(voliteľný klastrový profil)_ | Predvolený názov embeddingového modelu zaznamenaný v metadátach kolekcie Qdrant. Skutočné embeddingy generuje poskytovateľ, na ktorého ukazuje pole `embeddingModel` v nastaveniach OmniRoute. |
| `QDRANT_VECTOR_SIZE` | `1536` | _(opt-in profil clustra)_ | Dimenzia vektora embeddingu. Musí zodpovedať modelu, ktorým embedujete (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). |
| `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(opt-in profil clustra)_ | Presnosť indexu HNSW v čase konštrukcie. Vyššia hodnota = pomalšie vytváranie, rýchlejšie vyhľadávanie. |
| `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Hlavný vypínač pre operátorom konfigurovateľnú rotáciu účtov. Pri hodnote `false` žiadna z tried `OMNIROUTE_ROTATE_*` nižšie nespustí prepnutie na záložný účet (stav hlavného vypnutia blokuje aj predvolene zapnuté triedy 429/500/502). Umožňuje nadradenému front-endu (napr. desktopovej aplikácii VibeProxy) zrkadliť svoje vlastné pravidlá rotácie na engine záložného prepínania účtov backendu. |
| `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Cooldown (v sekundách) aplikovaný na účet s rate limitom, keď upstream neposkytne explicitný náznak resetu. `0` = použiť predvolený cooldown enginu namiesto pevného prepisu. |
| `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Zrkadlenie preferencie front-endu „neoznačovať ako rate-limited bez času resetu". |
| `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | Povolenie fallbacku pre konkrétny stav — chyby `429`. Keď je `false` (a `OMNIROUTE_ROTATION_ENABLED=true`), chyba `429` už nespúšťa rotáciu účtu a namiesto toho sa vráti klientovi. |
| `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Počet chýb `429` v rámci `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` potrebný na rotáciu účtu. `1` (predvolené) rotuje okamžite, čím zachováva historické správanie. |
| `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klzavé okno (v sekundách), počas ktorého sa chyby `429` počítajú do `OMNIROUTE_ROTATE_429_THRESHOLD`. |
| `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | Povolenie fallbacku pre konkrétny stav — serverové chyby `5xx` (okrem `502`, ktorá má vlastnú triedu). Keď je `false`, tieto chyby už nespúšťajú rotáciu účtu. |
| `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Počet chýb `5xx` v rámci `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` potrebný na rotáciu účtu. `1` (predvolené) rotuje okamžite. |
| `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Kĺzavé okno (v sekundách), počas ktorého sa chyby `5xx` započítavajú do `OMNIROUTE_ROTATE_500_THRESHOLD`. |
| `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | Povolenie fallbacku pre konkrétny stav pri chybách `502` (bad gateway). Ak je `false`, chyby `502` už neaktivujú rotáciu účtov. |
| `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Počet chýb `502` v rámci `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` potrebný na rotáciu účtu. `1` (predvolené) rotuje okamžite. |
| `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Kĺzavé okno (v sekundách), počas ktorého sa chyby `502` započítavajú do `OMNIROUTE_ROTATE_502_THRESHOLD`. |
| `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Opt-in (predvolene VYPNUTÉ): ak je `true`, aj obyčajná chyba `400` (bad request) aktivuje rotáciu účtov. Ide len o doplnkové správanie — nikdy neblokuje existujúce správanie enginu, pri ktorom `400` obsahujúca text o rate-limite/kvóte spôsobí prepnutie bez ohľadu na tento príznak. |
| `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Počet chýb `400` v rámci `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` potrebný na rotáciu účtu (zohľadňuje sa len vtedy, keď `OMNIROUTE_ROTATE_ON_400=true`). |
| `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Kĺzavé okno (v sekundách), počas ktorého sa chyby `400` započítavajú do `OMNIROUTE_ROTATE_400_THRESHOLD`. |
### Plánovač zahrievania Claude
Zahrievanie riadené cron-om pre Anthropic OAuth pripojenia s povoleným zahrievaním, aby sa 5-hodinové okno rate-limitu otvorilo triviálnou naplánovanou požiadavkou namiesto prvej skutočnej (#8848). Plánovač je vypnutý, pokiaľ nie je `OMNIROUTE_WARMUP_ENABLED` pravdivá **a** pripojenie nie je označené v `settings.claudeWarmup.connections`; prázdny zoznam pripojení znamená, že sa nič nezahrieva, aj keď je premenná prostredia zapnutá.
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ------------------------------ | --------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_WARMUP_ENABLED` | _(nenastavené → vypnuté)_ | `src/lib/warmupScheduler.ts` | Hlavný prepínač plánovača zahrievania. Akceptuje `1`/`true`/`yes`/`on` (bez ohľadu na veľkosť písmen, s odstránenými okrajovými medzerami). Akákoľvek iná hodnota alebo nenastavenie necháva plánovač vypnutý. |
| `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Päťpoľový cron výraz pre tick zahrievania, vyhodnocovaný v časovej zóne `America/Los_Angeles` (časová zóna resetu Anthropic) bez ohľadu na hodiny hostiteľa. |
| `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Koľko spojení sa zahrieva paralelne na jeden tick. Obmedzené na `1`-`10`; nečíselná hodnota sa vráti na `3`. |
| `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Model použitý pre požiadavku zahrievania. Prepíšte len vtedy, ak predvolený nie je dostupný vo vašom pláne; vyberte najlacnejší model, ktorý stále otvorí okno. |
### VNC relácie prihlásenia cez prehliadač a alias Data-Dir
Kontajnerizované Chromium+VNC používané na interaktívne zachytenie prihlasovacích údajov cez prehliadač (`/api/vnc-session`), plus starší alias `DATA_DIR`. Všetky sú voliteľné — predvolené hodnoty VNC cielia na pribalený obraz `omniroute-vnc-chromium:local` a prepisujú sa len pre vlastný obraz kontajnera, porty alebo ladenie životného cyklu.
| Premenná | Predvolené | Zdrojový súbor | Popis |
| ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Tag Docker obrazu pre prihlasovací kontajner Chromium+VNC. Zostavte `docker/vnc-browser/chromium` alebo nasmerujte na vlastný obraz. |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Binárny súbor runtime kontajnerov použitý na spustenie VNC kontajnera (napr. nastavte na `podman`). |
| `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Port VNC/noVNC vystavený vnútri kontajnera. |
| `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Port Chrome DevTools Protocol vnútri kontajnera. |
| `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Cesta k adresáru profilu Chromium vnútri kontajnera. |
| `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Adresár hostiteľa obsahujúci perzistentné profily prihlásenia cez prehliadač. |
| `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 min) | `src/lib/vncSession/manifest.ts` | Časový limit nečinnosti (ms), po ktorom je neaktívna VNC relácia ukončená. |
| `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 min) | `src/lib/vncSession/manifest.ts` | Pevný limit (ms) životnosti jednej VNC relácie. |
| `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Maximálny počet súbežných VNC relácií. |
| `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Časový limit (ms) čakania, kým sa kontajnerizovaný prehliadač stane pripraveným na CDP. |
| `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Časový limit (ms) na získanie zachytenej relácie/cookies po dokončení prihlásenia. |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Dodatočné príznaky príkazového riadku odovzdané kontajnerizovanému Chromium. |
| `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Vyhradená Docker sieť, ku ktorej sa VNC prihlasovací kontajner pripája (#12571) namiesto predvoleného bridge, aby susedné kontajnery nemohli dosiahnuť jeho CDP bridge port. |
| `VIBEPROXY_DATA_DIR` | _(nenastavené)_ | `open-sse/services/notionThreadSessions.ts` | **Starší alias** pre `DATA_DIR`, kontrolovaný až potom, čo sú `DATA_DIR` aj `OMNIROUTE_DATA_DIR` nenastavené. Nájde cache relácií Notion web-vlákien (`/notion-web-thread-sessions.json`). |
---
## 26. Testovací a E2E harness
Používajú ich `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`,
`scripts/dev/run-ecosystem-tests.mjs` a `scripts/build/uninstall.mjs`. V produkčných nasadeniach
ponechajte všetky nižšie uvedené hodnoty nenastavené.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| -------------------------------------- | ------------------------------ | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Režim E2E bootstrapu (`auth`, `fresh`, `reuse`) pre runner Playwright. |
| `OMNIROUTE_E2E_PASSWORD` | použije sa `INITIAL_PASSWORD` | `scripts/dev/run-next-playwright.mjs` | Heslo správcu vložené do prostredia Playwright. |
| `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Zakáže lokálne dotazovanie healthchecku počas spustení Playwright. |
| `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Zakáže slučku healthchecku OAuth tokenov počas testov. |
| `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(nenastavené)_ | `src/lib/tokenHealthCheck.ts` | Zoznam poskytovateľov oddelených čiarkami, ktorí sú vylúčení z proaktívneho cyklu obnovovania tokenov (napr. `codex,openai`). Cielená alternatíva k úplnému zakázaniu healthchecku — poskytovatelia s krátkou TTL sa naďalej obnovujú, zatiaľ čo kaskádoví poskytovatelia zostávajú iba reaktívni. |
| `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Stlmí šum healthchecku vo výstupe stdout z Playwright. |
| `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Preskočí produkčný build Next.js pred spustením Playwright (optimalizácia CI). |
| `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | Preskočí odinštalačný hook OmniRoute (CI ho používa na zachovanie neporušeného `node_modules`). |
| `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Čas čakania (ms), kým sa server stane funkčným, pred spustením testov ekosystému/protokolu. |
| `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL, na ktorej smoke harness Electronu očakáva, že bude zabalená aplikácia odpovedať. |
| `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Celkový časový limit (ms), po ktorom smoke harness prestanie čakať. |
| `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Okno ustálenia (ms) po načítaní stránky. |
| `ELECTRON_SMOKE_APP_EXECUTABLE` | _(automaticky)_ | `scripts/dev/smoke-electron-packaged.mjs` | Explicitná cesta k zabalenému spustiteľnému súboru Electronu. |
| `ELECTRON_SMOKE_DATA_DIR` | _(tmpdir)_ | `scripts/dev/smoke-electron-packaged.mjs` | Dátový adresár pre smoke spustenie Electronu. |
| `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Nastavte `1`, aby sa adresár s dátami smoke testu zachoval aj po spustení. |
| `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Nastavte `1`, aby sa logy Electronu počas behu streamovali na stdout. |
| `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: opätovne spustí aplikáciu s rovnakým dátovým adresárom a overí, že druhé spustenie zvolí natívny ovládač SQLite. |
| `CLI_DEVIN_BIN` | _(vyhľadávanie v PATH)_ | `open-sse/executors/devin-cli.ts` | Prepíše cestu k binárnemu súboru Devin CLI. |
### Pipeline prekladu dokumentácie
Používa ho `scripts/i18n/run-translation.mjs` (príkaz `npm run i18n:run`).
Všetkých šesť premenných je predvolene nenastavených — nastavte ich v `.env`
iba na strojoch, ktoré majú byť schopné spúšťať prekladač dokumentácie.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------------------- | ------------------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_TRANSLATION_API_URL` | _(nenastavená)_ | `scripts/i18n/run-translation.mjs` | Základná URL kompatibilná s OpenAI pre backend prekladu. |
| `OMNIROUTE_TRANSLATION_API_KEY` | _(nenastavená)_ | `scripts/i18n/run-translation.mjs` | Bearer token pre backend prekladu (nikdy sa nezapisuje do logov). |
| `OMNIROUTE_TRANSLATION_MODEL` | _(nenastavená)_ | `scripts/i18n/run-translation.mjs` | ID modelu, napr. `gpt-4o-mini` alebo `cx/gpt-5.4-mini`. |
| `OMNIROUTE_TRANSLATION_FALLBACK_MODELS` | _(nenastavená)_ | `scripts/i18n/lib/translate-backend.mjs` | Voliteľný reťazec modelov oddelených čiarkami, ktorý sa skúša v poradí, keď primárny model zlyhá (kvóta 429, 401/402, 5xx, timeout, sieť); chybná požiadavka (400/413/422) sa s ostatnými modelmi neopakuje. |
| `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Timeout na jednu požiadavku v milisekundách. |
| `OMNIROUTE_TRANSLATION_REASONING_EFFORT` | _(nenastavená)_ | `scripts/i18n/lib/translate-backend.mjs` | Voliteľné riadenie uvažovania (reasoning), ktoré sa pri nastavení odošle backendu tak, ako je. |
| `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Paralelné požiadavky na preklad pri spracovaní viacerých súborov / lokalít. |
---
## 27. Radar Feed (Vlastný hosting)
Voliteľný doplnok riadený príznakom funkcie RADAR_ENABLED (predvolene vypnutý — príznak
funkcie prepínaný cez Nastavenia/DB, nie premenná prostredia; pozrite si
[docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)).
Prvé štyri premenné uvedené nižšie predstavujú voliteľné prepísania pre vlastný hosting alebo fork
zdroja a postupy získania kľúča podporovateľa. Piata premenná, `RADAR_ADMIN_URL`, je samostatný
odkaz bez predvolenej hodnoty na súkromný prevádzkový panel vlastníka. Úplnú dokumentáciu modulu
a jeho [kompletnú sekvenciu aktivácie a sprievodného nastavenia](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup)
nájdete v súbore [docs/frameworks/RADAR.md](../frameworks/RADAR.md).
Všeobecná čítačka oznámení na domovskej stránke a v zozname zmien sa nekonfiguruje pomocou
premennej prostredia a nezávisí od príznaku funkcie RADAR_ENABLED. Verejnú URL súboru
`news.json` deklarovanú v `src/shared/utils/releaseNotes.ts` načítava iba prostredníctvom
GET; identifikátory odmietnutých oznámení zostávajú v lokálnom úložisku prehliadača.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | Základná URL zdieľaná samostatne podpísanými zdrojmi katalógu, odporúčaní, ponúk pre podporovateľov a Intel. Prepísaním ju nasmerujete na službu prevádzkovanú na vlastnom hostingu alebo na jej fork. |
| `RADAR_FEED_PUBKEY` | _(pripnutý predvolený kľúč)_ | `src/lib/radar/pinnedKeys.ts` | Verejný kľúč Ed25519 (SPKI vo formáte base64-DER alebo PEM) používaný na overenie podpisov z vlastného zdroja. |
| `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | URL, ktorú otvorí tlačidlo „Som prispievateľ“ na ovládacom paneli (postup získania kľúča podporovateľa cez GitHub OAuth). |
| `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL, ktorú otvorí tlačidlo „Podporiť projekt“ na ovládacom paneli (stránka platieb/plánov). |
| `RADAR_ADMIN_URL` | _(nenastavené)_ | `src/lib/radar/links.ts` | Súkromný odkaz na prevádzkový panel určený iba vlastníkovi. Vyžaduje sa HTTPS s výnimkou HTTP slučky preposielanej cez SSH; pri nenastavenej alebo neplatnej hodnote sa nevytvorí žiadna navigačná položka. |
---
## Audit: Odstránené / nepoužívané premenné
Nasledujúce premenné sa nachádzali v predchádzajúcich verziách súboru `.env.example`, ale v aktuálnom zdrojovom kóde na ne **neexistujú žiadne odkazy za behu programu**. Boli odstránené:
| Premenná | Dôvod |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `STORAGE_DRIVER=sqlite` | Nikdy ju nečíta žiadny zdrojový súbor. SQLite je jediný podporovaný ovládač — výber nie je potrebný. |
| `INSTANCE_NAME=omniroute` | Nachádza sa v starej dokumentácii/šablónach prostredia, ale počas behu sa nepoužíva. Môže sa vrátiť v budúcej funkcii podpory viacerých inštancií. |
| `SQLITE_MAX_SIZE_MB=2048` | V zdrojovom kóde sa na ňu neodkazuje. Veľkosť databázy nie je umelo obmedzená. |
| `SQLITE_CLEAN_LEGACY_FILES=true` | V zdrojovom kóde sa na ňu neodkazuje. Čistenie starších súborov bolo pravdepodobne odstránené. |
| `CLI_ROO_BIN` | Nie je zaregistrovaná v `src/shared/services/cliRuntime.ts`. |
| `CLI_KIMI_CODING_BIN` | Nie je zaregistrovaná v `src/shared/services/cliRuntime.ts` (Kimi Coding používa OAuth, nie binárny súbor CLI). |
| `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Nikde v zdrojovom kóde sa na ne neodkazuje. |
| `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` | Odstránené vo verzii v3.8.0. Aplikácia už tieto premenné prostredia nečíta — prihlasovacie údaje pochádzajú z Dashboard / `data/provider-credentials.json` / šifrovanej databázy. |
| `CURSOR_PROTOBUF_DEBUG` | Odstránená vo verzii v3.8.0. Vykonávací modul Cursor používa `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` (pozrite si §22). |
| `CLI_COMPAT_KIRO` | Odstránená vo verzii v3.8.0. Kiro sa nachádza v `CLI_COMPAT_OMITTED_PROVIDER_IDS` — jej prepínač nemá žiadny účinok. |
| `QIANFAN_API_KEY` | Odstránená spolu s ostatnými nepoužívanými zástupnými premennými pre kľúče API poskytovateľov vo verzii v3.8.0. |
### Opravy predvolených hodnôt
| Premenná | Stará hodnota v `.env.example` | Skutočná predvolená hodnota v kóde | Oprava |
| ------------------------- | ------------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------ |
| `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Zavádzajúca hodnota bola odstránená; `7` je zdokumentovaná ako predvolená hodnota |
| `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Zavádzajúca hodnota bola odstránená; `7` je zdokumentovaná ako predvolená hodnota |
### Opätovné generovanie konfigurácie OpenCode (ad hoc nástroje)
Používa ho skript `scripts/ad-hoc/regen-opencode-config.ts` na opätovné vygenerovanie súboru `opencode.json`
s presnými hodnotami `limit.context` a `limit.output` získanými zo spustenej
inštancie OmniRoute. Žiadna z nich nie je potrebná na bežnú prevádzku — skript
slúži iba ako vývojársky nástroj.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------ | ------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | Základná URL adresa inštancie OmniRoute, ktorá sa má dotazovať na `/v1/models`. |
| `OMNIROUTE_KEY` | _(nenastavené)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Kľúč API na autentifikáciu voči koncovému bodu OmniRoute `/v1/models`. Ak nie je nastavený, použije sa `OPENCODE_API_KEY`. |
| `OPENCODE_API_KEY` | _(nenastavené)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Kľúč API v štýle OpenCode (`sk-...`), ktorý sa zapíše do znovu vygenerovaného súboru `opencode.json`. Ak nie je nastavený, použije sa `OMNIROUTE_KEY`. |
### Nástroj na offline vyhodnocovanie kompresie (ad hoc nástroje)
Používa ho `scripts/compression-eval/index.ts`, CLI na offline vyhodnocovanie kompresie.
Nie je potrebný na bežnú prevádzku — slúži iba ako vývojársky nástroj.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------- | ------------------ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (prázdne) | `scripts/compression-eval/index.ts` | Operátorom poskytnuté prihlasovacie údaje JSON pre poskytovateľa používaného CLI na offline vyhodnocovanie kompresie (spracované pomocou `JSON.parse`). Pre skúšobné spustenie ponechajte nenastavené. |
### Relácie prehliadača VNC
Používa ich `src/lib/vncSession/manifest.ts` na konfiguráciu bezobslužných relácií Chromium založených na Dockeri pre poskytovateľov automatizácie prehliadača. Všetky sú voliteľné — predvolené hodnoty sú uvedené nižšie.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------- | ------------------------------ | ------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Cesta k binárnemu súboru Docker používanému na spúšťanie kontajnerov VNC. |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Obraz Docker pre kontajner VNC Chromium. |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(vstavané príznaky)_ | `src/lib/vncSession/manifest.ts` | Dodatočné argumenty CLI pre Chromium odovzdané prehliadaču v kontajneri. |
| `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Port VNC vnútri kontajnera. |
| `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Port protokolu Chrome DevTools vnútri kontajnera. |
| `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Adresár profilu vnútri kontajnera. |
| `OMNIROUTE_VNC_PROFILE_DIR` | _(nenastavené)_ | `src/lib/vncSession/manifest.ts` | Adresár na strane hostiteľa pre trvalé profily prehliadača. |
| `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | Časový limit nečinnosti (ms), po ktorom sa relácia VNC ukončí a zozbierajú sa jej údaje. |
| `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Maximálne trvanie relácie (ms). |
| `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Maximálny počet súbežných relácií VNC. |
| `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Časový limit pripravenosti prehliadača (ms). |
| `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Časový limit zberu údajov/vyčistenia (ms). |
| `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Vyhradená sieť Docker, ku ktorej sa kontajner pripája (#12571), mimo predvoleného mosta. |
| `VIBEPROXY_DATA_DIR` | _(nenastavené)_ | `open-sse/services/notionThreadSessions.ts` | Adresár na uchovávanie relácií vlákien Notion. |
### Autentifikácia interných služieb
| Premenná | Predvolená hodnota | Popis |
| --------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Token zadaný priamo v premennej na autentifikáciu medzi službami riadiacej vrstvy. |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Cesta k súboru obsahujúcemu token internej služby (preferované v kontajneroch; prepíše priamo zadanú premennú). |
### Štatistiky poskytovateľov OpenRouter
| Premenná | Predvolená hodnota | Popis |
| ----------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Nastavte na `false`, ak sa má preskočiť načítanie štatistík jednotlivých poskytovateľov OpenRouter na obohatenie katalógu. |
| `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | TTL vyrovnávacej pamäte (ms) pre načítané štatistiky poskytovateľov OpenRouter. |
### Väzba vstavaného Redis
| Premenná | Predvolená hodnota | Popis |
| --------------------------- | ------------------ | ------------------------------------------------------------------- |
| `REDIS_BIND_HOST` | `127.0.0.1` | Adresa väzby pre vstavanú službu Redis. |
| `REDIS_PORT` | `6379` | Port pre vstavanú službu Redis. |
| `OMNIROUTE_REDIS_BIND_HOST` | – | Prepísanie adresy väzby vstavaného systému Redis v rámci OmniRoute. |
---
## 24. Dodatky vydania v3.8.50
Tieto nastavenia boli zavedené po predchádzajúcej snímke kontraktu prostredia.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Maximálna doba čakania na slot prijímania náročného chatu pred opakovateľným `503`; krátke ohraničené čakanie serializuje nárazy agentov namiesto okamžitého `503`. `0` obnoví okamžité odmietnutie. |
| `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Rozpočet bajtov vo fronte pre čakanie na prijatie: ohraničuje celkové nabuffrované bajty tiel zaparkované v rámci celého procesu, aby čakanie nemohlo zväčšovať haldu (#4380). Čakania nad rozpočet okamžite dostanú opakovateľné `503`. |
| `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | Zastaralé no-op od #10110: prijímacie pruhy na reláciu boli odstránené v prospech jedného rozpočtu na celý proces. Akceptované kvôli kompatibilite konfigurácie; ignorované. |
| `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Zastaralé no-op od #10110: prijímacie pruhy na reláciu boli odstránené v prospech jedného rozpočtu na celý proces. Akceptované kvôli kompatibilite konfigurácie; ignorované. |
| `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (vypnuté) | `open-sse/services/admission/runtime.ts` | Adaptívne virtuálne prijímacie pruhy počas behu (#9654): hlavný prepínač pre adaptívnu bránu na tenanta (systém 2). Odlišné od zastaralých premenných pruhov na pripojenie vyššie (TTL_MS / MAX_SESSIONS, no-op od #10110). Feature flag dashboardu s rovnakým názvom; premenná prostredia má prednosť pred prepísaním z dashboardu; vyžaduje reštart. |
| `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Ohraničuje, ako dlho volanie run-now čaká na prebiehajúcu úlohu pred spustením zaradenej úlohy. |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | povolené | `open-sse/services/adobeFireflySession.ts` | Udržiava stav IMS a rizika prehliadača čerstvý prostredníctvom Chrome CDP relácií viazaných na účet; nastavte `0` na zakázanie. |
| `ADOBE_FIREFLY_SESSION_DISK` | povolené | `open-sse/services/adobeFireflySession.ts` | Ukladá opravené Adobe relácie pod `DATA_DIR`; nastavte `0` pre stav iba v pamäti. |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Minimálny odstup medzi odoslaniami generovania Adobe Firefly. |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatočné tiché obdobie po každom treťom úspešnom odoslaní Adobe. |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Režim true-headless iba na ladenie; Adobe colligo výslednú rizikovú reláciu zvyčajne odmietne. |
| `CHROME_PATH` | automatická detekcia | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Voliteľná absolútna cesta k spustiteľnému súboru Chrome, ktorú používajú exekútori riadené prehliadačom, keď automatická detekcia platformy nestačí. |
| `TELEGRAM_BOT_TOKEN` | _(nenastavené)_ | `src/lib/telegram/config.ts` | Token BotFather, ktorý povoluje prichádzajúci webhook a podpisuje `initData` Mini App. |
| `TELEGRAM_WEBHOOK_SECRET` | _(nenastavené)_ | `src/lib/telegram/config.ts` | Zdieľané tajomstvo registrované cez `setWebhook` a overované voči hlavičke `X-Telegram-Bot-Api-Secret-Token` pri každom doručení webhooku. Vyžadované pre cestu webhooku; nenastavené znamená, že doručenia webhooku sa odmietajú s 503. |
| `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Model používaný pre odpovede Telegram chatu. |
| `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Prepísanie základnej URL Bot API pre proxy alebo self-hosted servery Bot API. |
| `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Časový limit v milisekundách pre odchádzajúce volania Bot API. |
| `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (povolené) | `scripts/build/optionalPackStaging.mjs` | Nastavte `0`, aby sa preskočilo generovanie `.tar.gz` tarballov počas prípravy voliteľných ML/browser balíkov pre standalone strom Electronu (adresáre balíkov a `optional-packs.index.json` sa stále vytvárajú). Používa ho desktop release workflow na zmenšenie veľkosti nahrávaných artefaktov. |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Povoľuje registráciu rout obrázkov xAI subscription; predvolene zakázané, aby cesta obrázkov cez API kľúč zostala nezmenená. |
| `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Cooldown na kľúč v milisekundách, keď odpoveď `429` nemá použiteľnú nápovedu `Retry-After`. |
| `OMNIROUTE_ESTIMATOR_CALIBRATION` | povolené | `open-sse/services/estimatorCalibration.ts` | Nastavte na `off`, `0` alebo `false` na zakázanie zaznamenávania a aplikovania kalibrácie odhadovača v pamäti. |
| `NEXT_MANUAL_SIG_HANDLE` | _(interné)_ | `scripts/dev/standalone-server-ws.mjs` | Interné prepísanie spracovania signálov standalone servera; normálne ho nastavuje a ruší launcher, nie operátori. |
### ChatGPT Web (Codex)
Globálne predvolené hodnoty pre headless prehliadač a odchádzajúci tool tunel. Hodnoty pripojenia nastavené v dashboarde majú prednosť.
| Premenná | Predvolené | Zdrojový súbor | Popis |
| --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHATGPT_WEB_CODEX_CHROME_PATH` | _(automatická detekcia)_ | `open-sse/executors/chatgpt-web-codex.ts` | Explicitná cesta ku Chrome/Chromium pre prevádzku cez npm, systemd a PM2. |
| `CHROME_PATH` | _(automatická detekcia)_ | `open-sse/executors/chatgpt-web-codex.ts` | Spoločná záložná hodnota pre explicitnú cestu ku Chrome/Chromium. |
| `CHATGPT_WEB_CODEX_CDP_URL` | _(nenastavené)_ | `open-sse/executors/chatgpt-web-codex.ts` | Interný CDP endpoint; Docker používa sidecar na porte `9223`. |
| `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _(nenastavené — vypnuté)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | Nastavte na `1` (s nakonfigurovaným CDP endpointom), aby sa namiesto izolovaného kontextu na každé kolo znovu použila existujúca stránka ChatGPT externe spravovaného, prihláseného profilu prehliadača; zároveň obmedzí súbežné karty ChatGPT na 1. Predvolene vypnuté. Pozrite [trvalý CDP profil](../guides/CHATGPT-WEB-PERSISTENT-CDP.md). |
| `CDP_PROXY_TOKEN` | _(nenastavené)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Ak je nastavená, každá požiadavka na CDP-proxy sidecar musí túto hodnotu posielať v hlavičke `X-Omni-Cdp-Token` (#13679). Bez hodnoty proxy presmerováva neautentifikovane — vtedy chráni len sieťová izolácia Compose siete `chatgpt-web-codex-net`. Vygenerujte pomocou `openssl rand -hex 32`. |
| `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(nenastavené)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globálne OpenAI tunel-ID pre lokálne kolá Codex nástrojov. |
| `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(nenastavené)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globálny Runtime kľúč tunela; nikdy nevypisovať do logov. |
| `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | Presný názov novovytvoreného vlastného konektora ChatGPT pre MCP most. |
| `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Vyhradený adresár pre stav prehliadača, brokera a tunela. |
| `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | Pri `1` sa na každom kontrolnom bode zaznamenávajú diagnostické snímky prehliadača. |
| `CODEX_CHATGPT_WEB_LAUNCHER` | _(nenastavené)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Voliteľná absolútna cesta k trvalému binárnemu súboru launchera. |
| `CODEX_CHATGPT_WEB_BUN` | _(automatická detekcia)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Voliteľná absolútna cesta k binárnemu súboru runtime Bun. |
| `CODEX_WEB_GPT_BUN` | _(nenastavené)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Zastaraná záložná hodnota pre `CODEX_CHATGPT_WEB_BUN`; nové nastavenia používajú kanonický názov. |
---
## OmniConductor Bridge
Dlhodobo bežiaci SSE konzument, ktorý zrkadlí úlohy z OmniConductor huba do lokálneho A2A TaskManagera (`src/lib/conductor/`). Aktivácia je dobrovoľná (opt-in) — most sa spustí len vtedy, keď je nastavená premenná `CONDUCTOR_HUB_URL`. Iba na strane servera: token huba sa nikdy nesmie dostať do prehliadača.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ------------------------------ | ----------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `CONDUCTOR_HUB_URL` | _(prázdne)_ | `src/lib/conductor/boot.ts` | Základná URL adresa OmniConductor huba (napr. `http://127.0.0.1:7910`). Nenastavená = most je vypnutý. |
| `CONDUCTOR_HUB_TOKEN` | _(prázdne)_ | `src/lib/conductor/boot.ts` | Prihlasovacie údaje huba pre SSE kanál — vytvorte na hube peer-a druhu `spokesperson` (`POST /v1/peers`, admin). |
| `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(prázdne)_ | `src/lib/conductor/hubProxy.ts` | Prihlasovacie údaje pre prichádzajúcu delegáciu úloh A2A→hub (`POST /v1/tasks`); ak nie sú nastavené, použije sa `CONDUCTOR_HUB_TOKEN`. |
| `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Základná URL adresa služby spokesperson (Faro) za chatovacím proxy dashboardu (`/api/conductor/ask`). |
### Plánovanie s ohľadom na kvóty
Používajú ho súbory `open-sse/services/combo.ts` a `src/lib/quota/quotaScheduler.ts` na kontrolu tokenového rozpočtu pred odoslaním požiadavky. Aktivácia je dobrovoľná (opt-in) — ak nie je nastavená, predvolené správanie smerovania sa nemení.
| Premenná | Predvolená hodnota | Zdrojový súbor | Popis |
| ---------------------------------- | ------------------ | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | Ak je nastavené na `1`, preskočí pripojenia, ktorých tokenový rozpočet na dané okno (`rateLimitOverrides.tpm`, tabuľka `provider_quota_state`) pred odoslaním nestačí na odhadované náklady požiadavky. Ak nie je nakonfigurovaný žiadny rozpočet, správa sa režimom fail-open (požiadavka prejde). |
| `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(zapnuté)_ | `open-sse/services/estimatorCalibration.ts` | Spätnáväzbová kalibrácia odhadovača tokenov context-guard (#14931): EMA pomeru `usage.prompt_tokens` k odhadu pre každú kombináciu (poskytovateľ, model, prítomnosť nástrojov), obmedzená na rozsah 0,15–2,0, len v pamäti. Hodnoty `off`, `0` alebo `false` vypnú zaznamenávanie aj aplikáciu. |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Registruje trasy obrázkov `xai-oauth` (`xao`) a `grok-cli`. Feature flag dashboardu s rovnakým názvom; prepísanie z databázy má pred touto hodnotou prednosť. |