# Environment Variables Reference (Bosanski) 🌐 **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) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇰 [sk](../../../sk/docs/reference/ENVIRONMENT.md) · 🇸🇮 [sl](../../../sl/docs/reference/ENVIRONMENT.md) · 🇷🇸 [sr](../../../sr/docs/reference/ENVIRONMENT.md) · 🇸🇪 [sv](../../../sv/docs/reference/ENVIRONMENT.md) · 🇰🇪 [sw](../../../sw/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ta](../../../ta/docs/reference/ENVIRONMENT.md) · 🇮🇳 [te](../../../te/docs/reference/ENVIRONMENT.md) · 🇹🇭 [th](../../../th/docs/reference/ENVIRONMENT.md) · 🇹🇷 [tr](../../../tr/docs/reference/ENVIRONMENT.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/ENVIRONMENT.md) · 🇵🇰 [ur](../../../ur/docs/reference/ENVIRONMENT.md) · 🇺🇿 [uz](../../../uz/docs/reference/ENVIRONMENT.md) · 🇻🇳 [vi](../../../vi/docs/reference/ENVIRONMENT.md) · 🇳🇬 [yo](../../../yo/docs/reference/ENVIRONMENT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md) --- > 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 dokumentovana varijabla mora se također nalaziti u `.env.example`, a > svaka varijabla iz `.env.example` mora se nalaziti ovdje. `npm run check:env-doc-sync` > osigurava ovo pri potvrđivanju izmjena i u CI-ju. Da biste namjerno izostavili varijablu, dodajte je na > listu dozvoljenih 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. Sanitizacija unosa i zaštita ličnih podataka](#5-input-sanitization--pii-protection) - [6. Pravila alata i usmjeravanja](#6-tool--routing-policies) - [7. URL-ovi i sinhronizacija 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. Pristupni podaci OAuth pružatelja usluga](#11-oauth-provider-credentials) - [12. Nadjačavanja User-Agent vrijednosti pružatelja usluga](#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 isteka vremena](#15-timeout-settings) - [16. Evidentiranje](#16-logging) - [17. Optimizacija memorije](#17-memory-optimization) - [18. Sinhronizacija cijena](#18-pricing-sync) - [19. Sinhronizacija modela (razvoj)](#19-model-sync-dev) - [20. Postavke specifične za pružatelje usluga](#20-provider-specific-settings) - [21. Stanje proxyja](#21-proxy-health) - [22. Otklanjanje grešaka](#22-debugging) - [23. Integracija s GitHubom](#23-github-integration) - [24. Izolirano okruženje vještina (v3.8.0+)](#24-skills-sandbox-v380) - [27. Radar izvor (samostalno hostovanje)](#27-radar-feed-self-hosting) - [Scenariji implementacije](#deployment-scenarios) - [Revizija: uklonjene / nekorištene varijable](#audit-removed--dead-variables) --- ## 1. Obavezne tajne One **moraju** biti postavljene prije prvog pokretanja. Bez njih će aplikacija ili odbiti pokretanje ili raditi s nesigurnim zadanim postavkama. | Varijabla | Obavezno | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------- | ------------------- | ------------------------------------ | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | **Da** | _(nema)_ | `src/lib/auth` | Potpisuje/provjerava sve kolačiće sesije kontrolne ploče (JWT). Generišite pomoću `openssl rand -base64 48`. | | `API_KEY_SECRET` | **Da** | _(nema)_ | `src/lib/db/apiKeys.ts` | AES ključ za šifriranje vrijednosti API ključeva pohranjenih u SQLite bazi. Generišite pomoću `openssl rand -hex 32`. | | `INITIAL_PASSWORD` | **Da** | `CHANGEME` | Skripta za inicijalizaciju | Postavlja početnu administratorsku lozinku za kontrolnu ploču (podudara se sa zadanom vrijednošću iz `.env.example` — namjerno je očigledno nesigurna kako bi se zahtijevala promjena). **Promijenite je prije prve upotrebe.** Nakon prijave, promijenite je putem Kontrolna ploča → Postavke → Sigurnost. | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Da** (produkcija) | _(nije postavljeno)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Dijeljena tajna za interni WebSocket most Codex Responses. Autentificira zahtjeve mosta između Electron/browser WS releja i OmniRoutea. ⚠️ **OBAVEZNO u produkciji — kada nije postavljeno, svi zahtjevi WS mosta se odbijaju.** Generišite pomoću `openssl rand -base64 32`. | | `OMNIROUTE_SW_BUILD_ID` | Ne | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Eksplicitni identifikator za poništavanje keša servisnog radnika 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 sistemi za izgradnju (npr. u stilu Herokua) na 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=…`; izvodi se iz dvije prethodne vrijednosti, 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 oznaka pouzdane IP adrese ravnopravnog uređaja došla s vlastitog HTTP servera OmniRoutea (`scripts/dev/peer-stamp.mjs`). Posrednički softver za autorizaciju vjeruje lokalnosti zahtjeva (loopback/LAN ograničavanje ruta LOCAL_ONLY) samo kada oznaka sadrži ovaj token. Automatski se generiše pri svakom pokretanju — ostavite nepostavljeno; fiksirajte ga samo za postavke s više procesa koje moraju dijeliti oznaku. | ### Naredbe za generisanje ```bash # Generišite 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 nemojte pohranjivati `.env` datoteke sa stvarnim tajnama u sistem za kontrolu verzija. `.gitignore` već isključuje `.env`, ali to provjerite prije slanja. --- ## 2. Pohrana i baza podataka OmniRoute koristi **SQLite** (putem paketa `better-sqlite3`) za trajnu pohranu svih podataka. Ove varijable kontroliraju lokaciju podataka, šifriranje i životni ciklus. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | Korijenski direktorij za SQLite bazu podataka, sigurnosne kopije i podatkovne datoteke. Promijenite za Docker volumene ili prilagođene putanje. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(nije postavljeno)_ | `src/lib/dataPaths.ts` | Zaobilazno rješenje za zaštitu testnog/evaluacijskog DATA_DIR direktorija (#10428). Testovi i Node evaluacijski/ispisni pozivi (`-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 operatera; postavite na `1` kako biste ponovo omogućili korištenje stvarnog direktorija. | | `OMNIROUTE_BUILD_SHA` | _(nije postavljeno)_ | `src/lib/monitoring/buildSha.ts` | Git SHA pokrenutog artefakta. Dodaje se putem `npm run build:release`; može se umetnuti u kontejnere koji se isporučuju bez kontrolne datoteke `dist/BUILD_SHA`. Prikazuje se kao `system.buildSha` na `/api/monitoring/health`. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Referenca prema kojoj provjera porijekla pakiranog artefakta provjerava SHA verzije (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(nije postavljeno)_ | `scripts/build/buildProvenance.ts` | Postavite na `1` kako biste dozvolili pakiranje verzije čiji SHA nije na liniji izdanja, bilježeći je kao namjernu canary verziju umjesto da provjera završi neuspješno (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(nije postavljeno)_ | `scripts/ops/deploy-canary.mjs` | API ključ za smoke provjeru canary implementacije, poslan kao `Authorization: Bearer` na `/v1/chat/completions`. Koristi ga samo skripta za implementaciju (#10429), nikada server. Nije povezan s varijablama `OMNIROUTE_SMOKE_*` 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 izgradnje (#10060): postavlja ga na `1` skripta `scripts/build/build-next-isolated.mjs`, a nasljeđuje ga svaki pokrenuti radni proces izgradnje kako bi sloj baze podataka vratio neoperativni stub umjesto učitavanja nativnog dodatka better-sqlite3 (koji prekida radni proces pri izlasku). Nikada se ne postavlja za pokrenuti server. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Postavite na `1` kako biste preskočili provjeru unaprijed izgrađenih opcionalnih nativnih zavisnosti za neuobičajena vendorizirana stabla. Time se ne omogućava izgradnja ako zavisnost nedostaje; koristite samo kada se nativne zavisnosti isporučuju zasebno. | | `OMNIROUTE_DATA_DIR` | _(nije postavljeno)_ | `open-sse/executors/promptql/threadSticky.ts` | **Rezervni pseudonim** za `DATA_DIR`, koji se provjerava samo kada `DATA_DIR` nije postavljen. Koristi se za pronalaženje diskovne predmemorije trajnih sesija po niti PromptQL izvršitelja (`/promptql-thread-sessions.json`); ako nijedna varijabla nije postavljena, predmemorija ostaje samo u memoriji (ne zadržava se nakon ponovnog pokretanja). | | `OMNIROUTE_PLUGINS_DIR` | _(nije postavljeno)_ | `src/lib/plugins/scanner.ts` | Direktorij koji čita **skener dodataka tokom izvođenja** — i korijenski direktorij u koji upravitelj dodataka instalira dodatke — čime se nadjačava zadana vrijednost izvedena iz početnog direktorija (#11827). Usmjerite ga na bind-montirano stablo dodataka u Dockeru/K8s-u umjesto premještanja HOME samo radi promjene putanje skeniranja (HOME također upravlja svakim drugim ponašanjem vezanim za početni direktorij). Kada nije postavljeno = `~/.omniroute/plugins`, ili `/tmp/.omniroute/plugins` kada proces uopće ne izvozi početni direktorij — čime se uklanja problem tihog nepronalaženja dodataka. Razriješeni direktorij bilježi se jednom pri pokretanju kao `scanner.dir_resolved`, zajedno s ulaznom vrijednošću koja je odabrana. Samo na strani servera: dodaci CLI komandi zadržavaju vlastiti `OMNIROUTE_PLUGIN_PATH` (odjeljak 9). | | `STORAGE_ENCRYPTION_KEY` | _(prazno = onemogućeno)_ | `src/lib/db/encryption.ts` | AES ključ za potpunu enkripciju SQLite baze podataka u mirovanju. Generišite pomoću `openssl rand -hex 32`. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Oznaka verzije ključa za enkripciju. Povećajte je prilikom rotacije ključa kako biste podržali dešifriranje starih sigurnosnih kopija. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | Kada je `true`, preskaču se rutinske sigurnosne kopije SQLite datoteka i one prije upisivanja (spremanje/brisanje cijena models.dev, upisivanje postavki). Ručne sigurnosne kopije i one prije vraćanja i dalje se izvršavaju. Ovo **ne** onemogućava obavezni trajni sigurnosni snimak pokretača migracija niti zaštitu od masovne migracije za postojeću trajnu bazu podataka. Izrada neručnih sigurnosnih kopija ograničena je na najviše jednom svakih 60 minuta. Na kontrolnoj ploči, u odjeljku **Postavke → Pohrana**, rutinska automatska izrada sigurnosnih kopija može se zasebno onemogućiti. | | `OMNIROUTE_CRYPT_KEY` | _(nije postavljeno)_ | `src/lib/db/encryption.ts` | **Zastarjeli pseudonim** za `STORAGE_ENCRYPTION_KEY`. Prihvata se kao rezervna vrijednost kada primarna varijabla nije prisutna. | | `OMNIROUTE_API_KEY_BASE64` | _(nije postavljeno)_ | `src/lib/db/encryption.ts` | **Zastarjeli pseudonim** (oblik kodiran u Base64) koji se prihvata kao rezervna vrijednost. Automatski se dekodira prije upotrebe. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(nije postavljeno)_ | `src/lib/db/core.ts` | Nadjačava periodični interval provjere ispravnosti SQLitea (ms). Kada nije postavljeno, zadane vrijednosti izvode se iz `NODE_ENV`. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(uklonjeno)_ | `src/lib/db/walMaintenance.ts` | **Uklonjeno.** Periodični aktivni `wal_checkpoint(TRUNCATE)` može poništiti dijeljeno mapiranje wal-indeksa i srušiti proces signalom SIGBUS (#13973), pa planer više ne postoji. Varijabla je neaktivna: pozitivna vrijednost jednokratno bilježi upozorenje o zastarjelosti, dok `0` ili nepostavljena vrijednost ne proizvodi poruke. WAL se održava pomoću PASSIVE kontrolnih tačaka (ispod), a skraćuje kontrolnom tačkom pri gašenju. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5 min) | `src/lib/db/walMaintenance.ts` | Nadjačava učestali interval za `wal_checkpoint(PASSIVE)` (ms). Održava broj WAL okvira na čekanju malim kako bi kontrolne tačke ostale brze, a veličina WAL datoteke ograničena između skraćivanja pri gašenju. `0` onemogućava ovu funkciju. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Kada PASSIVE provjera ustanovi da je WAL datoteka veća od ove vrijednosti, pokreće se `wal_checkpoint(RESTART)` kako bi WAL počeo ispočetka bez ponovnog zapisivanja mapiranog wal-indeksa. Aktivne kontrolne tačke u načinu skraćivanja uklonjene su (pogledajte red `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS`). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Postavite na `1`/`true`/`yes`/`on` kako bi proces završio nakon što kritično opterećenje resursa potraje tokom perioda `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS`, čime se nadzornom sistemu (systemd `Restart=always`, Docker politika ponovnog pokretanja) omogućava da pokrene čist proces umjesto neograničenog posluživanja odgovora 503. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2 min) | `open-sse/utils/resourcePressure.ts` | Koliko dugo kritično opterećenje mora trajati prije nego što se aktivira završetak procesa radi samostalnog ponovnog pokretanja. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(automatsko otkrivanje)_ | `src/lib/db/adapters/sqljsAdapter.ts` | Izričita putanja (apsolutna ili relativna u odnosu na cwd) do `sql-wasm.wasm` pri korištenju rezervnog WASM adaptera `sql.js`. Kada nije postavljena, automatski se otkriva pomoću zavisnosti paketa i mogućih rasporeda datoteka. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Broj dana tokom kojih automatsko čišćenje prije brisanja čuva kontrolne tačke završenog (uspješno/neuspješno/otkazano/isteklo) Batch API zadatka, referencirane ulazne/izlazne datoteke i datoteke grešaka te red baze podataka. Primjenjuje se tek nakon što se uključi `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED`; odgovara OpenAI-jevom periodu čuvanja izlaznih podataka Batch API-ja. Ne utiče na rutu `DELETE /api/v1/batches/delete-completed` koju pokreće operater i koja namjerno ostaje bezuslovna (bez filtriranja prema starosti). | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | Kada je `true`, omogućava automatskom čišćenju da izbriše završene Batch API zadatke (i njihove kontrolne tačke) starije od `OMNIROUTE_BATCH_RETENTION_DAYS` te obriše BLOB sadržaj prenesenih datoteka nakon njihovog vlastitog `expires_at`. Zadano je isključeno: svaka postojeća instalacija zadržava ove podatke kao i ranije sve dok operater ne uključi ovu opciju. Ovo je također zastavica funkcionalnosti koja se može uređivati putem kontrolne ploče — pogledajte `docs/reference/FEATURE_FLAGS.md` → Izvršavanje. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Postavite na `1` kako biste u potpunosti preskočili provjeru ispravnosti baze podataka pri pokretanju. Korisno za kratkotrajne zadatke i integracijske testove. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Postavite na `1` kako biste prisilno uključili petlju provjere ispravnosti baze podataka, čak i kada bi se ona uobičajeno preskočila (npr. za kratkotrajne zadatke). | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | Postavite na `1` kako biste preskočili pripremu izvornog izvršnog okruženja tokom `npm install`. Korisno pri CI/bezglavim instalacijama gdje je sqlite već izgrađen. | | `OMNIROUTE_MIGRATIONS_DIR` | _(automatsko otkrivanje)_ | `src/lib/db/migrationRunner.ts` | Nadjačajte direktorij koji izvršilac migracija pretražuje. Korisno pri isporuci zapakovanih migracija u prilagođenim verzijama. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(nije postavljeno)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Dodatni direktoriji migracija kao unosi `namespace=dir`, odvojeni graničnikom putanja platforme (npr. `ee=/opt/app/enterprise/db/migrations`). Datoteke pronađene tamo evidentiraju se kao `-`, tako da distribucija koja isporučuje vlastite migracije nikada nije u sukobu s numeričkim mjestima izvornog projekta. Neispravan unos, nevažeći imenski prostor ili nedostajući direktorij izaziva grešku pri pokretanju umjesto tihog preskakanja sheme. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Sigurnosni prag za veliki broj migracija na čekanju (#3416). Pokretanje se prekida ako je više od ovog broja migracija na čekanju u postojećoj bazi podataka (štiti od izbrisane tabele za praćenje). Povećajte ga kako biste vratili stariju rezervnu kopiju; postavite na `0` kako biste onemogućili provjeru. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | Radni direktorij za kontrolnu tačku izdanja `check:install-upgrade`. Potrebno je približno 12 GB (dva instalacijska stabla od ~3 GB i tarball), pa se ne smije izvršavati na malom tmpfs-u — na samostalno hostovanom izvršiocu `/tmp` je tmpfs od 12 GB u RAM-u, koji je kontrolna tačka popunila, čime je paket skraćen. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(zadano u kodu)_ | `src/lib/spend/batchWriter.ts` | Interval pražnjenja (ms) za grupno zapisivanje potrošnje/troškova. Niže vrijednosti smanjuju objedinjavanje zapisivanja; više vrijednosti smanjuju nadmetanje za bazu podataka. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(zadano u kodu)_ | `src/lib/spend/batchWriter.ts` | Najveći broj baferovanih unosa potrošnje prije prisilnog pražnjenja. Povećajte za okruženja s visokim QPS-om; smanjite kada je ograničena potrošnja memorije važnija. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(nije postavljeno)_ | `open-sse/utils/proxyFetch.ts` | Postavite na `"true"` kako biste ispisivali dnevnike za otklanjanje grešaka `[ProxyFetch]` na putanji Vercel releja. Zadano je isključeno kako bi se izbjeglo otkrivanje naznaka o usmjeravanju. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Postavite na `"true"` ili `"1"` kako biste uključili IP adrese klijenta/izlazne IP adrese i prefiks računa u detaljni red procesnog dnevnika `[ProxyEgress]`. Zadano ostaje ISKLJUČENO kako procesni dnevnik ne bi otkrivao IP adrese ili prefiks računa. | | `OMNIROUTE_DEBUG` | _(nije postavljeno)_ | `bin/cli/commands/quota.mjs` | Postavite na `1` kako biste iz CLI naredbi za kvote ispisivali dijagnostiku vremena za svaki zahtjev (`[omniroute] GET completed in Nms`) na stderr. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(automatski)_ | `scripts/dev/healthcheck.mjs` | Eksplicitna putanja koju provjerava provjera ispravnosti kontejnera. Ako nije postavljena, sonda je izvodi iz `OMNIROUTE_BASE_PATH`; njenim postavljanjem ponovo se uključuje dubinska krajnja tačka za nadzor. | | `OMNIROUTE_DEBUG_COMPLETION` | _(nije postavljeno)_ | `bin/cli/commands/completion.mjs` | Postavite na bilo koju nepraznu vrijednost kako biste ispisivali dijagnostiku `[omniroute completion]` iz putanja CLI keša za automatsko dovršavanje u ljusci (čitanje/osvježavanje/pisanje). Zadano je isključeno — greške tih keševa prolaze neprimjetno kako nedostajući/oštećeni keš nikada ne bi narušio dovršavanje pomoću tipke Tab. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24 h) | `open-sse/services/batchProcessor.ts` | Najduži period ponovnih pokušaja za pojedinačne stavke grupe (ms). Stavke koje prekorače ovo trajanje označavaju se kao neuspjele. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Osnovno kašnjenje (ms) za eksponencijalno odgađanje pri ponovnim pokušajima stavki paketa. | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1 h) | `open-sse/services/batchProcessor.ts` | Ograničenje (ms) za eksponencijalno odgađanje između ponovnih pokušaja stavki paketa. | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Maksimalan broj paketa koji se istovremeno obrađuju. Povećajte za veću propusnost; zadržite nisku vrijednost kako biste izbjegli naglo prekoračenje ograničenja brzine. | > [!IMPORTANT] > Prije izmjene postojeće trajne baze podataka, pokretač migracije objavljuje potpunu, > sadržajno adresiranu snimku stanja u `DATA_DIR/db_backups/`. Objavljivanje zahtijeva sistem datoteka > koji podržava čvrste veze bez prepisivanja unutar istog sistema datoteka, kao i trajnu sinhronizaciju datoteka. POSIX domaćini također > zahtijevaju sinhronizaciju direktorija; na sistemu Windows, Node može odbiti ručke direktorija, pa OmniRoute prazni > objavljenu datoteku i tretira sinhronizaciju stavke direktorija kao postupak po najboljem nahođenju. > Ako montirani `DATA_DIR` ne može pružiti te garancije, pokretanje se sigurno prekida prije primjene > migracije. Premjestite `DATA_DIR` na volumen koji podržava te primitive; nemojte koristiti > `DISABLE_SQLITE_AUTO_BACKUP` za zaobilaženje sigurnosti migracije. ### Scenariji | Scenarij | Konfiguracija | | ------------------------- | --------------------------------------------------------------------------------------------------------- | | **Lokalni razvoj** | Ostavite sve zadane vrijednosti. 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čki interfejs kontrolne ploče i API krajnje tačke (režim 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 uzimaju u obzir basePath). Npr. `/omniroute`. U Dockeru se vrijednost ugrađuje tokom `docker build` (`ARG OMNIROUTE_BASE_PATH`); unaprijed izgrađene korijenske slike mogu jednokratno primijeniti drugačiju vrijednost pri pokretanju kontejnera, prije nego što se Next.js pokrene. Postavite `NEXT_PUBLIC_BASE_URL` na javno izvorište koje uključuje istu podputanju. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(prazno = korijen)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Pregledniku vidljiva kopija varijable `OMNIROUTE_BASE_PATH`, ugrađena tokom izgradnje kako bi prikaz krajnje tačke na kontrolnoj ploči pokazivao `https://host/omniroute/v1` umjesto `https://host/v1`. Ako nije postavljena, koristi `OMNIROUTE_BASE_PATH`. Ponovo izgradite nakon promjene (Next `basePath` se postavlja tokom izgradnje). | | `DASHBOARD_ALLOW_EMBED` | _(nije postavljeno = nikad se ne može prikazati u okviru)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | Omogućava ugradnju HTML stranica u iframe. Kada nije postavljeno, svaka ruta isporučuje `frame-ancestors 'none'` + `X-Frame-Options: DENY`. Postavite na `vscode` kako biste posluživali stranice (kontrolnu ploču, prijavu, dokumentaciju, odredišnu stranicu) s `frame-ancestors 'self' vscode-webview:` i bez `X-Frame-Options`, tako da ih VS Code Simple Browser može prikazati (OmniCopilotov režim `dashboardOpen: "editor"`). API površina (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, aliasi na korijenskom nivou) zadržava stroga zaglavlja u oba slučaja. Prepoznaje se samo `vscode` — `1`/`true` to ne omogućavaju. Postavka tokom izgradnje: ponovo izgradite nakon promjene (`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` za slike; postavljanje na unaprijed izgrađenoj instalaciji nema efekta). | | `API_PORT` | _(nije postavljeno)_ | `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` | _(nije postavljeno)_ | `src/lib/runtime/ports.ts` | Kada je postavljeno, poslužuje korisnički interfejs kontrolne ploče na ovom zasebnom portu. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(onemogućeno)_ | `src/sse/utils/backpressure.ts` | Ograničava broj istovremenih aktivnih veza za razgovor; zahtjevi iznad ograničenja dobijaju `503` s `Retry-After`. Pozitivan cijeli broj omogućava zaštitu; ako nije postavljeno ili je `0`, zaštita je onemogućena. | | `OMNIROUTE_INSTANCE_ID` | _(nije postavljeno)_ | `src/shared/resilience/peerRouting.ts` | Stabilan, jedinstven ID ovog pristupnika pri ulančavanju OmniRoute instanci. Omogućava provjere dolaznih petlji između ravnopravnih čvorova. Dozvoljeni znakovi: slova, cifre, `.`, `_`, `:` i `-`; najviše 64 znaka. | | `OMNIROUTE_PEER_URLS` | _(nije postavljeno)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | Zarezima odvojeni osnovni URL-ovi za OmniRoute koji mogu primiti `X-OmniRoute-Peer-Trace`. Samo eksplicitno dozvoljeni upstream URL-ovi primaju metapodatke o ravnopravnim instancama; svi ostali pružaoci ostaju neizmijenjeni. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Maksimalan broj prethodno posjećenih OmniRoute instanci prihvaćenih u ulančanom zahtjevu (`1`-`32`). Ponovljene instance ili iscrpljen budžet vraćaju HTTP `508 Loop Detected`. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Port objavljen na strani hosta za kontrolnu ploču u Docker produkcijskom režimu. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Port objavljen na strani hosta za API u Docker produkcijskom režimu. | | `OMNIROUTE_PORT` | _(nije postavljeno)_ | `src/lib/runtime/ports.ts` | Ima prednost u odnosu na `PORT` kada se pokreće unutar Electron-a ili drugih omotača. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Port za WebSocket server za praćenje u stvarnom vremenu. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Adresa vezivanja za WebSocket server uživo. Postavite na `0.0.0.0` da biste ga izložili na LAN-u (također konfigurirajte `LIVE_WS_ALLOWED_ORIGINS`). | | `LIVE_WS_ALLOWED_ORIGINS` | _(nije postavljeno)_ | `src/server/ws/liveServer.ts` | Zarezima odvojena dodatna izvorišta kojima je dozvoljeno otvaranje WebSocket veze uživo. Izvorišta kontrolne ploče na povratnoj petlji već su podrazumijevano dozvoljena. | | `LIVE_WS_ALLOWED_HOSTS` | _(nije postavljeno)_ | `src/server/ws/liveServerAllowList.ts` | Zarezima odvojeni dodatni nazivi hostova dozvoljeni za izvorišta WebSocket veza uživo. Za razliku od `LIVE_WS_ALLOWED_ORIGINS` (puni URL-ovi izvorišta), podudara se samo dio s hostom — korisno za LAN/Tailscale postavke. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(nije postavljeno)_ | `src/hooks/useLiveDashboard.ts` | Javni URL za WebSocket kontrolne ploče uživo (na strani preglednika). Postavite ga kada se ispred WS servera koristi obrnuti proxy ili Cloudflare Tunnel (npr. `wss://ws.my-ai.com/live-ws`); preglednik se povezuje tamo umjesto na `ws://hostname:20132`. Dio s putanjom također se koristi kao putanja za WebSocket nadogradnju (zadano: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` i `scripts/start-ws-server.mjs` | Postavite na `0` ili `false` da biste onemogućili WebSocket server u stvarnom vremenu (podrazumijevano je omogućen i vezan za povratnu petlju). CI/harness prekidač koji onemogućava samostalnu pomoćnu skriptu za WebSocket uživo. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Ograničenje brzine releja po (tokenu, IP adresi), u zahtjevima po minuti. U memoriji, po instanci. `0` ili negativna vrijednost onemogućava ograničenje po IP dimenziji (ograničenje baze podataka po tokenu i dalje se primjenjuje). | | `NODE_ENV` | `production` | Jezgra Next.js-a | Kontroliše opširnost zapisivanja, keširanje, izlaganje detalja grešaka i optimizacije Next.js-a. | | `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — zadana vrijednost u kodu) | `package.json` / Next.js 16 | Turbopack je zadani alat za pakovanje za `npm run dev` i `npm run build` (2–3× brže izgradnje, potvrđeno mjerenjima performansi). Postavite na `0` da biste se vratili na webpack u Windowsu, kada naiđete na nekompatibilnosti s nativnim povezivanjem / alatom za pakovanje, **ili na računarima s ograničenim RAM-om** — poznato je da produkcijske izgradnje Turbopacka na ovoj liniji verzija Next.js-a (16.2.x) na velikim grafovima modula dostižu znatno veću vršnu potrošnju memorije od webpacka (Turbopackova ispravka za oslobađanje memorije iz Next 16.3 još nije stabilna); rezervna opcija s webpackom ima znatno nižu vršnu potrošnju. Pogledajte #6409. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(nije postavljeno)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Postavite na `1` da biste preskočili provjeru integriteta SQLite baze podataka pri pokretanju. Korisno za brže pokretanje s velikim bazama podataka. | | `NOTIFY_SOCKET` | _(nije postavljeno)_ | systemd (protokol sd_notify) | Postavlja ga systemd kada se proces izvršava u okviru servisne jedinice s integracijom sd_notify; OmniRoute ga čita (pogledajte `OMNIROUTE_DISABLE_SD_NOTIFY`) radi slanja obavijesti READY/WATCHDOG. Korisnik ga nikada ne postavlja. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(nije postavljeno)_ | `scripts/dev/systemd-notify.mjs` | Postavite na `1` da biste onemogućili systemd sd_notify (Type=notify / WatchdogSec=), čak i kada se izvršava u okviru systemd jedinice. Obavještavač ne obavlja nikakvu radnju izvan systemd-a bez obzira na ovu postavku. | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Interval (ms) za pozadinski planer provjere ispravnosti vjerodajnica. Minimum: 10000 (10 s). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | TTL (ms) za keširani status ispravnosti vjerodajnica. | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Postavite na `1` ili `true` da biste onemogućili periodično pozadinsko testiranje veza s pružaocima usluga. Pružaoci pretrage (SEARCH_VALIDATOR_CONFIGS u `src/lib/providers/validation/searchProviders.ts`, npr. `tavily-search`) uvijek su isključeni iz provjere — njihova „validacija” je stvarni naplativi upit prema vanjskoj usluzi, pa se njihova ispravnost nikada ne provjerava prema vremenskom rasporedu (#9970). | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Adresa povezivanja za razvojni/pokretački server Next.js-a. Kada je postavljena, zamjenjuje zadanu vrijednost `0.0.0.0`. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Adresa povezivanja koju koristi Playwright pokretač prilikom pokretanja Next.js-a. Zadana vrijednost je `127.0.0.1` radi hermetičkih testova. **Nemojte koristiti za `omniroute serve`** — umjesto toga koristite `OMNIROUTE_SERVER_HOST` (POSIX ljuske automatski postavljaju `HOSTNAME` na naziv računara; `.env` ga ne može zamijeniti). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | Adresa povezivanja za `omniroute serve`. Izbjegava koliziju s varijablom `HOSTNAME` POSIX ljuske (koju bash/zsh uvijek postavlja na naziv računara). Ako nije postavljena, koristi se `0.0.0.0`. (#6194) | ### Načini rada portova ``` ┌────────────────────────── Jedan port (zadano) ─────────────────────────────┐ │ PORT=20128 │ │ → Kontrolna 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 │ │ → Kontrolna ploča: http://localhost:20128 │ │ → API: http://0.0.0.0:20129/v1/chat/completions │ │ Primjena: Izložite API LAN-u, a pristup kontrolnoj ploči ograničite na │ │ localhost. │ └─────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────── Docker produkcija ─────────────────────────────────┐ │ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │ │ → Mapira portove kontejnera na portove domaćina u docker-compose.prod.yml.│ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 4. Sigurnost i autentifikacija | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Salt koji se kombinuje s hardverskim identifikatorima radi izrade otiska uređaja. Promijenite ga za svaku implementaciju radi izolacije. | | `OMNIROUTE_CLI_SALT` | _(nije postavljeno = nasumični salt za svaku instalaciju, sačuvan u `/cli-token-salt.json`)_ | `src/lib/machineToken.ts` | HMAC salt za izvođenje lokalnog CLI tokena za autentifikaciju. Postavljanje ove vrijednosti rotira sve CLI tokene na uređaju i uvijek ima prioritet nad sačuvanim saltom. Pogledajte `docs/security/CLI_TOKEN.md`. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Postavlja oznaku `Secure` na kolačićima sesije. **Mora biti `true`** kada se koristi iza HTTPS-a. | | `REQUIRE_API_KEY` | `false` | API međusloj | Kada je `true`, svi `/v1/*` proxy zahtjevi moraju sadržavati važeći API ključ. **Ova oznaka ne kontroliše `GET /v1/models`**, koji umjesto toga slijedi postavku prijave kontrolne ploče (`requireAuthForModels`) — stoga `401` od `/v1/models` NE znači da je izvođenje zaključivanja zaštićeno. Pogledajte `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Omogućava prikazivanje punih vrijednosti API ključeva u korisničkom interfejsu kontrolne ploče. Može se konfigurirati putem oznaka funkcionalnosti na kontrolnoj ploči; predstavlja 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 evidentiranje zahtjeva (usklađenost s GDPR-om). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(nije postavljeno = neograničeno)_ | `src/shared/utils/apiKeyPolicy.ts` | Rezervni dnevni budžet zahtjeva koji se primjenjuje na API ključeve čija je kolona `rate_limits` null. Nije postavljeno ili je prazno: nema implicitnog ograničenja (#2289, #11017). `0` ima isto značenje (neograničeno). Pozitivan cijeli broj N omogućava N/dan, 5N/sedmica, 20N/mjesec. Neispravne vrijednosti koje nisu prazne vraćaju se na naslijeđene intervale od 1000/dan, 5000/sedmica i 20000/mjesec. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | Maksimalna dozvoljena veličina tijela zahtjeva. Odbacuje korisne podatke koji premašuju ovo ograničenje. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Stvarna tijela zahtjeva koja dosežu ili premašuju ovaj prag preuzimaju atomsku procesno-lokalnu dozvolu za zahtjevno opterećenje prije parsiranja JSON-a (BYTE putanja, uključujući `POST /v1/responses`). Isti mehanizam izbjegavanja pri dovoljnom raspoloživom kapacitetu iz [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) kao za strukturno zahtjevne zahtjeve; i dalje je ograničen putem `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 ponovi. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Strogo ograničenje chat rute koje se primjenjuje na bajtove pročitane tokom ograničenog učitavanja, uključujući zahtjeve bez zaglavlja `Content-Length` te s nevažećim ili lažnim zaglavljem `Content-Length`; prekoračenje dobija odgovor `413`. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(nije postavljeno — nema ograničenja broja zahtjeva)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** ovo naslijeđeno ograničenje BROJA zahtjeva sada se primjenjuje samo kada je izričito postavljeno. Kada nije postavljeno (zadano), prihvat zahtjevnih chat zahtjeva umjesto toga ograničava `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — automatski izveden BAJTOVNI budžet dimenzioniran prema stvarnom memorijskom ograničenju procesa u **jednom procesu** (jedna V8 hrpa). Dva preklapajuća `/v1/responses` zahtjeva od približno 750.000 tokena ruše hrpe od približno 12 GiB (#7849) — to je upozorenje o **memorijskom budžetu**, a ne strogi maksimalni broj od 2 za proizvod. Zdrav proces (hrpa ispod omjera rasterećenja) MOŽE prihvatiti više istovremenih dugih `/v1/responses` putem `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM`. Deseci dugih SSE klijenata (40–50) zavise od hrpe + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110, a ne od „najviše 2“. Slijepo povećavanje ove vrijednosti radi „korištenja hosta“ ponovo uvodi #7849. Umnožavajte **hrpe** pomoću **N nezavisnih `DATA_DIR` direktorija** (#11024); nikada nemojte koristiti `replicas>1` nad jednom SQLite datotekom. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(automatski izvedeno)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** nadjačavanje automatski izvedenog bajtovnog budžeta učitavanja (25% strožeg V8/cgroup memorijskog ograničenja podijeljeno s 8x prolaznim uvećanjem). Izvedene i eksplicitne vrijednosti ograničavaju se na 8 MiB–2 GiB. Tijelo veće od efektivnog budžeta odmah dobija grešku `413 body_exceeds_budget`; nadmetanje između tijela koja se pojedinačno mogu obraditi i dalje daje ponovljivu grešku `503`. 40–50 istovremenih dugih SSE klijenata zavisi od ovog budžeta + hrpe, a ne od strogog ograničenja „najviše 2“. Prije podešavanja provjerite `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` na `/api/monitoring/health`. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | Omjer rasterećenja uslijed pritiska na hrpu (`heapUsed / heap_size_limit`) za prihvat zahtjevnih zahtjeva prema BAJTOVIMA i STRUKTURI (#10183, #10268, #10437). Istovremeni zahtjevni zahtjev koji prekoračuje `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` odbacuje se s ponovljivom greškom `503` samo kada je hrpa TAKOĐER na ovom omjeru ili iznad njega; uz zdravu hrpu prihvata se putem dodatnog kapaciteta zdrave hrpe. | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (zadano `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Ograničeni dodatni kapacitet za brzu putanju zdrave hrpe (#10437) i za STRUKTURU i za BAJTOVE (`admitChatRequest`, uključujući tijela ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). Bez ovog ograničenja svaki zahtjev pri zauzetom, ali zdravom stanju hrpe zaobilazio je kontrolu prihvata bez gornje granice. Kada ovoliko istovremenih zakupa postane aktivno putem putanje zdrave hrpe, daljnji zahtjevi pri zauzetom stanju prelaze na ISTU putanju ograničenog čekanja/rasterećenja koja se koristi pri stvarnom pritisku na hrpu. `0` potpuno onemogućava zaobilaženje. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Broj poruka pri kojem se chat zahtjev klasificira kao zahtjevan čak i kada je njegovo tijelo ispod bajtovnog praga. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Broj alata pri kojem se chat zahtjev klasificira kao zahtjevan čak i kada je njegovo tijelo ispod bajtovnog praga. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Konzervativna procjena broja tokena na osnovu veličine niza koja zahtjev klasificira kao zahtjevan; ovo je zamjenska vrijednost za trošak prihvata, a ne tokenizacija za obračun pružaoca usluge. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (onemogućeno) | `src/shared/middleware/chatBodyAdmission.ts` | Opcionalno ograničenje historije chata koje se mora izričito uključiti. Zadano je onemogućeno: broj poruka je politika implementacije, a ne univerzalno svojstvo zahtjeva, a ograničavanje na ovom mjestu odbacuje razgovore konačnom greškom `413` prije nego što ih cjevovod kompresije može učiniti obradivim. Rast hrpe ograničen je putem `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` i rasterećenjem uslijed pritiska na hrpu. Postavite pozitivnu vrijednost u implementacijama s ograničenom memorijom kojima je potrebna stroga gornja granica; prekoračenje tada dobija strukturiranu grešku `413` koja zahtijeva sažimanje. | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Strogo ograničenje za odgovor uzvodnog sistema bez streaminga koji se u cijelosti pohranjuje u memoriju. Nakon prekoračenja čitač uzvodnog odgovora se otkazuje i zahtjev brzo završava neuspjehom umjesto da neograničeni niz raste sve dok se hrpa ne iscrpi. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Maksimalan broj bajtova na mreži proslijeđenih iz zaglavlja odgovora nadređenog servisa. Kada se budžet prekorač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 veću vrijednost za prosljeđivanje više metapodataka nadređenog servisa po cijenu većeg zaglavlja odgovora. | | `CORS_ORIGIN` | _(nije postavljeno)_ | `src/server/cors/origins.ts` | Zastarjela CORS lista dozvoljenih izvora s jednim izvorom. Za nova postavljanja preferirajte `CORS_ALLOWED_ORIGINS`. CORS služi samo za višeizvorne klijente API-ja u pregledniku; autentificirani upisi kontrolne ploče umjesto toga koriste zahtjeve istog izvora uz CSRF zaštitu vezanu za sesiju. | | `CORS_ALLOWED_ORIGINS` | _(nije postavljeno)_ | `src/server/cors/origins.ts` | CORS lista dozvoljenih izvora odvojenih zarezima. Zamjenski znak se ne šalje osim ako je izričito konfigurirano `CORS_ALLOW_ALL=true`. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Izlaz u nuždi, namijenjen samo za razvoj, koji vraća bilo koji `Origin` preglednika. Nemojte ga omogućavati na dijeljenim ili produkcijskim postavljanjima. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuard.ts` | Blokira pozive pružatelja usmjerene na privatne/povratne/link-local raspone IP adresa. Onemogućite samo u izoliranim testnim okruženjima. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuard.ts` | Dozvoljava URL-ove pružatelja koji upućuju na privatne/lokalne mreže (localhost, 192.168.x.x, 10.x.x.x itd.). **OBAVEZNO za samostalno hostovane pružatelje** (LM Studio, Ollama, vLLM, Llamafile, Triton, SearXNG). Kada je postavljeno na `false`, kontrolna ploča odbija validaciju lokalnih URL-ova. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuard.ts` | Dozvoljava dodavanje/validaciju pružatelja na lokalnim/privatnim adresama (127.0.0.1, localhost, LAN, privatni rasponi) — ograničeno na putanju validacije pružatelja. **Zadana vrijednost je `true`** (lokalno na prvom mjestu); postavite na `false` radi nametanja strogog blokiranja svega osim javnih adresa. Krajnje tačke metapodataka u oblaku (169.254.169.254, metadata.google.internal) ostaju blokirane bez obzira na postavku. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | Dozvoljava rutama `/v1/audio/*` (transkripcije, govor, prijevodi) da koriste čvor pružatelja kompatibilan s OpenAI-jem koji je hostovan izvan localhosta. Zadano je isključeno — usmjeravanje zvuka na udaljeni host mijenja identitet izlaznog saobraćaja i mora biti izričita odluka operatera. Povratni/privatni čvorovi (localhost, 127.0.0.1, 172.16-31.x) uvijek su dozvoljeni i ova postavka na njih ne utiče. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | Dozvoljava da `POST /v1/rerank` (i korak ponovnog rangiranja preko povratne veze memorijskog mehanizma) koristi čvor pružatelja kompatibilan s OpenAI-jem koji je hostovan izvan localhosta — uređaj na LAN-u ili Tailscale ravnopravni čvor na kojem se izvršava TEI, Infinity, vLLM itd. Zadano je isključeno — usmjeravanje na udaljeni host mijenja identitet izlaznog saobraćaja i mora biti izričita odluka operatera. Čvorovi povratne veze (localhost, 127.0.0.1, 172.16-31.x) uvijek su dozvoljeni i ova postavka na njih ne utiče. Udaljeni čvorovi također moraju proći pravila za izlazne URL-ove pružatelja (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`); saobraćaj se nikada ne usmjerava prema hostovima metapodataka u oblaku. | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Kada je OIDC omogućen, onemogućava prijavu lozinkom kako bi se korisnici mogli autentificirati samo putem OIDC jedinstvene prijave. Prihvaća se i osnovni pseudonim `OIDC_DISABLE_PASSWORD_LOGIN`; zastavica funkcionalnosti kontrolne ploče s istim ključem ima prednost. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Osnovni pseudonim za `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889). | ### Kontrolna lista za sigurnosno ojačavanje ```bash # Minimalni sigurnosni zahtjevi za produkciju: AUTH_COOKIE_SECURE=true # Zahtijeva HTTPS REQUIRE_API_KEY=true # Autentificira sve proxy pozive ALLOW_API_KEY_REVEAL=false # Nikada ne izlaže ključeve u korisničkom interfejsu CORS_ALLOWED_ORIGINS=https://your.domain.com MAX_BODY_SIZE_BYTES=5242880 # Ograničenje od 5 MB ``` --- ## 5. Sanitizacija unosa i zaštita ličnih podataka OmniRoute pruža dvoslojnu zaštitu: skeniranje zahtjeva radi otkrivanja ubacivanja prompta i uklanjanje ličnih podataka iz odgovora. > **⚠️ Ograničenja:** Ove zaštitne mjere predstavljaju _heurističko otkrivanje po principu najboljeg mogućeg pokušaja_, a ne potpuni vatrozid protiv ubacivanja prompta niti DLP sistem za lične podatke. Mogu proizvesti lažno pozitivne rezultate (označavanje bezopasnih promptova za persone/RPG) i lažno negativne rezultate (leetspeak, razmaci, obrasci koji nisu na engleskom jeziku). Same po sebi nisu dovoljne za usklađenost s propisima. Prilagodite načine rada i testirajte ih na svom saobraćaju prije nego što se oslonite na njih. ### Strana zahtjeva: zaštita od ubacivanja prompta | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | --------------------------------- | -------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Omogućava skeniranje dolaznih poruka radi otkrivanja obrazaca ubacivanja prompta. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Pravilo za ubacivanje: `warn` = samo evidentiranje, `block` = odbijanje zahtjeva sa statusom 400. Naslijeđeni način `redact` **ne** uklanja tekst ubacivanja; koristite `PII_REDACTION_ENABLED` za izmjenu ličnih podataka u zahtjevu. | | `INJECTION_GUARD_MODE` | _(nije postavljeno)_ | `src/middleware/promptInjectionGuard.ts` | Naslijeđeni alias za `INPUT_SANITIZER_MODE` — isto ponašanje. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | Najniži nivo ozbiljnosti koji `MODE=block` odbija: `high` (zadano), `medium` ili `low`. Obrasci srednje ozbiljnosti služe samo za praćenje, osim ako se prag ne snizi. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(nije postavljeno)_ | `src/shared/utils/injectionSeverity.ts` | Naslijeđeni alias za `INPUT_SANITIZER_BLOCK_THRESHOLD` — isto ponašanje. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | Kada je postavljeno na `true`, rediguje lične podatke u dolaznim zahtjevima (nezavisno od načina rada za ubacivanje). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | Rediguje poznate obrasce API ključeva / tajnih tokena iz sadržaja zahtjeva i odgovora. Opcionalno; odražava ponašanje `PII_REDACTION_ENABLED`. | ### Strana odgovora: sanitizator ličnih podataka | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | -------------------------------- | ----------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Skenira odgovore LLM-a radi otkrivanja otkrivenih ličnih podataka prije vraćanja klijentu. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = maskiranje ličnih podataka, `warn` = samo evidentiranje, `block` = odbacivanje cijelog odgovora. | ### Sanitizator konteksta tokenizirane rute za VS Code | Varijabla | Zadana vrijednost | 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 rediguje sadržaj eksplicitno priloženih osjetljivih datoteka. Sigurno prema zadanim postavkama; postavite na `0` da biste onemogućili. | ### Scenariji | Scenarij | Konfiguracija | | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Usklađenost za preduzeća** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (blokiranje ubacivanja + redigovanje ličnih podataka u zahtjevima/odgovorima; načini rada su nezavisni) | | **Samo praćenje** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — evidentira, ali nikada ne blokira | | **Lična upotreba** | Ostavite sve onemogućeno — bez dodatnog opterećenja | --- ## 6. Pravila alata i usmjeravanja | Varijabla | Zadano | Izvorna datoteka | Opis | | ----------------------------------------------------------- | ------------------------------------ | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | Kontroliše pristup LLM-a alatima i pozivima 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 izmjenu korisnog sadržaja (prilagodbe uzvodnih servisa po modelu/protokolu). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Interval ponovnog učitavanja (ms) za automatsko ponovno učitavanje datoteke s pravilima korisnog sadržaja. Minimalno `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Opcionalna postavka: usmjerava ID-ove modela `claude-*` bez prefiksa iz Claude Code klijenata kroz Claude Code OAuth račun, umjesto da zahtijeva prefiks pružaoca. Eksplicitni prefiksi pružaoca i dalje imaju prednost. Može se konfigurirati i putem prekidača na kontrolnoj ploči, na stranici pružaoca Claude. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Ograničenje istovremenih operacija po modelu za round-robin kombinacije (#9100). Semafor round-robin kombinacije imao je fiksno ograničenje od 3 istovremena zahtjeva po modelu bez mogućnosti promjene, zbog čega se saobraćaj s većom istovremenošću serijalizirao iza tog ograničenja. Provjerava se da je vrijednost `>= 1`, a ograničava na `<= 32`. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Opasna opcionalna postavka koja preskače OmniRouteovu lokalnu provjeru kontekstnog prozora / maksimalnog broja ulaznih tokena za direktne zahtjeve prema jednom modelu. Uzvodni pružaoci i dalje primjenjuju svoja stvarna ograničenja; kompresija upita i vlastito ograničenje izlaznih tokena modela ostaju aktivni. Redoslijed prioriteta je zamjenska vrijednost baze podataka Feature Flags > varijabla okruženja > zadana vrijednost; 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` se preusmjerava na objedinjenu, samostalno hostovanu ulaznu tačku kompatibilnu s OpenAI-em, umjesto na infrastrukturu u oblaku. Kada nije postavljen (zadano), ruta se prosljeđuje direktno postojećoj infrastrukturi u oblaku. Pogledajte `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 dokument `providers:` kao `OMNIROUTE_SELF_HOSTED_PROVIDERS`, za implementacije koje preferiraju datoteku umjesto umetnute varijable okruženja. Bilo koja od njih aktivira samostalno hostovanu ulaznu tačku. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _(nije postavljeno — otvorena ruta)_ | `open-sse/services/selfHostedEntry.ts` | Opcionalni zajednički API ključ za objedinjenu, samostalno hostovanu ulaznu tačku (D5 osnova, rezervisana za sistem kvota po ključu). Kada je postavljen, zahtjevi moraju uključivati `Authorization: Bearer `. Kada nije postavljen, ruta je otvorena, što odgovara postojećem obrascu samostalno hostovanog lokalnog pružaoca (implementacija na povratnoj petlji/pouzdanoj mreži). | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(nije postavljeno)_ | `open-sse/services/routingStrategies.ts` | Umetnuti YAML dokument `strategy:` za deterministički mehanizam usmjeravanja (M2/RIC-740, D3) — crna/bijela lista, prekidač s periodom mirovanja, prioritet troškova, uzimanje latencije u obzir i lanac rezervnih opcija. Nadjačava umetnuti blok `strategy:` ugniježđen unutar `OMNIROUTE_SELF_HOSTED_PROVIDERS`, za svaki ključ pojedinačno. Pogledajte `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 dokument `strategy:` kao `OMNIROUTE_SELF_HOSTED_STRATEGY`, za implementacije koje preferiraju datoteku umjesto umetnute varijable okruženja. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(nije postavljeno)_ | `open-sse/services/conversationTracker.ts` | Postavite na `1` da biste zaustavili prikupljanje historije razgovora. `resolveConversationId()` vraća rezultat koji se ne prati prije nego što pročita SQLite ili raščlani historiju poruka, a obuhvaćeni su i ID-jevi sesija koje je dostavio klijent. Obrada sesija usmjeravanja ostaje nepromijenjena, a postojeći zapisi se ne brišu. Namijenjeno implementacijama koje ne koriste prikaz razgovora na kontrolnoj ploči i žele zaustaviti rast tabele interakcija. | --- ## 7. URL-ovi i sinhronizacija s oblakom | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | Serverski URL koji interni poslovi sinhronizacije koriste za pozivanje `/api/sync/cloud`. Zadržite ga kao URL povratne petlje/kontejnera čak i kada je aplikacija javno dostupna putem proxyja. | | `CLOUD_URL` | _(prazno)_ | `src/lib/cloudSync.ts` | URL krajnje tačke releja u oblaku (premium funkcionalnost). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | HTTP vremensko ograničenje za zahtjeve sinhronizacije s oblakom. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Webpack konfiguracija izgradnje | Profil u vrijeme izgradnje (postavite na `minimal` kako biste fizički isključili privilegovane module iz paketa). | | `OMNIROUTE_STANDALONE_DIR` | _.build/ samostalni izlaz_ | `scripts/build/colocate-standalone.mjs` | Zamjenska vrijednost direktorija samostalnog izlaza u vrijeme izgradnje koju koristi korak kolokacije nakon izgradnje. Nije postavka vremena izvođenja. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(prazno)_ | `src/lib/cloudSync.ts` | Dijeljena tajna koja se koristi za provjeru HMAC-SHA256 potpisa odgovora sinhronizacije s oblakom. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Postavite na `true` kako biste krajnjoj tački sinhronizacije s oblakom omogućili prepisivanje lokalnih pristupnih podataka. Zadana vrijednost je `false`. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Postavite na `true` kako biste odbili nepotpisani odgovor sinhronizacije s oblakom kada lokalna tajna nije konfigurirana (#13679). Prisutni potpis uvijek se provjerava — i uvijek odbija kada `OMNIROUTE_CLOUD_SYNC_SECRET` nije postavljen — bez obzira na ovu zastavicu. Od v3.9 zadano je obavezno. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | Postavite na `true` kako biste se vratili na ponašanje „uvezi sve” u jednom koraku iz v3.8.5, bez potvrde korisnika. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, nadzorna ploča, sinhronizacija | Javno dostupan URL za OAuth redirect_uri, veze nadzorne ploče i generirane javne URL-ove. Postavite ga na stabilni javni URL kada OAuth povratni pozivi ili generirane veze preglednika moraju koristiti kanonski host obrnutog proxyja. | | `NEXT_PUBLIC_CLOUD_URL` | _(prazno)_ | Klijentska strana | Klijentska kopija varijable `CLOUD_URL`. | | `NEXT_PUBLIC_APP_URL` | _(nije postavljeno)_ | `src/shared/services/cloudSyncScheduler.ts` | Zastarjela rezervna opcija za `NEXT_PUBLIC_BASE_URL`. | | `NEXT_PUBLIC_PORT` | _(nije postavljeno — koristi `PORT` kao rezervnu opciju)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Rezervni port na strani klijenta za prikaz URL-ova kada porijeklo nije poznato (SSR/testovi); očitava se prije `PORT`. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(nije postavljeno)_ | Razrješivač javnog porijekla, URL-ovi slika | OmniRoute porijeklo namijenjeno pregledniku s najvišim prioritetom, koje se koristi za generisanje javnih URL-ova i provjeru porijekla preglednika izvan kontrolne ploče. Postavite ovo kada OpenWebUI ili neki drugi posrednik pristupa OmniRouteu putem internog URL-a, ali korisnikov preglednik mora preuzimati generisane medije putem LAN-a, tunela ili javnog porijekla. **Nemojte** uključivati `/v1`. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(nije postavljeno)_ | `open-sse/config/providerPluginManifestUrl.ts` | Apsolutni URL manifesta dodatka pružaoca koji se oglašava sidecar klijentima. Kada nije postavljen, OmniRoute izvodi `/api/v1/provider-plugin-manifest` iz porijekla zahtjeva ili HOST/PORT. | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Protokol koji se koristi pri izvođenju URL-a manifesta dodatka pružaoca iz HOST/PORT bez porijekla zahtjeva. Postavite na `https` iza javnog proxyja koji završava TLS kada eksplicitni `OMNIROUTE_PROVIDER_MANIFEST_URL` nije postavljen. | | `OMNIROUTE_TRUST_PROXY` | _(nije postavljeno)_ | `src/server/origin/publicOrigin.ts` | Opcionalni režim povjerenja za proslijeđena zaglavlja javnog porijekla. Nije postavljeno = nemojte vjerovati zaglavljima `Forwarded` / `X-Forwarded-*` pri donošenju sigurnosnih odluka. `true` / `loopback` vjeruje proslijeđenom hostu/protokolu samo od loopback proxyja označenog tokenom. `private` / `lan` također vjeruje proxy ravnopravnim uređajima na privatnom LAN-u. U produkciji dajte prednost eksplicitnom `NEXT_PUBLIC_BASE_URL`. | | `KIE_CALLBACK_URL` | _(nije postavljeno)_ | `open-sse/utils/kieTask.ts` | Javni URL povratnog poziva za asinhrone kie.ai zadatke. 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 zapis za `KIE_CALLBACK_URL`. Koristi se kao rezervna opcija kada primarna varijabla nije postavljena. | | `OMNIROUTE_PUBLIC_URL` | _(nije postavljeno)_ | `open-sse/utils/kieTask.ts` | Javno porijeklo koje se koristi za sastavljanje URL-ova asinhronih povratnih poziva. Rezervna opcija s najnižim prioritetom za kie.ai povratne pozive; također se koristi kao generički javni URL za druge posrednike. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Krajnja tačka za dohvaćanje CrofAI kvote koju koristi stranica Usage. Nadjačajte za posrednike / testne fixture podatke. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Zvanična OpenCode Go krajnja tačka za korištenje, autentificirana API ključem, koju koristi stranica Usage. Nadjačajte za posrednike / testne fixture 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) za opencode-go/zen upstream zahtjeve koje klijent nije poslao, kako bi ih Cloudflare prihvatio pri izlazu s VPS-a (#6210/#5997). Podrazumijevano je uključeno od #10571; isključite pomoću `false`/`0`/`no`/`off`. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | Podrazumijevani User-Agent koji se koristi kada je `OPENCODE_SYNTHESIZE_CLI_HEADERS` uključen i nije postavljeno nadjačavanje `_USER_AGENT` za pojedinačnog pružaoca. Primjenjuje se samo na opencode izvršioce. Kod zahtjeva bez ključa koji upstream ograničava, konfigurirana vrijednost koja ne sadrži `opencode/= 1.17>` zamjenjuje se ovom podrazumijevanom vrijednošću umjesto da bude odbijena. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | Vrijednost za sintetizirano `x-opencode-client` zaglavlje kada je `OPENCODE_SYNTHESIZE_CLI_HEADERS` uključen. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | Vrijednost za sintetizirano `x-opencode-project` zaglavlje kada je `OPENCODE_SYNTHESIZE_CLI_HEADERS` uključen. | | `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 streaminga i lista alata). Zaglavlja se i dalje primjenjuju. Čita se pri svakom zahtjevu, pa promjena stupa na snagu odmah. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(nije postavljeno)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Nazivi alata odvojeni zarezima koji se navode 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 se modelu kaže da ga ne poziva. Najviše 32 unosa, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; nevažeći unosi se zanemaruju. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | URL postavki za Ollama Cloud koji se koristi za izdvajanje podataka o kvoti. Nadjačajte za posredničke servise / testne podatke. | | `OLLAMA_USAGE_COOKIE` | _(nije postavljeno)_ | `open-sse/services/usage.ts` | Ollama Cloud kolačić `__Secure-session` koji se koristi za izdvajanje podataka o kvoti sa stranice postavki. Osjetljiv podatak; kada je konfigurirano više računa, prednost dajte polju za pojedinačnu vezu na kontrolnoj ploči. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(nije postavljeno)_ | `open-sse/services/usage.ts` | Alternativna varijabla okruženja za Ollama Cloud kolačić `__Secure-session`. Osjetljiv podatak; kada je konfigurirano više računa, prednost dajte polju za pojedinačnu vezu na kontrolnoj ploči. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(nije postavljeno)_ | `open-sse/services/usage.ts` | Alternativna varijabla okruženja za Ollama Cloud kolačić `__Secure-session` koja se koristi prije kraćih pseudonima. Osjetljiv podatak; kada je konfigurirano više računa, prednost dajte polju za pojedinačnu vezu na kontrolnoj ploči. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | Krajnja tačka ograničenja korištenja za CodeWhisperer (AWS Kiro). Nadjačajte za posredničke servise / testne podatke. | > [!IMPORTANT] > Prilikom implementacije 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 generirani javni linkovi moraju koristiti taj naziv hosta. Bez toga OAuth povratni pozivi mogu biti neuspješni jer se redirect_uri neće podudarati, a generirani javni linkovi mogu upućivati na interno porijeklo kontejnera. > > Zadržite `BASE_URL` kao internu povratnu/kontejnersku URL adresu za poslove između servera. Nemojte koristiti preglednikov `Origin` ili javni naziv hosta za interne samostalne zahtjeve koji sadrže vjerodajnice. > > Autentificirani upisi kontrolne ploče ne zahtijevaju statički javni osnovni URL: kontrolna ploča šalje nesigurne zahtjeve istog porijekla sa CSRF tokenom vezanim za sesiju. OmniRoute i dalje centralizira provjeru javnog porijekla za integracije preglednika koje nisu dio kontrolne ploče: eksplicitne varijable okruženja javnog URL-a smatraju se pouzdanim prvenstveno; neobrađena zaglavlja `Forwarded` / `X-Forwarded-*` zanemaruju se osim ako je `OMNIROUTE_TRUST_PROXY` omogućen i neposredni proxy posrednik označen tokenom kao pouzdan. Nemojte koristiti CORS postavke za ispravljanje zahtjeva kontrolne ploče istog porijekla; CORS služi samo za klijente preglednika različitog porijekla. --- ## 8. Izlazni proxy Usmjerite pozive prema uzvodnom LLM pružaocu usluga kroz HTTP ili SOCKS5 proxy radi kontrole izlaznog saobraćaja, geografskog usmjeravanja ili maskiranja IP adrese. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------------------- | -------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Omogućava SOCKS5 proxy agenta za uzvodne pozive. Isključite pomoću `false`. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Na strani klijenta | Obaviještenost klijentske strane o dostupnosti SOCKS5 proxyja. | | `PROXY_SKIP_RECENTLY_FAILED` | `false` | `src/shared/utils/featureFlags.ts` | Opcionalna zastavica funkcionalnosti (pogledajte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadjačavanje iz baze podataka kontrolne ploče ima prednost). Grupe proxyja i rotacija po računu prestaju ponovo dodjeljivati člana koji je upravo bio neuspješan (odbijena TCP provjera ili odgovor 429 preko njega) tokom perioda koji se udvostručuje pri svakom ponavljanju, do zadane granice. Vrijednost `true` (ili `1`, `yes`) je omogućava. | | `HTTP_PROXY` | _(nije postavljeno)_ | Node.js standard | HTTP proxy za uzvodne pozive. | | `HTTPS_PROXY` | _(nije postavljeno)_ | Node.js standard | HTTPS proxy za uzvodne pozive. | | `ALL_PROXY` | _(nije postavljeno)_ | Node.js standard | Univerzalni proxy (podržava `socks5://`). | | `OMNIROUTE_PROXY_ECHO_URL` | _(nije postavljeno)_ | `src/lib/proxyEchoTarget.ts` | Vezuje cilj za provjeru povratne IP adrese koji se koristi u provjerama izlaznog saobraćaja proxyja za jedan URL. Ako nije postavljeno, provjera pokušava `api64.ipify.org`, a zatim `api4.ipify.org`, kako tuneli koji podržavaju samo IPv4 ne bi bili prijavljeni kao nedostupni (#9694). | | `NO_PROXY` | _(nije postavljeno)_ | Node.js standard | Nazivi hostova/IP adrese odvojeni zarezima za zaobilaženje proxyja. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Maksimalan broj istovremenih socket veza po keširanom dispečeru HTTP/SOCKS proxyja. Dugotrajni SSE tokovi kao što je Codex `/v1/responses` zahtijevaju više od jedne veze kada više zahtjeva dijeli isti proxy na nivou računa. Vrijednosti iznad `256` ograničavaju se na `256`. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | Vremensko ograničenje SOCKS5 uspostavljanja veze (povezivanja) u ms. Povećajte ga kada je jedan host rezidencijalnog pristupnika izložen visokom nivou istovremenih zahtjeva (npr. 100 istovremenih zahtjeva) — stvarno uspostavljanje veze može trajati duže od 10 s pod opterećenom grupom iako je proxy dostupan, što bi se inače prikazalo kao lažna poruka `[Proxy Fast-Fail] Proxy unreachable`. Ograničeno je na `120000`. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | Kada je postavljeno na `false` (zadano), zahtjev čiji se dodijeljeni proxy ne može razriješiti biva **odbijen (fail-closed)** umjesto da se vrati na direktnu vezu — time se sprječava curenje stvarne IP adrese. Postavite na `true` da biste vratili prethodno ponašanje rezervnog DIREKTNOG povezivanja. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | Lažira TLS otisak koristeći wreq-js (oponaša Chrome 124). Sprječava JA3/JA4 blokiranje. | | `TLS_FINGERPRINT_PROVIDERS` | _(nije postavljeno)_ | `open-sse/utils/proxyFetch.ts` | Lista dozvoljenih pružalaca usluga, odvojenih zarezima, za novo posredovano TLS usmjeravanje (`open-sse/utils/proxyFetch.ts`). Direktni TLS zadržava svoje prethodno ponašanje kada vrijednost nije postavljena; samo se ovi pružaoci usluga usmjeravaju kroz most za otisak Chromea 124. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Omogućava kontekstu preglednika Claude Turnstile Playwright da ignorira greške HTTPS 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 uzimanja otiska** | `ENABLE_TLS_FINGERPRINT=true` — zahtijeva `wreq-js` (uključen) | | **Kontrolirani izlaz / bez direktnog pristupa** | Ostavite `PROXY_FAIL_OPEN=false` (zadano). Zahtjevi se obustavljaju uz grešku kada proxy nije dostupan, umjesto da se promet propusti direktnim putem. | | **Naslijeđeni način / razvoj — dozvoli direktni rezervni pristup** | `PROXY_FAIL_OPEN=true`. Vraća ponašanje prije sigurnosnog ojačavanja: direktna veza koristi se kada razrješavanje proxyja ne uspije. | > **Napomena (zaobilaženje NVIDIA validacije — #3226):** NVIDIA krajnja tačka za validaciju API ključa > prestaje odgovarati kada se usmjerava kroz globalni proxy/TLS-prilagođeni fetch (undici dispatcher → 504). > `src/lib/providers/validation.ts::directHttpsRequest()` namjerno zaobilazi > prilagodbu proxyja za taj jedan validacijski poziv koristeći `safeOutboundFetch({ bypassProxyPatch: true })`. > Ovo je dokumentiran, ograničen izuzetak — **ne** utječe na izlazni promet za razgovore/korištenje. > Opseg zaobilaženja je fiksiran testom `tests/unit/proxy-bypass-scope-guard-3226.test.ts`. --- ## 9. Integracija CLI alata Kontroliše kako OmniRoute otkriva i pokreće CLI pomoćne procese (Claude Code, Codex itd.). | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | --------------------------------- | -------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = pretražuje sistemski PATH; `manual` = koristi samo eksplicitno navedene putanje. | | `CLI_EXTRA_PATHS` | _(nije postavljeno)_ | `src/shared/services/cliRuntime.ts` | Dodatne PATH stavke za pronalaženje CLI binarnih datoteka (razdvojene dvotačkom). | | `CLI_CONFIG_HOME` | _(nije postavljeno)_ | `src/shared/services/cliRuntime.ts` | Nadjačava početni direktorij za čitanje CLI konfiguracija (`~/.claude`, `~/.codex`). Mora biti apsolutna putanja unutar početnog direktorija procesa — **ili**, u kontejneru, putanja montirana pomoću bind opcije (tako funkcionira `/host-home`). Sve ostalo vraća se na početni direktorij. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | Omogućava OmniRouteu da zapisuje CLI konfiguracijske datoteke (obnavljanje tokena, podaci sesije). Postavite na `false` kako bi svaki pokušaj zapisivanja CLI konfiguracije završio neuspješno uz eksplicitnu grešku „zapisivanje je onemogućeno“. | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Claude CLI binarne datoteke. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Codex CLI binarne datoteke. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Droid CLI binarne datoteke. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do OpenClaw CLI binarne datoteke. | | `CLI_CURSOR_BIN` | `agent`, zatim `cursor` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Cursor agenta. Ako nije navedena, detekcija prvo pokušava s `agent`, a zatim prelazi na `cursor`. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Cline CLI binarne datoteke. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do 5dive CLI binarne datoteke. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | Sistemski direktorij stanja za 5dive (profili za autentifikaciju u vlasništvu root korisnika); odgovara zadanoj vrijednosti STATE_DIR samog alata 5dive. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Continue CLI binarne datoteke. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Qoder CLI binarne datoteke. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Qwen Code CLI binarne datoteke. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Aider CLI binarne datoteke. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Goose CLI binarne datoteke. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Google Gemini CLI binarne datoteke — samo za detekciju i provjere ispravnosti na strani servera; `omniroute run gemini` pronalazi binarnu datoteku `gemini` putem sistemskog PATH-a. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Kilo Code CLI binarne datoteke. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do OpenCode CLI binarne datoteke. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Hermes binarne datoteke. Zajednička je za obje stavke kataloga (`hermes` i `hermes-agent`). | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do ForgeCode CLI binarne datoteke. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do jcode CLI binarne datoteke. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do DeepSeek TUI binarne datoteke. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do CodeWhale CLI binarne datoteke. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Smelt CLI binarne datoteke. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Pi (pi-coding-agent) binarne datoteke. | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Crush CLI binarne datoteke. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do binarne datoteke Oh My Pi (`omp`) agenta. | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Prilagođena putanja do Letta CLI binarne datoteke. | | `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 Windsurf binarne datoteke. Windsurf se isporučuje **bez zadane naredbe** — otkrivanje binarne datoteke ostaje onemogućeno dok se ovo ne postavi. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Prilagođena putanja do Devin CLI binarne datoteke (v3.8.0). Koristi je Windsurf/Devin izvršilac. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin Desktop `ide_version`. Zamjenske vrijednosti moraju koristiti format `x.y.z`; nevažeće vrijednosti vraćaju se na provjerenu zadanu vrijednost. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | Ugrađeni Codeium/language-server `extension_version`, koji se razlikuje od Desktop `ide_version`. Zamjenske vrijednosti moraju koristiti `x.y.z`; za nevažeće vrijednosti koristi se ugrađena zadana vrijednost. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Zamjenska vrijednost za Devin CLI namijenjena isključivo agentnom mostu. Izvršilac prihvata samo lokalni ACP stdio nadređeni proces. | | `DEVIN_AGENTIC_HOME` | _(obavezno)_ | `open-sse/executors/devin-cli-agentic.ts` | Apsolutna izolirana početna lokacija za agentni Devin potproces; prihvaćene putanje mosta su `/home/bridge` i putanje `.sandbox` 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 ciklusa prije nego što most prekine podređeni proces i vrati eksplicitnu informaciju o isteku vremena. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Glavni pseudonim Claude Code modela za izolirani most. Aktivni testni okvir zamjenjuje primjer modelom koji vraća trenutni Devin račun. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Pseudonim izoliranog mosta koji se koristi kada Claude Code zatraži svoj zadani Sonnet model. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Pseudonim izoliranog mosta koji se koristi kada Claude Code zatraži svoj zadani Opus model. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Pseudonim izoliranog mosta koji se koristi kada Claude Code zatraži svoj zadani Haiku model. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Pseudonim izoliranog mosta koji se koristi za Claude Code podagente. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Opcionalno nadjačavanje Codeium API-ja za upravljanje licencama koji koristi Devin CLI kvota (`GetUserStatus`). | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Nadjačavanje apsolutne putanje do CLI binarne datoteke Augment (Auggie) koju koristi lokalni pružalac `auggie`. Ako nije postavljeno, koristi `CLI_AUGGIE_BIN`, a zatim pretragu u PATH-u. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Alternativno nadjačavanje putanje do CLI binarne datoteke Augment (Auggie) (provjerava se nakon `AUGGIE_BIN`). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Binarna datoteka koja se koristi za stdio klijent lokalnog pružaoca `zcode`. Ako nije postavljeno, koristi `zcode` iz PATH-a. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | JSON niz (≤16 nizova znakova) dodatnih argumenata koji se prosljeđuju binarnoj datoteci `zcode` kada se pokrene putem `cliTools`. | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | Radni direktorij za podproces ZCode aplikacijskog servera. | | `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | Nadjačavanje identifikatora pružaoca koji se šalje aplikacijskom serveru. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | Korijenski direktorij izvršnog okruženja ZCode aplikacijskog servera (gdje se nalaze uključeni `node` i `zcode-server.cjs`). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | Izvršna datoteka Node koja se koristi za pokretanje ZCode aplikacijskog servera. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | Ulazna skripta aplikacijskog servera koja se koristi za pokretanje ZCode servera. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | Vremensko ograničenje pokretanja (ms) nakon kojeg se pokretanje ZCode aplikacijskog servera smatra neuspjelim. | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | Vremensko ograničenje RPC-a po zahtjevu (ms) za poziv ZCode aplikacijskog servera. | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Maksimalno trajanje (ms) jednog ZCode poteza prije nego što ga nadzornik prekine zbog isteka vremena. | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | Interval provjere (ms) završetka ZCode poteza. | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | Početni direktorij Hermes Agenta u kojem OmniRoute čita/piše Hermes CLI konfiguraciju. Odgovara varijabli okruženja koju Hermes PowerShell instalacijski program postavlja na Windowsu (`%LOCALAPPDATA%\hermes`). | ### Automatska sinhronizacija CLI profila Ove zastavice funkcionalnosti moraju se izričito uključiti i podrazumijevano su isključene. Također se mogu uključiti ili isključiti putem kontrolne ploče CLI Code. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------- | ----------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Nakon sinhronizacije modela pružaoca automatski ponovo 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 niti izbor pružaoca. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Nakon sinhronizacije modela pružaoca automatski ponovo 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 pružaoca. | ### Docker primjer ```bash # Montirajte binarne datoteke hosta u kontejner i navedite 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 montirana s hosta pomoću bind mounta — uparite je s mountovima poput `~/.codex:/host-home/.codex:rw` (pogledajte profil `host` u datoteci `docker-compose.yml`). Putanja koja se ne nalazi unutar matičnog direktorija korisnika kontejnera niti je bind mount ignorira se jer bi zapisani podaci bili odbačeni kada se kontejner ponovo kreira. Slika se izvršava kao `USER node`, pa nemontirani `/root` **nije** valjano nadjačavanje. | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------------------- | -------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(automatski)_ | `src/shared/utils/containerEnv.ts` | Prisilno uključuje (`1`/`true`) ili isključuje (`0`/`false`) prepoznavanje kontejnera. Potrebno je samo na okruženjima koja automatsko prepoznavanje ne obuhvati. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | Ipak dopušta CLI alatu zapisivanje konfiguracije na nemontiranu putanju kontejnera. CLI ekvivalent je `--allow-container-write`. | ### Pomoćne varijable CLI binarne datoteke (`omniroute`) Ove varijable podešavaju ponašanje same CLI binarne datoteke `omniroute` (ne prethodno navedeno prepoznavanje sidecara). | Varijabla | Zadano | Izvorna datoteka | Opis | | ---------------------------- | -------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(sistemski)_ | `bin/cli/i18n.mjs` | Prisilno postavlja jezik CLI izlaza. BCP-47 lokalizacija (npr. `en`, `pt-BR`). Nadjačava sistemske varijable lokalizacije (LC_ALL, LC_MESSAGES). | | `OMNIROUTE_SHOW_LOG` | _(nije postavljeno)_ | `bin/cli/runtime/processSupervisor.mjs` | Postavite na `1` za prosljeđivanje serverskog stdout/stderr izlaza terminalu u nadziranom načinu rada. Ekvivalentno zastavici `--log` za `omniroute serve`. | | `OMNIROUTE_CLI_TOKEN` | _(nije postavljeno)_ | `bin/cli/api.mjs` | Token za autentifikaciju računara umetnut kao zaglavlje `x-omniroute-cli-token`. Automatski se generira u zadatku 8.12. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | HTTP vremensko ograničenje po pokušaju (ms) za CLI → server zahtjeve. | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | Maksimalno vrijeme (ms) koje CLI čeka krajnju tačku provjere stanja servera prije ispisivanja upozorenja o isteku vremena. Korisno za spora hladna pokretanja (npr. Windows). Može se postaviti i pomoću `--ready-timeout`. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | Postavite na `1` za ispis dijagnostike ponovnih pokušaja/odlaganja na stderr tokom CLI naredbi. | | `OMNIROUTE_PLUGIN_PATH` | _(nije postavljeno)_ | `bin/cli/plugins.mjs` | Prilagođeni direktorij za otkrivanje CLI dodataka (paketi `omniroute-cmd-*`). Ako nije postavljeno, zadano je `~/.omniroute/plugins/`. Samo za CLI — nikada ne dospijeva do serverskog skenera dodataka, na koji upućuje `OMNIROUTE_PLUGINS_DIR` (odjeljak 2). | --- ## 10. Interne integracije agenata i MCP-a | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | automatsko otkrivanje | `open-sse/mcp-server/server.ts` | Eksplicitni URL putem kojeg MCP/A2A alati pristupaju OmniRouteu. Nadjačava automatsko otkrivanje localhost adrese. | | `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 MCP zapisnika revizije. | | `ROUTER_API_KEY` | _(nije postavljeno)_ | Naslijeđeno | Naslijeđeni alias za `OMNIROUTE_API_KEY`. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Broj dana tokom kojih se historija A2A zadataka čuva u lokalnoj bazi podataka prije nego što dnevno čišćenje izbriše red. Ako nije postavljeno, nije broj ili je `<= 0`, koristi se `30`. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | Prekidač za isključivanje funkcije praćenja memorijskih pogodaka za A2A. Postavite na `0` da biste u potpunosti preskočili pretragu memorije za zadatak; bilo koja druga vrijednost (uključujući nepostavljenu) zadržava je omogućenom. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Omogućava vanmrežnu/lokalnu krajnju tačku Issue Agenta za zabilježenu trijažu. Ostavite onemogućeno osim ako izričito pokrećete lokalne tokove rada zabilježene trijaže. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(nije postavljeno)_ | `src/lib/issueAgent/execution.ts` | Vremensko ograničenje (ms) za jedno pokretanje zabilježene trijaže Issue Agenta. Ograničeno je internim maksimumom; ako nije postavljeno ili nije valjano, koristi se ugrađena zadana vrijednost. | | `OMNIROUTE_CONTEXT` | _(aktivni kontekst)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | Kontekst/profil udaljenog načina rada CLI-ja za `omniroute` naredbe; nadjačava aktivni kontekst u lokalnom spremištu konteksta. Ekvivalentno opciji `--context `. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | Onemogućava opcionalni `keytar` pozadinski sistem OS privjeska ključeva za vjerodajnice CLI konteksta. Kada je omogućeno, vjerodajnice ostaju u `config.json` s načinom rada `0600`, a CLI prikazuje jednokratno upozorenje o rezervnoj opciji; namijenjeno za svjestan rad bez grafičkog interfejsa/u kontejneru. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `true` | `open-sse/mcp-server/server.ts` | Primjenjuje kontrolu pristupa zasnovanu na opsezima za pozive MCP alata. | | `OMNIROUTE_MCP_SCOPES` | _(svi)_ | `open-sse/mcp-server/server.ts` | Opsezi odvojeni zarezima: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Komprimira opise 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` | Vremensko ograničenje za prekid (ms) internih upravljačkih čitanja MCP servera (zdravlje, otpornost, kombinacije, kvota, korištenje). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Vremensko ograničenje za prekid (ms) za MCP skokove koji čekaju pružaoca usluge (`route_request`, `web_search`, `web_fetch`). | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Maksimalan broj instanci indeksa lokalnog korpusa keširanih u memoriji (LRU, jedna po indeksiranom korijenskom direktoriju). Ograničeno na minimum od `1`. | | `MODEL_SYNC_INTERVAL_HOURS` | `24` | `src/shared/services/modelSyncScheduler.ts` | Interval sinhronizacije kataloga modela u satima. | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Interval provjere ograničenja brzine i kvote pružaoca usluge. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Razmak (ms) između uzastopnih OAuth dohvatanja kvote tokom grupne sinhronizacije; OAuth veze se dohvataju jedna po jedna kako bi se izbjeglo preopterećenje nadređenog sistema. `0` isključuje ovo ponašanje (istovremeno izvršavanje). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Minimalni interval (ms) između uzastopnih dohvatanja kvote iz nadređenog sistema na putanji provjere/nadzora prije svakog zahtjeva; raspoređuje istovremene mrežne pozive tako da veliki broj računa s jedne IP adrese ne preoptereti nadređeni sistem. Povezano s dohvatanjima kvote za Codex (`/wham/usage`), DeepSeek, Bailian (obje lokacije dohvatanja), OpenCode i Crof (#6009, #6911). Generička putanja otpreme `usage.ts::getUsageForProvider` (github/glm/minimax/nanogpt/xai/itd.) još nije obuhvaćena — prati se zasebno. Pogoci keša nisu pogođeni. `0` onemogućava; ograničeno na `0..5000`. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Odgoda (ms) prije osvježavanja ograničenja pružaoca usluge nakon stvarnog događaja korištenja, čime se API-ju za kvote nadređenog sistema daje vrijeme da registruje potrošnju. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | automatsko otkrivanje | `open-sse/services/adobeFireflyBrowserLogin.ts` | Apsolutna putanja do sistemske izvršne datoteke preglednika Chrome ili Edge koja se koristi za interaktivnu prijavu na Adobe Firefly i obnovu van ekrana. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Održava IMS i stanje rizika preglednika svježim pomoću Chrome CDP sesija ograničenih na račun. Postavite na `0` da onemogućite obnovu putem preglednika. | | `ADOBE_FIREFLY_SESSION_DISK` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Trajno pohranjuje popravljene Adobe sesije pod `DATA_DIR` između ponovnih pokretanja procesa. Postavite na `0` da se sesije čuvaju samo u memoriji. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Minimalni razmak u milisekundama između slanja zahtjeva za generisanje u Adobe Firefly; `0` onemogućava razmak. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatni period mirovanja u milisekundama nakon svakog trećeg uspješnog slanja Adobe zahtjeva. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Osnovno eksponencijalno odgađanje u milisekundama nakon privremenih Adobe 408 odgovora; kombinira se s razmakom slanja tokom najviše pet pokušaja. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Onemogućava sve pozadinske usluge (sinhronizaciju, određivanje cijena, osvježavanje modela). Korisno za CI/testiranje. | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(nije postavljeno)_ | `src/lib/config/runtimeSettings.ts` | Prisilno uključuje pozadinske zadatke kada je otkriveno automatizirano testiranje. Postavite `1` da nadjačate heuristiku testiranja. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Učestalost provjere ponovnog postavljanja budžeta (ms). Minimalno `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Proaktivni interval oporavka nakon perioda hlađenja veze (ms): ponovo provjerava veze čiji je prolazni `rate_limited_until` istekao, izvan kritične putanje zahtjeva. Minimalno `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Onemogućava proaktivni planer oporavka nakon perioda hlađenja veze (lijeni oporavak u `getProviderCredentials` i dalje se primjenjuje). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Interval čišćenja predmemorije rezonovanja (ms). Minimalno `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _nije postavljeno_ (onemogućeno) | `open-sse/services/reasoningTokenBuffer.ts` | Opcionalna minimalna vrijednost budžeta izlaza za modele koji razmišljaju: pozivateljev `max_tokens` u rasponu `[256, minimum)` povećava se na minimum (ograničeno maksimalnim izlazom modela). Nije postavljeno = budžeti klijenta nikada se ne povećavaju (#9507). | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Cron izraz (UTC) za zadatak izvoza evidencije poziva koji obrađuje sva omogućena odredišta za izvoz evidencije. | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Interval provjere (ms) za ponovno učitavanje konfiguracije bez prekida rada. Vrijednost manja od `1000` se odbija. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(omogućeno)_ | `src/lib/db/apiKeys.ts` | Postavite na `1` da biste zaobišli Redis predmemoriju za autentifikaciju API ključeva (prisiljava čitanje iz baze podataka). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Vjeruje pravilima filtera RTK projekta kojima upravlja korisnik 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 postavljen. Raspon 256–1000000. Postavka kontrolne ploče ima prednost nad ovom varijablom okruženja. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Maksimalan broj istovremenih sinhronih RTK/Caveman radnika; dodatni zadaci čekaju po FIFO redoslijedu. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Vremensko ograničenje po zadatku u milisekundama. Radnici kojima istekne vrijeme prekidaju se, a zahtjev se propušta neizmijenjen. | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Vrijeme mirovanja u milisekundama prije nego što se nekorišteni radnik za kompresiju prekine. | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Glavni prekidač automatskog osigurača po mehanizmu za T02 složeni cjevovod. **Opcionalno (zadano isključeno)** — kada je uključen, mehanizam koji uzastopno generiše greške u više zahtjeva preskače se (nastavlja bez izmjena) tokom perioda hlađenja; isključeno = naslijeđeno ponašanje identično na nivou bajtova. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Broj uzastopnih neuspjeha kroz više zahtjeva prije nego što se automatski osigurač mehanizma otvori. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Broj milisekundi tokom kojih se otvoreni mehanizam preskače prije poluotvorene provjere. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR povećanje na osnovu povratnih informacija o dohvaćanju: svako prethodno dohvaćanje pohranjenog bloka linearno povećava njegov efektivni `minChars` (često dohvaćani sadržaj komprimira se manje; `>=3` dohvaćanja = nikada se ne komprimira). `1` onemogućava povećanje (binarno preskakanje samo na pragu). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | Trajna pohrana CCR blokova (#9061). Koristi SQLite kao podršku za pohranu u memoriji tako da blok opstane nakon LRU izbacivanja, isteka TTL-a, ponovnog pokretanja ili zahtjeva za preuzimanje koji stigne na drugu instancu. Postavite na `false` kako bi se blokovi čuvali samo u memoriji. Blokovi veći od 512KB i okruženja u oblaku bez obzira na to koriste samo memoriju. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | Glavni prekidač za zamrzavanje prefiksa T08/H5 na osnovu uočene upotrebe. **Opcionalno (zadano isključeno)** — kada je uključeno, sistemski prompt uočen `>=` pragu tretira se kao stabilan prefiks koji se može keširati i izuzima se iz kompresije čak i za pružaoce koje statička heuristika keširanja ne prepoznaje (zamrzavanje samo _čuva_, nikada ne mijenja). | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Broj opažanja sistemskog prompta prije nego što se počne tretirati kao zamrznuti stabilni prefiks. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | Bootstrap skripta postavlja na `true` nakon početnog podešavanja. Kontroliše vidljivost čarobnjaka za podešavanje. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Zaobilazno rješenje: dozvoljava tijelu zahtjeva da nadjača polje projekta Antigravity. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Pravilo za Google One AI kredite: `off` nikada ne umeće kredite, `retry` ih umeće jednom nakon odgovarajuće greške kvote 429, a `always` ih umeće pri prvom zahtjevu. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Dozvoljava prevodiocu Antigravity zahtjeva da preskoči strogu provjeru potpisa CLI zahtjeva kada nadređeni servis odbija stvarne potpise (način rada za otklanjanje grešaka/zastarjeli CLI). Vrijednost različita od nule omogućava zaobilaženje. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Nadjačava putanju do datoteke tokena Antigravity CLI-ja (agy) za automatski otkriven uvoz lokalne prijave. | ### OAuth CLI most (interno) | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------- | --------------------- | ------------------------------- | ---------------------------------------------------- | | `OMNIROUTE_SERVER` | automatsko otkrivanje | `src/lib/oauth/config/index.ts` | URL servera za CLI↔OmniRoute autentifikacijski most. | | `OMNIROUTE_TOKEN` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Autentifikacijski token za CLI most. | | `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` | Zastarjeli alias za `OMNIROUTE_SERVER`. | | `CLI_TOKEN` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Zastarjeli alias za `OMNIROUTE_TOKEN`. | | `CLI_USER_ID` | _(nije postavljeno)_ | `src/lib/oauth/config/index.ts` | Zastarjeli alias za `OMNIROUTE_USER_ID`. | --- ## 11. Vjerodajnice OAuth pružatelja Ugrađene vjerodajnice za **lokalni razvoj**. Za udaljene implementacije registrujte vlastite vjerodajnice u konzoli za 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 | Zamjenski URI za preusmjeravanje. Zadana vrijednost: `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) | Opcionalna zamjenska vrijednost za ID javnog klijenta Muse CLI toka za uređaje. Ostavite nepostavljeno da biste koristili ugrađeni javni klijent. | | `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 | Opcionalna zamjenska vrijednost za ID OAuth klijenta za GitHub Enterprise Copilot. Ako nije postavljena, koristi javnu zadanu vrijednost varijable `GITHUB_OAUTH_CLIENT_ID`. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | Opcionalna zamjenska vrijednost za ID integracije GitHub Copilot klijenta koji se šalje u zaglavljima `Copilot-Integration-Id` i `Editor-Plugin-Version`. Zadana vrijednost je `copilot-developer-cli`. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Rezervni API ključ koji koristi `open-sse/executors/devin-cli.ts` kada vjerodajnica za pojedinačnu vezu nije dostupna. Opcionalno. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Prilagođena putanja do izvršne datoteke Devin CLI (`devin`). Razrješava je `open-sse/executors/devin-cli.ts`. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | ID OAuth klijenta za GitLab Duo. Registrujte aplikaciju na `https://gitlab.com/-/profile/applications` s URI-jem za preusmjeravanje `/callback` i opsezima `api, read_user, openid, profile, email`. Ako nije postavljen, koristi `GITLAB_OAUTH_CLIENT_ID`. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Tajna OAuth klijenta za GitLab Duo. Opcionalno — PKCE tok ne zahtijeva tajnu. Ako nije postavljena, koristi `GITLAB_OAUTH_CLIENT_SECRET`. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | Zamjenski osnovni URL za GitLab (GitLab s vlastitim hostingom). Zadana vrijednost je `https://gitlab.com`. Ako nije postavljen, koristi `GITLAB_BASE_URL`. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | Zastarjela rezervna opcija za `GITLAB_DUO_BASE_URL`. Koristi se kada varijanta `_DUO_` nije postavljena. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | Zastarjela rezervna opcija za `GITLAB_DUO_OAUTH_CLIENT_ID` koju koristi `src/lib/oauth/constants/oauth.ts`. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Zastarjela rezervna opcija 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 kako biste omogućili Qoder OAuth. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Rezervni direktni API ključ (zaobilazi OAuth). | | `QODER_CLI_WORKSPACE` | Qoder | ID radnog prostora za Qoder CLI. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | Alias za `QODER_CLI_WORKSPACE`. | | `QODER_CLI_CONFIG_DIR` | Qoder | Zamjenjuje direktorij konfiguracije za Qoder CLI (izolirana PAT sesija, sprječava prepisivanje podataka za prijavu putem preglednika). | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | Frontend `tk` token koji se šalje kao `validated` na `/api/chat`. Obavezan je kada Blackbox provodi podudaranje tokena; u suprotnom OmniRoute kao rezervnu opciju koristi nasumični UUID. Pogledajte problem #2252. | | `VISION_BRIDGE_BASE_URL` | Zaštitni mehanizam Vision Bridge | Osnovni URL kompatibilan s OpenAI-jem za vision-bridge pozive koji nisu Anthropic. Zadano koristi zastarjelu OpenAI URL varijablu okruženja ili api.openai.com. Usmjerite ga na OmniRouteovu `/v1` samopetlju ili bilo koju krajnju tačku kompatibilnu s OpenAI-jem (Gemini OpenAI-compat, OpenRouter). Problem #2232. Kada je URL OmniRouteov vlastiti `/v1`, podzahtjev za opisivanje šalje `x-omniroute-admission-bypass: internal` i autentificira se pomoću razriješene vjerodajnice samopetlje (`sk_omniroute` sentinel u lokalnom načinu rada ili `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350), kako bi implementacije s `REQUIRE_API_KEY=true` funkcionirale. | | `VISION_BRIDGE_API_KEY` | Zaštitni mehanizam Vision Bridge | API ključ za gornji URL. Zamjenjuje OpenAI / Google varijable okruženja po pružaocu za vision-bridge pozive koji nisu Anthropic. Anthropic modeli zadržavaju svoju namjensku putanju Anthropic ključa. Problem #2232. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Zaštitni mehanizam Vision Bridge | Koliko dugo se ishod usmjeravanja „nema upotrebljivog kandidata“ pohranjuje u predmemoriju, u ms (zadano `30000`). Nevažeće ili negativne vrijednosti vraćaju se na zadanu vrijednost; `0` onemogućava negativnu predmemoriju. Izvor: `src/lib/guardrails/visionBridgeRouter.ts`. | > [!WARNING] > > 1. Idite na [Google Cloud Console → Vjerodajnice](https://console.cloud.google.com/apis/credentials) > 2. Kreirajte OAuth 2.0 ID klijenta (vrsta: „Web application“) > 3. Dodajte URL svog servera kao autorizirani URI za preusmjeravanje > 4. Zamijenite vrijednosti vjerodajnica u `.env`. --- ## 12. Zamjene User-Agent vrijednosti pružatelja Zamijenite zaglavlje `User-Agent` koje se šalje svakom nadređenom pružatelju. Izvršna osnovna klasa ga dinamički određuje tokom izvršavanja: ``` 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.258 (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` kako biste proslijedili nazive alata okruženja trećih strana bez izmjena prema Anthropicu na obje putanje povezane s Anthropicom (izvorni OAuth i CLIProxyAPI). Izvršitelj prema zadanim postavkama deterministički dodjeljuje pseudonime nazivima alata koji nisu iz Claude Codea (kanonsko mapiranje Claude Codea kada postoji, u suprotnom PascalCase) i vraća ih u odgovoru putem `_toolNameMap`, tako da okruženja s alatima imenovanim u snake_case formatu ne budu odbijena kao prepoznati klijenti trećih strana. Samo za otklanjanje greš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` | Zamijenite verziju Codex klijenta nezavisno od cijelog UA niza | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.258` | Zamijenite oglašenu verziju Claude Codea nezavisno od `CLAUDE_USER_AGENT`. Anthropic ograničava neke modele na osnovu ove vrijednosti (#12417). | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.81-6` | Zamijenite oglašenu verziju Copilot CLI-ja nezavisno od `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` | Zamijenite Kiro `clientId` (javni ID) za kod uređaja društvene prijave | | `KIRO_VERIFY_FULL_CRC` | `false` | Izborno: potpuna CRC validacija svake poruke po okviru u Kiro toku događaja (za otklanjanje grešaka u oštećenim tokovima) | | `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 zamjene User-Agent vrijednosti za **bilo kojeg** pružatelja koristeći obrazac `{PROVIDER_ID}_USER_AGENT`. Izvršitelj dinamički konstruira naziv varijable okruženja. --- ## 13. Kompatibilnost CLI otiska Kada je omogućeno, OmniRoute mijenja redoslijed HTTP zaglavlja i polja JSON tijela kako bi odgovarao tačnom potpisu zvaničnih 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žaocu usluge | Varijabla | Aktivacija | Efekat | | ------------------------ | ---------- | --------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Oponaša potpis zahtjeva Codex CLI-ja | | `CLI_COMPAT_CLAUDE` | `=1` | Oponaša potpis zahtjeva Claude Codea | | `CLI_COMPAT_GITHUB` | `=1` | Oponaša potpis zahtjeva GitHub Copilota | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Oponaša potpis zahtjeva Antigravityja | | `CLI_COMPAT_CURSOR` | `=1` | Oponaša potpis zahtjeva Cursora | | `CLI_COMPAT_KIMI_CODING` | `=1` | Oponaša potpis zahtjeva Kimi Codinga | | `CLI_COMPAT_KILOCODE` | `=1` | Oponaša potpis zahtjeva Kilo Codea | | `CLI_COMPAT_CLINE` | `=1` | Oponaša potpis zahtjeva Clinea | ### Globalno | Varijabla | Aktivacija | Efekat | | ---------------- | ---------- | -------------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Omogućava kompatibilnost otiska za **sve** pružaoce usluga odjednom. | ### Zamjene identiteta Kimi Coding CLI-ja | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------- | --------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------ | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | Zamjenjuje verziju Kimi CLI-ja poslanu tokom OAuth/API poziva. | | `KIMI_CODING_DEVICE_ID` | _(zabilježena zadana vrijednost)_ | `src/lib/oauth/providers/kimi-coding.ts` | Zamjenjuje zabilježeni ID Kimi uređaja koji se koristi u zaglavljima klijenta. | > [!NOTE] > Ova funkcija radi zajedno sa zamjenama User-Agenta (§12). Sistem otiska upravlja redoslijedom zaglavlja i polja tijela, dok zamjene User-Agenta upravljaju konkretnim UA nizom. Obje funkcije mogu se omogućiti nezavisno. --- ## 14. Pružaoci usluga s API ključem API ključevi za pružaoce usluga koji koriste direktnu autentifikaciju. **Preporučena postavka:** Kontrolna tabla → Pružaoci usluga → Dodaj API ključ. Postavljanje putem varijabli okruženja predstavlja alternativu za Docker ili implementacije bez grafičkog interfejsa. Prepoznati obrazac: `{PROVIDER_ID}_API_KEY` | Varijabla | Pružalac usluge | | ------------------ | ----------------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + rezervni Reader) | | `JINA_API_KEY` | Jina AI (alias za `JINA_AI_API_KEY`) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) ugrađivanja + rezervni 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 v3.8.0 jer ih izvršno okruženje više ne čita — ti pružaoci usluga oslanjaju se isključivo na Kontrolnu tablu / `data/provider-credentials.json` / šifriranu bazu podataka. Pogledajte odjeljak _Revizija: uklonjene / neaktivne varijable_ na dnu ovog dokumenta za postupak migracije. > [!TIP] > Ključevi postavljeni putem Kontrolne table pohranjuju se šifrirano u SQLiteu i imaju prednost nad 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 kontrolnoj tabli — `getProviderCredentials` prvo popunjava postojeće vrijednosti. `JINA_AI_API_KEY` / `JINA_API_KEY` koriste se samo kada ne postoji upotrebljiv ključ s kontrolne table. Zapisi poziva pripisuju rezervnu vrijednost iz okruženja kao `connection_id=env:JINA_AI_API_KEY`. Kartica Reader (`jina-reader`, `r.jina.ai`) nikada ne opslužuje `/v1/embeddings` niti `/v1/rerank`. > > **Gemini:** `gemini/gemini-embedding-2` (alias `google/gemini-embedding-2`) prvo koristi vezu `gemini` s kontrolne table. `GEMINI_API_KEY` / `GOOGLE_API_KEY` koriste se samo kada ne postoji upotrebljiv ključ s kontrolne table. Zapisi poziva pripisuju rezervnu vrijednost iz okruženja kao `connection_id=env:GEMINI_API_KEY`. Izvorni multimodalni saobraćaj koristi `x-goog-api-key` prema `:embedContent` / `:batchEmbedContents` — N OpenAI `input` stavki postaje N vektora. --- ## 15. Postavke vremenskog ograničenja Sve vrijednosti su u **milisekundama**. Centralizirano određivanje u `src/shared/utils/runtimeTimeouts.ts`. ### Hijerarhija vremenskih ograničenja ``` REQUEST_TIMEOUT_MS (globalno nadjačavanje) ├─→ FETCH_TIMEOUT_MS (pozivi prema vanjskim pružaocima usluga, 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) │ ├── 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ćava) ├─→ STREAM_READINESS_TIMEOUT_MS (nasljeđuje od REQUEST_TIMEOUT_MS, zadano: 80000) ├─→ STREAM_READINESS_MAX_TIMEOUT_MS (ograničava prilagodljiva produženja 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 | Zadana vrijednost | Opis | | ----------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(nije postavljeno)_ | Globalna prečica — nadjačava zadane vrijednosti za `FETCH_TIMEOUT_MS` i `STREAM_IDLE_TIMEOUT_MS`. | | `FETCH_TIMEOUT_MS` | `600000` | Ukupno vremensko ograničenje HTTP zahtjeva za pozive prema uzvodnom pružatelju usluge. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | Maksimalno vrijeme tišine između neobrađenih uzvodnih bajtova prije prekidanja. Modeli s proširenim razmišljanjem rijetko pauziraju >90s. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Maksimalno ukupno trajanje aktivnog SSE toka; nikada se ne poništava uzvodnim bajtovima i ne zavisi od `REQUEST_TIMEOUT_MS`. Izvedeno je iz najvećeg `timeoutMs` po modelu u registru (1200000, Codex), uz marginu od 60000, tako da model kojem je dozvoljeno koristiti puni vremenski budžet nikada ne bude prekinut usred odgovora. Postavite na `0` da biste onemogućili. | | `OMNIROUTE_SSE_COMMENTS` | _(onemogućeno)_ | Određuje može li OmniRoute emitovati SSE redove komentara `:` (npr. `: keepalive` signal aktivnosti i `x-omniroute-*` završne metapodatke). Zadano je onemogućeno (#10524) jer strogi klijenti kompatibilni s OpenAI-jem primjenjuju JSON.parse na svaki SSE red i ruše se na komentarima `:`; to ne utiče na `data:` signale aktivnosti. Postavite `on`/`true`/`1`/`yes` da biste ih ponovo uključili. Koristi ga `open-sse/utils/sseHeartbeat.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 prilagodljivi period spremnosti za prvi događaj kod velikih streaming zahtjeva, zahtjeva s intenzivnom upotrebom alata ili zahtjeva s visokim nivoom zaključivanja. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | Sigurnosni prekidač za heuristiku `/goal`. Postavite `false`/`0`/`off` da biste potpuno onemogućili otkrivanje — vremenska ograničenja spremnosti i oporavak toka nikada se ne povećavaju na osnovu tijela/zaglavlja zahtjeva, čime se ublažava pojačavanje vremenskog ograničenja koje kontroliše klijent. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Maksimalni period spremnosti za prvi događaj kod otkrivenih pokretanja agenta `/goal` ili zahtjeva nametnutih pomoću `x-omniroute-agent-goal`. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Automatski omogućava rani oporavak toka za otkrivena pokretanja agenta `/goal`. Postavite `false`/`0`/`off` da biste onemogućili uključivanje specifično za cilj. Ovo može samo DODATI oporavak povrh zadane postavke operatera — nikada ne nadjačava izričito isključivanje putem postavki `STREAM_RECOVERY_ENABLED`/baze podataka. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | Uklanja nestandardne SSE događaje `codex.*` (npr. `codex.rate_limits`) koji uzrokuju prekid metode `responses.stream()` u OpenAI SDK-u uz grešku 502. Zadano je UKLJUČENO (#11014). Postavite `0`/`false`/`no`/`off` da biste ih prosljeđivali. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(nije postavljeno)_ | Opcionalni transport Codex app-servera. WebSocket krajnja tačka (`ws://`/`wss://`) lokalnog pomoćnog procesa `codex app-server`. Kada je postavljeno zajedno s tokenom, Codex zahtjevi se usmjeravaju putem JSON-RPC-a prema pomoćnom procesu umjesto prema HTTP Responses API-ju. Može se postaviti i za svaku vezu putem `providerSpecificData.codexAppServerUrl`. Koristi ga `open-sse/executors/codex/appServerConfig.ts`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(nije postavljeno)_ | Ugrađeni token mogućnosti/nositelja koji se šalje app-serveru. Nadjačavanje za pojedinačnu vezu: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(nije postavljeno)_ | Putanja do datoteke koja sadrži token mogućnosti app-servera (iz `codex app-server --ws-token-file`). Koristi se kada `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` nije postavljen. Nadjačavanje za pojedinačnu vezu: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Radni direktorij u kojem se izvršava potez app-servera. Nadjačavanje za pojedinačnu vezu: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(nije postavljeno)_ | Pravilo odobravanja koje se prosljeđuje potezu app-servera (npr. `never`, `on-request`). Nadjačavanje za pojedinačnu vezu: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(nije postavljeno)_ | Pravilo izoliranog okruženja koje se prosljeđuje potezu app-servera (npr. `read-only`, `workspace-write`, `danger-full-access`). Kada nije postavljeno, izvršitelj koristi zadanu vrijednost `workspace-write` (sigurnije; prethodno `danger-full-access`). Nadjačavanje za pojedinačnu vezu: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Automatski odobrava vlastite upite za odobrenje app-servera (izvršavanje naredbi/datoteka/dozvola na hostu). Zadano je isključeno — upiti se automatski odbijaju; to ne utiče na pozive alata okvira (oni prolaze kroz zasebno prosljeđivanje `item/tool/call`). Prihvata `true`/`1`/`yes`. Nadjačavanje za pojedinačnu vezu: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Vrijeme za primanje zaglavlja odgovora. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30 s) | Maksimalno vrijeme čekanja na početak odgovora (ms) za svaki direktni pokušaj bez proxyja. Nakon isteka vremena pokušaj se ponavlja jednom na novom socketu; postavite na `0` da biste onemogućili ograničenje i zadržali prethodno ponašanje. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 min) | Gornja granica (ms) za RETRY pokušaj na novom socketu nakon gore navedenog isteka vremena čekanja na početak odgovora za pokušaj iz poola (#13703). Primjenjuje se samo kada je pozivalac već priložio vlastiti signal krajnjeg roka (kaskada razriješene konekcije/modela/provajdera/`FETCH_TIMEOUT_MS`); taj signal je stvarno ograničenje i aktivira se prvi u predviđenom toku, pa je ovo velikodušna krajnja zaštita, a ne fiksno ograničenje — bez nje je ponovni pokušaj koristio isti kratki interval `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` kao pokušaj iz poola, zbog čega su ispravni reasoning modeli sa sporim TTFB-om vraćali 504. Nikada nije dozvoljena vrijednost ispod gore navedene fiksne donje granice; kada pozivalac uopće ne navede signal krajnjeg roka, ponovni pokušaj zadržava nepromijenjenu fiksnu donju granicu. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Vrijeme za primanje cijelog tijela odgovora. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Vremensko ograničenje za uspostavljanje TCP konekcije. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Vremensko ograničenje neaktivnosti keep-alive socketa. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Vremensko ograničenje za proxy TLS otiska (wreq-js). | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Ograničava vrijeme do prvog bajta posebno za tijelo na wreq-js transportu s TLS otiskom; sam `TLS_CLIENT_TIMEOUT_MS` ne može otkriti zastoj tijela jer se razrješava čim stignu zaglavlja (#12656). Istek vremena otkazuje wreq čitač i prebacuje se na direktni/proxy dispatcher; `0` onemogućava nadzor. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Samo za OpenCode executor i samo dok je uključena funkcijska zastavica `OPENCODE_RESPONSES_STALL_ROTATION` (zadano isključena): ograničava čekanje na prvi bajt tijela streamanog Responses odgovora nakon njegovih zaglavlja (#13484). Responses stream započinje događajem `response.created`, pa je tišina nakon isteka ovog intervala zastoj: račun se privremeno stavlja na čekanje, a zahtjev se jednom preusmjerava na sljedeći račun; drugi zastoj odmah uzrokuje neuspjeh. `0` onemogućava zaštitu čak i kada je zastavica uključena. | | `OPENCODE_PARK_AND_RESUME` | `false` | Samo za OpenCode executor: parkira zahtjev uz heartbeat nakon ponovljenih privremenih odgovora 429 (ili svježeg markera opterećenja poola), a zatim ponavlja jednu ograničenu etapu preko najviše 3 uzastopna računa umjesto raspoređivanja na cijelu flotu (#13924). Zadano isključeno: svaki odgovor 429 preusmjerava na sljedeći račun tačno kao i ranije. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(nije postavljeno)_ | Samo za OpenCode executor: putanja za zaobilaženje markera opterećenja poola koji se čita prije parkiranja (`{since, reason, ttl_s}`, zadano `/tmp/opencode-pool-strain.json`, #13924). Svjež marker parkira bez ponovnog brojanja; ako nedostaje ili je zastario, koristi se rezervni brojač naglog porasta. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | Vremensko ograničenje proxy skoka za zahtjeve prema `/v1`. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Usmjerava Firecrawl executor za web dohvat na instancu s vlastitim hostingom (API ključ nije obavezan izvan clouda). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Vremensko ograničenje po zahtjevu za Firecrawl executor za web dohvat. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Ukupno vremensko ograničenje serverskog zahtjeva za bridge. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Vrijeme za slanje zaglavlja odgovora putem bridgea. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Vremensko ograničenje neaktivnosti bridge keep-alive veze. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Vremensko ograničenje sirovog socketa (0 = onemogućeno). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Period odgode nakon SIGTERM/SIGINT prije prisilnog izlaska. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | Rezervna 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 unaprijed postavljene konfiguracije `validationRead` i `modelsProbe` u `src/shared/network/safeOutboundFetch.ts`. Povećajte za spore krajnje tačke (Cerebras, Cloudflare AI, Groq) kako biste spriječili osciliranje između stanja aktivno/greška na nadzornoj ploči. Za nevažeće (<1000) ili nenumeričke vrijednosti koristi se rezervna vrijednost od 8000 ms. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | Vremensko ograničenje dohvatanja specifično za relej u `open-sse/utils/proxyFetch.ts` (#9158). Relej koji prestane reagovati mora prijaviti neuspjeh prije isteka vremenskog ograničenja klijenta/agenta (~30s), kako bi pozivaoci vidjeli grešku specifičnu za relej umjesto generičkog isteka vremenskog ograničenja uzvodnog sistema. Ograničeno je na `29000` kako bi se uvijek prvo aktiviralo. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | Zajednička odgoda ponovnog pokušaja za putanje direktnog/relejnog/proxy jednokratnog ponovnog pokušaja u `open-sse/utils/proxyFetch.ts` (#9158). `0` = odmah ponovi pokušaj. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Vremensko ograničenje izvornog wreq-js zahtjeva (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Dodatno vrijeme do apsolutnog krajnjeg JS roka, dodano na izvorno vremensko ograničenje. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Vremensko ograničenje izvornog wreq-js zahtjeva (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Dodatno vrijeme do apsolutnog krajnjeg JS roka, dodano na izvorno vremensko ograničenje. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (isključeno) | Dodaje „Imate ugrađenu web-pretragu. Odgovarajte na pitanja direktno koristeći rezultate pretrage.“ sistemskoj poruci pozivaoca (`perplexity-web/protocol.ts`). Podrazumijevano je isključeno — Perplexity svejedno pretražuje, a rečenica se pojavljuje u odgovorima kao metakomentar za klijente za programiranje. Postavite na `1`/`true`/`yes`/`on` da biste vratili ovu funkciju. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Vremensko ograničenje izvornog wreq-js zahtjeva (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Dodatno vrijeme do apsolutnog krajnjeg JS roka, dodano na izvorno vremensko ograničenje. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Vremensko ograničenje izvornog wreq-js zahtjeva (`notionTlsClient.ts`); `notion-web` ga za svaki zahtjev povećava na `180000` za duga generisanja. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Dodatno vrijeme do apsolutnog krajnjeg JS roka, dodano na izvorno vremensko ograničenje. | | `OMNIROUTE_BROWSER_POOL` | `on` | Zajednički skup Playwright preglednika za razgovor pomoću web-kolačića koji se izvršava u pregledniku (`browserPool.ts`); postavite na `off` da biste ga onemogućili. | | `OBSCURA_BIN` | `auto-detect` | Putanja do binarne datoteke `obscura` koja se koristi kao primarni mehanizam skupa preglednika i izvršioca Cloudflare Playgrounda (`open-sse/services/obscura.ts`); automatski se otkriva iz sistemske putanje PATH kada nije postavljena. | | `OBSCURA_CDP_ENDPOINT` | _(nije postavljeno)_ | Usmjerava na već pokrenutu instancu Obscure (`http://host:port`) umjesto pokretanja nove; modul nije vlasnik tog procesa (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `random free port` | Eksplicitni port za pokrenuti `obscura serve`; slobodan port se automatski bira kada nije postavljen (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Uključuje zahtjev razgovora pomoću web-kolačića u putanju koja se izvršava u pregledniku (`browserBackedChat.ts`); postavite na `1` da biste omogućili. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Osnovni URL za izvršioca Kimi Web (međunarodni kimi.ai Connect-RPC) (`kimi-web.ts`); promijenite samo za zrcalne/proxy krajnje tačke. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Puna krajnja tačka razgovora za izvršioca Kimi Web (`kimi-web.ts`). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(automatski otkriveno)_ | Putanja do sistemske izvršne datoteke preglednika Chrome/Edge za interaktivnu prijavu u pregledniku Adobe Firefly (`adobeFireflyBrowserLogin.ts`); nadjačava automatsko otkrivanje za svaki OS. | | `OMNIROUTE_STANDALONE_DIR` | _.build/ samostalni izlaz_ | Zamjena direktorija samostalnog izlaza u vrijeme izgradnje, koji koristi korak kolociranja nakon izgradnje (`scripts/build/colocate-standalone.mjs`); odnosi se na alate za izgradnju, a ne na vrijeme izvršavanja. | Pokušaji kombinovanih ciljeva nasljeđuju razriješeno vremensko ograničenje uzvodnog zahtjeva (`FETCH_TIMEOUT_MS` ili `REQUEST_TIMEOUT_MS` kada ono određuje podrazumijevanu vrijednost dohvatanja). Postavite `targetTimeoutMs` u kombinaciji, podrazumijevanim vrijednostima kombinacije ili zamjeni pružaoca samo da biste ubrzali rezervni prelazak kombinacije; vrijednosti iznad trenutnog uzvodnog vremenskog ograničenja ograničavaju se na uzvodno vremensko ograničenje. `comboTimeoutMs` je zaseban ukupni vremenski budžet kombinacije prema zidnom satu za sve ciljeve prebacivanja u slučaju greške. Ostavite ga nepostavljenim ili postavite na `0` kako biste zadržali neograničeno iteriranje (fiksno ograničenje od 10 minuta za zaustavljanje u slučaju zastoja u `comboPredicates.ts` i dalje se primjenjuje). Pozitivna vrijednost zamjenjuje tu sigurnosnu zaštitu za kombinaciju. Neka `comboTimeoutMs` bude duži od `targetTimeoutMs` kako bi za prebacivanje u slučaju greške ostalo vremena nakon sporog prvog cilja. ### Pragovi prekidača strujnog kola Podešavanje prekidača strujnog kola na nivou pružaoca. Podrazumijevane vrijednosti odražavaju skalirane vrijednosti koje se koriste od v3.6 za više od 500 veza. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------------------------------- | ----------------- | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Prag uzastopnih neuspjeha za OAuth pružaoce prije aktiviranja prekidača. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | Period resetovanja (ms) za prekidač OAuth pružaoca. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | Prag uzastopnih neuspjeha za pružaoce s API ključem. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | Period resetovanja (ms) za prekidač pružaoca s API ključem. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prag uzastopnih neuspjeha za lokalne pružaoce (Ollama, LM Studio, ...). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Period resetovanja (ms) za prekidač lokalnog pružaoca. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: broj neuspjeha unutar perioda prije nego što cijeli OAuth pružalac uđe u period hlađenja. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: klizni period za brojanje neuspjeha (ms) za OAuth pružaoce. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: period hlađenja (ms) nakon dostizanja praga OAuth pružaoca. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth pružalac ulazi u stanje DEGRADED nakon ovoliko neuspjeha. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | Maksimalni množilac povećanja vrijednosti resetTimeout za OAuth pružaoca. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth pružalac eskalira nakon ovoliko otvorenih ciklusa. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: broj neuspjeha unutar perioda prije nego što cijeli pružalac s API ključem uđe u period hlađenja. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: klizni period za brojanje neuspjeha (ms) za pružaoce s API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: period hlađenja (ms) nakon dostizanja praga pružaoca s API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | Pružalac s API ključem ulazi u stanje DEGRADED nakon ovoliko neuspjeha. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | Maksimalni množilac povećanja vrijednosti resetTimeout za pružaoca s API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | Pružalac s API ključem eskalira nakon ovoliko otvorenih ciklusa. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: broj neuspjeha prije nego što cijeli lokalni pružalac uđe u period hlađenja. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: klizni period za brojanje neuspjeha (ms) za lokalne pružaoce. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Prekidač na nivou pružaoca: period hlađenja (ms) nakon dostizanja praga lokalnog pružaoca. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Dubina odgode na kojoj se pružalac vezan za pin kontekstne predmemorije smatra trajno nedostupnim, nakon čega se pin uklanja radi prebacivanja na rezervnog pružaoca. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Period zaštite od oscilacija (ms) koji toleriše kratke prolazne periode hlađenja prije uklanjanja pina kontekstne predmemorije. | ### Scenariji | Scenarij | Konfiguracija | | ------------------------------------------------------- | ------------------------------------------------------- | | **Dugotrajno generisanje koda** | `REQUEST_TIMEOUT_MS=900000` (15 min) | | **Ograničeno ukupno trajanje toka** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 min) | | **Brzi prekid u slučaju neuspjeha za produkcijski API** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Modeli s proširenim razmišljanjem** | `STREAM_IDLE_TIMEOUT_MS=300000` (5 min između dijelova) | --- ## 16. Evidentiranje Sistem evidentiranja zapisuje podatke i na stdout i u rotirane datoteke evidencije. Sva konfiguracija se učitava putem `src/lib/logEnv.ts`. | Varijabla | Zadana vrijednost | Opis | | ----------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Minimalni nivo evidencije: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Format izlaza: `text` (čitljiv ljudima) ili `json` (strukturiran). | | `APP_LOG_TO_FILE` | `true` | Zapisuje evidencije u datoteku uz stdout. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Putanja datoteke evidencije (relativna u odnosu na korijen projekta ili `DATA_DIR`). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Maksimalna veličina datoteke prije rotacije. Prihvata: `50M`, `1G`, `512K` ili običan broj bajtova. | | `APP_LOG_RETENTION_DAYS` | `7` | Broj dana čuvanja rotiranih datoteka evidencije aplikacije. | | `APP_LOG_MAX_FILES` | `20` | Maksimalan broj sigurnosnih kopija rotiranih datoteka evidencije. | | `CALL_LOG_RETENTION_DAYS` | `7` | Broj dana čuvanja zapisa evidencije zahtjeva/poziva u bazi podataka. | | `CALL_LOG_MAX_ENTRIES` | `10000` | Maksimalan broj zapisa evidencije poziva u međuspremniku u memoriji. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Maksimalan broj redova u SQLite tabeli `call_logs` prije uklanjanja starih zapisa. | | `ENABLE_REQUEST_LOGS` | _(nije postavljeno)_ | Prisilno uključuje ili isključuje detaljno evidentiranje zahtjeva, nadjačavajući postavku kontrolne ploče. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 sat) | Maksimalna starost napuštenih aktivnih zapisa evidencije 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`. Opcionalno (`true`) — zadano isključeno radi uštede prostora na disku. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | Maksimalna veličina artefakta evidencije poziva cjevovoda u KB kada je `call_log_pipeline_enabled=true`. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Maksimalan broj redova u SQLite tabeli `proxy_logs` prije uklanjanja starih zapisa. | | `PROXY_LOG_INCLUDE_IPS` | `false` | Uključuje IP adrese klijenta/izlaza i prefikse računa u konzolne evidencije `[ProxyEgress]`. Zapisi proxy evidencije na kontrolnoj ploči/u bazi podataka zadržavaju sve detalje. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 min) | Koliko često `src/lib/logRotation.ts` ponovo provjerava veličinu aktivne datoteke evidencije. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Maksimalna dužina niza znakova koja se zadržava u artefaktima evidencije razgovora (zadano 64 KB). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Broj elemenata niza koji se zadržavaju s kraja pri skraćivanju sadržaja evidencije razgovora. | | `CHAT_LOG_MAX_DEPTH` | `6` | Maksimalna dubina ugnježđivanja prije skraćivanja sadržaja evidencije razgovora. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Maksimalan broj ključeva objekta koji se zadržavaju u sadržaju evidencije razgovora (0 = neograničeno). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | Veličina cijelog tijela zahtjeva/odgovora (KB) nakon koje se ono zamjenjuje sažetkom umjesto potpunom kopijom. Povećajte ovu vrijednost ako dugi agentski razgovori na kontrolnoj ploči prikazuju rezervirano mjesto umjesto stvarnih poruka. | | `CHAT_DEBUG_FILE` | `false` | Kada je vrijednost `true`, `serializeArtifactForStorage` preskače skraćivanje na osnovu veličine. Samo za otklanjanje grešaka. | --- ## 17. Optimizacija memorije | Varijabla | Zadana vrijednost | Opis | | ----------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MEMORY_MB` | _automatski_ (fizički server); **`1024` u Docker slici** | **Preporučeno** ograničenje V8 heap memorije (MB) za Docker/samostalni način rada. 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. U `run-standalone.mjs` (Docker CMD), **eksplicitna** vrijednost dodaje se kao `--max-old-space-size` i ima **prednost** nad konfliktnom NODE_OPTIONS heap zastavicom (V8 koristi posljednju zastavicu). `omniroute serve` i dalje daje prednost postojećoj NODE_OPTIONS heap postavci (#5238). Nemojte postavljati obje na različite brojeve — proces bilježi upozorenje koje navodi obje vrijednosti i onu koja ima prednost. **Zvanična Docker slika uvijek postavlja `1024`, pa se kalibracija u njoj nikada ne izvršava.** Coding-agent `/v1/responses` zahtijeva `8192`–`12288` uz dodatni prostor za cgroup — pogledajte [Docker vodič — RAM tokom izvršavanja](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). | | `PROMPT_CACHE_MAX_SIZE` | `50` | Maksimalan broj keširanih unosa sistemskih upita. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Maksimalna ukupna veličina keša upita. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 min) | TTL unosa keša upita. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Maksimalan broj keširanih odgovora s temperature=0. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Maksimalna ukupna veličina semantičkog keša. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 min) | TTL unosa semantičkog keša. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Korijeni lokalnog korpusa koji istovremeno zadržavaju aktivan indeks u memoriji (`src/lib/localCorpus/configured.ts`). LRU: kada se dostigne ograničenje, indeks najmanje nedavno korištenog korijena uklanja se i ponovo izrađuje pri sljedećem upitu. Ograničeno na minimum `1`; nenumerička vrijednost vraća se na zadanu vrijednost. | | `STREAM_HISTORY_MAX` | `50` | Maksimalan broj nedavnih događaja toka u međuspremniku prikaza uživo na kontrolnoj ploči. | | `CONTEXT_LENGTH_DEFAULT` | `128000` | Globalna rezervna maksimalna dužina konteksta za modele bez eksplicitne konfiguracije. | | `USAGE_TOKEN_BUFFER` | `100` | Dodatna rezerva tokena pri praćenju kvota korištenja. | ### Kompresija | Varijabla | Zadana vrijednost | Opis | | ------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | nije postavljeno | Vjerujte projektnoj datoteci `.rtk/filters.json` bez `.rtk/trust.json` hash vrijednosti. Koristite samo u kontroliranom lokalnom razvoju. | ### Mehanizam memorije (plan 21) ### Trošak memorije, vještina i osvježavanja tokena za petlju događaja (#10349) OmniRoute je **jedan Node proces**. Izdvajanje/preuzimanje memorije, ubacivanje vještina i osvježavanje tokena pružatelja usluga izvršavaju se u **istoj petlji događaja** kao `GET /healthz` i kontrolna ploča. Ne izvršavaju se u radnoj niti. | Funkcionalnost | Kod | Zadano | Kontrola operatora | | -------------------------------- | ---------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Izdvajanje / dohvaćanje memorije | `src/lib/memory/` | **memoryEnabled** na kontrolnoj ploči (zadano uključeno) | Isključite **Postavke → Memorija**. Ne postoji zaseban prekidač putem varijable okruženja osim isključivanja funkcionalnosti u postavkama. | | Umetanje vještina | `src/lib/skills/injection.ts` | **skillsEnabled** na kontrolnoj ploči (zadano uključeno) | Isključite **Postavke → Memorija/Vještine** (`skillsEnabled`). Postavke sandboxa u nastavku samo ograničavaju izvršavanje nakon što je umetanje već uključeno. | | Osvježavanje tokena | `src/sse/services/tokenRefresh.ts` | Uključeno za povezane OAuth/web pružaoce usluga | Prekinite vezu s pružaocem usluga ili pustite da tokeni ostanu važeći; trenutno ne postoji varijabla okruženja `TOKEN_REFRESH=0`. | Ako je `/healthz` spor na neopterećenom računaru, prvo isključite memoriju i vještine, a zatim provjerite opterećenje kataloga/kompresije (#10303, #9685). Ove funkcionalnosti prepuštaju izvršavanje na `await` tačkama, ali se i dalje nadmeću za jednu nit. Postavke sloja za ugrađivanje, vektorskog spremišta i ponovnog rangiranja za podsistem trajne memorije (`src/lib/memory/`). | Varijabla | Zadano | Opis | | ------------------------------------ | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 min) | TTL za predmemoriju ugrađivanja u memoriji (po potpisu izvora/modela/dimenzije). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Maksimalan broj LRU unosa koji se čuvaju u predmemoriji ugrađivanja. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | ID HF repozitorija za lokalni MiniLM cjevovod `@huggingface/transformers` koji se koristi po izboru (~23 MB int8, ~400 MB RAM-a). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | ID HF repozitorija za statički potion/Model2Vec ugrađivač zasnovan na tabeli pretraživanja. Preuzima se po potrebi u direktorij predmemorije. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Direktorij koji se koristi za predmemoriranje datoteka statičkog potion modela. Kada nije postavljen, zadano se nalazi unutar `DATA_DIR`. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | Zamjenjuje osnovni URL za Hugging Face Hub koji koristi `staticPotion.ts` (npr. krajnja tačka preslikanog repozitorija za izolirana okruženja). | | `MEMORY_VEC_TOP_K` | `20` | Zadana vrijednost top-K koju koristi vektorska pretraga grubom silom `sqlite-vec` unutar `src/lib/memory/vectorStore.ts`. | | `MEMORY_RRF_K` | `60` | Konstanta Reciprocal Rank Fusion `k` za hibridno FTS5 + vektorsko dohvaćanje (sqlite-vec recept). | | `VECTOR_STORE_DISABLE_VEC` | `false` | Tačka za testiranje/dijagnostiku u `getVectorStore()` (`src/lib/memory/vectorStore.ts`): kada je `true`, prisilno postavlja vektorsko spremište na `null` (simulira cloud/WASM okruženje bez `sqlite-vec`), čime se dohvaćanje memorije svodi na FTS5 pretragu po ključnim riječima. Ostavite nepostavljeno u produkciji. | | `NOTION_API_KEY` | _(nije postavljeno)_ | API ključ za Notion pozadinski sistem (koristi ga poznata unaprijed postavljena konfiguracija pozadinskog sistema u `genericBackend.ts`). | | `NOTION_API_URL` | `https://api.notion.com/v1` | Osnovni URL za Notion API (može se zamijeniti za samostalno hostirane Notion alternative). | | `OBSIDIAN_API_KEY` | _(nije postavljeno)_ | API ključ za pozadinski sistem Obsidian Vault (koristi ga poznata unaprijed postavljena konfiguracija pozadinskog sistema u `genericBackend.ts`). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | Osnovni URL za Obsidian Vault API (može se zamijeniti za udaljeni trezor). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | Glavni prekidač za TV6 propadanje memorije prema tipu. **Uključuje se po izboru (zadano isključeno)** — čišćenje **briše** propale memorije. Kada je isključeno, `access_count`/`last_accessed_at` predstavljaju samo telemetriju i ništa se nikada ne briše. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (u danima) nakon kojeg nekorištena `episodic` memorija propada. Vrijednost `0` čini i epizodnu memoriju imunom. Trajni tipovi (`factual`/`procedural`/`semantic`) uvijek su imuni. Sat propadanja ponovo se zasniva na `last_accessed_at`. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | Memorija umetnuta `>=` ovoliko puta postaje imuna na propadanje bez obzira na tip. Vrijednost `0` isključuje imunitet zasnovan na pristupu. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (isključeno) | Interval (u sekundama) za opcionalno periodično čišćenje propalih memorija u `src/lib/memory/typedDecay.ts`. `0`/nije postavljeno = nema periodičnog čišćenja. Zahtijeva dvostruko uključivanje: također je potrebno `MEMORY_TYPED_DECAY_ENABLED=true`. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(nije postavljeno)_ | ID-ovi pružalaca usluga razdvojeni zarezima (bez obzira na veličinu slova) koji prihvataju poruku `system` **samo na indeksu 0** (`src/lib/memory/injection.ts`). Za njih je spajanje memorije usred niza, sigurno za predmemoriju, nesigurno u razgovorima s više poteza, pa se memorija umjesto toga spaja/dodaje na početak kao vodeća sistemska poruka. Zadano obuhvata samo `xiaomi-mimo`/`mimo`; proširite za samostalno hostirane krajnje tačke kompatibilne s OpenAI-jem (npr. Qwen3.5+/3.6) čiji predložak za razgovor nameće isto ograničenje jedne vodeće sistemske poruke. | ### Primjer Dockera s malo RAM-a `128` je namijenjeno samo za kontrolnu ploču. Agenti za kodiranje na ovoj hrpi nailaze na `FATAL ERROR` tokom dugih `/v1/responses` zahtjeva. Nemojte koristiti ovaj primjer kao Claude/Codex/Grok pristupnik. ```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. Sinhronizacija cijena Automatska sinhronizacija podataka o cijenama modela iz vanjskih izvora. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------- | ----------------- | ------------------------ | -------------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Opcionalna periodična sinhronizacija cijena. | | `PRICING_SYNC_INTERVAL` | `86400` (24h) | `src/lib/pricingSync.ts` | Interval sinhronizacije u sekundama. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Izvori podataka odvojeni zarezima. | --- ## Sinhronizacija Arena ELO | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------- | ----------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Periodična sinhronizacija ELO rang-liste Arena AI, podesiva putem zastavica funkcionalnosti na kontrolnoj ploči ili isključiva pomoću vrijednosti `false`. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | Oblik prefiksa koji se koristi za ID-ove modela u `GET /v1/models`. `dual` oglašava i kratki prefiks pseudonima i kanonski prefiks pružaoca za svaki model (kompatibilnost unazad — približno udvostručuje katalog); `alias` ispisuje jedan ID po modelu; `canonical` ispisuje samo puni prefiks ID-a pružaoca (pružaoci čiji je pseudonim već kanonski ID zadržavaju svoj pojedinačni unos). Klijenti to mogu nadjačati za svaki zahtjev pomoću `?prefix=alias`. Pogledajte [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24h) | `src/lib/arenaEloSync.ts` | Interval sinhronizacije u sekundama. | --- ## Pružalac PromptQL Playground (neslužbeno/eksperimentalno) Obrnuto projektovan GraphQL most sesije za prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`). Sve je opcionalno — zadane vrijednosti upućuju na javne krajnje tačke playgrounda; promijenite ih samo za samostalno hostovanu/alternativnu PromptQL implementaciju. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | --------------------------------------------------------------------------- | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | GraphQL krajnja tačka koja se koristi za operacije chata/sesije. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | GraphQL krajnja tačka koja se koristi za provjeru stanja/potrošnje kredita. | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Krajnja tačka koja se koristi za pokušaj osvježavanja tokena. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Maksimalno vrijeme (ms) za prozivanje `thread_events` prije isteka vremena. | --- ## HyperAgent web-provajder (neslužbeno/eksperimentalno) Obrnuto projektovani sesijski most za hyperagent.com (`src/shared/constants/providers/web-cookie.ts`). Opcionalno — zadana vrijednost upućuje na javnu krajnju tačku za naplatu/upotrebu; promijenite je samo za samostalno hostovanu/alternativnu HyperAgent implementaciju. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------- | --------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------- | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Krajnja tačka koja se koristi za dohvaćanje blokova kredita za naplatu/upotrebu. | --- ## Kvote upotrebe za Kilo Code Provjera ličnog salda u USD i upotrebe Kilo Passa za Kilo Code provajder. Opcionalno — zadana vrijednost upućuje na javni Kilo API; promijenite je samo za relej/testnu postavku. Autentifikacija koristi postojeći OAuth pristupni token 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 ličnog Kilo Code salda i upotrebe Kilo Passa. | --- ## Adobe Firefly web-provajder (neslužbeno/eksperimentalno) Osvježavanje sesije putem preglednika za Adobe Firefly web-provajder (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`). Opcionalno — sve zadane vrijednosti prilagođene su uobičajenoj instalaciji na desktop računaru. > **Uklonjeno u #9255.** Staro Chrome izvršno okruženje povezano putem CDP-a (adobeFireflyChromeRuntime.ts) > zamijenjeno je Playwright servisom za prijavu putem preglednika, 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 nikakvog efekta. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------ | -------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Postavite na `1` za pravi bezglavi Chrome (poznato je da ne radi za generisanje; samo za otklanjanje grešaka). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Uključivanje/isključivanje proaktivnog zagrijavanja preglednika. `0` onemogućava proaktivno zagrijavanje (oporavak od greške 408 usred serije i dalje se primjenjuje). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Postavite na `0` da biste onemogućili spremanje Adobe Firefly sesije na disk. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(nije postavljeno)_ | `open-sse/services/adobeFireflySession.ts` | Minimalni razmak (ms) koji se primjenjuje između uzastopnih slanja, čime se nadjačava ugrađena zadana vrijednost. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(nije postavljeno)_ | `open-sse/services/adobeFireflySession.ts` | Dodatni razmak (ms) koji se dodaje nakon uspješne serije, čime se nadjačava ugrađena zadana vrijednost. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(nije postavljeno)_ | `open-sse/services/adobeFireflyClient.ts` | Osnovno kašnjenje (ms) prije slanja zahtjeva za generisanje, čime se nadjačava ugrađena zadana vrijednost. | --- ## 19. Sinhronizacija modela (razvoj) | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------------------- | -------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(nije postavljeno)_ | `src/lib/modelsDevSync.ts` | Izričito nadjačavanje sinhronizacije cijena s models.dev. Nije postavljeno = poštuj Postavke > AI (`modelsDevSyncEnabled`). `0`/`false`/`off`/`no` **ima prednost nad bazom podataka** i preskače i periodičnu sinhronizaciju i SQL/JSON skeniranja funkcije `getModelsDevPricing()` (oporavak kada je kontrolna ploča blokirana u istoj petlji događaja). `1`/`true`/`on`/`yes` prisilno uključuje sinhronizaciju. Čuvanje/brisanje cijena i dalje poziva `backupDbFile("pre-write")`, što ne izvršava nikakvu radnju tokom ograničenja od 60 minuta ili kada je postavljen `DISABLE_SQLITE_AUTO_BACKUP`. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 h) | `src/lib/modelsDevSync.ts` | Interval sinhronizacije kataloga modela tokom razvoja, u sekundama. | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 h) | `src/lib/contextWindowResolver.ts` | Interval (u sekundama) za samokorigirajući usklađivač kontekstnog prozora (5004): prikvačuje prozore koje je deklarirao pružalac, otkrivene putem `/models`, kao nadjačavanja `auto:discovery` kada odstupaju od kataloga. Postavite na `0` da biste onemogućili. Ponovo koristi već sinhronizirane podatke (bez novog dohvaćanja); nikada ne prepisuje `manual` nadjačavanja. | --- ## 20. Postavke specifične za pružaoca | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24 h) | `src/lib/catalog/openrouterCatalog.ts` | TTL predmemorije kataloga OpenRouter modela. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Uključuje čitljive `name` vrijednosti u odgovorima `/v1/models`. Onemogućite za klijente koji očekuju samo ID-ove. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8 s) | `src/app/api/v1/models/catalogCache.ts` | Ograničenje čekanja hladne putanje za objedinjenu ponovnu izgradnju kataloga `GET /v1/models` (#12627). Nakon isteka vremena, poslužuje se posljednji ispravan odgovor 200 ako postoji. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 dana) | `src/lib/db/models/activeSyncedCatalog.ts` | Starost nakon koje sinhronizirana lista modela veze prestaje biti mjerodavna za usmjeravanje te se, u slučaju greške, koristi registar (#12849). Redovi bez vremenske oznake smatraju se zastarjelim. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | Maksimalno vrijeme čekanja na zadatke generiranja slika NanoBanana. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | Učestalost provjere statusa NanoBanana zadataka. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Osnovno kašnjenje za eksponencijalno povećavanje vremena čekanja između ponovnih pokušaja slanja zahtjeva za Adobe Firefly povećavanje rezolucije. | | `AWS_REGION` | _(nije postavljeno)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Regija koja se koristi za izradu AWS Bedrock krajnjih tačaka (Kiro, zvuk). | | `AWS_DEFAULT_REGION` | _(nije postavljeno)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Rezervna vrijednost kada `AWS_REGION` nije postavljen. | | `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 izvršne datoteke desktop verzije Chromea za izvršitelj Cloudflare AI Playground, koja se koristi kada provjera otiska preglednika bez grafičkog sučelja blokira Chromium isporučen uz Playwright. | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Zamjenjuje osnovni URL Cloudflare REST API-ja koji koristi implementator Workers releja skupa proxy servera (#4640 / 9router#1360). | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Zadani naziv Workers projekta predložen u modalnom prozoru „Implementiraj relej“ za skup proxy servera. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Postavite na `false` kako biste sakrili opciju Cloudflare Workers releja na kartici Skup proxy servera. | | `CLOUDFLARED_BIN` | automatsko otkrivanje | `src/lib/cloudflaredTunnel.ts` | Prilagođena putanja do izvršne 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 cloudflared datoteke `config.yml` (s `tunnel:`, `credentials-file:`, `ingress:`). Kada je postavljena, OmniRoute pokreće `tunnel --config run` (imenovani tunel) umjesto privremenog brzog tunela. | | `CLOUDFLARED_HOSTNAME` | _(iz konfiguracije ingressa)_ | `src/lib/cloudflaredTunnel.ts` | Zamjenska vrijednost za javni naziv hosta imenovanog tunela (npr. `ai.example.com`), koji se prijavljuje kao `publicUrl`/`apiUrl`. Kada nije postavljena, čita se iz prvog `ingress` naziva hosta u konfiguraciji. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Zamijenite osnovni URL Deno Deploy REST API-ja koji koristi implementator releja skupa proxy servera (#4643 / 9router#1437). | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Zadani naziv Deno Deploy aplikacije predložen u modalnom prozoru „Deploy Relay“ skupa proxy servera. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Postavite na `false` kako biste sakrili opciju Deno Deploy releja s kartice Proxy Pool. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 min) | `open-sse/services/searchCache.ts` | TTL za keširanje odgovora API-ja za pretragu (Perplexity, Brave itd.). | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Prikažite eksperimentalno korisničko sučelje pružaoca kompatibilnog s CC-om za releje namijenjene isključivo Claude Codeu. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Zamijenite host na kojem ugrađena instanca 9routera osluškuje. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Zamijenite port na kojem ugrađena instanca 9routera osluškuje. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Host za povezivanje WebSocket proxyja ugrađene usluge (zadano samo povratna petlja). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Port za WebSocket proxy server ugrađene usluge. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | Host CLIProxyAPI mosta (naslijeđena integracija). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | Port CLIProxyAPI mosta. | | `CLIPROXYAPI_API_KEY` | _(prazno)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | Rezervni ključ podatkovne ravni kada postavka `cliproxyapi_api_key` nije prisutna. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(prazno)_ | `src/lib/services/cliproxyAccountHealth.ts` | Upravljački ključ za očitavanje stanja računa iz eksterno upravljane CLIProxyAPI instance. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | Direktorij konfiguracije CLIProxyAPI-ja. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Host interfejs na kojem docker-compose objavljuje pomoćni kontejner `cliproxyapi` (#12578). Njegov podatkovni volumen sadrži OAuth/API vjerodajnice pružaoca, a prikvačena slika nema nadjačavanje `api-keys` podatkovne ravni putem varijabli okruženja (samo montirani `config.yaml`), pa `0.0.0.0` izlaže uslugu koja sadrži vjerodajnice cijelom LAN-u. | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Zamijenite port na kojem ugrađeni Mux (coder/mux) demon za orkestraciju agenata osluškuje (uvijek 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Zamijenite port na kojem ugrađeni open-wa demon (automatizacija WhatsApp Weba) osluškuje (uvijek 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Host za povezivanje/povezivanje s ugrađenom uslugom Dario (zadano samo povratna petlja). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Port ugrađene usluge Dario. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Host za povezivanje/povezivanje s ugrađenom uslugom Dario (zadano samo povratna petlja). | | `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` je namijenjen samo relejima trećih strana koji prihvataju isključivo Claude Code klijente. OmniRoute preoblikuje zahtjeve tako da ih ti releji prihvate. Ako samo želite koristiti Claude Code CLI ili niste sigurni šta su ti releji, ostavite ovu opciju onemogućenom i umjesto toga dodajte standardnog pružaoca kompatibilnog s Anthropic API-jem. --- ## 21. Stanje proxyja | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Vremensko ograničenje brze provjere stanja. | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Vremenski period (u satima) za izračunavanje prosječne latencije kandidatskih proxyja u strategiji grupe optimiziranoj za latenciju. | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | TTL predmemorije rezultata provjere stanja. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | TTL predmemorije za neuspjele provjere stanja proxyja. Neka bude kraći od `PROXY_HEALTH_CACHE_TTL_MS` kako bi se privremena prekoračenja vremena proxyja pri visokoj konkurentnosti brzo ponovo provjerila bez onemogućavanja brzog prekida za proxyje koji zaista ne rade. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Postavite na `false` da biste onemogućili pozadinski planer stanja proxyja koji periodično provjerava registrirane proxyje. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval ciklusa pozadinskog planera provjere stanja u ms (najmanje `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval pozadinske provjere oporavka u ms: koliko često se prethodno neispravni proxyji ponovo provjeravaju kako bi se oporavljeni proxy vratio u rotaciju bez ponovnog pokretanja. Vrijednosti manje od `60000` vraćaju se na zadanu vrijednost. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Ciljna adresa za provjeru dostupnosti koju koriste planer i krajnja tačka `/api/settings/proxies/auto-test`. Postavite je na interni URL ili URL koji sami hostujete kako biste izbjegli zadanu javnu adresu. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Broj provjera koje se istovremeno pokreću po grupi, a koji zajednički koriste planer i krajnja tačka `/api/settings/proxies/auto-test`. Zaokružuje se naniže na cijeli broj, uz najmanju vrijednost 1 i najveću 50. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Kašnjenje u ms između pokretanja dviju provjera unutar grupe. Bez njega cijela grupa kreće istovremeno, pa zajednička izlazna IP adresa može aktivirati ograničenje brzine ciljne adrese. Postavite na `0` da onemogućite razmak; najveća vrijednost je 5000. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Postavite na "false" kako biste prestali provjeravati stvarni host pružaoca usluge 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 postavljeno na `false` (zadano), automatizirane provjere dostupnosti (planer + dugme "Test All" na `/api/settings/proxies/auto-test`) služe **samo za čitanje** i nikada ne mijenjaju status proxyja — samo operater postavlja status na aktivan/neaktivan, tako da nepouzdana provjera ne može ostaviti dodijeljeni proxy van upotrebe (#6246). Postavite na `true` da vratite prethodno ponašanje provjere i postavljanja statusa. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Opcionalna zastavica funkcionalnosti (pogledajte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); vrijednost iz baze podataka kontrolne ploče ima prednost). `true` (ili `1`, `yes`) ponavlja prazne prevedene streaming razmjene kroz uobičajeni put vjerodajnica (do `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` ponovnih pokušaja), umjesto izlaganja praznog odgovora 200 ili odgovora 502 s praznim sadržajem. | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Opcionalna zastavica funkcionalnosti (pogledajte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); vrijednost iz baze podataka kontrolne ploče ima prednost). `true` (ili `1`, `yes`) prikazuje na kontrolnoj ploči zapažanja o izlaznom prometu grupe proxyja koja služe samo za čitanje (različite izlazne IP adrese, veze i najveći broj zabilježen iza jedne IP adrese tokom posljednja 24 h, iz dnevnika proxyja). Nikada se ne koristi za usmjeravanje. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Postavite na `true` kako biste omogućili planeru da automatski uklanja proxyje nakon uzastopnih ponovljenih 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 na `true` kako biste omogućili planeru da privremeno onemogući proxy (status `dead`, bez brisanja) nakon uzastopnih ponovljenih neuspjeha, umjesto da ga ukloni. Nedestruktivna alternativa opciji `PROXY_AUTO_REMOVE`: proxy se odmah isključuje iz razrješavanja skupa/rotacije (filter aktivnog statusa koji se koristi pri razrješavanju skupa opsega već ga isključuje) i automatski se ponovo aktivira kada ponovo počne uspješno prolaziti provjere. Koristi isti prag `PROXY_AUTO_REMOVE_AFTER`. Ako su obje zastavice postavljene na `true`, `PROXY_AUTO_REMOVE` ima prednost. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Omogućava OAuth tokovima i tokovima validacije pružaoca usluga da zaobiđu fiksirani proxy i povežu se direktno kada preliminarne provjere dostupnosti proxyja ne uspiju. Efektivni redoslijed prioriteta je: nadjačavanje iz baze podataka zastavica funkcionalnosti > varijabla okruženja > zadana vrijednost. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30 s) | `src/lib/resilience/settings.ts` | Zadani budžet **čekanja u redu**: koliko dugo zahtjev može čekati na slobodno mjesto kod pružaoca usluga i ostati u redu prije nego što bude odbijen, a da nikada ne stigne do uzvodnog sistema. Tajmer se poništava čim se zadatak počne izvršavati — izvršavanje je zasebno ograničeno postavkom `RATE_LIMIT_EXECUTION_MAX_WAIT_MS`. Varijabla okruženja postavlja samo zadanu vrijednost: sačuvana postavka `resilienceSettings.requestQueue.maxWaitMs`, a zatim postavka po vezi `rateLimitOverrides.maxWaitMs`, imaju prednost nad njom. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 min) | `open-sse/services/rateLimitManager.ts` | Gornja granica trajanja izvršavanja prihvaćenog zahtjeva prije nego što njegova rezervacija ograničenja brzine istekne — odvojena od budžeta čekanja u redu kako se sporo pokretanje dohvatanja na neinkrementalnim pristupnicima ne bi vremenski prekinulo (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (onemogućeno) | `open-sse/services/rateLimitManager.ts` | Ograničenje prijema u red: odbija zahtjev odgovorom 429 `queue_full` kada je ovoliko zahtjeva već u redu. `0` = neograničeno (zadano). | | `RATE_LIMIT_AUTO_ENABLE` | _(nije postavljeno)_ | `open-sse/services/rateLimitManager.ts` | Prisilno uključuje ili isključuje zaštitni mehanizam automatskog omogućavanja ograničenja brzine bez obzira na sačuvanu postavku kontrolne ploče. Prihvata `true`/`1`/`on` za prisilno uključivanje, a `false`/`0`/`off` za prisilno isključivanje. | | `PROVIDER_COOLDOWN_ENABLED` | _(nije postavljeno → isključeno)_ | `open-sse/services/providerCooldownTracker.ts` | Opcionalno globalno praćenje perioda hlađenja pružatelja/veze između zahtjeva. Podrazumijevano je ISKLJUČENO (preklapa se s funkcijama Connection Cooldown / Provider Circuit Breaker). Prihvata `true`/`1`/`on` za omogućavanje. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Minimalni period hlađenja (ms) prije ponovnog pokušaja s neuspješnim pružateljem/vezom. Eksponencijalno se povećava s uzastopnim neuspjesima. Koristi se samo kada je `PROVIDER_COOLDOWN_ENABLED` omogućen. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 min) | `open-sse/services/providerCooldownTracker.ts` | Maksimalno ograničenje perioda hlađenja (ms) prije ponovnog pokušaja s neuspješnim pružateljem/vezom bez obzira na okolnosti. Koristi se samo kada je `PROVIDER_COOLDOWN_ENABLED` omogućen. | | `STREAM_RECOVERY_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/resilience/settings.ts` (početna vrijednost) → `open-sse/services/streamRecovery.ts` (logika) | **Šta:** transparentni oporavak prekinutih uzvodnih tokova (port projekta free-claude-code). Zadržava početni SSE prozor do `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) tako da se prekid _prije potvrde_ — koji se desi prije nego što bilo koji bajt stigne do klijenta — ponovo otvara i pokušava neprimjetno. **Kada omogućiti:** nestabilni uzvodni servisi koji često prekidaju tok s 0 bajtova na početku; ostavite ISKLJUČENO ako si ne možete priuštiti do 750 ms dodatnog vremena do prvog tokena pri svakom toku. Prihvata `true`/`1`/`on`. Postavlja početnu vrijednost trajno sačuvane postavke Resilience; nakon postavljanja prednost ima postavka na kontrolnoj ploči. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/resilience/settings.ts` (početna vrijednost) → `open-sse/services/streamRecovery.ts` (logika) | **Šta:** nastavak toka u sredini (Faza 4.4) — nakon prekida _poslije potvrde_ (bajtovi su već stigli do klijenta), ponovo šalje zahtjev s djelimičnim tekstom kao unaprijed popunjenim odgovorom asistenta i spaja nedostajući sufiks. Samo OpenAI-kompatibilni tokovi običnog teksta; nikada se ne aktivira dok je poziv alata u toku. **Kada omogućiti:** duga generisanja koja se prekidaju usred odgovora, ako prihvatate da oporavljeni završetak stigne odjednom umjesto token po token. Nezavisno od `STREAM_RECOVERY_ENABLED` (drugačiji profil rizika). Prihvata `true`/`1`/`on`. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Opcionalni nadzor korisnog izlaza aktivnog toka. Otkriva tokove koji nastavljaju slati dijelove, ali ostaju ispod konfigurisane brzine izlaza asistenta; signali aktivnosti, događaji korištenja, prazne promjene te faze korištenja alata/rezonovanja ne predstavljaju se kao napredak. Odvojeno od vremenskih ograničenja neaktivnosti i krajnjeg roka. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Period odgode prije procjene propusnosti, ograničen 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 potpuni prozor. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Minimalna brzina izlaznih UTF-8 bajtova asistenta (konzervativna zamjena za tokene), 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 ispravnosti tokena pružatelja pri pokretanju. | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Minimalno nasumično odstupanje (ms) koje se dodaje na `HEALTHCHECK_STAGGER_MS` između provjera ispravnosti tokena pružatelja usluga, kako bi se spriječilo naglo slanje zahtjeva (problem #1220). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Maksimalno nasumično odstupanje (ms) koje se dodaje na `HEALTHCHECK_STAGGER_MS` između provjera ispravnosti tokena pružatelja usluga, kako bi se spriječilo naglo slanje zahtjeva (problem #1220). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Veličina grupe istovremenih provjera za početni prolaz provjere ispravnosti tokena; veće vrijednosti paralelno provjeravaju više veza, dok manje vrijednosti smanjuju vršno opterećenje (problem #7875, regresija problema #7719). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Broj automatskih ponovnih pokušaja pri odgovorima o periodu čekanja na nivou modela prije vraćanja greške klijentu. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Maksimalni interval odgode (u sekundama) između ponovnih pokušaja nakon perioda čekanja. Ograničen je ovom vrijednošću bez obzira na uzvodni `Retry-After`. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | URL Headroom proxyja za uštedu tokena. Životni ciklus kontrolne ploče (`api/headroom/*`) podrazumijevano pokreće lokalni `headroom-ai` CLI na povratnoj petlji; promijenite samo ako želite usmjeriti na eksterni Docker sidecar proxy. | ### Konstante za podešavanje oporavka toka Ponašanje zadržavanja pri oporavku podešava se pomoću fiksno kodiranih konstanti u `open-sse/config/constants.ts` (`STREAM_RECOVERY`), koje su ovdje prikazane kao referenca — njihova izmjena zahtijeva uređivanje koda, a ne varijablu okruženja: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — koliko dugo se početni SSE prozor zadržava kako bi se u slučaju ranog prekida mogao ponoviti pokušaj prije nego što se ijedan bajt preda klijentu. - `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — strogo ograničenje zadržanog prozora; izvršava se predaja (pražnjenje + prosljeđivanje) čim se prikupi ovoliko bajtova, bez obzira na tajmer. - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — maksimalan broj transparentnih ponovnih otvaranja uzvodnog toka dok zadržani sadržaj još nije predan. > **Ograničenje brzine kliznog prozora po pružatelju usluga (bez varijable okruženja):** _rezervno_ > ograničenje brzine kliznog prozora po pružatelju usluga, preneseno iz FCC-a, postoji u kodu > (`open-sse/services/providerDefaultRateLimit.ts`, povezano putem > `open-sse/services/rateLimitManager.ts`), ali se isporučuje s **praznom zadanom mapom** > i trenutno **nema varijablu okruženja za operatera** — omogućava se samo putem testne kuke / > izmjene koda. Namjerno nije navedeno u gornjoj tabeli. Ograničivač releja po `(token, IP)` > koji _ima_ postavku jeste `RELAY_IP_PER_MINUTE` (§3 Mreža i portovi). --- ## 22. Otklanjanje grešaka > [!CAUTION] > Ove varijable proizvode **opširan izlaz** i mogu otkriti osjetljive podatke. **Nikada ih nemojte omogućavati u produkciji.** | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CURSOR_DEBUG` | _(nije postavljeno)_ | `open-sse/executors/cursor.ts` | Postavite na `1` da biste omogućili opširne zapisnike Cursor izvršioca (dekodirani SSE segmenti itd.). | | `CURSOR_STREAM_DEBUG` | _(nije postavljeno)_ | `open-sse/executors/cursor.ts` | Alias varijable `CURSOR_DEBUG` kompatibilan sa starijim verzijama. | | `CURSOR_DUMP_FILE` | _(nije postavljeno)_ | `open-sse/executors/cursor.ts` | Opcionalna putanja datoteke u koju se zapisuju neobrađeni dekodirani Cursor segmenti kada je `CURSOR_DEBUG=1`. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Vremensko ograničenje neaktivnosti toka (ms) za Cursor izvršioca. | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Period tolerancije (ms) nakon mekog završetka composer kv_after_text kada su bajtovi još uvijek u međuspremniku — omogućava naknadnom pozivu alata exec_mcp da dovrši svoj okvir. | | `CURSOR_TOOL_DIRECTIVE` | omogućeno (`!== "0"`) | `open-sse/executors/cursor.ts` | Direktiva za potvrdu alata koja omogućava da composer-2.5 pouzdano izvršava pozive alata. Postavite na `0` da 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 operater i koji se dodaje sistemskoj poruci NAKON prevođenja (ubrizgavanje nakon prevođenja), te dospijeva do putanja codex/Responses i `/v1/messages`. Također se koristi kao prefiks direktive koji se uklanja iz ponovljenih blokova sistemskog uvoda. Ostavite nepostavljeno da 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` da biste uklonili ponovljene blokove uvoda sistemskog upita s početka toka openai→claude. Zadano je isključeno — heuristike su prilagođene engleskoj prozi i mijenjaju sadržaj odgovora, pa bi odgovor koji opravdano počinje takvim odjeljkom izgubio taj odjeljak. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Vremensko ograničenje dohvaćanja po slici (ms) za udaljeni vizuelni ulaz `image_url`. | | `CURSOR_STATE_DB_PATH` | _(ispitano)_ | `open-sse/utils/cursorVersionDetector.ts` | Nadjačava pretragu baze podataka stanja Cursor IDE-a koja se koristi za otkrivanje verzije IDE-a. | | `CURSOR_AGENT_CLI_VERSION` | _(otkrivanje / fiksiranje)_ | `open-sse/utils/cursorAgentCliVersion.ts` | ID izdanja 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 koristi za generiranje slika. Ako nije postavljena, rukovalac koristi `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 generiranja slika pomoću Cursor Agenta. | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Ograničenje konkurentnosti zajedničkog mjesta za Cursor zadatke generiranja slika. | | `CURSOR_IMG_MODEL` | zahtjev / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Nadjačava Cursor CLI `--model` za zadatke generiranja slika. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Učestalost provjere rezultata generiranja slika putem 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 putem UC-a (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Učestalost provjere rezultata generiranja videozapisa putem 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 putem UC-a (ms). | | `CURSOR_DATA_DIR` | _(ispitano)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Nadjačava direktorij podataka Cursor Agent CLI-ja (`…/versions/`); ista varijabla koju koristi službeni agent. | | `CURSOR_TOKEN` | _(nije postavljeno)_ | `scripts/ad-hoc/cursor-tap.cjs` | Direktni Cursor bearer token koji koriste razvojni alati. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | onemogućeno (uključuje se putem `"1"`) | `src/app/api/v1/chat/completions/route.ts` | Bilježi oznake vrste/dužine sadržaja za velike sadržaje razgovora 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` da biste bilježili detalje prevođenja Responses API SSE→JSON. | | `DEBUG_CLAUDE_NONSTREAM` | _(nije postavljeno)_ | `open-sse/handlers/responseTranslator.ts` | Postavite na `true` da biste prikazali prazne textContent segmente u putanji prevođenja Claude odgovora (samo za otklanjanje grešaka). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(nije postavljeno)_ | Okruženje za E2E testiranje | Postavite na `true` da biste omogućili režim E2E testiranja (ublažena autentifikacija, testne kuke). | --- ## 23. GitHub integracija Omogućite korisnicima da prijavljuju probleme direktno s kontrolne 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 lični pristupni token s opsegom `issues:write`. | | `GITHUB_TOKEN` | _(nije postavljeno)_ | pomoćni alati za trijažu problema / agenta u oblaku | Generički GitHub pristupni token koji se koristi kao rezervna opcija za `GITHUB_ISSUES_TOKEN`, kao i u pomoćnim alatima agenta u oblaku u `src/lib/cloudAgent/*`. | --- ## Scenariji implementacije Za SRE smjernice za pozadinski sistem prosljeđivanja (ponašanje ts/bifrost/auto, pozicioniranje 9router u odnosu na CLIProxyAPI i strategiju rezervnog rješenja za visoku propusnost), pogledajte [Strategiju pozadinskog sistema prosljeđivanja](/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. Skills izolovano okruženje (v3.8.0+) Ograničenja i sigurnosne postavke koje se primjenjuju kada Skills radni okvir (`src/lib/skills/`) izvršava automatizacije koje su definirali korisnici u izolovanom okruženju. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | --------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 s) | `src/lib/skills/builtins.ts` | Vremensko ograničenje prema stvarnom vremenu za svako izvršavanje Skills koda u izolovanom okruženju. Strogo ograničenje; sve što traje duže bit će prekinuto. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _(koristi `SKILLS_SANDBOX_TIMEOUT_MS` kao rezervnu vrijednost)_ | `src/lib/skills/` | Vremensko ograničenje za orkestraciju Skills procesa na visokom nivou. Postavite ga iznad `SKILLS_SANDBOX_TIMEOUT_MS` kako biste omogućili višekoračne radne tokove. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Maksimalan broj bajtova koji Skills automatizacija može pročitati iz bilo koje pojedinačne datoteke u izolovanom okruženju. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Maksimalan broj bajtova koji se može zabilježiti iz bilo kojeg pojedinačnog HTTP odgovora unutar Skills automatizacije. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Strogo ograničenje broja znakova sa stdout/stderr izlaza vraćenih iz jednog poziva izolovanog okruženja. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Postavite na `1`/`true` kako biste omogućili odlaznu mrežnu komunikaciju iz izolovanog okruženja. Radi sigurnosti je zadana vrijednost **izolovano**. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(prazno)_ | `src/lib/skills/builtins.ts` | Lista slika kontejnera, odvojenih zarezima, koje su dozvoljene za izvršavanje u izolovanom okruženju. Prazna vrijednost znači da je dozvoljena samo ugrađena zadana slika. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(ugrađena zadana vrijednost)_ | `src/lib/skills/` | Slika kontejnera koja se koristi prilikom pokretanja izolovanog okruženja zasnovanog na Dockeru. Nadjačajte je kako biste fiksirali prilagođenu ojačanu osnovnu sliku. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Izvršno okruženje kontejnera za Skills izolaciju: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. `auto` odabire najbolje instalirano izvršno okruženje prema operativnom sistemu hosta (Apple Container/OrbStack na macOS-u, WSL Container na Windowsu, Podman na Linuxu), koristeći Docker kao rezervnu opciju. | > [!CAUTION] > Omogućavanje `SKILLS_SANDBOX_NETWORK_ENABLED=true` otvara put za odlaznu komunikaciju proizvoljnom Skills kodu. U zajedničkim implementacijama kombinujte ga s `OUTBOUND_SSRF_GUARD_ENABLED=true` i strogim pravilima za `CORS_ORIGIN`/proxy. --- ## 25. Kvote pružatelja usluga, tuneli, sigurnosne kopije i ostalo vezano za izvršavanje Krajnje tačke za kvote pružatelja usluga, mrežni tuneli (Tailscale, Ngrok, MITM proxy za otklanjanje grešaka), 1Proxy skup za izlazni promet, sigurnosne kopije baze podataka i manja prilagođavanja pojedinačnih funkcionalnosti na koja se pozivaju izvršni sloj ili skripte. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Redis niz za povezivanje za pozadinski sistem ograničivača brzine. | | `ALIBABA_CODING_PLAN_HOST` | _(produkcijski host)_ | `open-sse/services/bailianQuotaFetcher.ts` | Zamjenjuje host koji se koristi za dohvaćanje kvota Alibaba Bailian plana za kodiranje. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | izvedeno iz hosta | `open-sse/services/bailianQuotaFetcher.ts` | Zamjena punog URL-a kvote za Alibaba Bailian. | | `QWEN_CLOUD_COOKIE` | _(nije postavljeno)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Kolačić sesije konzole za pristupnik kvotama ličnog Token Plan paketa za Qwen Cloud / Model Studio (API ključ za inferenciju ne može ga očitati). Kopirajte cijelo zaglavlje zahtjeva `Cookie` — ono sadrži `login_qwencloud_ticket` — iz bilo kojeg poziva prema `api.json` na `cs-data.qwencloud.com` putem home.qwencloud.com › Billing › Subscription (F12 › Network). Osjetljivo i ograničeno na sesiju; prednost dajte polju `qwenCloudCookie` za pojedinačnu vezu na kontrolnoj ploči. | | `QWEN_CLOUD_SEC_TOKEN` | _(nije postavljeno)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Ručna zamjena za `sec_token` za konzolni pristupnik Token Plan paketa. Osjetljivo; kada nije postavljeno, dohvaćač ga pronalazi iz HTML-a kontrolne ploče pomoću kolačića. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Zamjena hosta pristupnika za dohvaćanje kvote ličnog Token Plan paketa (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 kontrolne ploče koji se koristi za pronalaženje `sec_token` iz HTML-a prijavljene sesije. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Zamjena putanje prednjeg dijela konzole za dohvaćanje besplatne kvote za vizuelne i medijske sadržaje u Alibaba Model Studio. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Zamjenska putanja konzolnog front-enda za dohvaćanje besplatne multimodalne kvote servisa Alibaba Model Studio. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Zamjenska putanja konzolnog front-enda za dohvaćanje besplatne audio kvote servisa Alibaba Model Studio. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(nije postavljeno)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Opcionalna putanja do lokalne JSON datoteke koja zamjenjuje ugrađenu listu dozvoljenih tekstualnih modela besplatnog nivoa servisa Alibaba. Ako nije dostupna, 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šavanja prilikom izračunavanja ograničenja prompta. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Broj najnovijih umetnutih slika koje treba zadržati prilikom uklanjanja starijih kako bi sadržaj stao u kontekstni prozor (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | omogućeno | `open-sse/services/model.ts` | Uključuje ili isključuje naslijeđeni sloj kompatibilnosti pseudonima modela koji koriste stariji klijenti. | | `OMNIROUTE_EMERGENCY_FALLBACK` | omogućeno | `open-sse/services/emergencyFallback.ts` | Postavite na `false` (ili `0`) da biste onemogućili rezervni mehanizam za hitne slučajeve pri iscrpljenju budžeta, koji preusmjerava neuspjele zahtjeve na besplatni model `nvidia`/`openai/gpt-oss-120b`. Efektivni redoslijed prioriteta je zamjenska vrijednost iz baze podataka Feature Flags > varijabla okruženja > zadana vrijednost; ako nije dostupno, servis koristi 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 povratne pozive u OAuth stilu iz CLI pomoćnog alata Command Code. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Vrijednost koja se šalje nadređenom servisu Command Code kao zaglavlje `x-command-code-version`. Promijenite je da biste povećali verziju CLI-ja. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Osnovni URL nadređenog servisa Command Code za korištenje/kvotu, koji koristi telemetrija dohvaćanja kvote za pametne telefone. Promijenite ga za samostalno hostirani/alternativni Command Code API. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | Lokalni port za povezivanje MITM proxyja za otklanjanje grešaka. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Postavite na `1` da biste onemogućili provjeru uzvodnog TLS-a (samo za razvoj). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Vremensko ograničenje neaktivnosti socketa (ms) za proslijeđene veze; neaktivni socketi koji prekorače ovo ograničenje prekidaju se kako bi se izbjeglo curenje poluotvorenih tunela. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Port na kojem Antigravity MITM most osluškuje. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Krajnja tačka rutera na koju most prosljeđuje Antigravity saobraćaj. | | `CERT_DIR` | `~/.omniroute/mitm` | `bin/antigravity-bridge.mjs` | Direktorij koji sadrži `server.key`/`server.crt` za TLS osluškivač mosta; most se zatvara ako bilo koja od tih datoteka nedostaje. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Opširnost zapisnika odluka o usmjeravanju: `0` ih utišava, a veće vrijednosti bilježe više odluka o zaobilaženju/usmjeravanju. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Postavite na `true` kako biste omogućili model korijenskog CA certifikata i pojedinačnih krajnjih certifikata za svaki host (#6684). Nove instalacije dobijaju ga automatski; instalacije s prethodno postojećim pouzdanim naslijeđenim krajnjim certifikatom zadržavaju naslijeđeni certifikat s fiksnim SAN-om, osim ako se izričito ne omogući novi model. | | `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 namijenjeno za ručno postavljanje. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | Postavite na `1` (istinita vrijednost) kako biste uklonili početni `sudo` iz MITM naredbi za označavanje certifikata kao pouzdanih — za implementacije bez root prava / s korisničkim prostorima imena, gdje operater ručno označava CA kao pouzdan (npr. putem Nodeovog mehanizma dodatnih CA certifikata). | | `SKIP_ANTIGRAVITY_DNS` | _(nije postavljeno)_ | `src/mitm/dns/provision.ts` | Postavite na `true` kako biste u potpunosti preskočili dodavanje DNS unosa u `/etc/hosts` za nazive hostova Antigravity proxyja — za kontejnere bez dostupnog sudo/root pristupa. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(nije postavljeno)_ | `src/mitm/dns/dnsConfig.ts` | Postavite na `1` kako biste preskočili pisanje u datoteku hostova prilikom dodavanja/uklanjanja DNS unosa — za testna okruženja u izoliranom okruženju ili okruženja samo za čitanje. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Zaštita samo za testiranje/CI: postavite na `1` kako bi instalacija/deinstalacija povjerenja certifikata bila operacija bez učinka, tako da paket testova nikada ne mijenja spremište pouzdanih certifikata OS-a. Automatski se postavlja tokom pripreme testova i CI radnih tokova. | | `CHANGELOG_BASE_REF` | _(automatski)_ | `scripts/check/check-changelog-integrity.mjs` | Eksplicitna osnovna referenca za zaštitu od uklanjanja sadržaja iz CHANGELOG-a (zadano je osnovna grana PR-a u CI-ju ili najviša `release/v*`). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Postavite na `true` kako biste omogućili pozadinski planer automatske sinhronizacije skupa besplatnih proxy servera. Zahtijeva izričito uključivanje i zadano je isključeno. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Interval automatske sinhronizacije u milisekundama (zadano 30 min). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | Omogućite 1proxy kao izvor besplatnih proxy servera. Postavite na `false` da biste ga onemogućili. | | `FREE_PROXY_1PROXY_API_URL` | _(pogledajte oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | Zamjenski URL za 1proxy API. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Maksimalan broj proxy servera preuzetih iz 1proxy-ja po sinhronizaciji. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | Minimalni prag ocjene kvaliteta za uvoz iz 1proxy-ja. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Omogućite Proxifly kao izvor besplatnih proxy servera. Postavite na `false` da biste ga onemogućili. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Broj proxy servera koji se preuzimaju po Proxifly sinhronizaciji. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Filter nivoa anonimnosti za Proxifly (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | Omogućava IPLocate izvor besplatnih proxy servera. Dostupno samo uz izričito uključivanje. | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | Zamjenski osnovni URL za IPLocate listu proxy servera. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Omogućava Webshare izvor skupa proxy servera. Postavite na `false` da biste ga onemogućili; također zahtijeva da `FREE_PROXY_WEBSHARE_API_KEY` bude postavljen. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(nema)_ | `src/lib/freeProxyProviders/webshare.ts` | API token Webshare računa (`Authorization: Token `). Obavezan je — pružalac usluge ostaje onemogućen bez njega. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Zamjenski URL API-ja za Webshare listu proxy servera. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Maksimalan broj proxy servera koji se uvoze po Webshare sinhronizaciji. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Prikazuje/sakriva dugme Deploy Vercel Relay na kartici Proxy Pool. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Zamjenski osnovni URL za Vercel API (za testiranje). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Zadani naziv projekta unaprijed unesen u modalni prozor za implementaciju Vercel Relaya. | | `TAILSCALE_BIN` | _(automatsko otkrivanje)_ | `src/lib/tailscaleTunnel.ts` | Eksplicitna putanja do izvršne datoteke `tailscale`. | | `TAILSCALED_BIN` | _(automatsko otkrivanje)_ | `src/lib/tailscaleTunnel.ts` | Eksplicitna putanja do izvršne datoteke demona `tailscaled`. | | `TAILSCALE_AUTHKEY` | _(nije postavljeno)_ | `src/lib/tailscaleTunnel.ts` | Unaprijed dijeljeni Tailscale autentifikacijski ključ za neinteraktivni / bez nadzora `tailscale up` (prosljeđuje se putem `--auth-key=`). Kada nije postavljen, prijava se vraća na interaktivni URL za autentifikaciju putem preglednika. | | `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 datoteka sigurnosnih kopija koje se zadržavaju tokom ručnog/planiranog čišćenja sigurnosnih kopija. Snimci migracije adresiraju se prema sadržaju i ponovo koriste za identično stanje baze podataka; ne uklanjaju se unutar perioda istovremene migracije. Nadjačava vrijednost sačuvanu u Postavke → Zadržavanje sigurnosnih kopija baze podataka. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Maksimalna starost (u danima) sigurnosnih kopija koje se zadržavaju tokom ručnog/planiranog čišćenja. `0` onemogućava uklanjanje prema starosti. Snimci migracije ne uklanjaju se unutar perioda istovremene migracije. Nadjačava vrijednost sačuvanu u Postavke → Zadržavanje sigurnosnih kopija baze podataka. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | Interval okidanja (ms) posla na strani servera koji izvršava `backup-schedule.json`. Mora ostati znatno ispod jednominutne granularnosti crona; vrijednosti manje od `5000` ili one koje se ne mogu raščlaniti vraćaju se na `30000`. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Naznaka izvršnog okruženja kontejnera za provjeru dozvola ulazne tačke. Postavite na `podman` za bilo koju Podman topologiju. Budući da kontejner ne može utvrditi je li pogon lokalni ili mu se pristupa putem Podman Machinea, upozorenje ostaje neutralno u pogledu topologije i upućuje na `contrib/podman/README.md`. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Pozadinski sistem spremišta potrošnje dijeljene kvote: `sqlite` (zadano) ili `redis`. | | `QUOTA_STORE_REDIS_URL` | _(nije postavljeno)_ | `src/lib/quota/storeFactory.ts` | Redis niz veze 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ćenosti skupa (0..1); na toj vrijednosti ili iznad nje skup prelazi u strogi način rada (bez posuđivanja). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Množilac rezultata (0..1) koji se primjenjuje na cilj kada ga politika meke kvote postavi na niži prioritet. | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Množilac rezultata (0..1) koji se primjenjuje na iscrpljenog pružaoca (`credits_exhausted`/`rate_limited`) pri automatskom combo bodovanju kada je prethodno ograničenje kvote ISKLJUČENO (#4540). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | Period zadržavanja (u danima) za spremnike `quota_consumption` prije GC-a (`gcQuotaConsumption`). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Opcionalno (zadano ISKLJUČENO): omogućava strogo ograničenje kvote za automatsko usmjeravanje koje odbacuje kandidate s niskom kvotom prije bodovanja. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Opcionalno (zadano ISKLJUČENO): kada filter `auto/:` ne pronađe nijednog povezanog kandidata, vraća ranije ponašanje korištenja punog (nefiltriranog) skupa umjesto vraćanja praznog skupa. Kada je zadano ISKLJUČENO, `:free` znači „samo besplatni nivo“. | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | Ograničenje veličine panela (ograničeno na 1–10) za varijantu emitiranja `auto/*:chaos` — jedan zahtjev se prosljeđuje na najviše ovoliko modela različitih pružalaca. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(zadana vrijednost mehanizma)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Podešavanje minimalne veličine panela koje se prosljeđuje obrađivaču chaos emitiranja; ako nije postavljeno, zadržava se zadana vrijednost mehanizma. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(zadana vrijednost mehanizma)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Strogo vremensko ograničenje (ms) za cjelokupno paralelno slanje chaos panelu; 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 dohvaćanje sedmične kvote grok-web; može se promijeniti za testove ili nestandardnu CLI instalaciju. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(nije postavljeno)_ | `src/mitm/manager.ts` | Dodatni CA certifikat (PEM) kojem se vjeruje za AgentBridge uzvodne TLS veze. | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Maksimalan broj snimljenih zahtjeva koji se čuvaju u kružnom međuspremniku Inspektora saobraćaja. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Maksimalna veličina tijela snimljenog zahtjeva/odgovora (KB) prije skraćivanja. | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Lokalni port za HTTP proxy Inspektora saobraćaja. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Automatski pokreni HTTP proxy inspektora pri pokretanju sistema. | | `INSPECTOR_TLS_INTERCEPT` | `false` | `src/lib/inspector/captureState.ts` | Omogući TLS presretanje (MITM) za snimljeni HTTPS saobraćaj. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(nije postavljeno)_ | `src/lib/inspector/captureState.ts` | Dodatni nazivi hostova (odvojeni zarezima) koji se za potrebe snimanja tretiraju kao LLM krajnje tačke. | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Maskiraj tajne (zaglavlja za autentifikaciju / API ključeve) u snimljenom saobraćaju. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Broj minuta prije nego što zaštita sistemskog proxyja automatski vrati postavke proxyja operativnog sistema. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(automatski)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Token za autentifikaciju internog unosa snimljenih podataka u inspektor. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Maksimalan broj kolona prikazanih jednu pored druge u načinu poređenja u Playgroundu. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(nije postavljeno)_ | `src/app/(dashboard)/dashboard/playground/` | Zadani model za radnju „poboljšaj prompt” u Playgroundu (ako nije postavljeno, koristi se aktivni model). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Glavni prekidač za isključivanje Bifrost sidecar proxyja. Kada je postavljen na `0`, ruta vraća 503 sa zaglavljem `X-Bifrost-Killswitch`, a operater se preusmjerava na TS putanju. Koristite ga za onemogućavanje sidecara bez ponovnog implementiranja (incident rutera prvog nivoa, rotacija ključeva). | | `BIFROST_BASE_URL` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Kada je postavljeno, Bifrost sidecar proxy ruta prosljeđuje saobraćaj `/v1/chat/completions` ovom Go pristupniku umjesto TS obrađivaču releja. Nije postavljeno → 503 s rezervnom putanjom. Završna kosa crta se uklanja. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | Port na koji se nadzirana ugrađena Bifrost usluga veže (`127.0.0.1:`) kada OmniRoute upravlja životnim ciklusom Bifrost sidecara. Zadana vrijednost je `8080`. | | `BIFROST_API_KEY` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | API ključ za Bifrost pristupnik (šalje se kao `Authorization: Bearer ...`). Ako nije postavljen, ruta očekuje da zahtjev sadrži važeći OmniRoute API ključ; ovaj ključ služi samo za autentifikaciju na strani pristupnika. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Kada je vrijednost true, Bifrost sidecar ruta prenosi odgovore nazad putem SSE-a kroz pristupnik umjesto putem TS izvršitelja striminga. Postavite na `0` da biste prisilili JSON odgovore bez striminga kroz pristupnik. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Vremensko ograničenje po zahtjevu prilikom prosljeđivanja Bifrost pristupniku (ms). Po isteku vremena ruta vraća TS putanju releja putem zaglavlja `X-Bifrost-Fallback`. | | `OMNIROUTE_BIFROST_KEY` | _(nije postavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Alias za `BIFROST_API_KEY` (koriste ga skripte koje čitaju varijable okruženja putem `OMNIROUTE_*`). `BIFROST_API_KEY` ima prednost kada su obje postavljene. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Pozadinski sistem releja za `/api/v1/relay/chat/completions`: `ts \| bifrost \| auto`. `ts` = TypeScript relej (zadano kada Bifrost nije konfiguriran); `auto` odabire Bifrost kada je `BIFROST_BASE_URL` postavljen i `BIFROST_ENABLED` ≠ `0`, uz automatski povratak na TS ako sidecar nije dostupan; `bifrost` prisilno koristi Bifrost (strogo, bez rezervne opcije). Autentifikacija/ograničavanje stope/zaštita od ubacivanja/lista dozvoljenih vrijednosti uvijek se prvo izvršavaju u Next ruti. Odgovori sadrže `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 alias za `OMNIROUTE_RELAY_BACKEND` (iste vrijednosti `ts \| bifrost \| auto`). `OMNIROUTE_RELAY_BACKEND` ima prednost kada su obje varijable postavljene. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | Period čekanja (ms) nakon neuspješnog prolaza kroz Bifrost sidecar u načinu rada `auto`, prije nego što relej ponovo pokuša koristiti sidecar; dok traje period čekanja, zahtjev se usmjerava direktno na TS putanju, a zatim se ponovo vrši provjera. `0` onemogućava ovu funkciju. 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 (ekvivalentno opciji `--tls-cert`). Mora se koristiti zajedno s `OMNIROUTE_TLS_KEY`; samostalni server tada završava TLS na istom osluškivaču (`wss://` radi bez izmjena). Nije postavljeno → obični HTTP. Navođenje samo certifikata ili ključa, ili nečitljive putanje, bilježi upozorenje i zadržava HTTP. | | `OMNIROUTE_TLS_KEY` | _(nije postavljeno)_ | `bin/cli/commands/serve.mjs` | Putanja do privatnog PEM TLS ključa za HTTPS u okviru `omniroute serve` (ekvivalentno opciji `--tls-key`). Mora se koristiti zajedno s `OMNIROUTE_TLS_CERT`. Pogledajte `OMNIROUTE_TLS_CERT`. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | Glavni prekidač za rute `/api/local/*`. Kada nije postavljen ili ima vrijednost `0`, sve rute `/api/local/*` vraćaju 503 u produkciji. Mora imati vrijednost `1` u implementacijama koje nisu vezane za loopback kako bi se omogućili Redis pokretač i slični lokalni pokretači usluga jednim klikom. Dodatna zaštita uz klasifikaciju čuvara ruta `isLocalOnlyPath()` (`LOCAL_ONLY_API_PREFIXES` u `src/server/authz/routeGuard.ts`). | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(nije postavljeno)_ | `src/lib/security/localEndpoints.ts` | Bearer token za pozivaoce ruta `/api/local/*` koji nisu na loopback interfejsu (npr. desktop aplikacija). Kada je postavljen, zahtjevi s IP adresa koje nisu loopback moraju sadržavati `Authorization: Bearer `. Obavezan je kada je `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` u implementacijama koje nisu vezane za loopback. | | `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 grafičko sučelje `RedisLauncherPanel`. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | Port hosta za Redis pokretač jednim klikom. Promijenite ga ako host već koristi port 6379. Interni port kontejnera ostaje 6379. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | Interfejs hosta na kojem Redis pokretač jednim klikom objavljuje uslugu. Pokretač pokreće Redis BEZ lozinke, pa vezivanje za `0.0.0.0` svakom hostu na vašem LAN-u omogućava pristup Redis instanci bez autentifikacije — proširite dostupnost samo ako sami postavite lozinku na instanci. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfejs hosta na kojem docker-compose objavljuje Redis sidecar (#9286). Redis iz compose konfiguracije radi bez opcije `requirepass`; kontejneri aplikacije pristupaju mu putem compose mreže (`redis:6379`) — objavljeni port postoji samo za alate na strani hosta. `0.0.0.0` izlaže Redis bez autentifikacije cijelom LAN-u. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Port hosta za prateći Redis kontejner u compose konfiguraciji. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | Interfejs hosta na kojem docker-compose objavljuje vlastite portove aplikacije za kontrolnu ploču/API/live-WS (#12568). Pošto se `REQUIRE_API_KEY=false` isporučuje kao zadana vrijednost u `.env.example`, `0.0.0.0` izlaže anonimni `/v1` LLM proxy cijeloj LAN/WAN mreži — proširite pristup tek kada je `REQUIRE_API_KEY=true` ili kada reverzni proxy ispred njega provodi vlastitu autentifikaciju. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfejs hosta na kojem docker-compose objavljuje prateći Qdrant kontejner za memoriju (#12578). Primjenjuje se isto obrazloženje u vezi s izlaganjem LAN mreži kao za `REDIS_BIND_HOST`. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Interfejs hosta na kojem docker-compose objavljuje prateći kontejner Bifrost usmjerivača (#12578). Primjenjuje se isto obrazloženje u vezi s izlaganjem LAN mreži kao za `REDIS_BIND_HOST`. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Prefiks prostora imena koji se primjenjuje na svaki OmniRoute Redis ključ (ograničavač brzine, keš autentifikacije, spremište kvota, prekidač strujnog kruga za zagrijavanje). Sprečava kolizije ključeva kada se Redis instanca dijeli s drugim aplikacijama (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(nije postavljeno — mehanizam je onemogućen)_ | `src/lib/api/internalServiceAuth.ts` | Dijeljena tajna za interne REST prijelaze 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 pozivaoca. Poredi se pomoću `timingSafeEqual`. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(nije postavljeno)_ | `src/lib/api/internalServiceAuth.ts` | Varijanta internog servisnog tokena zasnovana na datoteci tajne: putanja do datoteke čiji je sadržaj, nakon uklanjanja okolnih razmaka, token. Uzima se u obzir samo kada ugrađena varijabla nije postavljena. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Obogaćuje listu pružalaca na kontrolnoj ploči sedmičnim statistikama rangiranja s OpenRoutera (#9324). Zadano je uključeno; postavite `false` da biste u potpunosti preskočili dohvaćanje u pozadini (ne blokira izvršavanje i nikada nije fatalno). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24 h) | `src/lib/catalog/openrouterProviderStats.ts` | TTL keša za snimak statistike pružalaca s OpenRoutera, u milisekundama. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Redis slika koju koristi pokretač Redisa jednim klikom. Po potrebi je zamijenite s `redis:8-alpine` ili ogledalom privatnog registra. | | `QDRANT_HOST` | `qdrant` | _(opcioni profil klastera)_ | Naziv hosta Qdrant sidecar servisa kada je aktivan `--profile memory`. Zadana vrijednost upućuje na naziv qdrant servisa unutar mreže; promijenite je za vanjsku implementaciju. Koristi se samo kada je `qdrantEnabled` postavljen na `true` u kodu (`src/lib/memory/vectorStore.ts:108`). | | `QDRANT_PORT` | `6333` | _(opcioni profil klastera)_ | REST port Qdrant sidecar servisa. | | `QDRANT_GRPC_PORT` | `6334` | _(opcioni profil klastera)_ | gRPC port Qdrant sidecar servisa. Koriste ga klijentske biblioteke koje za operacije prijenosa preferiraju gRPC u odnosu na REST. | | `QDRANT_API_KEY` | _(nije postavljeno)_ | _(opcioni profil klastera)_ | Opcioni API ključ za Qdrant Cloud ili autentificiranu lokalnu instancu. Prazno → zaglavlje `api-key` se ne šalje. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(opcioni profil klastera)_ | Naziv kolekcije za ugradnje memorije razgovora u OmniRouteu. Kreira se pri prvom pokretanju s brojem dimenzija definiranim varijablom `QDRANT_VECTOR_SIZE`. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(opcioni profil klastera)_ | Zadani naziv modela za ugradnje zabilježen u metapodacima Qdrant kolekcije. Stvarne ugradnje generira pružatelj na kojeg upućuje polje `embeddingModel` u postavkama OmniRoutea. | | `QDRANT_VECTOR_SIZE` | `1536` | _(opcioni profil klastera)_ | Dimenzija vektora ugradnje. Mora odgovarati modelu kojim izrađujete ugradnje (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(opcioni profil klastera)_ | Preciznost izgradnje HNSW indeksa. Veća vrijednost = sporija izgradnja, brže pretraživanje. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Glavni prekidač za rotaciju računa koju može konfigurirati operater. Kada je `false`, nijedna od klasa `OMNIROUTE_ROTATE_*` navedenih u nastavku ne pokreće prebacivanje na rezervni račun (isključeno glavno stanje također blokira klase 429/500/502 koje su zadano omogućene). Omogućava nadzornom korisničkom sučelju (npr. VibeProxy desktop aplikaciji) da preslika vlastita pravila rotacije na backend mehanizam za prebacivanje između računa. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Period čekanja (u sekundama) koji se primjenjuje na račun s ograničenom stopom zahtjeva kada vanjski servis ne pruži izričitu informaciju o vremenu poništavanja. `0` = koristi zadani period čekanja mehanizma umjesto fiksno zadane vrijednosti. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Odraz postavke korisničkog interfejsa „ne označavaj kao ograničeno stopom bez vremena poništavanja“. | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | Omogućava rezervni mehanizam za greške sa statusom `429`. Kada je `false` (i `OMNIROUTE_ROTATION_ENABLED=true`), `429` više ne pokreće rotaciju računa, već se vraća klijentu. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj grešaka `429` unutar perioda `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` potreban prije rotacije računa. `1` (zadano) odmah pokreće rotaciju, čuvajući prethodno ponašanje. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni vremenski okvir (u sekundama) tokom kojeg se greške `429` broje za dostizanje praga `OMNIROUTE_ROTATE_429_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | Omogućava rezervni mehanizam za serverske greške `5xx` (isključujući `502`, koja ima vlastitu klasu). Kada je `false`, ove greške više ne pokreću rotaciju računa. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj grešaka `5xx` unutar perioda `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` potreban prije rotacije računa. `1` (zadano) odmah pokreće rotaciju. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni vremenski okvir (u sekundama) tokom kojeg se greške `5xx` broje za dostizanje praga `OMNIROUTE_ROTATE_500_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | Omogućava rezervni mehanizam za greške `502` (neispravan pristupnik). Kada je `false`, greške `502` više ne pokreću rotaciju računa. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj grešaka `502` unutar perioda `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` potreban prije rotacije računa. `1` (zadano) odmah pokreće rotaciju. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Klizni vremenski okvir (u sekundama) tokom kojeg se greške `502` broje za dostizanje praga `OMNIROUTE_ROTATE_502_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Opcionalno (zadano ISKLJUČENO): kada je `true`, obična greška `400` (neispravan zahtjev) također pokreće rotaciju računa. Ovo samo proširuje postojeće ponašanje — nikada ne blokira postojeće ponašanje mehanizma prema kojem se, bez obzira na ovu zastavicu, prelazi na drugi račun kada `400` sadrži tekst o ograničenju stope/kvoti. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Broj grešaka `400` unutar perioda `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 vremenski prozor (u sekundama) tokom kojeg se greške `400` broje prema pragu `OMNIROUTE_ROTATE_400_THRESHOLD`. | ### Planer Claude zagrijavanja Zagrijavanje pokretano cron rasporedom za Anthropic OAuth veze za koje je ova opcija uključena, tako da se petosatni prozor ograničenja stope otvara trivijalnim zakazanim zahtjevom umjesto prvim stvarnim zahtjevom (#8848). Planer je isključen osim ako `OMNIROUTE_WARMUP_ENABLED` ima vrijednost koja se tumači kao istinita **i** veza je označena u `settings.claudeWarmup.connections`; prazna lista veza znači da se ništa ne zagrijava čak ni kada je varijabla okruženja uključena. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------ | --------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_WARMUP_ENABLED` | _(nije postavljeno → isključeno)_ | `src/lib/warmupScheduler.ts` | Glavni prekidač za planer zagrijavanja. Prihvata `1`/`true`/`yes`/`on` (bez razlikovanja velikih i malih slova, uz uklanjanje okolnih razmaka). Svaka druga vrijednost, kao i nepostavljena vrijednost, ostavlja planer isključenim. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Cron izraz s pet polja za ciklus zagrijavanja, koji se procjenjuje u vremenskoj zoni `America/Los_Angeles` (Anthropicova vremenska zona resetovanja), bez obzira na sat domaćina. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Broj veza koje se paralelno zagrijavaju u svakom ciklusu. Ograničeno na raspon `1`-`10`; za vrijednost koja nije broj koristi se zadana vrijednost `3`. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Model koji se koristi za zahtjev zagrijavanja. Promijenite ga samo ako zadani model nije dostupan u vašem planu; odaberite najjeftiniji model koji ipak otvara prozor. | ### VNC sesije za prijavu putem preglednika i alias direktorija podataka Kontejnerizirani Chromium+VNC koristi se za interaktivno prikupljanje vjerodajnica pri prijavi putem preglednika (`/api/vnc-session`), zajedno sa zastarjelim aliasom `DATA_DIR`. Sve je opcionalno — zadane VNC postavke ciljaju uključenu sliku `omniroute-vnc-chromium:local` i mijenjaju se samo radi korištenja prilagođene slike kontejnera, portova ili podešavanja životnog ciklusa. | Varijabla | Zadana vrijednost | 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 ovdje navedite prilagođenu sliku. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Binarna datoteka izvršnog okruženja za kontejnere 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 protokola Chrome DevTools 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 hostu koji sadrži trajno pohranjene profile za prijavu putem preglednika. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 min) | `src/lib/vncSession/manifest.ts` | Vrijeme neaktivnosti (ms) nakon kojeg se neaktivna VNC sesija uklanja. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 min) | `src/lib/vncSession/manifest.ts` | Čvrsto ograničenje (ms) trajanja pojedinačne 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` | Vrijeme čekanja (ms) da preglednik u kontejneru postane spreman za CDP. | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Vrijeme čekanja (ms) za preuzimanje snimljene 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 komandne linije proslijeđene Chromiumu u kontejneru. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Namjenska Docker mreža kojoj se pridružuje VNC kontejner za prijavu (#12571), umjesto zadane bridge mreže, tako da susjedni kontejneri ne mogu pristupiti njegovom CDP bridge portu. | | `VIBEPROXY_DATA_DIR` | _(nije postavljeno)_ | `open-sse/services/notionThreadSessions.ts` | **Naslijeđeni alias** za `DATA_DIR`, koji se provjerava tek kada ni `DATA_DIR` ni `OMNIROUTE_DATA_DIR` nisu postavljeni. Određuje lokaciju predmemorije Notion sesija 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`. Ostavite sve vrijednosti u nastavku nepostavljene u produkcijskim okruženjima. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | -------------------------------------- | ------------------------------ | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | E2E režim inicijalizacije (`auth`, `fresh`, `reuse`) za Playwright pokretač. | | `OMNIROUTE_E2E_PASSWORD` | koristi `INITIAL_PASSWORD` | `scripts/dev/run-next-playwright.mjs` | Administratorska lozinka koja se umeće u Playwright okruženje. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Onemogućava lokalnu provjeru stanja tokom Playwright izvršavanja. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Onemogućava petlju provjere stanja OAuth tokena tokom testiranja. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(nije postavljeno)_ | `src/lib/tokenHealthCheck.ts` | Pružaoci odvojeni zarezima koji su isključeni iz proaktivnog ciklusa osvježavanja tokena (npr. `codex,openai`). Ciljana alternativa potpunom onemogućavanju provjere stanja — pružaoci s kratkim TTL-om nastavljaju se osvježavati, dok kaskadni pružaoci ostaju isključivo reaktivni. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Utišava poruke provjere stanja u Playwright standardnom izlazu. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Preskače Next.js produkcijsku izgradnju prije pokretanja Playwrighta (CI optimizacija). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | Preskače OmniRoute kuku za deinstalaciju (CI je koristi kako bi `node_modules` ostao netaknut). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Vrijeme čekanja (ms) da server postane dostupan prije pokretanja testova ekosistema/protokola. | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL na kojem Electron okvir za osnovno testiranje očekuje da upakovana aplikacija bude dostupna. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Ukupno vrijeme isteka (ms) prije nego što okvir za osnovno testiranje odustane. | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Period stabilizacije (ms) nakon učitavanja stranice. | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(automatski)_ | `scripts/dev/smoke-electron-packaged.mjs` | Eksplicitna putanja do izvršne datoteke upakovane Electron aplikacije. | | `ELECTRON_SMOKE_DATA_DIR` | _(tmpdir)_ | `scripts/dev/smoke-electron-packaged.mjs` | Direktorij podataka za Electron osnovno testiranje. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Postavite na `1` kako biste sačuvali direktorij s testnim podacima nakon izvršavanja. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Postavite na `1` za prosljeđivanje Electron zapisa na stdout tokom izvršavanja. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: ponovo pokrenite koristeći isti direktorij s podacima i provjerite da drugo pokretanje odabire izvorni SQLite upravljački program. | | `CLI_DEVIN_BIN` | _(pretraga u PATH-u)_ | `open-sse/executors/devin-cli.ts` | Nadjačajte putanju do izvršne datoteke Devin CLI-ja. | ### Proces prevođenja dokumentacije Koristi ga `scripts/i18n/run-translation.mjs` (naredba `npm run i18n:run`). Svih pet varijabli je standardno nepostavljeno — postavite ih u `.env` samo na računarima koji trebaju moći pokretati prevodilac dokumentacije. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ----------------------------------- | ----------------- | ---------------------------------- | ------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(nepostavljeno)_ | `scripts/i18n/run-translation.mjs` | Osnovni URL kompatibilan s OpenAI-jem za pozadinski sistem prevođenja. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(nepostavljeno)_ | `scripts/i18n/run-translation.mjs` | Bearer token za pozadinski sistem prevođenja (nikada se ne bilježi). | | `OMNIROUTE_TRANSLATION_MODEL` | _(nepostavljeno)_ | `scripts/i18n/run-translation.mjs` | ID modela, npr. `gpt-4o-mini` ili `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Vremensko ograničenje po zahtjevu u milisekundama. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Paralelni zahtjevi za prevođenje pri obradi više datoteka / lokalizacija. | --- ## 27. Radar izvor (samostalno hostovanje) Opcionalni dodatak kontrolisan zastavicom funkcionalnosti RADAR_ENABLED (zadano isključena — zastavica funkcionalnosti koja se prebacuje putem postavki/baze podataka, a ne varijable okruženja; pogledajte [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)). Prve četiri varijable u nastavku predstavljaju opcionalna nadjačavanja za samostalno hostovan ili račvan izvor i tokove ključeva za podržavaoce. Peta, `RADAR_ADMIN_URL`, zasebna je veza bez zadane vrijednosti do vlasnikovog privatnog panela za operacije. 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) pogledajte [docs/frameworks/RADAR.md](../frameworks/RADAR.md). Generički čitač objava na Početnoj stranici/Dnevniku izmjena nije konfigurisan varijablom okruženja i ne zavisi od zastavice funkcionalnosti RADAR_ENABLED. On čita URL javnog repozitorija `news.json`, deklarisan u `src/shared/utils/releaseNotes.ts`, isključivo putem GET zahtjeva; ID-ovi odbačenih objava 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 zajednički koriste zasebno potpisani izvori kataloga, preporuka, ponuda za podržavaoce i Intel podataka. Nadjačajte ga kako bi upućivao na samostalno hostovanu ili račvanu uslugu. | | `RADAR_FEED_PUBKEY` | _(fiksirani zadani ključ)_ | `src/lib/radar/pinnedKeys.ts` | Ed25519 javni ključ (base64-DER SPKI ili PEM) koji se koristi za provjeru potpisa prilagođenog izvora. | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | URL koji otvara dugme „Ja sam doprinosilac” na kontrolnoj ploči (tok preuzimanja ključa za podržavaoce putem GitHub OAuth-a). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL koji otvara dugme „Podržite projekat” na kontrolnoj ploči (stranica za plaćanje/planove). | | `RADAR_ADMIN_URL` | _(nije postavljeno)_ | `src/lib/radar/links.ts` | Veza do privatnog panela za operacije namijenjena samo vlasniku. HTTPS je obavezan, osim za HTTP povratno SSH prosljeđivanje; ako vrijednost nije postavljena ili nije važeća, navigacijska stavka se ne kreira. | --- ## Revizija: uklonjene / neaktivne varijable Sljedeće varijable pojavljivale su se u prethodnim verzijama datoteke `.env.example`, ali **nemaju reference tokom izvršavanja** u trenutnoj 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 tokom izvršavanja. Možda će se vratiti u budućoj funkcionalnosti za više instanci. | | `SQLITE_MAX_SIZE_MB=2048` | Ne koristi se u izvornom kodu. Veličina baze podataka nije vještački ograničena. | | `SQLITE_CLEAN_LEGACY_FILES=true` | Ne koristi se u izvornom kodu. Čišćenje zastarjelih datoteka vjerovatno 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 koriste 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` | Uklonjene su u v3.8.0. Izvršno okruženje više ne čita ove varijable okruženja — vjerodajnice dolaze iz Dashboarda / `data/provider-credentials.json` / šifrirane baze podataka. | | `CURSOR_PROTOBUF_DEBUG` | Uklonjena je u v3.8.0. Cursor izvršitelj koristi `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` (pogledajte §22). | | `CLI_COMPAT_KIRO` | Uklonjena je u v3.8.0. Kiro se nalazi u `CLI_COMPAT_OMITTED_PROVIDER_IDS` — njegovo uključivanje ili isključivanje nema efekta. | | `QIANFAN_API_KEY` | Uklonjena je zajedno s drugim nekorištenim zamjenskim API ključevima pružalaca usluga u v3.8.0. | ### Ispravke zadanih vrijednosti | Varijabla | Stara vrijednost u `.env.example` | Stvarna zadana vrijednost u kodu | Ispravljeno | | ------------------------- | --------------------------------- | -------------------------------- | ----------------------------------------------------------------- | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Uklonjena obmanjujuća vrijednost; `7` dokumentirano kao zadano | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Uklonjena obmanjujuća vrijednost; `7` dokumentirano kao zadano | ### Ponovno generiranje OpenCode konfiguracije (ad hoc alati) Koristi ih `scripts/ad-hoc/regen-opencode-config.ts` za ponovno generiranje datoteke `opencode.json` s tačnim vrijednostima `limit.context` i `limit.output` preuzetim iz pokrenute OmniRoute instance. Nijedna od njih nije potrebna 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 upituje za `/v1/models`. | | `OMNIROUTE_KEY` | _(nije postavljeno)_ | `scripts/ad-hoc/regen-opencode-config.ts` | API ključ za autentifikaciju prema OmniRoute krajnjoj tački `/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 OpenCode stilu (`sk-...`) koji se upisuje u regenerisani `opencode.json`. Ako nije postavljen, koristi se `OMNIROUTE_KEY`. | ### Okruženje za vanmrežnu evaluaciju kompresije (ad hoc alati) Koristi ga `scripts/compression-eval/index.ts`, CLI za vanmrežnu evaluaciju kompresije. Nije potrebno za uobičajeni rad — namijenjeno je samo programerskim alatima. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ---------------------------- | ----------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (prazno) | `scripts/compression-eval/index.ts` | JSON vjerodajnice koje daje operater za pružaoca usluga kojeg koristi CLI za vanmrežnu evaluaciju kompresije (raščlanjuju se pomoću `JSON.parse`). Ostavite nepostavljeno za probno pokretanje. | ### VNC sesije preglednika Koristi ih `src/lib/vncSession/manifest.ts` za konfiguraciju sesija Chromiuma bez grafičkog interfejsa zasnovanih na Dockeru za pružaoce 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 Docker izvršne datoteke koja se koristi za pokretanje VNC kontejnera. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Docker slika za VNC Chromium kontejner. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(ugrađene zastavice)_ | `src/lib/vncSession/manifest.ts` | Dodatni Chromium CLI argumenti koji se prosljeđuju pregledniku unutar kontejnera. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | VNC port unutar kontejnera. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Port protokola Chrome DevTools unutar kontejnera. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Direktorij profila unutar kontejnera. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(nije postavljeno)_ | `src/lib/vncSession/manifest.ts` | Direktorij na strani domaćina za trajne profile preglednika. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | Vrijeme neaktivnosti (ms) nakon kojeg se VNC sesija prikuplja. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Maksimalno trajanje sesije (ms). | | `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 za spremnost preglednika (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Vremensko ograničenje za prikupljanje/čišćenje (ms). | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Namjenska Docker mreža kojoj se kontejner pridružuje (#12571), odvojena od zadanog mrežnog mosta. | | `VIBEPROXY_DATA_DIR` | _(nije postavljeno)_ | `open-sse/services/notionThreadSessions.ts` | Direktorij za trajnu pohranu sesija Notion niti. | ### Autentifikacija internih usluga | Varijabla | Zadana vrijednost | Opis | | --------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Direktno navedeni token za autentifikaciju između usluga upravljačkog sloja. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Putanja do datoteke koja sadrži token interne usluge (preporučuje se u kontejnerima; nadjačava direktno navedenu varijablu). | ### Statistika pružalaca usluga OpenRouter | Varijabla | Zadana vrijednost | Opis | | ----------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Postavite na `false` kako biste preskočili dohvaćanje statistike OpenRoutera po pružaocu usluga radi obogaćivanja kataloga. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | TTL predmemorije (ms) za dohvaćenu statistiku pružalaca usluga OpenRouter. | ### Ugrađeno Redis povezivanje | Varijabla | Zadana vrijednost | Opis | | --------------------------- | ----------------- | ------------------------------------------------------------------------------------ | | `REDIS_BIND_HOST` | `127.0.0.1` | Adresa povezivanja za ugrađeni Redis servis. | | `REDIS_PORT` | `6379` | Port za ugrađeni Redis servis. | | `OMNIROUTE_REDIS_BIND_HOST` | – | Zamjenska vrijednost specifična za OmniRoute za adresu povezivanja ugrađenog Redisa. | --- ## 24. Dodaci u izdanju v3.8.50 Ove postavke uvedene su nakon prethodnog snimka ugovora okruženja. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Maksimalno vrijeme čekanja na mjesto za prihvat zahtjevnog chata prije ponovljivog odgovora `503`; kratko ograničeno čekanje serijalizira nalete agenata umjesto trenutnog odgovora `503`. Vrijednost `0` vraća trenutno odbijanje. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Budžet bajtova u redu čekanja za čekanje na prihvat: ograničava ukupan broj baferovanih bajtova tijela koji čekaju na nivou cijelog procesa kako čekanje ne bi povećalo zauzeće memorije (#4380). Zahtjevi koji premašuju budžet odmah dobijaju ponovljivi odgovor `503`. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | Zastarjela postavka bez efekta od #10110: trake za prihvat po sesiji uklonjene su u korist jednog budžeta na nivou cijelog procesa. Prihvaća se radi kompatibilnosti konfiguracije; zanemaruje se. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Zastarjela postavka bez efekta od #10110: trake za prihvat po sesiji uklonjene su u korist jednog budžeta na nivou cijelog procesa. Prihvaća se radi kompatibilnosti konfiguracije; zanemaruje se. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (isključeno) | `open-sse/services/admission/runtime.ts` | Prilagodljive virtualne trake za prihvat tokom izvršavanja (#9654): glavni prekidač za prilagodljivi pristupnik po zakupcu (sistem 2). Razlikuje se od zastarjelih varijabli traka po vezi iznad (TTL_MS / MAX_SESSIONS, bez efekta od #10110). Funkcijska zastavica na kontrolnoj ploči istog naziva; varijabla okruženja ima prednost nad postavkom na kontrolnoj ploči; zahtijeva ponovno pokretanje. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Ograničava koliko dugo poziv za trenutno pokretanje čeka da se završi posao koji je u toku prije pokretanja posla iz reda čekanja. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Održava IMS i stanje rizika preglednika ažurnim putem Chrome CDP sesija ograničenih na račun; postavite na `0` da biste onemogućili. | | `ADOBE_FIREFLY_SESSION_DISK` | omogućeno | `open-sse/services/adobeFireflySession.ts` | Trajno pohranjuje popravljene Adobe sesije u `DATA_DIR`; postavite na `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 generisanje u Adobe Firefly. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatni period mirovanja nakon svakog trećeg uspješnog Adobe slanja. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Pravi bezglavi način rada namijenjen samo otklanjanju greš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` | Opcionalna apsolutna putanja do izvršne datoteke preglednika Chrome koju koriste izvršioci zasnovani na pregledniku kada automatsko otkrivanje platforme nije dovoljno. | | `TELEGRAM_BOT_TOKEN` | _(nije postavljeno)_ | `src/lib/telegram/config.ts` | BotFather token koji omogućava dolazni webhook i potpisuje `initData` Mini aplikacije. | | `TELEGRAM_WEBHOOK_SECRET` | _(nije postavljeno)_ | `src/lib/telegram/config.ts` | Dijeljena tajna registrovana putem `setWebhook` i provjerena prema zaglavlju `X-Telegram-Bot-Api-Secret-Token` pri svakoj webhook isporuci. Obavezna je za webhook putanju; ako nije postavljena, webhook isporuke odbijaju se odgovorom 503. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Model koji se koristi za odgovore u Telegram chatu. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Zamjenski osnovni URL Bot API-ja za proxyje ili samostalno hostovane Bot API servere. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Vremensko ograničenje u milisekundama za odlazne Bot API pozive. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (omogućeno) | `scripts/build/optionalPackStaging.mjs` | Postavite na `0` da biste preskočili generisanje `.tar.gz` tar arhiva tokom pripreme opcionalnih ML/pregledničkih paketa za samostalno Electron stablo (direktoriji paketa i `optional-packs.index.json` i dalje se generišu). Koristi ga tok rada za izdavanje desktop aplikacije radi smanjenja veličine artefakata za otpremanje. | ### ChatGPT Web (Codex) Globalne zadane vrijednosti za bezglavi preglednik i odlazni tunel alata. Vrijednosti veze postavljene na kontrolnoj ploči imaju prednost. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(automatsko otkrivanje)_ | `open-sse/executors/chatgpt-web-codex.ts` | Eksplicitna putanja do Chromea/Chromiuma za rad putem npm-a, systemd-a i PM2-a. | | `CHROME_PATH` | _(automatsko otkrivanje)_ | `open-sse/executors/chatgpt-web-codex.ts` | Zajednička rezervna opcija za eksplicitnu putanju do Chromea/Chromiuma. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(nije postavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Interna CDP krajnja tačka; Docker koristi sidecar na portu `9223`. | | `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 zahtjeve bez autentifikacije — tada zaštitu pruža samo mrežna izolacija Compose mreže `chatgpt-web-codex-net`. Generišite pomoću `openssl rand -hex 32`. | | `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(nije postavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globalni OpenAI ID tunela za lokalne cikluse 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 zapisnike. | | `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | Tačan naziv novokreiranog 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` | Kada je postavljeno na `1`, dijagnostičke slike preglednika snimaju se na svakoj kontrolnoj tački. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(nije postavljeno)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Opcionalna apsolutna putanja do trajne izvršne datoteke pokretača. | | `CODEX_CHATGPT_WEB_BUN` | _(automatsko otkrivanje)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Opcionalna apsolutna putanja do izvršne datoteke Bun runtimea. | | `CODEX_WEB_GPT_BUN` | _(nije postavljeno)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Naslijeđena rezervna opcija za `CODEX_CHATGPT_WEB_BUN`; nove postavke koriste kanonski naziv. | --- ## OmniConductor most Dugotrajni SSE potrošač koji preslikava zadatke OmniConductor čvorišta u lokalni A2A TaskManager (`src/lib/conductor/`). Opcionalno — most se pokreće samo kada je postavljen `CONDUCTOR_HUB_URL`. Isključivo na strani servera: token čvorišta nikada ne smije dospjeti do preglednika. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------ | ----------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(prazno)_ | `src/lib/conductor/boot.ts` | Osnovni URL OmniConductor čvorišta (npr. `http://127.0.0.1:7910`). Ako nije postavljeno, most je onemogućen. | | `CONDUCTOR_HUB_TOKEN` | _(prazno)_ | `src/lib/conductor/boot.ts` | Vjerodajnica čvorišta za SSE tok — emitirajte ravnopravni čvor vrste `spokesperson` na čvorištu (`POST /v1/peers`, administratorski pristup). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(prazno)_ | `src/lib/conductor/hubProxy.ts` | Vjerodajnica za dolazno delegiranje A2A→čvorište zadataka (`POST /v1/tasks`); koristi `CONDUCTOR_HUB_TOKEN` kao rezervnu vrijednost kada nije postavljena. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Osnovni URL usluge glasnogovornika (Faro) iza proxyja za razgovor na kontrolnoj ploči (`/api/conductor/ask`). | ### Raspoređivanje svjesno kvota Koriste ga `open-sse/services/combo.ts` i `src/lib/quota/quotaScheduler.ts` za provjere budžeta tokena prije zahtjeva. Opcionalno — zadano ponašanje usmjeravanja ostaje nepromijenjeno kada nije postavljeno. | Varijabla | Zadana vrijednost | Izvorna datoteka | Opis | | ------------------------------- | ----------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | Kada je `1`, preskače veze čiji budžet tokena po vremenskom prozoru (`rateLimitOverrides.tpm`, tabela `provider_quota_state`) ne može pokriti procijenjeni trošak zahtjeva prije slanja. Ako budžet nije konfiguriran, zahtjev se propušta. |