# Environment Variables Reference (Hrvatski) 🌐 **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) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇰 [sk](../../../sk/docs/reference/ENVIRONMENT.md) · 🇸🇮 [sl](../../../sl/docs/reference/ENVIRONMENT.md) · 🇷🇸 [sr](../../../sr/docs/reference/ENVIRONMENT.md) · 🇸🇪 [sv](../../../sv/docs/reference/ENVIRONMENT.md) · 🇰🇪 [sw](../../../sw/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ta](../../../ta/docs/reference/ENVIRONMENT.md) · 🇮🇳 [te](../../../te/docs/reference/ENVIRONMENT.md) · 🇹🇭 [th](../../../th/docs/reference/ENVIRONMENT.md) · 🇹🇷 [tr](../../../tr/docs/reference/ENVIRONMENT.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/ENVIRONMENT.md) · 🇵🇰 [ur](../../../ur/docs/reference/ENVIRONMENT.md) · 🇺🇿 [uz](../../../uz/docs/reference/ENVIRONMENT.md) · 🇻🇳 [vi](../../../vi/docs/reference/ENVIRONMENT.md) · 🇳🇬 [yo](../../../yo/docs/reference/ENVIRONMENT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md) --- > Potpuna referenca za svaku varijablu okruženja koju OmniRoute prepoznaje. > Za predložak za brzi početak pogledajte [`.env.example`](../../.env.example). > [!IMPORTANT] > Svaka ovdje dokumentirana varijabla mora se nalaziti i u `.env.example`, a > svaka varijabla iz `.env.example` mora se nalaziti ovdje. `npm run check:env-doc-sync` > to provjerava pri commitu i u CI-ju. Kako biste namjerno izostavili varijablu, dodajte je na > popis dopuštenih unutar `scripts/check/check-env-doc-sync.mjs`. --- ## Sadržaj - [1. Obavezne tajne](#1-required-secrets) - [2. Pohrana i baza podataka](#2-storage--database) - [3. Mreža i portovi](#3-network--ports) - [4. Sigurnost i autentifikacija](#4-security--authentication) - [5. Pročišćavanje unosa i zaštita osobnih podataka](#5-input-sanitization--pii-protection) - [6. Pravila alata i usmjeravanja](#6-tool--routing-policies) - [7. URL-ovi i sinkronizacija s oblakom](#7-urls--cloud-sync) - [8. Izlazni proxy](#8-outbound-proxy) - [9. Integracija CLI alata](#9-cli-tool-integration) - [10. Integracije internog agenta i MCP-a](#10-internal-agent--mcp-integrations) - [11. Vjerodajnice OAuth pružatelja](#11-oauth-provider-credentials) - [12. Nadjačavanja zaglavlja User-Agent za pružatelje](#12-provider-user-agent-overrides) - [13. Kompatibilnost CLI otiska](#13-cli-fingerprint-compatibility) - [14. Pružatelji API ključeva](#14-api-key-providers) - [15. Postavke vremenskog ograničenja](#15-timeout-settings) - [16. Zapisivanje](#16-logging) - [17. Optimizacija memorije](#17-memory-optimization) - [18. Sinkronizacija cijena](#18-pricing-sync) - [19. Sinkronizacija modela (razvoj)](#19-model-sync-dev) - [20. Postavke specifične za pružatelja](#20-provider-specific-settings) - [21. Stanje proxyja](#21-proxy-health) - [22. Otklanjanje pogrešaka](#22-debugging) - [23. Integracija s GitHubom](#23-github-integration) - [24. Izolirano okruženje za vještine (v3.8.0+)](#24-skills-sandbox-v380) - [27. Radar feed (samostalno posluživanje)](#27-radar-feed-self-hosting) - [Scenariji implementacije](#deployment-scenarios) - [Revizija: uklonjene / mrtve varijable](#audit-removed--dead-variables) --- ## 1. Potrebne tajne Nepostavljene tajne označene s **Da** automatski se generiraju pri prvom pokretanju (`JWT_SECRET`, `API_KEY_SECRET`) i trajno se spremaju u `server.env` u direktoriju podataka — postavite ih izričito kada je taj direktorij privremen. Iznimka je `OMNIROUTE_WS_BRIDGE_SECRET`: on se ne sprema u `server.env` — ulazne točke poslužitelja stvaraju privremenu vrijednost za svako pokretanje koju može koristiti samo most unutar procesa, pa ga vanjski klijenti mosta moraju postaviti izričito. | Varijabla | Obavezno | Zadano | Izvorna datoteka | Opis | | ---------------------------- | ------------------- | ------------------------------------ | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | **Da** | _(nema)_ | `src/lib/auth` | Potpisuje/verificira sve kolačiće sesije nadzorne ploče (JWT). Generirajte pomoću `openssl rand -base64 48`. | | `API_KEY_SECRET` | **Da** | _(nema)_ | `src/lib/db/apiKeys.ts` | AES ključ šifriranja za vrijednosti API ključeva u mirovanju u SQLite. Generirajte pomoću `openssl rand -hex 32`. | | `INITIAL_PASSWORD` | Ne | _(nije postavljeno)_ | `src/lib/auth/managementPassword.ts` | Postavlja lozinku nadzorne ploče pri pokretanju dok još nijedna nije spremljena; zanemaruje se čim je lozinka spremljena. npm i instalacije iz izvornog koda kopiraju `.env.example` u `.env`, pa započinju s njegovim javno poznatim rezerviranim mjestom `CHANGEME`: zamijenite ga prije prvog pokretanja ili postavite `INITIAL_PASSWORD=` (prazno) u tom `.env` kako biste lozinku stvorili u čarobnjaku za početnu postavu pri prvom posjetu, kao što to čini nepostavljena vrijednost (zadano za Docker sliku). Spremljenu lozinku promijenite u Nadzorna ploča → Postavke → Sigurnost ili pokrenite `omniroute reset-password` (`node bin/reset-password.mjs` u izvornom checkoutu) s `DATA_DIR` postavljenim na direktorij podataka poslužitelja. | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Da** (produkcija) | _(nije postavljeno)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Dijeljena tajna za interni Codex Responses WebSocket most. Autentificira zahtjeve mosta između Electron/pregledničkog WS releja i OmniRoutea. ⚠️ **OBAVEZNO u produkciji — kada nije postavljeno, svi zahtjevi WS mosta odbijaju se.** Generirajte pomoću `openssl rand -base64 32`. | | `OMNIROUTE_SW_BUILD_ID` | Ne | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Eksplicitni ID service workera za razbijanje predmemorije za PWA ljusku (#11779); prvi u lancu razrješavanja. | | `SOURCE_VERSION` | Ne | _(nije postavljeno)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Drugi u lancu — postavljaju ga PaaS alati za izgradnju (npr. u Heroku stilu) kao implementirani commit. | | `NEXT_PUBLIC_SW_BUILD_ID` | Ne | _(izvedeno)_ | `src/shared/components/PwaRegister.tsx` | Javna vrijednost u vrijeme izgradnje koju klijent koristi za registraciju `/sw.js?v=…`; izvedena iz gornje dvije, a zatim iz git SHA. | | `OMNIROUTE_PEER_STAMP_TOKEN` | Ne (automatski) | _(automatski pri svakom pokretanju)_ | `src/server/authz/policies/management.ts` | Tajna po procesu koja dokazuje da je pouzdani peer-IP pečat došao s OmniRouteova vlastitog HTTP poslužitelja (`scripts/dev/peer-stamp.mjs`). Authz middleware vjeruje lokalnosti zahtjeva (loopback/LAN ograničavanje LOCAL_ONLY ruta) samo kada pečat nosi ovaj token. Automatski se generira pri svakom pokretanju — ostavite nepostavljeno; fiksirajte ga samo za višeprocesne postave koje moraju dijeliti pečat. | | `OMNIROUTE_TRUSTED_PROXIES` | Ne | _(nije postavljeno)_ | `scripts/dev/peer-stamp.mjs` | IP adrese ili CIDR rasponi reverznih proxyja odvojeni zarezima čijim `X-Forwarded-For` / `X-Real-IP` zaglavljima IP popis dopuštenih/odbijenih smije vjerovati, uz loopback, adrese privatnih mreža i Cloudflare edge poslužitelje, kojima se uvijek vjeruje. Potrebno samo za proxy na nekoj drugoj javnoj adresi; inače filtar prosuđuje vlastitu adresu tog proxyja. Ograničavanje brzine po klijentu na releju (`/api/v1/relay/chat/completions`) temelji se na istoj razriješenoj adresi klijenta, nikada samo na zaglavljima prosljeđivanja. | ### Naredbe za generiranje ```bash # Generirajte sve četiri tajne odjednom: 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] > Nikada ne commitajte `.env` datoteke sa stvarnim tajnama u kontrolu verzija. `.gitignore` već isključuje `.env`, ali provjerite prije pushanja. --- ## 2. Pohrana i baza podataka OmniRoute koristi **SQLite** (putem `better-sqlite3`) za svu trajnost podataka. Ove varijable upravljaju lokacijom podataka, enkripcijom i životnim ciklusom. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------------ | ------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | Korijenski direktorij za SQLite bazu podataka, sigurnosne kopije i podatkovne datoteke. Nadjačajte radi Docker volumena ili prilagođenih putanja. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(nije postavljeno)_ | `src/lib/dataPaths.ts` | Zaobilazni ventil za zaštitu DATA_DIR-a u testovima/evaluaciji (#10428). Testovi i Node eval/print sonde (`-e`/`--eval`/`-p`/`--print`, uključujući oblike `--eval=`/`--print=`) bez postavljenog `DATA_DIR` preusmjeravaju se u privremeni direktorij za jednokratnu upotrebu kako ne bi mogli otvoriti stvarnu bazu podataka operatora; postavite na `1` da biste ponovno uključili stvarni direktorij. | | `OMNIROUTE_BUILD_SHA` | _(nije postavljeno)_ | `src/lib/monitoring/buildSha.ts` | Git SHA pokrenutog artefakta. Utiskuje ga `npm run build:release`; može se ubrizgati u spremnike koji se isporučuju bez sentinel datoteke `dist/BUILD_SHA`. Vidljiv je kao `system.buildSha` na `/api/monitoring/health`. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Referenca prema kojoj provjera podrijetla pakiranog artefakta uspoređuje SHA izrade (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(nije postavljeno)_ | `scripts/build/buildProvenance.ts` | Postavite na `1` kako biste dopustili pakiranje izrade čiji SHA nije na release liniji, bilježeći je kao namjerni canary umjesto neuspjeha provjere (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(nije postavljeno)_ | `scripts/ops/deploy-canary.mjs` | API ključ za smoke sondu canary raspoređivanja, poslan kao `Authorization: Bearer` na `/v1/chat/completions`. Koristi je samo deploy skripta (#10429), nikad poslužitelj. Nije povezan s `OMNIROUTE_SMOKE_*` varijablama opcionalnog CLI smoke okvira (`RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS` u `tests/integration/upstream-cli-smoke.int.test.ts`) — pogledajte [CLI integracije → Stvarni smoke pregled](../guides/CLI-INTEGRATIONS.md). | | `OMNIROUTE_BUILDING` | _(nije postavljeno)_ | `src/lib/buildPhase.ts` | Signal faze izrade (#10060): postavlja ga na `1` `scripts/build/build-next-isolated.mjs` i nasljeđuje ga svaki pokrenuti radni proces izrade kako bi sloj baze podataka vratio no-op stub umjesto učitavanja nativnog dodatka better-sqlite3 (koji prekida radni proces pri izlasku). Nikad ne postavljajte za pokrenuti poslužitelj. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Postavite na `1` kako biste preskočili opcionalnu provjeru nativnih ovisnosti prije izrade (prebuild) za egzotična stabla s vendored ovisnostima. Ovo ne čini ovisnost koja nedostaje izgradivom; koristite samo kada se nativne ovisnosti isporučuju izvan standardnog toka. | | `OMNIROUTE_DATA_DIR` | _(nije postavljeno)_ | `open-sse/executors/promptql/threadSticky.ts` | **Rezervni alias** za `DATA_DIR`, provjerava se samo kada `DATA_DIR` nije postavljen. Koristi se za pronalaženje predmemorije thread-sticky sesija PromptQL izvršitelja na disku (`/promptql-thread-sessions.json`); ako nijedna varijabla nije postavljena, predmemorija ostaje samo u memoriji (ne čuva se kroz ponovna pokretanja). | | `OMNIROUTE_PLUGINS_DIR` | _(nije postavljeno)_ | `src/lib/plugins/scanner.ts` | Direktorij koji **skener dodataka za vrijeme izvođenja** čita — i korijen u koji upravitelj dodataka instalira — nadjačavajući zadani direktorij izveden iz home-a (#11827). Usmjerite ga na bind-mountano stablo dodataka u Dockeru/K8s umjesto premještanja HOME-a samo radi premještanja putanje skeniranja (HOME upravlja i svim ostalim ponašanjima relativnima prema home direktoriju). Nije postavljeno = `~/.omniroute/plugins`, ili `/tmp/.omniroute/plugins` kada proces uopće ne izvozi home direktorij — tiho neotkrivanje koje ova varijabla uklanja. Riješeni direktorij bilježi se jednom pri pokretanju kao `scanner.dir_resolved` s ulazom koji je pobijedio. Samo na strani poslužitelja: CLI dodaci naredbi zadržavaju vlastiti `OMNIROUTE_PLUGIN_PATH` (odjeljak 9). | | `STORAGE_ENCRYPTION_KEY` | _(prazno = onemogućeno)_ | `src/lib/db/encryption.ts` | AES ključ za potpuno šifriranje SQLite baze podataka u mirovanju. Generirajte s `openssl rand -hex 32`. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Oznaka verzije ključa za šifriranje. Povećajte je prilikom rotacije ključeva kako biste podržali dešifriranje starih sigurnosnih kopija. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | Kada je `true`, preskače rutinske sigurnosne kopije SQLite datoteke prije pisanja (spremanje/brisanje cijena s models.dev, pisanje postavki). Ručne sigurnosne kopije i kopije prije vraćanja i dalje se izvode. **Ne** onemogućuje obaveznu trajnu sigurnosnu snimku pokretača migracija ni zaštitu od masovnih migracija za postojeću trajnu bazu podataka. Ne-ručne sigurnosne kopije ograničene su na najviše jednom u 60 minuta. **Postavke → Pohrana** na nadzornoj ploči mogu neovisno onemogućiti rutinsko automatsko sigurnosno kopiranje. | | `OMNIROUTE_SQLITE_SLOW_MS` | _(nije postavljeno/isključeno)_ | `src/lib/db/adapters/slowDiagnostics.ts` | Milisekunde; vrijednosti ispod 1 ili nebrojčane ostaju isključene; upozorava najviše jednom u 10 s; zapis dnevnika sadrži samo driver, operation i elapsedMs. | | `OMNIROUTE_CRYPT_KEY` | _(nije postavljeno)_ | `src/lib/db/encryption.ts` | **Naslijeđeni alias** za `STORAGE_ENCRYPTION_KEY`. Prihvaća se kao zamjena kada primarna varijabla nije postavljena. | | `OMNIROUTE_API_KEY_BASE64` | _(nije postavljeno)_ | `src/lib/db/encryption.ts` | **Naslijeđeni alias** (oblik kodiran u Base64) koji se prihvaća kao zamjena. Automatski se dekodira prije upotrebe. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(nije postavljeno)_ | `src/lib/db/core.ts` | Nadjačava interval povremene provjere ispravnosti SQLite (ms). Kada nije postavljeno, zadane vrijednosti izvode se iz `NODE_ENV`. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(uklonjeno)_ | `src/lib/db/walMaintenance.ts` | **Uklonjeno.** Povremeni aktivni `wal_checkpoint(TRUNCATE)` može poništiti dijeljeno mapiranje wal-indeksa i srušiti proces sa SIGBUS (#13973), pa planer više ne postoji. Varijabla je inertna: pozitivna vrijednost bilježi jednokratno upozorenje o zastarjelosti, dok `0` ili nepostavljena vrijednost ostaje tiho. WAL održavaju PASSIVE kontrolne točke (dolje), a skraćuje ga kontrolna točka pri isključivanju. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | Nadjačava interval čestih `wal_checkpoint(PASSIVE)` (ms). Održava WAL okvire na čekanju malenima kako bi kontrolne točke ostale brze, a WAL datoteka ograničena između skraćivanja pri isključivanju. `0` onemogućuje. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Kada PASSIVE ciklus pronađe WAL datoteku iznad ove veličine, pokreće se `wal_checkpoint(RESTART)` kako bi WAL počeo ispočetka bez prepisivanja mapiranog wal-indeksa. Kontrolne točke u načinu skraćivanja uživo uklonjene su (vidi redak `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS`). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Postavite na `1`/`true`/`yes`/`on` da se proces završi nakon što kritični pritisak resursa traje `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS`, dopuštajući nadzorniku (systemd `Restart=always`, Docker pravilo ponovnog pokretanja) da vrati čist proces umjesto beskrajnog posluživanja odgovora 503. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | Koliko dugo kritični pritisak mora trajati prije nego što se aktivira izlaz za samostalno ponovno pokretanje. | | `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Postavite na `1`/`true`/`yes`/`on` da se zanemari `/proc/pressure/memory` na razini glavnog računala (`psi_some` / `psi_full`) kada bučni susjed izazove odgovore 503 dok je ovaj proces u redu (#13124). Zaštite cgroupa i V8 gomile ostaju uključene. PSI se također prestaje računati kao dokaz prigušivanja jezgre za `cgroup_high`: ukupna vrijednost cgroupa iznad `memory.high` tada postaje kritična samo pri povećanju `high`/`max` u `memory.events`. Bez `memory.events` zadržava se sirovi omjer. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(automatsko otkrivanje)_ | `src/lib/db/adapters/sqljsAdapter.ts` | Eksplicitna putanja (apsolutna ili relativna u odnosu na cwd) do `sql-wasm.wasm` pri korištenju `sql.js` WASM zamjenskog adaptera. Kada nije postavljeno, automatski se otkriva putem ovisnosti paketa i mogućih rasporeda. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Broj dana koliko automatski čišćenje čuva checkpointove, referencirane ulazne/izlazne datoteke i datoteke s greškama te redak terminalnog (completed/failed/cancelled/expired) Batch API posla prije brisanja. Stupa na snagu tek kada se uključi `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED`; odgovara razdoblju zadržavanja izlaza OpenAI-jeva vlastitog Batch API-ja. Ne utječe na rutu `DELETE /api/v1/batches/delete-completed` koju pokreće operator, a koja po dizajnu ostaje bezuvjetna (bez filtra starosti). | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | Kada je `true`, automatski čišćenje briše terminalne Batch API poslove (i njihove checkpointove) starije od `OMNIROUTE_BATCH_RETENTION_DAYS` te čisti BLOB sadržaj učitanih datoteka kojima je prošao vlastiti `expires_at`. Prema zadanim postavkama isključeno: svaka postojeća instalacija zadržava te podatke točno kao i prije dok se operator ne odluči uključiti. Također je značajka (feature flag) koja se može uređivati na nadzornoj ploči — pogledajte `docs/reference/FEATURE_FLAGS.md` → Runtime. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Postavite na `1` da biste potpuno preskočili provjeru zdravlja baze podataka pri pokretanju. Korisno za kratkotrajne zadatke i integracijske testove. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Postavite na `1` da biste prisilno uključili petlju provjere zdravlja baze podataka, čak i kada bi se inače preskočila (npr. kod kratkotrajnih zadataka). | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | Postavite na `1` da biste preskočili zagrijavanje nativnog runtime-a tijekom `npm install`. Korisno kod CI/headless instalacija gdje je sqlite već izgrađen. | | `OMNIROUTE_MIGRATIONS_DIR` | _(auto-detect)_ | `src/lib/db/migrationRunner.ts` | Nadjačava direktorij koji pokretač migracija skenira. Korisno pri isporuci upakiranih migracija u prilagođenim buildovima. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(unset)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Dodatni direktoriji migracija kao unosi `namespace=dir` odvojeni platformskim razdjelnikom putanja (npr. `ee=/opt/app/enterprise/db/migrations`). Datoteke pronađene tamo bilježe se kao `-`, pa distribucija koja isporučuje vlastite migracije nikada ne dolazi u sukob s upstream numeričkim slotovima. Pogrešno oblikovan unos, nevaljani namespace ili nedostajući direktorij izaziva pogrešku pri pokretanju umjesto da se shema tiho preskoči. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Sigurnosni prag za masovne migracije na čekanju (#3416). Pokretanje se prekida ako na postojećoj bazi podataka čeka više migracija od ovog broja (štiti od izbrisane tablice praćenja). Povećajte ga da biste vratili stariju sigurnosnu kopiju; postavite na `0` da biste onemogućili provjeru. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | Radni direktorij za release gate `check:install-upgrade`. Treba mu otprilike 12 GB (dva stabla instalacije od ~3 GB plus tarball), pa se ne smije pokretati na malom tmpfs-u — na self-hosted runneru `/tmp` je tmpfs od 12 GB u RAM-u i gate ga je iscrpio, što je obrezalo paket. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(default in code)_ | `src/lib/spend/batchWriter.ts` | Interval pražnjenja (ms) za grupirani zapisivač potrošnje/troškova. Niže vrijednosti smanjuju spajanje zapisa; više vrijednosti smanjuju zagušenje baze podataka. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(default in code)_ | `src/lib/spend/batchWriter.ts` | Maksimalni broj međuspremnikih unosa potrošnje prije prisilnog pražnjenja. Povećajte na implementacijama s visokim QPS-om; smanjite kada je ograničena memorija važnija. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(unset)_ | `open-sse/utils/proxyFetch.ts` | Postavite na `"true"` za ispisivanje `[ProxyFetch]` debug zapisa na Vercel relay putanji. Prema zadanim postavkama isključeno kako bi se izbjeglo curenje naznaka usmjeravanja. | | `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(unset)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Apsolutna putanja lokalne binarne datoteke proxy jezgre (datoteka nazvana `sing-box`) koja provjerava generiranu konfiguraciju jezgre prije nego što zamijeni usvojenu datoteku. Kada nije postavljeno, zapisuje samo `.generated` pokraj usvojene datoteke. Samo okruženje hosta: nikada se ne pohranjuje u bazu podataka niti prihvaća putem upravljačkog API-ja, jer se binarna datoteka izvršava. | | `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(unset)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Kako se lokalna proxy jezgra ponovno učitava nakon provjerene zamjene konfiguracije: JSON polje argumenata pokrenuto bez ljuske, ili točno `external` kada vanjski promatrač primjenjuje datoteku. Nikada se ne pohranjuje u bazu podataka niti izlaže putem API-ja. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Postavite na `"true"` ili `"1"` kako biste uključili IP adrese klijenta/izlaza i prefiks računa u opširni redak zapisnika procesa `[ProxyEgress]`. Zadano je ISKLJUČENO kako zapisnik procesa ne bi otkrivao IP adrese ili prefiks računa. | | `OMNIROUTE_DEBUG` | _(nije postavljeno)_ | `bin/cli/commands/quota.mjs` | Postavite na `1` za ispis dijagnostike vremena po zahtjevu (`[omniroute] GET completed in Nms`) iz CLI naredbi za kvotu na stderr. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(automatski)_ | `scripts/dev/healthcheck.mjs` | Eksplicitna putanja koju sondira provjera zdravlja kontejnera. Ako nije postavljena, sonda je izvodi iz `OMNIROUTE_BASE_PATH`; postavljanjem se ponovno uključuje dubinska krajnja točka nadzora. | | `OMNIROUTE_DEBUG_COMPLETION` | _(nije postavljeno)_ | `bin/cli/commands/completion.mjs` | Postavite na bilo koju nepraznu vrijednost za emitiranje dijagnostike `[omniroute completion]` iz putanja predmemorije dovršavanja ljuske CLI-ja (čitanje/osvježavanje/zapis). Zadano isključeno — te predmemorije neuspjeh prijavljuju tiho, pa nedostajuća/oštećena predmemorija nikada ne prekida tab-dovršavanje. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24h) | `open-sse/services/batchProcessor.ts` | Maksimalni prozor ponovnih pokušaja za pojedinačne stavke grupe (ms). Stavke koje premaše ovo trajanje označavaju se neuspjelima. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Osnovno kašnjenje (ms) za eksponencijalni backoff pri ponovnim pokušajima stavki grupe. | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1h) | `open-sse/services/batchProcessor.ts` | Gornja granica (ms) za eksponencijalni backoff između ponovnih pokušaja stavki grupe. | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Maksimalni broj grupa koje se obrađuju istovremeno. Povećajte za veću propusnost; držite nisko kako biste izbjegli oluje ograničenja brzine. | > [!IMPORTANT] > Prije izmjene postojeće trajne baze podataka, pokretač migracija objavljuje potpuni, > sadržajno adresirani snimak pod `DATA_DIR/db_backups/`. Objavljivanje zahtijeva datotečni > sustav koji podržava tvrde veze na istom datotečnom sustavu bez prepisivanja, uz trajnu > sinkronizaciju datoteka. POSIX domaćini također zahtijevaju sinkronizaciju direktorija; na > Windowsu Node može odbiti rukovatelje direktorija, pa OmniRoute ispire objavljenu datoteku > i sinkronizaciju unosa direktorija tretira kao najbolji mogući napor (best effort). > Ako montirani `DATA_DIR` ne može pružiti ta jamstva, pokretanje ne uspijeva zatvoreno prije > primjene migracije. Premjestite `DATA_DIR` na volumen s tim primitivama; nemojte koristiti > `DISABLE_SQLITE_AUTO_BACKUP` za zaobilaženje sigurnosti migracije. ### Scenariji | Scenarij | Konfiguracija | | ------------------------- | --------------------------------------------------------------------------------------------------------- | | **Lokalni razvoj** | Ostavite sve zadano. Baza podataka nalazi se na `~/.omniroute/omniroute.db`. | | **Docker** | `DATA_DIR=/data` + montirajte volumen na `/data`. | | **Šifrirano u mirovanju** | Postavite `STORAGE_ENCRYPTION_KEY` + čuvajte sigurnosne kopije ključa! Gubitak ključa = gubitak podataka. | | **CI/Testiranje** | `DATA_DIR=/tmp/omniroute-test` — privremeno, šifriranje nije potrebno. | --- ## 3. Mreža i portovi | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PORT` | `20128` | `src/lib/runtime/ports.ts` | Primarni port za korisničko sučelje nadzorne ploče i API krajnje točke (način s jednim portom). | | `OMNIROUTE_BASE_PATH` | _(prazno = korijen)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | URL podputanja za posluživanje OmniRoutea iza obrnutog proxyja (postavlja Next.js `basePath`; preusmjeravanja autentifikacije svjesna su basePatha). Npr. `/omniroute`. U Dockeru se vrijednost ugrađuje tijekom `docker build` (`ARG OMNIROUTE_BASE_PATH`); unaprijed izgrađene korijenske slike mogu primijeniti drugačiju vrijednost izvođenja jednom pri pokretanju spremnika, prije pokretanja Next.jsa. Postavite `NEXT_PUBLIC_BASE_URL` na javni izvor uključujući istu podputanju. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(prazno = korijen)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Pregledniku vidljiv odraz varijable `OMNIROUTE_BASE_PATH`, umetnut tijekom izgradnje tako da prikaz krajnje točke na nadzornoj ploči pokazuje `https://host/omniroute/v1` umjesto `https://host/v1`. Vraća se na `OMNIROUTE_BASE_PATH` kada nije postavljeno. Ponovno izgradite nakon promjene (Next `basePath` određen je u vremenu izgradnje). | | `DASHBOARD_ALLOW_EMBED` | _(nepostavljeno = nikad uokvirivo)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | Ugradnja HTML stranica u iframe po izboru. Kada nije postavljeno, svaka ruta isporučuje `frame-ancestors 'none'` + `X-Frame-Options: DENY`. Postavite na `vscode` za posluživanje stranica (nadzorna ploča, prijava, dokumentacija, početna stranica) s `frame-ancestors 'self' vscode-webview:` i bez `X-Frame-Options`, tako da ih VS Code Simple Browser može prikazati (OmniCopilotov način `dashboardOpen: "editor"`). API površina (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, pseudonimi na korijenskoj razini) u svakom slučaju zadržava stroga zaglavlja. Prepoznaje se samo `vscode` — `1`/`true` to ne omogućuju. Vrijeme izgradnje: ponovno izgradite nakon promjene (`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` za slike; postavljanje na unaprijed izgrađenoj instalaciji nema učinka). | | `API_PORT` | _(nepostavljeno)_ | `src/lib/runtime/ports.ts` | Kada je postavljeno, poslužuje `/v1/*` proxy API na ovom zasebnom portu. | | `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | Adresa povezivanja za API port. | | `DASHBOARD_PORT` | _(nepostavljeno)_ | `src/lib/runtime/ports.ts` | Kada je postavljeno, poslužuje korisničko sučelje nadzorne ploče na ovom zasebnom portu. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(onemogućeno)_ | `src/sse/utils/backpressure.ts` | Ograničava istovremene aktivne chat veze; zahtjevi iznad ograničenja dobivaju `503` sa zaglavljem `Retry-After`. Pozitivan cijeli broj omogućuje zaštitu; nepostavljeno/`0` je onemogućuje. | | `OMNIROUTE_INSTANCE_ID` | _(nepostavljeno)_ | `src/shared/resilience/peerRouting.ts` | Stabilan, jedinstveni ID za ovaj pristupnik prilikom ulančavanja OmniRoute instanci. Omogućuje dolazne provjere petlji među ravnopravnim čvorovima. Dopušteni znakovi: slova, znamenke, `.`, `_`, `:` i `-`; maksimalno 64 znaka. | | `OMNIROUTE_PEER_URLS` | _(nije postavljeno)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | Osnovni OmniRoute URL-ovi odvojeni zarezom koji mogu primati `X-OmniRoute-Peer-Trace`. Samo izričito dopušteni upstream URL-ovi primaju peer metapodatke; svi ostali pružatelji ostaju netaknuti. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Maksimalni broj prethodno posjećenih OmniRoute instanci prihvaćenih na ulančanom zahtjevu (`1`-`32`). Ponovljene instance ili iscrpljen proračun vraćaju HTTP `508 Loop Detected`. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Objavljeni port na strani hosta za nadzornu ploču u Docker produkcijskom načinu rada. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Objavljeni port na strani hosta za API u Docker produkcijskom načinu rada. | | `OMNIROUTE_PORT` | _(nije postavljeno)_ | `src/lib/runtime/ports.ts` | Ima prednost nad `PORT` prilikom pokretanja unutar Electrona ili drugih omotača. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Port za poslužitelj nadzora uživo putem WebSocketa u stvarnom vremenu. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Adresa vezanja za WebSocket poslužitelj uživo. Postavite na `0.0.0.0` za izlaganje na LAN mreži (također konfigurirajte `LIVE_WS_ALLOWED_ORIGINS`). Veze se autentificiraju pomoću kolačića sesije nadzorne ploče ili Bearer API ključa koji posjeduje opseg upravljanja (`manage`/`admin`). | | `LIVE_WS_ALLOWED_ORIGINS` | _(nije postavljeno)_ | `src/server/ws/liveServer.ts` | Dodatni izvori odvojeni zarezom kojima je dopušteno otvaranje WebSocket veze uživo. Loopback izvori nadzorne ploče već su zadano dopušteni. | | `LIVE_WS_ALLOWED_HOSTS` | _(nije postavljeno)_ | `src/server/ws/liveServerAllowList.ts` | Dodatna imena hostova odvojena zarezom dopuštena za WebSocket izvore uživo. Za razliku od `LIVE_WS_ALLOWED_ORIGINS` (puni URL-ovi izvora), podudara samo dio hosta — korisno za LAN/Tailscale postavke. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(nije postavljeno)_ | `src/hooks/useLiveDashboard.ts` | Javni URL za WebSocket nadzorne ploče uživo (na strani preglednika). Postavite kada WS poslužitelj stoji iza reverznog proxyja ili Cloudflare Tunela (npr. `wss://ws.my-ai.com/live-ws`); preglednik se povezuje tamo umjesto na `ws://hostname:20132`. Dio putanje također se koristi kao putanja nadogradnje WebSocketa (zadano: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` i `scripts/start-ws-server.mjs` | Postavite na `0` ili `false` za onemogućavanje WebSocket poslužitelja u stvarnom vremenu (zadano omogućen, vezan na loopback). CI/harness prekidač koji onemogućuje samostalnu pomoćnu skriptu WebSocket poslužitelja uživo. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Ograničenje brzine relay-a po (tokenu, IP adresi), zahtjeva/minutu. U memoriji, po instanci. `0` ili negativna vrijednost onemogućuje kontrolu IP dimenzije (ograničenje po tokenu iz baze podataka i dalje se primjenjuje). | | `NODE_ENV` | `production` | Next.js core | Kontrolira opširnost zapisivanja, predmemoriranje, izlaganje detalja o pogreškama i Next.js optimizacije. | | `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — zadano u kodu) | `package.json` / Next.js 16 | Turbopack je zadani bundler za `npm run dev` i `npm run build` (2-3× brže izgradnje, izmjereno). Postavite na `0` za povratak na webpack na Windowsima, kada naiđete na nekompatibilnosti s nativnim bindingom / bundlerom, **ili na strojevima s ograničenim RAM-om** — poznato je u upstreamu da Turbopack produkcijske izgradnje na ovoj liniji verzija Next.js (16.2.x) dosežu daleko veći memorijski vrhunac od webpacka na velikim grafovima modula (popravak memorijskog izbacivanja Turbopacka iz Next 16.3 još nije stabilan); webpack kao zamjena doseže mnogo niži vrhunac. Vidi #6409. **Izgradnje Docker slike zadano koriste `0` (webpack)**: `Dockerfile` deklarira `ARG OMNIROUTE_USE_TURBOPACK=0` kako goli `docker build .` (Railway i ostali hostovi jednim klikom, ad-hoc korisnici koji sami hostaju) ne bi bio OOM-ubijen na builderu s ograničenom memorijom; proslijedite `--build-arg OMNIROUTE_USE_TURBOPACK=1` za izgradnju slike s Turbopackom. Vidi `docs/guides/DOCKER_GUIDE.md` → Resursi tijekom izgradnje. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(nije postavljeno)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Postavite na `1` za preskakanje provjere integriteta SQLite baze pri pokretanju. Korisno za brže podizanje sustava na velikim bazama podataka. | | `NOTIFY_SOCKET` | _(nije postavljeno)_ | systemd (sd_notify protokol) | Postavlja ga systemd kada proces radi pod servisnom jedinicom sa sd_notify integracijom; OmniRoute ga čita (vidi `OMNIROUTE_DISABLE_SD_NOTIFY`) za slanje READY/WATCHDOG obavijesti. Korisnik ga nikada ne postavlja. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(nije postavljeno)_ | `scripts/dev/systemd-notify.mjs` | Postavite na `1` za onemogućavanje systemd sd_notify (Type=notify / WatchdogSec=) čak i kada se izvodi pod systemd jedinicom. Obavještavač je ionako bez učinka (no-op) izvan systemd-a. | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Interval (ms) za pozadinski planer provjere zdravlja vjerodajnica. Minimum: 10000 (10s). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | TTL (ms) za predmemorirani status zdravlja vjerodajnica. | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Postavite na `1` ili `true` za onemogućavanje pozadinskog periodičnog testiranja veza s pružateljima usluga. Pružatelji pretraživanja (SEARCH_VALIDATOR_CONFIGS u `src/lib/providers/validation/searchProviders.ts`, npr. `tavily-search`) uvijek su isključeni iz tog pregleda — njihova „validacija" je stvarni, naplaćivani upstream upit, pa se njihovo zdravlje nikada ne provjerava tempirano (#9970). | | `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Postavite na `1` kako bi autentificirani pozivatelj mogao zatražiti `/api/monitoring/health?deep=1`, što uzorkuje površinu completions jednom po TTL-u. Anonimni pozivatelji nikada ne pokreću sondu. | | `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | Prag zastoja (ms) za snimač event-loopa pri pokretanju: zamrzavanje duže od ovog praga pri nastavku zapisuje jedan redak `event loop stalled` s podacima o memoriji i broju zahtjeva u tijeku te povećava brojač/maksimum `eventLoopStall` na `/api/monitoring/health`. Postavite na `0` za onemogućavanje; nečitljiva ili negativna vrijednost vraća se na `5000`. | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Adresa povezivanja (bind) za Next.js dev/start poslužitelj. Kada je postavljena, nadjačava zadanu `0.0.0.0`. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Adresa povezivanja koju Playwright runner koristi pri pokretanju Next.js. Zadano je `127.0.0.1` za hermetičke testove. **Nemojte koristiti za `omniroute serve`** — umjesto toga koristite `OMNIROUTE_SERVER_HOST` (POSIX ljuske automatski postavljaju `HOSTNAME` na ime stroja; `.env` ga ne može nadjačati). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | Adresa povezivanja za `omniroute serve`. Izbjegava koliziju s POSIX varijablom ljuske `HOSTNAME` (koju bash/zsh uvijek postavljaju na ime stroja). Ako nije postavljena, koristi se `0.0.0.0`. (#6194) | ### Načini rada s portovima ``` ┌─────────────────────────── Jedan port (zadano) ─────────────────────────────┐ │ PORT=20128 │ │ → Nadzorna ploča: http://localhost:20128 │ │ → API: http://localhost:20128/v1/chat/completions │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Odvojeni portovi ────────────────────────────────┐ │ DASHBOARD_PORT=20128 │ │ API_PORT=20129 │ │ API_HOST=0.0.0.0 │ │ → Nadzorna ploča: http://localhost:20128 │ │ → API: http://0.0.0.0:20129/v1/chat/completions │ │ Slučaj upotrebe: API izložen LAN-u, nadzorna ploča samo na localhost. │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Docker produkcija ───────────────────────────────┐ │ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │ │ → Mapira portove spremnika na portove domaćina u docker-compose.prod.yml. │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 4. Sigurnost i autentifikacija | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Sol kombinirana s hardverskim identifikatorima za određivanje digitalnog otiska stroja. Promijenite je za svaku implementaciju radi izolacije. | | `OMNIROUTE_CLI_SALT` | _(nije postavljeno = nasumična sol po instalaciji pohranjena u `/cli-token-salt.json`)_ | `src/lib/machineToken.ts` | HMAC sol za izvođenje lokalnog CLI tokena za autentifikaciju. Postavljanje ove vrijednosti rotira sve CLI tokene na stroju i uvijek ima prednost nad pohranjenom soli. Pogledajte `docs/security/CLI_TOKEN.md`. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Postavlja zastavicu `Secure` na kolačićima sesije. **Mora biti `true`** kada se pokreće iza HTTPS-a. | | `REQUIRE_API_KEY` | `false` | API middleware | Kada je `true`, svi `/v1/*` proxy zahtjevi moraju sadržavati valjani API ključ. **Ova zastavica ne štiti `GET /v1/models`**, koji umjesto toga slijedi sigurnosni stav prijave na nadzornu ploču (`requireAuthForModels`) — pa `401` od `/v1/models` NE znači da je inferencija zaštićena. Pogledajte `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Omogućuje otkrivanje potpunih vrijednosti API ključeva u korisničkom sučelju nadzorne ploče. Može se konfigurirati putem zastavica značajki (Feature Flags) nadzorne ploče; sigurnosni rizik na dijeljenim instancama. | | `NO_LOG_API_KEY_IDS` | _(prazno)_ | `src/lib/compliance/index.ts` | ID-ovi API ključeva odvojeni zarezima koji zaobilaze bilježenje zahtjeva (usklađenost s GDPR-om). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(nije postavljeno = neograničeno)_ | `src/shared/utils/apiKeyPolicy.ts` | Rezervni dnevni proračun zahtjeva koji se primjenjuje na API ključeve čiji je stupac `rate_limits` null. Nepostavljeno ili prazno: nema implicitnog ograničenja (#2289, #11017). `0` znači isto (neograničeno). Pozitivan cijeli broj N omogućuje N/dan, 5N/tjedan, 20N/mjesec. Neispravno oblikovane neprazne vrijednosti vraćaju se na naslijeđene prozore 1000/dan, 5000/tjedan, 20000/mjesec. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | Najveća dopuštena veličina tijela zahtjeva. Odbacuje korisne terete koji premašuju ovo ograničenje. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Stvarna tijela zahtjeva na ovom pragu ili iznad njega preuzimaju atomski procesno-lokalni lease za prihvat teških zahtjeva prije JSON parsiranja (BYTE putanja, uključujući `POST /v1/responses`). Isti mehanizam izbjegavanja sa zdravom rezervom iz [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) kao kod strukturalno teških zahtjeva; i dalje ograničeno s `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) tako da se [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) ne vraća. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Čvrsto ograničenje chat rute koje se primjenjuje na bajtove pročitane tijekom ograničenog unosa, uključujući zahtjeve s nedostajućom, nevažećom ili nepoštenom vrijednošću `Content-Length`; višak dobiva `413`. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(nije postavljeno — bez ograničenja broja zahtjeva)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** ovo zastarjelo ograničenje BROJA zahtjeva sada se primjenjuje samo kad je izričito postavljeno. Ako nije postavljeno (zadano), prijam teških chat zahtjeva umjesto toga upravlja `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — automatski izvedeni proračun u BAJTOVIMA dimenzioniran prema stvarnom memorijskom stropu procesa u **jednom procesu** (jedna V8 hrpa). Dva preklapajuća `/v1/responses` od ~750k tokena ruše hrpe od ~12 Gi (#7849) — upozorenje o **memorijskom proračunu**, a ne čvrsti produktov maksimum od 2. Zdrav proces (hrpa ispod omjera odbacivanja) MOŽE primiti više istovremenih dugih `/v1/responses` putem `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM`. Deseci dugih SSE klijenata (40–50) to je hrpa + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110, a ne „maks. 2". Slijepo podizanje ove vrijednosti kako bi se „iskoristio domaćin" ponovno uvodi #7849. Uvećavajte **hrpe** s **N nezavisnih `DATA_DIR`-ova** (#11024); nikada `replicas>1` na jednoj SQLite datoteci. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(automatski izvedeno)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** nadjačavanje automatski izvedenog proračuna bajtova za unos (25% strožeg V8/cgroup memorijskog stropa podijeljeno s 8x prolaznim pojačanjem). Izvedene i izričite vrijednosti ograničene su na 8 MiB–2 GiB. Tijelo veće od efektivnog proračuna odmah ne uspijeva s `413 body_exceeds_budget`; konkurencija između pojedinačno usluživih tijela ostaje ponovljivi `503`. 40–50 istovremenih dugih SSE klijenata to je ovaj proračun + hrpa, a ne čvrsti „maks. 2". Prije podešavanja pročitajte `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` na `/api/monitoring/health`. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | Omjer odbacivanja pod pritiskom hrpe (`heapUsed / heap_size_limit`) za prijam teških zahtjeva BYTE i STRUCTURE (#10183, #10268, #10437). Istovremeni teški zahtjev iznad `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` odbacuje se s ponovljivim `503` samo kad je hrpa TAKOĐER na ili iznad ovog omjera; na zdravoj hrpi umjesto toga biva primljen putem zdravog rezervnog prostora. | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (zadano `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Ograničeni dodatni kapacitet za brzi put zdrave hrpe (#10437) na **oba** mehanizma STRUCTURE i BYTE (`admitChatRequest`, uključujući tijela ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). Bez ovog ograničenja svaki bi zahtjev sa zauzetom, ali zdravom hrpom zaobilažio prijam bez ikakvog stropa. Kad je ovaj broj istovremenih zakupa aktivan putem zdrave hrpe, daljnji zauzeti zahtjevi prelaze na ISTI put ograničenog čekanja/odbacivanja koji se koristi pod stvarnim pritiskom hrpe. `0` potpuno onemogućuje zaobilaženje. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Broj poruka koji klasificira chat zahtjev kao težak čak i kad je njegovo tijelo ispod praga bajtova. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Broj alata koji klasificira chat zahtjev kao težak čak i kad je njegovo tijelo ispod praga bajtova. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Konzervativna procjena tokena prema veličini niza koja klasificira zahtjev kao težak; ovo je proxy za trošak prijema, a ne tokenizacija za naplatu davatelja. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (onemogućeno) | `src/shared/middleware/chatBodyAdmission.ts` | Neobavezno, izričito uključivo ograničenje povijesti chata. Zadano onemogućeno: broj poruka je pravilo implementacije, a ne univerzalno svojstvo zahtjeva, a ograničavanje ovdje odbija razgovore konačnim `413` prije nego što ih kompresijski cjevovod može učiniti usluživima. Rast hrpe ograničavaju `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` i odbacivanje pod pritiskom hrpe. Postavite pozitivnu vrijednost na implementacijama s ograničenom memorijom kojima je potreban čvrsti strop; višak tada dobiva strukturirani `413` koji zahtijeva sažimanje. | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Čvrsti strop za upstream odgovor bez strujanja koji se u cijelosti sprema u memoriju. Iznad njega upstream čitač se prekida i zahtjev brzo ne uspijeva umjesto da neograničeni niz raste dok se hrpa ne iscrpi. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Maksimalni broj bajtova na žici koji se prosljeđuju iz zaglavlja upstream odgovora. Kada se proračun premaši, zaglavlja nižeg prioriteta (npr. prilagođena `x-codex-*`, `x-oai-request-id`) odbacuju se kako bi se ostalo unutar uobičajenih ograničenja zaglavlja obrnutog proxyja. Postavite višu vrijednost kako biste proslijedili više upstream metapodataka po cijenu veće veličine zaglavlja odgovora. | | `CORS_ORIGIN` | _(nije postavljeno)_ | `src/server/cors/origins.ts` | Zastarjeli popis dopuštenih CORS izvora s jednim izvorom. Za nove implementacije radije koristite `CORS_ALLOWED_ORIGINS`. CORS je namijenjen samo API klijentima u pregledniku koji pristupaju s drugih izvora; autentificirani upisi s nadzorne ploče umjesto toga koriste zahtjeve s istog izvora uz CSRF zaštitu vezanu uz sesiju. | | `CORS_ALLOWED_ORIGINS` | _(nije postavljeno)_ | `src/server/cors/origins.ts` | Popis dopuštenih CORS izvora odvojen zarezima. Zamjenski znak se ne šalje osim ako nije izričito konfigurirano `CORS_ALLOW_ALL=true`. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Sigurnosni ventil samo za razvoj koji odražava bilo koju `Origin` vrijednost preglednika. Nemojte omogućivati na dijeljenim ili produkcijskim implementacijama. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Zastarjeli pseudonim. Njegov prekidač na nadzornoj ploči (nadjačavanje u bazi podataka) čita se prije ove vrijednosti okoline; `false`, `0`, `no` ili `off` u bilo kojem od njih isključuje provjere hosta na isti način kao što to radi `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`, čak i kada je prekidač te zastavice na nadzornoj ploči spremljen kao isključen; ostale vrijednosti ostavljaju zaštitu dvjema zastavama u nastavku. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Isključuje provjere hosta u zaštiti odlaznih URL-ova, uključujući blokadu metapodataka oblaka (cijeli 169.254.0.0/16, metadata.google.internal), na putanjama pružatelja koje slijede način rada zaštite: validacija URL-a, otkrivanje modela, osnovni URL-ovi čvorova pružatelja (uključujući udaljene rerank čvorove) i test proxy-fallbacka, kao i na drugim odlaznim putanjama povezanim s pružateljima poput udaljenog dohvaćanja slika/medija. Također dopušta privatne webhook ciljeve, osim krajnjih točaka metapodataka oblaka/link-local adresa, koje ostaju blokirane čak i s ovom zastavicom uključenom. Zahtjevi za razgovor poslani putem `BaseExecutor.execute()` zadržavaju svoju provjeru metapodataka oblaka. Lokalni pružatelji rade sa zadanim postavkama: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (zadano `true`) već dopušta lokalne i LAN URL-ove na putanjama validacije, otkrivanja i čvorova pružatelja; test proxy-fallbacka i privatni webhook ciljevi konzultiraju samo ovu zastavicu i blokiraju lokalne/LAN hostove dok je isključena. Nadjačava `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false`. Vrijednost spremljena putem prekidača na nadzornoj ploči ima prednost nad ovom varijablom. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Dopušta URL-ove pružatelja na lokalnim/privatnim adresama (127.0.0.1, localhost, LAN, privatni rasponi) za validaciju pružatelja, otkrivanje modela, razgovor i ostale odlazne putanje povezane s pružateljima kojima upravlja način rada zaštite. **Zadano `true`** (local-first): zaštita tada blokira krajnje točke metapodataka oblaka — cijeli 169.254.0.0/16 plus poznata imena hostova metapodataka (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254). Postavite `false` za način rada samo za javne adrese, koji također blokira privatne i loopback hostove. Zaštita provjerava naziv hosta ili IP literal onako kako je zapisan, prije bilo kakvog DNS upita; u načinu samo za javne adrese omotač sigurnog dohvaćanja (safe-fetch) dodatno razrješava naziv hosta i odbija svaki privatni odgovor. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` isključuje ove provjere na putanjama navedenima u njezinom retku. Ugrađeni lokalni pružatelji, poput LM Studio, Ollama, vLLM, Llamafile i Triton, preskaču sve provjere hosta za validaciju ključa i razgovor. Vrijednost spremljena putem prekidača na nadzornoj ploči ima prednost nad ovom varijablom. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | Dopušta da rute `/v1/audio/*` (transkripcije, govor, prijevodi) koriste OpenAI-kompatibilan čvor pružatelja smješten izvan localhosta. Zadano isključeno — usmjeravanje zvuka na udaljeni host mijenja identitet izlaznog prometa i mora biti izričita odluka operatora. Loopback/privatni čvorovi (localhost, 127.0.0.1, 172.16-31.x) uvijek su dopušteni i nisu pod utjecajem. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | Dopušta da `POST /v1/rerank` (i loopback korak rerankinga memorijskog mehanizma) koristi OpenAI-kompatibilan čvor pružatelja smješten izvan localhosta — LAN uređaj ili Tailscale peer koji pokreće TEI, Infinity, vLLM itd. Zadano isključeno — usmjeravanje na udaljeni host mijenja identitet izlaznog prometa i mora biti izričita odluka operatora. Loopback čvorovi (localhost, 127.0.0.1, 172.16-31.x) uvijek su dopušteni i nisu pod utjecajem. Osnovni URL udaljenog čvora također mora proći pravila odlaznih URL-ova pružatelja (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`). | | `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(prazno)_ | `src/shared/network/localNodeHosts.ts` | Nazivi hostova (odvojeni zarezom ili razmakom) koje usmjeravanje provider-čvorova tretira kao lokalne — tipično naziv Docker/Compose servisa rerankera, TEI-ja ili audio sidecara na OmniRouteovoj vlastitoj Docker mreži (`http://reranker:8080/v1`), tako da čvor ne treba tvrdo kodiranu IP adresu spremnika. Navedeni hostovi ispunjavaju uvjete za `/v1/rerank`, `/v1/audio/*` i lokalnu provjeru zdravlja bez uključivanja `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` za svaki udaljeni čvor, a pozivaju se izravno — nikada kroz `HTTP(S)_PROXY` ili prikvačeni proxy veze. I dalje šalju API ključ veze. Prihvaćaju se samo nazivi s jednom oznakom te nazivi `.internal`/`.local`; javni FQDN-ovi, IP literali i nazivi cloud-metapodataka zanemaruju se uz upozorenje. (#14635) | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Kada je OIDC omogućen, onemogućuje prijavu lozinkom kako bi se korisnici mogli autentificirati isključivo putem OIDC Single Sign-On. Prihvaća se i goli alias `OIDC_DISABLE_PASSWORD_LOGIN`; Dashboard Feature Flag s istim ključem ima prednost. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Goli alias za `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889). | ### Kontrolni popis za očvršćivanje (hardening) ```bash # Minimalna razina sigurnosti za produkciju: AUTH_COOKIE_SECURE=true # Zahtijeva HTTPS REQUIRE_API_KEY=true # Autentificiraj sve proxy pozive ALLOW_API_KEY_REVEAL=false # Nikada ne izlaži ključeve u korisničkom sučelju CORS_ALLOWED_ORIGINS=https://your.domain.com MAX_BODY_SIZE_BYTES=5242880 # Ograničenje od 5 MB ``` --- ## 5. Sanitizacija ulaza i zaštita osobnih podataka OmniRoute pruža dvoslojnu zaštitu: skeniranje zahtjeva radi otkrivanja pokušaja umetanja uputa i uklanjanje osobnih podataka iz odgovora. > **⚠️ Ograničenja:** Ove zaštitne mjere predstavljaju _heurističko otkrivanje prema načelu najboljeg mogućeg rezultata_, a ne potpun vatrozid protiv umetanja uputa ni DLP sustav za osobne podatke. Mogu proizvesti lažno pozitivne rezultate (označavanje bezazlenih upita s personama ili RPG scenarijima) i lažno negativne rezultate (leet govor, razmaci, obrasci koji nisu na engleskom jeziku). Same po sebi nisu dovoljne za usklađenost. Prilagodite načine rada i testirajte ih na svojem prometu prije nego što se na njih oslonite. ### Strana zahtjeva: zaštita od umetanja uputa | Varijabla | Zadano | Izvorna datoteka | Opis | | --------------------------------- | -------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Omogućuje skeniranje dolaznih poruka radi otkrivanja obrazaca umetanja uputa. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Pravilo za umetanje: `warn` = samo bilježenje, `block` = odbijanje zahtjeva uz status 400. Naslijeđeni način `redact` **ne** uklanja tekst umetnute upute; za preoblikovanje osobnih podataka u zahtjevu upotrijebite `PII_REDACTION_ENABLED`. | | `INJECTION_GUARD_MODE` | _(nije postavljeno)_ | `src/middleware/promptInjectionGuard.ts` | Naslijeđeni pseudonim za `INPUT_SANITIZER_MODE` — isto ponašanje. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | Najniža razina ozbiljnosti koju `MODE=block` odbija: `high` (zadano), `medium` ili `low`. Srednje ozbiljni obrasci služe samo za promatranje, osim ako se prag ne snizi. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(nije postavljeno)_ | `src/shared/utils/injectionSeverity.ts` | Naslijeđeni pseudonim za `INPUT_SANITIZER_BLOCK_THRESHOLD` — isto ponašanje. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | Kada je postavljeno na `true`, redigira osobne podatke u dolaznim zahtjevima (neovisno o načinu zaštite od umetanja). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | Redigira poznate obrasce API ključeva i tajnih tokena iz sadržaja zahtjeva i odgovora. Aktivira se po želji; odgovara postavci `PII_REDACTION_ENABLED`. | ### Strana odgovora: sanitizator osobnih podataka | Varijabla | Zadano | Izvorna datoteka | Opis | | -------------------------------- | -------- | ------------------------- | --------------------------------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Skenira odgovore LLM-a radi otkrivanja otkrivenih osobnih podataka prije vraćanja klijentu. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = maskiranje osobnih podataka, `warn` = samo bilježenje, `block` = odbacivanje cijelog odgovora. | ### Sanitizator konteksta VS Code ruta s tokenom | Varijabla | Zadano | Izvorna datoteka | Opis | | ----------------------------------- | ------ | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | Uklanja implicitni kontekst aktivnog uređivača (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) iz zahtjeva prema `/v1/vscode/[token]/*` i redigira sadržaj izričito priloženih osjetljivih datoteka. Sigurno prema zadanim postavkama; postavite na `0` kako biste onemogućili. | ### Scenariji | Scenarij | Konfiguracija | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Usklađenost u poduzeću** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (blokiranje umetanja + redigiranje osobnih podataka u zahtjevima/odgovorima; načini rada neovisni su jedan o drugome) | | **Samo nadzor** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — bilježi, ali nikada ne blokira | | **Osobna uporaba** | Ostavite sve onemogućeno — bez dodatnog opterećenja | --- ## 6. Politike za alate i usmjeravanje | Varijabla | Zadano | Izvorna datoteka | Opis | | ----------------------------------------------------------- | ------------------------------------ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | Kontrolira pristup LLM alatima/pozivanju funkcija. `allowlist` = samo navedeni alati, `denylist` = svi osim navedenih, `disabled` = bez ograničenja. | | `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Putanja do JSON datoteke s pravilima za manipulaciju payloadom (prilagodbe upstreama po modelu/protokolu). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Interval ponovnog učitavanja (ms) za vruće ponovno učitavanje datoteke s pravilima payloada. Minimum `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Uključivanje po izboru: usmjerava ID-ove modela `claude-*` bez prefiksa od Claude Code klijenata kroz Claude Code OAuth račun umjesto zahtijevanja prefiksa pružatelja. Eksplicitni prefiksi pružatelja i dalje imaju prednost. Također se može konfigurirati putem prekidača na nadzornoj ploči na stranici Claude pružatelja. | | `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | Postavite `false` da zaustavite OmniRoute u samostalnom dodavanju Anthropic beta značajke `redact-thinking-2026-02-12` (prazni thinking blokovi samo s potpisom). Zahtjevi s `thinking.display: "summarized"` ionako je preskaču; beta značajka redact dogovorena od strane klijenta ili CC-kompatibilno uključivanje `requestDefaults.redactThinking` zadržava je. Claude OAuth zahtjevi zadržavaju betu (dio je Claude Code OAuth otiska) osim ako nije uključena feature zastavica `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED` koja je zadano isključena. | | `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Zastarjelo ponašanje `resolveBareModelToConnectionDefault` (#4825): zamjenjuje svaki naziv modela bez prefiksa s `defaultModel` odabrane veze. Zadano isključeno, zamjenjuje se samo `auto` ili prazan model; kada je uključeno, bilježi jedno upozorenje po paru. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Ograničenje istovremenosti po modelu za round-robin kombinacije (#9100). Semafor round-robin kombinacije bio je fiksno ograničen na 3 istovremena zahtjeva po modelu bez mogućnosti nadjačavanja, serijalizirajući promet veće istovremenosti iza tog ograničenja. Validirano na `>= 1`, ograničeno na `<= 32`. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Opasno uključivanje po izboru koje preskače OmniRouteovu lokalnu provjeru kontekstnog prozora / maksimalnog broja ulaznih tokena za izravne zahtjeve jednog modela. Upstream pružatelji i dalje nameću svoje stvarne limite; kompresija prompta i vlastito ograničenje izlaznih tokena modela ostaju aktivni. Efektivni prioritet je nadjačavanje iz baze podataka Feature Flags > varijabla okoline > zadano; ponovno pokretanje nije potrebno. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(nije postavljeno)_ | `open-sse/services/selfHostedEntry.ts` | Umetnuti YAML dokument `providers:` (RIC-738, D4). Kada je postavljen (sa ili bez bloka `strategy:`), `/v1/chat/completions` preusmjerava na samostalno hostani unificirani OpenAI-kompatibilni ulaz umjesto cloud pipelinea. Nepostavljeno (zadano): ruta prolazi izravno do postojećeg cloud pipelinea. Vidi `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(nije postavljeno)_ | `open-sse/services/selfHostedEntry.ts` | Putanja do YAML datoteke koja sadrži isti `providers:` dokument kao `OMNIROUTE_SELF_HOSTED_PROVIDERS`, za implementacije koje preferiraju datoteku umjesto umetnute varijable okoline. Bilo koja od njih aktivira samostalno hostani ulaz. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _(nije postavljeno — otvorena ruta)_ | `open-sse/services/selfHostedEntry.ts` | Opcionalni zajednički API ključ za unificirani samostalno hostani ulaz (D5 okvir, rezervirano za sustav kvota po ključu). Kada je postavljen, zahtjevi moraju uključivati `Authorization: Bearer `. Nepostavljeno: ruta je otvorena, u skladu s postojećim uzorkom samostalno hostanih lokalnih pružatelja (implementacija na loopback/pouzdanoj mreži). | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(nije postavljeno)_ | `open-sse/services/routingStrategies.ts` | Inline YAML `strategy:` dokument za deterministički mehanizam usmjeravanja (M2/RIC-740, D3) — crna/bijela lista, prekidač zahlađenja, prioritet prema trošku, usmjeravanje na temelju latencije, lanac pričuvnih ruta. Nadjačava inline `strategy:` blok ugniježđen unutar `OMNIROUTE_SELF_HOSTED_PROVIDERS`, po ključu. Vidi `docs/routing/DETERMINISTIC_ROUTING.md`. | | `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(nije postavljeno)_ | `open-sse/services/routingStrategies.ts` | Putanja do YAML datoteke koja sadrži isti `strategy:` dokument kao `OMNIROUTE_SELF_HOSTED_STRATEGY`, za implementacije koje preferiraju datoteku umjesto inline varijable okruženja. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(nije postavljeno)_ | `open-sse/services/conversationTracker.ts` | Postavite `1` za zaustavljanje prikupljanja povijesti razgovora. `resolveConversationId()` vraća nespraćeni rezultat prije nego što pročita SQLite ili parsira povijest poruka, a obuhvaćeni su i ID-ovi sesija koje dostavlja klijent. Obrada sesija usmjeravanja ostaje nepromijenjena, a postojeći zapisi se ne brišu. Za implementacije koje ne koriste prikaz razgovora na nadzornoj ploči i žele da tablica poteza prestane rasti. | | `OMNIROUTE_NADIR_API_KEY` | _(nije postavljeno)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | API ključ za opcijsku `nadir` strategiju auto-kombo usmjerivača, koristi se kada vlastiti `config.nadir.apiKey` komba nije postavljen. Neobavezno: pozivi bez ključa idu na Nadirov anonimni sloj, koji je ograničen brzinom po IP adresi i stoga nije upotrebljiv iza zajedničkog pristupnika. Osjetljivo; preferirajte polje po kombu kada kombovi koriste različite račune. | | `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Osnovni izvor Nadir API-ja za odlučivanje, koristi se kada vlastiti `config.nadir.baseUrl` komba nije postavljen. Potrebno samo za samohostirani Nadir, koji drži zaglavlja upita unutar vlastite mreže. Završni `/v1` se tolerira i uklanja. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | Tjedni prozor za ograničenja potrošnje u USD po API ključu (provjera zahtjeva, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: tjedan završava pri najranijem tjednom resetiranju među upstream vezama kojima ključ može pristupiti, ili je kliznih 7 dana kada nijedno nije poznato. `calendar`: lokalni tjedan od ponedjeljka 00:00 do sljedećeg ponedjeljka 00:00, identičan za svaki ključ. `calendar` se preporučuje kada jedan skup upstream računa dijeli mnogo pojedinačno budžetiranih ključeva. Nevažeće vrijednosti vraćaju se na `provider`. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(vremenska zona procesa)_ | `src/lib/usage/apiKeyUsageLimits.ts` | IANA vremenska zona (na primjer `Asia/Shanghai`) koja definira ponedjeljak 00:00 za `calendar` tjedni prozor. Nepostavljena ili nevažeća: vremenska zona OmniRoute procesa (`TZ` domaćina ili kontejnera, koji je često nepostavljen, tj. koordinirano univerzalno vrijeme, u slikama kontejnera). Zanemaruje se u `provider` načinu. | | `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | Zadani maksimalni broj alata dopuštenih u zahtjevu (OpenAI zadano). Samo pozitivni cijeli brojevi; nepostavljene ili nevažeće vrijednosti zadržavaju `128`. Pružatelj s poznatim/proaktivnim ograničenjem (`grok-cli` 200, `nvidia` 1536) i dalje primjenjuje vlastiti strop — ovo samo pomiče zadani strop. | | `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(uključeno)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai pozivanje alata emulirano promptom: nepostavljeno ili `1`/`true`/`on`/`yes` ubacuje lokalni katalog alata u prompt; bilo koja druga vrijednost (npr. `0`) preskače to ubacivanje. | --- ## 7. URL-ovi i sinkronizacija u oblaku | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | URL na strani poslužitelja putem kojeg interni poslovi sinkronizacije pozivaju `/api/sync/cloud`. Zadržite ga kao povratni/kontejnerski URL čak i kada je aplikacija javno dostupna putem proxyja. | | `CLOUD_URL` | _(prazno)_ | `src/lib/cloudSync.ts` | URL krajnje točke releja u oblaku (premium značajka). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | HTTP vrijeme čekanja za zahtjeve sinkronizacije u oblaku. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Konfiguracija izgradnje za Webpack | Profil tijekom izgradnje (postavite na `minimal` kako biste fizički isključili privilegirane module iz paketa). | | `OMNIROUTE_STANDALONE_DIR` | _.build/ samostalni izlaz_ | `scripts/build/colocate-standalone.mjs` | Nadjačavanje direktorija samostalnog izlaza tijekom izgradnje koji koristi korak kolokacije nakon izgradnje. Nije postavka tijekom izvođenja. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(prazno)_ | `src/lib/cloudSync.ts` | Dijeljena tajna koja se upotrebljava za provjeru HMAC-SHA256 potpisa odgovora sinkronizacije u oblaku. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Postavite na `true` kako biste krajnjoj točki sinkronizacije u oblaku dopustili prepisivanje lokalnih vjerodajnica. Zadana je vrijednost `false`. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Postavite na `true` kako biste odbili nepotpisani odgovor sinkronizacije u oblaku kada nije konfigurirana lokalna tajna (#13679). Prisutni potpis uvijek se provjerava — i uvijek odbija kada `OMNIROUTE_CLOUD_SYNC_SECRET` nije postavljen — neovisno o ovoj zastavici. U v3.9 zadana vrijednost postaje obavezna provjera. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | Postavite na `true` kako biste se bez potvrde korisnika vratili na ponašanje „uvezi sve” u jednom koraku iz v3.8.5. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, nadzorna ploča, sinkronizacija | Javno dostupan URL za OAuth redirect_uri, poveznice nadzorne ploče i generirane javne URL-ove. Postavite ga na stabilan javni URL kada OAuth povratni pozivi ili generirane poveznice preglednika moraju upotrebljavati kanonski host obrnutog proxyja. | | `NEXT_PUBLIC_CLOUD_URL` | _(prazno)_ | Na strani klijenta | Zrcalna vrijednost varijable `CLOUD_URL` na strani klijenta. | | `NEXT_PUBLIC_APP_URL` | _(nije postavljeno)_ | `src/shared/services/cloudSyncScheduler.ts` | Naslijeđena pričuvna vrijednost za `NEXT_PUBLIC_BASE_URL`. | | `NEXT_PUBLIC_PORT` | _(nije postavljeno — koristi `PORT` kao pričuvnu vrijednost)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Pričuvni priključak na strani klijenta za prikaz URL-ova kada izvorište nije poznato (SSR/testovi); čita se prije varijable `PORT`. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(nije postavljeno)_ | Razrješivač javnog izvorišta, URL-ovi slika | OmniRoute izvorište namijenjeno pregledniku s najvišim prioritetom, koje se upotrebljava za generiranje javnih URL-ova i provjeru izvorišta preglednika izvan nadzorne ploče. Postavite ovu varijablu kada OpenWebUI ili drugi posrednik pristupa OmniRouteu putem internog URL-a, ali korisnikov preglednik mora dohvaćati generirane medijske sadržaje s LAN-a, tunela ili javnog izvorišta. **Nemojte** uključiti `/v1`. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(nije postavljeno)_ | `open-sse/config/providerPluginManifestUrl.ts` | Apsolutni URL manifesta dodatka pružatelja koji se oglašava pomoćnim klijentima. Kada nije postavljeno, OmniRoute izvodi `/api/v1/provider-plugin-manifest` iz izvorišta zahtjeva ili HOST/PORT. | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Protokol koji se upotrebljava pri izvođenju URL-a manifesta dodatka pružatelja iz HOST/PORT bez izvorišta zahtjeva. Postavite na `https` iza javnog proxyja koji završava TLS kada nije postavljena izričita vrijednost `OMNIROUTE_PROVIDER_MANIFEST_URL`. | | `OMNIROUTE_TRUST_PROXY` | _(nije postavljeno)_ | `src/server/origin/publicOrigin.ts` | Neobavezni način pouzdanosti za proslijeđena zaglavlja javnog izvorišta. Nije postavljeno = nemoj vjerovati zaglavljima `Forwarded` / `X-Forwarded-*` pri donošenju sigurnosnih odluka. `true` / `loopback` vjeruje proslijeđenom hostu/protokolu samo od proxyja povratne petlje označenog tokenom. `private` / `lan` također vjeruje proxy čvorovima u privatnom LAN-u i omogućuje mostu `API_PORT` da zadrži `X-Forwarded-For` takvog čvora. U produkciji dajte prednost izričitoj vrijednosti `NEXT_PUBLIC_BASE_URL`. | | `KIE_CALLBACK_URL` | _(nije postavljeno)_ | `open-sse/utils/kieTask.ts` | Javni URL povratnog poziva za asinkrone kie.ai poslove. Nadjačavanje s najvišim prioritetom, prije `OMNIROUTE_KIE_CALLBACK_URL` i `OMNIROUTE_PUBLIC_URL`. | | `OMNIROUTE_KIE_CALLBACK_URL` | _(nije postavljeno)_ | `open-sse/utils/kieTask.ts` | Alternativni naziv za `KIE_CALLBACK_URL`. Upotrebljava se kao pričuvna vrijednost kada primarna varijabla nije postavljena. | | `OMNIROUTE_PUBLIC_URL` | _(nije postavljeno)_ | `open-sse/utils/kieTask.ts` | Javno izvorište koje se upotrebljava za sastavljanje URL-ova asinkronih povratnih poziva. Pričuvna vrijednost s najnižim prioritetom za kie.ai povratne pozive; upotrebljava se i kao generički javni URL za druge posrednike. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Krajnja točka za dohvaćanje CrofAI kvote koju upotrebljava stranica Upotreba. Nadjačajte za posrednike / testne podatke. | | `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | Krajnja točka za ClinePass kvote za 5 sati / tjedan / mjesec koju upotrebljava stranica Upotreba. Nadjačajte za posrednike / testne podatke. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Službena krajnja točka za upotrebu OpenCode Goa, autentificirana API ključem, koju upotrebljava stranica Upotreba. Nadjačajte za posrednike / testne podatke. | | `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | Sintetizira zaglavlja identiteta OpenCode CLI-ja (User-Agent, x-opencode-client/project, UUID-ove zahtjeva/sesije) u opencode-go/zen zahtjevima prema nadređenom poslužitelju koje klijent nije poslao, kako bi ih Cloudflare prihvatio pri izlaznom prometu s VPS-a (#6210/#5997). Prema zadanim postavkama uključeno od #10571; isključite s `false`/`0`/`no`/`off`. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | Zadani User-Agent koji se koristi kada je `OPENCODE_SYNTHESIZE_CLI_HEADERS` uključen i nije postavljeno nadjačavanje `_USER_AGENT` za pojedinog pružatelja. Primjenjuje se samo na izvršitelje opencode. Za zahtjev bez ključa koji prolazi kroz ograničenja nadređenog sustava, konfigurirana vrijednost koja ne sadrži `opencode/= 1.17>` zamjenjuje se ovom zadanom vrijednošću umjesto da bude odbijena. | | `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (uključeno) | `open-sse/utils/opencodeHeaders.ts` | Prosljeđuje zaglavlja klijentske atribucije aplikacije (`x-session-id`, `x-title`, `http-referer`) nadređenim pružateljima kako bi zahtjev koji započinje unutar navedenog okruženja zadržao svoj identitet kroz usmjerivač (OpenRouterova ograničenja za izdavače oslanjaju se na njih). `0`/`false`/`no`/`off` zadržava identitet registra/operatora i odbacuje vrijednosti koje je dostavio klijent. Prilagođena zaglavlja koja je konfigurirao operator uvijek imaju prednost pred vrijednostima klijenta. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | Vrijednost sintetiziranog zaglavlja `x-opencode-client` kada je `OPENCODE_SYNTHESIZE_CLI_HEADERS` uključen. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | Vrijednost sintetiziranog zaglavlja `x-opencode-project` kada je `OPENCODE_SYNTHESIZE_CLI_HEADERS` uključen. | | `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(nije postavljeno)_ | `open-sse/config/providerErrorRules.ts` | Efektivni skup pružatelja čiji se kvarovi nadređenog sustava grupiraju prema izlaznoj IP adresi (jedna pogreška 429 zaustavlja svaku povezanu vezu koja dijeli tu IP adresu). Ako nije postavljeno, koristi se zadana vrijednost besplatne razine `opencode,opencode-go,opencode-cli`; `none`/`off`/`false`/`0` u potpunosti onemogućuje kaskadu; popis odvojen zarezima zamjenjuje skup. Plaćeni planovi grupirani su prema računu u nadređenom sustavu i to mogu sigurno onemogućiti (#9611). | | `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(nije postavljeno)_ | `open-sse/config/providerErrorRules.ts` | Opseg rotacije izlaza pri odbijanju zbog kvote. Ako nije postavljeno, član skupa privremeno se izuzima nakon pogreške 429 samo za prethodno navedenu obitelj grupiranu prema IP adresi; `all` proširuje taj zapis na svakog pružatelja, tako da ograničenje brzine primljeno preko člana uzrokuje da sljedeći odabir koristi drugi izlaz. Sve vrijednosti osim `all` zanemaruju se. Zahtijeva `PROXY_SKIP_RECENTLY_FAILED` (zadano uključeno). Spremište je indeksirano prema izlaznoj adresi, a ne prema paru (pružatelj, adresa), pa proširena pogreška 429 zaustavlja tog člana za svakog pružatelja do isteka razdoblja (5 min, uz udvostručenje na 15). Očitava se za svaki ishod odgovora, pa se promjena primjenjuje bez ponovnog pokretanja. | | `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(nije postavljeno)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Postavite na `off` kako biste zaustavili prilagođavanje tijela OpenCode zahtjeva bez ključa (zastavica strujanja i popis alata). Zaglavlja se i dalje primjenjuju. Očitava se za svaki zahtjev, pa promjena odmah stupa na snagu. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(nije postavljeno)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Nazivi alata odvojeni zarezima koji se deklariraju u OpenCode zahtjevu bez ključa koji ih ne sadrži, kada za taj model još ništa nije zabilježeno. Prazna vrijednost vraća se na jedan zamjenski alat za koji je modelu rečeno da ga ne poziva. Najviše 32 unosa, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; nevažeći se unosi zanemaruju. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | URL postavki usluge Ollama Cloud koji se koristi za izdvajanje podataka o kvoti. Nadjačajte za posrednike / testne podatke. | | `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Dokumentirana nadređena krajnja točka stanja računa usluge Ollama Cloud (`GET https://ollama.com/api/balance`, `Authorization: Bearer `). Očitava se jednom pri učitavanju modula. Najprije se koristi za kvotu usluge Ollama Cloud kada veza ima API ključ; alat za izdvajanje podataka iz kolačića stranice s postavkama ostaje pričuvna opcija. Nadjačajte za posrednike / testne podatke. | | `OLLAMA_USAGE_COOKIE` | _(nije postavljeno)_ | `open-sse/services/usage.ts` | Kolačić `__Secure-session` usluge Ollama Cloud koji se koristi za izdvajanje podataka o kvoti sa stranice postavki. Osjetljivo; kada je konfigurirano više računa, preporučuje se polje nadzorne ploče za pojedinu vezu. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(nije postavljeno)_ | `open-sse/services/usage.ts` | Alternativna varijabla okruženja za kolačić `__Secure-session` usluge Ollama Cloud. Osjetljivo; kada je konfigurirano više računa, preporučuje se polje nadzorne ploče za pojedinu vezu. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(unset)_ | `open-sse/services/usage.ts` | Alternativna varijabla okruženja za kolačić `__Secure-session` usluge Ollama Cloud, koja se upotrebljava prije kraćih aliasa. Osjetljivo; kada je konfigurirano više računa, prednost dajte polju za pojedinu vezu na nadzornoj ploči. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | Krajnja točka za ograničenja upotrebe usluge CodeWhisperer (AWS Kiro). Nadjačajte za releje / testne sklopove. | > [!IMPORTANT] > Pri implementaciji iza obrnutog proxyja (nginx, Caddy), postavite `NEXT_PUBLIC_BASE_URL` na svoj stabilni javni URL (npr. `https://omniroute.example.com`) kada OAuth povratni pozivi ili generirane javne poveznice moraju upotrebljavati taj naziv glavnog računala. Bez toga OAuth povratni pozivi mogu biti neuspješni jer se redirect_uri neće podudarati, a generirane javne poveznice mogu upućivati na interno izvorište spremnika. > > Zadržite `BASE_URL` kao interni URL povratne petlje/spremnika za poslove između poslužitelja. Nemojte upotrebljavati preglednikov `Origin` ili javni naziv glavnog računala za interne samostalne dohvatne zahtjeve koji sadrže vjerodajnice. > > Za autentificirane operacije pisanja s nadzorne ploče nije potreban statički javni osnovni URL: nadzorna ploča šalje nesigurne zahtjeve istog izvorišta sa CSRF tokenom vezanim uz sesiju. OmniRoute i dalje centralizira provjeru valjanosti javnog izvorišta za integracije preglednika koje ne potječu s nadzorne ploče: najprije se smatraju pouzdanima eksplicitne varijable okruženja javnog URL-a; neobrađena zaglavlja `Forwarded` / `X-Forwarded-*` zanemaruju se osim ako je omogućen `OMNIROUTE_TRUST_PROXY` i neposredni proxy posrednik označen je tokenom kao pouzdan. Nemojte upotrebljavati postavke CORS-a za ispravljanje zahtjeva nadzorne ploče istog izvorišta; CORS je namijenjen samo pregledničkim klijentima s različitih izvorišta. --- ## 8. Odlazni proxy (Outbound Proxy) Usmjerite pozive prema upstream LLM pružateljima kroz HTTP ili SOCKS5 proxy radi kontrole odlaznog prometa, geografskog usmjeravanja ili maskiranja IP adrese. `OMNIROUTE_UPSTREAM_HTTP2_ENABLED` zadano je postavljeno na `true`. Postavite ga na `false`, `0`, `no` ili `off` da biste prisilili HTTP/1.1 na Undici dispatcherima u `open-sse/utils/proxyDispatcher.ts` i `open-sse/utils/proxyFetch.ts`: izravni odlazni promet, HTTP(S)/SOCKS proxyji, prijenosnici (relays) i njihovi ponovni pokušaji sa svježim socketom. Time se čuvaju verifikacija TLS certifikata, proxy autentifikacija, ograničenja veza i postavke keep-alive. Ponovno pokrenite OmniRoute nakon promjene jer su dispatcheri predmemorirani, a relay agenti se stvaraju pri pokretanju. Ovaj prekidač ne kontrolira wreq TLS fingerprinting ni transporte specifične za pojedine pružatelje. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------------- | -------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Omogućuje SOCKS5 proxy agent za pozive prema upstreamu. Isključite s `false`. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Na strani klijenta | Svijest na strani klijenta o dostupnosti SOCKS5-a. | | `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Zadano uključena zastavica značajke (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). Proxy poolovi i rotacija po računu prestaju ponovno posluživati člana koji je upravo odbio (odbijena TCP sonda ili 429 kroz njega) na razdoblje koje se udvostručuje pri svakom ponavljanju, do gornje granice. `false` vraća običan odabir. | | `SELECTOR_CONTROL_ALLOWLIST` | _(nije postavljeno)_ | `src/lib/proxySubscription/selectorGuard.ts` | Popis dopuštenih ciljeva za kontrolu selektora lokalne jezgre izvan loopbacka (hostovi ili IP adrese odvojene zarezom/razmakom, `*` otvara LAN/privatne adrese, ali nikad metadata/link-local). Loopback preko http/https zadano je dopušten. Vrijednost iz baze podataka nadzorne ploče ima prednost nad ovom varijablom kada je postavljena i neprazna. | | `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | Osnovno razdoblje (ms) izdvajanja zbog 429, udvostručuje se pri svakom ponavljanju. Čita se jednom pri pokretanju. Ograničeno na `1000..3600000`; izvan raspona ili nečitljivo vraća se na zadano uz upozorenje. | | `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | Gornja granica (ms) izdvajanja zbog 429. Čita se jednom pri pokretanju. Ograničeno na `1000..3600000`; izvan raspona ili nečitljivo vraća se na zadano uz upozorenje. Kada je granica ispod osnovne vrijednosti, vraća se na zadano. Smanjenje granice također skraćuje zaboravljanje nizova: unosi se brišu `2 x max` nakon isteka. | | `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | Zastavica značajke koja se uključuje po izboru (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). Za pružatelje čija je kvota grupirana po izlaznoj adresi, rangira člana poola koji dijeli uočenu izlaznu adresu nedavno odbijenog člana odmah ispod zdravih članova. Samo redoslijed, nikad isključivanje. Zahtijeva `PROXY_SKIP_RECENTLY_FAILED`, koji proizvodi signal odbijanja koji čita. | | `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | Prozor odbijanja (ms) koji ograničava ponovljena `proxy.set_aside` webhook upozorenja po članu poola, tako da nalet odbijanja pošalje jedan događaj. Čita se pri svakom emitiranju. Ograničeno na `1000..3600000`; izvan raspona ili nečitljivo tiho se vraća na zadano. | | `HTTP_PROXY` | _(nije postavljeno)_ | Node.js standard | HTTP proxy za pozive prema upstreamu. | | `HTTPS_PROXY` | _(nije postavljeno)_ | Node.js standard | HTTPS proxy za pozive prema upstreamu. | | `ALL_PROXY` | _(nije postavljeno)_ | Node.js standard | Univerzalni proxy (podržava `socks5://`). | | `OMNIROUTE_PROXY_ECHO_URL` | _(nije postavljeno)_ | `src/lib/proxyEchoTarget.ts` | Prikvačuje cilj za određivanje echo-IP adrese koji koriste sonde izlaznog prometa proxyja na jedan URL. Ako nije postavljeno, sonda pokušava `api64.ipify.org` pa `api4.ipify.org` kako tuneli samo s IPv4 ne bi bili prijavljeni kao neaktivni (#9694). | | `NO_PROXY` | _(nije postavljeno)_ | Node.js standard | Nazivi hostova/IP adrese odvojeni zarezom koji zaobilaze proxy. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Maksimalni broj istovremenih socketa po predmemoriranom HTTP/SOCKS proxy dispatcheru. Dugotrajni SSE streamovi poput Codex `/v1/responses` trebaju više od jedne veze kada više zahtjeva dijeli isti proxy na razini računa. Vrijednosti iznad `256` ograničene su. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | Timeout SOCKS5 handshakea (povezivanja) u ms. Povećajte ga kada je jedan residential gateway host izložen visokoj istovremenosti (npr. 100 simultanih zahtjeva) — stvarni handshake može premašiti 10 s pri zasićenom poolu iako je proxy dostupan, što se inače pokazuje kao lažna pogreška `[Proxy Fast-Fail] Proxy unreachable`. Ograničeno na `120000`. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | Kada je `false` (zadano), zahtjev čiji dodijeljeni proxy ne uspije razriješiti **odbija se (fail-closed)** umjesto da se vrati na izravnu vezu — sprječava curenje stvarne IP adrese. Postavite `true` za vraćanje starog DIRECT fallbacka. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | Krivotvori TLS otisak pomoću wreq-js (imitira Chrome 124). Suprotstavlja se JA3/JA4 blokiranju. | | `TLS_FINGERPRINT_PROVIDERS` | _(nije postavljeno)_ | `open-sse/utils/proxyFetch.ts` | Popis dopuštenih pružatelja odvojen zarezima za novo TLS usmjeravanje kroz proxy (`open-sse/utils/proxyFetch.ts`). Izravni TLS zadržava staro ponašanje kada nije postavljeno; samo ti pružatelji usmjeravaju se kroz most s otiskom Chrome 124. Groq (`api.groq.com`) isključen je čak i kada popis dopuštenih nije postavljen, jer Chrome JA3 izaziva Cloudflare 1010, dok nativni undici doseže API. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Dopušta kontekstu preglednika Claude Turnstile Playwright da ignorira HTTPS pogreške certifikata. | ### Scenariji | Scenarij | Konfiguracija | | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | **SOCKS5 kroz SSH tunel** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` | | **Korporativni HTTP proxy** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` | | **Zaštita od otiska (anti-fingerprint)** | `ENABLE_TLS_FINGERPRINT=true` — zahtijeva `wreq-js` (uključen) | | **Kontrolirani izlazni promet / bez izravnog pristupa** | Ostavite `PROXY_FAIL_OPEN=false` (zadano). Zahtjevi tvrdo padaju kada proxy nije dostupan umjesto da cure preko izravne veze. | | **Stari način / razvoj — dopusti izravni fallback** | `PROXY_FAIL_OPEN=true`. Vraća ponašanje prije očvršćavanja: izravna veza koristi se kada razrješavanje proxyja ne uspije. | > **Napomena (zaobilaženje NVIDIA validacije — #3226):** NVIDIA-in endpoint za validaciju > API ključa zastaje kada se usmjerava kroz globalni proxy/TLS-zakrpljeni fetch > (undici dispatcher → 504). `src/lib/providers/validation.ts::directHttpsRequest()` > namjerno zaobilazi proxy zakrpu za taj jedan poziv validacije koristeći > `safeOutboundFetch({ bypassProxyPatch: true })`. Ovo je dokumentirana, ograničena > iznimka — **ne** utječe na izlazni promet chata/korištenja. Zaobilaženje je po > opsegu pričvršćeno testom `tests/unit/proxy-bypass-scope-guard-3226.test.ts`. --- ## 9. Integracija CLI alata Kontrolira kako OmniRoute otkriva i pokreće CLI pomoćne programe (Claude Code, Codex itd.). | Varijabla | Zadano | Izvorna datoteka | Opis | | --------------------------------- | -------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = pretraži sistemski PATH; `manual` = koristi samo eksplicitne putanje. | | `CLI_EXTRA_PATHS` | _(nije postavljeno)_ | `src/shared/services/cliRuntime.ts` | Dodatne PATH stavke za otkrivanje CLI binarnih datoteka (odvojene dvotočkom). | | `CLI_CONFIG_HOME` | _(nije postavljeno)_ | `src/shared/services/cliRuntime.ts` | Nadjačava kućni direktorij za čitanje CLI konfiguracija (`~/.claude`, `~/.codex`). Mora biti apsolutna i unutar kućnog direktorija procesa — **ili**, u kontejneru, bind-mountana putanja (tako funkcionira `/host-home`). Sve ostalo vraća na kućni direktorij. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | Dopušta OmniRouteu pisanje CLI konfiguracijskih datoteka (osvježavanje tokena, podaci sesije). Postavite na `false` da svako pisanje CLI konfiguracije ne uspije s eksplicitnom greškom "writes disabled". | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Claude CLI-ja. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Codex CLI-ja. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Droid CLI-ja. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke OpenClaw CLI-ja. | | `CLI_CURSOR_BIN` | `agent`, zatim `cursor` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Cursor agenta. Bez nje detekcija prvo pokušava `agent`, a zatim se vraća na `cursor`. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Cline CLI-ja. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke 5dive CLI-ja. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | Sistemski direktorij stanja 5divea (profili autentikacije u vlasništvu roota); odražava zadanu vrijednost STATE_DIR samog 5divea. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Continue CLI-ja. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Qoder CLI-ja. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Qwen Code CLI-ja. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Aider CLI-ja. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Goose CLI-ja. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Google Gemini CLI-ja — samo detekcija/provjere ispravnosti na strani poslužitelja; `omniroute run gemini` razrješava binarnu datoteku `gemini` iz sistemskog PATH-a. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Kilo Code CLI-ja. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke OpenCode CLI-ja. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Hermes. Dijele je oba unosa kataloga (`hermes` i `hermes-agent`). | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke ForgeCode CLI-ja. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke jcode CLI-ja. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke DeepSeek TUI-ja. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke CodeWhale CLI-ja. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Smelt CLI-ja. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Pi (pi-coding-agent). | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Crush CLI-ja. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke agenta Oh My Pi (`omp`). | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Letta CLI-ja. | | `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Prime Agent (Prime Intellect). | | `CLI_WINDSURF_BIN` | _(nema)_ | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Windsurf. Windsurf se isporučuje **bez zadane naredbe** — detekcija binarne datoteke ostaje onemogućena dok se ovo ne postavi. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Prilagođena putanja do binarne datoteke Devin CLI-ja (v3.8.0). Koristi je Windsurf/Devin izvršitelj. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | `ide_version` za Devin Desktop. Nadjačavanja moraju koristiti format `x.y.z`; nevaljane vrijednosti vraćaju se na provjerenu zadanu vrijednost. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | `extension_version` ugrađenog Codeium/language-servera, različit od Desktop `ide_version`. Nadjačavanja moraju koristiti `x.y.z`; nevaljane vrijednosti koriste ugrađenu zadanu vrijednost. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Nadjačavanje Devin CLI-ja samo za agentic bridge. Izvršitelj prihvaća isključivo lokalni ACP stdio upstream. | | `DEVIN_AGENTIC_HOME` | _(obavezno)_ | `open-sse/executors/devin-cli-agentic.ts` | Apsolutni izolirani home direktorij za agentic Devin podproces; prihvaćene bridge putanje su `/home/bridge` i `.sandbox` putanje lokalne za zadatak (na Windowsu, `C:\...\.sandbox\...`). | | `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Maksimalno trajanje jednog Devin ACP koraka prije nego što bridge prekine podređeni proces i vrati izričiti istek vremena. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Glavni alias modela Claude Code za izolirani bridge. Aktivni harness zamjenjuje primjer modelom koji vraća trenutni Devin račun. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izoliranog bridgea koji se koristi kada Claude Code zatraži svoju zadanu Sonnet vrijednost. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izoliranog bridgea koji se koristi kada Claude Code zatraži svoju zadanu Opus vrijednost. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izoliranog bridgea koji se koristi kada Claude Code zatraži svoju zadanu Haiku vrijednost. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Alias izoliranog bridgea koji se koristi za Claude Code podagente. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Neobavezni override za Codeium API za upravljanje licencama (seat) koji koristi kvota Devin CLI-ja (`GetUserStatus`). | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Override apsolutne putanje za binarni program Augment (Auggie) CLI-ja koji koristi lokalni `auggie` provider. Ako nije postavljen, koristi se `CLI_AUGGIE_BIN`, a zatim pretraga u PATH-u. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Alternativni (alias) override za putanju binarnog programa Augment (Auggie) CLI-ja (provjerava se nakon `AUGGIE_BIN`). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Binarni program koji se koristi za stdio klijent lokalnog `zcode` providera. Ako nije postavljen, koristi se `zcode` s PATH-a. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | JSON polje (≤16 stringova) dodatnih argumenata koji se prosljeđuju `zcode` binarnom programu pri pokretanju putem `cliTools`. | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | Radni direktorij za podproces ZCode app-servera. | | `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | Override za ID providera koji se šalje app-serveru. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | Korijen runtime okruženja ZCode app-servera (gdje se nalaze uključeni `node` i `zcode-server.cjs`). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | Node izvršna datoteka koja se koristi za pokretanje ZCode app-servera. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | Ulazna skripta app-servera koja se koristi za pokretanje ZCode servera. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | Vremensko ograničenje pokretanja (u ms) prije nego što se pokretanje ZCode app-servera smatra neuspjelim. | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | RPC vremensko ograničenje (u ms) po zahtjevu za poziv ZCode app-servera. | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Maksimalno trajanje (u ms) jednog ZCode koraka (turna) prije nego što ga nadzornik prekine zbog isteka vremena. | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | Interval prozivanja (u ms) za dovršetak ZCode koraka. | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | Početni direktorij Hermes Agenta u kojem OmniRoute čita i piše konfiguraciju Hermes CLI-ja. Odgovara varijabli okruženja koju na Windowsima postavlja Hermes PowerShell instalacijski program (`%LOCALAPPDATA%\hermes`). | ### Automatska sinkronizacija CLI profila Ove se zastavice značajki uključuju po želji (opt-in) i zadano su isključene. Mogu se prebacivati i s nadzorne ploče CLI Code. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------- | ------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Nakon sinkronizacije modela providera automatski ponovno zapisuje datoteke profila `~/.codex/*.config.toml` iz aktivnog kataloga. Zahtijeva `CLI_ALLOW_CONFIG_WRITES`; nikada ne mijenja aktivnu/zadanu Codex konfiguraciju, autentifikaciju, postavke Codex-lb-a niti izbor providera. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Nakon sinkronizacije modela providera automatski ponovno zapisuje datoteke Claude Code profila `~/.claude/profiles//settings.json` iz aktivnog kataloga. Zahtijeva `CLI_ALLOW_CONFIG_WRITES`; nikada ne mijenja aktivnu/zadanu Claude konfiguraciju, autentifikaciju niti izbor providera. | ### Docker primjer ```bash # Montirajte binarne programe s hosta u kontejner i recite OmniRouteu gdje se nalaze: 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` stupa na snagu samo kada je putanja stvarno bind-montirana s hosta — uparite je s montiranjima poput `~/.codex:/host-home/.codex:rw` (pogledajte profil `host` u `docker-compose.yml`). Putanja koja nije ni unutar kućnog direktorija korisnika kontejnera ni bind montiranje zanemaruje se, jer bi se sve zapisano tamo odbacilo kada se kontejner ponovno stvori. Slika se izvodi kao `USER node`, pa nemontirani `/root` **nije** valjano nadjačavanje. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------------- | ---------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(auto)_ | `src/shared/utils/containerEnv.ts` | Forsira detekciju kontejnera na uključeno (`1`/`true`) ili isključeno (`0`/`false`). Potrebno samo na runtime okruženjima koja automatska detekcija ne prepoznaje. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | Svejedno dopušta zapisivanje konfiguracije CLI alata u nemontiranu putanju kontejnera. CLI ekvivalent je `--allow-container-write`. | | `DOCKER_UPDATE_TRIGGER_FILE` | nije postavljeno | `src/lib/system/autoUpdate.ts` | Samo Docker slika: gumb **Update Now** na nadzornoj ploči zapisuje JSON zahtjev u ovu datoteku (mora biti unutar `DATA_DIR`) za nadzornika na strani hosta koji povlači sliku i ponovno stvara kontejner. Pogledajte [Vodič za Docker](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker). | ### Pomoćne postavke CLI binarne datoteke (`omniroute`) Ove varijable podešavaju ponašanje same CLI binarne datoteke `omniroute` (ne detekciju sidecara opisanu iznad). | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------- | --------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(sustav)_ | `bin/cli/i18n.mjs` | Forsira jezik izlaza CLI-ja. BCP-47 lokalitet (npr. `en`, `pt-BR`). Nadjačava varijable okruženja sistemskog lokaliteta (LC_ALL, LC_MESSAGES). | | `OMNIROUTE_SHOW_LOG` | _(nije postavljeno)_ | `bin/cli/runtime/processSupervisor.mjs` | Postavite na `1` za prosljeđivanje stdout/stderr poslužitelja na terminal u nadziranom načinu rada. Ekvivalent zastavici `--log` na `omniroute serve`. | | `OMNIROUTE_CLI_TOKEN` | _(nije postavljeno)_ | `bin/cli/api.mjs` | Token za strojnu autentifikaciju koji se ubrizgava kao zaglavlje `x-omniroute-cli-token`. Automatski se generira u zadatku 8.12. | | `GEMINI_CLI_HOME` | _(nije postavljeno)_ | `bin/cli/commands/setup-gemini.mjs` | Trajni korijen Gemini kućnog direktorija; jednokratno pokretanje koristi privremeni izolirani kućni direktorij. | | `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Razdoblje čekanja u milisekundama prije prisilnog prekidanja CLI podređenog procesa kojem je poslan signal. | | `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(nije postavljeno)_ | `bin/omniroute.mjs` | Postavite na 1 uz eksplicitno zadan DATA_DIR za preskakanje zadane datoteke okruženja podatkovnog direktorija korisnika. | | `OMNIROUTE_SYNC_TOKEN` | _(nije postavljeno)_ | `bin/cli/commands/sync.mjs` | Token sinkronizacije za `omniroute sync bundle` (`GET /api/sync/bundle` prihvaća samo token sinkronizacije, ne API ključ). Ekvivalent `--token`. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | HTTP timeout po pokušaju (ms) za zahtjeve CLI → poslužitelj. | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | Maksimalno vrijeme (ms) koliko CLI čeka health endpoint poslužitelja prije ispisa upozorenja o isteku vremena. Korisno za spora hladna pokretanja (npr. Windows). Također se može postaviti putem `--ready-timeout`. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | Postavite na `1` za ispis dijagnostike ponovnih pokušaja i odgode (backoff) na stderr tijekom CLI naredbi. | | `OMNIROUTE_PLUGIN_PATH` | _(nije postavljeno)_ | `bin/cli/plugins.mjs` | Prilagođeni direktorij za otkrivanje CLI dodataka (paketi `omniroute-cmd-*`). Zadano je `~/.omniroute/plugins/` kada nije postavljeno. Samo za CLI — nikada ne dopire do skenera dodataka na strani poslužitelja, na koji pokazuje `OMNIROUTE_PLUGINS_DIR` (odjeljak 2). | | `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(nije postavljeno)_ | `bin/omniroute.mjs` | Suzbija obavijest CLI-ja o ažuriranju pri izlasku iz procesa kada je postavljena na bilo koju nepraznu vrijednost. Obavijest ostaje neovisno onemogućena u CI okruženju, tihom načinu rada i ne-tekstualnim izlaznim načinima. | | `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(izvedeno)_ | `bin/cli/commands/doctor.mjs` | URL živosti (liveness) koji ispituje `omniroute doctor`. Programska opcija `livenessUrl` ima prednost; inače se ova vrijednost koristi doslovno. Ako nije postavljena, CLI izvodi endpoint `/api/health/degradation` lokalne nadzorne ploče. | | `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | Putanja kataloga davatelja koju koriste CLI naredbe za davatelje. Programska opcija `catalogPath` ima prednost. Apsolutne putanje koriste se kakve jesu; relativne se putanje razrješavaju od korijena projekta. Ako nije postavljena, CLI koristi direktorij konstanti davatelja, s naslijeđenom datotekom `providers.ts` kao rezervnom opcijom. | | `OMNIROUTE_PROVIDER_TEST_MODEL` | _(zadano za davatelja)_ | `bin/cli/provider-test.mjs` | Globalni rezervni model za CLI testove povezivanja s davateljem. Redoslijed prednosti: konfigurirani model veze, nadjačavanje modela specifično za davatelja, ova vrijednost, a zatim ugrađeni testni model davatelja. | --- ## 10. Interni agent i MCP integracije | Varijabla | Zadano | Izvorna datoteka | Opis | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | automatsko otkrivanje | `open-sse/mcp-server/server.ts` | Eksplicitni URL pomoću kojeg MCP/A2A alati pristupaju OmniRouteu. Nadjačava automatsko otkrivanje localhosta. | | `OMNIROUTE_API_KEY` | _(nije postavljeno)_ | MCP/A2A moduli | API ključ za interne pozive MCP alata i A2A vještina. | | `OMNIROUTE_API_KEY_ID` | _(nije postavljeno)_ | `open-sse/mcp-server/audit.ts` | ID ključa za atribuciju u MCP zapisniku revizije. | | `ROUTER_API_KEY` | _(nije postavljeno)_ | Zastarjelo | Zastarjeli alias za `OMNIROUTE_API_KEY`. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Broj dana povijesti A2A zadataka koji se čuva u lokalnoj bazi podataka prije nego što dnevno čišćenje izbriše redak. Ako nije postavljeno, nije numeričko ili je `<= 0`, vraća se na `30`. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | Prekidač za isključivanje značajke opservabilnosti A2A pogodaka memorije. Postavite na `0` kako biste potpuno preskočili dohvat memorije za zadatak; svaka druga vrijednost (uključujući nepostavljeno) ostavlja je omogućenom. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Omogućuje offline/lokalnu Issue Agent krajnju točku za snimljenu trijažu. Ostavite onemogućeno osim ako izričito ne izvodite lokalne tijekove rada snimljene trijaže. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(nije postavljeno)_ | `src/lib/issueAgent/execution.ts` | Vremensko ograničenje (ms) za jedno izvođenje Issue Agent snimljene trijaže. Ograničava se na interni maksimum; vraća se na ugrađenu zadanu vrijednost kada nije postavljeno ili je nevažeće. | | `OMNIROUTE_CONTEXT` | _(aktivni kontekst)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | CLI kontekst/profil udaljenog načina rada za `omniroute` naredbe; nadjačava aktivni kontekst u lokalnoj pohrani konteksta. Ekvivalentno `--context `. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | Onemogućuje opcionalni `keytar` pozadinski sustav OS keychaina za vjerodajnice CLI konteksta. Kada je omogućeno, vjerodajnice ostaju u `config.json` s načinom `0600`, a CLI jednokratno ispisuje upozorenje o pričuvnom načinu; namijenjeno svjesnom radu bez sučelja ili u kontejnerima. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | Nametanje kontrole pristupa temeljene na opsezima za pozive MCP alata. | | `OMNIROUTE_MCP_SCOPES` | _(svi)_ | `open-sse/mcp-server/server.ts` | Opsezi odvojeni zarezom: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Sažimanje opisa MCP alata prije serijalizacije manifesta. Vrijednosti za omogućavanje: `1`, `true`, `on`. | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Algoritam/profil kompresije. Vrijednosti za onemogućavanje: `0`, `false`, `off`. | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | Vremenski proračun za prekid (ms) za interna upravljačka čitanja MCP poslužitelja (zdravlje, otpornost, kombinacije, kvote, potrošnja). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Vremenski proračun za prekid (ms) za MCP skokove koji čekaju odgovor pružatelja (`route_request`, `web_search`, `web_fetch`). | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Maksimalan broj instanci indeksa lokalnog korpusa spremljenih u memoriju (LRU, jedna po indeksiranom korijenskom direktoriju). Ograničeno na najmanje `1`. | | `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Interval sinkronizacije kataloga modela u satima. | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Interval provjere ograničenja brzine i kvota pružatelja usluga. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Razmak (ms) između uzastopnih OAuth dohvata kvota u skupnoj sinkronizaciji; OAuth veze dohvaćaju se jedna po jedna kako bi se izbjeglo nagle skokove opterećenja upstreama. `0` isključuje ovo ponašanje (istovremeni dohvat). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Minimalni interval (ms) između uzastopnih upstream dohvata kvota na putanji preflight/monitor po zahtjevu; raspoređuje istovremene mrežne pozive kako mnogi računi na jednoj IP adresi ne bi naglo preopteretili upstream. Ugrađeno u Codex (`/wham/usage`), DeepSeek, Bailian (oba mjesta dohvata), OpenCode i Crof dohvatače kvota (#6009, #6911). Generička putanja slanja `usage.ts::getUsageForProvider` (github/glm/minimax/nanogpt/xai/itd.) još nije pokrivena — prati se zasebno. Pogodci predmemorije nisu zahvaćeni. `0` onemogućuje; ograničeno na `0..60000`. | | `OMNIROUTE_QUOTA_FETCH_JITTER_MS` | `120` | `open-sse/services/quotaFetchThrottle.ts` | Dodatni nasumični razmak po zahtjevu (ms), uzorkovan pri svakom rezerviranom upstream dohvatu kvote. Zadano je 120; ograničeno na `0..60000`; `0` uklanja samo jitter. Postavite `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS=0` za potpuno onemogućavanje prigušivanja. Jitter ne jamči sprječavanje upstream zabrana. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Odgoda (ms) prije osvježavanja ograničenja pružatelja nakon stvarnog događaja korištenja, dajući upstream API-ju kvota vremena da registrira potrošnju. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | automatsko otkrivanje | `open-sse/services/adobeFireflyBrowserLogin.ts` | Apsolutna putanja do izvršne datoteke preglednika Chrome ili Edge u sustavu, koja se koristi za interaktivnu prijavu u Adobe Firefly i obnavljanje izvan zaslona. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Održava IMS i stanje rizika preglednika svježima pomoću Chrome CDP sesija vezanih uz račun. Postavite na `0` za onemogućavanje obnavljanja preglednika. | | `ADOBE_FIREFLY_SESSION_DISK` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Trajno pohranjuje popravljene Adobe sesije pod `DATA_DIR` kroz ponovna pokretanja procesa. Postavite na `0` kako bi sesije ostale samo u memoriji. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Minimalni razmak u milisekundama između slanja Adobe Firefly generate zahtjeva; `0` onemogućuje razmake. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatno razdoblje mirovanja u milisekundama nakon svakog trećeg uspješnog Adobe slanja. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Osnovni backoff u milisekundama nakon prolaznih Adobe 408 odgovora; kombinira se s razmakom slanja kroz najviše pet pokušaja. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Onemogućuje sve pozadinske usluge (sinkronizacija, cijene, osvježavanje modela). Korisno za CI/test. | | `OMNIROUTE_HEADLESS` | _(nije postavljeno)_ | `src/lib/system/headless.ts` | Pokretanje samo s proxy mehanizmom: preskače opcionalne podsustave, `/dashboard` → 404. Isto kao `omniroute serve --headless`. Vidi [HEADLESS.md](../guides/HEADLESS.md). | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(nepostavljeno)_ | `src/lib/config/runtimeSettings.ts` | Prisilno uključuje pozadinske zadatke pri otkrivanju automatiziranih testova. Postavi `1` za nadjačavanje testne heuristike. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Učestalost provjere resetiranja proračuna (ms). Donja granica `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Učestalost proaktivnog oporavka veza iz hlađenja (ms): ponovno provjerava veze čije je prolazno `rate_limited_until` isteklo, izvan vruće putanje zahtjeva. Donja granica `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Onemogućuje planer proaktivnog oporavka veza iz hlađenja (lijeni oporavak u `getProviderCredentials` i dalje vrijedi). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Učestalost čišćenja predmemorije zaključivanja (ms). Donja granica `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _nepostavljeno_ (onemogućeno) | `open-sse/services/reasoningTokenBuffer.ts` | Dobrovoljna donja granica za izlazne proračune miselnih modela: pozivateljev `max_tokens` u `[256, floor)` podiže se na granicu (omeđeno gornjom granicom izlaza modela). Nepostavljeno = klijentski proračuni se nikad ne povećavaju (#9507). | | `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _nepostavljeno_ (onemogućeno) | `open-sse/services/learnedReasoningEffortCaps.ts` | Dobrovoljno, zarezom odvojeni ID-ovi pružatelja (ili `*`): kada `reasoning_effort` 400/422 ne navodi prihvaćeni skup, pokušaj ponovno jednom jednu razinu niže (nikad ispod `low`) i nauči tu razinu samo ako probni zahtjev dobije odgovor (#14895). | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Cron izraz (UTC) za posao izvoza zapisa poziva koji prazni sva omogućena odredišta izvoza zapisa. Preporučuje se `*/5 * * * *` pri izvozu tijela. | | `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | Vremensko ograničenje stvarnog vremena (wall-clock) podređenog procesa po odredištu u milisekundama. Istek bilježi neuspjeh i ubija proces bez pomaka nepotvrđene serije. Nevažeće, nepozitivne ili necjelobrojne vrijednosti koriste zadanu vrijednost. | | `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | Ograničenje V8 old-space prostora Node podređenog procesa izvoza u MB (ne ukupni RSS). Zadano ostavlja rezervu za 500 redaka omeđenih artefakata s tijelima; prevelike serije i dalje mogu iscrpiti heap podređenog procesa. Neuspjeh savjetuje smanjenje veličine serije ili povećanje ovog ograničenja. Nevažeće, nepozitivne ili necjelobrojne vrijednosti koriste zadanu vrijednost. Bun izvozi vraćaju se na izvođenje unutar procesa bez ovog ograničenja. | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Interval prozivanja (ms) za vruće ponovno učitavanje konfiguracije. Niže od `1000` se odbacuje. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(omogućeno)_ | `src/lib/db/apiKeys.ts` | Postavi `1` za zaobilaženje Redis-potpomognute predmemorije autentikacije API ključeva (prisiljava čitanja iz baze podataka). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Vjeruj korisnički upravljanim RTK pravilima filtriranja projekta bez strogih provjera potpisa. | | `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | Ograničenje broja znakova za Lite proaktivno skraćivanje rezultata alata kada `lite.maxToolLength` nije postavljeno. Raspon 256–1000000. Postavka nadzorne ploče nadjačava ovu varijablu okoline. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Maksimalan broj istovremenih sinkronih RTK/Caveman radnih procesa; višak poslova čeka po FIFO principu. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Vremensko ograničenje po poslu u milisekundama. Radni procesi kojima istekne vrijeme prekidaju se, a zahtjev prolazi nepromijenjen (fail-open). | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Vrijeme mirovanja u milisekundama prije prekida neiskorištenog kompresijskog radnog procesa. | | `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Gornja granica V8 old-generation heap memorije u MB za svaki compression worker, u svim načinima rada (donja granica `128`). Posao koji je premaši ne uspijeva otvoreno (fail-open, bez kompresije) umjesto da povećava heap memoriju gatewaya. | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 glavni prekidač circuit-breakera po engineu za složeni pipeline. **Uključuje se po izboru (zadano isključeno)** — kad je uključeno, engine koji uzastopno baca iznimke kroz zahtjeve preskače se (fail-open) tijekom razdoblja hlađenja; isključeno = bajt-po-bajt identično naslijeđeno ponašanje. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Broj uzastopnih neuspjeha kroz zahtjeve prije otvaranja circuit-breakera enginea. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Milisekunde tijekom kojih otvoreni engine ostaje preskočen prije poluotvorene probe. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR rampa povratne informacije o dohvaćanju: svaki prethodni dohvat pohranjenog bloka linearno povećava njegov efektivni `minChars` (često dohvaćeni sadržaj komprimira se manje; `>=3` dohvata = nikad se ne komprimira). `1` onemogućuje rampu (binarno preskakanje samo na pragu). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | CCR trajno spremište blokova (#9061). Podupire spremište u memoriji SQLiteom tako da blok preživi LRU izbacivanje, TTL, ponovno pokretanje ili dohvat koji stigne na drugu instancu. Postavite `false` da blokovi ostanu samo u memoriji. Blokovi veći od 512KB i cloud runtime-i bez obzira na to ostaju samo u memoriji. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 glavni prekidač zamrzavanja prefiksa promatranog kroz upotrebu. **Uključuje se po izboru (zadano isključeno)** — kad je uključeno, sistemski prompt promatran `>=` praga tretira se kao stabilan prefiks pogodan za predmemoriranje i štiti od kompresije čak i za pružatelje usluga koje statička heuristika predmemorije promaši (zamrzavanje samo _čuva_, nikad ne mijenja). | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Broj opažanja sistemskog prompta prije nego što se tretira kao zamrznuti stabilni prefiks. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | Bootstrap skripta postavlja `true` nakon početne postave. Kontrolira vidljivost čarobnjaka za postavljanje. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Sigurnosni izlaz: dopušta tijelu zahtjeva da nadjača polje Antigravity projekta. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Pravila Google One AI kredita: `off` nikad ne ubacuje kredite, `retry` ubacuje jednom nakon kvalificiranog 429 odgovora za kvotu, a `always` ubacuje već na prvom zahtjevu. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Dopušta Antigravity prevoditelju zahtjeva da preskoči strogu provjeru potpisa CLI zahtjeva kada upstream odbija stvarne potpise (debug/zastarjeli-CLI način). Vrijednost različita od nule omogućuje zaobilaženje. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Nadjačava putanju datoteke tokena Antigravity CLI-ja (agy) za uvoz lokalne prijave s automatskim otkrivanjem. | ### OAuth CLI most (interno) | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------- | --------------------- | ------------------------------- | ---------------------------------------------------------- | | `OMNIROUTE_SERVER` | automatsko otkrivanje | `src/lib/oauth/config/index.ts` | URL poslužitelja za CLI↔OmniRoute most za autentifikaciju. | | `OMNIROUTE_TOKEN` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Token za autentifikaciju CLI mosta. | | `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | ID korisnika za sesije CLI mosta. | | `SERVER_URL` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Naslijeđeni pseudonim za `OMNIROUTE_SERVER`. | | `CLI_TOKEN` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Naslijeđeni pseudonim za `OMNIROUTE_TOKEN`. | | `CLI_USER_ID` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Naslijeđeni pseudonim za `OMNIROUTE_USER_ID`. | --- ## 11. Vjerodajnice OAuth pružatelja Ugrađene vjerodajnice za **razvoj na localhostu**. Za udaljene implementacije registrirajte vlastite u konzoli za razvojne programere svakog pružatelja. | Varijabla | Pružatelj | Napomene | | ------------------------------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | Javni klijent — tajna nije potrebna. | | `CLAUDE_CODE_REDIRECT_URI` | Claude Code | Nadjačavanje URI-ja preusmjeravanja. Zadano: `https://platform.claude.com/oauth/code/callback` | | `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | Javni klijent. | | `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Zahtijeva odgovarajući `_SECRET`. | | `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — | | `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | Javni klijent. | | `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | Neobavezno nadjačavanje javnog ID-a klijenta za device-flow Muse CLI-ja. Ostavite nepostavljeno za korištenje ugrađenog javnog klijenta. | | `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Zahtijeva odgovarajući `_SECRET`. | | `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — | | `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | Javni klijent. | | `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | Neobavezno nadjačavanje OAuth ID-a klijenta za GitHub Enterprise Copilot. Ako nije postavljeno, koristi se javna zadana vrijednost od `GITHUB_OAUTH_CLIENT_ID`. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | Neobavezno nadjačavanje ID-a integracije GitHub Copilot klijenta koji se šalje u zaglavljima `Copilot-Integration-Id` i `Editor-Plugin-Version`. Zadano: `copilot-developer-cli`. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Zamjenski API ključ koji koristi `open-sse/executors/devin-cli.ts` kada nije dostupna vjerodajnica za pojedinu vezu. Neobavezno. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Prilagođena putanja do izvršne datoteke Devin CLI-ja (`devin`). Razrješava je `open-sse/executors/devin-cli.ts`. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | OAuth ID klijenta za GitLab Duo. Registrirajte aplikaciju na `https://gitlab.com/-/profile/applications` s URI-jem preusmjeravanja `/callback` i opsezima `api, read_user, openid, profile, email`. Ako nije postavljeno, koristi se `GITLAB_OAUTH_CLIENT_ID`. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | OAuth tajna klijenta za GitLab Duo. Neobavezno — PKCE tijek ne zahtijeva tajnu. Ako nije postavljeno, koristi se `GITLAB_OAUTH_CLIENT_SECRET`. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | Nadjačavanje osnovnog URL-a GitLaba (samostalno hostani GitLab). Zadano: `https://gitlab.com`. Ako nije postavljeno, koristi se `GITLAB_BASE_URL`. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | Zastarjela zamjena za `GITLAB_DUO_BASE_URL`. Koristi se kada `_DUO_` varijanta nije postavljena. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | Zastarjela zamjena za `GITLAB_DUO_OAUTH_CLIENT_ID` koju koristi `src/lib/oauth/constants/oauth.ts`. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Zastarjela zamjena za `GITLAB_DUO_OAUTH_CLIENT_SECRET` koju koristi `src/lib/oauth/constants/oauth.ts`. | | `QODER_OAUTH_CLIENT_SECRET` | Qoder | — | | `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Postavite za omogućavanje Qoder OAuth-a. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Izravna zamjena pomoću API ključa (zaobilazi OAuth). | | `QODER_CLI_WORKSPACE` | Qoder | ID radnog prostora za Qoder CLI. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | Pseudonim za `QODER_CLI_WORKSPACE`. | | `QODER_CLI_CONFIG_DIR` | Qoder | Nadjačava konfiguracijski direktorij Qoder CLI-ja (izolirana PAT sesija, sprječava prepisivanje prijave putem preglednika). | | `QODER_CLI_MAX_CONCURRENCY` | Qoder | Maksimalan broj istovremenih pokretanja qodercli-ja (print pokretanja ili ACP upiti); dodatni zahtjevi čekaju u FIFO redu. Nepostavljeno (zadano) = bez ograničenja. | | `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | Koliko dugo Qoder zahtjev čeka na slobodno mjesto qodercli-ja (samo uz postavljeno ograničenje) prije nego što ne uspije sa statusom 429 `qodercli_busy` + `Retry-After`. Zadano `120000`. | | `QODER_CLI_TRANSPORT` | Qoder | `print` (zadano) pokreće `qodercli --print` po zahtjevu; `acp` održava jedan trajni proces `qodercli --acp` po PAT-u. | | `QODER_CLI_ACP_IDLE_TIMEOUT_MS` | Qoder | ACP prijenos: prekida trajni proces qodercli-ja nakon ovako dugog vremena neaktivnosti. Zadano `600000`. | | `QODER_CLI_ACP_STARTUP_TIMEOUT_MS` | Qoder | ACP prijenos: rok u kojem qodercli mora odgovoriti na ACP `initialize`. Zadano `60000`. | | `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | ACP prijenos: reciklira trajni proces qodercli-ja nakon ovako mnogo sesija. Zadano `500`. | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | Frontend `tk` token koji se šalje kao `validated` na `/api/chat`. Obavezan kada Blackbox nameće podudaranje tokena; u suprotnom OmniRoute koristi slučajni UUID. Vidi issue #2252. | | `VISION_BRIDGE_BASE_URL` | Zaštitni mehanizam Vision Bridge | Osnovni URL kompatibilan s OpenAI-jem za pozive vision-bridgea koji nisu Anthropic. Zadano je naslijeđena OpenAI URL varijabla okoline ili api.openai.com. Uputite na OmniRouteov `/v1` self-loop ili bilo koji OpenAI-kompatibilni endpoint (Gemini OpenAI-compat, OpenRouter). Issue #2232. Kada je URL OmniRouteov vlastiti `/v1`, describe pod-zahtjev šalje `x-omniroute-admission-bypass: internal` i autentificira se razriješenom self-loop vjerodajnicom (`sk_omniroute` sentinel u lokalnom načinu rada, ili `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350), tako da implementacije s `REQUIRE_API_KEY=true` rade. | | `VISION_BRIDGE_API_KEY` | Zaštitni mehanizam Vision Bridge | API ključ za gornji URL. Nadjačava varijable okoline OpenAI / Google po pružatelju za pozive vision-bridgea koji nisu Anthropic. Anthropic modeli zadržavaju svoj namjenski put Anthropic ključa. Issue #2232. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Zaštitni mehanizam Vision Bridge | Koliko dugo se ishod usmjeravanja "nema upotrebljivog kandidata" sprema u predmemoriju, u ms (zadano `30000`). Nevažeće ili negativne vrijednosti vraćaju se na zadanu; `0` onemogućuje negativnu predmemoriju. Izvor: `src/lib/guardrails/visionBridgeRouter.ts`. | > [!WARNING] > > 1. Idite na [Google Cloud Console → Vjerodajnice](https://console.cloud.google.com/apis/credentials) > 2. Stvorite OAuth 2.0 ID klijenta (vrsta: "Web aplikacija") > 3. Dodajte URL svog poslužitelja kao ovlašteni URI preusmjeravanja > 4. Zamijenite vrijednosti vjerodajnica u `.env`. --- ## 12. Nadjačavanja User-Agenta davatelja usluga Nadjačajte zaglavlje `User-Agent` koje se šalje svakom uzvodnom davatelju usluga. Ovo se dinamički razrješava tijekom izvođenja od strane osnovne klase izvršitelja: ``` process.env[`${PROVIDER_ID}_USER_AGENT`] ``` > **Izvor:** `open-sse/executors/base.ts` → `buildHeaders()` | Varijabla | Zadana vrijednost | Kada ažurirati | | -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Kada Anthropic objavi novu verziju CLI-ja | | `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Postavite na `1`/`true` za doslovno prosljeđivanje naziva alata harnessa treće strane Anthropicu na oba puta prema Anthropicu (izvorni OAuth i CLIProxyAPI). Prema zadanim postavkama izvršitelj deterministički dodjeljuje pseudonime nazivima alata koji nisu Claude Code (kanonsko mapiranje Claude Codea gdje postoji, inače PascalCase) i vraća izvorne nazive na odgovoru putem `_toolNameMap`, tako da harnessi sa snake_case alatima ne budu odbijeni kao klijenti treće strane prepoznati po otisku. Samo za otklanjanje pogrešaka. | | `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | Kada OpenAI ažurira Codex CLI | | `CODEX_CLIENT_VERSION` | `0.155.0` | Nadjačavanje verzije Codex klijenta neovisno o cijelom UA nizu | | `GROK_CLI_CLIENT_VERSION` | `1.0.41` | Nadjačavanje `x-grok-client-version` za izvođenje zaključaka, sinkronizaciju modela i OAuth s kodom uređaja, plus zadanog Grok CLI User-Agenta za izvođenje zaključaka i sinkronizaciju modela. Prihvaća SemVer s neobaveznim metapodacima predizdanja/izrade, do 128 znakova nakon uklanjanja okolnih razmaka. Nepostavljene, prazne, nevažeće vrijednosti ili vrijednosti koje sadrže prijelom retka koriste isporučenu fiksiranu vrijednost. Postojeće potpuno nadjačavanje User-Agenta za izvođenje zaključaka zadržava prednost. | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Nadjačavanje oglašene verzije Claude Codea neovisno o `CLAUDE_USER_AGENT`. Anthropic ograničava neke modele na temelju ove vrijednosti (#12417). | | `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Nadjačavanje troznamenkastog sufiksa koji OmniRoute dodaje u `cc_version=` u Claude bloku naplate. Povećajte zajedno s `CLAUDE_CODE_CLIENT_VERSION` — fiksiranje samo verzije oglašava par `version.revision` koji nijedan stvarni binarni program ne emitira. | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Nadjačavanje oglašene verzije Copilot CLI-ja neovisno o `GITHUB_USER_AGENT` | | `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | Kada se GitHub Copilot Chat ažurira | | `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Kada se Antigravity IDE ažurira | | `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Kada se Kiro IDE ažurira | | `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Nadjačavanje Kiro društvenog `clientId` s kodom uređaja (javni id) | | `KIRO_VERIFY_FULL_CRC` | `false` | Po izboru: potpuna CRC provjera valjanosti poruka po okviru na Kiro toku događaja (otklanjanje pogrešaka oštećenih tokova) | | `KIRO_CREDIT_PRICE_USD` | `0.02` | USD po Kiro kreditu; pretvara `meteringEvent` kredite u točan trošak po zahtjevu | | `KIRO_REQUIRE_CREDITS` | `false` | Odbaci Kiro odgovor koji ne prijavljuje mjerenje kredita umjesto da se zabilježi nenaplaćen | | `QODER_USER_AGENT` | `Qoder-Cli` | Kada se Qoder CLI ažurira | | `CURSOR_USER_AGENT` | `Cursor/3.3` | Kada se Cursor ažurira | > [!TIP] > Možete dodati nadjačavanja User-Agenta za **bilo kojeg** davatelja usluga koristeći obrazac `{PROVIDER_ID}_USER_AGENT`. Izvršitelj dinamički konstruira naziv varijable okoline. --- ## 13. Kompatibilnost otiska CLI-ja Kada je omogućeno, OmniRoute mijenja redoslijed HTTP zaglavlja i polja JSON tijela kako bi odgovarao točnom potpisu službenih CLI alata. Time se smanjuje rizik od označavanja računa uz zadržavanje vaše proxy IP adrese. **Izvor:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts` ### Po pružatelju usluge | Varijabla | Aktivacija | Učinak | | ------------------------ | ---------- | -------------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Oponaša potpis zahtjeva Codex CLI-ja | | `CLI_COMPAT_CLAUDE` | `=1` | Oponaša potpis zahtjeva alata Claude Code | | `CLI_COMPAT_GITHUB` | `=1` | Oponaša potpis zahtjeva alata GitHub Copilot | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Oponaša potpis zahtjeva alata Antigravity | | `CLI_COMPAT_CURSOR` | `=1` | Oponaša potpis zahtjeva alata Cursor | | `CLI_COMPAT_KIMI_CODING` | `=1` | Oponaša potpis zahtjeva alata Kimi Coding | | `CLI_COMPAT_KILOCODE` | `=1` | Oponaša potpis zahtjeva alata Kilo Code | | `CLI_COMPAT_CLINE` | `=1` | Oponaša potpis zahtjeva alata Cline | ### Globalno | Varijabla | Aktivacija | Učinak | | ---------------- | ---------- | --------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Omogućuje kompatibilnost otiska za **sve** pružatelje odjednom. | ### Nadjačavanje identiteta Kimi Coding CLI-ja | Varijabla | Zadano | Izvorna datoteka | Opis | | ----------------------- | --------------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------- | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | Nadjačava verziju Kimi CLI-ja poslanu tijekom OAuth/API poziva. | | `KIMI_CODING_DEVICE_ID` | _(zabilježena zadana vrijednost)_ | `src/lib/oauth/providers/kimi-coding.ts` | Nadjačava zabilježeni ID Kimi uređaja koji se koristi u zaglavljima klijenta. | > [!NOTE] > Ova značajka radi zajedno s nadjačavanjima User-Agent vrijednosti (§12). Sustav otisaka upravlja redoslijedom zaglavlja i polja tijela, dok nadjačavanja User-Agent vrijednosti upravljaju konkretnim UA nizom. Obje se opcije mogu omogućiti neovisno. --- ## 14. Pružatelji API ključeva API ključevi za pružatelje koji upotrebljavaju izravnu autentifikaciju. **Preporučeno postavljanje:** Nadzorna ploča → Pružatelji → Dodaj API ključ. Postavljanje putem varijabli okruženja alternativna je opcija za Docker implementacije ili implementacije bez grafičkog sučelja. Prepoznati obrazac: `{PROVIDER_ID}_API_KEY` | Varijabla | Pružatelj usluge | | ------------------ | ----------------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + pričuvni Reader) | | `JINA_API_KEY` | Jina AI (alias za `JINA_AI_API_KEY`) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) ugrađivanja + pričuvni chat | | `GOOGLE_API_KEY` | Gemini (alias za `GEMINI_API_KEY`) | > [!NOTE] > Statički unosi `${PROVIDER}_API_KEY` za Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius i Qianfan uklonjeni su u verziji v3.8.0 jer ih okruženje za izvođenje više ne čita — ti se pružatelji oslanjaju isključivo na nadzornu ploču / `data/provider-credentials.json` / šifriranu bazu podataka. Put migracije opisan je u odjeljku _Revizija: uklonjene / mrtve varijable_ pri dnu ovog dokumenta. > [!TIP] > Ključevi postavljeni putem nadzorne ploče pohranjuju se šifrirani u SQLiteu i imaju prednost pred varijablama okruženja. > > **Jina:** `jina-ai/…` ugrađivanja, ponovno rangiranje, klasifikacija, segmentacija i `jina-search` **ne** naplaćuju ključ okruženja klastera kada postoji veza `jina-ai` (ili dijeljena `jina-reader`) na nadzornoj ploči — `getProviderCredentials` prvo popunjava postojeće vrijednosti. `JINA_AI_API_KEY` / `JINA_API_KEY` upotrebljavaju se samo kada ne postoji upotrebljiv ključ s nadzorne ploče. Zapisi poziva pripisuju pričuvnu vrijednost iz okruženja kao `connection_id=env:JINA_AI_API_KEY`. Kartica Reader (`jina-reader`, `r.jina.ai`) nikada ne poslužuje `/v1/embeddings` ni `/v1/rerank`. > > **Gemini:** `gemini/gemini-embedding-2` (alias `google/gemini-embedding-2`) najprije upotrebljava vezu `gemini` s nadzorne ploče. `GEMINI_API_KEY` / `GOOGLE_API_KEY` upotrebljavaju se samo kada ne postoji upotrebljiv ključ s nadzorne ploče. Zapisi poziva pripisuju pričuvnu vrijednost iz okruženja kao `connection_id=env:GEMINI_API_KEY`. Izvorni multimodalni promet upotrebljava `x-goog-api-key` prema `:embedContent` / `:batchEmbedContents` — N OpenAI `input` stavki postaje N vektora. --- ## 15. Postavke vremenskih ograničenja Sve vrijednosti su u **milisekundama**. Centralizirano razrješavanje u `src/shared/utils/runtimeTimeouts.ts`. ### Hijerarhija vremenskih ograničenja ``` REQUEST_TIMEOUT_MS (globalno nadjačavanje) ├─→ FETCH_TIMEOUT_MS (pozivi prema upstream pružateljima, zadano: 600000) │ ├─→ FETCH_HEADERS_TIMEOUT_MS (nasljeđuje od FETCH_TIMEOUT_MS) │ ├─→ FETCH_BODY_TIMEOUT_MS (nasljeđuje od FETCH_TIMEOUT_MS) │ ├─→ TLS_CLIENT_TIMEOUT_MS (nasljeđuje od FETCH_TIMEOUT_MS) │ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (nezavisno, zadano: 10000) │ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (nezavisno, zadano: 15000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (nezavisno, zadano: 0 = isključeno, preporučeno: 30000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (nezavisno, zadano: 2) │ ├── FETCH_CONNECT_TIMEOUT_MS (nezavisno, zadano: 30000) │ └── FETCH_KEEPALIVE_TIMEOUT_MS (nezavisno, zadano: 4000) ├─→ STREAM_IDLE_TIMEOUT_MS (nasljeđuje od REQUEST_TIMEOUT_MS, zadano: 600000) ├─→ STREAM_ACTIVE_TIMEOUT_MS (nezavisno, zadano: 1260000; 0 onemogućuje) ├─→ STREAM_READINESS_TIMEOUT_MS (nasljeđuje od REQUEST_TIMEOUT_MS, zadano: 80000) ├─→ STREAM_READINESS_MAX_TIMEOUT_MS (ograničava prilagodljiva produljenja spremnosti, zadano: 180000) └─→ API_BRIDGE_PROXY_TIMEOUT_MS (nasljeđuje od REQUEST_TIMEOUT_MS, zadano: 30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (izvedeno, zadano: 300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (zadano: 60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (zadano: 5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (zadano: 0 = onemogućeno) ``` | Varijabla | Zadano | Opis | | ----------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(nije postavljeno)_ | Globalni prečac — nadjačava zadane vrijednosti i za `FETCH_TIMEOUT_MS` i za `STREAM_IDLE_TIMEOUT_MS`. | | `FETCH_TIMEOUT_MS` | `600000` | Ukupno vremensko ograničenje HTTP zahtjeva za pozive upstream pružatelja usluga. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | Maksimalna tišina između sirovih upstream bajtova prije prekida. Modeli s proširenim razmišljanjem rijetko zastaju dulje od 90 s. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Maksimalno ukupno trajanje aktivnog SSE streama; nikada se ne resetira na upstream bajtove i neovisno je o `REQUEST_TIMEOUT_MS`. Izvedeno iz najveće vrijednosti `timeoutMs` po modelu u registru (1200000, Codex) uvećane za marginu od 60000, tako da model kojem je dopušteno iskoristiti puni budžet nikada ne bude prekinut usred odgovora. Postavite na `0` za onemogućavanje. | | `OMNIROUTE_SSE_COMMENTS` | _(onemogućeno)_ | Smije li OmniRoute emitirati SSE `:` retke komentara (npr. `: keepalive` heartbeat i `x-omniroute-*` završne retke s metapodacima). Zadano onemogućeno (#10524) jer strogi OpenAI-kompatibilni klijenti izvršavaju JSON.parse nad svakim SSE retkom i ruše se na `:` komentarima; `data:` heartbeatovi nisu pogođeni. Postavite `on`/`true`/`1`/`yes` za ponovno uključivanje. Koristi ga `open-sse/utils/sseHeartbeat.ts`. | | `SSE_COALESCE_MS` | `0` (isključeno) | Po izboru: spaja uzastopne Claude `content_block_delta` događaje (isti indeks bloka i tip delte) poslane Claude klijentima, s pražnjenjem najmanje svakih N ms. Bez gubitaka; `signature_delta` i granični događaji nikada se ne spajaju. Primjenjuje se na svaki tip delte osim ako nije postavljena neka od varijabli po tipu u nastavku. Koristi ga `open-sse/utils/sseDeltaCoalesce.ts`. | | `SSE_COALESCE_THINKING_MS` | `0` (isključeno) | Nadjačavanje `SSE_COALESCE_MS` po tipu za `thinking_delta`. | | `SSE_COALESCE_TEXT_MS` | `0` (isključeno) | Nadjačavanje `SSE_COALESCE_MS` po tipu za `text_delta`. | | `SSE_COALESCE_INPUT_JSON_MS` | `0` (isključeno) | Nadjačavanje `SSE_COALESCE_MS` po tipu za `input_json_delta`. | | `SSE_FRAME_COALESCE_MS` | `0` (isključeno) | Po izboru: grupira SSE okvire proslijeđene unutar N ms u jedan zapis prema klijentu. Prvi okvir i završni okviri (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) nikada se ne odgađaju; s uključenim grupiranjem ITL mjeri razmake između grupa. Koristi ga `open-sse/utils/sseOutputSink.ts`. | | `SSE_STALL_WATCHDOG` | `timer` | Implementacija watchdog-a za zastoj bajtova kod streamanih odgovora. `timer` ponovno aktivira jedan timer po upstream dijelu (okida točno na budžetu zastoja); `interval` zadržava jednu provjeru po streamu s periodom `clamp(budget/4, 1s, 5s)`, tako da se zastoj okida unutar budžet + period. Koristi ga `open-sse/utils/streamStallWatchdog.ts`. | | `STREAM_READINESS_TIMEOUT_MS` | `80000` | Vrijeme za primanje prvog SSE događaja koji nije ping. Nasljeđuje `REQUEST_TIMEOUT_MS` kada je postavljen. | | `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | Maksimalni adaptivni prozor spremnosti prvog događaja za velike streamane zahtjeve, zahtjeve s puno alata ili s visokom razinom zaključivanja. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | Sklopka za hitno isključivanje `/goal` heuristike. Postavite `false`/`0`/`off` za potpuno onemogućavanje detekcije — vremenska ograničenja spremnosti i oporavak streama tada nikada ne povećavaju tijelo ili zaglavlja zahtjeva, čime se ublažava pojačavanje vremenskih ograničenja pod kontrolom klijenta. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Maksimalni prozor spremnosti prvog događaja za detektirana `/goal` pokretanja agenata ili zahtjeve prisiljene zaglavljem `x-omniroute-agent-goal`. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Automatski omogućuje rani oporavak streama za detektirana `/goal` pokretanja agenata. Postavite `false`/`0`/`off` za onemogućavanje ovog uključivanja specifičnog za cilj. Ovo može samo DODATI oporavak povrh zadane postavke operatora — nikada ne nadjačava izričito odustajanje putem `STREAM_RECOVERY_ENABLED`/postavki baze podataka. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | Uklanja nestandardne `codex.*` SSE događaje (npr. `codex.rate_limits`) koji uzrokuju pogrešku 502 u `responses.stream()` OpenAI SDK-a. Zadano UKLJUČENO (#11014). Postavite `0`/`false`/`no`/`off` da ih proslijedite. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(nije postavljeno)_ | Transport Codex app-servera po izboru. WebSocket krajnja točka (`ws://`/`wss://`) lokalnog `codex app-server` sidecara. Kada je postavljeno zajedno s tokenom, Codex zahtjevi se usmjeravaju preko JSON-RPC-a na sidecar umjesto na HTTP Responses API. Može se postaviti i po vezi putem `providerSpecificData.codexAppServerUrl`. Koristi ga `open-sse/executors/codex/appServerConfig.ts`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(nije postavljeno)_ | Ugrađeni capability/bearer token koji se predaje app-serveru. Nadjačavanje po vezi: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(nije postavljeno)_ | Putanja do datoteke koja sadrži token sposobnosti app-servera (iz `codex app-server --ws-token-file`). Koristi se kada `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` nije postavljena. Nadjačavanje po pojedinoj vezi: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Radni direktorij u kojem se izvodi turn app-servera. Nadjačavanje po pojedinoj vezi: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(nije postavljeno)_ | Politika odobravanja koja se prosljeđuje turnu app-servera (npr. `never`, `on-request`). Nadjačavanje po pojedinoj vezi: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(nije postavljeno)_ | Sandbox politika koja se prosljeđuje turnu app-servera (npr. `read-only`, `workspace-write`, `danger-full-access`). Kada nije postavljena, executor zadano koristi `workspace-write` (pooštreno; prethodno `danger-full-access`). Nadjačavanje po pojedinoj vezi: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Automatski odobrava vlastite upite za odobrenje app-servera (izvršavanje naredbi/datoteka/dozvola na hostu). Zadano isključeno — upiti se automatski odbijaju; pozivi alata harnessa nisu pogođeni (putuju zasebnim prolazom `item/tool/call`). Prihvaća `true`/`1`/`yes`. Nadjačavanje po pojedinoj vezi: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Vrijeme primanja zaglavlja odgovora. | | `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Maksimalno čekanje na zaglavlja odgovora kod streaming zahtjeva (ms). `0` onemogućuje ovo ograničenje; eksplicitni `fetchStartTimeoutCapMs` providera ima prednost. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | Maksimalno čekanje na početak odgovora (ms) za svaki izravni pokušaj bez proxyja. Timeout jednom ponavlja pokušaj na svježem socketu; postavite `0` da onemogućite granicu i zadržite prethodno ponašanje. | | `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 min) | Donja granica čekanja na početak odgovora (ms) za izravne pokušaje bez proxyja čiji je ciljni host privatni/LAN/loopback (na primjer `localhost`, `host.docker.internal`, `192.168.x.x`), kako hladno pokretanje nativne Ollame ne bi bilo prekinuto gore navedenim zadanim 30s. Djeluje kao donja granica: efektivno čekanje je veća od ove vrijednosti i `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS`; `0` ili nevaljana vrijednost uklanja lokalnu donju granicu. Udaljeni hostovi nisu pogođeni. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 min) | Gornja granica (ms) za RETRY pokušaj na svježem socketu nakon gore navedenog timeouta početka odgovora pokušaja iz poola (#13703). Primjenjuje se samo kada je pozivatelj već priložio vlastiti signal krajnjeg roka (razriješena kaskada veze/modela/providera/`FETCH_TIMEOUT_MS`); taj signal je stvarna granica i u predviđenom putu okida prvi, pa je ovo velikodušna rezervna granica, a ne fiksni strop — bez nje bi retry ponovno koristio isti kratki prozor `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` kao pokušaj iz poola i zdravim reasoning modelima sa sporim TTFB-om vraćao 504. Nikada nije dopuštena ispod gore navedene fiksne donje granice; kada pozivatelj uopće ne dostavi signal krajnjeg roka, retry zadržava fiksnu donju granicu nepromijenjenom. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Vrijeme primanja cijelog tijela odgovora. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Timeout uspostavljanja TCP veze. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Timeout neaktivnosti keep-alive socketa. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Timeout TLS-fingerprint proxyja (wreq-js). | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Posebno ograničava vrijeme do prvog bajta na tijelu wreq-js TLS-fingerprint transporta; sam `TLS_CLIENT_TIMEOUT_MS` ne može uhvatiti zastalo tijelo jer se razrješava čim stignu zaglavlja (#12656). Timeout otkazuje wreq čitač i vraća se na izravni/proxy dispatcher; `0` onemogućuje watchdog. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Samo OpenCode executor, i samo dok je uključen feature flag `OPENCODE_RESPONSES_STALL_ROTATION` (zadano isključen): ograničava čekanje na prvi bajt tijela streamanog Responses odgovora nakon njegovih zaglavlja (#13484). Responses stream otvara se sa `response.created`, pa je tišina nakon ovog prozora zastoj: račun se stavlja na hlađenje i zahtjev se jednom rotira na sljedeći račun; drugi zastoj odmah ne uspijeva. `0` onemogućuje zaštitu čak i s uključenim flagom. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= isključeno) | Samo OpenCode executor: ograničava čekanje na upstream zaglavlja odgovora kod streamanog Responses poziva kada je drugi račun još uvijek dostupan — zahtjev u redu čekanja prestaje čekati i ide dalje umjesto da zadržava cijeli prozor zaglavlja. Pogođeni su samo streamani Responses pozivi (Responses stream otvara se sa `response.created`, pa tišina tamo znači red čekanja, a ne generiranje); chat completions i nestreamani pozivi ostaju netaknuti, a prozor samo skraćuje efektivnu gornju granicu fetch-starta, nikada je ne produljuje. Predložena vrijednost pri uključivanju: `30000`. `0` onemogućuje. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Samo OpenCode izvršitelj: koliko se puta po zahtjevu gornja granica čekanja zaglavlja smije pomaknuti na sljedeći račun. Posljednji preostali račun uvijek zadržava potpuni prozor zaglavlja. | | `OPENCODE_PARK_AND_RESUME` | `false` | Samo OpenCode izvršitelj: parkira zahtjev s heartbeatom nakon ponovljenih prolaznih pogrešaka 429 (ili svježeg markera opterećenja poola), zatim ponovno izvršava jedan ograničeni krak od najviše 3 uzastopna računa umjesto širenja na cijelu flotu (#13924). Zadano isključeno: svaka pogreška 429 rotira na sljedeći račun točno kao prije. | | `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | Samo OpenCode izvršitelj: kada je svaki račun spreman nakon hlađenja u kraku ponovnog izvršavanja postupka parkiraj-i-nastavi odložen memorijom odbijanja proxyja, svejedno ih posluži umjesto da se ne izvrši ništa (#14851, nastavak na #14750). Zadano isključeno: krak ponovnog izvršavanja je u tom slučaju prazan, kao prije #14750. | | `STREAM_READINESS_STALL_RETRY` | `false` | Samo streaming chat: kada prvo upstream tijelo zastane prije nego što proizvede iskoristiv događaj, izdaje jedan ograničeni drugi pokušaj kroz istu usmjerivačku putanju s istim proračunom spremnosti i bez kazne za račun. Zadano isključeno: zastalo prvo tijelo obara zahtjev bez ponovnog pokušaja. | | `OPENCODE_POOL_RESELECT` | `false` | Samo OpenCode izvršitelj: nakon pogreške 429 od pružatelja s egress-kategorizacijom na računu bez proxyja u kontekstu okolnog poola, traži od poola veza drugog člana za sljedeći pokušaj umjesto ponovnog pokušaja na istoj izlaznoj adresi. Poredaje, nikada ne isključuje: iscrpljeni pool zadržava trenutačno ponašanje. Zadano isključeno: svaka pogreška 429 rotira na sljedeći račun točno kao prije. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(nije postavljeno)_ | Samo OpenCode izvršitelj: nadjačava putanju markera opterećenja poola koji se čita prije parkiranja (`{since, reason, ttl_s}`, zadano `/tmp/opencode-pool-strain.json`, #13924). Svježi marker parkira bez ponovnog brojanja; odsutan ili zastario vraća se na brojač naleta. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | Vremensko ograničenje proxy skoka za zahtjeve mosta `/v1`. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Usmjerava Firecrawl izvršitelj dohvaćanja weba na instancu na vlastitom hostingu (API ključ neobavezan izvan oblaka). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Vremensko ograničenje po zahtjevu za Firecrawl izvršitelj dohvaćanja weba. | | `TAVILY_BASE_URL` | _(nije postavljeno)_ | Osnovni URL za Tavily dohvaćač kvote `/usage` (Ograničenja pružatelja); zanemaruje se kada pokazuje na `api.tavily.com`. Nepostavljeno se vraća na osnovni URL veze. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Ukupno vremensko ograničenje zahtjeva poslužitelja za most. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Vrijeme za slanje zaglavlja odgovora putem mosta. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Vremensko ograničenje mirovanja keep-alive veze mosta. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Vremensko ograničenje sirove utičnice (0 = onemogućeno). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Razdoblje odgode na SIGTERM/SIGINT prije prisilnog izlaska. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | Zamjenska vrijednost koju koristi `src/shared/utils/fetchTimeout.ts` kada `FETCH_TIMEOUT_MS` nije postavljen. | | `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | Vremensko ograničenje (ms) za presete `validationRead` i `modelsProbe` u `src/shared/network/safeOutboundFetch.ts`. Povećajte za spore krajnje točke (Cerebras, Cloudflare AI, Groq) kako biste spriječili osciliranje između stanja aktivno/pogreška na nadzornoj ploči. Vraća se na 8000 ms za nevažeće (<1000) ili nenumeričke vrijednosti. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | Vremensko ograničenje dohvaćanja specifično za relej u `open-sse/utils/proxyFetch.ts` (#9158). Zaglavljeni relej mora pasti prije vremenskog ograničenja klijenta/agenta (~30s) kako bi pozivatelji vidjeli neuspjeh specifičan za relej umjesto generičkog upstream vremenskog ograničenja. Ograničeno na `29000` kako bi se uvijek prvo aktiviralo. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | Zajednički backoff ponovnih pokušaja za direct/relay/proxy putanje s jednim ponovnim pokušajem u `open-sse/utils/proxyFetch.ts` (#9158). `0` = ponovi odmah. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Nativno vremensko ograničenje zahtjeva wreq-js (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Apsolutna JS odgoda tvrdog roka dodana povrh nativnog vremenskog ograničenja. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Nativno vremensko ograničenje zahtjeva wreq-js (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Apsolutno JS dodatno vrijeme čvrstog roka koje se dodaje na izvorni vremenski limit. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (isključeno) | Nadodaje "You have built-in web search. Answer questions directly using search results." na sistemsku poruku pozivatelja (`perplexity-web/protocol.ts`). Prema zadanim postavkama isključeno — Perplexity ionako pretražuje, a rečenica curi u odgovore kao meta-komentar kod klijenata za programiranje. Postavite `1`/`true`/`yes`/`on` za vraćanje. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Izvorni vremenski limit zahtjeva wreq-js (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Apsolutno JS dodatno vrijeme čvrstog roka koje se dodaje na izvorni vremenski limit. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Izvorni vremenski limit zahtjeva wreq-js (`notionTlsClient.ts`); `notion-web` ga po zahtjevu podiže na `180000` za duga generiranja. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Apsolutno JS dodatno vrijeme čvrstog roka koje se dodaje na izvorni vremenski limit. | | `OMNIROUTE_BROWSER_POOL` | `on` | Dijeljeni Playwright pool preglednika za chat s web-kolačićima podržan preglednikom (`browserPool.ts`); postavite `off` za onemogućavanje. | | `OBSCURA_BIN` | `auto-detect` | Putanja do binarne datoteke `obscura` koju pool preglednika i izvršitelj Cloudflare Playgrounda koriste kao primarni mehanizam (`open-sse/services/obscura.ts`); automatski se otkriva iz sistemskog PATH-a kada nije postavljena. | | `OBSCURA_CDP_ENDPOINT` | _(nije postavljeno)_ | Uputite na već pokrenutu Obscuru (`http://host:port`) umjesto pokretanja nove; modul ne posjeduje taj proces (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `random free port` | Eksplicitni port za pokrenuti `obscura serve`; slobodni port bira se automatski kada nije postavljen (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Uključuje zahtjev chata s web-kolačićima u putanju podržanu preglednikom (`browserBackedChat.ts`); `1` za omogućavanje. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Osnovni URL za izvršitelja Kimi Web (međunarodni kimi.ai Connect-RPC) (`kimi-web.ts`); nadjačajte samo za mirror/proxy krajnje točke. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Puna krajnja točka chata za izvršitelja Kimi Web (`kimi-web.ts`). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(automatski otkriveno)_ | Putanja do sistemskog Chrome/Edge izvršnog programa za interaktivnu prijavu u pregledniku za Adobe Firefly (`adobeFireflyBrowserLogin.ts`); nadjačava automatsko otkrivanje po OS-u. | | `OMNIROUTE_STANDALONE_DIR` | _standalone izlazni direktorij .build/_ | Nadjačavanje u vrijeme izgradnje za standalone izlazni direktorij koji koristi korak kolokacije nakon izgradnje (`scripts/build/colocate-standalone.mjs`); alat za izgradnju, ne runtime. | Pokušaji ciljeva kombinacije nasljeđuju razriješeni vremenski limit upstream zahtjeva (`FETCH_TIMEOUT_MS`, ili `REQUEST_TIMEOUT_MS` kada on daje zadanu vrijednost za fetch). Postavite `targetTimeoutMs` u kombinaciji, zadanim postavkama kombinacije ili nadjačavanju pružatelja samo kako biste ubrzali pričuvni prijelaz (fallback) kombinacije; vrijednosti iznad trenutnog upstream vremenskog limita ograničavaju se na upstream vremenski limit. `comboTimeoutMs` je zaseban vremenski budžet (wall-clock) cijele kombinacije kroz ciljeve prebacivanja (failover). Ostavite ga nepostavljenim ili `0` za zadržavanje neograničene iteracije (i dalje vrijedi ugrađena 10-minutna zaštita od zastoja u `comboPredicates.ts`). Pozitivna vrijednost zamjenjuje tu sigurnosnu mrežu za kombinaciju. Držite `comboTimeoutMs` dužim od `targetTimeoutMs` kako bi prebacivanje i dalje imalo vremena nakon sporog prvog cilja. ### Pragovi prekidača kruga Podešavanje prekidača kruga na razini pružatelja. Zadane vrijednosti odražavaju skalirane vrijednosti koje se koriste od v3.6 za 500+ veza. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------------------------------- | --------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Prag uzastopnih neuspjeha za OAuth pružatelje prije nego što se prekidač aktivira. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | Prozor resetiranja (ms) za prekidač OAuth pružatelja. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | Prag uzastopnih neuspjeha za pružatelje s API ključem. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | Prozor resetiranja (ms) za prekidač pružatelja s API ključem. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prag uzastopnih neuspjeha za lokalne pružatelje (Ollama, LM Studio, ...). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Prozor resetiranja (ms) za prekidač lokalnih pružatelja. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: broj neuspjeha unutar prozora prije nego što cijeli OAuth pružatelj uđe u stanje hlađenja. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: klizni prozor brojanja neuspjeha (ms) za OAuth pružatelje. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: hlađenje (ms) nakon što se dosegne prag OAuth pružatelja. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth pružatelj ulazi u stanje DEGRADED nakon ovog broja neuspjeha. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | Maksimalni multiplikator eskalacije resetTimeout za OAuth pružatelja. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth pružatelj eskalira nakon ovog broja otvorenih ciklusa. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: broj neuspjeha unutar prozora prije nego što cijeli pružatelj s API ključem uđe u stanje hlađenja. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: klizni prozor brojanja neuspjeha (ms) za pružatelje s API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: hlađenje (ms) nakon što se dosegne prag pružatelja s API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | Pružatelj s API ključem ulazi u stanje DEGRADED nakon ovog broja neuspjeha. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | Maksimalni multiplikator eskalacije resetTimeout za pružatelja s API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | Pružatelj s API ključem eskalira nakon ovog broja otvorenih ciklusa. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: broj neuspjeha prije nego što cijeli lokalni pružatelj uđe u stanje hlađenja. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: klizni prozor brojanja neuspjeha (ms) za lokalne pružatelje. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Prekidač na razini pružatelja: hlađenje (ms) nakon što se dosegne prag lokalnog pružatelja. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Hlađenje po ključu (ms) koje primjenjuje rotacija više API ključeva kada upstream odgovor 429 ne sadrži `Retry-After` (#14573). Nepozitivne ili nebrojčane vrijednosti vraćaju se na zadanu vrijednost. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Dubina backoffa pri kojoj se pružatelj pina kontekstne predmemorije smatra trajno neispravnim i pin se odbacuje radi prebacivanja na rezervu. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Prozor zaštite od flappinga (ms) koji podnosi kratke prolazne periode hlađenja prije odbacivanja pina kontekstne predmemorije. | ### Scenariji | Scenarij | Konfiguracija | | ------------------------------------------ | ------------------------------------------------------- | | **Dugotrajno generiranje koda** | `REQUEST_TIMEOUT_MS=900000` (15 min) | | **Ograničenje ukupnog trajanja streama** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 min) | | **Brzo neuspijevanje za produkcijski API** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Modeli s proširenim razmišljanjem** | `STREAM_IDLE_TIMEOUT_MS=300000` (5 min između chunkova) | --- ## 16. Zapisivanje dnevnika Sustav zapisivanja dnevnika zapisuje i u stdout i u rotirane datoteke dnevnika. Sva konfiguracija učitava se iz `src/lib/logEnv.ts`. | Varijabla | Zadano | Opis | | ----------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Najniža razina zapisivanja: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Format izlaza: `text` (čitljiv ljudima) ili `json` (strukturiran). | | `APP_LOG_TO_FILE` | `true` | Zapisivanje dnevnika u datoteku uz stdout. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Putanja datoteke dnevnika (relativna u odnosu na korijen projekta ili `DATA_DIR`). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Maksimalna veličina datoteke prije rotacije. Prihvaća: `50M`, `1G`, `512K` ili običan broj bajtova. | | `APP_LOG_RETENTION_DAYS` | `7` | Broj dana čuvanja rotiranih datoteka dnevnika aplikacije. | | `APP_LOG_MAX_FILES` | `20` | Maksimalan broj sigurnosnih kopija rotiranih datoteka dnevnika. | | `CALL_LOG_RETENTION_DAYS` | `7` | Broj dana čuvanja zapisa dnevnika zahtjeva/poziva u bazi podataka. | | `CALL_LOG_MAX_ENTRIES` | `10000` | Maksimalan broj zapisa dnevnika poziva u međuspremniku u memoriji. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Maksimalan broj redaka u SQLite tablici `call_logs` prije uklanjanja starih zapisa. | | `ENABLE_REQUEST_LOGS` | _(nije postavljeno)_ | Prisilno uključivanje ili isključivanje detaljnog zapisivanja zahtjeva, čime se nadjačava postavka nadzorne ploče. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 sat) | Maksimalna starost napuštenih aktivnih zapisa dnevnika zahtjeva prije čišćenja iz memorije. | | `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | Pohranjuje dijelove toka u artefakte cjevovoda kada je `call_log_pipeline_enabled=true`. Uključuje se postavljanjem na (`true`) — zadano je isključeno radi uštede prostora na disku. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | Maksimalna veličina artefakta dnevnika poziva cjevovoda u KB kada je `call_log_pipeline_enabled=true`. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Maksimalan broj redaka u SQLite tablici `proxy_logs` prije uklanjanja starih zapisa. | | `PROXY_LOG_INCLUDE_IPS` | `false` | Uključuje IP adrese klijenta/izlazne IP adrese i prefikse računa u konzolne dnevnike `[ProxyEgress]`. Zapisi dnevnika proxy poslužitelja na nadzornoj ploči/u bazi podataka zadržavaju sve pojedinosti. | | `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Postavite na `"true"` ili `"1"` za bilježenje `first_chunk_ms` (od početka slanja do prvog korisnog bajta tijela) u retke dnevnika proxy poslužitelja. Omotava svako uzvodno tijelo u lijeno protočni tok i ažurira redak nakon pristizanja bajta; zadano je isključeno kako bi odgovori prolazili bez izmjena. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 min) | Učestalost kojom `src/lib/logRotation.ts` ponovno provjerava veličinu aktivne datoteke dnevnika. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Maksimalna duljina niza zadržanog u artefaktima dnevnika razgovora (zadano 64 KB). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Broj stavki polja koje se zadržavaju s kraja pri skraćivanju sadržaja dnevnika razgovora. | | `CHAT_LOG_MAX_DEPTH` | `6` | Maksimalna dubina ugnježđivanja prije skraćivanja sadržaja dnevnika razgovora. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Maksimalan broj ključeva objekta koji se zadržavaju u sadržaju dnevnika razgovora (0 = neograničeno). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | Veličina cijelog tijela zahtjeva/odgovora (KB) nakon koje se ono zamjenjuje sažetkom bez dodatnih pojedinosti umjesto pune kopije. Povećajte ovu vrijednost ako dugi razgovori agenata na nadzornoj ploči prikazuju zamjenski tekst umjesto stvarnih poruka. | | `CHAT_DEBUG_FILE` | `false` | Kada je postavljeno na true, `serializeArtifactForStorage` preskače skraćivanje na temelju veličine. Samo za otklanjanje pogrešaka. | --- ## 17. Optimizacija memorije | Varijabla | Zadano | Opis | | ----------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MEMORY_MB` | _auto_ (bare metal); **`1024` u Docker slici** | **Preporučeno** ograničenje V8 heap memorije (MB) za Docker/standalone. Kada nije postavljeno, dinamički se kalibrira (~35 % sistemskog RAM-a, ograničeno na `[512, 4096]`); `512` je samo donja granica kada se ukupna memorija ne može očitati. Na `run-standalone.mjs` (Docker CMD) **eksplicitna** se vrijednost dodaje kao `--max-old-space-size` i **pobjeđuje** sukoblјenu NODE_OPTIONS heap zastavicu (V8 last-flag). `omniroute serve` i dalje preferira postojeći NODE_OPTIONS heap (#5238). Nemojte postavljati oba na različite brojeve — proces bilježi upozorenje navodeći obje vrijednosti i pobjednika. **Službena Docker slika uvijek postavlja `1024`, pa se kalibracija tamo nikada ne izvodi.** Agenti za kodiranje na `/v1/responses` trebaju `8192`–`12288` plus rezervu za cgroup — vidi [Docker vodič — RAM tijekom izvođenja](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). | | `OMNIROUTE_RSS_PRESSURE_MB` | _auto_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; isključeno kada `OMNIROUTE_MEMORY_MB` nije postavljen) | `open-sse/utils/resourcePressure.ts` | Apsolutni osigurač RSS-a procesa (MB) za nativnu/eksternu memoriju koju V8 `heapUsed` ne vidi; iznad njega novi zahtjevi dobivaju 503 `resource_pressure`. RSS se rijetko spušta nakon skoka, pa ga uparite s `OMNIROUTE_PRESSURE_SELF_RESTART`. | | `PROMPT_CACHE_MAX_SIZE` | `50` | Maksimalni broj predmemoriranih unosa sistemskih promptova. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Maksimalna ukupna veličina predmemorije promptova. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 min) | TTL unosa predmemorije promptova. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Maksimalni broj predmemoriranih odgovora s temperature=0. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Maksimalna ukupna veličina semantičke predmemorije. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 min) | TTL unosa semantičke predmemorije. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Korijeni lokalnog korpusa koji istovremeno drže aktivan indeks u memoriji (`src/lib/localCorpus/configured.ts`). LRU: na granici se indeks najmanje nedavno korištenog korijena izbacuje i ponovno gradi pri njegovom sljedećem upitu. Ograničeno na minimalno `1`; ne-numerička vrijednost vraća se na zadanu. | | `STREAM_HISTORY_MAX` | `50` | Maksimalni broj nedavnih događaja streama u međuspremniku prikaza uživo nadzorne ploče. | | `CONTEXT_LENGTH_DEFAULT` | _(nije postavljeno)_ | Globalno nadjačavanje duljine konteksta (tokeni) za svakog pružatelja koji nema varijablu `CONTEXT_LENGTH_`. Kada je postavljeno, **zamjenjuje** katalog, nadjačavanje nadzorne ploče i vrijednosti registra za te pružatelje; kada nije postavljeno, OmniRoute koristi svoj ugrađeni lanac čije je posljednje utočište `128000`. Vidi [Duljina konteksta po pružatelju](#per-provider-context-length-context_length_provider). | | `USAGE_TOKEN_BUFFER` | `100` | Dodatna rezerva tokena pri praćenju kvota potrošnje. | ### Duljina konteksta po pružatelju (`CONTEXT_LENGTH_`) `open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) također čita oblik **po pružatelju** čije se ime gradi iz ID-a pružatelja tijekom izvođenja, pa ga nije moguće navesti redak po redak u gornjoj tablici niti u `.env.example`. **Naziv.** `CONTEXT_LENGTH_`, gdje je `` ID pružatelja napisan velikim slovima, sa svakim znakom izvan `A-Z` / `0-9` zamijenjenim znakom `_`. ID pružatelja je kanonski nakon razrješavanja aliasa (dio `provider` u nizu `provider/model` nakon što je kratki alias razriješen). Prilagođeni čvorovi kompatibilni s OpenAI ili Anthropic koriste svoj generirani ID čvora, pa je UUID dio naziva varijable. Vrijednost je pozitivan cijeli broj tokena; sve drugo (prazno, `0`, negativno, ne-numeričko) se ignorira i razrješavanje prelazi na sljedeći korak. | ID pružatelja | Naziv varijable | | ----------------------------------------------------------- | -------------------------------------------------------------------------- | | 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 | **Prioritet.** Za par `provider/model` pobjeđuje prvi korak koji daje vrijednost: 1. `CONTEXT_LENGTH_` za tog pružatelja. 2. `CONTEXT_LENGTH_DEFAULT` (globalno nadjačavanje okoline). 3. Prozor po modelu: trajno nadjačavanje konteksta (postavljeno na nadzornoj ploči ili automatski prikvačeno od uskladitelja otkrivanja, vidi `CONTEXT_WINDOW_RECONCILE_INTERVAL`), inače sinkronizirana vrijednost kataloga / models.dev. 4. `defaultContextLength` iz registra pružatelja. 5. Heuristike naziva modela (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000). 6. Ugrađene zadane vrijednosti po pružatelju, zatim `128000`. Oba koraka okoline primjenjuju se na **cijelog pružatelja**: svaki model tog pružatelja dobiva isto ograničenje i ona imaju prednost nad nadjačavanjima po modelu na nadzornoj ploči. Kada samo jedan model pružatelja treba drugačiji prozor, umjesto toga koristite nadjačavanje po modelu na nadzornoj ploči. **Opseg.** Ovaj lanac pokreće provjeru prozora konteksta u vrijeme zahtjeva (odbijanje `context_length_exceeded` / "Input exceeds context window" u `open-sse/handlers/chatCore.ts`), proračune kompresije upita i combo ograničenja konteksta. `context_length` koji objavljuje `GET /v1/models` i dalje može dolaziti iz kataloga ili metapodataka registra i nije zajamčeno da odražava nadjačavanje okoline. **Primjer.** Pružatelj čiji model prihvaća prozor od 1 050 000 tokena dok katalog prijavljuje 128 000: ```dotenv CONTEXT_LENGTH_AGENTROUTER=1050000 ``` Nakon promjene ponovno pokrenite poslužitelj: vrijednost se čita iz okoline procesa poslužitelja. U **desktop aplikaciji** poslužitelj radi kao podređeni proces i ne vidi sistemsku varijablu postavljenu nakon pokretanja aplikacije; stavite redak u `.env` datoteku koju aplikacija učitava (redoslijed pretraživanja u [Vodič za Electron: pretraživanje datoteke okoline](../guides/ELECTRON_GUIDE.md#environment-file-lookup)), zatim potpuno zatvorite i ponovno pokrenite aplikaciju. ### Kompresija | Varijabla | Zadano | Opis | | ------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | nije postavljeno | Vjeruj projektnom `.rtk/filters.json` bez hasha `.rtk/trust.json`. Koristite samo u kontroliranom lokalnom razvoju. | ### Memorijski mehanizam (plan 21) ### Cijena memorije, vještina i osvježavanja tokena za petlju događaja (#10349) OmniRoute je **jedan Node proces**. Izdvajanje i dohvat memorije, ubacivanje vještina i osvježavanje tokena pružatelja izvode se na **istoj petlji događaja** kao `GET /healthz` i nadzorna ploča. Oni nisu radna dretva (worker thread). | Posao | Kod | Zadano | Kontrola operatora | | ---------------------------- | ---------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Izdvajanje / dohvat memorije | `src/lib/memory/` | Nadzorna ploča **memoryEnabled** (zadano uključeno) | Isključite u **Postavke → Memorija**. Ne postoji zaseban env prekidač za gašenje osim onemogućavanja značajke u postavkama. | | Ubacivanje vještina | `src/lib/skills/injection.ts` | Nadzorna ploča **skillsEnabled** (zadano uključeno) | Isključite u **Postavke → Memorija/Vještine** (`skillsEnabled`). Donji parametri sandboxa samo ograničavaju izvršavanje nakon što je ubacivanje već uključeno. | | Osvježavanje tokena | `src/sse/services/tokenRefresh.ts` | Uključeno za povezane OAuth/web pružatelje | Odspojite pružatelja ili neka tokeni ostanu valjani; danas ne postoji env `TOKEN_REFRESH=0`. | Ako je `/healthz` spor na mirnom računalu, prvo onemogućite memoriju + vještine, a zatim provjerite opterećenje kataloga/kompresije (#10303, #9685). Ove značajke popuštaju na točkama `await`, ali se i dalje natječu za jednu dretvu. Parametri sloja umetanja (embedding), vektorskog spremišta i ponovnog rangiranja za trajni memorijski podsustav (`src/lib/memory/`). | Varijabla | Zadano | Opis | | ------------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 min) | TTL za predmemoriju ugrađivanja u radnoj memoriji (prema potpisu izvora/modela/dimenzije). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Maksimalni broj LRU zapisa koji se čuvaju u predmemoriji ugrađivanja. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | HF ID repozitorija za opcijski lokalni MiniLM pipeline `@huggingface/transformers` (~23 MB int8, ~400 MB RAM-a). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | HF ID repozitorija za statički potion/Model2Vec lookup-table embedder. Preuzima se lijeno u direktorij predmemorije. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Direktorij koji se koristi za predmemoriju datoteka statičkog potion modela. Zadano ispod `DATA_DIR` kada nije postavljeno. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | Zamjena osnovnog URL-a Hugging Face Huba koji koristi `staticPotion.ts` (npr. zrcalna krajnja točka za air-gapped postavke). | | `MEMORY_VEC_TOP_K` | `20` | Zadani top-K koji koristi `sqlite-vec` brute-force vektorsko pretraživanje unutar `src/lib/memory/vectorStore.ts`. | | `MEMORY_RRF_K` | `60` | Konstanta `k` Reciprocal Rank Fusiona za hibridno FTS5 + vektorsko dohvaćanje (sqlite-vec recept). | | `VECTOR_STORE_DISABLE_VEC` | `false` | Testni/dijagnostički spoj u `getVectorStore()` (`src/lib/memory/vectorStore.ts`): kada je `true`, prisiljava vektorsko spremište na `null` (simulira cloud/WASM okruženje bez `sqlite-vec`), degradirajući dohvaćanje memorije na FTS5 pretraživanje ključnih riječi. Ostavite nepostavljeno u produkciji. | | `NOTION_API_KEY` | _(nije postavljeno)_ | API ključ za Notion backend (koristi ga poznati backend preset iz `genericBackend.ts`). | | `NOTION_API_URL` | `https://api.notion.com/v1` | Osnovni URL za Notion API (može se zamijeniti za self-hosted alternative Notiona). | | `OBSIDIAN_API_KEY` | _(nije postavljeno)_ | API ključ za Obsidian Vault backend (koristi ga poznati backend preset iz `genericBackend.ts`). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | Osnovni URL za Obsidian Vault API (može se zamijeniti za udaljeni vault). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | Glavni prekidač za TV6 tipizirano propadanje memorije. **Opcijsko (zadano isključeno)** — čišćenje **briše** propale memorije. Kada je isključeno, `access_count`/`last_accessed_at` su čista telemetrija i ništa se nikada ne briše. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (dani) nakon kojeg neiskorištena `episodic` memorija propada. `0` čini epizodičku također imunom. Trajni tipovi (`factual`/`procedural`/`semantic`) uvijek su imuni. Sat propadanja ponovno se bazira na `last_accessed_at`. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | Memorija ubrizgana `>=` ovaj broj puta postaje imuna na propadanje bez obzira na tip. `0` onemogućuje imunitet temeljen na pristupu. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (onemogućeno) | Interval (sekunde) za opcijsko periodično čišćenje propadanja u `src/lib/memory/typedDecay.ts`. `0`/nepostavljeno = bez periodičnog čišćenja. Dvostruko opcijsko: također zahtijeva `MEMORY_TYPED_DECAY_ENABLED=true`. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(nije postavljeno)_ | ID-jevi pružatelja odvojeni zarezima (neosjetljivo na veličinu slova) koji prihvaćaju `system` poruku **samo na indeksu 0** (`src/lib/memory/injection.ts`). Za njih umetanje memorije usred niza sigurno za predmemoriju nije sigurno u višekružnim razgovorima, pa se memorija umjesto toga spaja/dodaje kao vodeća sistemska poruka. Zadano samo `xiaomi-mimo`/`mimo`; proširite za self-hosted OpenAI-kompatibilne krajnje točke (npr. Qwen3.5+/3.6) čiji chat predložak nameće isto ograničenje jedne vodeće sistemske poruke. | ### Primjer Dockera s malo RAM-a `128` je samo za nadzornu ploču. Agenti za kodiranje na ovom heapu izazivaju `FATAL ERROR` tijekom dugih `/v1/responses`. Nemojte koristiti ovaj primjer kao Claude/Codex/Grok gateway. ```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. Sinkronizacija cijena Automatska sinkronizacija podataka o cijenama modela iz vanjskih izvora. | Varijabla | Zadano | Izvorna datoteka | Opis | | ----------------------- | -------------- | ------------------------ | ------------------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Periodična sinkronizacija cijena uz uključivanje. | | `PRICING_SYNC_INTERVAL` | `86400` (24 h) | `src/lib/pricingSync.ts` | Interval sinkronizacije u sekundama. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Izvori podataka odvojeni zarezima. | --- ## Sinkronizacija Arena ELO-a | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------- | -------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Periodična sinkronizacija ELO-a s ljestvice Arena AI, koju je moguće konfigurirati putem zastavica značajki na nadzornoj ploči ili isključiti vrijednošću `false`. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | Oblik prefiksa koji se upotrebljava za ID-ove modela u `GET /v1/models`. `dual` oglašava i kratki prefiks pseudonima i kanonski prefiks pružatelja za svaki model (kompatibilnost sa starijim verzijama — približno udvostručuje katalog); `alias` emitira jedan ID po modelu; `canonical` emitira samo puni prefiks ID-a pružatelja (pružatelji čiji je pseudonim već kanonski ID zadržavaju svoj jedini unos). Klijenti to mogu nadjačati za pojedinačni zahtjev s `?prefix=alias`. Pogledajte [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24 h) | `src/lib/arenaEloSync.ts` | Interval sinkronizacije u sekundama. | --- ## Pružatelj za PromptQL Playground (neslužbeno/eksperimentalno) Obrnuto projektiran GraphQL most za sesije za prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`). Sve je neobavezno — zadane vrijednosti upućuju na javne krajnje točke playgrounda; nadjačajte ih samo za samostalno hostiranu ili alternativnu implementaciju PromptQL-a. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | Krajnja točka GraphQL-a koja se upotrebljava za operacije razgovora i sesije. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | Krajnja točka GraphQL-a koja se upotrebljava za dohvaćanje stanja i potrošnje kredita. | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Krajnja točka koja se upotrebljava za pokušaj osvježavanja tokena. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Maksimalno vrijeme (ms) za ispitivanje `thread_events` prije isteka vremena. | --- ## HyperAgent web-pružatelj (neslužbeno/eksperimentalno) Obrnuto projektiran sesijski most za hyperagent.com (`src/shared/constants/providers/web-cookie.ts`). Neobavezno — zadana vrijednost upućuje na javnu krajnju točku za naplatu/upotrebu; promijenite je samo za samostalno hostiranu/alternativnu implementaciju HyperAgenta. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------- | --------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------- | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Krajnja točka koja se koristi za dohvaćanje blokova kredita za naplatu/upotrebu. | --- ## Kvote upotrebe za Kilo Code Dohvaćanje osobnog salda u USD-u i upotrebe usluge Kilo Pass za pružatelja Kilo Code. Neobavezno — zadana vrijednost upućuje na javni Kilo API; promijenite je samo za posrednički/testni sklop. Autentifikacija koristi postojeći pristupni token OAuth veze. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | -------------- | --------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------- | | `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Osnovni URL koji se koristi za dohvaćanje osobnog salda za Kilo Code i upotrebe usluge Kilo Pass. | --- ## Adobe Firefly web-pružatelj (neslužbeno/eksperimentalno) Osvježavanje sesije putem preglednika za web-pružatelja Adobe Firefly (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`). Neobavezno — sve zadane vrijednosti prilagođene su uobičajenoj instalaciji na stolnom računalu. > **Uklonjeno u #9255.** Staro izvršno okruženje preglednika Chrome povezano putem CDP-a (adobeFireflyChromeRuntime.ts) > zamijenjeno je uslugom prijave putem preglednika Playwright, a njegove postavke više ne postoje. Varijable > ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART, kao i > ADOBE_FIREFLY_LOGIN_WAIT_MS i ADOBE_FIREFLY_FORTER_WAIT_MS, ne čitaju se nigdje u > bazi koda — njihovo postavljanje nema učinka. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------ | -------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Postavite na `1` za pravi Chrome bez grafičkog sučelja (poznato je da ne radi za generiranje; samo za otklanjanje pogrešaka). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Uključivanje/isključivanje proaktivnog zagrijavanja preglednika. `0` onemogućuje proaktivno zagrijavanje (oporavak od pogreške 408 usred serije i dalje se primjenjuje). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Postavite na `0` kako biste onemogućili spremanje sesije Adobe Firefly na disk. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(nije postavljeno)_ | `open-sse/services/adobeFireflySession.ts` | Minimalni razmak (ms) između uzastopnih slanja zahtjeva, kojim se nadjačava ugrađena zadana vrijednost. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(nije postavljeno)_ | `open-sse/services/adobeFireflySession.ts` | Dodatni razmak (ms) nakon uspješne serije, kojim se nadjačava ugrađena zadana vrijednost. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(nije postavljeno)_ | `open-sse/services/adobeFireflyClient.ts` | Osnovna odgoda (ms) prije slanja zahtjeva za generiranje, kojom se nadjačava ugrađena zadana vrijednost. | --- ## 19. Sinkronizacija modela (razvoj) | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------------------- | -------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(nije postavljeno)_ | `src/lib/modelsDevSync.ts` | Izričita nadjačavajuća postavka za sinkronizaciju cijena s models.dev. Ako nije postavljeno = poštuj Postavke > AI (`modelsDevSyncEnabled`). `0`/`false`/`off`/`no` **ima prednost nad bazom podataka** i preskače periodičnu sinkronizaciju i SQL/JSON pretraživanja funkcije `getModelsDevPricing()` (oporavak kada je nadzorna ploča blokirana na istoj petlji događaja). `1`/`true`/`on`/`yes` prisilno uključuje sinkronizaciju. Spremanje/brisanje cijena i dalje poziva `backupDbFile("pre-write")`, što ne čini ništa tijekom 60-minutnog ograničenja učestalosti ili uz `DISABLE_SQLITE_AUTO_BACKUP`. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 h) | `src/lib/modelsDevSync.ts` | Interval sinkronizacije kataloga modela tijekom razvoja, u sekundama. | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 h) | `src/lib/contextWindowResolver.ts` | Interval (u sekundama) za samoispravljajući usklađivač kontekstnog prozora (5004): prozore koje je pružatelj deklarirao putem otkrivanja `/models` prikvačuje kao nadjačavanja `auto:discovery` kada se razlikuju od kataloga. Postavite na `0` za onemogućavanje. Ponovno upotrebljava već sinkronizirane podatke (bez novog dohvaćanja); nikada ne prepisuje `manual` nadjačavanja. | --- ## 20. Postavke specifične za pružatelja usluga | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterCatalog.ts` | TTL predmemorije kataloga modela OpenRouter. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Uključuje polja `name` prilagođena prikazu u odgovorima `/v1/models`. Onemogućite za klijente koji očekuju samo ID-ove. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | Gornja granica čekanja na hladnoj stazi za spojenu ponovnu izgradnju kataloga `GET /v1/models` (#12627). Po isteku vremena poslužuje se posljednji valjani odgovor 200, ako postoji. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 dana) | `src/lib/db/models/activeSyncedCatalog.ts` | Starost nakon koje sinkronizirani popis modela veze prestaje biti mjerodavan za usmjeravanje i otvoreno prelazi na registar (#12849). Redci bez vremenske oznake računaju se kao zastarjeli. | | `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | Koliko dugo se spor odgovor `GET /api/usage/analytics` ponovno koristi za isti niz upita (#15629). `0` onemogućuje predmemoriju. | | `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | Predmemoriraju se samo analitički odgovori čija je izgradnja trajala barem toliko dugo, pa male instance uvijek vide svježe podatke. | | `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | nije postavljeno (isključeno) | `src/app/api/cache/route.ts` via `src/lib/usage/analyticsResponseCache.ts` | Aktivacija po želji (#16361). Kada je postavljeno na nenegativni cijeli broj N, dio povijesti korištenja odgovora `GET /api/cache` (ukupni zbrojevi predmemorije upita + trend) poslužuje se iz zajedničke predmemorije analitičkih odgovora ako je njegova izgradnja trajala barem N ms, po ograničenom prozoru `trendHours`, tijekom `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` (povijest može kasniti do tog TTL-a; `DELETE /api/cache` poništava je). Nepostavljeno ili nevaljano = povijest se čita uživo pri svakom zahtjevu. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | Maksimalno čekanje na poslove generiranja slika NanoBanana. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | Učestalost provjeravanja statusa NanoBanana poslova. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Osnovno kašnjenje za eksponencijalno postupno ponavljanje slanja Adobe Firefly upscale zahtjeva. | | `AWS_REGION` | _(nije postavljeno)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Regija koja se koristi za izgradnju AWS Bedrock krajnjih točaka (Kiro, audio). | | `AWS_DEFAULT_REGION` | _(nije postavljeno)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Rezervna vrijednost kada `AWS_REGION` nije postavljena. | | `CLOUDFLARE_ACCOUNT_ID` | _(nije postavljeno)_ | `open-sse/executors/cloudflare-ai.ts` | ID računa za Cloudflare Workers AI. | | `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(nije postavljeno)_ | `open-sse/executors/cloudflare-playground.ts` | Puna putanja do binarne datoteke desktop Chromea za izvršitelja Cloudflare AI Playground, koristi se kada provjera otiska prsta u načinu rada bez sučelja blokira Playwrightov ugrađeni Chromium. | | `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _(nije postavljeno = bez ograničenja duljine)_ | `open-sse/executors/codebuddy/shared.ts` | Neobavezno ograničenje duljine za sistemske upite pozivatelja poslane CodeBuddyju (CN i International). Zadano se samo upit koji nosi oznaku identiteta coding-agenta zamjenjuje neutralnim (Tencentov filtar sadržaja odbija takve); dugi upiti se zadržavaju. Cijeli broj > 0 također zamjenjuje svaki sistemski upit dulji od tog broja znakova; nepostavljeno, `0` ili necjelobrojna vrijednost onemogućuje ograničenje. Svaka zamjena bilježi koje je pravilo aktivirano (oznaka identiteta ili duljina). | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Zaobilazi osnovni URL Cloudflare REST API-ja koji koristi implementer proxy-pool Workers releja (#4640 / 9router#1360). | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Zadani naziv projekta workera predložen u modalu "Deploy Relay" unutar grupe proxyja. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Postavite na `false` da biste sakrili opciju Cloudflare Workers relayja s kartice Proxy Pool. | | `CLOUDFLARED_BIN` | automatska detekcija | `src/lib/cloudflaredTunnel.ts` | Prilagođena putanja do binarne datoteke `cloudflared`. | | `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Transportni protokol tunela: `http2` (zadano), `quic` ili `auto`. | | `CLOUDFLARED_CONFIG` | _(nije postavljeno)_ | `src/lib/cloudflaredTunnel.ts` | Putanja do lokalno upravljane datoteke cloudflared `config.yml` (s `tunnel:`, `credentials-file:`, `ingress:`). Kada je postavljeno, OmniRoute pokreće `tunnel --config run` (imenovani tunel) umjesto privremenog brzog tunela. | | `CLOUDFLARED_HOSTNAME` | _(iz ingress konfiguracije)_ | `src/lib/cloudflaredTunnel.ts` | Nadjačavanje javnog imena hosta imenovanog tunela (npr. `ai.example.com`), prijavljeno kao `publicUrl`/`apiUrl`. Kada nije postavljeno, čita se iz prvog imena hosta `ingress` u konfiguraciji. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Nadjačavanje osnove REST API-ja Deno Deploya koju koristi alat za implementaciju relayja u grupi proxyja (#4643 / 9router#1437). | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Zadani naziv aplikacije Deno Deploy predložen u modalu "Deploy Relay" unutar grupe proxyja. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Postavite na `false` da biste sakrili opciju Deno Deploy relayja s kartice Proxy Pool. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 min) | `open-sse/services/searchCache.ts` | TTL za predmemoriranje odgovora API-ja pretraživanja (Perplexity, Brave itd.). | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Prikazuje eksperimentalno korisničko sučelje CC-kompatibilnog pružatelja za relayje namijenjene samo za Claude Code. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Nadjačavanje hosta na kojem sluša ugrađena instanca 9routera. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Nadjačavanje porta na kojem sluša ugrađena instanca 9routera. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Host povezivanja za WebSocket proxy ugrađene usluge (zadano samo loopback). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Port za poslužitelj WebSocket proxyja ugrađene usluge. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | Host mosta CLIProxyAPI (naslijeđena integracija). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | Port mosta CLIProxyAPI. | | `CLIPROXYAPI_API_KEY` | _(prazno)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | Zamjenski ključ podatkovne ravnine kada postavka `cliproxyapi_api_key` nije prisutna. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(prazno)_ | `src/lib/services/cliproxyAccountHealth.ts` | Upravljački ključ za čitanje stanja računa iz vanjski upravljane instance CLIProxyAPI. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | Konfiguracijski direktorij CLIProxyAPI. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Sučelje domaćina na kojem docker-compose objavljuje `cliproxyapi` sidecar (#12578). Njegov podatkovni volumen sadrži OAuth/API vjerodajnice pružatelja usluga, a slika s fiksnom verzijom nema nadjačavanje `api-keys` podatkovne ravnine putem varijabli okoline (samo montirani `config.yaml`), pa `0.0.0.0` izlaže uslugu s vjerodajnicama cijeloj LAN mreži. | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Nadjačajte port na kojem sluša ugrađeni Mux (coder/mux) daemon za orkestraciju agenata (uvijek 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Nadjačajte port na kojem sluša ugrađeni open-wa (automatizacija WhatsApp Weba) daemon (uvijek 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Host za bind/connect ugrađene Dario usluge (prema zadanim postavkama samo loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Port ugrađene Dario usluge. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Host za bind/connect ugrađene Dario usluge (prema zadanim postavkama samo loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Port ugrađene Dario usluge. | | `LOCAL_HOSTNAMES` | _(prazno)_ | `open-sse/config/providerRegistry.ts` | Dodatni nazivi hostova odvojeni zarezima koji se tretiraju kao "lokalni" (nazivi Docker usluga itd.). | `ENABLE_CC_COMPATIBLE_PROVIDER` namijenjen je samo relay poslužiteljima trećih strana koji isključivo prihvaćaju Claude Code klijente. OmniRoute prepisuje zahtjeve kako bi ih ti relay poslužitelji prihvatili. Ako želite koristiti samo Claude Code CLI ili niste sigurni što su ti relay poslužitelji, držite ovu opciju onemogućenom i umjesto toga dodajte običnog pružatelja kompatibilnog s Anthropicom. --- ## 21. Zdravlje proxyja | Variable | Default | Source File | Description | | ------------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Vremensko ograničenje provjere zdravlja za mehanizam brzog otkaza (fast-fail). | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Vremenski prozor (u satima) za izračun prosječne latencije proxyja kandidata u strategiji grupe optimizirane za latenciju. | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | TTL predmemorije rezultata provjere zdravlja. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | TTL predmemorije za neuspjele probove zdravlja proxyja. Držite ovu vrijednost kraćom od `PROXY_HEALTH_CACHE_TTL_MS` kako bi se prolazna vremenska ograničenja proxyja pri visokoj istodobnosti brzo ponovno pokušala, bez onemogućavanja brzog otkaza za doista neispravne proxyje. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Postavite `false` za onemogućavanje pozadinskog planera zdravlja proxyja koji povremeno ispituje registrirane proxyje. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval prolaska pozadinskog planera zdravlja u ms (najmanje `60000`). | | `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Interval sondiranja u ms za edge-relay proxyje (`deno`/`vercel`/`cloudflare`), čije sonde bude serverless isolate koji se naplaćuje (najmanje `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval pozadinskog prolaza oporavka u ms: koliko se često prethodno neispravni proxyji ponovno sondiraju kako bi se oporavljeni proxy vratio u rotaciju bez ponovnog pokretanja. Vrijednosti ispod `60000` vraćaju se na zadanu vrijednost. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Cilj sonde dohvatljivosti koji koriste planer i endpoint `/api/settings/proxies/auto-test`. Usmjerite ga na interni ili vlastito hostirani URL kako biste izbjegli javni zadani. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Broj sondi koje se pokreću odjednom po seriji; dijele ga planer i endpoint `/api/settings/proxies/auto-test`. Donja granica je 1, a gornja 50. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Odgoda u ms između polazaka dviju sondi unutar serije. Bez nje cijela serija polazi u istom trenutku, pa zajednička izlazna IP adresa može aktivirati ograničavanje brzine na cilju. Postavite na `0` da biste onemogućili razmicanje; gornja granica je 5000. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Postavite "false" da biste prestali sondirati stvarnog hosta davatelja dodijeljenog proxyju (`GET /models`, bez API ključa) i umjesto toga uvijek koristili `PROXY_HEALTH_TEST_URL`. | | `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | Kada je `false` (zadano), automatizirane sonde dohvatljivosti (planer + gumb "Test All" na `/api/settings/proxies/auto-test`) **samo su za čitanje** i nikada ne zapisuju status proxyja — samo operator postavlja aktivno/neaktivno, pa nestabilna sonda ne može trajno blokirati dodijeljeni proxy (#6246). Postavite `true` da biste vratili prijašnje ponašanje test-and-set. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Zastavica značajke s uključivanjem po izboru (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). `true` (ili `1`, `yes`) ponovno pokušava prazne prevedene korake strujanja kroz uobičajeni put vjerodajnica (do `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` ponovnih pokušaja) umjesto da vrati prazan odgovor 200 ili odgovor 502 s praznim sadržajem. | | `EMPTY_STREAM_SIBLING_RECOVERY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Zastavica značajke s uključivanjem po izboru (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). `true` (ili `1`, `yes`) aktivira sondu sadržaja praznog streama za Claude/Codex i nakon koraka `empty_content` troši postojeći ograničeni ponovni pokušaj na drugu prihvatljivu vezu, bez razdoblja hlađenja ili blokade modela. | | `STREAM_LATE_OUTPUT_PROBE_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Zastavica značajke s uključivanjem po izboru (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). `true` (ili `1`, `yes`) nastavlja uzorkovati jedan proslijeđeni chunk od svakih 16 nakon prvih 64, kako bi kasni vidljivi izlaz i dalje označavao stream kao onaj koji je emitirao izlaz (usamljena pogreška 5xx nakon izlaza ostaje na razini zahtjeva umjesto blokade samo na razini modela). | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Zastavica značajke po odabiru (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). `true` (ili `1`, `yes`) prikazuje promatranje izlaznog prometa grupe samo za čitanje ispod proxy grupe na nadzornoj ploči (različite izlazne IP adrese, veze i najviše viđenih iza jedne IP adrese tijekom posljednja 24 sata, iz proxy zapisa). Nikad se ne koristi za usmjeravanje. | | `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Zastavica značajke po odabiru (vidi [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka nadzorne ploče ima prednost). `true` (ili `1`, `yes`) prihvaća datirane promatrane adrese koje šalje operator za svakog člana grupe i spaja ih s čitanjem dnevnika za prikaz i redoslijed grupe. | | `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Prozor promatranja u satima za retke izlaznog prometa koje šalje operator (čita se pri svakom čitanju; ponovno pokretanje nije potrebno). Ograničeno na 1..168; vrijednost izvan raspona, nenumerička ili prazna vraća se na 24 uz jedno upozorenje na razini cijelog procesa, nikad iznimka. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Postavite `true` da bi planer automatski uklonio proxy poslužitelje nakon ponovljenih uzastopnih neuspjeha. | | `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | Broj uzastopnih neuspjeha prije nego što planer automatski ukloni proxy (kada je `PROXY_AUTO_REMOVE=true`). | | `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Postavite `true` da bi planer privremeno onemogućio (status `dead`, nikad izbrisan) proxy nakon ponovljenih uzastopnih neuspjeha, umjesto da ga ukloni. Nedestruktivna alternativa za `PROXY_AUTO_REMOVE`: proxy odmah ispada iz razlučivanja grupe/rotacije (filtar aktivnog statusa koji koristi razlučivanje opsega grupe već ga isključuje) i automatski se ponovno aktivira čim ponovno počne prolaziti provjere. Dijeli prag `PROXY_AUTO_REMOVE_AFTER`. Ako su obje zastavice `true`, `PROXY_AUTO_REMOVE` ima prednost. | | `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | Pasivno preskakanje po odabiru: kada je `true`, planer preskače aktivnu provjeru za krajnju točku koju njezin nedavni produkcijski promet već dokazuje (barem jedan uspjeh i nijedan pripisani neuspjeh proxyja u prozoru, promatran točno jedan davatelj). Zadano isključeno: svaki se proxy provjerava. | | `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Prozor u ms produkcijskog prometa koji pasivno preskakanje promatra (ograničeno `60000..599999`). Kraći od intervala čišćenja od 10 minuta kako bi nedavni neuspjeh dominirao umjesto da se razrijedi. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Dopušta OAuth i tijekovima provjere davatelja da zaobiđu prikvačeni proxy i povežu se izravno kada predprovjere dohvatljivosti proxyja ne uspiju. Stvarni redoslijed je: nadjačavanje iz baze podataka Feature Flags > varijabla okruženja > zadano. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30s) | `src/lib/resilience/settings.ts` | Zadani proračun **čekanja u redu**: koliko dugo zahtjev smije čekati na slobodno mjesto kod pružatelja i stajati u redu prije nego što bude odbijen, a da nikada ne dosegne upstream. Mjerač vremena se poništava čim posao počne izvršavati — izvršavanje je zasebno ograničeno s `RATE_LIMIT_EXECUTION_MAX_WAIT_MS`. Varijabla okoline postavlja samo zadanu vrijednost: trajno spremljena `resilienceSettings.requestQueue.maxWaitMs`, a zatim `rateLimitOverrides.maxWaitMs` po vezi, svaka ima prednost nad njom. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 min) | `open-sse/services/rateLimitManager.ts` | Gornja granica koliko dugo primljeni zahtjev smije ostati u izvršavanju prije nego što njegova rate-limit rezervacija istekne — odvojeno od proračuna čekanja u redu kako sporo pokretanje dohvata na ne-inkrementalnim pristupnicima ne bi isteklo (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (onemogućeno) | `open-sse/services/rateLimitManager.ts` | Ograničenje primitka u red: odbij sa statusom 429 `queue_full` kada je ovaj broj zahtjeva već u redu. `0` = neograničeno (zadano). | | `RATE_LIMIT_AUTO_ENABLE` | _(nije postavljeno)_ | `open-sse/services/rateLimitManager.ts` | Prisilno uključuje/isključuje sigurnosnu mrežu automatskog uključivanja ograničenja brzine bez obzira na trajno spremljenu postavku nadzorne ploče (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`). Prihvaća `true`/`1`/`on` za prisilno uključivanje, `false`/`0`/`off` za prisilno isključivanje. Kada je aktivno (zadano), aktivne API-key veze automatski su zaštićene ograničenjem brzine. Postavljanje `rateLimitProtection: false` po vezi onemogućuje eksplicitnu zaštitu, ali ne isključuje iz ove sigurnosne mreže; postavljanje ove varijable okoline na `false` globalni je mehanizam za pokretanje API-key veza bez redova ograničenja brzine. | | `PROVIDER_COOLDOWN_ENABLED` | _(nije postavljeno → isključeno)_ | `open-sse/services/providerCooldownTracker.ts` | Opcijsko globalno praćenje cooldown-a pružatelja/veze kroz više zahtjeva. Zadano ISKLJUČENO (preklapa se s Connection Cooldown / Provider Circuit Breaker). Prihvaća `true`/`1`/`on` za uključivanje. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Minimalni cooldown (ms) prije ponovnog pokušaja neuspjelog pružatelja/veze. Skalira se eksponencijalno s uzastopnim neuspjesima. Koristi se samo kada je `PROVIDER_COOLDOWN_ENABLED`. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 min) | `open-sse/services/providerCooldownTracker.ts` | Maksimalno ograničenje cooldown-a (ms) prije nego što se neuspjeli pružatelj/veza bezuvjetno ponovno pokuša. Koristi se samo kada je `PROVIDER_COOLDOWN_ENABLED`. | | `STREAM_RECOVERY_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/resilience/settings.ts` (početna vrijednost) → `open-sse/services/streamRecovery.ts` (logika) | **Što:** transparentan oporavak prekinutih upstream streamova (port iz free-claude-code). Zadržava početni SSE prozor do `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) kako bi se _pre-commit_ prekid — onaj koji se dogodi prije nego što ijedan bajt dosegne klijenta — neprimjetno ponovno otvorio i pokušao. **Kada uključiti:** nepouzdani upstreamovi koji često odsijecaju na 0 bajtova na početku streama; ostavite ISKLJUČENO ako si ne možete priuštiti do 750 ms dodatnog vremena do prvog tokena na svakom streamu. Prihvaća `true`/`1`/`on`. Postavlja početnu vrijednost trajno spremljene Resilience postavke; postavka nadzorne ploče ima prednost nakon što se postavi. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/resilience/settings.ts` (početna vrijednost) → `open-sse/services/streamRecovery.ts` (logika) | **Što:** nastavljanje usred toka (Faza 4.4) — nakon _post-commit_ obrezivanja (bajtovi su već stigli klijentu) ponovno se šalje zahtjev s djelomičnim tekstom kao assistant prefill i spaja nedostajući sufiks. Samo streamovi običnog teksta kompatibilni s OpenAI-jem; nikad se ne aktivira dok je poziv alata u tijeku. **Kada omogućiti:** duga generiranja koja se prekinu usred odgovora i prihvaćate da oporavljeni rep stigne odjednom, a ne token po token. Neovisno o `STREAM_RECOVERY_ENABLED` (drugačiji profil rizika). Prihvaća `true`/`1`/`on`. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Nadzornik (watchdog) korisnog izlaza aktivnog streama koji se uključuje po izboru. Otkriva streamove koji nastavljaju slati dijelove (chunkove), ali ostaju ispod konfigurirane stope izlaza asistenta; heartbeat signali, usage događaji, prazne delte te faze alata/rezoniranja ne mogu se prikazati kao napredak. Odvojeno od idle i hard-deadline vremenskih ograničenja. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Razdoblje odlaganja prije procjene propusnosti, ograničeno na 0–600000 ms. | | `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Klizni prozor korisnog izlaza, ograničen na 1000–600000 ms; prije prekida potreban je jedan cijeli prozor. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Minimalna brzina bajtova UTF-8 izlaza asistenta (konzervativna aproksimacija tokena), ograničena na 1–1000000. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Minimalni uzorak korisnog izlaza različit od nule koji se smatra mjerljivim, ograničen na 1–1000000 bajtova. | | `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Interval raspoređivanja (ms) između provjera zdravlja tokena pružatelja usluge pri pokretanju. | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Minimalni nasumični jitter (ms) dodan na `HEALTHCHECK_STAGGER_MS` između provjera zdravlja tokena pružatelja usluge, kako bi se spriječilo grupirano slanje (Issue #1220). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Maksimalni nasumični jitter (ms) dodan na `HEALTHCHECK_STAGGER_MS` između provjera zdravlja tokena pružatelja usluge, kako bi se spriječilo grupirano slanje (Issue #1220). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Veličina serije istovremenih provjera za početni pregled zdravlja tokena pri pokretanju; veće vrijednosti paralelno provjeravaju više veza, manje vrijednosti smanjuju naglo opterećenje (Issue #7875, regresija od #7719). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Broj automatskih ponovnih pokušaja pri odgovorima s cooldownom ograničenim na model prije vraćanja greške klijentu. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Maksimalni backoff interval (u sekundama) između ponovnih pokušaja tijekom cooldowna. Ograničen je ovom vrijednošću bez obzira na upstream `Retry-After`. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | URL Headroom proxyja za uštedu tokena. Životni ciklus nadzorne ploče (`api/headroom/*`) prema zadanim postavkama pokreće lokalni `headroom-ai` CLI na loopback sučelju; promijenite samo ako želite usmjeriti na vanjski Docker sidecar proxy. | ### Konstante za podešavanje oporavka streama Ponašanje zadržavanja (holdback) pri oporavku podešeno je konstantama ugrađenim u kod u `open-sse/config/constants.ts` (`STREAM_RECOVERY`), ovdje prikazanima kao referenca — njihova promjena zahtijeva izmjenu koda, a ne varijablu okruženja: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — koliko se dugo početni SSE prozor zadržava kako bi se rano obrezivanje moglo ponovno pokušati prije nego što se ijedan bajt preda klijentu. - `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — stroga gornja granica zadržanog prozora; predaja (flush + passthrough) događa se čim se nakupi ovoliko bajtova, bez obzira na timer. - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — maksimalni broj transparentnih ponovnih otvaranja upstream streama dok zadržani sadržaj još nije predan. > **Ograničenje brzine s kliznim prozorom po pružatelju usluge (bez varijable okruženja):** _fallback_ > ograničenja brzine s kliznim prozorom po pružatelju usluge, prenesen iz FCC-a, postoji u kodu > (`open-sse/services/providerDefaultRateLimit.ts`, povezan kroz > `open-sse/services/rateLimitManager.ts`), ali se isporučuje s **praznom zadanom mapom** > i danas **nema varijablu okruženja za operatora** — omogućen je samo putem test hooka / > izmjene koda. Namjerno nije naveden u gornjoj tablici. Ograničivač prijenosa (relay) po paru `(token, IP)` > koji _ima_ postavku jest `RELAY_IP_PER_MINUTE` (§3 Mreža i portovi). --- ## 22. Otklanjanje pogrešaka > [!CAUTION] > Ove varijable proizvode **opširan izlaz** i mogu otkriti osjetljive podatke. **Nikada ih nemojte omogućiti u produkciji.** | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CURSOR_DEBUG` | _(nije postavljeno)_ | `open-sse/executors/cursor.ts` | Postavite na `1` kako biste omogućili opširne zapisnike izvršitelja Cursor (dekodirani SSE dijelovi itd.). | | `CURSOR_STREAM_DEBUG` | _(nije postavljeno)_ | `open-sse/executors/cursor.ts` | Alias varijable `CURSOR_DEBUG` kompatibilan s prethodnim verzijama. | | `CURSOR_DUMP_FILE` | _(nije postavljeno)_ | `open-sse/executors/cursor.ts` | Neobavezna putanja datoteke u koju se zapisuju neobrađeni dekodirani Cursor dijelovi kada je `CURSOR_DEBUG=1`. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Vremensko ograničenje neaktivnosti toka (ms) za izvršitelj Cursor. | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Razdoblje odgode (ms) nakon mekog završetka composer kv_after_text kada bajtovi ostanu u međuspremniku — završnom pozivu alata exec_mcp daje vrijeme za dovršetak njegova okvira. | | `CURSOR_TOOL_DIRECTIVE` | omogućeno (`!== "0"`) | `open-sse/executors/cursor.ts` | Direktiva za potvrdu alata koja omogućuje da composer-2.5 pouzdano izdaje pozive alata. Postavite na `0` kako biste je onemogućili. | | `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(nije postavljeno)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Tekst sistemskog upita koji definira operator i koji se dodaje sistemskoj poruci NAKON prevođenja (ubacivanje nakon prevođenja), čime dolazi do putanja codex/Responses i `/v1/messages`. Upotrebljava se i kao prefiks direktive koji se uklanja iz ponovljenih blokova sistemskog uvoda. Ostavite nepostavljeno kako biste onemogućili. | | `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (isključeno) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | Postavite na `1` kako biste s početka toka openai→claude uklonili ponovljene blokove uvoda sistemskog upita. Zadano je isključeno — heuristike su prilagođene engleskoj prozi i mijenjaju sadržaj odgovora, pa bi odgovor koji opravdano započinje takvim odjeljkom izgubio taj dio. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Vremensko ograničenje dohvaćanja po slici (ms) za udaljeni vizualni ulaz `image_url`. | | `CURSOR_STATE_DB_PATH` | _(automatski pronađeno)_ | `open-sse/utils/cursorVersionDetector.ts` | Nadjačava traženje baze podataka stanja IDE-a Cursor koje se upotrebljava za otkrivanje verzije IDE-a. | | `CURSOR_AGENT_CLI_VERSION` | _(otkrivanje / fiksiranje)_ | `open-sse/utils/cursorAgentCliVersion.ts` | ID međuverzije Agent CLI-ja (`YYYY.MM.DD-`) za `x-cursor-client-version: cli-…` pri pokretanju agenta. | | `CURSOR_AGENT_BIN` | _(nije postavljeno)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Putanja do izvršne datoteke Cursor Agent koja se upotrebljava za generiranje slika. Ako nije postavljena, rukovatelj upotrebljava `providerSpecificData.agentBin`, a zatim PATH. | | `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Ukupno vremensko ograničenje po slici (ms) za zadatke slika Cursor Agenta. | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Ograničenje istodobnosti zajedničkog mjesta za zadatke slika Cursor. | | `CURSOR_IMG_MODEL` | zahtjev / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Nadjačava Cursor CLI `--model` za zadatke slika. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Učestalost provjere rezultata generiranja slika UC-a (uncensored.com) (ms). | | `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Ukupno vremensko ograničenje provjere rezultata generiranja slika UC-a (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Učestalost provjere rezultata generiranja videozapisa UC-a (uncensored.com) (ms). | | `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Ukupno vremensko ograničenje provjere rezultata generiranja videozapisa UC-a (ms). | | `CURSOR_DATA_DIR` | _(automatski pronađeno)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Nadjačava podatkovni direktorij Cursor Agent CLI-ja (`…/versions/`); ista varijabla koju upotrebljava službeni agent. | | `CURSOR_TOKEN` | _(nije postavljeno)_ | `scripts/ad-hoc/cursor-tap.cjs` | Izravni Cursor token nositelja koji upotrebljavaju razvojni alati. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | onemogućeno (uključivanje putem `"1"`) | `src/app/api/v1/chat/completions/route.ts` | Bilježi oznake vrste i duljine sadržaja za velike sadržaje chata kada je postavljeno `"1"`. Zadano je isključeno radi smanjenja količine zapisa. | | `DEBUG_RESPONSES_SSE_TO_JSON` | _(nije postavljeno)_ | `open-sse/handlers/responseTranslator.ts` | Postavite na `true` za bilježenje pojedinosti prevođenja Responses API-ja iz SSE-a u JSON. | | `DEBUG_CLAUDE_NONSTREAM` | _(nije postavljeno)_ | `open-sse/handlers/responseTranslator.ts` | Postavite na `true` kako bi se prikazali prazni textContent dijelovi u putanji prevođenja Claude odgovora (samo za otklanjanje pogrešaka). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(nije postavljeno)_ | Sustav za izvođenje E2E testova | Postavite na `true` kako biste omogućili način rada E2E testa (ublažena autentifikacija, testne kuke). | --- ## 23. Integracija s GitHubom Omogućite korisnicima prijavljivanje problema izravno s nadzorne ploče. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | --------------------- | -------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `GITHUB_ISSUES_REPO` | _(nije postavljeno)_ | `src/app/api/v1/issues/report/route.ts` | Repozitorij u formatu `owner/repo`. | | `GITHUB_ISSUES_TOKEN` | _(nije postavljeno)_ | `src/app/api/v1/issues/report/route.ts` | GitHub osobni pristupni token s opsegom `issues:write`. | | `GITHUB_TOKEN` | _(nije postavljeno)_ | pomoćni alati za trijažu problema / agente u oblaku | Generički GitHub pristupni token koji se koristi kao pričuvna opcija za `GITHUB_ISSUES_TOKEN`, a upotrebljavaju ga i pomoćni alati agenata u oblaku u `src/lib/cloudAgent/*`. | --- ## Scenariji implementacije Za SRE smjernice za pozadinski sustav releja (ponašanje ts/bifrost/auto, pozicioniranje 9router u odnosu na CLIProxyAPI i strategiju zamjenskog rješenja za veliku propusnost) pogledajte [Strategija pozadinskog sustava releja](/docs/reference/RELAY_BACKEND_STRATEGY.md). ### Minimalno lokalno razvojno okruženje ```bash JWT_SECRET=$(openssl rand -base64 48) API_KEY_SECRET=$(openssl rand -hex 32) INITIAL_PASSWORD=dev123 PORT=20128 NODE_ENV=development ``` ### Produkcijsko okruženje u Dockeru ```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 ``` ### Izolirano okruženje / 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 obrnutim proxyjem (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. Izolirano okruženje za vještine (v3.8.0+) Ograničenja i sigurnosne postavke koje se primjenjuju kada okvir za vještine (`src/lib/skills/`) izvršava automatizacije koje su definirali korisnici u izoliranom okruženju. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | --------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 s) | `src/lib/skills/builtins.ts` | Ograničenje ukupnog vremena za svako izvršavanje koda vještine u izoliranom okruženju. Čvrsto ograničenje; sve što traje dulje prekida se. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _(koristi `SKILLS_SANDBOX_TIMEOUT_MS` kao pričuvnu vrijednost)_ | `src/lib/skills/` | Ograničenje vremena za orkestraciju vještine na visokoj razini. Postavite ga više od `SKILLS_SANDBOX_TIMEOUT_MS` kako biste omogućili tijekove rada s više koraka. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Najveći broj bajtova koje vještina smije pročitati iz pojedinačne datoteke u izoliranom okruženju. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Najveći broj bajtova koji se bilježi iz pojedinačnog HTTP odgovora unutar vještine. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Čvrsto ograničenje broja znakova iz stdout/stderr koji se vraćaju iz poziva izoliranog okruženja. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Postavite na `1`/`true` kako biste omogućili odlazni mrežni promet iz izoliranog okruženja. Radi sigurnosti zadana je vrijednost **izolirano**. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(prazno)_ | `src/lib/skills/builtins.ts` | Popis dopuštenih slika spremnika za izvršavanje u izoliranom okruženju, odvojenih zarezima. Prazna vrijednost dopušta samo ugrađenu zadanu sliku. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(ugrađena zadana vrijednost)_ | `src/lib/skills/` | Slika spremnika koja se koristi pri pokretanju izoliranog okruženja temeljenog na Dockeru. Nadjačajte vrijednost kako biste prikvačili prilagođenu ojačanu osnovnu sliku. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Izvršno okruženje spremnika za izolaciju vještina: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. `auto` odabire najbolje instalirano izvršno okruženje za operacijski sustav domaćina (Apple Container/OrbStack na macOS-u, WSL Container na Windowsu, Podman na Linuxu), uz Docker kao pričuvnu opciju. | > [!CAUTION] > Omogućavanje postavke `SKILLS_SANDBOX_NETWORK_ENABLED=true` otvara izlazni put za proizvoljan kod vještine. U dijeljenim implementacijama upotrebljavajte je zajedno s postavkom `OUTBOUND_SSRF_GUARD_ENABLED=true` i strogim pravilima za `CORS_ORIGIN`/proxy. --- ## 25. Kvote pružatelja usluga, tuneli, sigurnosne kopije i razno tijekom izvođenja Krajnje točke kvota pružatelja usluga, mrežni tuneli (Tailscale, Ngrok, MITM proxy za otklanjanje pogrešaka), izlazni pool 1Proxyja, sigurnosne kopije baze podataka i mala nadjačavanja po značajci na koja se pozivaju sloj izvršavanja ili skripte. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Niz za povezivanje s Redisom za pozadinski sustav rate limitera. | | `ALIBABA_CODING_PLAN_HOST` | _(produkcijski host)_ | `open-sse/services/bailianQuotaFetcher.ts` | Nadjačava host koji se koristi za dohvaćanje kvota coding plana Alibaba Bailian. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | izvedeno iz hosta | `open-sse/services/bailianQuotaFetcher.ts` | Potpuno nadjačavanje URL-a kvote za Alibaba Bailian. | | `QWEN_CLOUD_COOKIE` | _(nije postavljeno)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Kolacić konzolne sesije za pristupnik kvota osobnog Token Plana Qwen Cloud / Model Studio (API ključ za inferenciju ne može ga pročitati). Kopirajte cijelo zaglavlje zahtjeva `Cookie` — sadrži `login_qwencloud_ticket` — iz bilo kojeg poziva `api.json` prema `cs-data.qwencloud.com` na home.qwencloud.com › Naplata › Pretplata (F12 › Mreža). Osjetljivo je i vrijedi samo za sesiju; poželjno je koristiti polje `qwenCloudCookie` na nadzornoj ploči za pojedinu vezu. | | `QWEN_CLOUD_SEC_TOKEN` | _(nije postavljeno)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Ručno nadjačavanje `sec_token` za konzolni pristupnik Token Plana. Osjetljivo; kada nije postavljeno, dohvaćač ga razrješava iz HTML-a nadzorne ploče pomoću kolacića. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Nadjačavanje hosta pristupnika za dohvaćač kvota osobnog Token Plana (npr. `bailian-singapore-cs.alibabacloud.com` za konzolu Model Studio). | | `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | URL nadzorne ploče koji se koristi za razrješavanje `sec_token` iz HTML-a prijavljene stranice. | | `XIAOMI_MIMO_CONSOLE_COOKIE` | _(nije postavljeno)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Kolacić konzolne sesije za API kvota Token Plana Xiaomi MiMo (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — API ključ za inferenciju ne može ga pročitati). Kopirajte cijelo zaglavlje zahtjeva `Cookie` — sadrži `api-platform_serviceToken` i `userId` — iz bilo kojeg zahtjeva prema `platform.xiaomimimo.com` na stranici Token Plan (F12 › Mreža). Osjetljivo je i vrijedi samo za sesiju; poželjno je koristiti polje `xiaomiMimoConsoleCookie` na nadzornoj ploči za pojedinu vezu. | | `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Mjesečni budžet (krediti) za pričuvni mehanizam Xiaomi MiMo praćen putem OmniRoutea, koji se koristi kada nije konfiguriran kolačić konzole. Zadano je 4.1B iz Lite razine; postavite ga na kredite svog plana (Standard 11B / Pro 38B / Max 82B). Nadjačavanje po pojedinoj vezi `providerSpecificData.monthlyTokenLimit` ima prednost nad ovom varijablom okruženja. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Nadjačavanje front-end putanje konzole za dohvaćanje kvote besplatne razine za viziju/medije u Alibaba Model Studiju. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Nadjačavanje front-end putanje konzole za dohvaćanje multimodalne kvote besplatne razine u Alibaba Model Studiju. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Nadjačavanje front-end putanje konzole za dohvaćanje audio kvote besplatne razine u Alibaba Model Studiju. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(nije postavljeno)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Neobavezna putanja do lokalne JSON datoteke nadjačavanja za ugrađeni popis dopuštenih tekstualnih modela Alibabine besplatne razine. Ako nije postavljena, koristi se `$DATA_DIR/alibaba-free-tier-allowlist.json`, a zatim `config/alibaba-free-tier-allowlist.json`. | | `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | Tokeni rezervirani za izlaz dovršetka pri izračunu budžeta upita. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Koliko se najnovijih ugrađenih slika zadržava pri uklanjanju starijih kako bi stale u kontekstni prozor (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | omogućeno | `open-sse/services/model.ts` | Uključuje naslijeđeni sloj kompatibilnosti pseudonima modela koji koriste stariji klijenti. | | `OMNIROUTE_EMERGENCY_FALLBACK` | omogućeno | `open-sse/services/emergencyFallback.ts` | Postavite `false` (ili `0`) za onemogućavanje hitnog pričuvnog mehanizma pri iscrpljenju budžeta, koji preusmjerava neuspjele zahtjeve na besplatni model `nvidia`/`openai/gpt-oss-120b`. Efektivni redoslijed je: nadjačavanje iz baze podataka Feature Flags > varijabla okruženja > zadano; ako nije dostupno, usluga se vraća na neobrađenu vrijednost varijable okruženja. | | `COMMAND_CODE_CALLBACK_PORT` | _(nije postavljeno)_ | `src/app/api/providers/command-code/auth/shared.ts` | Lokalni port koji se koristi za OAuth povratne pozive iz Command Code CLI pomoćnog alata. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Vrijednost koja se šalje kao zaglavlje `x-command-code-version` Command Code upstreamu. Nadjačajte da biste podigli verziju CLI-ja. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Osnovni URL za Command Code usage/quota upstream koji koristi telemetrija dohvaćanja kvote s pametnog telefona. Nadjačajte za samostalno hostani/alternativni Command Code API. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | Lokalni port na koji se veže MITM proxy za otklanjanje pogrešaka. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Postavite `1` da biste onemogućili provjeru upstream TLS-a (samo za razvoj). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Vremensko ograničenje neaktivnog socketa (ms) za proxyirane veze; neaktivni socketi nakon tog roka raskidaju se kako bi se izbjeglo curenje poluotvorenih tunela. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Port na kojem sluša Antigravity MITM bridge. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Krajnja točka usmjerivača na koju bridge prosljeđuje Antigravity promet. | | `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Nadjačava direktorij iz kojeg bridge čita svoj TLS materijal. Model certifikata odabire se kao i kod AgentBridge poslužitelja: `server.crt`/`server.key` za legacy leaf instalaciju, inače `ca.crt`/`ca.key` (root CA, leaf po presretnutom hostu; prisiljava se s `MITM_ROOT_CA_ENABLED=true`). Bridge izlazi pri pokretanju ako datoteke za aktivni model nedostaju. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Opširnost zapisnika odluka o usmjeravanju: `0` utišava, više vrijednosti zapisuju više odluka o zaobilaženju/usmjeravanju. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Postavite `true` da biste se uključili u model certifikata root-CA + leaf po hostu (#6684). Svježe instalacije ga dobivaju automatski; instalacije s postojećim pouzdanim legacy leaf certifikatom zadržavaju legacy fixed-SAN certifikat osim ako se ne uključe. | | `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | Postavlja ga MITM upravitelj za pokrenuti proxy proces (`root-ca` \| `legacy`) — odražava odluku o migraciji certifikata; nije namijenjen ručnom postavljanju. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | Postavite `1` (istinito) kako biste uklonili vodeći `sudo` iz MITM naredbi za povjerenje certifikata — za implementacije bez roota / s korisničkim imenskim prostorima gdje operator ručno vjeruje CA-u (npr. putem Nodeova mehanizma extra-CA-certs). | | `SKIP_ANTIGRAVITY_DNS` | _(nije postavljeno)_ | `src/mitm/dns/provision.ts` | Postavite `true` kako biste potpuno preskočili provisioniranje `/etc/hosts` DNS zapisa za Antigravity proxy imena hostova — za kontejnere bez dostupnog sudo/root pristupa. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(nije postavljeno)_ | `src/mitm/dns/dnsConfig.ts` | Postavite `1` kako biste preskočili pisanje u hosts datoteku pri dodavanju/uklanjanju DNS zapisa — za sandboxirana ili read-only testna okruženja. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Zaštita samo za test/CI: postavite `1` kako bi instalacija/deinstalacija povjerenja certifikata postala prazna operacija (no-op) tako da paket testova nikad ne mijenja spremište povjerenja OS-a. Automatski se postavlja u postavljanju testova i CI workflowima. | | `CHANGELOG_BASE_REF` | _(automatski)_ | `scripts/check/check-changelog-integrity.mjs` | Eksplicitna osnovna referenca (base ref) za anti CHANGELOG-eat gate (zadano je osnovna grana PR-a u CI-u, ili najviši `release/v*`). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Postavite `true` kako biste omogućili pozadinski planer automatske sinkronizacije poola besplatnih proxyja. Po izboru (opt-in), zadano isključeno. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Interval automatske sinkronizacije u milisekundama (zadano 30 min). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | Omogućuje 1proxy izvor besplatnih proxyja. Postavite na `false` za onemogućavanje. | | `FREE_PROXY_1PROXY_API_URL` | _(vidi oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | Nadjačavanje 1proxy API URL-a. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Maksimalan broj proxyja dohvaćenih po sinkronizaciji s 1proxyja. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | Minimalni prag ocjene kvalitete za uvoz iz 1proxy. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Omogućuje besplatni izvor proxyja Proxifly. Postavite na `false` za onemogućavanje. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Broj proxyja koji se dohvaća po sinkronizaciji Proxifly. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Filtar razine anonimnosti za Proxifly (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | Omogućuje besplatni izvor proxyja IPLocate. Samo po izričitoj želji (opt-in). | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | Nadjačavanje osnovnog URL-a liste proxyja IPLocate. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Omogućuje izvor proxy poola Webshare. Postavite na `false` za onemogućavanje; također zahtijeva postavljenu varijablu `FREE_PROXY_WEBSHARE_API_KEY`. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(nema)_ | `src/lib/freeProxyProviders/webshare.ts` | API token Webshare računa (`Authorization: Token `). Obavezno — pružatelj ostaje onemogućen bez njega. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Nadjačavanje URL-a API-ja liste proxyja Webshare. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Maksimalni broj proxyja uvezenih po sinkronizaciji Webshare. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Prikaži/sakrij gumb Deploy Vercel Relay na kartici Proxy Pool. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Nadjačavanje osnovnog URL-a Vercel API-ja (za testiranje). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Zadani naziv projekta unaprijed ispunjen u modalnom prozoru za postavljanje Vercel Relayja. | | `TAILSCALE_BIN` | _(automatska detekcija)_ | `src/lib/tailscaleTunnel.ts` | Eksplicitna putanja do binarne datoteke `tailscale`. | | `TAILSCALED_BIN` | _(automatska detekcija)_ | `src/lib/tailscaleTunnel.ts` | Eksplicitna putanja do binarne datoteke daemona `tailscaled`. | | `TAILSCALE_AUTHKEY` | _(nije postavljeno)_ | `src/lib/tailscaleTunnel.ts` | Unaprijed podijeljeni Tailscale autentifikacijski ključ za neinteraktivno / headless pokretanje `tailscale up` (prosljeđuje se putem `--auth-key=`). Kada nije postavljen, prijava se vraća na interaktivni URL za autentifikaciju u pregledniku. | | `NGROK_AUTHTOKEN` | _(nije postavljeno)_ | `src/lib/ngrokTunnel.ts` | Autentificira odlazne ngrok tunele. | | `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Maksimalan broj SQLite sigurnosnih kopija koje zadržava ručno/zakazano čišćenje sigurnosnih kopija. Snimke migracije adresirane su sadržajem i ponovno se koriste za identično stanje baze podataka; ne uklanjaju se unutar prozora istovremene migracije. Nadjačava vrijednost spremljenu u Postavke → Zadržavanje sigurnosnih kopija baze podataka. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Maksimalna starost (u danima) koju zadržava ručno/zakazano čišćenje sigurnosnih kopija. `0` onemogućuje uklanjanje na temelju starosti. Snimke migracije ne uklanjaju se unutar prozora istovremene migracije. Nadjačava vrijednost spremljenu u Postavke → Zadržavanje sigurnosnih kopija baze podataka. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | Interval otkucaja (ms) posla na strani poslužitelja koji izvršava `backup-schedule.json`. Mora ostati znatno ispod granularnosti crona od 1 minute; vrijednosti ispod `5000` ili vrijednosti koje se ne mogu raščlaniti vraćaju se na `30000`. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Naznaka container runtimea za provjeru dozvola u entrypointu. Postavite na `podman` za bilo koju Podman topologiju. Budući da spremnik ne može odrediti je li engine lokalni ili mu se pristupa putem Podman Machinea, upozorenje ostaje topološki neutralno i upućuje na `contrib/podman/README.md`. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Pozadinsko spremište potrošnje zajedničke kvote: `sqlite` (zadano) ili `redis`. | | `QUOTA_STORE_REDIS_URL` | _(nije postavljeno)_ | `src/lib/quota/storeFactory.ts` | Niz za povezivanje s Redisom koji se koristi kada je `QUOTA_STORE_DRIVER=redis` (npr. `redis://localhost:6379`). | | `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Omjer zasićenja poola (0..1); na toj vrijednosti ili iznad nje pool ulazi u strogi način rada (bez posuđivanja). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Množitelj rezultata (0..1) koji se primjenjuje na cilj kada ga politika meke kvote stavlja u niži prioritet. | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Množitelj rezultata (0..1) koji se primjenjuje na iscrpljenog pružatelja (`credits_exhausted`/`rate_limited`) pri auto-combo bodovanju kada je preflight prekid kvote ISKLJUČEN (#4540). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | Razdoblje zadržavanja (u danima) za `quota_consumption` buckete prije GC-a (`gcQuotaConsumption`). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Po izboru (zadano ISKLJUČENO): omogućuje čvrsti prekid kvote pri automatskom usmjeravanju koji prije bodovanja odbacuje kandidate s niskom kvotom. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Po izboru (zadano ISKLJUČENO): kada filtar `auto/:` ne pronađe nijednog povezanog kandidata, vraća naslijeđeno ponašanje prebacivanja na cijeli (nefiltrirani) pool umjesto vraćanja praznog poola. Zadana isključenost čini da `:free` znači „samo besplatni tier". | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | Gornja granica veličine panela (ograničena na 1–10) za broadcast varijantu `auto/*:chaos` — jedan zahtjev se prosljeđuje na najviše toliko modela različitih pružatelja. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(zadano od mehanizma)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Minimalno podešavanje veličine panela prosljeđeno rukovatelju chaos emitiranja; ako nije postavljeno, zadržava se zadana vrijednost mehanizma. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(zadano od mehanizma)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Strogi vremenski limit (ms) za cijelo račvanje chaos panela; ako nije postavljeno, zadržava se zadana vrijednost mehanizma. | | `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | Putanja do Grok CLI datoteke `auth.json` koja se koristi za dohvat tjedne kvote grok-web usluge; nadjačajte za testove ili nestandardnu instalaciju CLI-ja. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(nepostavljeno)_ | `src/mitm/manager.ts` | Dodatni CA certifikat (PEM) kojem se vjeruje za AgentBridge upstream TLS veze. | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Maksimalni broj uhvaćenih zahtjeva koji se čuvaju u kružnom međuspremniku Traffic Inspectora. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Maksimalna veličina tijela uhvaćenog zahtjeva/odgovora (KB) prije skraćivanja. | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Lokalni port za HTTP proxy Traffic Inspectora. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Automatski pokreni HTTP proxy inspektora pri pokretanju. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(nepostavljeno)_ | `src/lib/inspector/captureState.ts` | Dodatna imena hostova (odvojena zarezima) koja se tretiraju kao LLM krajnje točke za hvatanje. | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Maskiraj tajne (auth zaglavlja / API ključeve) u uhvaćenom prometu. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Minute prije nego što zaštitnik proxyja sustava automatski vrati proxy postavke OS-a. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(automatski)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Token za autentifikaciju internog unosa snimljenog prometa u inspektor. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Maksimalni broj stupaca jedan uz drugi u načinu usporedbe u Playgroundu. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(nije postavljeno)_ | `src/app/(dashboard)/dashboard/playground/` | Zadani model za akciju 'improve prompt' u Playgroundu (vraća se na aktivni model kada nije postavljen). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Glavni prekidač za isključivanje bifrost sidecar proxyja. Kada je postavljeno na `0`, ruta vraća 503 sa zaglavljem `X-Bifrost-Killswitch` i operator se preusmjerava na TS putanju. Koristite za onemogućavanje sidecara bez ponovnog postavljanja (incident tier-1 usmjerivača, rotacija ključeva). | | `BIFROST_BASE_URL` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Kada je postavljeno, ruta Bifrost sidecar proxyja prosljeđuje promet `/v1/chat/completions` na ovaj Go gateway umjesto TS relay rukovatelja. Nepostavljeno → 503 s pričuvnom opcijom. Završna kosa crta se uklanja. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | Port na koji se nadzirana Bifrost ugrađena usluga vezuje (`127.0.0.1:`) kada OmniRoute upravlja životnim ciklusom Bifrost sidecara. Zadano je `8080`. | | `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Port na koji se nadzirana LLMLingua usluga kompresije vezuje (`127.0.0.1:`). Zadano je `20135`. | | `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Osnovni URL za lokalni LLMLingua HTTP daemon mikroservisa za kompresiju. Zadano je `http://127.0.0.1:20135`. | | `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | ID Hugging Face modela koji nadzirani LLMLingua sidecar učitava (prosljeđuje se u okruženje podređenog procesa). | | `BIFROST_API_KEY` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | API ključ za Bifrost gateway (šalje se kao `Authorization: Bearer ...`). Ako nije postavljen, ruta očekuje da zahtjev nosi valjani OmniRoute API ključ; ovaj ključ služi samo za autentifikaciju na strani gatewaya. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Kada je true, Bifrost sidecar ruta struji odgovore natrag putem SSE-a kroz gateway umjesto putem TS streaming izvršitelja. Postavite na `0` za prisilne ne-streaming JSON odgovore kroz gateway. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Vremensko ograničenje po zahtjevu pri proxy-anju prema Bifrost gateway-u (ms). Pri isteku vremena ruta vraća TS relay putanju putem `X-Bifrost-Fallback` zaglavlja. | | `OMNIROUTE_BIFROST_KEY` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Pseudonim za `BIFROST_API_KEY` (koriste ga skripte koje čitaju okruženje putem `OMNIROUTE_*`). `BIFROST_API_KEY` ima prednost kada su oba postavljena. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Relay backend za `/api/v1/relay/chat/completions`: `ts \| bifrost \| auto`. `ts` = TypeScript relay (zadano kada Bifrost nije konfiguriran); `auto` odabire Bifrost kada je `BIFROST_BASE_URL` postavljen i `BIFROST_ENABLED` ≠ `0`, s automatskim TS pričuvnim mehanizmom ako sidecar nije dostupan; `bifrost` prisiljava Bifrost (strogo, bez pričuvnog mehanizma). Auth/rate-limit/injection-guard/allowlist uvijek se prvo izvršavaju u Next ruti. Odgovori nose `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason`. | | `RELAY_ROUTING_BACKEND` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Prihvaćeni pseudonim za `OMNIROUTE_RELAY_BACKEND` (iste `ts \| bifrost \| auto` vrijednosti). `OMNIROUTE_RELAY_BACKEND` ima prednost kada su oba postavljena. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | Razdoblje hlađenja (ms) nakon neuspjeha Bifrost sidecar skoka u `auto` načinu prije nego što relay ponovno pokuša sidecar; dok razdoblje hlađenja traje, usmjerava izravno na TS putanju, a zatim ponovno sondira. `0` onemogućuje. Primjenjuje se samo kada je `OMNIROUTE_RELAY_BACKEND=auto`. | | `OMNIROUTE_TLS_CERT` | _(nije postavljeno)_ | `bin/cli/commands/serve.mjs` | Putanja do PEM TLS certifikata za posluživanje `omniroute serve` putem HTTPS-a (ekvivalent `--tls-cert`). Mora biti uparena s `OMNIROUTE_TLS_KEY`; samostalni poslužitelj tada završava TLS na istom osluškivaču (`wss://` radi nepromijenjeno). Nepostavljeno → običan HTTP. Navođenje samo jednog od certifikat/ključ, ili nečitljive putanje, bilježi upozorenje i ostaje na HTTP-u. | | `OMNIROUTE_TLS_KEY` | _(nije postavljeno)_ | `bin/cli/commands/serve.mjs` | Putanja do PEM TLS privatnog ključa za `omniroute serve` HTTPS (ekvivalent `--tls-key`). Mora biti uparena s `OMNIROUTE_TLS_CERT`. Pogledajte `OMNIROUTE_TLS_CERT`. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | Glavni prekidač za `/api/local/*` rute. Kada nije postavljen ili je `0`, sve `/api/local/*` rute vraćaju 503 u produkciji. Mora biti `1` u ne-loopback implementacijama kako bi se omogućio Redis pokretač i slični pokretači lokalnih usluga na jedan klik. Dvostruka zaštita s `isLocalOnlyPath()` klasifikacijom route-guard-a (`LOCAL_ONLY_API_PREFIXES` u `src/server/authz/routeGuard.ts`). | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(nije postavljeno)_ | `src/lib/security/localEndpoints.ts` | Bearer token za pozivatelje `/api/local/*` koji nisu na loopback-u (npr. desktop aplikacija). Kada je postavljen, zahtjevi s ne-loopback IP adresa moraju nositi `Authorization: Bearer `. Obavezno kada je `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` u ne-loopback implementacijama. | | `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | Naziv kontejnera za Redis pokretač jednim klikom (`omniroute redis up`). Koriste ga i CLI i `RedisLauncherPanel` GUI. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | Port hosta za Redis pokretač jednim klikom. Promijenite ga ako host već zauzima 6379. Interni port kontejnera ostaje 6379. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | Sučelje hosta na kojem Redis pokretač jednim klikom objavljuje port. Pokretač pokreće Redis BEZ lozinke, pa vezivanje na `0.0.0.0` svakom hostu u vašem LAN-u daje Redis bez autentikacije — proširite ovo samo ako i sami postavite lozinku na instanci. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Sučelje hosta na kojem docker-compose objavljuje Redis sidecar (#9286). Compose Redis radi bez `requirepass`; aplikacijski kontejneri mu pristupaju preko compose mreže (`redis:6379`) — objavljeni port postoji samo za alate na strani hosta. `0.0.0.0` izlaže Redis bez autentikacije cijelom LAN-u. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Port hosta za compose Redis sidecar. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | Sučelje hosta na kojem docker-compose objavljuje vlastite portove aplikacije za nadzornu ploču/API/live-WS (#12568). Budući da se `REQUIRE_API_KEY=false` isporučuje kao zadana vrijednost u `.env.example`, `0.0.0.0` izlaže anonimni `/v1` LLM proxy cijelom LAN/WAN-u — proširite tek kada `REQUIRE_API_KEY=true` ili kada reverse proxy ispred nameće vlastitu autentikaciju. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Sučelje hosta na kojem docker-compose objavljuje Qdrant memory sidecar (#12578). Isto obrazloženje o izlaganju LAN-u kao i kod `REDIS_BIND_HOST`. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Sučelje hosta na kojem docker-compose objavljuje Bifrost router sidecar (#12578). Isto obrazloženje o izlaganju LAN-u kao i kod `REDIS_BIND_HOST`. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Prefiks imenskog prostora koji se primjenjuje na svaki OmniRoute Redis ključ (ograničivač brzine, predmemorija autentikacije, pohrana kvota, circuit breaker zagrijavanja). Sprječava kolizije ključeva kada se Redis instanca dijeli s drugim aplikacijama (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(nije postavljeno — mehanizam onemogućen)_ | `src/lib/api/internalServiceAuth.ts` | Dijeljena tajna za interne REST skokove koji čuvaju identitet (#9260): OmniRoute komponente koje pozivaju druge lokalne OmniRoute rute šalju je kao `x-omniroute-internal-service-token` kako bi se sačuvao identitet izvornog pozivatelja. Uspoređuje se pomoću `timingSafeEqual`. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(nije postavljeno)_ | `src/lib/api/internalServiceAuth.ts` | Varijanta internog servisnog tokena putem datoteke s tajnom: putanja do datoteke čiji je obrezani sadržaj token. Koristi se samo kada inline varijabla nije postavljena. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Obogaćuje popis pružatelja usluga na nadzornoj ploči tjednim statistikama rangiranja OpenRoutera (#9324). Zadano uključeno; postavite `false` da se dohvat u pozadini potpuno preskoči (neblokirajuće, nikada kobno). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterProviderStats.ts` | TTL predmemorije za snimku statistika OpenRouter pružatelja usluga, u milisekundama. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Redis slika koju koristi 1-click Redis pokretač. Po potrebi preinačite u `redis:8-alpine` ili privatni zrcalni registar. | | `QDRANT_HOST` | `qdrant` | _(opcijski profil klastera)_ | Naziv hosta Qdrant sporednog kontejnera kada je `--profile memory` aktivan. Zadano pokazuje na naziv qdrant usluge unutar mreže; preinačite za vanjsku implementaciju. Koristi se samo kada je `qdrantEnabled` postavljeno na `true` u kodu (`src/lib/memory/vectorStore.ts:108`). | | `QDRANT_PORT` | `6333` | _(opcijski profil klastera)_ | REST port Qdrant sporednog kontejnera. | | `QDRANT_GRPC_PORT` | `6334` | _(opcijski profil klastera)_ | gRPC port Qdrant sporednog kontejnera. Koriste ga klijentske biblioteke koje za streaming operacije preferiraju gRPC umjesto REST-a. | | `QDRANT_API_KEY` | _(nije postavljeno)_ | _(opcijski profil klastera)_ | Neobavezni API ključ za Qdrant Cloud ili autentificiranu lokalnu instancu. Prazno → zaglavlje `api-key` se ne šalje. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(opcijski profil klastera)_ | Naziv kolekcije za OmniRouteove embeddinge memorije razgovora. Stvara se pri prvom pokretanju s `QDRANT_VECTOR_SIZE` dimenzija. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(opcijski profil klastera)_ | Zadani naziv modela za embedding zabilježen u metapodacima Qdrant kolekcije. Stvarne embeddinge generira pružatelj usluge na koji pokazuje polje `embeddingModel` u OmniRouteovim postavkama. | | `QDRANT_VECTOR_SIZE` | `1536` | _(profil klastera po izboru)_ | Dimenzija vektora ugradnje (embeddinga). Mora odgovarati modelu kojim radite ugradnju (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(profil klastera po izboru)_ | Točnost HNSW indeksa tijekom izgradnje. Viša vrijednost = sporija izgradnja, brže pretraživanje. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Glavni prekidač za rotaciju računa koju operator može konfigurirati. Kada je `false`, nijedna od klasa `OMNIROUTE_ROTATE_*` u nastavku ne pokreće prebacivanje na rezervni račun (isključeno glavno stanje blokira i zadano omogućene klase 429/500/502). Omogućuje nadzirajućem front-endu (npr. VibeProxy desktop aplikaciji) da preslika vlastita pravila rotacije na mehanizam pozadinskog sustava za prebacivanje računa. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Razdoblje hlađenja (u sekundama) koje se primjenjuje na račun s ograničenom brzinom kada izvorišni sustav ne pruži izričitu naznaku ponovnog postavljanja. `0` = koristi zadano razdoblje hlađenja mehanizma umjesto fiksne nadjačane vrijednosti. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Zrcaljenje front-end postavke „ne označavaj kao ograničeno brzinom bez vremena ponovnog postavljanja". | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | Omogućavanje prebacivanja po statusnom kodu za `429` pogreške. Kada je `false` (i `OMNIROUTE_ROTATION_ENABLED=true`), pogreška `429` više ne pokreće rotaciju računa i umjesto toga se vraća klijentu. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj `429` pogrešaka unutar `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` potreban prije rotacije računa. `1` (zadano) rotira odmah, čuvajući dosadašnje ponašanje. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni prozor (u sekundama) tijekom kojeg se `429` pogreške pribrajaju pragu `OMNIROUTE_ROTATE_429_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | Omogućavanje prebacivanja po statusnom kodu za `5xx` poslužiteljske pogreške (isključujući `502`, koja ima vlastitu klasu). Kada je `false`, ove pogreške više ne pokreću rotaciju računa. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj `5xx` pogrešaka unutar `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` potreban prije rotacije računa. `1` (zadano) rotira odmah. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni prozor (u sekundama) unutar kojeg se pogreške `5xx` broje prema pragu `OMNIROUTE_ROTATE_500_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | Omogućavanje pričuvnog prebacivanja po statusu za pogreške `502` (neispravan pristupnik). Kada je `false`, pogreške `502` više ne pokreću rotaciju računa. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj pogrešaka `502` unutar `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` potreban prije rotacije računa. `1` (zadano) rotira odmah. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni prozor (u sekundama) unutar kojeg se pogreške `502` broje prema pragu `OMNIROUTE_ROTATE_502_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Po izboru (zadano ISKLJUČENO): kada je `true`, obična pogreška `400` (neispravan zahtjev) također pokreće rotaciju računa. Ovo je isključivo dodatno — nikada ne blokira postojeće ponašanje mehanizma pri kojem se pogreška `400` koja sadrži tekst o ograničenju brzine/kvoti i dalje prebacuje bez obzira na ovu zastavicu. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj pogrešaka `400` unutar `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` potreban prije rotacije računa (uzima se u obzir samo kada je `OMNIROUTE_ROTATE_ON_400=true`). | | `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni prozor (u sekundama) unutar kojeg se pogreške `400` broje prema pragu `OMNIROUTE_ROTATE_400_THRESHOLD`. | ### Zakazivač zagrijavanja za Claude Zagrijavanje pokretano cron zadacima za prijavljene Anthropic OAuth veze, kako bi se 5-satni prozor ograničenja brzine otvorio trivijalnim zakazanim zahtjevom umjesto prvim stvarnim (#8848). Zakazivač je isključen osim ako `OMNIROUTE_WARMUP_ENABLED` nije istinita vrijednost (truthy) **i** veza nije označena u `settings.claudeWarmup.connections`; prazan popis veza znači da se ništa ne zagrijava čak i kada je varijabla okruženja uključena. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------ | --------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_WARMUP_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/warmupScheduler.ts` | Glavni prekidač za planer zagrijavanja. Prihvaća `1`/`true`/`yes`/`on` (neosjetljivo na velika i mala slova, bez početnih i završnih razmaka). Bilo koja druga vrijednost, ili nepostavljena, ostavlja planer isključenim. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Cron izraz s pet polja za ciklus zagrijavanja, vrednovan u vremenskoj zoni `America/Los_Angeles` (Anthropicova vremenska zona resetiranja) bez obzira na sat glavnog računala. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Koliko se veza zagrijava paralelno po ciklusu. Ograničeno na `1`-`10`; nebrojčana vrijednost vraća se na `3`. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Model koji se koristi za zahtjev zagrijavanja. Nadjačajte samo ako zadani nije dostupan na vašem planu; odaberite najjeftiniji model koji još uvijek otvara prozor. | ### VNC sesije prijave putem preglednika i pseudonim podatkovnog direktorija Kontejnerizirani Chromium+VNC koji se koristi za interaktivno hvatanje vjerodajnica prijave putem preglednika (`/api/vnc-session`), plus zastarjeli pseudonim za `DATA_DIR`. Sve je opcionalno — zadane VNC vrijednosti ciljaju priloženu sliku `omniroute-vnc-chromium:local` i nadjačavaju se samo radi prilagođene slike kontejnera, portova ili podešavanja životnog ciklusa. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Oznaka Docker slike za Chromium+VNC kontejner za prijavu. Izgradite `docker/vnc-browser/chromium` ili usmjerite ovo na prilagođenu sliku. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Binarna datoteka okruženja za pokretanje kontejnera koja se koristi za pokretanje VNC kontejnera (npr. postavite na `podman`). | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | VNC/noVNC port izložen unutar kontejnera. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Port Chrome DevTools protokola unutar kontejnera. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Putanja direktorija Chromium profila unutar kontejnera. | | `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Direktorij na glavnom računalu koji sadrži trajno spremljene profile prijave putem preglednika. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 min) | `src/lib/vncSession/manifest.ts` | Vremensko ograničenje neaktivnosti (ms) prije nego što se neaktivna VNC sesija ukloni. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 min) | `src/lib/vncSession/manifest.ts` | Strogo ograničenje (ms) trajanja pojedine VNC sesije. | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Maksimalan broj istovremenih VNC sesija. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Vremensko ograničenje (ms) čekanja da kontejnerizirani preglednik postane spreman za CDP. | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Vremensko ograničenje (ms) za prikupljanje uhvaćene sesije/kolačića nakon završetka prijave. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Dodatne zastavice naredbenog retka proslijeđene kontejneriziranom Chromiumu. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Namjenska Docker mreža kojoj se VNC kontejner za prijavu pridružuje (#12571) umjesto zadanog mosta, tako da susjedni kontejneri ne mogu dosegnuti njegov CDP mostovni port. | | `VIBEPROXY_DATA_DIR` | _(nije postavljeno)_ | `open-sse/services/notionThreadSessions.ts` | **Zastarjeli pseudonim** za `DATA_DIR`, provjerava se tek nakon što ni `DATA_DIR` ni `OMNIROUTE_DATA_DIR` nisu postavljeni. Locira predmemoriju sesija Notion web-niti (`/notion-web-thread-sessions.json`). | --- ## 26. Testni i E2E okvir Koriste ga `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`, `scripts/dev/run-ecosystem-tests.mjs` i `scripts/build/uninstall.mjs`. U produkcijskim implementacijama ostavite sve vrijednosti u nastavku nepostavljenima. | Varijabla | Zadano | Izvorna datoteka | Opis | | -------------------------------------- | ------------------------------ | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Način E2E bootstrapa (`auth`, `fresh`, `reuse`) za pokretač Playwrighta. | | `OMNIROUTE_E2E_PASSWORD` | vraća se na `INITIAL_PASSWORD` | `scripts/dev/run-next-playwright.mjs` | Administratorska lozinka ubrizgana u Playwright okruženje. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Onemogućuje lokalni healthcheck upit tijekom izvođenja Playwrighta. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Onemogućuje petlju healthcheck provjere OAuth tokena tijekom testova. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(nepostavljeno)_ | `src/lib/tokenHealthCheck.ts` | Davatelji odvojeni zarezom isključeni iz proaktivnog osvježavanja tokena (npr. `codex,openai`). Ciljana alternativa potpunom onemogućavanju healthchecka — davatelji s kratkim TTL-om nastavljaju se osvježavati, dok kaskadni davatelji ostaju isključivo reaktivni. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Utišava healthcheck zapise u Playwrightovom stdoutu. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Preskače Next.js produkcijsku izradu prije pokretanja Playwrighta (CI optimizacija). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | Preskače OmniRoute uninstall hook (CI ga koristi kako bi `node_modules` ostao netaknut). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Vrijeme čekanja (ms) da poslužitelj postane dostupan prije pokretanja testova ekosustava/protokola. | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL koji Electron smoke okvir očekuje da pakirana aplikacija poslužuje. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Ukupno vrijeme čekanja (ms) prije nego što smoke okvir odustane. | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Razdoblje stabilizacije (ms) nakon učitavanja stranice. | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(automatski)_ | `scripts/dev/smoke-electron-packaged.mjs` | Eksplicitna putanja do pakirane Electron izvršne datoteke. | | `ELECTRON_SMOKE_DATA_DIR` | _(privremeni direktorij)_ | `scripts/dev/smoke-electron-packaged.mjs` | Direktorij s podacima za Electron smoke pokretanje. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Postavite `1` kako biste sačuvali direktorij smoke podataka nakon pokretanja. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Postavite `1` za strujanje Electron zapisnika na stdout tijekom pokretanja. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: ponovno pokretanje s istim direktorijem podataka uz provjeru da drugo pokretanje odabire nativni SQLite upravljački program. | | `CLI_DEVIN_BIN` | _(pretraga PATH-a)_ | `open-sse/executors/devin-cli.ts` | Nadjačajte putanju binarne datoteke Devin CLI-ja. | ### Cjevovod za prijevod dokumentacije Koristi ga `scripts/i18n/run-translation.mjs` (naredba `npm run i18n:run`). Svih šest varijabli prema zadanim postavkama nije postavljeno — postavite ih u `.env` samo na strojevima koji bi trebali moći pokretati prevoditelja dokumentacije. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------------- | -------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(nije postavljeno)_ | `scripts/i18n/run-translation.mjs` | Osnovni URL kompatibilan s OpenAI-jem za pozadinski sustav prijevoda. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(nije postavljeno)_ | `scripts/i18n/run-translation.mjs` | Bearer token za pozadinski sustav prijevoda (nikada se ne bilježi). | | `OMNIROUTE_TRANSLATION_MODEL` | _(nije postavljeno)_ | `scripts/i18n/run-translation.mjs` | ID modela, npr. `gpt-4o-mini` ili `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_FALLBACK_MODELS` | _(nije postavljeno)_ | `scripts/i18n/lib/translate-backend.mjs` | Neobavezan lanac modela odvojenih zarezima koji se isprobava redom kada primarni model ne uspije (429 kvota, 401/402, 5xx, istek vremena, mreža); pogrešno oblikovan zahtjev (400/413/422) ne pokušava se ponovno drugdje. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Istek vremena po zahtjevu u milisekundama. | | `OMNIROUTE_TRANSLATION_REASONING_EFFORT` | _(nije postavljeno)_ | `scripts/i18n/lib/translate-backend.mjs` | Neobavezna kontrola rasuđivanja; kada je postavljena, šalje se pozadinskom sustavu nepromijenjena. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Paralelni zahtjevi za prijevod pri radu s više datoteka / lokaliteta. | --- ## 27. Radar feed (samostalno hostanje) Neobavezni dodatak omogućen zastavicom značajke RADAR_ENABLED (zadano isključeno — zastavica značajke koja se prebacuje putem postavki/baze podataka, a ne varijablom okruženja; pogledajte [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)). Prve četiri varijable u nastavku neobavezna su nadjačavanja za samostalno hostani ili račvani feed i tokove ključeva za podržavatelje. Peta, `RADAR_ADMIN_URL`, zasebna je poveznica bez zadane vrijednosti na vlasnikovu privatnu operativnu ploču. Pogledajte [docs/frameworks/RADAR.md](../frameworks/RADAR.md) za potpunu dokumentaciju modula i njegov [slijed aktivacije od početka do kraja i vođenog postavljanja](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup). Generički čitač obavijesti na početnoj stranici/u dnevniku promjena ne konfigurira se varijablom okruženja i ne ovisi o zastavici značajke RADAR_ENABLED. Čita URL javnog repozitorija `news.json` deklariran u `src/shared/utils/releaseNotes.ts` isključivo putem GET zahtjeva; ID-ovi odbačenih obavijesti ostaju u lokalnoj pohrani preglednika. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | Osnovni URL koji dijele zasebno potpisani feedovi kataloga, preporuka, ponuda za podržavatelje i Intel podataka. Nadjačajte ga kako bi upućivao na samostalno hostanu ili račvanu uslugu. | | `RADAR_FEED_PUBKEY` | _(pričvršćeni zadani ključ)_ | `src/lib/radar/pinnedKeys.ts` | Javni ključ Ed25519 (base64-DER SPKI ili PEM) koji se upotrebljava za provjeru potpisa prilagođenog feeda. | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | URL koji otvara gumb „Ja sam doprinositelj” na nadzornoj ploči (tok preuzimanja ključa za podržavatelje putem GitHub OAutha). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL koji otvara gumb „Podržite projekt” na nadzornoj ploči (stranica za plaćanje/planove). | | `RADAR_ADMIN_URL` | _(nije postavljeno)_ | `src/lib/radar/links.ts` | Poveznica na privatnu operativnu ploču namijenjena samo vlasniku. HTTPS je obavezan, osim za HTTP povratnu petlju proslijeđenu putem SSH-a; ako vrijednost nije postavljena ili je nevažeća, neće se izraditi navigacijska stavka. | --- ## Revizija: uklonjene / neaktivne varijable Sljedeće varijable pojavljivale su se u prethodnim verzijama datoteke `.env.example`, ali **nemaju reference tijekom izvođenja** u trenutačnoj bazi koda. Uklonjene su: | Varijabla | Razlog | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `STORAGE_DRIVER=sqlite` | Ne čita je nijedna izvorna datoteka. SQLite je jedini podržani upravljački program — odabir nije potreban. | | `INSTANCE_NAME=omniroute` | Prisutna je u staroj dokumentaciji/predlošcima okruženja, ali se ne koristi tijekom izvođenja. Možda će se vratiti u budućoj značajci više instanci. | | `SQLITE_MAX_SIZE_MB=2048` | Ne spominje se u izvornom kodu. Veličina baze podataka nije umjetno ograničena. | | `SQLITE_CLEAN_LEGACY_FILES=true` | Ne spominje se u izvornom kodu. Čišćenje naslijeđenih datoteka vjerojatno je uklonjeno. | | `CLI_ROO_BIN` | Nije registrirana u `src/shared/services/cliRuntime.ts`. | | `CLI_KIMI_CODING_BIN` | Nije registrirana u `src/shared/services/cliRuntime.ts` (Kimi Coding koristi OAuth, a ne CLI binarnu datoteku). | | `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Ne spominje se nigdje u izvornom kodu. | | `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` | Uklonjeno u v3.8.0. Izvršno okruženje više ne čita ove varijable okruženja — vjerodajnice dolaze iz nadzorne ploče / `data/provider-credentials.json` / šifrirane baze podataka. | | `CURSOR_PROTOBUF_DEBUG` | Uklonjeno u v3.8.0. Cursor izvršitelj koristi `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` (pogledajte §22). | | `CLI_COMPAT_KIRO` | Uklonjeno u v3.8.0. Kiro se nalazi u `CLI_COMPAT_OMITTED_PROVIDER_IDS` — njegov prekidač nema učinka. | | `QIANFAN_API_KEY` | Uklonjeno zajedno s drugim nekorištenim predlošcima API ključeva pružatelja u v3.8.0. | ### Ispravci zadanih vrijednosti | Varijabla | Stara vrijednost u `.env.example` | Stvarna zadana vrijednost u kodu | Ispravak | | ------------------------- | --------------------------------- | -------------------------------- | ----------------------------------------------------------------------------------- | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Uklonjena je zavaravajuća vrijednost; `7` je dokumentirano kao zadana vrijednost | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Uklonjena je zavaravajuća vrijednost; `7` je dokumentirano kao zadana vrijednost | ### Ponovno generiranje OpenCode konfiguracije (ad hoc alati) Koristi ga `scripts/ad-hoc/regen-opencode-config.ts` za ponovno generiranje datoteke `opencode.json` s točnim vrijednostima `limit.context` i `limit.output` dohvaćenima iz pokrenute instance OmniRoutea. Ništa od navedenog nije potrebno za uobičajeni rad — skripta služi isključivo kao razvojni alat. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------ | ------------------------ | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | Osnovni URL instance OmniRoute koja se ispituje za `/v1/models`. | | `OMNIROUTE_KEY` | _(nije postavljeno)_ | `scripts/ad-hoc/regen-opencode-config.ts` | API ključ za autentifikaciju prema krajnjoj točki OmniRoute `/v1/models`. Ako nije postavljen, koristi se `OPENCODE_API_KEY`. | | `OPENCODE_API_KEY` | _(nije postavljeno)_ | `scripts/ad-hoc/regen-opencode-config.ts` | API ključ u stilu OpenCode (`sk-...`) koji se zapisuje u ponovno generirani `opencode.json`. Ako nije postavljen, koristi se `OMNIROUTE_KEY`. | ### Okruženje za izvanmrežnu evaluaciju kompresije (ad hoc alati) Koristi ga `scripts/compression-eval/index.ts`, CLI za izvanmrežnu evaluaciju kompresije. Nije potrebno za uobičajeni rad — namijenjeno je samo razvojnim alatima. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------- | ----------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (prazno) | `scripts/compression-eval/index.ts` | JSON vjerodajnice koje pruža operator za davatelja usluga kojeg koristi CLI za izvanmrežnu evaluaciju kompresije (raščlanjuju se pomoću `JSON.parse`). Ostavite nepostavljeno za probno izvođenje. | ### VNC sesije preglednika Koristi ih `src/lib/vncSession/manifest.ts` za konfiguriranje sesija preglednika Chromium bez grafičkog sučelja, temeljenih na Dockeru, za davatelje usluga automatizacije preglednika. Sve su neobavezne — zadane vrijednosti prikazane su u nastavku. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------- | ------------------------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------ | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Putanja do izvršne datoteke Docker koja se koristi za pokretanje VNC spremnika. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Docker slika za VNC Chromium spremnik. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(ugrađene zastavice)_ | `src/lib/vncSession/manifest.ts` | Dodatni argumenti CLI-ja Chromium koji se prosljeđuju pregledniku unutar spremnika. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | VNC priključak unutar spremnika. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Priključak protokola Chrome DevTools unutar spremnika. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Direktorij profila unutar spremnika. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(nije postavljeno)_ | `src/lib/vncSession/manifest.ts` | Direktorij na strani glavnog računala za trajne profile preglednika. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | Razdoblje neaktivnosti (ms) nakon kojeg se VNC sesija uklanja. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Najdulje trajanje sesije (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Najveći broj istodobnih VNC sesija. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Vremensko ograničenje čekanja spremnosti preglednika (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Vremensko ograničenje prikupljanja/čišćenja (ms). | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Namjenska Docker mreža kojoj se spremnik pridružuje (#12571), izvan zadanog mrežnog mosta. | | `VIBEPROXY_DATA_DIR` | _(nije postavljeno)_ | `open-sse/services/notionThreadSessions.ts` | Direktorij za trajnu pohranu sesija niti Notion. | ### Autentifikacija interne usluge | Varijabla | Zadana vrijednost | Opis | | --------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Token naveden izravno za autentifikaciju između usluga upravljačke ravnine. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Putanja do datoteke koja sadrži token interne usluge (preporučeno u spremnicima; nadjačava izravno navedenu varijablu). | ### Statistika davatelja usluga OpenRouter | Varijabla | Zadana vrijednost | Opis | | ----------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Postavite na `false` kako biste preskočili dohvaćanje statistike OpenRouter za pojedinačne davatelje usluga radi obogaćivanja kataloga. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | TTL predmemorije (ms) za dohvaćenu statistiku davatelja usluga OpenRouter. | ### Ugrađeno povezivanje s Redisom | Varijabla | Zadana vrijednost | Opis | | --------------------------- | ----------------- | ------------------------------------------------------------------------------ | | `REDIS_BIND_HOST` | `127.0.0.1` | Adresa povezivanja za ugrađenu uslugu Redis. | | `REDIS_PORT` | `6379` | Port za ugrađenu uslugu Redis. | | `OMNIROUTE_REDIS_BIND_HOST` | – | Nadjačavanje adrese povezivanja ugrađene usluge Redis specifično za OmniRoute. | --- ## 24. Dodaci izdanja v3.8.50 Ove su postavke uvedene nakon prethodne snimke ugovora okruženja. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Maksimalno čekanje na slot prihvata teškog chat zahtjeva prije pogreške `503` koju je moguće ponoviti; kratko ograničeno čekanje serijalizira nalete agenata umjesto trenutne pogreške `503`. `0` vraća trenutno odbijanje. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Proračun bajtova u redu čekanja za čekanje prihvata: ograničava ukupne međuspremnjene bajtove tijela parkirane u cijelom procesu kako čekanje ne bi moglo pojačati heap (#4380). Čekanja iznad proračuna odmah dobivaju pogrešku `503` koju je moguće ponoviti. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | Zastarjela postavka bez učinka od #10110: trake prihvata po sesiji uklonjene su u korist jednog proračuna za cijeli proces. Prihvaća se radi kompatibilnosti konfiguracije; zanemaruje se. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Zastarjela postavka bez učinka od #10110: trake prihvata po sesiji uklonjene su u korist jednog proračuna za cijeli proces. Prihvaća se radi kompatibilnosti konfiguracije; zanemaruje se. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (isključeno) | `open-sse/services/admission/runtime.ts` | Prilagodljive virtualne trake prihvata tijekom izvođenja (#9654): glavni prekidač za prilagodljivi prolaz po klijentu (sustav 2). Razlikuje se od zastarjelih varijabli traka po vezi iznad (TTL_MS / MAX_SESSIONS, bez učinka od #10110). Zastavica značajke istog naziva na nadzornoj ploči; varijabla okruženja ima prednost nad nadjačavanjem s nadzorne ploče; zahtijeva ponovno pokretanje. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Ograničava koliko dugo poziv run-now čeka posao u tijeku prije pokretanja posla iz reda čekanja. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Održava svježim stanje IMS-a i rizika preglednika kroz Chrome CDP sesije ograničene na račun; postavite `0` za onemogućavanje. | | `ADOBE_FIREFLY_SESSION_DISK` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Trajno pohranjuje popravljene Adobe sesije pod `DATA_DIR`; postavite `0` za stanje samo u memoriji. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Minimalni razmak između slanja zahtjeva za generiranje Adobe Fireflyja. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatno razdoblje mirovanja nakon svakog trećeg uspješnog slanja Adobeu. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Način rada true-headless samo za otklanjanje pogrešaka; Adobe colligo obično odbija rezultirajuću sesiju rizika. | | `CHROME_PATH` | automatsko otkrivanje | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Neobavezna apsolutna putanja izvršne datoteke Chromea koju koriste izvršitelji vođeni preglednikom kada automatsko otkrivanje platforme nije dovoljno. | | `TELEGRAM_BOT_TOKEN` | _(nije postavljeno)_ | `src/lib/telegram/config.ts` | BotFather token koji omogućuje ulazni webhook i potpisuje `initData` Mini Appa. | | `TELEGRAM_WEBHOOK_SECRET` | _(nije postavljeno)_ | `src/lib/telegram/config.ts` | Dijeljena tajna registrirana putem `setWebhook` i provjeravana u odnosu na zaglavlje `X-Telegram-Bot-Api-Secret-Token` pri svakoj dostavi webhooka. Obavezno za put webhooka; ako nije postavljeno, dostave webhooka odbijaju se sa statusom 503. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Model koji se koristi za odgovore Telegram chata. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Nadjačavanje osnovnog URL-a Bot API-ja za proxy poslužitelje ili samostalno hostirane poslužitelje Bot API-ja. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Vremensko ograničenje u milisekundama za odlazne pozive Bot API-ja. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (omogućeno) | `scripts/build/optionalPackStaging.mjs` | Postavite `0` za preskakanje emitiranja `.tar.gz` arhiva tijekom pripreme neobaveznih ML/pregledničkih paketa za samostalno stablo Electrona (direktoriji paketa i `optional-packs.index.json` i dalje se stvaraju). Koristi ga tijek rada izdanja za radnu površinu radi smanjenja veličine prijenosa artefakata. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Omogućuje registraciju ruta slika xAI pretplate; zadano onemogućeno kako bi put slika putem API ključa ostao nepromijenjen. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Razdoblje hlađenja po ključu u milisekundama kada odgovor `429` nema upotrebljiv `Retry-After` nagovještaj. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | omogućeno | `open-sse/services/estimatorCalibration.ts` | Postavite na `off`, `0` ili `false` za onemogućavanje bilježenja i primjene kalibracije procjenitelja u memoriji. | | `NEXT_MANUAL_SIG_HANDLE` | _(interno)_ | `scripts/dev/standalone-server-ws.mjs` | Interno nadjačavanje rukovatelja signala samostalnog poslužitelja; obično ga postavlja i briše pokretač umjesto da ga konfiguriraju operatori. | ### ChatGPT Web (Codex) Globalne zadane vrijednosti za headless preglednik i odlazni tunel alata. Vrijednosti veze postavljene na nadzornoj ploči imaju prednost. | Varijabla | Zadano | Izvorna datoteka | Opis | | --------------------------------------- | --------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(automatsko otkrivanje)_ | `open-sse/executors/chatgpt-web-codex.ts` | Eksplicitna putanja do Chrome/Chromium preglednika za rad pod npm, systemd i PM2. | | `CHROME_PATH` | _(automatsko otkrivanje)_ | `open-sse/executors/chatgpt-web-codex.ts` | Zajednička rezervna opcija za eksplicitnu putanju do Chrome/Chromium preglednika. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(nije postavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Interna CDP krajnja točka; Docker koristi sidecar na portu `9223`. | | `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _(nije postavljeno — isključeno)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | Postavite na `1` (uz konfiguriranu CDP krajnju točku) kako biste ponovno koristili postojeću ChatGPT stranicu vanjski upravljanog, prijavljenog profila preglednika umjesto izoliranog konteksta po krugu; također ograničava broj istovremenih ChatGPT kartica na 1. Zadano je isključeno. Pogledajte [trajni CDP profil](../guides/CHATGPT-WEB-PERSISTENT-CDP.md). | | `CDP_PROXY_TOKEN` | _(nije postavljeno)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Ako je postavljeno, svaki zahtjev prema CDP-proxy sidecaru mora poslati ovu vrijednost u zaglavlju `X-Omni-Cdp-Token` (#13679). Bez vrijednosti proxy prosljeđuje bez autentifikacije — tada štiti samo mrežna izolacija Compose mreže `chatgpt-web-codex-net`. Generirajte pomoću `openssl rand -hex 32`. | | `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(nije postavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globalni OpenAI tunnel ID za lokalne krugove Codex alata. | | `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(nije postavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globalni runtime ključ tunela; nikada ga ne ispisujte u logove. | | `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | Točan naziv novostvorenog ChatGPT prilagođenog konektora za MCP most. | | `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Namjenski direktorij za stanje preglednika, brokera i tunela. | | `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | Pri `1` dijagnostičke slike preglednika snimaju se na svakoj kontrolnoj točki. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(nije postavljeno)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Opcionalna apsolutna putanja do trajnog launcher binarnog programa. | | `CODEX_CHATGPT_WEB_BUN` | _(automatsko otkrivanje)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Opcionalna apsolutna putanja do Bun runtime binarnog programa. | | `CODEX_WEB_GPT_BUN` | _(nije postavljeno)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Zastarjela rezervna opcija za `CODEX_CHATGPT_WEB_BUN`; nove instalacije koriste kanonski naziv. | --- ## OmniConductor Bridge Dugotrajni SSE korisnik koji zrcali zadatke OmniConductor huba u lokalni A2A TaskManager (`src/lib/conductor/`). Po izboru — most se pokreće samo kada je postavljen `CONDUCTOR_HUB_URL`. Samo na strani poslužitelja: token huba nikada ne smije doseći preglednik. | Varijabla | Zadano | Izvorna datoteka | Opis | | ------------------------------ | ----------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(prazno)_ | `src/lib/conductor/boot.ts` | Osnovni URL OmniConductor huba (npr. `http://127.0.0.1:7910`). Nepostavljeno = most onemogućen. | | `CONDUCTOR_HUB_TOKEN` | _(prazno)_ | `src/lib/conductor/boot.ts` | Vjerodajnica huba za SSE tok — izdajte peer vrste `spokesperson` na hubu (`POST /v1/peers`, admin). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(prazno)_ | `src/lib/conductor/hubProxy.ts` | Vjerodajnica za dolaznu delegaciju zadataka A2A→hub (`POST /v1/tasks`); kada nije postavljena, koristi se `CONDUCTOR_HUB_TOKEN`. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Osnovni URL servisa spokesperson (Faro) iza proxyja chata na nadzornoj ploči (`/api/conductor/ask`). | ### Raspoređivanje vođeno kvotama Koriste ga `open-sse/services/combo.ts` i `src/lib/quota/quotaScheduler.ts` za provjere token-proračuna prije zahtjeva. Po izboru — zadano ponašanje usmjeravanja ostaje nepromijenjeno kada nije postavljeno. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------- | ------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | Kada je `1`, preskače veze čiji token-proračun po prozoru (`rateLimitOverrides.tpm`, tablica `provider_quota_state`) ne može pokriti procijenjeni trošak zahtjeva prije slanja. Fail-open kada proračun nije konfiguriran. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(uključeno)_ | `open-sse/services/estimatorCalibration.ts` | Kalibracija povratnom informacijom estimatora tokena zaštite konteksta (#14931): po (davatelju, modelu, prisutnim alatima) EMA omjera `usage.prompt_tokens` / procjena, ograničeno na 0.15–2.0, samo u memoriji. `off`, `0` ili `false` onemogućuje bilježenje i primjenu. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Registrira rute slika `xai-oauth` (`xao`) i `grok-cli`. Zastavica značajke na nadzornoj ploči istog naziva; nadjačavanje iz baze podataka ima prednost nad ovom vrijednošću. |