# Environment Variables Reference (Türkçe) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/docs/reference/ENVIRONMENT.md) · 🇦🇿 [az](../../../az/docs/reference/ENVIRONMENT.md) · 🇧🇬 [bg](../../../bg/docs/reference/ENVIRONMENT.md) · 🇧🇩 [bn](../../../bn/docs/reference/ENVIRONMENT.md) · 🇧🇦 [bs](../../../bs/docs/reference/ENVIRONMENT.md) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇰 [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) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/ENVIRONMENT.md) · 🇵🇰 [ur](../../../ur/docs/reference/ENVIRONMENT.md) · 🇺🇿 [uz](../../../uz/docs/reference/ENVIRONMENT.md) · 🇻🇳 [vi](../../../vi/docs/reference/ENVIRONMENT.md) · 🇳🇬 [yo](../../../yo/docs/reference/ENVIRONMENT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md) --- > OmniRoute tarafından tanınan tüm ortam değişkenleri için eksiksiz başvuru. > Hızlı başlangıç şablonu için [`.env.example`](../../.env.example) dosyasına bakın. > [!IMPORTANT] > Burada belgelenen her değişken `.env.example` dosyasında da yer almalı ve > `.env.example` dosyasındaki her değişken burada da bulunmalıdır. `npm run check:env-doc-sync` > bunu commit sırasında ve CI içinde zorunlu kılar. Bir değişkeni kasıtlı olarak hariç tutmak için > `scripts/check/check-env-doc-sync.mjs` içindeki izin verilenler listesine ekleyin. --- ## İçindekiler - [1. Gerekli Gizli Değerler](#1-gerekli-gizli-değerler) - [2. Depolama ve Veritabanı](#2-depolama-ve-veritabanı) - [3. Ağ ve Portlar](#3-ağ-ve-portlar) - [4. Güvenlik ve Kimlik Doğrulama](#4-güvenlik-ve-kimlik-doğrulama) - [5. Girdi Temizleme ve Kişisel Veri Koruması](#5-girdi-temizleme-ve-kişisel-veri-koruması) - [6. Araç ve Yönlendirme Politikaları](#6-araç-ve-yönlendirme-politikaları) - [7. URL'ler ve Bulut Senkronizasyonu](#7-urller-ve-bulut-senkronizasyonu) - [8. Giden Proxy](#8-giden-proxy) - [9. CLI Aracı Entegrasyonu](#9-cli-aracı-entegrasyonu) - [10. Dahili Agent ve MCP Entegrasyonları](#10-dahili-agent-ve-mcp-entegrasyonları) - [11. OAuth Sağlayıcı Kimlik Bilgileri](#11-oauth-sağlayıcı-kimlik-bilgileri) - [12. Sağlayıcı User-Agent Geçersiz Kılmaları](#12-sağlayıcı-user-agent-geçersiz-kılmaları) - [13. CLI Parmak İzi Uyumluluğu](#13-cli-parmak-izi-uyumluluğu) - [14. API Anahtarı Sağlayıcıları](#14-api-anahtarı-sağlayıcıları) - [15. Zaman Aşımı Ayarları](#15-zaman-aşımı-ayarları) - [16. Günlük Kaydı](#16-günlük-kaydı) - [17. Bellek Optimizasyonu](#17-bellek-optimizasyonu) - [18. Fiyatlandırma Senkronizasyonu](#18-fiyatlandırma-senkronizasyonu) - [19. Model Senkronizasyonu (Geliştirme)](#19-model-senkronizasyonu-geliştirme) - [20. Sağlayıcıya Özgü Ayarlar](#20-sağlayıcıya-özgü-ayarlar) - [21. Proxy Sağlık Durumu](#21-proxy-sağlık-durumu) - [22. Hata Ayıklama](#22-hata-ayıklama) - [23. GitHub Entegrasyonu](#23-github-entegrasyonu) - [24. Skills Sandbox (v3.8.0+)](#24-skills-sandbox-v380) - [27. Radar Akışı (Kendi Sunucunuzda Barındırma)](#27-radar-akışı-kendi-sunucunuzda-barındırma) - [Dağıtım Senaryoları](#dağıtım-senaryoları) - [Denetim: Kaldırılan / Kullanılmayan Değişkenler](#denetim-kaldırılan--kullanılmayan-değişkenler) --- ## 1. Gerekli Gizli Değerler **Evet** olarak işaretlenmiş ve ayarlanmamış gizli değerler ilk çalıştırmada otomatik olarak oluşturulur (`JWT_SECRET`, `API_KEY_SECRET`) ve veri dizinindeki `server.env` dosyasına kaydedilir — bu dizin kalıcı olmadığında bunları açıkça ayarlayın. İstisna `OMNIROUTE_WS_BRIDGE_SECRET`'tir: `server.env` dosyasına kaydedilmez — sunucu giriş noktaları, yalnızca süreç içi köprünün kullanabileceği, her açılışta geçici bir değer üretir; bu nedenle harici köprü istemcilerinin bunu açıkça ayarlaması gerekir. | Değişken | Gerekli | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------- | ----------------- | -------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `JWT_SECRET` | **Evet** | _(yok)_ | `src/lib/auth` | Tüm kontrol paneli oturum çerezlerini (JWT) imzalar/doğrular. `openssl rand -base64 48` ile oluşturun. | | `API_KEY_SECRET` | **Evet** | _(yok)_ | `src/lib/db/apiKeys.ts` | SQLite'ta durağan haldeki API anahtarı değerleri için AES şifreleme anahtarı. `openssl rand -hex 32` ile oluşturun. | | `INITIAL_PASSWORD` | Hayır | _(ayarlanmamış)_ | `src/lib/auth/managementPassword.ts` | Henüz hiçbir parola kaydedilmemişken başlangıçta kontrol paneli parolasını ayarlar; bir parola kaydedildikten sonra yok sayılır. npm ve kaynak kurulumları `.env.example` dosyasını `.env` olarak kopyalar, dolayısıyla herkesçe bilinen `CHANGEME` yer tutucusuyla başlarlar: ilk açılıştan önce bunu değiştirin veya ilk ziyarette ekleme (onboarding) sihirbazında parola oluşturmak için o `.env` dosyasında `INITIAL_PASSWORD=` (boş) ayarlayın; tıpkı ayarlanmamış bir değerin (Docker imajının varsayılanı) yaptığı gibi. Kaydedilmiş bir parolayı Dashboard → Settings → Security bölümünden değiştirin veya `DATA_DIR` sunucunun veri dizinine ayarlanmış haldeyken `omniroute reset-password` komutunu çalıştırın (kaynak kopyasında `node bin/reset-password.mjs`). | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Evet** (üretim) | _(ayarlanmamış)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Dahili Codex Responses WebSocket köprüsü için paylaşılan gizli değer. Electron/tarayıcı WS aktarıcısı ile OmniRoute arasındaki köprü isteklerinin kimlik doğrulamasını yapar. ⚠️ **Üretimde GEREKLİDİR — ayarlanmadığında tüm WS köprü istekleri reddedilir.** `openssl rand -base64 32` ile oluşturun. | | `OMNIROUTE_SW_BUILD_ID` | Hayır | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PWA kabuğu için açık service worker önbellek temizleme (cache-busting) kimliği (#11779); çözümleme zincirinde ilk sırada. | | `SOURCE_VERSION` | Hayır | _(ayarlanmamış)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Zincirde ikinci sırada — dağıtılan commit olarak PaaS derleyicileri (ör. Heroku tarzı) tarafından ayarlanır. | | `NEXT_PUBLIC_SW_BUILD_ID` | Hayır | _(türetilmiş)_ | `src/shared/components/PwaRegister.tsx` | İstemcinin `/sw.js?v=…` kaydı için kullandığı derleme zamanı genel değeri; yukarıdaki ikisinden, ardından git SHA'sından türetilir. | | `OMNIROUTE_PEER_STAMP_TOKEN` | Hayır (otomatik) | _(açılış başına otomatik)_ | `src/server/authz/policies/management.ts` | Güvenilir eş IP damgasının OmniRoute'un kendi HTTP sunucusundan geldiğini kanıtlayan süreç başına gizli değer (`scripts/dev/peer-stamp.mjs`). Yetkilendirme (authz) ara katmanı, istek yerelliğine (LOCAL_ONLY rotalarının loopback/LAN kapılaması) yalnızca damga bu token'ı taşıdığında güvenir. Her açılışta otomatik oluşturulur — ayarlanmamış bırakın; yalnızca damgayı paylaşması gereken çok süreçli kurulumlar için sabitleyin. | | `OMNIROUTE_TRUSTED_PROXIES` | Hayır | _(ayarlanmamış)_ | `scripts/dev/peer-stamp.mjs` | IP izin/ret listesinin güvenebileceği, `X-Forwarded-For` / `X-Real-IP` başlıklarını taşıyan ters proxy'lerin virgülle ayrılmış IP'leri veya CIDR aralıkları; bunlara ek olarak her zaman güvenilen loopback, özel ağ adresleri ve Cloudflare uçları. Yalnızca başka bir genel adres üzerindeki bir proxy için gereklidir; aksi halde filtrenin yargıladığı şey o proxy'nin kendi adresidir. Aktarıcının istemci başına hız sınırlaması (`/api/v1/relay/chat/completions`) aynı çözümlenmiş istemci adresini esas alır, asla yalnızca yönlendirme başlıklarını değil. | ### Oluşturma Komutları ```bash # Dört gizli değerin tümünü tek seferde oluşturun: 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] > Gerçek gizli değerler içeren `.env` dosyalarını asla sürüm kontrolüne işlemeyin. `.gitignore` zaten `.env` dosyasını hariç tutar, ancak göndermeden önce doğrulayın. --- ## 2. Depolama ve Veritabanı OmniRoute, tüm kalıcılık için **SQLite** kullanır (`better-sqlite3` aracılığıyla). Bu değişkenler veri konumunu, şifrelemeyi ve yaşam döngüsünü kontrol eder. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | SQLite veritabanı, yedekler ve veri dosyaları için kök dizin. Docker birimleri veya özel yollar için geçersiz kılın. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(tanımsız)_ | `src/lib/dataPaths.ts` | Test/eval DATA_DIR koruması için kaçış kapısı (#10428). `DATA_DIR` tanımlı olmayan testler ve Node eval/print sorguları (`-e`/`--eval`/`-p`/`--print`, `--eval=`/`--print=` biçimleri dahil), operatörün gerçek veritabanını açamamaları için tek kullanımlık bir geçici dizine yönlendirilir; gerçek dizine geri dönmek için `1` olarak ayarlayın. | | `OMNIROUTE_BUILD_SHA` | _(tanımsız)_ | `src/lib/monitoring/buildSha.ts` | Çalışan yapının Git SHA'sı. `npm run build:release` tarafından damgalanır; `dist/BUILD_SHA` işaretçisi olmadan gönderilen konteynerlere enjekte edilebilir. `/api/monitoring/health` üzerinde `system.buildSha` olarak gösterilir. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Paket-yapı kaynağı (provenance) kapısının derleme SHA'sını karşılaştırdığı referans (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(tanımsız)_ | `scripts/build/buildProvenance.ts` | SHA'sı sürüm hattında olmayan bir derlemenin paketlenmesine izin vermek için `1` olarak ayarlayın; kapıyı başarısız kılmak yerine kasıtlı bir canary olarak kaydedilir (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(tanımsız)_ | `scripts/ops/deploy-canary.mjs` | Canary dağıtımı duman testi sondası için API anahtarı; `/v1/chat/completions` üzerinde `Authorization: Bearer` olarak gönderilir. Yalnızca dağıtım betiği tarafından kullanılır (#10429), sunucu tarafından asla kullanılmaz. Kabul gerektiren (opt-in) CLI duman testi düzeneğinin `OMNIROUTE_SMOKE_*` değişkenleriyle (`RUN_CLI_SMOKE=1`, `tests/integration/upstream-cli-smoke.int.test.ts` içindeki `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS`) ilgili değildir — bkz. [CLI Entegrasyonları → Gerçek duman taraması](../guides/CLI-INTEGRATIONS.md). | | `OMNIROUTE_BUILDING` | _(tanımsız)_ | `src/lib/buildPhase.ts` | Derleme aşaması sinyali (#10060): `scripts/build/build-next-isolated.mjs` tarafından `1` olarak ayarlanır ve başlatılan her derleme işçisine devredilir; böylece DB katmanı, yerel better-sqlite3 eklentisini yüklemek yerine (ki bu işçiyi çıkışta sonlandırır) hiçbir şey yapmayan bir saplama döndürür. Çalışan sunucu için asla ayarlanmaz. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Sıra dışı vendored ağaçlar için isteğe bağlı yerel bağımlılık ön derleme kontrolünü atlamak üzere `1` olarak ayarlayın. Bu, eksik bir bağımlılığı derlenebilir hale getirmez; yalnızca yerel bağımlılıklar bant dışı sağlandığında kullanın. | | `OMNIROUTE_DATA_DIR` | _(tanımsız)_ | `open-sse/executors/promptql/threadSticky.ts` | `DATA_DIR` için **yedek takma ad**; yalnızca `DATA_DIR` tanımsızken kontrol edilir. PromptQL yürütücüsünün diskteki thread-sticky oturum önbelleğini (`/promptql-thread-sessions.json`) bulmak için kullanılır; iki değişken de ayarlanmamışsa önbellek yalnızca bellekte kalır (yeniden başlatmalar arasında kalıcı olmaz). | | `OMNIROUTE_PLUGINS_DIR` | _(tanımsız)_ | `src/lib/plugins/scanner.ts` | **Çalışma zamanı eklenti tarayıcısının** okuduğu dizin — ve eklenti yöneticisinin kurulum yaptığı kök — ev dizininden türetilen varsayılanı geçersiz kılar (#11827). Tarama yolunu taşımak için HOME'u değiştirmek yerine (HOME diğer tüm ev-dizinine-bağlı davranışları da yönetir) bunu Docker/K8s'teki bind-mount edilmiş eklenti ağacına yönlendirin. Tanımsız = `~/.omniroute/plugins`, veya işlem hiçbir ev dizini dışa aktarmıyorsa `/tmp/.omniroute/plugins` — bu değişkenin ortadan kaldırdığı sessiz keşfedememe durumu. Çözümlenen dizin, başlangıçta bir kez `scanner.dir_resolved` olarak, kazanan girdiyle birlikte günlüğe kaydedilir. Yalnızca sunucu tarafı: CLI komut eklentileri kendi `OMNIROUTE_PLUGIN_PATH` değişkenlerini korur (bölüm 9). | | `STORAGE_ENCRYPTION_KEY` | _(boş = devre dışı)_ | `src/lib/db/encryption.ts` | SQLite veritabanının tamamının bekleme durumunda (at rest) şifrelenmesi için AES anahtarı. `openssl rand -hex 32` ile oluşturun. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Şifreleme anahtarı için sürüm etiketi. Eski yedeklerin şifresinin çözülebilmesini desteklemek amacıyla anahtar rotasyonu yapılırken artırın. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | `true` olduğunda rutin/yazma öncesi SQLite dosya yedeklerini atlar (models.dev fiyatlandırma kaydetme/temizleme, ayar yazma işlemleri). Manuel ve geri yükleme öncesi yedekler yine çalışır. Mevcut kalıcı bir veritabanı için migration çalıştırıcısının zorunlu dayanıklı güvenlik anlık görüntüsünü veya toplu migration korumasını devre dışı **bırakmaz**. Manuel olmayan yedekler 60 dakikada en fazla bir kez olacak şekilde kısıtlanır. Dashboard'daki **Ayarlar → Depolama** rutin otomatik yedeklemeyi bağımsız olarak devre dışı bırakabilir. | | `OMNIROUTE_SQLITE_SLOW_MS` | _(ayarlanmamış/kapalı)_ | `src/lib/db/adapters/slowDiagnostics.ts` | Milisaniye cinsinden; 1'in altındaki veya sayısal olmayan değerler kapalı kalır; 10 saniyede en fazla bir kez uyarır; log satırında yalnızca driver, operation ve elapsedMs bulunur. | | `OMNIROUTE_CRYPT_KEY` | _(ayarlanmamış)_ | `src/lib/db/encryption.ts` | `STORAGE_ENCRYPTION_KEY` için **eski takma ad**. Birincil değişken mevcut olmadığında yedek olarak kabul edilir. | | `OMNIROUTE_API_KEY_BASE64` | _(ayarlanmamış)_ | `src/lib/db/encryption.ts` | Yedek olarak kabul edilen **eski takma ad** (Base64 ile kodlanmış biçim). Kullanılmadan önce otomatik olarak çözümlenir. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(ayarlanmamış)_ | `src/lib/db/core.ts` | Periyodik SQLite sağlık kontrolü aralığını (ms) geçersiz kılar. Ayarlanmadığında varsayılanlar `NODE_ENV` değerinden türetilir. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(kaldırıldı)_ | `src/lib/db/walMaintenance.ts` | **Kaldırıldı.** Periyodik bir canlı `wal_checkpoint(TRUNCATE)`, paylaşılan wal-index eşlemesini geçersiz kılabilir ve işlemi SIGBUS ile çökertebilir (#13973); bu nedenle zamanlayıcı artık mevcut değil. Değişken etkisizdir: pozitif bir değer tek seferlik bir kullanımdan kaldırma uyarısı loglar; `0` veya ayarlanmamış olması durumunda sessiz kalır. WAL, PASSIVE checkpoint'ler (aşağıda) ile korunur ve kapanış checkpoint'i tarafından kırpılır. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | Sık çalışan `wal_checkpoint(PASSIVE)` aralığını (ms) geçersiz kılar. Checkpoint'lerin hızlı kalması ve WAL dosyasının kapanış kırpmaları arasında sınırlı kalması için bekleyen WAL frame'lerini küçük tutar. `0` devre dışı bırakır. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Bir PASSIVE tick, WAL dosyasını bu boyutun üzerinde bulduğunda, WAL'nin eşlenen wal-index yeniden yazılmadan baştan başlaması için `wal_checkpoint(RESTART)` çalıştırır. Canlı truncate modlu checkpoint'ler kaldırıldı (`OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` satırına bakın). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Kritik kaynak baskısı `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` boyunca sürdükten sonra işlemden çıkmak için `1`/`true`/`yes`/`on` olarak ayarlayın; böylece bir supervisor (systemd `Restart=always`, Docker restart policy) süresiz 503 sunmak yerine temiz bir işlemi geri getirebilir. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | Kendini yeniden başlatma çıkışı tetiklenmeden önce kritik baskının ne kadar süre devam etmesi gerektiği. | | `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Bu işlem sorunsuzken gürültülü bir komşu 503'lere yol açtığında, host genelindeki `/proc/pressure/memory` değerini (`psi_some` / `psi_full`) yok saymak için `1`/`true`/`yes`/`on` olarak ayarlayın (#13124). Cgroup ve V8 heap korumaları açık kalır. PSI ayrıca `cgroup_high` için kernel kısıtlaması kanıtı olarak sayılmayı bırakır: `memory.high` üzerindeki bir cgroup toplamı, bu durumda yalnızca `memory.events` içindeki bir `high`/`max` artışında kritik hale gelir. `memory.events` yoksa ham oran korunur. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(otomatik algılama)_ | `src/lib/db/adapters/sqljsAdapter.ts` | `sql.js` WASM yedek (fallback) adaptörü kullanılırken `sql-wasm.wasm` için açık yol (mutlak veya cwd'ye göreli). Ayarlanmadığında paket bağımlılıkları ve aday dizilimler aracılığıyla otomatik olarak algılanır. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Sonlandırılmış (completed/failed/cancelled/expired) bir Batch API işinin checkpoint'leri, referans verilen girdi/çıktı/hata dosyaları ve satırı, silinmeden önce otomatik temizlik taraması tarafından kaç gün tutulur. Yalnızca `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` açıldığında etkili olur; OpenAI'ın kendi Batch API çıktı saklama penceresiyle eşleşir. Operatör tetikli `DELETE /api/v1/batches/delete-completed` rotasını etkilemez; bu rota tasarım gereği koşulsuzdur (yaş filtresi yoktur). | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | `true` olduğunda, otomatik temizlik taramasının `OMNIROUTE_BATCH_RETENTION_DAYS` süresini aşan sonlandırılmış Batch API işlerini (ve checkpoint'lerini) silmesine ve kendi `expires_at` süresi geçmiş yüklenmiş dosyaların BLOB içeriğini temizlemesine izin verir. Varsayılan olarak kapalıdır: bir operatör etkinleştirene kadar mevcut her kurulum bu verileri tam olarak eskisi gibi tutar. Ayrıca kontrol panelinden düzenlenebilir bir özellik bayrağıdır — bkz. `docs/reference/FEATURE_FLAGS.md` → Runtime. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Başlangıçta DB sağlık denetimini tamamen atlamak için `1` olarak ayarlayın. Kısa ömürlü görevler ve entegrasyon testleri için kullanışlıdır. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Normalde atlanacağı durumlarda (ör. kısa ömürlü görevler) bile DB sağlık denetimi döngüsünü zorla açmak için `1` olarak ayarlayın. | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | `npm install` sırasındaki yerel çalışma zamanı ısınmasını atlamak için `1` olarak ayarlayın. sqlite'ın zaten derlenmiş olduğu CI/başsız kurulumlarda kullanışlıdır. | | `OMNIROUTE_MIGRATIONS_DIR` | _(otomatik algılanır)_ | `src/lib/db/migrationRunner.ts` | Migration çalıştırıcının taradığı dizini geçersiz kılar. Özel derlemelerde paketlenmiş migration'lar gönderilirken kullanışlıdır. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(ayarlanmamış)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Platform yol ayırıcısıyla ayrılmış `namespace=dir` girdileri biçiminde ek migration dizinleri (örn. `ee=/opt/app/enterprise/db/migrations`). Orada bulunan dosyalar `-` olarak kaydedilir; böylece kendi migration'larını gönderen bir dağıtım, yukarı akışın sayısal slotlarıyla asla çakışmaz. Bozuk bir girdi, geçersiz bir namespace veya eksik bir dizin, şemayı sessizce atlamak yerine başlangıçta hata fırlatır. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Toplu bekleyen migration güvenlik eşiği (#3416). Mevcut bir DB'de bu sayıdan fazla migration bekliyorsa başlangıç iptal edilir (silinmiş bir izleme tablosuna karşı koruma sağlar). Eski bir yedeği geri yüklemek için yükseltin; denetimi devre dışı bırakmak için `0` olarak ayarlayın. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | `check:install-upgrade` sürüm kapısı için çalışma dizini. Yaklaşık 12 GB'a ihtiyaç duyar (iki adet ~3 GB'lık kurulum ağacı artı tarball), bu nedenle küçük bir tmpfs üzerinde çalıştırılmamalıdır — self-hosted runner'da `/tmp`, 12 GB RAM destekli bir tmpfs'tir ve kapı bunu tüketerek paketi kesik bıraktı. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(kodda varsayılan)_ | `src/lib/spend/batchWriter.ts` | Toplu harcama/maliyet yazıcısı için boşaltma (flush) aralığı (ms). Daha düşük değerler yazma birleştirmesini azaltır; daha yüksek değerler DB çekişmesini azaltır. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(kodda varsayılan)_ | `src/lib/spend/batchWriter.ts` | Zorunlu bir boşaltmadan önce arabelleğe alınabilecek maksimum harcama girdisi sayısı. Yüksek QPS'li dağıtımlarda yükseltin; sınırlı bellek daha önemli olduğunda düşürün. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(ayarlanmamış)_ | `open-sse/utils/proxyFetch.ts` | Vercel relay yolunda `[ProxyFetch]` hata ayıklama günlükleri yaymak için `"true"` olarak ayarlayın. Yönlendirme ipuçlarını sızdırmamak için varsayılan olarak kapalıdır. | | `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(ayarlanmamış)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Benimsenen dosyayı değiştirmeden önce üretilen çekirdek yapılandırmasını denetleyen yerel proxy çekirdek ikilisinin (`sing-box` adlı bir dosya) mutlak yolu. Ayarlanmamışsa yalnızca benimsenen dosyanın yanına `.generated` yazar. Yalnızca ana bilgisayar ortamı: ikili çalıştırıldığı için asla veritabanında saklanmaz ve yönetim API'si üzerinden kabul edilmez. | | `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(ayarlanmamış)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Doğrulanmış bir yapılandırma değişiminden sonra yerel proxy çekirdeğinin nasıl yeniden yükleneceği: bir kabuk olmadan çalıştırılan JSON argüman dizisi veya dosyayı dış bir gözlemci uyguladığında tam olarak `external`. Asla veritabanında saklanmaz ve API üzerinden açığa çıkarılmaz. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | İstemci/giden IP'lerini ve hesap önekini ayrıntılı `[ProxyEgress]` süreç günlüğü satırına dahil etmek için `"true"` veya `"1"` olarak ayarlayın. Süreç günlüğünün IP'leri veya hesap önekini sızdırmaması için varsayılan olarak KAPALI tutulur. | | `OMNIROUTE_DEBUG` | _(ayarlanmadı)_ | `bin/cli/commands/quota.mjs` | CLI quota komutlarından istek başına zamanlama tanılamalarını (`[omniroute] GET completed in Nms`) stderr'e yazdırmak için `1` olarak ayarlayın. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(otomatik)_ | `scripts/dev/healthcheck.mjs` | Kapsayıcı sağlık denetimi tarafından yoklanan açık yol. Ayarlanmadığında, yoklama bunu `OMNIROUTE_BASE_PATH` üzerinden türetir; ayarlanması derin izleme uç noktasına geri dönülmesini sağlar. | | `OMNIROUTE_DEBUG_COMPLETION` | _(ayarlanmadı)_ | `bin/cli/commands/completion.mjs` | CLI kabuk tamamlama önbellek yollarından (okuma/yenileme/yazma) `[omniroute completion]` tanılamaları yaymak için boş olmayan herhangi bir değere ayarlayın. Varsayılan olarak kapalıdır — bu önbellekler sessizce başarısız olur, böylece eksik/bozuk bir önbellek sekme tamamlamayı asla bozmaz. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24 sa) | `open-sse/services/batchProcessor.ts` | Tek tek toplu iş öğeleri için maksimum yeniden deneme penceresi (ms). Bu süreyi aşan öğeler başarısız olarak işaretlenir. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Toplu iş öğesi yeniden denemelerinde üstel geri çekilme için temel gecikme (ms). | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1 sa) | `open-sse/services/batchProcessor.ts` | Toplu iş öğesi yeniden denemeleri arasındaki üstel geri çekilme için üst sınır (ms). | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Eşzamanlı olarak işlenen maksimum toplu iş sayısı. Verimi artırmak için yükseltin; hız sınırı fırtınalarından kaçınmak için düşük tutun. | > [!IMPORTANT] > Mevcut bir kalıcı veritabanını değiştirmeden önce, geçiş çalıştırıcısı `DATA_DIR/db_backups/` altında eksiksiz, > içerik adresli bir anlık görüntü yayınlar. Yayınlama, aynı dosya sistemi içinde, üzerine yazmayan sabit > bağlantıları ve dayanıklı dosya eşzamanlamasını destekleyen bir dosya sistemi gerektirir. POSIX ana bilgisayarları > ayrıca dizin eşzamanlaması gerektirir; Windows'ta Node dizin tanıtıcılarını reddedebilir, bu nedenle OmniRoute > yayınlanan dosyayı diske boşaltır ve dizin girdisi eşzamanlamasını en iyi çaba olarak değerlendirir. > Bağlanan `DATA_DIR` bu garantileri sağlayamıyorsa, başlatma bir geçiş uygulanmadan önce kapalı olarak başarısız > olur. `DATA_DIR`'i bu temel öğelere sahip bir birime taşıyın; geçiş güvenliğini atlamak için > `DISABLE_SQLITE_AUTO_BACKUP` kullanmayın. ### Senaryolar | Senaryo | Yapılandırma | | --------------------- | -------------------------------------------------------------------------------------------------- | | **Yerel geliştirme** | Tüm varsayılanları olduğu gibi bırakın. Veritabanı `~/.omniroute/omniroute.db` konumundadır. | | **Docker** | `DATA_DIR=/data` + `/data` konumuna bir birim bağlayın. | | **Beklemede şifreli** | `STORAGE_ENCRYPTION_KEY` ayarlayın + anahtarın yedeklerini saklayın! Kaybetmek = veriyi kaybetmek. | | **CI/Test** | `DATA_DIR=/tmp/omniroute-test` — geçici, şifreleme gerekmez. | --- ## 3. Ağ ve Portlar | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PORT` | `20128` | `src/lib/runtime/ports.ts` | Hem Dashboard UI hem de API uç noktaları için birincil port (tek port modu). | | `OMNIROUTE_BASE_PATH` | _(boş = kök)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | OmniRoute'u bir reverse proxy arkasında sunmak için URL alt yolu (Next.js `basePath` değerini ayarlar; kimlik doğrulama yönlendirmeleri basePath uyumludur). Örn. `/omniroute`. Docker'da değer `docker build` sırasında gömülür (`ARG OMNIROUTE_BASE_PATH`); önceden derlenmiş kök imajlar, Next.js başlamadan önce konteyner başlangıcında bir kez farklı bir çalışma zamanı değeri uygulayabilir. `NEXT_PUBLIC_BASE_URL` değerini aynı alt yolu içeren genel origin'e ayarlayın. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(boş = kök)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | `OMNIROUTE_BASE_PATH` değerinin tarayıcıda görünen yansıması; derleme zamanında satır içine alınır, böylece dashboard uç nokta gösterimi `https://host/v1` yerine `https://host/omniroute/v1` gösterir. Ayarlanmadığında `OMNIROUTE_BASE_PATH` değerine geri döner. Değiştirdikten sonra yeniden derleyin (Next `basePath` derleme zamanında belirlenir). | | `DASHBOARD_ALLOW_EMBED` | _(ayarlanmamış = asla çerçevelenemez)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | HTML sayfalarının isteğe bağlı iframe yerleştirmesi. Ayarlanmadığında her rota `frame-ancestors 'none'` + `X-Frame-Options: DENY` ile sunulur. VS Code Simple Browser'ın sayfaları (dashboard, login, docs, landing) işleyebilmesi için bunları `frame-ancestors 'self' vscode-webview:` ile ve `X-Frame-Options` olmadan sunmak üzere `vscode` olarak ayarlayın (OmniCopilot'un `dashboardOpen: "editor"` modu). API yüzeyi (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, kök seviyesindeki takma adlar) her iki durumda da katı başlıkları korur. Yalnızca `vscode` tanınır — `1`/`true` bunu etkinleştirmez. Derleme zamanı: değiştirdikten sonra yeniden derleyin (imajlar için `docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode`; önceden derlenmiş bir kurulumda ayarlamanın hiçbir etkisi yoktur). | | `API_PORT` | _(ayarlanmamış)_ | `src/lib/runtime/ports.ts` | Ayarlandığında, `/v1/*` proxy API'sini bu ayrı portta sunar. | | `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | API portu için bağlanma adresi. | | `DASHBOARD_PORT` | _(ayarlanmamış)_ | `src/lib/runtime/ports.ts` | Ayarlandığında, Dashboard UI'ı bu ayrı portta sunar. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(devre dışı)_ | `src/sse/utils/backpressure.ts` | Eşzamanlı devam eden sohbet bağlantılarını sınırlar; sınırı aşan istekler `Retry-After` ile `503` yanıtı alır. Pozitif bir tam sayı korumayı etkinleştirir; ayarlanmamış/`0` devre dışı bırakır. | | `OMNIROUTE_INSTANCE_ID` | _(ayarlanmamış)_ | `src/shared/resilience/peerRouting.ts` | OmniRoute örnekleri zincirlenirken bu ağ geçidi için kararlı, benzersiz kimlik. Gelen eş-döngü (peer-loop) kontrollerini etkinleştirir. İzin verilen karakterler: harfler, rakamlar, `.`, `_`, `:` ve `-`; maksimum 64 karakter. | | `OMNIROUTE_PEER_URLS` | _(unset)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | `X-OmniRoute-Peer-Trace` alabilecek, virgülle ayrılmış OmniRoute temel URL'leri. Yalnızca açıkça izin listesine eklenmiş upstream URL'leri eş meta verilerini alır; diğer tüm sağlayıcılar etkilenmez. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Zincirleme bir istekte kabul edilen, daha önce ziyaret edilmiş OmniRoute örneklerinin maksimum sayısı (`1`-`32`). Tekrarlanan örnekler veya tükenmiş bir kota HTTP `508 Loop Detected` döndürür. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Docker üretim modunda Dashboard için ana makine tarafında yayınlanan port. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Docker üretim modunda API için ana makine tarafında yayınlanan port. | | `OMNIROUTE_PORT` | _(unset)_ | `src/lib/runtime/ports.ts` | Electron veya diğer sarmalayıcılar içinde çalışırken `PORT` yerine öncelikli olur. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Gerçek zamanlı WebSocket canlı izleme sunucusu için port. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Canlı WebSocket sunucusu için bağlanma adresi. LAN üzerinde erişime açmak için `0.0.0.0` olarak ayarlayın (ayrıca `LIVE_WS_ALLOWED_ORIGINS` değişkenini de yapılandırın). Bağlantılar, pano oturum çerezi veya yönetim kapsamına (`manage`/`admin`) sahip bir Bearer API anahtarı ile kimlik doğrular. | | `LIVE_WS_ALLOWED_ORIGINS` | _(unset)_ | `src/server/ws/liveServer.ts` | Canlı bir WebSocket açmasına izin verilen, virgülle ayrılmış ek origin'ler. Loopback pano origin'leri varsayılan olarak zaten izinlidir. | | `LIVE_WS_ALLOWED_HOSTS` | _(unset)_ | `src/server/ws/liveServerAllowList.ts` | Canlı WebSocket origin'leri için izin verilen, virgülle ayrılmış ek ana makine adları. `LIVE_WS_ALLOWED_ORIGINS` (tam origin URL'leri) aksine, yalnızca ana makine kısmıyla eşleşir — LAN/Tailscale kurulumları için kullanışlıdır. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(unset)_ | `src/hooks/useLiveDashboard.ts` | Canlı pano WebSocket'i için genel URL (tarayıcı tarafı). WS sunucusunun önüne bir ters proxy veya Cloudflare Tunnel konulduğunda ayarlanır (örn. `wss://ws.my-ai.com/live-ws`); tarayıcı `ws://hostname:20132` yerine buraya bağlanır. Yol adı (pathname) kısmı ayrıca WebSocket yükseltme yolu olarak kullanılır (varsayılan: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` and `scripts/start-ws-server.mjs` | Gerçek zamanlı WebSocket sunucusunu devre dışı bırakmak için `0` veya `false` olarak ayarlayın (varsayılan olarak etkindir, loopback'e bağlıdır). Bağımsız canlı WebSocket yardımcı betiğini devre dışı bırakan CI/harness anahtarı. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | (Token, IP) başına relay hız limiti, istek/dakika. Bellek içi, örnek başına. `0` veya negatif değer IP boyutu denetimini devre dışı bırakır (token başına DB limiti hâlâ geçerlidir). | | `NODE_ENV` | `production` | Next.js çekirdeği | Günlük ayrıntı düzeyini, önbelleğe almayı, hata detayı gösterimini ve Next.js optimizasyonlarını kontrol eder. | | `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — kod varsayılanı) | `package.json` / Next.js 16 | Turbopack, `npm run dev` ve `npm run build` için varsayılan paketleyicidir (2-3× daha hızlı derlemeler, kıyaslamayla ölçülmüştür). Windows'ta yerel bağlama (native binding) / paketleyici uyumluluğu sorunlarıyla karşılaşıldığında **veya RAM'i kısıtlı makinelerde** webpack'e geri dönmek için `0` olarak ayarlayın — bu Next.js sürüm hattında (16.2.x) Turbopack üretim derlemelerinin büyük modül grafiklerinde webpack'ten çok daha yüksek bellek zirveleri yaptığı yukarı akışta (upstream) bilinen bir durumdur (Next 16.3'ün Turbopack bellek tahliyesi düzeltmesi henüz kararlı değil); webpack geri dönüşü çok daha düşük zirve yapar. Bkz. #6409. **Docker imaj derlemeleri varsayılan olarak `0` (webpack) kullanır**: `Dockerfile`, `ARG OMNIROUTE_USE_TURBOPACK=0` bildirir; böylece çıplak bir `docker build .` (Railway ve diğer tek tıkla barındırma hizmetleri, plansız kendi kendine barındıranlar) bellek sınırlı bir derleyicide OOM ile sonlandırılmaz; imajı Turbopack ile derlemek için `--build-arg OMNIROUTE_USE_TURBOPACK=1` geçirin. Bkz. `docs/guides/DOCKER_GUIDE.md` → Derleme zamanı kaynakları. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(ayarlanmadı)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Başlangıçta SQLite bütünlük sağlık denetimini atlamak için `1` olarak ayarlayın. Büyük veritabanlarında daha hızlı açılış için kullanışlıdır. | | `NOTIFY_SOCKET` | _(ayarlanmadı)_ | systemd (sd_notify protokolü) | İşlem sd_notify entegrasyonlu bir servis birimi altında çalıştığında systemd tarafından ayarlanır; OmniRoute READY/WATCHDOG bildirimleri göndermek için bunu okur (bkz. `OMNIROUTE_DISABLE_SD_NOTIFY`). Kullanıcı tarafından asla ayarlanmaz. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(ayarlanmadı)_ | `scripts/dev/systemd-notify.mjs` | systemd birimi altında çalışırken bile systemd sd_notify'yi (Type=notify / WatchdogSec=) devre dışı bırakmak için `1` olarak ayarlayın. Bildirimci, systemd dışında zaten her koşulda işlevsizdir (no-op). | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Arka plan kimlik bilgisi sağlık denetimi zamanlayıcısı için aralık (ms). Minimum: 10000 (10sn). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | Önbelleğe alınmış kimlik bilgisi sağlık durumu için TTL (ms). | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Sağlayıcı bağlantılarının arka planda periyodik olarak test edilmesini devre dışı bırakmak için `1` veya `true` olarak ayarlayın. Arama sağlayıcıları (`src/lib/providers/validation/searchProviders.ts` içindeki SEARCH_VALIDATOR_CONFIGS, örn. `tavily-search`) taramadan her zaman hariç tutulur — "doğrulamaları" gerçek, ücretlendirilen bir yukarı akış sorgusudur, bu nedenle asla zamanlayıcıyla sağlık denetiminden geçirilmezler (#9970). | | `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Kimliği doğrulanmış bir çağıranın `/api/monitoring/health?deep=1` isteğinde bulunmasına izin vermek için `1` olarak ayarlayın; bu, tamamlamalar yüzeyini TTL başına bir kez örnekler. Anonim çağıranlar yoklamayı asla tetiklemez. | | `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | Açılış olay döngüsü kaydedicisi için takılma eşiği (ms): bundan daha uzun bir donma, devam edildiğinde bellek ve uçuş içi (in-flight) sayılarıyla birlikte bir `event loop stalled` satırını günlüğe kaydeder ve `/api/monitoring/health` üzerindeki `eventLoopStall` sayacını/maksimumunu artırır. Devre dışı bırakmak için `0` olarak ayarlayın; okunamayan veya negatif bir değer `5000` değerine geri döner. | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Next.js dev/start sunucusu için bağlanma adresi. Ayarlandığında varsayılan `0.0.0.0` değerini geçersiz kılar. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Next.js başlatılırken Playwright çalıştırıcısının kullandığı bağlanma adresi. Hermetik testler için varsayılan olarak `127.0.0.1` değerini alır. **`omniroute serve` için kullanmayın** — bunun yerine `OMNIROUTE_SERVER_HOST` kullanın (POSIX kabukları `HOSTNAME` değişkenini otomatik olarak makine adına ayarlar; `.env` bunu geçersiz kılamaz). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | `omniroute serve` için bağlanma adresi. POSIX kabuk `HOSTNAME` değişkeniyle çakışmayı önler (bash/zsh tarafından her zaman makine adına ayarlanır). Ayarlanmadığında `0.0.0.0` değerine geri döner. (#6194) | ### Port Modları ``` ┌─────────────────────────── Tek Port (varsayılan) ──────────────────────────┐ │ PORT=20128 │ │ → Gösterge Paneli: http://localhost:20128 │ │ → API: http://localhost:20128/v1/chat/completions │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── Ayrık Portlar ───────────────────────────────────┐ │ DASHBOARD=20128 │ │ API_PORT=201 │ │ API=0.0.0.0 │ │ → Gösterge Paneli: http://localhost:20128 │ │ → API: http://0.0.0.0:20129/v1/chat/completions │ │ Kullanım senaryosu: API'yi LAN'a açarken Gösterge Paneli'ni yerelle sınırlayın. │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────── ──────────────────────────────┐ │ PROD_DASHBOARD_PORT=443 PROD_API=8443 │ │ → docker-compose.prod içinde konteyner portlarını ana makineye eşler. │ └─────────────────────────────────────────────────────────────────────┘ ``` ## 4. Güvenlik ve Kimlik Doğrulama | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Makine parmak izi oluşturma için donanım tanımlayıcılarıyla birleştirilen salt. İzolasyon için her dağıtımda değiştirin. | | `OMNIROUTE_CLI_SALT` | _(ayarlanmamış = `/cli-token-salt.json` konumunda kalıcı olan, kurulum başına rastgele salt)_ | `src/lib/machineToken.ts` | Yerel CLI kimlik doğrulama token'ını türetmek için kullanılan HMAC salt'ı. Bu değeri ayarlamak, makinedeki tüm CLI token'larını döndürür ve her zaman kalıcı salt'a göre önceliklidir. Bkz. `docs/security/CLI_TOKEN.md`. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Oturum çerezlerine `Secure` bayrağını ekler. HTTPS arkasında çalışırken **`true` olmalıdır**. | | `REQUIRE_API_KEY` | `false` | API ara yazılımı | `true` olduğunda, tüm `/v1/*` proxy istekleri geçerli bir API anahtarı içermelidir. **Bu bayrak `GET /v1/models` uç noktasını korumaz**; bu uç nokta bunun yerine pano oturum açma duruşunu (`requireAuthForModels`) izler — dolayısıyla `/v1/models` kaynaklı bir `401`, çıkarımın korunduğu anlamına GELMEZ. Bkz. `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Pano arayüzünde tam API anahtarı değerlerinin gösterilmesine izin verir. Pano Özellik Bayraklarından yapılandırılabilir; paylaşılan örneklerde güvenlik riski oluşturur. | | `NO_LOG_API_KEY_IDS` | _(boş)_ | `src/lib/compliance/index.ts` | İstek günlüğünü atlayan, virgülle ayrılmış API anahtarı kimlikleri (GDPR uyumluluğu). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(ayarlanmamış = sınırsız)_ | `src/shared/utils/apiKeyPolicy.ts` | `rate_limits` sütunu null olan API anahtarlarına uygulanan günlük yedek istek bütçesi. Ayarlanmamış veya boş: örtük sınır yok (#2289, #11017). `0` da aynıdır (sınırsız). Pozitif tam sayı N; N/gün, 5N/hafta, 20N/ay sınırlarını etkinleştirir. Hatalı biçimlendirilmiş, boş olmayan değerler eski 1000/gün, 5000/hafta, 20000/ay pencerelerine geri döner. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | İzin verilen maksimum istek gövdesi boyutu. Bu sınırı aşan yükleri reddeder. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Bu eşikte veya üzerindeki gerçek istek gövdeleri, JSON ayrıştırmadan önce atomik, işlem-yerel ağır yük kabul kiralamasını alır (BYTE yolu, `POST /v1/responses` dahil). Yapı-ağır isteklerle aynı [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) sağlıklı-pay kaçış yolu; yine de `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) ile sınırlıdır, böylece [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) yeniden ortaya çıkmaz. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Sınırlı alım sırasında okunan baytlara karşı uygulanan chat rotası kesin üst sınırı; eksik, geçersiz veya yanıltıcı `Content-Length` içeren istekler dahil; aşım `413` alır. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(ayarlanmamış — istek-sayısı sınırı yok)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** bu eski istek-SAYISI sınırı artık yalnızca açıkça ayarlandığında bağlayıcıdır. Ayarlanmadan bırakıldığında (varsayılan), ağır chat kabulü bunun yerine `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` ile denetlenir — **tek süreçteki** (tek V8 heap'i) gerçek bellek tavanından boyutlandırılan, otomatik türetilmiş bir BAYT bütçesi. Çakışan iki ~750k token'lık `/v1/responses` isteği ~12 Gi heap'leri çökertir (#7849) — bu bir **bellek-bütçesi** uyarısıdır, 2'lik kesin bir ürün maksimumu değil. Sağlıklı bir süreç (heap'i tahliye oranının altında) `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` aracılığıyla daha fazla eşzamanlı uzun `/v1/responses` kabul EDEBİLİR. Onlarca uzun SSE istemcisi (40–50) heap + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110 meselesidir, "maks 2" değil. Bunu "ana makineyi kullanmak" için körü körüne yükseltmek #7849'u geri getirir. **Heap'leri** **N bağımsız `DATA_DIR`s** ile çoğaltın (#11024); tek bir SQLite dosyasında asla `replicas>1` kullanmayın. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(otomatik türetilmiş)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** otomatik türetilmiş alım bayt bütçesi için geçersiz kılma (daha sıkı olan V8/cgroup bellek tavanının %25'i, 8x geçici genleşmeye bölünür). Türetilmiş ve açık değerler 8 MiB–2 GiB aralığına sabitlenir. Etkin bütçeden büyük bir gövde anında `413 body_exceeds_budget` ile başarısız olur; tek başına hizmet verilebilir gövdeler arasındaki çekişme yeniden denenebilir `503` olarak kalır. 40–50 eşzamanlı uzun SSE istemcisi bu bütçe + heap meselesidir, kesin bir "maks 2" değil. Ayarlamadan önce `/api/monitoring/health` adresindeki `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` değerlerini okuyun. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | BYTE ve STRUCTURE ağır kabulü için heap-baskısı tahliye oranı (`heapUsed / heap_size_limit`) (#10183, #10268, #10437). `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` sınırını aşan eşzamanlı bir ağır istek, yalnızca heap AYNI ZAMANDA bu oranda veya üzerindeyse yeniden denenebilir `503` ile tahliye edilir; sağlıklı bir heap'te bunun yerine sağlıklı-pay yoluyla kabul edilir. | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (varsayılan `1`) | `src/shared/middleware/chatBodyAdmission.ts` | **Hem** STRUCTURE **hem de** BYTE üzerindeki sağlıklı-heap hızlı yolu için sınırlı ek kapasite (#10437) (`admitChatRequest`, `OMNIROUTE_CHAT_LARGE_BODY_BYTES` değerine eşit veya büyük gövdeler dahil). Bu sınır olmadan, meşgul ama sağlıklı heap'e sahip her istek, hiçbir üst sınır olmadan kabul sürecini atlıyordu. Sağlıklı-heap yolu üzerinden bu kadar eşzamanlı kiralama etkin olduğunda, sonraki meşgul istekler gerçek heap baskısı altında kullanılan AYNI sınırlı-bekleme/tahliye yoluna düşer. `0` atlamayı tamamen devre dışı bırakır. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Gövdesi bayt eşiğinin altında olsa bile bir chat isteğini ağır olarak sınıflandıran mesaj sayısı. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Gövdesi bayt eşiğinin altında olsa bile bir chat isteğini ağır olarak sınıflandıran araç sayısı. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Bir isteği ağır olarak sınıflandıran ihtiyatlı dize-boyutu token tahmini; bu bir kabul-maliyeti vekil ölçüsüdür, sağlayıcı faturalandırma tokenizasyonu değildir. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (devre dışı) | `src/shared/middleware/chatBodyAdmission.ts` | İsteğe bağlı, açıkça etkinleştirilen chat geçmişi sınırı. Varsayılan olarak devre dışıdır: mesaj sayısı bir isteğin evrensel özelliği değil, dağıtım politikasıdır; burada sınırlama, konuşmaları sıkıştırma hattı hizmet verilebilir hale getirmeden önce nihai bir `413` ile reddeder. Heap büyümesi `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` ve heap-baskısı tahliyesiyle sınırlıdır. Kesin bir tavana ihtiyaç duyan bellek kısıtlı dağıtımlarda pozitif bir değer ayarlayın; aşım bu durumda yapılandırılmış compact-required `413` alır. | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Tamamen belleğe alınan akışsız bir yukarı akış yanıtı için kesin üst sınır. Bunun ötesinde yukarı akış okuyucusu iptal edilir ve istek, heap tükenene kadar sınırsız bir dize büyütmek yerine hızla başarısız olur. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Yukarı akış yanıt başlıklarından iletilen maksimum hat (wire) baytı. Bütçe aşıldığında, yaygın ters proxy başlık sınırları içinde kalabilmek için daha düşük öncelikli başlıklar (ör. özel `x-codex-*`, `x-oai-request-id`) düşürülür. Daha büyük yanıt başlığı boyutu pahasına daha fazla yukarı akış meta verisi iletmek için daha yüksek bir değer ayarlayın. | | `CORS_ORIGIN` | _(ayarlanmamış)_ | `src/server/cors/origins.ts` | Eski (legacy) tek kökenli CORS izin listesi. Yeni dağıtımlar için `CORS_ALLOWED_ORIGINS` tercih edin. CORS yalnızca çapraz kökenli tarayıcı API istemcileri içindir; kimliği doğrulanmış kontrol paneli yazma işlemleri bunun yerine aynı kökenli istekler ve oturuma bağlı CSRF koruması kullanır. | | `CORS_ALLOWED_ORIGINS` | _(ayarlanmamış)_ | `src/server/cors/origins.ts` | Virgülle ayrılmış CORS izin listesi. `CORS_ALLOW_ALL=true` açıkça yapılandırılmadıkça joker karakter gönderilmez. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Herhangi bir tarayıcı `Origin` değerini yansıtmak için yalnızca geliştirme amaçlı bir kaçış kapısı. Paylaşımlı veya üretim dağıtımlarında etkinleştirmeyin. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Eski (legacy) takma ad. Kontrol paneli anahtarı (bir DB geçersiz kılması) bu ortam değerinden önce okunur; her ikisinden birinde `false`, `0`, `no` veya `off` değeri varsa, o bayrağın kontrol paneli anahtarı kapalı olarak kaydedilmiş olsa bile, ana bilgisayar kontrollerini `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`'nin yaptığı şekilde kapatır; diğer değerler korumayı aşağıdaki iki bayrağa bırakır. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Koruma modunu izleyen sağlayıcı yollarında — URL doğrulaması, model keşfi, sağlayıcı düğümü temel URL'leri (uzak rerank düğümleri dahil) ve proxy-yedekleme testi ile uzak görüntü/medya getirme gibi sağlayıcıyla ilişkili diğer giden yollarda — giden URL korumasının ana bilgisayar kontrollerini, bulut meta veri engeli dahil (169.254.0.0/16'nın tamamı, metadata.google.internal) kapatır. Ayrıca, bu bayrak açıkken bile engellenmeye devam eden bulut meta veri/bağlantı-yerel (link-local) uç noktaları hariç, özel webhook hedeflerine de izin verir. `BaseExecutor.execute()` aracılığıyla gönderilen sohbet istekleri bulut meta veri kontrolünü korur. Yerel sağlayıcılar varsayılanlarla çalışır: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (varsayılan `true`) doğrulama, keşif ve sağlayıcı düğümü yollarında yerel ve LAN URL'lerine zaten izin verir; proxy-yedekleme testi ve özel webhook hedefleri yalnızca bu bayrağa bakar ve kapalıyken yerel/LAN ana bilgisayarlarını engeller. `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` değerini geçersiz kılar. Kontrol paneli anahtarından kaydedilen bir değer bu değişkene göre önceliklidir. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Sağlayıcı doğrulaması, model keşfi, sohbet ve koruma modunun yönettiği sağlayıcıyla ilişkili diğer giden yollar için yerel/özel adreslerdeki (127.0.0.1, localhost, LAN, özel aralıklar) sağlayıcı URL'lerine izin ver. **Varsayılan `true`** (yerel öncelikli): koruma bu durumda bulut meta veri uç noktalarını engeller — 169.254.0.0/16'nın tamamı artı bilinen meta veri ana bilgisayar adları (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254). Özel ve geri döngü (loopback) ana bilgisayarlarını da engelleyen yalnızca genel (public-only) mod için `false` olarak ayarlayın. Koruma, herhangi bir DNS aramasından önce ana bilgisayar adını veya IP değerini yazıldığı haliyle kontrol eder; yalnızca genel modda güvenli getirme (safe-fetch) sarmalayıcısı ek olarak ana bilgisayar adını çözümler ve özel bir yanıt gelirse reddeder. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`, bu kontrolleri kendi satırında listelenen yollarda kapatır. LM Studio, Ollama, vLLM, Llamafile ve Triton gibi yerleşik yerel sağlayıcılar, anahtar doğrulaması ve sohbet için tüm ana bilgisayar kontrollerini atlar. Kontrol paneli anahtarından kaydedilen bir değer bu değişkene göre önceliklidir. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | `/v1/audio/*` rotalarının (transkripsiyonlar, konuşma, çeviriler) localhost dışında barındırılan OpenAI uyumlu bir sağlayıcı düğümü kullanmasına izin ver. Varsayılan olarak kapalıdır — sesi uzak bir ana bilgisayara yönlendirmek giden trafik (egress) kimliğini değiştirir ve açık bir operatör kararı olmalıdır. Geri döngü/özel düğümler (localhost, 127.0.0.1, 172.16-31.x) her zaman izinlidir ve etkilenmez. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | `POST /v1/rerank`'in (ve bellek motorunun geri döngü rerank adımının) localhost dışında barındırılan OpenAI uyumlu bir sağlayıcı düğümü — TEI, Infinity, vLLM vb. çalıştıran bir LAN makinesi veya Tailscale eşi — kullanmasına izin ver. Varsayılan olarak kapalıdır — uzak bir ana bilgisayara yönlendirme giden trafik (egress) kimliğini değiştirir ve açık bir operatör kararı olmalıdır. Geri döngü düğümleri (localhost, 127.0.0.1, 172.16-31.x) her zaman izinlidir ve etkilenmez. Uzak bir düğümün temel URL'si ayrıca sağlayıcı giden URL politikasını (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`) geçmelidir. | | `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(boş)_ | `src/shared/network/localNodeHosts.ts` | Sağlayıcı-düğümü yönlendirmesinin yerel olarak değerlendirdiği ana makine adları (virgül veya boşlukla ayrılmış) — tipik olarak OmniRoute'un kendi Docker ağındaki bir reranker, TEI veya audio sidecar'ının Docker/Compose servis adı (`http://reranker:8080/v1`); böylece düğümün sabit kodlanmış bir konteyner IP'sine ihtiyacı kalmaz. Listelenen ana makineler, her uzak düğüm için `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` ayarını açmaya gerek kalmadan `/v1/rerank`, `/v1/audio/*` ve yerel sağlık denetimi için uygundur ve doğrudan çağrılır — asla `HTTP(S)_PROXY` veya bir bağlantının sabitlenmiş proxy'si üzerinden değil. Bağlantının API anahtarını yine de gönderirler. Yalnızca tek etiketli adlar ile `.internal`/`.local` adları kabul edilir; genel FQDN'ler, IP değerleri ve bulut meta veri adları bir uyarıyla yok sayılır. (#14635) | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | OIDC etkinleştirildiğinde, kullanıcıların yalnızca OIDC Tek Oturum Açma (Single Sign-On) ile kimlik doğrulayabilmesi için parola girişini devre dışı bırakır. Yalın takma ad `OIDC_DISABLE_PASSWORD_LOGIN` de kabul edilir; aynı anahtara sahip Dashboard Özellik Bayrağı (Feature Flag) önceliklidir. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` için yalın takma ad (#10889). | ### Sağlamlaştırma Denetim Listesi ```bash # Üretim için asgari güvenlik: AUTH_COOKIE_SECURE=true # HTTPS gerektirir REQUIRE_API_KEY=true # Tüm proxy çağrılarında kimlik doğrula ALLOW_API_KEY_REVEAL=false # Anahtarları asla arayüzde gösterme CORS_ALLOWED_ORIGINS=https://your.domain.com MAX_BODY_SIZE_BYTES=5242880 # 5 MB sınırı ``` --- ## 5. Girdi Temizleme ve PII Koruması OmniRoute iki katmanlı bir savunma sağlar: istek tarafında enjeksiyon taraması ve yanıt tarafında PII ayıklama. > **⚠️ Sınırlamalar:** Bu koruma önlemleri, eksiksiz bir istem enjeksiyonu güvenlik duvarı veya PII DLP sistemi değil, _en iyi gayret esasına dayalı sezgisel_ tespitlerdir. Yanlış pozitifler (zararsız persona/RPG istemlerinin işaretlenmesi) ve yanlış negatifler (leetspeak, boşluk kullanımı, İngilizce dışı kalıplar) üretebilirler. Tek başlarına uyumluluk için yeterli değildirler. Bunlara güvenmeden önce modları ayarlayın ve kendi trafiğinize karşı test edin. ### İstek Tarafı: İstem Enjeksiyonu Koruması | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | --------------------------------- | ---------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Gelen mesajların istem enjeksiyonu kalıplarına karşı taranmasını etkinleştirir. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Enjeksiyon politikası: `warn` = yalnızca günlüğe kaydet, `block` = isteği 400 ile reddet. Eski `redact`, enjeksiyon metnini **ayıklamaz**; istek PII'sini yeniden yazmak için `PII_REDACTION_ENABLED` kullanın. | | `INJECTION_GUARD_MODE` | _(ayarlanmamış)_ | `src/middleware/promptInjectionGuard.ts` | `INPUT_SANITIZER_MODE` için eski takma ad — aynı davranış. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | `MODE=block` tarafından reddedilen minimum önem derecesi: `high` (varsayılan), `medium` veya `low`. Eşik düşürülmediği sürece orta önem derecesindeki kalıplar yalnızca gözlemlenir. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(ayarlanmamış)_ | `src/shared/utils/injectionSeverity.ts` | `INPUT_SANITIZER_BLOCK_THRESHOLD` için eski takma ad — aynı davranış. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | `true` olduğunda, gelen isteklerdeki PII'yi ayıklar (enjeksiyon modundan bağımsızdır). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | İstek/yanıt yüklerindeki yaygın API anahtarı / gizli belirteç kalıplarını ayıklar. İsteğe bağlıdır; `PII_REDACTION_ENABLED` davranışını yansıtır. | ### Yanıt Tarafı: PII Temizleyici | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | -------------------------------- | ---------- | ------------------------- | ----------------------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | İstemciye döndürmeden önce LLM yanıtlarını sızdırılmış PII açısından tarar. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = PII'yi maskele, `warn` = yalnızca günlüğe kaydet, `block` = yanıtın tamamını kaldır. | ### VS Code Belirteçli Rota Bağlamı Temizleyicisi | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ----------------------------------- | ---------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | `/v1/vscode/[token]/*` isteklerinden örtük etkin düzenleyici bağlamını (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs`…) çıkarır ve açıkça eklenmiş hassas dosyaların içeriğini ayıklar. Varsayılan olarak güvenlidir; devre dışı bırakmak için `0` olarak ayarlayın. | ### Senaryolar | Senaryo | Yapılandırma | | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Kurumsal uyumluluk** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (enjeksiyonları engeller + istek/yanıt PII'sini ayıklar; modlar birbirinden bağımsızdır) | | **Yalnızca izleme** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — günlüğe kaydeder ancak hiçbir zaman engellemez | | **Kişisel kullanım** | Tümünü devre dışı bırakın — ek yük yok | --- ## 6. Araç ve Yönlendirme Politikaları | Değişken | Varsayılan | Kaynak Dosyası | Açıklama | | ----------------------------------------------------------- | ---------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | LLM araç/işlev çağırma erişimini denetler. `allowlist` = yalnızca listelenen araçlar, `denylist` = listelenenler dışındaki tüm araçlar, `disabled` = kısıtlama yok. | | `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Yük yükü değiştirme kuralları JSON dosyasının yolu (model/protokol başına upstream ayarlamaları). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Yük yükü kuralları dosyasının sıcak yeniden yüklenmesi için aralık (ms). Minimum `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | İsteğe bağlı özellik: sağlayıcı öneki gerektirmek yerine, Claude Code istemcilerinden gelen yalın `claude-*` model kimliklerini Claude Code OAuth hesabı üzerinden yönlendirir. Açık sağlayıcı önekleri yine önceliklidir. Claude sağlayıcısı sayfasındaki bir kontrol paneli geçiş düğmesi üzerinden de yapılandırılabilir. | | `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | OmniRoute'un `redact-thinking-2026-02-12` Anthropic beta özelliğini kendisinin eklemesini durdurmak için `false` olarak ayarlayın (yalnızca imza içeren boş düşünme blokları). `thinking.display: "summarized"` içeren istekler, istemci tarafından üzerinde anlaşılmış bir redact beta özelliği veya CC uyumlu bir `requestDefaults.redactThinking` opt-in'i bunu korurken, ne olursa olsun bu adımı atlar. Claude OAuth istekleri, varsayılan olarak kapalı `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED` özellik bayrağı açık olmadığı sürece beta özelliğini korur (bu özellik Claude Code OAuth parmak izinin bir parçasıdır). | | `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Eski `resolveBareModelToConnectionDefault` davranışı (#4825): herhangi bir yalın model adını seçili bağlantının `defaultModel` değeriyle değiştirir. Varsayılan olarak kapalıdır; yalnızca `auto` veya boş bir model değiştirilir ve açık olduğunda çift başına bir uyarı günlüğe kaydedilir. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Sıralı dönüş kombinasyonları için model başına eşzamanlılık sınırı (#9100). Sıralı dönüş kombinasyonu semaphore'u, geçersiz kılma olmadan model başına eşzamanlı 3 istekle kesin olarak sınırlandırılmıştı; bu da daha yüksek eşzamanlılıktaki trafiği bu sınırın arkasında serileştiriyordu. `>= 1` olarak doğrulanır, `<= 32` ile sınırlandırılır. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Doğrudan tek model isteklerinde OmniRoute'un yerel bağlam penceresi / maksimum giriş belirteci denetimini atlayan tehlikeli bir isteğe bağlı ayardır. Upstream sağlayıcıları gerçek sınırlarını uygulamaya devam eder; istem sıkıştırma ve modelin kendi çıktı belirteci sınırı etkin kalır. Etkin öncelik Feature Flags veritabanı geçersiz kılması > ortam değişkeni > varsayılan şeklindedir; yeniden başlatma gerekmez. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(unset)_ | `open-sse/services/selfHostedEntry.ts` | Satır içi YAML `providers:` belgesi (RIC-738, D4). Ayarlandığında (`strategy:` bloğuyla veya bu blok olmadan), `/v1/chat/completions` bulut işlem hattı yerine self-hosted birleşik OpenAI uyumlu girişine yönlendirilir. Ayarlanmadığında (varsayılan), rota doğrudan mevcut bulut işlem hattına geçer. Bkz. `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(unset)_ | `open-sse/services/selfHostedEntry.ts` | `OMNIROUTE_SELF_HOSTED_PROVIDERS` ile aynı `providers:` belgesini içeren bir YAML dosyasının yolu; satır içi ortam değişkeni yerine dosya kullanmayı tercih eden dağıtımlar içindir. Bunlardan herhangi biri self-hosted girişini etkinleştirir. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _(unset — open route)_ | `open-sse/services/selfHostedEntry.ts` | Birleşik self-hosted girişi için isteğe bağlı paylaşılan API anahtarı (D5 taslağı, anahtar başına kota sistemi için ayrılmıştır). Ayarlandığında istekler `Authorization: Bearer ` içermelidir. Ayarlanmadığında rota açıktır; mevcut self-hosted yerel sağlayıcı modeline (loopback/güvenilir ağ dağıtımı) uygundur. | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(ayarlanmadı)_ | `open-sse/services/routingStrategies.ts` | Deterministik yönlendirme motoru (M2/RIC-740, D3) için satır içi YAML `strategy:` belgesi — kara liste/beyaz liste, cooldown kesicisi, maliyet önceliği, gecikme duyarlı, yedek zinciri. `OMNIROUTE_SELF_HOSTED_PROVIDERS` içine iç içe yerleştirilmiş satır içi bir `strategy:` bloğunu anahtar bazında geçersiz kılar. Bkz. `docs/routing/DETERMINISTIC_ROUTING.md`. | | `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(ayarlanmadı)_ | `open-sse/services/routingStrategies.ts` | Satır içi bir ortam değişkeni yerine dosya tercih eden dağıtımlar için, `OMNIROUTE_SELF_HOSTED_STRATEGY` ile aynı `strategy:` belgesini barındıran bir YAML dosyasının yolu. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(ayarlanmadı)_ | `open-sse/services/conversationTracker.ts` | Konuşma geçmişi toplamayı durdurmak için `1` olarak ayarlayın. `resolveConversationId()`, SQLite'ı okumadan veya mesaj geçmişini ayrıştırmadan önce izlenmeyen bir sonuç döndürür ve istemci tarafından sağlanan oturum kimlikleri de buna dahildir. Yönlendirme oturumu işleme değişmez ve mevcut kayıtlar silinmez. Panelin konuşma görünümünü kullanmayan ve tur tablosunun büyümesini durdurmak isteyen dağıtımlar içindir. | | `OMNIROUTE_NADIR_API_KEY` | _(ayarlanmadı)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | Kombonun kendi `config.nadir.apiKey` değeri ayarlanmadığında kullanılan, katılıma dayalı `nadir` otomatik kombo yönlendirici stratejisi için API anahtarı. İsteğe bağlıdır: anahtarsız çağrılar Nadir'in anonim katmanına düşer; bu katman IP başına hız sınırlıdır ve dolayısıyla paylaşılan bir ağ geçidi arkasında kullanılamaz. Hassastır; kombolar farklı hesaplar kullandığında kombo bazındaki alanı tercih edin. | | `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Kombonun kendi `config.nadir.baseUrl` değeri ayarlanmadığında kullanılan, Nadir karar API'sinin temel kaynağı. Yalnızca, istem başlıklarını kendi ağınızın içinde tutan kendi barındırdığınız bir Nadir için gereklidir. Sondaki `/v1` tolere edilir ve kaldırılır. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | API anahtarı başına USD kullanım limitleri için haftalık pencere (istek uygulaması, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: hafta, anahtarın erişebildiği yukarı akış bağlantıları arasındaki en erken haftalık sıfırlamada sona erer; hiçbiri bilinmiyorsa yuvarlanan 7 gündür. `calendar`: Pazartesi 00:00'dan bir sonraki Pazartesi 00:00'a kadar olan yerel hafta, her anahtar için aynıdır. Tek bir yukarı akış hesabı havuzu, ayrı ayrı bütçelenmiş birçok anahtar tarafından paylaşıldığında `calendar` önerilir. Geçersiz değerler `provider` değerine geri döner. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(işlem saat dilimi)_ | `src/lib/usage/apiKeyUsageLimits.ts` | `calendar` haftalık penceresi için Pazartesi 00:00'ı tanımlayan IANA saat dilimi (örneğin `Asia/Shanghai`). Ayarlanmadıysa veya geçersizse: OmniRoute işleminin saat dilimi (ana makinenin veya konteynerin `TZ` değeri; konteyner imajlarında genellikle ayarlanmamıştır, yani Eşgüdümlü Evrensel Zaman). `provider` modunda yok sayılır. | | `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | Bir istekte izin verilen varsayılan azami araç sayısı (OpenAI varsayılanı). Yalnızca pozitif tam sayılar; ayarlanmamış veya geçersiz değerler `128` olarak kalır. Bilinen/proaktif bir limite sahip bir sağlayıcı (`grok-cli` 200, `nvidia` 1536) yine de kendi üst sınırını uygular — bu yalnızca varsayılan tavanı değiştirir. | | `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(açık)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai istem ile öykünülmüş araç çağırma: ayarlanmamış veya `1`/`true`/`on`/`yes` değeri yerel araç kataloğunu isteme enjekte eder; diğer herhangi bir değer (örn. `0`) bu enjeksiyonu atlar. | --- ## 7. URL'ler ve Bulut Eşitleme | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | Dahili eşitleme işlerinin `/api/sync/cloud` çağrısı yapması için sunucu tarafı URL'si. Uygulamaya herkese açık bir proxy üzerinden erişilse bile bunu bir geri döngü/kapsayıcı URL'si olarak tutun. | | `CLOUD_URL` | _(boş)_ | `src/lib/cloudSync.ts` | Bulut aktarma uç noktası URL'si (premium özellik). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | Bulut eşitleme istekleri için HTTP zaman aşımı. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Webpack derleme yapılandırması | Derleme zamanı profili (ayrıcalıklı modülleri paketten fiziksel olarak hariç tutmak için `minimal` olarak ayarlayın). | | `OMNIROUTE_STANDALONE_DIR` | _.build/ bağımsız çıktısı_ | `scripts/build/colocate-standalone.mjs` | Derleme sonrası birlikte konumlandırma adımının kullandığı bağımsız çıktı dizini için derleme zamanı geçersiz kılma ayarı. Çalışma zamanı ayarı değildir. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(boş)_ | `src/lib/cloudSync.ts` | Bulut Eşitleme yanıtlarının HMAC-SHA256 imzasını doğrulamak için kullanılan paylaşılan gizli anahtar. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Bulut Eşitleme uç noktasının yerel kimlik bilgileri üzerine yazmasına izin vermek için `true` olarak ayarlayın. Varsayılan değer `false` şeklindedir. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Yerel bir gizli anahtar yapılandırılmadığında imzasız bir Bulut Eşitleme yanıtını reddetmek için `true` olarak ayarlayın (#13679). Mevcut bir imza her zaman doğrulanır ve bu bayraktan bağımsız olarak `OMNIROUTE_CLOUD_SYNC_SECRET` ayarlanmamışsa her zaman reddedilir. Varsayılan davranış v3.9'da zorunlu doğrulamaya geçer. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | Kullanıcı onayı olmadan v3.8.5 sürümündeki tek adımlı "her şeyi içe aktar" davranışına geri dönmek için `true` olarak ayarlayın. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, Pano, eşitleme | OAuth redirect_uri, Pano bağlantıları ve oluşturulan genel URL'ler için herkese açık URL. OAuth geri çağırmalarının veya oluşturulan tarayıcı bağlantılarının standart bir ters proxy ana bilgisayarı kullanması gerektiğinde bunu kararlı genel URL olarak ayarlayın. | | `NEXT_PUBLIC_CLOUD_URL` | _(boş)_ | İstemci tarafı | `CLOUD_URL` değişkeninin istemci tarafındaki yansıması. | | `NEXT_PUBLIC_APP_URL` | _(ayarlanmamış)_ | `src/shared/services/cloudSyncScheduler.ts` | `NEXT_PUBLIC_BASE_URL` için eski uyumluluk geri dönüşü. | | `NEXT_PUBLIC_PORT` | _(ayarlanmamış — `PORT` değerine geri döner)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Herhangi bir kaynak bilinmediğinde (SSR/testler) görüntüleme URL'leri için istemci tarafı geri dönüş portu; `PORT` değerinden önce okunur. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(ayarlanmamış)_ | Genel kaynak çözümleyicisi, görsel URL'leri | Genel URL oluşturma ve pano dışı tarayıcı kaynağı doğrulaması için kullanılan, tarayıcıya yönelik en yüksek öncelikli OmniRoute kaynağı. OpenWebUI veya başka bir aktarıcı OmniRoute'a dahili bir URL üzerinden erişiyor ancak kullanıcının tarayıcısının oluşturulan medyayı bir LAN, tünel veya genel kaynaktan alması gerekiyorsa bunu ayarlayın. `/v1` eklemeyin. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(ayarlanmamış)_ | `open-sse/config/providerPluginManifestUrl.ts` | Yardımcı istemcilere bildirilen mutlak sağlayıcı eklentisi manifest URL'si. Ayarlanmadığında OmniRoute, istek kaynağından veya HOST/PORT değerlerinden `/api/v1/provider-plugin-manifest` türetir. | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | İstek kaynağı olmadan HOST/PORT değerlerinden sağlayıcı eklentisi manifest URL'si türetilirken kullanılan protokol. Açık bir `OMNIROUTE_PROVIDER_MANIFEST_URL` ayarlanmamışsa, TLS sonlandıran genel bir proxy arkasında `https` olarak ayarlayın. | | `OMNIROUTE_TRUST_PROXY` | _(ayarlanmamış)_ | `src/server/origin/publicOrigin.ts` | İletilen genel kaynak başlıkları için isteğe bağlı güven modu. Ayarlanmamış = güvenlik kararlarında `Forwarded` / `X-Forwarded-*` başlıklarına güvenme. `true` / `loopback`, iletilen ana makine/protokol bilgilerine yalnızca belirteç damgalı bir geri döngü proxy'sinden geldiklerinde güvenir. `private` / `lan`, özel LAN proxy eşlerine de güvenir ve `API_PORT` köprüsünün böyle bir eşin `X-Forwarded-For` değerini korumasına izin verir. Üretimde açıkça belirtilmiş `NEXT_PUBLIC_BASE_URL` kullanmayı tercih edin. | | `KIE_CALLBACK_URL` | _(ayarlanmamış)_ | `open-sse/utils/kieTask.ts` | Zaman uyumsuz kie.ai işleri için genel geri çağırma URL'si. `OMNIROUTE_KIE_CALLBACK_URL` ve `OMNIROUTE_PUBLIC_URL` öncesindeki en yüksek öncelikli geçersiz kılma. | | `OMNIROUTE_KIE_CALLBACK_URL` | _(ayarlanmamış)_ | `open-sse/utils/kieTask.ts` | `KIE_CALLBACK_URL` için alternatif yazım. Birincil değişken ayarlanmamışsa buna geri dönülür. | | `OMNIROUTE_PUBLIC_URL` | _(ayarlanmamış)_ | `open-sse/utils/kieTask.ts` | Zaman uyumsuz geri çağırma URL'lerini oluşturmak için kullanılan genel kaynak. kie.ai geri çağırmaları için en düşük öncelikli geri dönüş; diğer aktarıcılar için de genel amaçlı bir genel URL olarak kullanılır. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Kullanım sayfası tarafından kullanılan CrofAI kota sorgulama uç noktası. Aktarıcılar / test sabitleri için geçersiz kılın. | | `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | Kullanım sayfası tarafından kullanılan ClinePass 5 saatlik / haftalık / aylık kota uç noktası. Aktarıcılar / test sabitleri için geçersiz kılın. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Kullanım sayfası tarafından kullanılan, resmi API anahtarıyla kimliği doğrulanan OpenCode Go kullanım uç noktası. Aktarıcılar / test sabitleri için geçersiz kılın. | | `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | İstemcinin göndermediği opencode-go/zen yukarı akış isteklerinde OpenCode CLI kimlik başlıklarını (User-Agent, x-opencode-client/project, istek/oturum UUID'leri) sentezleyerek VPS çıkışındaki Cloudflare'in bunları kabul etmesini sağlayın (#6210/#5997). #10571'den beri varsayılan olarak etkindir; `false`/`0`/`no`/`off` ile devre dışı bırakın. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` etkin olduğunda ve sağlayıcıya özel bir `_USER_AGENT` geçersiz kılma değeri ayarlanmadığında kullanılan varsayılan User-Agent. Yalnızca opencode yürütücülerine uygulanır. Üst sağlayıcının geçit uyguladığı anahtarsız bir istekte, `opencode/= 1.17>` içermeyen yapılandırılmış bir değer reddedilmek yerine bu varsayılanla değiştirilir. | | `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (etkin) | `open-sse/utils/opencodeHeaders.ts` | İstemci uygulaması ilişkilendirme başlıklarını (`x-session-id`, `x-title`, `http-referer`) üst sağlayıcılara iletir; böylece listelenen bir araç içinde başlayan istek, yönlendirici üzerinden geçerken kimliğini korur (OpenRouter yayıncı geçitleri bunlara göre çalışır). `0`/`false`/`no`/`off`, kayıt defteri/operatör kimliğini korur ve istemci tarafından sağlanan değerleri kaldırır. Operatör tarafından yapılandırılan özel başlıklar her zaman istemci değerlerine göre önceliklidir. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` etkin olduğunda sentezlenen `x-opencode-client` başlığının değeri. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` etkin olduğunda sentezlenen `x-opencode-project` başlığının değeri. | | `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(ayarlanmamış)_ | `open-sse/config/providerErrorRules.ts` | Üst sağlayıcı hataları çıkış IP'sine göre gruplandırılan etkin sağlayıcı kümesi (bir 429, aynı IP'yi paylaşan tüm kardeş bağlantıları beklemeye alır). Ayarlanmamışsa ücretsiz katmanın varsayılanı olan `opencode,opencode-go,opencode-cli` kullanılır; `none`/`off`/`false`/`0` zincirleme etkiyi tamamen devre dışı bırakır; virgülle ayrılmış bir liste ise kümenin yerini alır. Ücretli planlar üst sağlayıcı tarafında hesaba göre gruplandırılır ve bunu güvenle devre dışı bırakabilir (#9611). | | `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(ayarlanmamış)_ | `open-sse/config/providerErrorRules.ts` | Kota reddinde çıkış rotasyonunun kapsamı. Ayarlanmamışsa yalnızca yukarıdaki IP'ye göre gruplandırılan aile için 429 alındığında bir havuz üyesi kenara ayrılır; `all`, bu yazma işlemini tüm sağlayıcılara genişletir; böylece bir üye üzerinden alınan hız sınırı, sonraki seçimin farklı bir çıkış kullanmasını sağlar. `all` dışındaki tüm değerler yok sayılır. `PROXY_SKIP_RECENTLY_FAILED` gerektirir (varsayılan olarak etkindir). Depo (sağlayıcı, adres) çiftine göre değil, çıkış adresine göre anahtarlanır; dolayısıyla genişletilmiş bir 429, süre dolana kadar o üyeyi her sağlayıcı için beklemeye alır (5 dk., iki katına çıkarak 15 dk. olur). Her yanıt sonucunda okunur; bu nedenle değişiklik yeniden başlatma gerektirmeden uygulanır. | | `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(ayarlanmamış)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Anahtarsız OpenCode isteklerinin gövdesinin (akış bayrağı ve araç listesi) ayarlanmasını durdurmak için `off` olarak ayarlayın. Başlıklar uygulanmaya devam eder. Her istekte okunur; dolayısıyla değişiklik hemen etkili olur. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(ayarlanmamış)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Hiç araç içermeyen anahtarsız bir OpenCode isteğinde, ilgili model için henüz hiçbir şey gözlemlenmemişse bildirilecek virgülle ayrılmış araç adları. Boş bırakılırsa modelin çağırmaması söylenen tek bir yer tutucuya geri dönülür. En fazla 32 girdi, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; geçersiz girdiler yok sayılır. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | Kota verilerini almak için kullanılan Ollama Cloud ayarlar URL'si. Aktarıcılar/test fikstürleri için geçersiz kılınabilir. | | `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Ollama Cloud'un belgelenmiş üst sağlayıcı bakiye uç noktası (`GET https://ollama.com/api/balance`, `Authorization: Bearer `). Modül yüklenirken bir kez okunur. Bağlantının bir API anahtarı olduğunda Ollama Cloud kotası için önce bu kullanılır; ayarlar sayfası çerez kazıyıcısı yedek seçenek olarak kalır. Aktarıcılar/test fikstürleri için geçersiz kılınabilir. | | `OLLAMA_USAGE_COOKIE` | _(ayarlanmamış)_ | `open-sse/services/usage.ts` | Ayarlar sayfasından kota verilerini almak için kullanılan Ollama Cloud `__Secure-session` çerezi. Hassastır; birden fazla hesap yapılandırıldığında bağlantı başına Dashboard alanını tercih edin. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(ayarlanmamış)_ | `open-sse/services/usage.ts` | Alternatif Ollama Cloud `__Secure-session` çerezi ortam değişkeni. Hassastır; birden fazla hesap yapılandırıldığında bağlantı başına Dashboard alanını tercih edin. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(ayarlanmamış)_ | `open-sse/services/usage.ts` | Daha kısa diğer adlardan önce kullanılan alternatif Ollama Cloud `__Secure-session` çerez ortam değişkeni. Hassastır; birden fazla hesap yapılandırıldığında bağlantı başına Dashboard alanını tercih edin. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | CodeWhisperer (AWS Kiro) kullanım sınırları uç noktası. Aktarıcılar / test fikstürleri için geçersiz kılın. | > [!IMPORTANT] > Bir ters proxy'nin (nginx, Caddy) arkasında dağıtım yaparken, OAuth geri çağrılarının veya oluşturulan herkese açık bağlantıların bu ana bilgisayar adını kullanması gerekiyorsa `NEXT_PUBLIC_BASE_URL` değerini kararlı herkese açık URL'niz (ör. `https://omniroute.example.com`) olarak ayarlayın. Bu yapılmazsa yönlendirme URI'si eşleşmeyeceğinden OAuth geri çağrıları başarısız olabilir ve oluşturulan herkese açık bağlantılar dahili kapsayıcı kaynağını gösterebilir. > > Sunucudan sunucuya işler için `BASE_URL` değerini dahili bir geri döngü/kapsayıcı URL'si olarak tutun. Kimlik bilgileri taşıyan dahili kendi kendine getirme isteklerinde tarayıcı `Origin` değerini veya herkese açık ana bilgisayar adını kullanmayın. > > Kimliği doğrulanmış dashboard yazma işlemleri statik bir herkese açık temel URL gerektirmez: dashboard, oturuma bağlı bir CSRF belirteciyle aynı kaynaklı güvenli olmayan istekler gönderir. OmniRoute, dashboard dışı tarayıcı entegrasyonları için herkese açık kaynak doğrulamasını merkezileştirmeye devam eder: önce açıkça belirtilen herkese açık URL ortam değişkenlerine güvenilir; ham `Forwarded` / `X-Forwarded-*` başlıkları, `OMNIROUTE_TRUST_PROXY` etkinleştirilmediği ve doğrudan proxy eşinin belirteçle güvenilir olarak işaretlenmediği sürece yok sayılır. Aynı kaynaklı dashboard isteklerini düzeltmek için CORS ayarlarını kullanmayın; CORS yalnızca çapraz kaynaklı tarayıcı istemcileri içindir. --- ## 8. Giden Vekil Sunucu (Outbound Proxy) Çıkış (egress) denetimi, coğrafi yönlendirme veya IP maskeleme için yukarı akış LLM sağlayıcı çağrılarını bir HTTP ya da SOCKS5 vekil sunucusu üzerinden yönlendirin. `OMNIROUTE_UPSTREAM_HTTP2_ENABLED` varsayılan olarak `true` değerindedir. `open-sse/utils/proxyDispatcher.ts` ve `open-sse/utils/proxyFetch.ts` içindeki Undici dağıtıcılarında (dispatcher) HTTP/1.1'i zorlamak için `false`, `0`, `no` veya `off` olarak ayarlayın: doğrudan çıkış, HTTP(S)/SOCKS vekil sunucuları, aktarıcılar (relay) ve bunların yeni soketli yeniden denemeleri. Bu, TLS sertifika doğrulamasını, vekil sunucu kimlik doğrulamasını, bağlantı sınırlarını ve keep-alive ayarlarını korur. Dağıtıcılar önbelleğe alındığından ve aktarıcı aracıları başlangıçta oluşturulduğundan, değiştirdikten sonra OmniRoute'u yeniden başlatın. Bu anahtar, wreq TLS parmak izi oluşturmayı (fingerprinting) veya sağlayıcıya özgü taşıma katmanlarını (transport) denetlemez. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------------------- | ---------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Yukarı akış çağrıları için SOCKS5 proxy aracısını etkinleştirir. `false` ile devre dışı bırakılır. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | İstemci tarafı | SOCKS5 kullanılabilirliğinin istemci tarafında bilinmesi. | | `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Varsayılan olarak açık özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano veritabanı geçersiz kılması önceliklidir). Proxy havuzları ve hesap bazlı rotasyon, az önce başarısız olan bir üyeyi (reddedilen TCP yoklaması veya üzerinden gelen bir 429) her tekrarda iki katına çıkan ve bir üst sınıra kadar uzayan bir süre boyunca yeniden sunmayı durdurur. `false` düz seçimi geri getirir. | | `SELECTOR_CONTROL_ALLOWLIST` | _(ayarlanmamış)_ | `src/lib/proxySubscription/selectorGuard.ts` | Loopback dışındaki yerel-çekirdek seçici-kontrol hedefleri için izin listesi (virgül/boşlukla ayrılmış ana makine adları veya IP'ler; `*` LAN/özel ağları açar ancak meta veri/yerel-bağlantı adreslerini asla açmaz). http/https üzerinden loopback varsayılan olarak izinlidir. Ayarlandığında ve boş olmadığında pano veritabanı değeri bu değişkene göre önceliklidir. | | `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 kenara ayırmasının temel süresi (ms), her tekrarda iki katına çıkar. Başlangıçta bir kez okunur. `1000..3600000` aralığıyla sınırlıdır; aralık dışı veya okunamaz değerler bir uyarıyla varsayılana döner. | | `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 kenara ayırmasının üst sınırı (ms). Başlangıçta bir kez okunur. `1000..3600000` aralığıyla sınırlıdır; aralık dışı veya okunamaz değerler bir uyarıyla varsayılana döner. Üst sınır temel değerin altındaysa varsayılana döner. Üst sınırı düşürmek seri unutmayı da kısaltır: girdiler süre dolduktan `2 x max` sonra temizlenir. | | `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | İsteğe bağlı özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano veritabanı geçersiz kılması önceliklidir). Kotası çıkış adresine göre gruplandırılan sağlayıcılar için, yakın zamanda reddedilen bir üyenin gözlemlenen çıkış adresini paylaşan havuz üyesini sağlıklı üyelerin hemen altına sıralar. Yalnızca sıralama, asla hariç tutulmaz. Okuduğu reddetme sinyalini üreten `PROXY_SKIP_RECENTLY_FAILED` gerektirir. | | `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | Havuz üyesi başına tekrarlanan `proxy.set_aside` webhook uyarılarını sınırlayan geri sekme penceresi (ms); böylece art arda gelen reddetmeler tek bir olay gönderir. Her yayında okunur. `1000..3600000` aralığıyla sınırlıdır; aralık dışı veya okunamaz değerler sessizce varsayılana döner. | | `HTTP_PROXY` | _(ayarlanmamış)_ | Node.js standardı | Yukarı akış çağrıları için HTTP proxy'si. | | `HTTPS_PROXY` | _(ayarlanmamış)_ | Node.js standardı | Yukarı akış çağrıları için HTTPS proxy'si. | | `ALL_PROXY` | _(ayarlanmamış)_ | Node.js standardı | Evrensel proxy (`socks5://` destekler). | | `OMNIROUTE_PROXY_ECHO_URL` | _(ayarlanmadı)_ | `src/lib/proxyEchoTarget.ts` | Proxy çıkış yoklamalarının kullandığı echo-IP hedefini tek bir URL'ye sabitler. Ayarlanmadığında yoklama önce `api64.ipify.org`, sonra `api4.ipify.org` adresini dener; böylece yalnızca IPv4 kullanan tüneller ölü olarak raporlanmaz (#9694). | | `NO_PROXY` | _(ayarlanmadı)_ | Node.js standardı | Proxy'yi atlayacak, virgülle ayrılmış ana makine adları/IP'ler. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Önbelleğe alınmış HTTP/SOCKS proxy dağıtıcısı başına maksimum eşzamanlı soket sayısı. Codex `/v1/responses` gibi uzun ömürlü SSE akışları, birden fazla istek aynı hesap düzeyindeki proxy'yi paylaştığında birden fazla bağlantıya ihtiyaç duyar. `256` üzerindeki değerler sınırlandırılır. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | SOCKS5 el sıkışma (bağlanma) zaman aşımı (ms cinsinden). Tek bir residential ağ geçidi ana makinesi yüksek eşzamanlılığa maruz kaldığında (ör. 100 eşzamanlı istek) bu değeri yükseltin — proxy erişilebilir olsa bile doymuş bir havuzda gerçek el sıkışma 10 saniyeyi aşabilir; bu da aksi takdirde hatalı bir `[Proxy Fast-Fail] Proxy unreachable` olarak ortaya çıkar. Üst sınır `120000`. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | `false` (varsayılan) olduğunda, atanmış proxy'si çözümlenemeyen bir istek, doğrudan bağlantıya geri dönmek yerine **reddedilir (fail-closed)** — bu, gerçek IP sızıntılarını önler. Eski DIRECT geri dönüş davranışını geri yüklemek için `true` yapın. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | wreq-js kullanarak TLS parmak izini taklit eder (Chrome 124'ü taklit eder). JA3/JA4 engellemesine karşı koyar. | | `TLS_FINGERPRINT_PROVIDERS` | _(ayarlanmadı)_ | `open-sse/utils/proxyFetch.ts` | Yeni proxy'li TLS yönlendirmesi (`open-sse/utils/proxyFetch.ts`) için virgülle ayrılmış sağlayıcı izin listesi. Ayarlanmadığında doğrudan TLS eski davranışını korur; yalnızca bu sağlayıcılar Chrome-124 parmak izi köprüsü üzerinden yönlendirilir. Groq (`api.groq.com`), izin listesi ayarlanmamış olsa bile hariç tutulur; çünkü yerel undici API'ye ulaşabilirken Chrome JA3, Cloudflare 1010 hatasını tetikler. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Claude Turnstile Playwright tarayıcı bağlamının HTTPS sertifika hatalarını yok saymasına izin verir. | ### Senaryolar | Senaryo | Yapılandırma | | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **SSH tüneli üzerinden SOCKS5** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` | | **Kurumsal HTTP proxy** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` | | **Parmak izi karşıtı** | `ENABLE_TLS_FINGERPRINT=true` — `wreq-js` gerektirir (dahildir) | | **Çıkış kontrollü / doğrudan erişim yok** | `PROXY_FAIL_OPEN=false` (varsayılan) olarak bırakın. Proxy kullanılamadığında istekler, doğrudan bağlantı üzerinden sızdırmak yerine kesin olarak başarısız olur. | | **Eski / geliştirme — doğrudan geri dönüşe izin ver** | `PROXY_FAIL_OPEN=true`. Sağlamlaştırma öncesi davranışı geri yükler: proxy çözümlemesi başarısız olduğunda doğrudan bağlantı kullanılır. | > **Not (NVIDIA doğrulama atlaması — #3226):** NVIDIA'nın API anahtarı doğrulama uç noktası, > genel proxy/TLS yamalı fetch üzerinden yönlendirildiğinde takılır (undici dağıtıcısı → 504). > `src/lib/providers/validation.ts::directHttpsRequest()`, yalnızca bu doğrulama çağrısı için > `safeOutboundFetch({ bypassProxyPatch: true })` kullanarak proxy yamasını kasıtlı olarak atlar. > Bu, belgelenmiş ve kapsamı sınırlı bir istisnadır — sohbet/kullanım çıkışını **etkilemez**. > Atlama, `tests/unit/proxy-bypass-scope-guard-3226.test.ts` ile kapsam olarak sabitlenmiştir. --- ## 9. CLI Araç Entegrasyonu OmniRoute'un CLI sidecar'larını (Claude Code, Codex vb.) nasıl keşfettiğini ve başlattığını kontrol eder. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | --------------------------------- | -------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = sistem PATH'inde ara; `manual` = yalnızca açıkça belirtilen yolları kullan. | | `CLI_EXTRA_PATHS` | _(ayarlanmadı)_ | `src/shared/services/cliRuntime.ts` | CLI ikili dosyası keşfi için ek PATH girdileri (iki nokta üst üste ile ayrılmış). | | `CLI_CONFIG_HOME` | _(ayarlanmadı)_ | `src/shared/services/cliRuntime.ts` | CLI yapılandırmalarını (`~/.claude`, `~/.codex`) okumak için ana dizini geçersiz kılar. Mutlak bir yol olmalı ve işlem ana dizini içinde bulunmalı — **veya**, bir konteyner içinde, bind-mount edilmiş bir yol olmalı (`/host-home` bu şekilde çalışır). Bunun dışındaki her şey ana dizine geri döner. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | OmniRoute'un CLI yapılandırma dosyalarına yazmasına izin ver (token yenileme, oturum verileri). Her CLI yapılandırma yazma işleminin açık bir "writes disabled" hatasıyla başarısız olması için `false` olarak ayarlayın. | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Claude CLI ikili dosyası için özel yol. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Codex CLI ikili dosyası için özel yol. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Droid CLI ikili dosyası için özel yol. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | OpenClaw CLI ikili dosyası için özel yol. | | `CLI_CURSOR_BIN` | `agent`, ardından `cursor` | `src/shared/services/cliRuntime.ts` | Cursor agent ikili dosyası için özel yol. Bu ayarlanmadığında, algılama önce `agent`'ı dener ve `cursor`'a geri döner. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Cline CLI ikili dosyası için özel yol. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | 5dive CLI ikili dosyası için özel yol. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | 5dive'ın sistem durum dizini (root sahipli kimlik doğrulama profilleri); 5dive'ın kendi STATE_DIR varsayılanını yansıtır. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Continue CLI ikili dosyası için özel yol. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Qoder CLI ikili dosyası için özel yol. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Qwen Code CLI ikili dosyası için özel yol. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Aider CLI ikili dosyası için özel yol. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Goose CLI ikili dosyası için özel yol. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Google Gemini CLI ikili dosyası için özel yol — yalnızca sunucu tarafı algılama/sağlık kontrolleri için; `omniroute run gemini` komutu `gemini` ikili dosyasını sistem PATH'inden çözer. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Kilo Code CLI ikili dosyası için özel yol. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | OpenCode CLI ikili dosyası için özel yol. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Hermes ikili dosyası için özel yol. Her iki katalog girişi (`hermes` ve `hermes-agent`) tarafından paylaşılır. | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | ForgeCode CLI ikili dosyası için özel yol. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | jcode CLI ikili dosyası için özel yol. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | DeepSeek TUI ikili dosyası için özel yol. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | CodeWhale CLI ikili dosyası için özel yol. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Smelt CLI ikili dosyası için özel yol. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Pi (pi-coding-agent) ikili dosyası için özel yol. | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Crush CLI ikili dosyası için özel yol. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Oh My Pi (`omp`) ajan ikili dosyası için özel yol. | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Letta CLI ikili dosyası için özel yol. | | `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Prime Agent (Prime Intellect) ikili dosyası için özel yol. | | `CLI_WINDSURF_BIN` | _(yok)_ | `src/shared/services/cliRuntime.ts` | Windsurf ikili dosyası için özel yol. Windsurf **varsayılan komut olmadan** gelir — bu ayarlanana kadar ikili dosya algılama devre dışı kalır. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Devin CLI ikili dosyası (v3.8.0) için özel yol. Windsurf/Devin yürütücüsü tarafından kullanılır. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin Desktop `ide_version` değeri. Geçersiz kılmalar `x.y.z` biçiminde olmalıdır; geçersiz değerler doğrulanmış varsayılana geri döner. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | Desktop `ide_version` değerinden farklı olan, paketlenmiş Codeium/language-server `extension_version` değeri. Geçersiz kılmalar `x.y.z` biçiminde olmalıdır; geçersiz değerler paketlenmiş varsayılanı kullanır. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Yalnızca agentic köprüye özgü Devin CLI geçersiz kılması. Yürütücü yalnızca yerel ACP stdio upstream'ini kabul eder. | | `DEVIN_AGENTIC_HOME` | _(gerekli)_ | `open-sse/executors/devin-cli-agentic.ts` | Agentic Devin alt işlemi için mutlak yalıtılmış ana dizin; kabul edilen köprü yolları `/home/bridge` ve göreve özel `.sandbox` yollarıdır (Windows'ta `C:\...\.sandbox\...`). | | `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Köprü alt işlemi sonlandırıp açık bir zaman aşımı döndürmeden önce tek bir Devin ACP turunun maksimum süresi. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Yalıtılmış köprü için ana Claude Code model takma adı. Canlı donanım, örneği geçerli Devin hesabının döndürdüğü bir modelle değiştirir. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code Sonnet varsayılanını istediğinde kullanılan yalıtılmış köprü takma adı. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code Opus varsayılanını istediğinde kullanılan yalıtılmış köprü takma adı. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code Haiku varsayılanını istediğinde kullanılan yalıtılmış köprü takma adı. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code alt ajanları için kullanılan yalıtılmış köprü takma adı. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Devin CLI kotası (`GetUserStatus`) tarafından kullanılan Codeium koltuk yönetimi API'si için isteğe bağlı geçersiz kılma. | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Yerel `auggie` sağlayıcısı tarafından kullanılan Augment (Auggie) CLI ikili dosyası için mutlak yol geçersiz kılması. `CLI_AUGGIE_BIN` değerine, ardından bir PATH aramasına geri döner. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Augment (Auggie) CLI ikili dosya yolu için alternatif geçersiz kılma (`AUGGIE_BIN` sonrasında kontrol edilir). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Yerel `zcode` sağlayıcısının stdio istemcisi için kullanılan ikili dosya. PATH üzerindeki `zcode` değerine geri döner. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | `cliTools` aracılığıyla başlatıldığında `zcode` ikili dosyasına iletilen ek argümanların JSON dizisi (≤16 dize). | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | ZCode app-server alt işlemi için çalışma dizini. | | `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | App-server'a gönderilen sağlayıcı kimliği için geçersiz kılma. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | ZCode app-server çalışma zamanının kökü (paketlenmiş `node` ve `zcode-server.cjs` dosyalarının bulunduğu yer). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | ZCode app-server'ı barındırmak için kullanılan Node çalıştırılabilir dosyası. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | ZCode sunucusunu barındırmak için kullanılan app-server giriş betiği. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | ZCode app-server başlatmasının başarısız sayılmasından önceki başlangıç zaman aşımı (ms). | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | ZCode app-server çağrısı için istek başına RPC zaman aşımı (ms). | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Yöneticinin (supervisor) zaman aşımına uğratmasından önce bir ZCode turunun maksimum süresi (ms). | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | ZCode turu tamamlanmasını yoklama aralığı (ms). | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | OmniRoute'un Hermes CLI yapılandırmasını okuduğu/yazdığı Hermes Agent ana dizini. Hermes PowerShell yükleyicisinin Windows'ta ayarladığı ortam değişkeniyle eşleşir (`%LOCALAPPDATA%\hermes`). | ### CLI Profili Otomatik Senkronizasyonu Bu özellik bayrakları isteğe bağlıdır ve varsayılan olarak kapalıdır. Ayrıca CLI Code panosundan da açılıp kapatılabilirler. | Variable | Default | Source File | Description | | ------------------------------------- | ------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Sağlayıcı model senkronizasyonundan sonra, canlı katalogdan `~/.codex/*.config.toml` profil dosyalarını otomatik olarak yeniden yazar. `CLI_ALLOW_CONFIG_WRITES` gerektirir; etkin/varsayılan Codex yapılandırmasını, kimlik doğrulamayı, Codex-lb ayarlarını veya sağlayıcı seçimini asla değiştirmez. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Sağlayıcı model senkronizasyonundan sonra, canlı katalogdan `~/.claude/profiles//settings.json` Claude Code profil dosyalarını otomatik olarak yeniden yazar. `CLI_ALLOW_CONFIG_WRITES` gerektirir; etkin/varsayılan Claude yapılandırmasını, kimlik doğrulamayı veya sağlayıcı seçimini asla değiştirmez. | ### Docker Örneği ```bash # Ana makine ikili dosyalarını konteynere bağlayın ve OmniRoute'a nerede olduklarını söyleyin: CLI_EXTRA_PATHS=/host-cli/bin CLI_CONFIG_HOME=/host-home CLI_ALLOW_CONFIG_WRITES=true CLI_CLAUDE_BIN=/host-cli/bin/claude ``` `CLI_CONFIG_HOME` yalnızca yol gerçekten ana makineden bind-mount edildiğinde etkili olur — onu `~/.codex:/host-home/.codex:rw` gibi mount'larla eşleştirin (`docker-compose.yml` dosyasındaki `host` profiline bakın). Konteyner kullanıcısının ev dizini içinde bulunmayan ve bind mount da olmayan bir yol yok sayılır; çünkü oraya yazılanlar konteyner yeniden oluşturulduğunda kaybolur. İmaj `USER node` olarak çalışır, dolayısıyla mount edilmemiş bir `/root` geçerli bir geçersiz kılma **değildir**. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------------------- | ------------ | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(otomatik)_ | `src/shared/utils/containerEnv.ts` | Konteyner algılamayı zorla aç (`1`/`true`) veya kapat (`0`/`false`). Yalnızca otomatik algılamanın kaçırdığı çalışma zamanlarında gereklidir. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | CLI aracı yapılandırma yazmalarının mount edilmemiş bir konteyner yoluna yine de yapılmasına izin ver. CLI eşdeğeri `--allow-container-write`. | | `DOCKER_UPDATE_TRIGGER_FILE` | tanımsız | `src/lib/system/autoUpdate.ts` | Yalnızca Docker imajı: panodaki **Şimdi Güncelle**, ana makine tarafındaki bir izleyicinin imajı çekip konteyneri yeniden oluşturması için bu dosyaya bir JSON isteği yazar (`DATA_DIR` içinde olmalıdır). [Docker Kılavuzu](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker) bölümüne bakın. | ### CLI İkili Dosyası (`omniroute`) yardımcıları Bu değişkenler, `omniroute` CLI ikili dosyasının kendi davranışını ayarlar (yukarıdaki sidecar algılamasını değil). | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(sistem)_ | `bin/cli/i18n.mjs` | CLI çıktı dilini zorla. BCP-47 yerel ayarı (örn. `en`, `pt-BR`). Sistem yerel ayarı ortam değişkenlerini (LC_ALL, LC_MESSAGES) geçersiz kılar. | | `OMNIROUTE_SHOW_LOG` | _(tanımsız)_ | `bin/cli/runtime/processSupervisor.mjs` | Denetimli modda sunucu stdout/stderr çıktısını terminale iletmek için `1` olarak ayarlayın. `omniroute serve` üzerindeki `--log` bayrağına eşdeğerdir. | | `OMNIROUTE_CLI_TOKEN` | _(tanımsız)_ | `bin/cli/api.mjs` | `x-omniroute-cli-token` başlığı olarak enjekte edilen makine kimlik doğrulama jetonu. Görev 8.12'de otomatik olarak oluşturulur. | | `GEMINI_CLI_HOME` | _(tanımsız)_ | `bin/cli/commands/setup-gemini.mjs` | Kalıcı Gemini ev dizini kökü; tek seferlik çalıştırma geçici, yalıtılmış bir ev dizini kullanır. | | `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Sinyal gönderilmiş bir CLI alt sürecini zorla sonlandırmadan önceki milisaniye cinsinden ek süre. | | `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(tanımsız)_ | `bin/omniroute.mjs` | Varsayılan kullanıcının veri dizini ortam dosyasını atlamak için açık bir DATA_DIR ile birlikte 1 olarak ayarlayın. | | `OMNIROUTE_SYNC_TOKEN` | _(tanımsız)_ | `bin/cli/commands/sync.mjs` | `omniroute sync bundle` için senkronizasyon jetonu (`GET /api/sync/bundle` yalnızca senkronizasyon jetonunu kabul eder, API anahtarını değil). `--token` ile eşdeğerdir. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | CLI → sunucu istekleri için deneme başına HTTP zaman aşımı (ms). | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | CLI'nin zaman aşımı uyarısı yazdırmadan önce sunucu sağlık uç noktasını beklediği maksimum süre (ms). Yavaş soğuk başlangıçlar için kullanışlıdır (örn. Windows). `--ready-timeout` ile de ayarlanabilir. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | CLI komutları sırasında yeniden deneme/backoff tanılamalarını stderr'e yazdırmak için `1` olarak ayarlayın. | | `OMNIROUTE_PLUGIN_PATH` | _(tanımsız)_ | `bin/cli/plugins.mjs` | CLI eklenti keşfi için özel dizin (`omniroute-cmd-*` paketleri). Ayarlanmadığında varsayılan olarak `~/.omniroute/plugins/` kullanılır. Yalnızca CLI — `OMNIROUTE_PLUGINS_DIR` (bölüm 2) ile belirtilen sunucu tarafı eklenti tarayıcısına asla ulaşmaz. | | `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(tanımsız)_ | `bin/omniroute.mjs` | Boş olmayan herhangi bir değere ayarlandığında süreç çıkışındaki CLI güncelleme bildirimini bastır. Bildirim; CI, sessiz mod ve metin olmayan çıktı modlarında bağımsız olarak devre dışı kalır. | | `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(türetilmiş)_ | `bin/cli/commands/doctor.mjs` | `omniroute doctor` tarafından yoklanan canlılık URL'si. Programatik bir `livenessUrl` seçeneği önceliklidir; aksi takdirde bu değer aynen kullanılır. Ayarlanmadığında CLI, yerel panonun `/api/health/degradation` uç noktasını türetir. | | `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | CLI sağlayıcı komutları tarafından kullanılan sağlayıcı katalog yolu. Programatik bir `catalogPath` seçeneği önceliklidir. Mutlak yollar olduğu gibi kullanılır; göreli yollar proje kökünden çözümlenir. Ayarlanmadığında CLI, sağlayıcı sabitleri dizinini kullanır ve yedek olarak eski `providers.ts` dosyasına başvurur. | | `OMNIROUTE_PROVIDER_TEST_MODEL` | _(sağlayıcı varsayılanı)_ | `bin/cli/provider-test.mjs` | CLI sağlayıcı bağlantı testleri için genel yedek model. Öncelik sırası: yapılandırılmış bağlantı modeli, sağlayıcıya özgü model geçersiz kılması, bu değer ve ardından sağlayıcının yerleşik test modeli. | --- ## 10. Dahili Agent & MCP Entegrasyonları | Variable | Default | Source File | Description | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_BASE_URL` | otomatik algılama | `open-sse/mcp-server/server.ts` | MCP/A2A araçlarının OmniRoute'a ulaşması için açık URL. localhost otomatik algılamasını geçersiz kılar. | | `OMNIROUTE_API_KEY` | _(ayarlanmamış)_ | MCP/A2A modülleri | Dahili MCP aracı ve A2A yetenek çağrıları için API anahtarı. | | `OMNIROUTE_API_KEY_ID` | _(ayarlanmamış)_ | `open-sse/mcp-server/audit.ts` | MCP denetim günlüğü atfı için anahtar kimliği. | | `ROUTER_API_KEY` | _(ayarlanmamış)_ | Eski | `OMNIROUTE_API_KEY` için eski takma ad. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Günlük temizleme işlemi bir satırı silmeden önce yerel veritabanında tutulan A2A görev geçmişinin gün sayısı. Ayarlanmamış, sayısal olmayan veya `<= 0` değerler `30` varsayılanına geri döner. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | A2A bellek isabetleri gözlemlenebilirlik özelliği için kapatma anahtarı. Bir görev için bellek geri çağırma aramasını tamamen atlamak üzere `0` olarak ayarlayın; diğer tüm değerler (ayarlanmamış dahil) özelliği etkin tutar. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Çevrimdışı/yerel Issue Agent kayıtlı-önceliklendirme uç noktasını etkinleştirir. Yerel kayıtlı-önceliklendirme iş akışlarını açıkça çalıştırmadığınız sürece devre dışı bırakın. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(ayarlanmamış)_ | `src/lib/issueAgent/execution.ts` | Tek bir Issue Agent kayıtlı-önceliklendirme çalıştırması için zaman aşımı (ms). Dahili bir maksimum değerle sınırlandırılır; ayarlanmamış veya geçersiz olduğunda yerleşik varsayılana geri döner. | | `OMNIROUTE_CONTEXT` | _(etkin bağlam)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | `omniroute` komutları için CLI uzak modu bağlamı/profili; yerel bağlamlar deposundaki etkin bağlamı geçersiz kılar. `--context ` ile eşdeğerdir. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | CLI bağlam kimlik bilgileri için isteğe bağlı `keytar` işletim sistemi anahtarlık arka ucunu devre dışı bırakır. Etkinleştirildiğinde, kimlik bilgileri `0600` modunda `config.json` içinde kalır ve CLI tek seferlik bir geri dönüş uyarısı verir; bilinçli başsız/konteyner çalışması için tasarlanmıştır. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | MCP araç çağrılarında kapsam tabanlı erişim denetimini zorunlu kılar. | | `OMNIROUTE_MCP_SCOPES` | _(tümü)_ | `open-sse/mcp-server/server.ts` | Virgülle ayrılmış kapsamlar: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Manifesti serileştirmeden önce MCP araç açıklamalarını sıkıştırır. Etkinleştirme değerleri: `1`, `true`, `on`. | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Sıkıştırma algoritması/profili. Devre dışı bırakma değerleri: `0`, `false`, `off`. | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | MCP sunucusu dahili yönetim okumaları (sağlık, dayanıklılık, kombinasyonlar, kota, kullanım) için iptal bütçesi (ms). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Bir sağlayıcıyı bekleyen MCP adımları (`route_request`, `web_search`, `web_fetch`) için iptal süresi bütçesi (ms). | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Bellekte önbelleğe alınan maksimum yerel korpus dizin örneği sayısı (LRU, dizine eklenen her kök dizin için bir tane). En az `1` değerine sınırlandırılır. | | `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Model kataloğu senkronizasyon aralığı (saat cinsinden). | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Sağlayıcı hız sınırı ve kota sorgulama aralığı. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Toplu senkronizasyonda art arda yapılan OAuth kota çekimleri arasındaki boşluk (ms); OAuth bağlantıları, yukarı akışı aşırı yüklememek için teker teker çekilir. `0` devre dışı bırakır (eşzamanlı). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | İstek başına preflight/monitor yolunda art arda yapılan yukarı akış kota çekimleri arasındaki minimum aralık (ms); aynı IP'deki birçok hesabın yukarı akışı aşırı yüklememesi için eşzamanlı ağ çağrılarını aralıklı hale getirir. Codex (`/wham/usage`), DeepSeek, Bailian (her iki çekim noktası), OpenCode ve Crof kota çekicilerine bağlanmıştır (#6009, #6911). Genel `usage.ts::getUsageForProvider` dağıtım yolu (github/glm/minimax/nanogpt/xai/vb.) henüz kapsanmamıştır — ayrı olarak izlenmektedir. Önbellek isabetleri etkilenmez. `0` devre dışı bırakır; `0..60000` aralığına sınırlandırılır. | | `OMNIROUTE_QUOTA_FETCH_JITTER_MS` | `120` | `open-sse/services/quotaFetchThrottle.ts` | Her ayrılmış yukarı akış kota çekiminde örneklenen, istek başına ek rastgele aralık (ms). Varsayılan 120'dir; `0..60000` aralığına sınırlandırılır; `0` yalnızca jitter'ı kaldırır. Kısıtlamanın tamamını devre dışı bırakmak için `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS=0` ayarlayın. Jitter, yukarı akış yasaklarının önleneceğini garanti etmez. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Gerçek bir kullanım olayından sonra sağlayıcı limitlerini yenilemeden önceki gecikme (ms); yukarı akış kota API'sine tüketimi kaydetmesi için süre tanır. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | otomatik algılama | `open-sse/services/adobeFireflyBrowserLogin.ts` | Etkileşimli Adobe Firefly oturum açma ve ekran dışı yenileme için kullanılan sistem Chrome veya Edge yürütülebilir dosyasının mutlak yolu. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | etkin | `open-sse/services/adobeFireflySession.ts` | Hesap kapsamlı Chrome CDP oturumlarıyla IMS ve tarayıcı-risk durumunu güncel tutar. Tarayıcı yenilemesini devre dışı bırakmak için `0` olarak ayarlayın. | | `ADOBE_FIREFLY_SESSION_DISK` | etkin | `open-sse/services/adobeFireflySession.ts` | Onarılan Adobe oturumlarını işlem yeniden başlatmaları boyunca `DATA_DIR` altında kalıcı olarak saklar. Oturumları yalnızca bellekte tutmak için `0` olarak ayarlayın. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly oluşturma gönderimleri arasındaki milisaniye cinsinden minimum aralık; `0` aralıklandırmayı devre dışı bırakır. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Her üçüncü başarılı Adobe gönderiminden sonra milisaniye cinsinden ek sessizlik süresi. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Geçici Adobe 408 yanıtlarından sonra milisaniye cinsinden temel geri çekilme süresi; en fazla beş deneme boyunca gönderim aralığıyla birleştirilir. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Tüm arka plan hizmetlerini devre dışı bırakır (senkronizasyon, fiyatlandırma, model yenileme). CI/test için kullanışlıdır. | | `OMNIROUTE_HEADLESS` | _(ayarlanmamış)_ | `src/lib/system/headless.ts` | Yalnızca proxy motoruyla başlatma: isteğe bağlı alt sistemleri atlar, `/dashboard` → 404. `omniroute serve --headless` ile aynıdır. Bkz. [HEADLESS.md](../guides/HEADLESS.md). | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(ayarlanmamış)_ | `src/lib/config/runtimeSettings.ts` | Otomatik test algılaması altında arka plan görevlerini zorla etkinleştirir. Test sezgisini geçersiz kılmak için `1` olarak ayarlayın. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Bütçe sıfırlama kontrol sıklığı (ms). Alt sınır `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Proaktif bağlantı bekleme süresi kurtarma sıklığı (ms): geçici `rate_limited_until` süresi dolmuş bağlantıları, istek sıcak yolunun dışında yeniden doğrular. Alt sınır `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Proaktif bağlantı bekleme süresi kurtarma zamanlayıcısını devre dışı bırakır (`getProviderCredentials` içindeki tembel kurtarma hâlâ geçerlidir). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Akıl yürütme önbelleği temizleme sıklığı (ms). Alt sınır `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _ayarlanmamış_ (devre dışı) | `open-sse/services/reasoningTokenBuffer.ts` | Düşünen modellerin çıktı bütçeleri için isteğe bağlı alt sınır: `[256, floor)` aralığındaki çağıran `max_tokens` değeri alt sınıra yükseltilir (modelin çıktı üst sınırıyla kısıtlıdır). Ayarlanmamış = istemci bütçeleri asla büyütülmez (#9507). | | `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _ayarlanmamış_ (devre dışı) | `open-sse/services/learnedReasoningEffortCaps.ts` | İsteğe bağlı, virgülle ayrılmış sağlayıcı kimlikleri (veya `*`): bir `reasoning_effort` 400/422 hatası kabul edilen küme belirtmediğinde, bir kademe düşürerek bir kez yeniden dener (asla `low` altına inmez) ve kademeyi yalnızca sonda yanıtlanırsa öğrenir (#14895). | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Etkin her günlük dışa aktarma hedefini boşaltan çağrı günlüğü dışa aktarma görevi için cron ifadesi (UTC). Gövdeler dışa aktarılırken `*/5 * * * *` tercih edin. | | `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | Hedef başına alt işlem duvar saati zaman aşımı (milisaniye cinsinden). Zaman aşımı hatayı kaydeder ve onaylanmamış toplu işi ilerletmeden işlemi sonlandırır. Geçersiz/pozitif olmayan/tamsayı olmayan değerler varsayılanı kullanır. | | `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | MB cinsinden Node dışa aktarma alt işlemi V8 old-space sınırı (toplam RSS değil). Varsayılan, gövdeli sınırlandırılmış artefaktların 500 satırı için pay bırakır; aşırı büyük toplu işler yine de alt işlem yığınını tüketebilir. Hata durumunda toplu iş boyutunu düşürmek veya bu sınırı yükseltmek önerilir. Geçersiz/pozitif olmayan/tamsayı olmayan değerler varsayılanı kullanır. Bun dışa aktarmaları bu sınır olmadan işlem içine geri döner. | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Yapılandırma sıcak yeniden yüklemesi için yoklama aralığı (ms). `1000` altı reddedilir. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(etkin)_ | `src/lib/db/apiKeys.ts` | Redis destekli API anahtarı kimlik doğrulama önbelleğini atlamak için `1` olarak ayarlayın (veritabanı okumalarını zorlar). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Kullanıcı tarafından yönetilen RTK proje filtre kurallarına katı imza kontrolleri olmadan güvenir. | | `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | `lite.maxToolLength` ayarlanmadığında Lite proaktif araç sonucu kırpması için karakter üst sınırı. Aralık 256–1000000. Kontrol paneli ayarı bu ortam değişkeninden önce gelir. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Maksimum eşzamanlı senkron RTK/Caveman çalışanı; fazla işler FIFO sırasında bekler. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | İş başına milisaniye cinsinden zaman aşımı. Zaman aşımına uğrayan çalışanlar sonlandırılır ve istek değişikliksiz olarak fail-open ile başarısız olur. | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Kullanılmayan bir sıkıştırma çalışanı sonlandırılmadan önceki boşta kalma süresi (milisaniye cinsinden). | | `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Her sıkıştırma çalışanı için tüm modlarda MB cinsinden V8 eski nesil (old-generation) yığın sınırı (taban `128`). Bu sınırı aşan bir iş, ağ geçidi yığınını büyütmek yerine fail-open yapar (sıkıştırılmamış olarak). | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 yığılmış işlem hattı için motor başına devre kesici (circuit-breaker) ana anahtarı. **İsteğe bağlı (varsayılan kapalı)** — açıkken, istekler boyunca tekrar tekrar hata fırlatan bir motor, bir bekleme süresi boyunca atlanır (fail-open); kapalıyken bayt birebir eski davranış geçerlidir. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Bir motorun kesicisi açılmadan önce gereken art arda istekler arası hata sayısı. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Açılmış bir motorun, yarı açık (half-open) bir yoklamadan önce atlanmış kaldığı milisaniye cinsinden süre. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR geri alma geri bildirim rampası: saklanan bir bloğun daha önceki her geri alınışı, etkin `minChars` değerini doğrusal olarak yükseltir (sık geri alınan içerik daha az sıkıştırılır; `>=3` geri alma = asla sıkıştırılmaz). `1` rampayı devre dışı bırakır (yalnızca eşikte ikili atlama). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | CCR kalıcı blok deposu (#9061). Bellek içi depoyu SQLite ile destekler; böylece bir blok LRU tahliyesine, TTL'ye, yeniden başlatmaya veya geri alma isteğinin başka bir örneğe düşmesine rağmen korunur. Blokları yalnızca bellekte tutmak için `false` olarak ayarlayın. 512KB üzerindeki bloklar ve bulut çalışma zamanları her durumda yalnızca bellekte kalır. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 kullanımla gözlemlenen önek dondurma ana anahtarı. **İsteğe bağlı (varsayılan kapalı)** — açıkken, eşikten `>=` sayıda gözlemlenen bir sistem istemi, kararlı ve önbelleklenebilir bir önek olarak ele alınır ve statik önbellek sezgisinin kaçırdığı sağlayıcılarda bile sıkıştırmadan korunur (dondurma yalnızca _korur_, asla değiştirmez). | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Bir sistem isteminin donmuş kararlı önek olarak ele alınmasından önce gereken gözlem sayısı. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | İlk kurulumdan sonra bootstrap betiği tarafından `true` olarak ayarlanır. Kurulum sihirbazının görünürlüğünü kontrol eder. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Kaçış kapısı: istek gövdesinin Antigravity proje alanını geçersiz kılmasına izin verir. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Google One AI kredileri politikası: `off` asla kredi enjekte etmez, `retry` uygun bir kota 429 hatasından sonra bir kez enjekte eder, `always` ise ilk istekte enjekte eder. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Yukarı akış gerçek imzaları reddettiğinde, Antigravity istek çeviricisinin katı CLI istek imzası doğrulamasını atlamasına izin verir (hata ayıklama/eski CLI modu). Sıfırdan farklı bir değer atlamayı etkinleştirir. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Otomatik algılama yerel oturum açma içe aktarımı için Antigravity CLI (agy) belirteç dosyası yolunu geçersiz kılar. | ### OAuth CLI Köprüsü (Dahili) | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------- | ----------------- | ------------------------------- | ---------------------------------------------------------- | | `OMNIROUTE_SERVER` | otomatik algılama | `src/lib/oauth/config/index.ts` | CLI↔OmniRoute kimlik doğrulama köprüsü için sunucu URL'si. | | `OMNIROUTE_TOKEN` | _(ayarlanmamış)_ | `src/lib/oauth/config/index.ts` | CLI köprüsü için kimlik doğrulama belirteci. | | `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | CLI köprüsü oturumları için kullanıcı kimliği. | | `SERVER_URL` | _(ayarlanmamış)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_SERVER` için eski takma ad. | | `CLI_TOKEN` | _(ayarlanmamış)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_TOKEN` için eski takma ad. | | `CLI_USER_ID` | _(ayarlanmamış)_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_USER_ID` için eski takma ad. | --- ## 11. OAuth Sağlayıcı Kimlik Bilgileri **localhost geliştirmesi** için yerleşik kimlik bilgileri. Uzak dağıtımlar için her sağlayıcının geliştirici konsolunda kendi kimlik bilgilerinizi kaydedin. | Değişken | Sağlayıcı | Notlar | | ------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | Genel istemci — secret gerekmez. | | `CLAUDE_CODE_REDIRECT_URI` | Claude Code | Yönlendirme URI'sini geçersiz kıl. Varsayılan: `https://platform.claude.com/oauth/code/callback` | | `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | Genel istemci. | | `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Eşleşen `_SECRET` gerektirir. | | `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — | | `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | Genel istemci. | | `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | Genel Muse CLI cihaz akışı istemci kimliği için isteğe bağlı geçersiz kılma. Yerleşik genel istemciyi kullanmak için boş bırakın. | | `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Eşleşen `_SECRET` gerektirir. | | `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — | | `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | Genel istemci. | | `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | GitHub Enterprise Copilot'un OAuth istemci kimliği için isteğe bağlı geçersiz kılma. Ayarlanmadığında `GITHUB_OAUTH_CLIENT_ID`'nin genel varsayılanına geri döner. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | `Copilot-Integration-Id` ve `Editor-Plugin-Version` başlıklarında gönderilen GitHub Copilot istemci entegrasyon kimliği için isteğe bağlı geçersiz kılma. Varsayılan olarak `copilot-developer-cli` kullanılır. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Bağlantı başına kimlik bilgisi mevcut olmadığında `open-sse/executors/devin-cli.ts` tarafından kullanılan API anahtarı yedeği. İsteğe bağlı. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Devin CLI ikili dosyasına (`devin`) özel yol. `open-sse/executors/devin-cli.ts` tarafından çözümlenir. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | GitLab Duo için OAuth istemci kimliği. `https://gitlab.com/-/profile/applications` adresinde `/callback` yönlendirme URI'si ve `api, read_user, openid, profile, email` kapsamlarıyla bir uygulama kaydedin. `GITLAB_OAUTH_CLIENT_ID`'ye geri döner. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | GitLab Duo için OAuth istemci sırrı. İsteğe bağlı — PKCE akışı secret gerektirmez. `GITLAB_OAUTH_CLIENT_SECRET`'e geri döner. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | GitLab temel URL'sini geçersiz kıl (kendi sunucusunda barındırılan GitLab). Varsayılan olarak `https://gitlab.com` kullanılır. `GITLAB_BASE_URL`'ye geri döner. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | `GITLAB_DUO_BASE_URL` için eski (legacy) yedek. `_DUO_` varyantı ayarlanmadığında kullanılır. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` tarafından tüketilen `GITLAB_DUO_OAUTH_CLIENT_ID` için eski yedek. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` tarafından tüketilen `GITLAB_DUO_OAUTH_CLIENT_SECRET` için eski yedek. | | `QODER_OAUTH_CLIENT_SECRET` | Qoder | — | | `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Qoder OAuth'u etkinleştirmek için ayarlayın. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Doğrudan API anahtarı yedeği (OAuth'u atlar). | | `QODER_CLI_WORKSPACE` | Qoder | Qoder CLI için çalışma alanı kimliği. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | `QODER_CLI_WORKSPACE` için takma ad. | | `QODER_CLI_CONFIG_DIR` | Qoder | Qoder CLI yapılandırma dizinini geçersiz kılar (izole PAT oturumu, tarayıcı oturumunun üzerine yazılmasını önler). | | `QODER_CLI_MAX_CONCURRENCY` | Qoder | Maksimum eşzamanlı qodercli çalıştırma sayısı (print süreçleri veya ACP istemleri); fazladan istekler FIFO kuyruğuna alınır. Ayarlanmadığında (varsayılan) = sınır yok. | | `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | Bir Qoder isteğinin, 429 `qodercli_busy` + `Retry-After` hatasıyla başarısız olmadan önce bir qodercli yuvası için ne kadar bekleyeceği (yalnızca sınır ayarlandığında). Varsayılan `120000`. | | `QODER_CLI_TRANSPORT` | Qoder | `print` (varsayılan) her istek için `qodercli --print` başlatır; `acp` her PAT için kalıcı bir `qodercli --acp` süreci çalışır durumda tutar. | | `QODER_CLI_ACP_IDLE_TIMEOUT_MS` | Qoder | ACP taşıyıcısı: kalıcı qodercli sürecini bu kadar boşta kalma süresinden sonra sonlandırır. Varsayılan `600000`. | | `QODER_CLI_ACP_STARTUP_TIMEOUT_MS` | Qoder | ACP taşıyıcısı: qodercli'nin ACP `initialize` isteğini yanıtlaması için son süre. Varsayılan `60000`. | | `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | ACP taşıyıcısı: kalıcı qodercli sürecini bu kadar oturumdan sonra yeniden başlatır. Varsayılan `500`. | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | `/api/chat` üzerinde `validated` olarak gönderilecek ön yüz `tk` belirteci. Blackbox belirteç eşleştirmesini zorunlu kıldığında gereklidir; aksi takdirde OmniRoute rastgele bir UUID'ye geri döner. Bkz. sorun #2252. | | `VISION_BRIDGE_BASE_URL` | Vision Bridge guardrail | Anthropic dışı vision-bridge çağrıları için OpenAI uyumlu temel URL. Varsayılan olarak eski OpenAI URL ortam değişkeni veya api.openai.com kullanılır. OmniRoute'un `/v1` self-loop'una veya herhangi bir OpenAI uyumlu uç noktaya (Gemini OpenAI-compat, OpenRouter) yönlendirin. Sorun #2232. URL OmniRoute'un kendi `/v1` adresi olduğunda, describe alt isteği `x-omniroute-admission-bypass: internal` gönderir ve çözümlenen self-loop kimlik bilgisiyle (yerel modda `sk_omniroute` sentinel değeri veya `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350) kimlik doğrular; böylece `REQUIRE_API_KEY=true` dağıtımları çalışır. | | `VISION_BRIDGE_API_KEY` | Vision Bridge guardrail | Yukarıdaki URL için API anahtarı. Anthropic dışı vision-bridge çağrılarında sağlayıcı bazlı OpenAI / Google ortam değişkenlerini geçersiz kılar. Anthropic modelleri kendilerine özel Anthropic anahtar yolunu kullanmaya devam eder. Sorun #2232. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Vision Bridge guardrail | "Kullanılabilir aday yok" yönlendirme sonucunun önbellekte tutulma süresi, ms cinsinden (varsayılan `30000`). Geçersiz veya negatif değerler varsayılana geri döner; `0` negatif önbelleği devre dışı bırakır. Kaynak: `src/lib/guardrails/visionBridgeRouter.ts`. | > [!WARNING] > > 1. [Google Cloud Console → Kimlik Bilgileri](https://console.cloud.google.com/apis/credentials) sayfasına gidin > 2. Bir OAuth 2.0 Client ID oluşturun (tür: "Web uygulaması") > 3. Sunucu URL'nizi Yetkili yönlendirme URI'si olarak ekleyin > 4. `.env` dosyasındaki kimlik bilgisi değerlerini değiştirin. ## 12. Sağlayıcı User-Agent Geçersiz Kılmaları Her bir yukarı akış sağlayıcısına gönderilen `User-Agent` başlığını geçersiz kılın. Bu, executor taban sınıfı tarafından çalışma zamanında dinamik olarak çözümlenir: ``` process.env[`${PROVIDER_ID}_USER_AGENT`] ``` > **Kaynak:** `open-sse/executors/base.ts` → `buildHeaders()` | Değişken | Varsayılan Değer | Ne Zaman Güncellenmeli | | -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Anthropic yeni bir CLI sürümü yayınladığında | | `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Anthropic'e yönelik her iki yolda da (yerel OAuth ve CLIProxyAPI) üçüncü taraf harness araç adlarını olduğu gibi Anthropic'e iletmek için `1`/`true` olarak ayarlayın. Varsayılan olarak executor, Claude Code dışı araç adlarını deterministik olarak takma adlandırır (mevcutsa Claude Code kanonik eşlemesi, yoksa PascalCase) ve `_toolNameMap` aracılığıyla yanıtta bunları geri çevirir; böylece snake_case araçlara sahip harness'lar, parmak izi alınmış üçüncü taraf istemciler olarak reddedilmez. Yalnızca hata ayıklama içindir. | | `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | OpenAI Codex CLI'yı güncellediğinde | | `CODEX_CLIENT_VERSION` | `0.155.0` | Codex istemci sürümünü tam UA dizesinden bağımsız olarak geçersiz kılın | | `GROK_CLI_CLIENT_VERSION` | `1.0.41` | Çıkarım, model senkronizasyonu ve cihaz kodu OAuth için `x-grok-client-version` değerini, ayrıca çıkarım ve model senkronizasyonu için varsayılan Grok CLI User-Agent'ını geçersiz kılın. Başındaki ve sonundaki boşluklar kırpıldıktan sonra en fazla 128 karakter olmak üzere, isteğe bağlı ön sürüm/derleme meta verisi içeren SemVer kabul eder. Ayarlanmamış, boş, geçersiz veya satır sonu içeren değerler, ürünle birlikte gelen sabit değeri kullanır. Mevcut tam çıkarım User-Agent geçersiz kılması önceliğini korur. | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Beyan edilen Claude Code sürümünü `CLAUDE_USER_AGENT` değerinden bağımsız olarak geçersiz kılın. Anthropic bazı modelleri bu değere göre kısıtlar (#12417). | | `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | OmniRoute'un Claude faturalandırma bloğundaki `cc_version=` değerine eklediği 3 karakterlik soneki geçersiz kılın. `CLAUDE_CODE_CLIENT_VERSION` ile birlikte yükseltin — yalnızca sürümü sabitlemek, gerçek hiçbir ikili dosyanın yayınlamadığı bir `version.revision` çifti beyan eder. | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Beyan edilen Copilot CLI sürümünü `GITHUB_USER_AGENT` değerinden bağımsız olarak geçersiz kılın | | `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | GitHub Copilot Chat güncellendiğinde | | `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Antigravity IDE güncellendiğinde | | `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Kiro IDE güncellendiğinde | | `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Kiro sosyal cihaz kodu `clientId` değerini (genel kimlik) geçersiz kılın | | `KIRO_VERIFY_FULL_CRC` | `false` | İsteğe bağlı: Kiro olay akışında kare başına tam mesaj CRC doğrulaması (bozuk akışlarda hata ayıklama) | | `KIRO_CREDIT_PRICE_USD` | `0.02` | Kiro kredisi başına USD; `meteringEvent` kredilerini istek başına tam maliyete dönüştürür | | `KIRO_REQUIRE_CREDITS` | `false` | Kredi ölçümü bildirmeyen bir Kiro yanıtını, faturalandırılmamış olarak kaydetmek yerine başarısız say | | `QODER_USER_AGENT` | `Qoder-Cli` | Qoder CLI güncellendiğinde | | `CURSOR_USER_AGENT` | `Cursor/3.3` | Cursor güncellendiğinde | > [!TIP] > `{PROVIDER_ID}_USER_AGENT` kalıbını kullanarak **herhangi bir** sağlayıcı için User-Agent geçersiz kılmaları ekleyebilirsiniz. Executor, ortam değişkeni adını dinamik olarak oluşturur. --- ## 13. CLI Parmak İzi Uyumluluğu Etkinleştirildiğinde OmniRoute, resmi CLI araçlarının tam imzasıyla eşleşmesi için HTTP başlıklarını ve JSON gövde alanlarını yeniden sıralar. Bu, proxy IP'nizi korurken hesabınızın işaretlenme riskini azaltır. **Kaynak:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts` ### Sağlayıcı Bazında | Değişken | Etkinleştirme | Etki | | ------------------------ | ------------- | ----------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Codex CLI istek imzasını taklit eder | | `CLI_COMPAT_CLAUDE` | `=1` | Claude Code istek imzasını taklit eder | | `CLI_COMPAT_GITHUB` | `=1` | GitHub Copilot istek imzasını taklit eder | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Antigravity istek imzasını taklit eder | | `CLI_COMPAT_CURSOR` | `=1` | Cursor istek imzasını taklit eder | | `CLI_COMPAT_KIMI_CODING` | `=1` | Kimi Coding istek imzasını taklit eder | | `CLI_COMPAT_KILOCODE` | `=1` | Kilo Code istek imzasını taklit eder | | `CLI_COMPAT_CLINE` | `=1` | Cline istek imzasını taklit eder | ### Genel | Değişken | Etkinleştirme | Etki | | ---------------- | ------------- | -------------------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Parmak izi uyumluluğunu **tüm** sağlayıcılar için aynı anda etkinleştirir. | ### Kimi Coding CLI kimlik geçersiz kılmaları | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ----------------------- | ------------------------ | ---------------------------------------- | -------------------------------------------------------------------------------- | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | OAuth/API çağrıları sırasında gönderilen Kimi CLI sürümünü geçersiz kılar. | | `KIMI_CODING_DEVICE_ID` | _(yakalanan varsayılan)_ | `src/lib/oauth/providers/kimi-coding.ts` | İstemci başlıklarında kullanılan yakalanmış Kimi cihaz kimliğini geçersiz kılar. | > [!NOTE] > Bu özellik, User-Agent geçersiz kılmalarıyla (§12) birlikte çalışır. Parmak izi sistemi başlık sıralamasını ve gövde alanlarının sıralamasını yönetirken User-Agent geçersiz kılmaları belirli UA dizesini yönetir. Her ikisi de bağımsız olarak etkinleştirilebilir. --- ## 14. API Anahtarı Sağlayıcıları Doğrudan kimlik doğrulama kullanan sağlayıcılar için API anahtarları. **Tercih edilen kurulum:** Kontrol Paneli → Sağlayıcılar → API Anahtarı Ekle. Docker veya başsız dağıtımlar için ortam değişkenleri aracılığıyla ayarlama alternatif bir yöntemdir. Tanınan kalıp: `{PROVIDER_ID}_API_KEY` | Değişken | Sağlayıcı | | ------------------ | ----------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + Reader yedeği) | | `JINA_API_KEY` | Jina AI (`JINA_AI_API_KEY` için diğer ad) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) gömme + sohbet yedeği | | `GOOGLE_API_KEY` | Gemini (`GEMINI_API_KEY` için diğer ad) | > [!NOTE] > Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius ve Qianfan için statik `${PROVIDER}_API_KEY` girdileri v3.8.0 sürümünde kaldırıldı; çünkü çalışma zamanı artık bunları okumuyor — bu sağlayıcılar yalnızca Kontrol Paneli / `data/provider-credentials.json` / şifrelenmiş veritabanını kullanıyor. Geçiş yolu için bu belgenin alt kısmındaki _Denetim: Kaldırılan / Kullanılmayan Değişkenler_ bölümüne bakın. > [!TIP] > Kontrol Paneli aracılığıyla ayarlanan anahtarlar SQLite'ta şifrelenmiş olarak saklanır ve ortam değişkenlerine göre önceliklidir. > > **Jina:** Bir kontrol paneli `jina-ai` (veya paylaşılan `jina-reader`) bağlantısı mevcut olduğunda `jina-ai/…` gömme, yeniden sıralama, sınıflandırma, bölümleme ve `jina-search`, küme ortam anahtarını faturalandırmaz — `getProviderCredentials` önce doldurma yaklaşımını kullanır. `JINA_AI_API_KEY` / `JINA_API_KEY` yalnızca kullanılabilir bir kontrol paneli anahtarı bulunmadığında kullanılır. Çağrı günlükleri ortam yedeğini `connection_id=env:JINA_AI_API_KEY` olarak ilişkilendirir. Reader kartı (`jina-reader`, `r.jina.ai`) hiçbir zaman `/v1/embeddings` veya `/v1/rerank` sunmaz. > > **Gemini:** `gemini/gemini-embedding-2` (`google/gemini-embedding-2` diğer adı) önce kontrol panelindeki `gemini` bağlantısını kullanır. `GEMINI_API_KEY` / `GOOGLE_API_KEY` yalnızca kullanılabilir bir kontrol paneli anahtarı bulunmadığında kullanılır. Çağrı günlükleri ortam yedeğini `connection_id=env:GEMINI_API_KEY` olarak ilişkilendirir. Yerel çok modlu trafik, `:embedContent` / `:batchEmbedContents` uçlarına karşı `x-goog-api-key` kullanır — N adet OpenAI `input` öğesi, N adet vektöre dönüşür. --- ## 15. Zaman Aşımı Ayarları Tüm değerler **milisaniye** cinsindendir. Merkezi çözümleme `src/shared/utils/runtimeTimeouts.ts` dosyasındadır. ### Zaman Aşımı Hiyerarşisi ``` REQUEST_TIMEOUT_MS (global override) ├─→ FETCH_TIMEOUT_MS (upstream provider calls, default: 600000) │ ├─→ FETCH_HEADERS_TIMEOUT_MS (inherits from FETCH_TIMEOUT_MS) │ ├─→ FETCH_BODY_TIMEOUT_MS (inherits from FETCH_TIMEOUT_MS) │ ├─→ TLS_CLIENT_TIMEOUT_MS (inherits from FETCH_TIMEOUT_MS) │ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (independent, default: 10000) │ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (independent, default: 15000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (independent, default: 0 = off, suggested: 30000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (independent, default: 2) │ ├── FETCH_CONNECT_TIMEOUT_MS (independent, default: 30000) │ └── FETCH_KEEPALIVE_TIMEOUT_MS (independent, default: 4000) ├─→ STREAM_IDLE_TIMEOUT_MS (inherits from REQUEST_TIMEOUT_MS, default: 600000) ├─→ STREAM_ACTIVE_TIMEOUT_MS (independent, default: 1260000; 0 disables) ├─→ STREAM_READINESS_TIMEOUT_MS (inherits from REQUEST_TIMEOUT_MS, default: 80000) ├─→ STREAM_READINESS_MAX_TIMEOUT_MS (caps adaptive readiness extensions, default: 180000) └─→ API_BRIDGE_PROXY_TIMEOUT_MS (inherits from REQUEST_TIMEOUT_MS, default: 30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (derived, default: 300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (default: 60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (default: 5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (default: 0 = disabled) ``` | Değişken | Varsayılan | Açıklama | | ----------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(ayarlanmamış)_ | Genel kısayol — hem `FETCH_TIMEOUT_MS` hem de `STREAM_IDLE_TIMEOUT_MS` varsayılanlarını geçersiz kılar. | | `FETCH_TIMEOUT_MS` | `600000` | Yukarı akış sağlayıcı çağrıları için toplam HTTP istek zaman aşımı. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | İptal etmeden önce ham yukarı akış baytları arasındaki maksimum sessizlik süresi. Genişletilmiş düşünme (extended-thinking) modelleri nadiren 90 saniyeden uzun duraklar. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Maksimum toplam aktif SSE akış ömrü; yukarı akış baytlarında asla sıfırlanmaz ve `REQUEST_TIMEOUT_MS`'den bağımsızdır. Kayıt defterindeki (registry) en büyük model başına `timeoutMs` değerinden (1200000, Codex) artı 60000 pay ile türetilmiştir; böylece tam bütçesini kullanmasına izin verilen bir model asla yanıtın ortasında sonlandırılmaz. Devre dışı bırakmak için `0` olarak ayarlayın. | | `OMNIROUTE_SSE_COMMENTS` | _(devre dışı)_ | OmniRoute'un SSE `:` yorum satırları (örneğin `: keepalive` kalp atışı ve `x-omniroute-*` meta veri son ekleri) yayınlayıp yayınlayamayacağı. Katı OpenAI uyumlu istemciler her SSE satırını JSON.parse ettiğinden ve `:` yorumlarında çöktüğünden varsayılan olarak devre dışıdır (#10524); `data:` kalp atışları etkilenmez. Tekrar etkinleştirmek için `on`/`true`/`1`/`yes` olarak ayarlayın. `open-sse/utils/sseHeartbeat.ts` tarafından kullanılır. | | `SSE_COALESCE_MS` | `0` (kapalı) | Tercihe bağlı: Claude istemcilerine gönderilen, ardışık Claude `content_block_delta` olaylarını (aynı blok indeksi ve delta türü) birleştirir; en geç her N ms'de bir boşaltır. Kayıpsızdır; `signature_delta` ve sınır olayları asla birleştirilmez. Aşağıdaki tür başına değişkenlerden biri ayarlanmadıkça her delta türü için geçerlidir. `open-sse/utils/sseDeltaCoalesce.ts` tarafından kullanılır. | | `SSE_COALESCE_THINKING_MS` | `0` (kapalı) | `thinking_delta` için `SSE_COALESCE_MS`'nin tür başına geçersiz kılması. | | `SSE_COALESCE_TEXT_MS` | `0` (kapalı) | `text_delta` için `SSE_COALESCE_MS`'nin tür başına geçersiz kılması. | | `SSE_COALESCE_INPUT_JSON_MS` | `0` (kapalı) | `input_json_delta` için `SSE_COALESCE_MS`'nin tür başına geçersiz kılması. | | `SSE_FRAME_COALESCE_MS` | `0` (kapalı) | Tercihe bağlı: N ms içinde iletilen SSE çerçevelerini istemciye tek bir yazma işleminde toplu olarak gönderir. İlk çerçeve ve sonlandırıcı çerçeveler (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) asla geciktirilmez; toplu gönderim açıkken ITL, toplu işlem aralıklarını ölçer. `open-sse/utils/sseOutputSink.ts` tarafından kullanılır. | | `SSE_STALL_WATCHDOG` | `timer` | Akış yanıtları için bayt duraksama bekçisi (watchdog) uygulaması. `timer`, her yukarı akış parçası için bir zamanlayıcıyı yeniden kurar (tam olarak duraksama bütçesinde tetiklenir); `interval`, `clamp(budget/4, 1s, 5s)` periyoduyla akış başına tek bir kontrol tutar, böylece bir duraksama bütçe + periyot içinde tetiklenir. `open-sse/utils/streamStallWatchdog.ts` tarafından kullanılır. | | `STREAM_READINESS_TIMEOUT_MS` | `80000` | İlk ping olmayan SSE olayını alma süresi. Ayarlandığında `REQUEST_TIMEOUT_MS`'den miras alır. | | `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | Büyük, araç yoğun veya yüksek muhakemeli akış istekleri için maksimum uyarlanabilir ilk olay hazırlık penceresi. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | `/goal` sezgisel yöntemi için kapatma anahtarı. Algılamayı tamamen devre dışı bırakmak için `false`/`0`/`off` olarak ayarlayın — hazırlık zaman aşımları ve akış kurtarma, istek gövdesi/başlıkları tarafından asla yükseltilmez; bu, istemci kontrollü zaman aşımı yükseltmesini azaltır. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Algılanan `/goal` ajan çalıştırmaları veya `x-omniroute-agent-goal` ile zorlanan istekler için maksimum ilk olay hazırlık penceresi. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Algılanan `/goal` ajan çalıştırmaları için erken akış kurtarmayı otomatik olarak etkinleştirir. Hedefe özgü tercihi devre dışı bırakmak için `false`/`0`/`off` olarak ayarlayın. Bu, yalnızca operatör varsayılanının ÜZERİNE kurtarma EKLEYEBİLİR — açık bir `STREAM_RECOVERY_ENABLED`/DB ayarlarından vazgeçmeyi asla geçersiz kılmaz. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | OpenAI SDK'sının `responses.stream()` metodunu 502 hatasıyla bozan standart dışı `codex.*` SSE olaylarını (örn. `codex.rate_limits`) ayıklar. Varsayılan olarak AÇIK (#11014). Bunları iletmek için `0`/`false`/`no`/`off` olarak ayarlayın. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(ayarlanmamış)_ | Tercihe bağlı Codex app-server taşıma katmanı. Yerel bir `codex app-server` yardımcı sürecinin WebSocket uç noktası (`ws://`/`wss://`). Bir token ile birlikte ayarlandığında, Codex istekleri HTTP Responses API yerine JSON-RPC üzerinden yardımcı sürece yönlendirilir. Ayrıca `providerSpecificData.codexAppServerUrl` aracılığıyla bağlantı başına da ayarlanabilir. `open-sse/executors/codex/appServerConfig.ts` tarafından kullanılır. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(ayarlanmamış)_ | App-server'a sunulan satır içi yetki/taşıyıcı (capability/bearer) token'ı. Bağlantı başına geçersiz kılma: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(ayarlanmamış)_ | Uygulama sunucusu yetenek token'ını içeren dosyanın yolu (`codex app-server --ws-token-file` çıktısından). `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` ayarlanmadığında kullanılır. Bağlantı bazında geçersiz kılma: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Uygulama sunucusu turunun içinde çalıştığı çalışma dizini. Bağlantı bazında geçersiz kılma: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(ayarlanmamış)_ | Uygulama sunucusu turuna iletilen onay politikası (örn. `never`, `on-request`). Bağlantı bazında geçersiz kılma: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(ayarlanmamış)_ | Uygulama sunucusu turuna iletilen sandbox politikası (örn. `read-only`, `workspace-write`, `danger-full-access`). Ayarlanmadığında yürütücü varsayılan olarak `workspace-write` kullanır (sıkılaştırılmış; önceden `danger-full-access`). Bağlantı bazında geçersiz kılma: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Uygulama sunucusunun kendi onay istemlerini otomatik onaylar (ana makinede komut/dosya/izin yürütme). Varsayılan olarak kapalı — istemler otomatik reddedilir; harness araç çağrıları etkilenmez (bunlar ayrı `item/tool/call` passthrough kanalı üzerinden gider). `true`/`1`/`yes` değerlerini kabul eder. Bağlantı bazında geçersiz kılma: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Yanıt başlıklarını alma süresi. | | `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Akış isteklerinde yanıt başlıkları için maksimum bekleme (ms). `0` bu üst sınırı devre dışı bırakır; açıkça verilen bir sağlayıcı `fetchStartTimeoutCapMs` değeri önceliklidir. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30 sn) | Her doğrudan proxy'siz deneme için maksimum yanıt başlangıcı bekleme süresi (ms). Zaman aşımında yeni bir soket üzerinden bir kez yeniden denenir; sınırı devre dışı bırakıp önceki davranışı korumak için `0` ayarlayın. | | `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 dk) | Hedef ana bilgisayarı özel/LAN/loopback olan doğrudan proxy'siz denemeler için yanıt başlangıcı tabanı (ms) (örneğin `localhost`, `host.docker.internal`, `192.168.x.x`); böylece yerel bir Ollama soğuk başlangıcı yukarıdaki 30 sn'lik varsayılan tarafından kesilmez. Taban olarak çalışır: etkin bekleme, bu değer ile `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` değerinden büyük olanıdır; `0` veya geçersiz bir değer yerel tabanı kaldırır. Uzak ana bilgisayarlar etkilenmez. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 dk) | Yukarıdaki havuzlanmış denemenin yanıt başlangıcı zaman aşımının ardından yeni soketli YENİDEN DENEME girişimi için üst sınır (ms) (#13703). Yalnızca çağıran taraf kendi son tarih sinyalini zaten iliştirdiğinde uygulanır (çözümlenen bağlantı/model/sağlayıcı/`FETCH_TIMEOUT_MS` basamağı); bu sinyal gerçek sınırdır ve amaçlanan yolda önce tetiklenir, bu nedenle bu değer düz bir üst sınır değil cömert bir güvencedir — bu olmadan yeniden deneme, havuzlanmış denemeyle aynı kısa `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` penceresini kullanır ve sağlıklı, yavaş TTFB'li akıl yürütme modellerine 504 döndürürdü. Yukarıdaki düz tabanın altına hiçbir zaman düşmesine izin verilmez; çağıran taraf hiçbir son tarih sinyali sağlamadığında, yeniden deneme düz tabanı değiştirmeden korur. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Tam yanıt gövdesini alma süresi. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | TCP bağlantı kurma zaman aşımı. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Keep-alive soket boşta kalma zaman aşımı. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | TLS parmak izi proxy (wreq-js) zaman aşımı. | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Özellikle wreq-js TLS parmak izi aktarımının gövdesinde ilk bayta kadar geçen süreyi sınırlar; `TLS_CLIENT_TIMEOUT_MS` başlıklar gelir gelmez çözüldüğünden tek başına takılmış bir gövdeyi yakalayamaz (#12656). Zaman aşımı wreq okuyucusunu iptal eder ve doğrudan/proxy dağıtıcısına geri döner; `0` watchdog'u devre dışı bırakır. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Yalnızca OpenCode yürütücüsü ve yalnızca `OPENCODE_RESPONSES_STALL_ROTATION` özellik bayrağı açıkken (varsayılan kapalı): akışlı bir Responses yanıtının başlıklarından sonra ilk gövde baytı için beklemeyi sınırlar (#13484). Bir Responses akışı `response.created` ile açılır, bu nedenle bu pencereyi aşan sessizlik bir takılmadır: hesap soğumaya alınır ve istek bir kez sonraki hesaba aktarılır; ikinci bir takılma hızla başarısız olur. Bayrak açık olsa bile `0` korumayı devre dışı bırakır. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= kapalı) | Yalnızca OpenCode yürütücüsü: başka bir hesap hâlâ kullanılabilirken, akışlı bir Responses çağrısında yukarı akış yanıt başlıkları için beklemeyi sınırlar — kuyruğa alınmış bir istek, tüm başlık penceresini tutmak yerine beklemeyi bırakır ve ilerler. Yalnızca akışlı Responses çağrıları etkilenir (Responses akışı `response.created` ile açılır, bu nedenle oradaki sessizlik üretim değil kuyruktur); sohbet tamamlamaları ve akışsız çağrılar etkilenmez ve pencere etkin fetch başlangıcı üst sınırını yalnızca kısaltır, asla uzatmaz. Etkinleştirirken önerilen değer: `30000`. `0` devre dışı bırakır. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Yalnızca OpenCode yürütücüsü: istek başına yukarıdaki headers-wait sınırının kaç kez bir sonraki hesaba taşınabileceği. Kalan son hesap her zaman tam headers penceresini korur. | | `OPENCODE_PARK_AND_RESUME` | `false` | Yalnızca OpenCode yürütücüsü: tekrarlanan geçici 429 hatalarından (veya yeni bir pool-strain işaretçisinden) sonra isteği bir heartbeat ile park eder, ardından tüm filoya yaymak yerine en fazla 3 sıralı hesaptan oluşan sınırlandırılmış tek bir adımı yeniden oynatır (#13924). Varsayılan olarak kapalı: her 429, tam olarak eskisi gibi bir sonraki hesaba döner. | | `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | Yalnızca OpenCode yürütücüsü: park-and-resume yeniden oynatma adımındaki cooldown'a hazır her hesap proxy-reddı belleği tarafından kenara ayrıldığında, hiçbir şey oynatmamak yerine onları yine de sunar (#14851, #14750'nin devamı). Varsayılan olarak kapalı: bu durumda yeniden oynatma adımı boştur, #14750'den önceki gibi. | | `STREAM_READINESS_STALL_RETRY` | `false` | Yalnızca akışlı sohbet: ilk upstream gövdesi kullanılabilir bir olay üretmeden takıldığında, aynı yönlendirme yolu üzerinden aynı readiness bütçesiyle ve hesap cezası olmadan sınırlı bir ikinci deneme yapar. Varsayılan olarak kapalı: takılan ilk gövde, yeniden deneme olmadan isteği başarısız kılar. | | `OPENCODE_POOL_RESELECT` | `false` | Yalnızca OpenCode yürütücüsü: bir ambient havuz bağlamı altında proxy'siz bir hesapta egress-bucket'lı bir sağlayıcıdan 429 alındıktan sonra, aynı egress adresini yeniden denemek yerine bir sonraki deneme için bağlantı havuzundan başka bir üye ister. Sıralar, asla hariç tutmaz: tükenmiş bir havuz mevcut davranışı korur. Varsayılan olarak kapalı: her 429, tam olarak eskisi gibi bir sonraki hesaba döner. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(ayarlanmamış)_ | Yalnızca OpenCode yürütücüsü: park etmeden önce okunan pool-strain işaretçisinin yolunu geçersiz kılar (`{since, reason, ttl_s}`, varsayılan `/tmp/opencode-pool-strain.json`, #13924). Yeni bir işaretçi yeniden saymadan park eder; yoksa veya bayatlamışsa burst sayacına geri döner. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | `/v1` köprü istekleri için proxy hop zaman aşımı. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Firecrawl web-fetch yürütücüsünü kendi barındırdığınız bir örneğe yönlendirir (bulut dışında API anahtarı isteğe bağlıdır). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Firecrawl web-fetch yürütücüsü için istek başına zaman aşımı. | | `TAVILY_BASE_URL` | _(ayarlanmamış)_ | Tavily `/usage` kota getiricisi için temel URL (Sağlayıcı Limitleri); `api.tavily.com`'a işaret ettiğinde yok sayılır. Ayarlanmadığında bağlantının temel URL'sine geri döner. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Köprü için genel sunucu isteği zaman aşımı. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Yanıt başlıklarını köprü üzerinden gönderme süresi. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Köprü keep-alive boşta kalma zaman aşımı. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Ham soket zaman aşımı (0 = devre dışı). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Zorla çıkmadan önce SIGTERM/SIGINT üzerine ek süre. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | `FETCH_TIMEOUT_MS` ayarlanmadığında `src/shared/utils/fetchTimeout.ts` tarafından kullanılan geri dönüş değeri. | | `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | `src/shared/network/safeOutboundFetch.ts` içindeki `validationRead` ve `modelsProbe` ön ayarları için zaman aşımı (ms). Panoda active/error arasında gidip gelmeyi önlemek için yavaş uç noktalar (Cerebras, Cloudflare AI, Groq) için yükseltin. Geçersiz (<1000) veya sayısal olmayan değerler için 8000ms'ye geri döner. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | `open-sse/utils/proxyFetch.ts` içinde relay'e özgü fetch zaman aşımı (#9158). Takılan bir relay, çağıranların genel bir upstream zaman aşımı yerine relay'e özgü bir hata görmesi için istemci/aracı zaman aşımından (~30s) önce başarısız olmalıdır. Her zaman önce tetiklenmesi için `29000` ile sınırlandırılmıştır. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | `open-sse/utils/proxyFetch.ts` içindeki direct/relay/proxy tek-yeniden-deneme yolları için paylaşılan yeniden deneme geri çekilme süresi (#9158). `0` = hemen yeniden dene. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Yerel wreq-js istek zaman aşımı (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Yerel zaman aşımının üzerine eklenen mutlak JS kesin son tarih (hard-deadline) ek süresi. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Yerel wreq-js istek zaman aşımı (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Yerel zaman aşımının üzerine eklenen mutlak JS kesin son tarih (hard-deadline) payı. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (kapalı) | Çağıranın sistem mesajına "You have built-in web search. Answer questions directly using search results." cümlesini ekler (`perplexity-web/protocol.ts`). Varsayılan olarak kapalıdır — Perplexity zaten arama yapar ve cümle, kodlama istemcilerinde yanıtlara meta-yorum olarak sızar. Geri getirmek için `1`/`true`/`yes`/`on` olarak ayarlayın. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Yerel wreq-js istek zaman aşımı (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Yerel zaman aşımının üzerine eklenen mutlak JS kesin son tarih payı. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Yerel wreq-js istek zaman aşımı (`notionTlsClient.ts`); `notion-web` uzun üretimler için bunu istek başına `180000` değerine yükseltir. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Yerel zaman aşımının üzerine eklenen mutlak JS kesin son tarih payı. | | `OMNIROUTE_BROWSER_POOL` | `on` | Tarayıcı destekli web-çerez sohbeti için paylaşılan Playwright tarayıcı havuzu (`browserPool.ts`); devre dışı bırakmak için `off` olarak ayarlayın. | | `OBSCURA_BIN` | `auto-detect` | Tarayıcı havuzu ve Cloudflare Playground yürütücüsü tarafından birincil motor olarak kullanılan `obscura` ikili dosyasının yolu (`open-sse/services/obscura.ts`); ayarlanmadığında sistem PATH üzerinden otomatik olarak algılanır. | | `OBSCURA_CDP_ENDPOINT` | _(ayarlanmadı)_ | Yeni bir tane başlatmak yerine zaten çalışan bir Obscura'ya (`http://host:port`) işaret eder; modül bu sürecin sahibi değildir (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `random free port` | Başlatılan `obscura serve` için açıkça belirtilen port; ayarlanmadığında otomatik olarak boş bir port seçilir (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Bir web-çerez sohbet isteğini tarayıcı destekli yola dahil eder (`browserBackedChat.ts`); etkinleştirmek için `1`. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Kimi Web (uluslararası kimi.ai Connect-RPC) yürütücüsü için temel URL (`kimi-web.ts`); yalnızca ayna/proksi uç noktaları için geçersiz kılın. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Kimi Web yürütücüsü için tam sohbet uç noktası (`kimi-web.ts`). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(otomatik algılanır)_ | Adobe Firefly etkileşimli tarayıcı oturum açma işlemi için bir sistem Chrome/Edge yürütülebilir dosyasının yolu (`adobeFireflyBrowserLogin.ts`); işletim sistemine özgü otomatik algılamayı geçersiz kılar. | | `OMNIROUTE_STANDALONE_DIR` | _.build/ bağımsız çıktısı_ | Derleme sonrası birlikte konumlandırma adımı tarafından tüketilen bağımsız çıktı dizini için derleme zamanı geçersiz kılması (`scripts/build/colocate-standalone.mjs`); çalışma zamanı değil, derleme aracıdır. | Combo hedef denemeleri, çözümlenmiş yukarı akış istek zaman aşımını devralır (`FETCH_TIMEOUT_MS` veya fetch varsayılanını sağladığında `REQUEST_TIMEOUT_MS`). `targetTimeoutMs` değerini bir combo'da, combo varsayılanlarında veya sağlayıcı geçersiz kılmasında yalnızca combo yedeklemesini hızlandırmak için ayarlayın; geçerli yukarı akış zaman aşımının üzerindeki değerler, yukarı akış zaman aşımına kırpılır. `comboTimeoutMs`, yük devretme hedefleri arasında combo'nun tamamı için ayrı bir duvar saati bütçesidir. Sınırsız yinelemeyi sürdürmek için ayarlanmamış bırakın veya `0` yapın (`comboPredicates.ts` içindeki 10 dakikalık sabit kodlanmış takılma durdurma hâlâ geçerlidir). Pozitif bir değer, combo için bu güvenlik ağının yerini alır. Yavaş bir ilk hedeften sonra yük devretmenin hâlâ zamanı olması için `comboTimeoutMs` değerini `targetTimeoutMs` değerinden uzun tutun. ### Devre Kesici Eşikleri Sağlayıcı düzeyinde devre kesici ayarı. Varsayılanlar, v3.6 sürümünden beri 500+ bağlantı için kullanılan ölçeklendirilmiş değerleri yansıtır. | Değişken | Varsayılan | Kaynak Dosyası | Açıklama | | ------------------------------------------------------------- | ---------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Kesici devreye girmeden önce OAuth sağlayıcıları için art arda başarısızlık eşiği. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | OAuth sağlayıcı kesicisi için sıfırlama penceresi (ms). | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | API anahtarlı sağlayıcılar için art arda başarısızlık eşiği. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | API anahtarlı sağlayıcı kesicisi için sıfırlama penceresi (ms). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Yerel sağlayıcılar (Ollama, LM Studio, ...) için art arda başarısızlık eşiği. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Yerel sağlayıcı kesicisi için sıfırlama penceresi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: OAuth sağlayıcısının tamamı bekleme süresine (cooldown) girmeden önce pencere içindeki başarısızlıklar. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: OAuth sağlayıcıları için kayan başarısızlık sayımı penceresi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: OAuth sağlayıcı eşiğine ulaşıldığında uygulanan bekleme süresi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth sağlayıcısı bu sayıda başarısızlıkta DEGRADED durumuna girer. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | OAuth sağlayıcısı maksimum resetTimeout artırma çarpanı. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth sağlayıcısı bu kadar açık döngüden sonra artırmaya geçer. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: API anahtarlı sağlayıcının tamamı bekleme süresine girmeden önce pencere içindeki başarısızlıklar. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: API anahtarlı sağlayıcılar için kayan başarısızlık sayımı penceresi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: API anahtarlı sağlayıcı eşiğine ulaşıldığında uygulanan bekleme süresi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | API anahtarlı sağlayıcı bu sayıda başarısızlıkta DEGRADED durumuna girer. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | API anahtarlı sağlayıcı maksimum resetTimeout artırma çarpanı. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | API anahtarlı sağlayıcı bu kadar açık döngüden sonra artırmaya geçer. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: yerel sağlayıcının tamamı bekleme süresine girmeden önceki başarısızlıklar. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: yerel sağlayıcılar için kayan başarısızlık sayımı penceresi (ms). | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Sağlayıcı düzeyinde kesici: yerel sağlayıcı eşiğine ulaşıldığında uygulanan bekleme süresi (ms). | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Yukarı akıştan gelen 429 yanıtı `Retry-After` içermediğinde, çok anahtarlı API anahtarı rotasyonu tarafından uygulanan anahtar başına bekleme süresi (ms) (#14573). Pozitif olmayan veya sayısal olmayan değerler varsayılana geri döner. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Bağlam önbelleği pin'inin sağlayıcısının kalıcı olarak sağlıksız kabul edildiği ve yük devri için pin'in bırakıldığı geri çekilme (backoff) derinliği. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Bağlam önbelleği pin'ini bırakmadan önce kısa süreli geçici bekleme sürelerini tolere eden flap önleme penceresi (ms). | ### Senaryolar | Senaryo | Yapılandırma | | ----------------------------------------- | -------------------------------------------------------- | | **Uzun süren kod üretimi** | `REQUEST_TIMEOUT_MS=900000` (15 dk) | | **Toplam akış ömrünü sınırlama** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 dk) | | **Üretim API'si için hızlı başarısızlık** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Genişletilmiş düşünme modelleri** | `STREAM_IDLE_TIMEOUT_MS=300000` (parçalar arasında 5 dk) | --- ## 16. Günlükleme Günlükleme sistemi hem stdout'a hem de döndürülen günlük dosyalarına yazar. Tüm yapılandırma `src/lib/logEnv.ts` tarafından okunur. | Değişken | Varsayılan | Açıklama | | ----------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Minimum günlük düzeyi: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Çıktı biçimi: `text` (insan tarafından okunabilir) veya `json` (yapılandırılmış). | | `APP_LOG_TO_FILE` | `true` | Günlükleri stdout'un yanı sıra dosyaya da yaz. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Günlük dosyası yolu (proje köküne veya `DATA_DIR` dizinine göre). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Döndürme öncesi maksimum dosya boyutu. Kabul edilen değerler: `50M`, `1G`, `512K` veya düz bayt değeri. | | `APP_LOG_RETENTION_DAYS` | `7` | Döndürülen uygulama günlük dosyalarının saklanacağı gün sayısı. | | `APP_LOG_MAX_FILES` | `20` | Döndürülen günlük dosyası yedeklerinin maksimum sayısı. | | `CALL_LOG_RETENTION_DAYS` | `7` | İstek/çağrı günlüğü girdilerinin veritabanında saklanacağı gün sayısı. | | `CALL_LOG_MAX_ENTRIES` | `10000` | Bellek içi arabellekteki maksimum çağrı günlüğü girdisi sayısı. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Budama öncesinde `call_logs` SQLite tablosunda bulunabilecek maksimum satır sayısı. | | `ENABLE_REQUEST_LOGS` | _(ayarlanmamış)_ | Ayrıntılı istek günlüklemesini pano ayarını geçersiz kılarak zorla açar veya kapatır. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 saat) | Bellek içi temizleme öncesinde sahipsiz etkin istek günlüğü girdileri için maksimum yaş. | | `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | `call_log_pipeline_enabled=true` olduğunda akış parçalarını işlem hattı yapıtlarında saklar. İsteğe bağlıdır (`true`) — disk alanından tasarruf etmek için varsayılan olarak kapalıdır. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | `call_log_pipeline_enabled=true` olduğunda işlem hattı çağrı günlüğü yapıtının KB cinsinden maksimum boyutu. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Budama öncesinde `proxy_logs` SQLite tablosunda bulunabilecek maksimum satır sayısı. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `[ProxyEgress]` konsol günlüklerine istemci/çıkış IP'lerini ve hesap öneklerini dahil eder. Pano/veritabanı proxy günlüğü kayıtları tüm ayrıntıları korur. | | `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Proxy günlüğü satırlarında `first_chunk_ms` değerini (gönderim başlangıcından ilk kullanılabilir gövde baytına kadar geçen süre) kaydetmek için `"true"` veya `"1"` olarak ayarlayın. Her yukarı akış gövdesini tembel bir geçiş akışıyla sarar ve bayt ulaştığında satırı günceller; yanıtların değiştirilmeden geçmesi için varsayılan olarak kapalıdır. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 dk) | `src/lib/logRotation.ts` etkin günlük dosyasının boyutunu ne sıklıkla yeniden kontrol eder. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Sohbet günlüğü yapıtlarında tutulan maksimum dize uzunluğu (varsayılan 64 KB). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Sohbet günlüğü yükleri kısaltılırken dizinin sonundan tutulacak öğe sayısı. | | `CHAT_LOG_MAX_DEPTH` | `6` | Sohbet günlüğü yüklerinin kısaltılmasından önce izin verilen maksimum iç içe geçme derinliği. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Sohbet günlüğü yüklerinde tutulan maksimum nesne anahtarı sayısı (0 = sınırsız). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | Tam kopya yerine yalnızca sade bir özetle değiştirilmeden önce istek/yanıt gövdesinin toplam boyutu (KB). Uzun aracılı konuşmalarda panoda gerçek mesajlar yerine bir yer tutucu görünüyorsa bu değeri artırın. | | `CHAT_DEBUG_FILE` | `false` | `true` olduğunda `serializeArtifactForStorage`, boyuta dayalı kısaltmayı atlar. Yalnızca hata ayıklama içindir. | --- ## 17. Bellek Optimizasyonu | Değişken | Varsayılan | Açıklama | | ----------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_MEMORY_MB` | _otomatik_ (bare metal); **Docker imajında `1024`** | **Önerilen** Docker/bağımsız (standalone) V8 yığın (heap) sınırı (MB). Ayarlanmadığında dinamik olarak kalibre edilir (sistem RAM'inin ~%35'i, `[512, 4096]` aralığına kısıtlanır); `512` yalnızca toplam bellek okunamadığında alt sınırdır. `run-standalone.mjs` (Docker CMD) üzerinde **açık** bir değer `--max-old-space-size` olarak eklenir ve çakışan bir NODE_OPTIONS yığın bayrağına karşı **üstün gelir** (V8 son bayrak kuralı). `omniroute serve` yine de mevcut bir NODE_OPTIONS yığınını tercih eder (#5238). İkisini de farklı sayılara ayarlamayın — süreç, her iki değeri ve kazananı belirten bir uyarı kaydeder. **Resmi Docker imajı her zaman `1024` ayarladığından kalibrasyon orada asla çalışmaz.** Kodlama aracı `/v1/responses` için `8192`–`12288` artı cgroup payı gerekir — bkz. [Docker Kılavuzu — çalışma zamanı RAM'i](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). | | `OMNIROUTE_RSS_PRESSURE_MB` | _otomatik_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; `OMNIROUTE_MEMORY_MB` ayarlanmadığında kapalı) | `open-sse/utils/resourcePressure.ts` | V8 `heapUsed`'in göremediği yerel/harici bellek için mutlak süreç-RSS sigortası (MB); bunun üzerinde yeni istekler 503 `resource_pressure` alır. RSS bir ani artıştan sonra nadiren düşer, bu yüzden `OMNIROUTE_PRESSURE_SELF_RESTART` ile birlikte kullanın. | | `PROMPT_CACHE_MAX_SIZE` | `50` | Önbelleğe alınan maksimum sistem istemi (prompt) girdisi sayısı. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Maksimum toplam istem (prompt) önbelleği boyutu. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 dk) | İstem önbelleği girdisinin TTL süresi. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Önbelleğe alınan maksimum temperature=0 yanıtı sayısı. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Maksimum toplam anlamsal önbellek boyutu. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 dk) | Anlamsal önbellek girdisinin TTL süresi. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Aynı anda bellek içinde canlı bir dizin tutan yerel külliyat (corpus) kökleri (`src/lib/localCorpus/configured.ts`). LRU: sınıra ulaşıldığında en uzun süredir kullanılmayan kökün dizini atılır ve bir sonraki sorgusunda yeniden oluşturulur. Minimum `1` ile sınırlanır; sayısal olmayan bir değer varsayılana geri döner. | | `STREAM_HISTORY_MAX` | `50` | Panodaki canlı görünüm arabelleğinde tutulan maksimum son akış olayı sayısı. | | `CONTEXT_LENGTH_DEFAULT` | _(ayarlanmadı)_ | `CONTEXT_LENGTH_` değişkeni bulunmayan her sağlayıcı için genel bağlam uzunluğu geçersiz kılması (token). Ayarlandığında, bu sağlayıcılar için katalog, pano geçersiz kılması ve kayıt (registry) değerlerinin **yerini alır**; ayarlanmadığında OmniRoute, son çaresi `128000` olan yerleşik zincirini kullanır. Bkz. [Sağlayıcı başına bağlam uzunluğu](#per-provider-context-length-context_length_provider). | | `USAGE_TOKEN_BUFFER` | `100` | Kullanım kotaları izlenirken ayrılan ek token payı. | ### Sağlayıcı başına bağlam uzunluğu (`CONTEXT_LENGTH_`) `open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) ayrıca, adı çalışma zamanında sağlayıcı kimliğinden oluşturulan **sağlayıcı başına** bir biçimi de okur; bu nedenle yukarıdaki tabloda veya `.env.example` dosyasında satır satır listelenemez. **Ad.** `CONTEXT_LENGTH_`; burada ``, sağlayıcı kimliğinin büyük harfe çevrilmiş hâlidir ve `A-Z` / `0-9` dışında kalan her karakter `_` ile değiştirilir. Sağlayıcı kimliği, takma ad çözümlemesinden sonraki kanonik kimliktir (kısa bir takma ad çözümlendikten sonra `provider/model` dizesinin `provider` kısmı). Özel OpenAI- veya Anthropic-uyumlu düğümler, oluşturulan düğüm kimliklerini kullanır; bu nedenle UUID, değişken adının bir parçasıdır. Değer, pozitif bir tam sayı token sayısıdır; diğer her şey (boş, `0`, negatif, sayısal olmayan) yok sayılır ve çözümleme bir sonraki adıma geçer. | Sağlayıcı kimliği | Değişken adı | | ----------------------------------------------------------- | -------------------------------------------------------------------------- | | agentrouter | CONTEXT_LENGTH_AGENTROUTER | | openrouter | CONTEXT_LENGTH_OPENROUTER | | openai-compatible-chat-0f8e2c1a-5b7d-4e3f-9a6c-2d1b8e4f7a90 | CONTEXT_LENGTH_OPENAI_COMPATIBLE_CHAT_0F8E2C1A_5B7D_4E3F_9A6C_2D1B8E4F7A90 | **Öncelik.** Bir `provider/model` çifti için, değer üreten ilk adım kazanır: 1. O sağlayıcı için `CONTEXT_LENGTH_`. 2. `CONTEXT_LENGTH_DEFAULT` (genel ortam geçersiz kılması). 3. Model başına pencere: kalıcı bir bağlam geçersiz kılması (kontrol panelinde ayarlanmış veya keşif uzlaştırıcısı tarafından otomatik sabitlenmiş, bkz. `CONTEXT_WINDOW_RECONCILE_INTERVAL`), aksi takdirde senkronize edilmiş katalog / models.dev değeri. 4. Sağlayıcının kayıt defterindeki `defaultContextLength` değeri. 5. Model adı sezgisel yöntemleri (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000). 6. Yerleşik sağlayıcı başına varsayılanlar, ardından `128000`. Her iki ortam adımı da **sağlayıcının tamamına** uygulanır: o sağlayıcının her modeli aynı limiti alır ve bunlar, model başına kontrol paneli geçersiz kılmalarına üstün gelir. Bir sağlayıcının yalnızca bir modeli farklı bir pencere gerektirdiğinde, bunun yerine kontrol panelinde model başına bir geçersiz kılma kullanın. **Kapsam.** Bu zincir, istek anındaki bağlam penceresi denetimini (`open-sse/handlers/chatCore.ts` içindeki `context_length_exceeded` / "Input exceeds context window" reddi), istem sıkıştırma bütçelerini ve kombo bağlam limitlerini yönetir. `GET /v1/models` tarafından bildirilen `context_length` hâlâ katalog veya kayıt defteri meta verilerinden gelebilir ve ortam geçersiz kılmasını yansıtması garanti edilmez. **Örnek.** Kataloğun 128.000 bildirdiği durumda modeli 1.050.000 token'lık bir pencere kabul eden bir sağlayıcı: ```dotenv CONTEXT_LENGTH_AGENTROUTER=1050000 ``` Değiştirdikten sonra sunucuyu yeniden başlatın: değer, sunucu sürecinin ortamından okunur. **Masaüstü uygulamasında** sunucu bir alt süreç olarak çalışır ve uygulama başlatıldıktan sonra ayarlanan bir sistem değişkenini görmez; satırı, uygulamanın yüklediği `.env` dosyasına koyun (arama sırası için bkz. [Electron Kılavuzu: Ortam dosyası araması](../guides/ELECTRON_GUIDE.md#environment-file-lookup)), ardından uygulamayı tamamen kapatıp yeniden başlatın. ### Sıkıştırma | Değişken | Varsayılan | Açıklama | | ------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | ayarlanmamış | `.rtk/trust.json` karması olmadan proje `.rtk/filters.json` dosyasına güvenir. Yalnızca kontrollü yerel geliştirmede kullanın. | ### Bellek Motoru (plan 21) ### Bellek, beceriler ve token yenilemenin olay döngüsü maliyeti (#10349) OmniRoute **tek bir Node sürecidir**. Bellek çıkarımı/geri getirimi, beceri enjeksiyonu ve sağlayıcı token yenilemesi, `GET /healthz` ve kontrol paneliyle **aynı olay döngüsü** üzerinde çalışır. Bunlar bir worker thread değildir. | İş | Kod | Varsayılan | Operatör denetimi | | ------------------------------- | ---------------------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Bellek çıkarımı / geri getirimi | `src/lib/memory/` | Kontrol paneli **memoryEnabled** (varsayılan açık) | **Ayarlar → Bellek** üzerinden kapatın. Özelliği ayarlardan devre dışı bırakmanın ötesinde ayrı bir ortam kapatma anahtarı yoktur. | | Beceri enjeksiyonu | `src/lib/skills/injection.ts` | Kontrol paneli **skillsEnabled** (varsayılan açık) | **Ayarlar → Bellek/Beceriler** (`skillsEnabled`) üzerinden kapatın. Aşağıdaki kum alanı düğmeleri, enjeksiyon zaten açık olduktan sonra yalnızca yürütmeyi sınırlar. | | Token yenilemesi | `src/sse/services/tokenRefresh.ts` | Bağlı OAuth/web sağlayıcıları için açık | Sağlayıcının bağlantısını kesin veya token'ların geçerli kalmasına izin verin; bugün `TOKEN_REFRESH=0` gibi bir ortam değişkeni yok. | Sakin bir makinede `/healthz` yavaşsa, önce bellek + becerileri devre dışı bırakın, ardından katalog/sıkıştırma yükünü kontrol edin (#10303, #9685). Bu özellikler `await` noktalarında ara verir, ancak yine de tek iş parçacığı için rekabet eder. Kalıcı bellek alt sistemi (`src/lib/memory/`) için gömme katmanı, vektör deposu ve yeniden sıralama düğmeleri. | Değişken | Varsayılan | Açıklama | | ------------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 dk) | Bellek içi gömme (embedding) önbelleği için TTL (kaynak/model/boyut imzası başına). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Gömme önbelleğinde tutulan maksimum LRU girdi sayısı. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | İsteğe bağlı (opt-in) `@huggingface/transformers` yerel MiniLM hattı için HF depo kimliği (~23 MB int8, ~400 MB RAM). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | Statik potion/Model2Vec arama tablosu (lookup-table) gömücüsü için HF depo kimliği. Önbellek dizinine gerektiğinde (lazy) indirilir. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Statik potion model dosyalarını önbelleğe almak için kullanılan dizin. Ayarlanmadığında varsayılan olarak `DATA_DIR` altındadır. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | `staticPotion.ts` tarafından kullanılan Hugging Face Hub temel URL'sini geçersiz kılar (ör. ağdan izole (air-gapped) kurulumlar için ayna uç noktası). | | `MEMORY_VEC_TOP_K` | `20` | `src/lib/memory/vectorStore.ts` içindeki `sqlite-vec` kaba kuvvet (brute-force) vektör aramasının kullandığı varsayılan top-K. | | `MEMORY_RRF_K` | `60` | Hibrit FTS5 + vektör getirimi için Reciprocal Rank Fusion sabiti `k` (sqlite-vec tarifi). | | `VECTOR_STORE_DISABLE_VEC` | `false` | `getVectorStore()` (`src/lib/memory/vectorStore.ts`) içindeki test/tanılama geçiş noktası (seam): `true` olduğunda, vektör deposunu `null` olmaya zorlar (`sqlite-vec` olmayan bir bulut/WASM ortamını simüle eder) ve bellek getirimini FTS5 anahtar kelime aramasına düşürür. Üretimde ayarlanmamış bırakın. | | `NOTION_API_KEY` | _(ayarlanmadı)_ | Notion arka ucu için API anahtarı (`genericBackend.ts` bilinen arka uç ön ayarı tarafından kullanılır). | | `NOTION_API_URL` | `https://api.notion.com/v1` | Notion API için temel URL (kendi barındırdığınız Notion alternatifleri için geçersiz kılınabilir). | | `OBSIDIAN_API_KEY` | _(ayarlanmadı)_ | Obsidian Vault arka ucu için API anahtarı (`genericBackend.ts` bilinen arka uç ön ayarı tarafından kullanılır). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | Obsidian Vault API için temel URL (uzak vault için geçersiz kılınabilir). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | TV6 tür bazlı bellek bozunumu ana anahtarı. **İsteğe bağlıdır (varsayılan kapalı)** — süpürme (sweep) işlemi bozunmuş bellekleri **siler**. Kapalıyken `access_count`/`last_accessed_at` yalnızca telemetri verisidir ve hiçbir şey asla silinmez. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | Kullanılmayan bir `episodic` belleğin bozunmasına kadar geçen TTL (gün). `0`, episodic türünü de bağışık kılar. Kalıcı türler (`factual`/`procedural`/`semantic`) her zaman bağışıktır. Bozunum saati `last_accessed_at` üzerinden yeniden başlar. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | Bu sayıya eşit veya daha fazla (`>=`) kez enjekte edilen bir bellek, türünden bağımsız olarak bozunuma karşı bağışık hale gelir. `0` erişim bağışıklığını devre dışı bırakır. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (devre dışı) | `src/lib/memory/typedDecay.ts` içindeki isteğe bağlı periyodik bozunum süpürmesi için aralık (saniye). `0`/ayarlanmamış = periyodik süpürme yok. Çifte isteğe bağlıdır: ayrıca `MEMORY_TYPED_DECAY_ENABLED=true` gerektirir. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(ayarlanmadı)_ | Bir `system` mesajını **yalnızca 0. dizinde** kabul eden, virgülle ayrılmış sağlayıcı kimlikleri (büyük/küçük harfe duyarsız) (`src/lib/memory/injection.ts`). Bunlar için, önbellek açısından güvenli olan dizi ortası bellek ekleme (splice) işlemi çok turlu konuşmalarda güvenli değildir; bu nedenle bellek bunun yerine baştaki sistem mesajıyla birleştirilir/ona önek olarak eklenir. Varsayılan olarak yalnızca `xiaomi-mimo`/`mimo` içerir; aynı tek-başta-sistem-mesajı kısıtlamasını dayatan sohbet şablonlarına sahip, kendi barındırdığınız OpenAI uyumlu uç noktalar (ör. Qwen3.5+/3.6) için genişletin. | ### Düşük RAM'li Docker Örneği `128` yalnızca kontrol paneli içindir. Bu yığın (heap) üzerindeki kodlama ajanları, uzun `/v1/responses` sırasında `FATAL ERROR` verir. Bu örneği bir Claude/Codex/Grok ağ geçidi olarak kullanmayın. ```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. Fiyatlandırma Senkronizasyonu Harici kaynaklardan otomatik model fiyatlandırma verisi senkronizasyonu. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ----------------------- | ------------- | ------------------------ | ----------------------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | İsteğe bağlı periyodik fiyatlandırma senkronizasyonu. | | `PRICING_SYNC_INTERVAL` | `86400` (24s) | `src/lib/pricingSync.ts` | Saniye cinsinden senkronizasyon aralığı. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Virgülle ayrılmış veri kaynakları. | --- ## Arena ELO Senkronizasyonu | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------- | ------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Pano Özellik Bayrakları üzerinden yapılandırılabilen veya devre dışı bırakmak için `false` olarak ayarlanabilen periyodik Arena AI liderlik tablosu ELO senkronizasyonu. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | `GET /v1/models` içindeki model kimlikleri için kullanılan ön ek biçimi. `dual`, her model için hem kısa takma ad ön ekini hem de standart sağlayıcı ön ekini yayımlar (geriye dönük uyumluluk — kataloğun boyutunu yaklaşık iki katına çıkarır); `alias`, model başına bir kimlik yayımlar; `canonical`, yalnızca tam sağlayıcı kimliği ön ekini yayımlar (takma adı zaten standart kimlik olan sağlayıcılar tek girdilerini korur). İstemciler, istek başına `?prefix=alias` ile bunu geçersiz kılabilir. Bkz. [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24s) | `src/lib/arenaEloSync.ts` | Saniye cinsinden senkronizasyon aralığı. | --- ## PromptQL Playground Sağlayıcısı (Resmî Olmayan/Deneysel) prompt.ql.app için tersine mühendislikle geliştirilmiş GraphQL oturum köprüsü (`src/shared/constants/providers/web-cookie.ts`). Tümü isteğe bağlıdır — varsayılanlar herkese açık playground uç noktalarını gösterir; yalnızca kendi barındırdığınız veya alternatif bir PromptQL dağıtımı için geçersiz kılın. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | Sohbet/oturum işlemleri için kullanılan GraphQL uç noktası. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | Kredi bakiyesini/kullanımını sorgulamak için kullanılan GraphQL uç noktası. | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | En iyi gayret esaslı belirteç yenileme için kullanılan uç nokta. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Zaman aşımına uğramadan önce `thread_events` yoklaması için azami süre (ms). | --- ## HyperAgent Web Sağlayıcısı (Resmî Olmayan/Deneysel) hyperagent.com için tersine mühendislikle geliştirilmiş oturum köprüsü (`src/shared/constants/providers/web-cookie.ts`). İsteğe bağlıdır — varsayılan olarak herkese açık faturalandırma/kullanım uç noktasını kullanır; yalnızca kendi barındırdığınız veya alternatif bir HyperAgent dağıtımı için geçersiz kılın. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------- | --------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------ | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Faturalandırma/kullanım kredi bloklarını almak için kullanılan uç nokta. | --- ## Kilo Code Kullanım Kotaları Kilo Code sağlayıcısı için kişisel USD bakiyesi ve Kilo Pass kullanım sorgulaması. İsteğe bağlıdır — varsayılan olarak herkese açık Kilo API'sini kullanır; yalnızca bir aktarma hizmeti/test fikstürü için geçersiz kılın. Kimlik doğrulama, bağlantının mevcut OAuth erişim belirtecini kullanır. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | -------------- | --------------------- | ------------------------------------- | -------------------------------------------------------------------------------------- | | `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Kişisel Kilo Code bakiyesini ve Kilo Pass kullanımını almak için kullanılan temel URL. | --- ## Adobe Firefly Web Sağlayıcısı (Resmî Olmayan/Deneysel) Adobe Firefly web sağlayıcısı için tarayıcı tabanlı oturum yenileme (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`). İsteğe bağlıdır — tüm varsayılanlar normal bir masaüstü kurulumu için ayarlanmıştır. > **#9255 kapsamında kaldırıldı.** Eski CDP bağlantılı Chrome çalışma zamanı (adobeFireflyChromeRuntime.ts), > Playwright tarayıcıyla oturum açma hizmetiyle değiştirildi ve ilgili ayarlar artık mevcut değil. > ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART değişkenlerinin yanı sıra > ADOBE_FIREFLY_LOGIN_WAIT_MS ve ADOBE_FIREFLY_FORTER_WAIT_MS değişkenleri kod tabanının hiçbir yerinde > okunmaz — bunları ayarlamanın hiçbir etkisi yoktur. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------ | ---------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Gerçek başsız Chrome için `1` olarak ayarlayın (üretim işlevi için çalışmadığı bilinmektedir; yalnızca hata ayıklama içindir). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Proaktif tarayıcı hazır tutma özelliğini etkinleştirir/devre dışı bırakır. `0`, proaktif hazır tutmayı devre dışı bırakır (toplu işlem ortasındaki 408 kurtarma işlemi yine uygulanır). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly oturumunun diskte kalıcı olarak saklanmasını devre dışı bırakmak için `0` olarak ayarlayın. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(ayarlanmamış)_ | `open-sse/services/adobeFireflySession.ts` | Yerleşik varsayılanı geçersiz kılarak ardışık gönderimler arasında uygulanan minimum süre (ms). | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(ayarlanmamış)_ | `open-sse/services/adobeFireflySession.ts` | Yerleşik varsayılanı geçersiz kılarak başarılı bir toplu işlemden sonra eklenen ilave süre (ms). | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(ayarlanmamış)_ | `open-sse/services/adobeFireflyClient.ts` | Yerleşik varsayılanı geçersiz kılarak bir üretim isteği gönderilmeden önce uygulanan temel gecikme (ms). | --- ## 19. Model Senkronizasyonu (Geliştirme) | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ----------------------------------- | ---------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(ayarlanmamış)_ | `src/lib/modelsDevSync.ts` | models.dev fiyatlandırma senkronizasyonu için kesin geçersiz kılma ayarı. Ayarlanmamışsa Ayarlar > AI (`modelsDevSyncEnabled`) seçeneğine uyulur. `0`/`false`/`off`/`no`, **DB ayarına üstün gelir** ve hem periyodik senkronizasyonu hem de `getModelsDevPricing()` SQL/JSON taramalarını atlar (panonun aynı olay döngüsünde kilitlendiği durumlarda kurtarma amacıyla). `1`/`true`/`on`/`yes`, senkronizasyonu zorunlu olarak etkinleştirir. Fiyatlandırmayı kaydetme/temizleme işlemleri yine `backupDbFile("pre-write")` çağrısını yapar; bu çağrı, 60 dakikalık sınırlama kapsamında veya `DISABLE_SQLITE_AUTO_BACKUP` etkinken işlem yapmaz. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 sa.) | `src/lib/modelsDevSync.ts` | Geliştirme zamanı model kataloğu senkronizasyon aralığı (saniye cinsinden). | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 sa.) | `src/lib/contextWindowResolver.ts` | Kendi kendini düzelten bağlam penceresi uzlaştırıcısının (5004) çalışma aralığı (saniye cinsinden): `/models` keşfi aracılığıyla sağlayıcı tarafından bildirilen pencereler katalogdan farklı olduğunda bunları `auto:discovery` geçersiz kılmaları olarak sabitler. Devre dışı bırakmak için `0` olarak ayarlayın. Önceden senkronize edilmiş verileri yeniden kullanır (yeni getirme işlemi yapılmaz); `manual` geçersiz kılmaların üzerine asla yazmaz. | --- ## 20. Sağlayıcıya Özgü Ayarlar | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24 saat) | `src/lib/catalog/openrouterCatalog.ts` | OpenRouter model kataloğu önbellek TTL'si. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | `/v1/models` yanıtlarına görüntüleme dostu `name` alanlarını dahil eder. Yalnızca ID bekleyen istemciler için devre dışı bırakın. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8 sn) | `src/app/api/v1/models/catalogCache.ts` | Birleştirilmiş bir `GET /v1/models` katalog yeniden oluşturması için soğuk yol bekleme sınırı (#12627). Zaman aşımında, mevcutsa son iyi 200 yanıtı sunulur. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 gün) | `src/lib/db/models/activeSyncedCatalog.ts` | Bir bağlantının senkronize edilmiş model listesinin yönlendirme için yetkili olmaktan çıktığı ve kayıt defterine açık şekilde hata verdiği süre (#12849). Hiç zaman damgası almamış satırlar eski sayılır. | | `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60 sn) | `src/lib/usage/analyticsResponseCache.ts` | Yavaş bir `GET /api/usage/analytics` yanıtının aynı sorgu dizesi için ne kadar süre yeniden kullanıldığı (#15629). `0` önbelleği devre dışı bırakır. | | `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1 sn) | `src/lib/usage/analyticsResponseCache.ts` | Yalnızca oluşturulması en az bu kadar süren analitik yanıtları önbelleğe alınır; böylece küçük kurulumlar her zaman güncel veri görür. | | `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | ayarlanmadı (kapalı) | `src/app/api/cache/route.ts` via `src/lib/usage/analyticsResponseCache.ts` | İsteğe bağlı katılım (#16361). Negatif olmayan bir N tamsayısına ayarlandığında, `GET /api/cache`'in kullanım geçmişi bölümü (prompt-önbellek toplamları + trend), oluşturulması en az N ms sürdüğünde, kısıtlanmış `trendHours` penceresi başına, `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` süresince paylaşılan analitik yanıt önbelleğinden sunulur (geçmiş bu TTL kadar geride kalabilir; `DELETE /api/cache` bunu geçersiz kılar). Ayarlanmamış veya geçersiz = her istekte geçmiş canlı olarak okunur. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | NanoBanana görüntü oluşturma işleri için maksimum bekleme süresi. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | NanoBanana iş yoklama sıklığı. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Adobe Firefly upscale gönderme-yeniden deneme üstel geri çekilmesi için temel gecikme. | | `AWS_REGION` | _(ayarlanmadı)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | AWS Bedrock uç noktalarını (Kiro, ses) oluşturmak için kullanılan bölge. | | `AWS_DEFAULT_REGION` | _(ayarlanmadı)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | `AWS_REGION` ayarlanmadığında yedek. | | `CLOUDFLARE_ACCOUNT_ID` | _(ayarlanmadı)_ | `open-sse/executors/cloudflare-ai.ts` | Cloudflare Workers AI için hesap kimliği. | | `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(ayarlanmadı)_ | `open-sse/executors/cloudflare-playground.ts` | Cloudflare AI Playground yürütücüsü için tam masaüstü Chrome ikili dosya yolu; başsız parmak izi denetimi Playwright'ın paketlenmiş Chromium'unu engellediğinde kullanılır. | | `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _(ayarlanmadı = uzunluk sınırı yok)_ | `open-sse/executors/codebuddy/shared.ts` | CodeBuddy'ye (CN ve Uluslararası) gönderilen çağıran sistem istemleri için isteğe bağlı uzunluk sınırı. Varsayılan olarak yalnızca bir kodlama aracısı kimlik işareti taşıyan istem, nötr bir istemle değiştirilir (Tencent'in içerik filtresi bunları reddeder); uzun istemler korunur. 0'dan büyük bir tamsayı ayrıca o karakter sayısından uzun herhangi bir sistem istemini de değiştirir; ayarlanmamış, `0` veya tamsayı olmayan bir değer sınırı devre dışı bırakır. Her değiştirme, hangi kuralın tetiklendiğini (kimlik işareti veya uzunluk) günlüğe kaydeder. | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Proxy havuzu Workers aktarma dağıtıcısı tarafından kullanılan Cloudflare REST API tabanını geçersiz kılar (#4640 / 9router#1360). | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Proxy havuzu "Deploy Relay" iletişim kutusunda önerilen varsayılan worker proje adı. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Proxy Havuzu sekmesinden Cloudflare Workers röle seçeneğini gizlemek için `false` olarak ayarlayın. | | `CLOUDFLARED_BIN` | otomatik algılama | `src/lib/cloudflaredTunnel.ts` | `cloudflared` ikili dosyası için özel yol. | | `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Tünel aktarım protokolü: `http2` (varsayılan), `quic` veya `auto`. | | `CLOUDFLARED_CONFIG` | _(ayarlanmadı)_ | `src/lib/cloudflaredTunnel.ts` | Yerel olarak yönetilen bir cloudflared `config.yml` dosyasının yolu (`tunnel:`, `credentials-file:`, `ingress:` içeren). Ayarlandığında, OmniRoute geçici bir hızlı tünel yerine `tunnel --config run` (adlandırılmış tünel) çalıştırır. | | `CLOUDFLARED_HOSTNAME` | _(yapılandırma ingress'inden)_ | `src/lib/cloudflaredTunnel.ts` | Adlandırılmış tünelin genel ana bilgisayar adı için geçersiz kılma (örn. `ai.example.com`), `publicUrl`/`apiUrl` olarak raporlanır. Ayarlanmadığında, yapılandırmanın ilk `ingress` ana bilgisayar adından okunur. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Proxy havuzu röle dağıtıcısı tarafından kullanılan Deno Deploy REST API tabanını geçersiz kılar (#4643 / 9router#1437). | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Proxy havuzu "Deploy Relay" iletişim kutusunda önerilen varsayılan Deno Deploy uygulama adı. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Proxy Havuzu sekmesinden Deno Deploy röle seçeneğini gizlemek için `false` olarak ayarlayın. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 dk) | `open-sse/services/searchCache.ts` | Arama API'si (Perplexity, Brave vb.) yanıt önbelleğe alma işlemi için TTL. | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Yalnızca Claude Code röleleri için deneysel CC uyumlu sağlayıcı arayüzünü gösterir. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Gömülü 9router örneğinin dinlediği ana bilgisayarı geçersiz kılar. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Gömülü 9router örneğinin dinlediği bağlantı noktasını geçersiz kılar. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Gömülü hizmet WebSocket proxy'si için bağlama ana bilgisayarı (varsayılan olarak yalnızca loopback). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Gömülü hizmet WebSocket proxy sunucusu için bağlantı noktası. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI köprü ana bilgisayarı (eski entegrasyon). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI köprü bağlantı noktası. | | `CLIPROXYAPI_API_KEY` | _(boş)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | `cliproxyapi_api_key` ayarı mevcut olmadığında veri düzlemi anahtarı yedeği. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(boş)_ | `src/lib/services/cliproxyAccountHealth.ts` | Harici olarak yönetilen bir CLIProxyAPI örneğinden hesap sağlığı okumaları için yönetim anahtarı. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | CLIProxyAPI yapılandırma dizini. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose'un `cliproxyapi` sidecar'ını yayınladığı host arayüzü (#12578). Veri birimi (data volume) sağlayıcı OAuth/API kimlik bilgilerini tutar ve sabitlenmiş imaj, env tabanlı bir veri düzlemi `api-keys` geçersiz kılmasına sahip değildir (yalnızca bağlanmış bir `config.yaml`), dolayısıyla `0.0.0.0` kimlik bilgisi taşıyan bir servisi tüm LAN'a açık hale getirir. | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Gömülü Mux (coder/mux) ajan orkestrasyon arka plan sürecinin dinlediği bağlantı noktasını geçersiz kılar (her zaman 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Gömülü open-wa (WhatsApp Web otomasyonu) arka plan sürecinin dinlediği bağlantı noktasını geçersiz kılar (her zaman 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario gömülü servisinin bind/connect host'u (varsayılan olarak yalnızca loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario gömülü servis bağlantı noktası. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario gömülü servisinin bind/connect host'u (varsayılan olarak yalnızca loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario gömülü servis bağlantı noktası. | | `LOCAL_HOSTNAMES` | _(boş)_ | `open-sse/config/providerRegistry.ts` | "Yerel" olarak kabul edilen, virgülle ayrılmış ek host adları (Docker servis adları vb.). | `ENABLE_CC_COMPATIBLE_PROVIDER` yalnızca Claude Code istemcilerini özel olarak kabul eden üçüncü taraf aktarıcılar (relay) içindir. OmniRoute, istekleri bu aktarıcıların kabul edeceği şekilde yeniden yazar. Yalnızca Claude Code CLI kullanmak istiyorsanız veya bu aktarıcıların ne olduğundan emin değilseniz, bunu devre dışı bırakın ve bunun yerine normal bir Anthropic uyumlu sağlayıcı ekleyin. --- ## 21. Proxy Sağlığı | Variable | Default | Source File | Description | | ------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Hızlı başarısızlık (fast-fail) sağlık kontrolü zaman aşımı. | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Gecikme için optimize edilmiş havuz stratejisinde aday proxy'lerin ortalama gecikmesini hesaplamak için kullanılan zaman penceresi (saat). | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | Sağlık kontrolü sonucu önbellek TTL değeri. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | Başarısız proxy sağlık yoklamaları için önbellek TTL değeri. Yüksek eşzamanlılık altında geçici proxy zaman aşımlarının hızla yeniden denenmesi için bunu `PROXY_HEALTH_CACHE_TTL_MS` değerinden daha kısa tutun; böylece gerçekten çalışmayan proxy'ler için hızlı başarısızlık (fast-fail) devre dışı kalmaz. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Kayıtlı proxy'leri düzenli aralıklarla yoklayan arka plan proxy sağlık zamanlayıcısını devre dışı bırakmak için `false` olarak ayarlayın. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Arka plan sağlık zamanlayıcısının tarama aralığı, ms cinsinden (minimum `60000`). | | `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Edge-relay proxy'leri (`deno`/`vercel`/`cloudflare`) için ms cinsinden yoklama aralığı; bu proxy'lere yapılan yoklamalar ücretlendirilen bir sunucusuz izolatı uyandırır (minimum `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Arka plan kurtarma geçişi aralığı (ms cinsinden): daha önce sağlıksız olan proxy'lerin ne sıklıkla yeniden yoklanacağını belirler; böylece kurtarılan bir proxy, yeniden başlatma gerekmeden rotasyona geri döner. `60000` altındaki değerler varsayılana geri döner. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Zamanlayıcı ve `/api/settings/proxies/auto-test` uç noktası tarafından kullanılan erişilebilirlik yoklaması hedefi. Herkese açık varsayılanı kullanmamak için bunu dahili/kendi barındırdığınız bir URL'ye yönlendirin. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Zamanlayıcı ve `/api/settings/proxies/auto-test` uç noktası tarafından paylaşılan, toplu iş başına aynı anda başlatılan yoklama sayısı. Alt sınırı 1, üst sınırı 50'dir. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Bir toplu iş içinde iki yoklama çıkışı arasındaki ms cinsinden gecikme. Bu olmadan tüm toplu iş aynı anda yola çıkar ve paylaşılan bir çıkış IP'si, hız sınırlı bir hedefi tetikleyebilir. Aralığı devre dışı bırakmak için `0` olarak ayarlayın; üst sınır 5000'dir. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Bir proxy'nin atanmış sağlayıcısının gerçek ana bilgisayarını yoklamayı durdurmak (`GET /models`, API anahtarı olmadan) ve bunun yerine her zaman `PROXY_HEALTH_TEST_URL` kullanmak için "false" olarak ayarlayın. | | `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | `false` (varsayılan) olduğunda, otomatik erişilebilirlik yoklamaları (zamanlayıcı + `/api/settings/proxies/auto-test` "Test All" düğmesi) **salt okunur** olur ve bir proxy'nin durumunu asla yazmaz — aktif/pasif ayarını yalnızca operatör yapar; böylece kararsız bir yoklama, atanmış bir proxy'yi mahsur bırakamaz (#6246). Eski test-et-ve-ayarla davranışını geri getirmek için `true` olarak ayarlayın. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | İsteğe bağlı özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano DB geçersiz kılması önceliklidir). `true` (veya `1`, `yes`) olduğunda, boş 200 ya da boş içerikli 502 döndürmek yerine, çevrilmiş boş akış turlarını normal kimlik bilgisi yolu üzerinden yeniden dener (en fazla `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` yeniden denemeye kadar). | | `EMPTY_STREAM_SIBLING_RECOVERY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | İsteğe bağlı özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano DB geçersiz kılması önceliklidir). `true` (veya `1`, `yes`) olduğunda, Claude/Codex boş akış içerik yoklamasını etkinleştirir ve bir `empty_content` turundan sonra mevcut sınırlı yeniden denemeyi başka bir uygun bağlantıda kullanır; bekleme süresi veya model kilitlemesi olmadan. | | `STREAM_LATE_OUTPUT_PROBE_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | İsteğe bağlı özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano DB geçersiz kılması önceliklidir). `true` (veya `1`, `yes`) olduğunda, ilk 64'ten sonra iletilen her 16 parçadan birini örneklemeye devam eder; böylece geç gelen görünür çıktı, akışı yine de çıktı üretmiş olarak işaretler (çıktı sonrası tek başına bir 5xx, yalnızca modele özgü kilitleme yerine istek kapsamında kalır). | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | İsteğe bağlı özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano veritabanı geçersiz kılması önceliklidir). `true` (veya `1`, `yes`) panoda bir proxy havuzunun altında salt okunur havuz çıkış gözlemini gösterir (farklı çıkış IP'leri, bağlantılar ve son 24 saatte tek bir IP arkasında en çok görülen sayı; proxy günlüğünden). Yönlendirme için asla kullanılmaz. | | `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | İsteğe bağlı özellik bayrağı (bkz. [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); pano veritabanı geçersiz kılması önceliklidir). `true` (veya `1`, `yes`) havuz üyesi başına operatör tarafından gönderilen tarihli gözlemlenmiş adresleri kabul eder ve bunları görüntüleme ile havuz sıralaması için günlük okumasıyla birleştirir. | | `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Operatör tarafından gönderilen çıkış satırları için saat cinsinden gözlem penceresi (her okumada okunur; yeniden başlatma gerekmez). 1..168 aralığıyla sınırlıdır; aralık dışı, sayısal olmayan veya boş bir değer, işlem genelinde tek bir uyarıyla 24'e geri döner, asla hata fırlatmaz. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Zamanlayıcının art arda tekrarlanan başarısızlıklardan sonra proxy'leri otomatik olarak kaldırmasına izin vermek için `true` olarak ayarlayın. | | `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | Zamanlayıcının bir proxy'yi otomatik olarak kaldırmasından önceki art arda başarısızlık sayısı (`PROXY_AUTO_REMOVE=true` iken). | | `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Zamanlayıcının, proxy'yi kaldırmak yerine art arda tekrarlanan başarısızlıklardan sonra geçici olarak devre dışı bırakmasına (durum `dead`, asla silinmez) izin vermek için `true` olarak ayarlayın. `PROXY_AUTO_REMOVE` için yıkıcı olmayan alternatif: proxy, havuz/rotasyon çözümlemesinden hemen çıkar (kapsam-havuzu çözümlemesinin kullandığı canlı durum filtresi onu zaten hariç tutar) ve yoklamaları tekrar geçmeye başladığında otomatik olarak yeniden etkinleştirilir. `PROXY_AUTO_REMOVE_AFTER` eşiğini paylaşır. Her iki bayrak da `true` ise, `PROXY_AUTO_REMOVE` önceliklidir. | | `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | İsteğe bağlı pasif atlama: `true` olduğunda, zamanlayıcı, son üretim trafiği tarafından zaten kanıtlanmış bir uç nokta için canlı yoklamayı atlar (pencerede en az bir başarı ve proxy'ye atfedilmiş hata yok, tam olarak bir sağlayıcı gözlemlendi). Varsayılan olarak kapalıdır: her proxy yoklanır. | | `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Pasif atlamanın incelediği üretim trafiğinin ms cinsinden penceresi (`60000..599999` ile sınırlıdır). 10 dakikalık tarama aralığından daha kısadır; böylece yakın zamandaki bir hata seyrelmek yerine baskın olur. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Proxy erişilebilirlik ön kontrolleri başarısız olduğunda OAuth ve sağlayıcı doğrulama akışlarının sabitlenmiş bir proxy'yi atlayarak doğrudan bağlanmasına izin verir. Etkin öncelik: Özellik Bayrakları veritabanı geçersiz kılması > ortam değişkeni > varsayılan. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30 sn) | `src/lib/resilience/settings.ts` | Varsayılan **kuyruk-bekleme** bütçesi: bir isteğin, upstream'e hiç ulaşmadan reddedilmeden önce bir sağlayıcı slotu için ne kadar bekleyebileceği ve kuyrukta ne kadar kalabileceği. Sayaç, iş yürütülmeye başladığında temizlenir — yürütme, `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` tarafından ayrıca sınırlandırılır. Env yalnızca varsayılanı belirler: kalıcı `resilienceSettings.requestQueue.maxWaitMs` ve ardından bağlantı başına `rateLimitOverrides.maxWaitMs`, her biri bunu geçersiz kılar. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 dk) | `open-sse/services/rateLimitManager.ts` | Kabul edilmiş bir isteğin, hız sınırı rezervasyonu sona ermeden önce yürütmede ne kadar kalabileceğinin üst sınırı — artımlı olmayan ağ geçitlerindeki yavaş fetch başlangıcının zaman aşımına uğramaması için kuyruk-bekleme bütçesinden ayrılmıştır (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (devre dışı) | `open-sse/services/rateLimitManager.ts` | Kuyruk kabul sınırı: bu kadar istek zaten kuyruktaysa 429 `queue_full` ile reddet. `0` = sınırsız (varsayılan). | | `RATE_LIMIT_AUTO_ENABLE` | _(ayarlanmamış)_ | `open-sse/services/rateLimitManager.ts` | Kalıcı Dashboard ayarından (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`) bağımsız olarak otomatik etkinleştirme hız sınırı güvenlik ağını zorla aç/kapat. Zorla açmak için `true`/`1`/`on`, zorla kapatmak için `false`/`0`/`off` kabul eder. Etkinken (varsayılan), aktif API anahtarı bağlantıları otomatik olarak hız sınırı korumasına alınır. Bağlantı başına `rateLimitProtection: false` ayarlamak açık korumayı devre dışı bırakır ancak bu güvenlik ağının dışına çıkmaz; bu env değişkenini `false` olarak ayarlamak, API anahtarı bağlantılarını hız sınırı kuyrukları olmadan çalıştırmanın genel mekanizmasıdır. | | `PROVIDER_COOLDOWN_ENABLED` | _(ayarlanmamış → kapalı)_ | `open-sse/services/providerCooldownTracker.ts` | İsteğe bağlı, global ve istekler arası sağlayıcı/bağlantı cooldown takibi. Varsayılan olarak KAPALI (Connection Cooldown / Provider Circuit Breaker ile çakışır). Etkinleştirmek için `true`/`1`/`on` kabul eder. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Başarısız bir sağlayıcı/bağlantı yeniden denenmeden önceki minimum cooldown süresi (ms). Ardışık başarısızlıklarla üstel olarak ölçeklenir. Yalnızca `PROVIDER_COOLDOWN_ENABLED` etkinken kullanılır. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 dk) | `open-sse/services/providerCooldownTracker.ts` | Başarısız bir sağlayıcı/bağlantının her durumda yeniden denenmesinden önceki maksimum cooldown (ms) üst sınırı. Yalnızca `PROVIDER_COOLDOWN_ENABLED` etkinken kullanılır. | | `STREAM_RECOVERY_ENABLED` | _(ayarlanmamış → kapalı)_ | `src/lib/resilience/settings.ts` (tohumlama) → `open-sse/services/streamRecovery.ts` (mantık) | **Ne:** kesilmiş upstream akışlarının şeffaf kurtarılması (free-claude-code portu). Açılış SSE penceresini `STREAM_RECOVERY.HOLDBACK_MS` (750 ms) kadar tutar; böylece _pre-commit_ kesintisi — istemciye hiçbir bayt ulaşmadan önce gerçekleşen bir kesinti — görünmez şekilde yeniden açılır ve yeniden denenir. **Ne zaman etkinleştirilmeli:** akış başlangıcında sık sık 0 baytla kesilen kararsız upstream'ler için; her akışta ilk token'a kadar geçen süreye 750 ms'ye kadar ek süre eklemeyi göze alamıyorsanız KAPALI bırakın. `true`/`1`/`on` kabul eder. Kalıcı Resilience ayarını tohumlar; Dashboard ayarı bir kez ayarlandıktan sonra geçerli olur. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(ayarlanmamış → kapalı)_ | `src/lib/resilience/settings.ts` (tanım) → `open-sse/services/streamRecovery.ts` (mantık) | **Ne:** akış ortasında devam ettirme (Faz 4.4) — bir _post-commit_ kesilmesinden sonra (baytlar istemciye zaten ulaşmışsa), kısmi metin bir asistan ön-doldurması olarak kullanılarak yeniden istekte bulunur ve eksik son ek birleştirilir. Yalnızca düz metin OpenAI uyumlu akışlar; devam eden bir araç çağrısı varken asla tetiklenmez. **Ne zaman etkinleştirilir:** yanıtın ortasında kesilen uzun üretimlerde ve kurtarılan kuyruğun token token yerine tek bir toplu parça halinde gelmesini kabul ettiğinizde. `STREAM_RECOVERY_ENABLED`'dan bağımsızdır (farklı risk profili). `true`/`1`/`on` kabul eder. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(ayarlanmamış → kapalı)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | İsteğe bağlı, aktif akışlara yönelik faydalı çıktı watchdog'u. Parça göndermeye devam eden ancak yapılandırılan asistan çıktı oranının altında kalan akışları tespit eder; kalp atışları, kullanım olayları, boş deltalar ve araç/akıl yürütme aşamaları ilerleme gibi görünmez. Boşta kalma ve kesin süre sınırı zaman aşımlarından ayrıdır. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Throughput değerlendirmesinden önceki hoşgörü süresi; 0–600000 ms ile sınırlıdır. | | `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Kayan faydalı çıktı penceresi; 1000–600000 ms ile sınırlıdır ve iptalden önce bir tam pencerenin dolması gerekir. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Minimum UTF-8 asistan çıktısı bayt oranı (muhafazakâr token vekili); 1–1000000 ile sınırlıdır. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Ölçülebilir kabul edilen, sıfırdan büyük minimum faydalı çıktı örneği; 1–1000000 bayt ile sınırlıdır. | | `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Başlangıçta sağlayıcı token sağlık kontrolleri arasındaki kademelendirme aralığı (ms). | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Ani yük patlamalarını önlemek için sağlayıcı token sağlık kontrolleri arasında `HEALTHCHECK_STAGGER_MS` değerinin üzerine eklenen minimum rastgele jitter (ms) (Sorun #1220). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Ani yük patlamalarını önlemek için sağlayıcı token sağlık kontrolleri arasında `HEALTHCHECK_STAGGER_MS` değerinin üzerine eklenen maksimum rastgele jitter (ms) (Sorun #1220). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Başlangıçtaki token sağlık kontrolü taraması için eşzamanlı kontrol grup boyutu; daha büyük değerler daha fazla bağlantıyı paralel olarak kontrol eder, daha küçük değerler ani yükü azaltır (Sorun #7875, #7719'un regresyonu). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | İstemciye hata döndürülmeden önce model kapsamlı cooldown yanıtlarında yapılan otomatik yeniden deneme sayısı. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Cooldown yeniden denemeleri arasındaki maksimum backoff aralığı (saniye). Yukarı akıştaki `Retry-After` değerinden bağımsız olarak bu değerle sınırlandırılır. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | Headroom token tasarruf proxy'sinin URL'si. Pano yaşam döngüsü (`api/headroom/*`) varsayılan olarak loopback üzerinde yerel bir `headroom-ai` CLI'sı başlatır; yalnızca harici bir Docker sidecar proxy'sine işaret etmek için geçersiz kılın. | ### Akış kurtarma ayar sabitleri Kurtarma bekletme (holdback) davranışı, `open-sse/config/constants.ts` içindeki sabit kodlanmış sabitlerle (`STREAM_RECOVERY`) ayarlanır; referans olması için burada gösterilmiştir — bunları değiştirmek bir ortam değişkeni değil, kod düzenlemesi gerektirir: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — istemciye herhangi bir bayt gönderilmeden önce erken bir kesilmenin yeniden denenebilmesi için açılış SSE penceresinin ne kadar süre bekletildiği. - `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — bekletilen pencere için kesin üst sınır; zamanlayıcıdan bağımsız olarak bu kadar bayt birikir birikmez gönderim (flush + passthrough) yapılır. - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — bekletme henüz gönderilmemişken yukarı akış akışının şeffaf şekilde yeniden açılabileceği maksimum sayı. > **Sağlayıcı başına kayan pencere hız sınırı (ortam değişkeni yok):** FCC'den taşınan > sağlayıcı başına kayan pencere hız sınırı _yedek (fallback)_ mekanizması kodda mevcuttur > (`open-sse/services/providerDefaultRateLimit.ts`, `open-sse/services/rateLimitManager.ts` > üzerinden bağlanmıştır), ancak **boş bir varsayılan eşlem** ile gelir ve bugün > **operatör ortam değişkeni yoktur** — yalnızca bir test kancası / kod düzenlemesi > aracılığıyla etkinleştirilebilir. Bilerek yukarıdaki tabloda listelenmemiştir. Ayarlanabilir > bir düğümü _olan_ `(token, IP)` başına relay sınırlayıcısı `RELAY_IP_PER_MINUTE` > değeridir (§3 Ağ ve Portlar). --- ## 22. Hata Ayıklama > [!CAUTION] > Bu değişkenler **ayrıntılı çıktı** üretir ve hassas verilerin sızmasına neden olabilir. **Üretim ortamında asla etkinleştirmeyin.** | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CURSOR_DEBUG` | _(ayarlanmamış)_ | `open-sse/executors/cursor.ts` | Ayrıntılı Cursor yürütücü günlüklerini (kodu çözülmüş SSE parçaları vb.) etkinleştirmek için `1` olarak ayarlayın. | | `CURSOR_STREAM_DEBUG` | _(ayarlanmamış)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG` için geriye dönük uyumlu takma ad. | | `CURSOR_DUMP_FILE` | _(ayarlanmamış)_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG=1` olduğunda ham, kodu çözülmüş Cursor parçalarını alan isteğe bağlı dosya yolu. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Cursor yürütücüsü için akış boşta kalma zaman aşımı (ms). | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Baytlar arabellekte kalmaya devam ederken composer `kv_after_text` yumuşak sonlandırıcısından sonraki ek süre aralığı (ms) — sondaki bir `exec_mcp` araç çağrısına kendi çerçevesini tamamlaması için süre tanır. | | `CURSOR_TOOL_DIRECTIVE` | etkin (`!== "0"`) | `open-sse/executors/cursor.ts` | composer-2.5'in araç çağrılarını güvenilir şekilde gerçekleştirmesini sağlayan araç yürütme yönergesi. Devre dışı bırakmak için `0` olarak ayarlayın. | | `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(ayarlanmamış)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Çeviriden SONRA sistem mesajına eklenen, operatör tarafından tanımlanmış sistem istemi metni (çeviri sonrası ekleme); codex/Responses ve `/v1/messages` yollarına ulaşır. Ayrıca, yansıtılan sistem önsözü bloklarından kaldırılan yönerge öneki olarak kullanılır. Devre dışı bırakmak için ayarlamadan bırakın. | | `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (kapalı) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | Bir openai→claude akışının başından yansıtılan sistem istemi önsözü bloklarını kaldırmak için `1` olarak ayarlayın. Varsayılan olarak kapalıdır — sezgisel yöntemler İngilizce düzyazıya göre şekillendirilmiştir ve yanıt yükünü değiştirir; dolayısıyla meşru olarak böyle bir bölümle başlayan bir yanıt bu bölümü kaybeder. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Uzak `image_url` görsel girdisi için görüntü başına getirme zaman aşımı (ms). | | `CURSOR_STATE_DB_PATH` | _(aranır)_ | `open-sse/utils/cursorVersionDetector.ts` | IDE sürümü algılaması için kullanılan Cursor IDE durum veritabanı aramasını geçersiz kılar. | | `CURSOR_AGENT_CLI_VERSION` | _(algıla / sabitle)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Agent Run üzerindeki `x-cursor-client-version: cli-…` için Agent CLI derleme kimliği (`YYYY.MM.DD-`). | | `CURSOR_AGENT_BIN` | _(ayarlanmamış)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Görüntü oluşturmak için kullanılan Cursor Agent ikili dosyasının yolu. Ayarlanmamışsa işleyici önce `providerSpecificData.agentBin`, ardından PATH kullanır. | | `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor Agent görüntü işleri için görüntü başına duvar saati süresi (ms). | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor görüntü işleri için paylaşımlı kullanım eşzamanlılık sınırı. | | `CURSOR_IMG_MODEL` | istek / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Görüntü işleri için Cursor CLI `--model` değerini geçersiz kılar. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC (uncensored.com) görüntü oluşturma sonucu yoklama sıklığı (ms). | | `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC görüntü oluşturma sonucu yoklaması için duvar saati zaman aşımı (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC (uncensored.com) video oluşturma sonucu yoklama sıklığı (ms). | | `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC video oluşturma sonucu yoklaması için duvar saati zaman aşımı (ms). | | `CURSOR_DATA_DIR` | _(aranır)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Cursor Agent CLI veri dizinini (`…/versions/`) geçersiz kılar; resmi agent'ın kullandığı değişkenle aynıdır. | | `CURSOR_TOKEN` | _(ayarlanmamış)_ | `scripts/ad-hoc/cursor-tap.cjs` | Geliştirici araçları tarafından kullanılan doğrudan Cursor bearer token'ı. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | devre dışı (`"1"` ile isteğe bağlı) | `src/app/api/v1/chat/completions/route.ts` | `"1"` ayarlandığında büyük sohbet yükleri için içerik türü/uzunluk işaretçilerini günlüğe kaydeder. Günlük gürültüsünü azaltmak için varsayılan olarak kapalıdır. | | `DEBUG_RESPONSES_SSE_TO_JSON` | _(ayarlanmamış)_ | `open-sse/handlers/responseTranslator.ts` | Responses API SSE→JSON çeviri ayrıntılarını günlüğe kaydetmek için `true` olarak ayarlayın. | | `DEBUG_CLAUDE_NONSTREAM` | _(ayarlanmamış)_ | `open-sse/handlers/responseTranslator.ts` | Claude yanıtı çeviri yolunda boş `textContent` parçalarını göstermek için `true` olarak ayarlayın (yalnızca hata ayıklama). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(ayarlanmamış)_ | E2E test düzeneği | E2E test modunu (gevşetilmiş kimlik doğrulama, test kancaları) etkinleştirmek için `true` olarak ayarlayın. | --- ## 23. GitHub Entegrasyonu Kullanıcıların sorunları doğrudan Dashboard üzerinden bildirmesine olanak tanıyın. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | --------------------- | ---------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `GITHUB_ISSUES_REPO` | _(ayarlanmamış)_ | `src/app/api/v1/issues/report/route.ts` | `owner/repo` biçimindeki depo. | | `GITHUB_ISSUES_TOKEN` | _(ayarlanmamış)_ | `src/app/api/v1/issues/report/route.ts` | `issues:write` kapsamına sahip GitHub Kişisel Erişim Token'ı. | | `GITHUB_TOKEN` | _(ayarlanmamış)_ | sorun triyajı / bulut aracısı yardımcıları | `GITHUB_ISSUES_TOKEN` için yedek olarak kullanılan ve `src/lib/cloudAgent/*` içindeki bulut aracısı yardımcıları tarafından tüketilen genel GitHub erişim token'ı. | --- ## Dağıtım Senaryoları Aktarım arka ucu SRE rehberliği (`ts`/`bifrost`/`auto` davranışı, 9router ile CLIProxyAPI konumlandırması ve yüksek aktarım hızlı yedek stratejisi) için [Aktarım Arka Ucu Stratejisi](/docs/reference/RELAY_BACKEND_STRATEGY.md) belgesine bakın. ### Minimum Yerel Geliştirme ```bash JWT_SECRET=$(openssl rand -base64 48) API_KEY_SECRET=$(openssl rand -hex 32) INITIAL_PASSWORD=dev123 PORT=20128 NODE_ENV=development ``` ### Docker Üretim Ortamı ```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 ``` ### İnternet Erişimi Olmayan Ortam / 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 ``` ### Ters Proxy'li VPS (nginx + Cloudflare) ```bash JWT_SECRET= API_KEY_SECRET= STORAGE_ENCRYPTION_KEY= PORT=20128 AUTH_COOKIE_SECURE=true REQUIRE_API_KEY=true NEXT_PUBLIC_BASE_URL=https://omniroute.example.com BASE_URL=http://127.0.0.1:20128 CORS_ORIGIN=https://omniroute.example.com ENABLE_TLS_FINGERPRINT=true CLI_COMPAT_ALL=1 ``` --- ## 24. Skills Korumalı Alanı (v3.8.0+) Skills çatısı (`src/lib/skills/`), kullanıcı tanımlı otomasyonları korumalı bir ortamda çalıştırdığında uygulanan sınırlar ve güvenlik ayarları. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | --------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 sn) | `src/lib/skills/builtins.ts` | Korumalı alandaki skill kodu için yürütme başına geçen gerçek süre zaman aşımı. Kesin sınırdır; daha uzun süren işlemler sonlandırılır. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _(`SKILLS_SANDBOX_TIMEOUT_MS` değerine geri döner)_ | `src/lib/skills/` | Üst düzey skill orkestrasyonu zaman aşımı. Çok adımlı iş akışlarına izin vermek için `SKILLS_SANDBOX_TIMEOUT_MS` değerinden daha yüksek ayarlayın. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Bir skill'in korumalı alandaki herhangi bir dosyadan okuyabileceği maksimum bayt sayısı. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Bir skill içindeki herhangi bir HTTP yanıtından yakalanabilecek maksimum bayt sayısı. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Bir korumalı alan çağrısından döndürülen stdout/stderr karakterleri için kesin üst sınır. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Korumalı alan içinden giden ağ bağlantılarına izin vermek için `1`/`true` olarak ayarlayın. Güvenlik için varsayılan olarak **yalıtılmıştır**. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(boş)_ | `src/lib/skills/builtins.ts` | Korumalı alan yürütmesine izin verilen kapsayıcı imajlarının virgülle ayrılmış izin listesi. Boş olması, yalnızca yerleşik varsayılanın kullanılacağı anlamına gelir. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(yerleşik varsayılan)_ | `src/lib/skills/` | Docker destekli bir korumalı alan başlatılırken kullanılan kapsayıcı imajı. Özel ve güçlendirilmiş bir temel imajı sabitlemek için geçersiz kılın. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Skill korumalı alanı için kapsayıcı çalışma zamanı: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. `auto`, ana makine işletim sistemine göre yüklü en iyi çalışma zamanını seçer (macOS'ta Apple Container/OrbStack, Windows'ta WSL Container, Linux'ta Podman); bunlar yoksa Docker'a geri döner. | > [!CAUTION] > `SKILLS_SANDBOX_NETWORK_ENABLED=true` ayarını etkinleştirmek, rastgele skill kodu için bir çıkış yolu açar. Paylaşımlı dağıtımlarda bunu `OUTBOUND_SSRF_GUARD_ENABLED=true` ve katı bir `CORS_ORIGIN`/proxy politikasıyla birlikte kullanın. --- ## 25. Sağlayıcı Kotaları, Tüneller, Yedeklemeler ve Çeşitli Çalışma Zamanı Sağlayıcı kota uç noktaları, ağ tünelleri (Tailscale, Ngrok, MITM hata ayıklama proxy'si), 1Proxy çıkış (egress) havuzu, veritabanı yedeklemeleri ve yürütücü katmanı ya da betikler tarafından başvurulan özellik bazlı küçük geçersiz kılmalar. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Hız sınırlayıcı arka ucu için Redis bağlantı dizesi. | | `ALIBABA_CODING_PLAN_HOST` | _(üretim sunucusu)_ | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian coding-plan kotalarını almak için kullanılan sunucuyu geçersiz kılar. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | sunucudan türetilir | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian için tam kota URL'si geçersiz kılması. | | `QWEN_CLOUD_COOKIE` | _(ayarlanmamış)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Qwen Cloud / Model Studio kişisel Token Plan kota ağ geçidi için konsol oturum çerezi (çıkarım API anahtarı bunu okuyamaz). home.qwencloud.com › Billing › Subscription (F12 › Network) sayfasında `cs-data.qwencloud.com` adresine yapılan herhangi bir `api.json` çağrısından — `login_qwencloud_ticket` içeren — `Cookie` istek başlığının tamamını kopyalayın. Hassas ve oturum kapsamlıdır; bağlantı bazında `qwenCloudCookie` Pano alanını tercih edin. | | `QWEN_CLOUD_SEC_TOKEN` | _(ayarlanmamış)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Token Plan konsol ağ geçidi için manuel `sec_token` geçersiz kılması. Hassastır; ayarlanmadığında alıcı, çerezi kullanarak pano HTML'sinden çözer. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Kişisel Token Plan kota alıcısı için ağ geçidi sunucusu geçersiz kılması (ör. Model Studio konsolu için `bailian-singapore-cs.alibabacloud.com`). | | `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Oturum açılmış HTML'den `sec_token` değerini çözmek için kullanılan pano URL'si. | | `XIAOMI_MIMO_CONSOLE_COOKIE` | _(ayarlanmamış)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Xiaomi MiMo Token Plan kota API'si için konsol oturum çerezi (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — çıkarım API anahtarı bunu okuyamaz). Token Plan sayfasında (F12 › Network) `platform.xiaomimimo.com` adresine yapılan herhangi bir istekten — `api-platform_serviceToken` ve `userId` içeren — `Cookie` istek başlığının tamamını kopyalayın. Hassas ve oturum kapsamlıdır; bağlantı bazında `xiaomiMimoConsoleCookie` Pano alanını tercih edin. | | `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Konsol çerezi yapılandırılmadığında kullanılan, OmniRoute tarafından izlenen Xiaomi MiMo yedeğinin aylık bütçesi (Kredi). Varsayılan olarak Lite katmanının 4.1B değeri kullanılır; planın Kredi değerine ayarlayın (Standard 11B / Pro 38B / Max 82B). Bağlantı başına tanımlanan `providerSpecificData.monthlyTokenLimit` geçersiz kılması, bu ortam değişkeninden önce gelir. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio ücretsiz katman görüntü/medya kotasını almak için konsol ön uç yolu geçersiz kılması. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio ücretsiz katman çok modlu kotasını almak için konsol ön uç yolu geçersiz kılması. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio ücretsiz katman ses kotasını almak için konsol ön uç yolu geçersiz kılması. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(ayarlanmadı)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Yerleşik Alibaba ücretsiz katman metin modeli izin listesi için yerel bir JSON geçersiz kılma dosyasının isteğe bağlı yolu. Önce `$DATA_DIR/alibaba-free-tier-allowlist.json`, ardından `config/alibaba-free-tier-allowlist.json` dosyasına geri döner. | | `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | İstem bütçeleri hesaplanırken tamamlama çıktısı için ayrılan token sayısı. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Bağlam penceresine sığdırmak amacıyla eski satır içi görüntüler budanırken en yenilerden kaç tanesinin tutulacağı (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | etkin | `open-sse/services/model.ts` | Eski istemcilerin kullandığı eski model takma adı uyumluluk katmanını açıp kapatır. | | `OMNIROUTE_EMERGENCY_FALLBACK` | etkin | `open-sse/services/emergencyFallback.ts` | Başarısız istekleri ücretsiz `nvidia`/`openai/gpt-oss-120b` modeline yeniden yönlendiren acil durum bütçe tükenmesi yedeğini devre dışı bırakmak için `false` (veya `0`) olarak ayarlayın. Geçerli öncelik sırası: Özellik Bayrakları DB geçersiz kılması > ortam değişkeni > varsayılan; kullanılamıyorsa hizmet, ham ortam değerine geri döner. | | `COMMAND_CODE_CALLBACK_PORT` | _(ayarlanmadı)_ | `src/app/api/providers/command-code/auth/shared.ts` | Command Code CLI yardımcısından gelen OAuth tarzı geri çağrılar için kullanılan yerel bağlantı noktası. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Command Code üst akışına `x-command-code-version` başlığı olarak gönderilen değer. CLI sürümünü yükseltmek için geçersiz kılın. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Akıllı telefon kota-getirici telemetrisinin kullandığı Command Code kullanım/kota üst akışının temel URL'si. Kendi barındırdığınız/alternatif bir Command Code API'si için geçersiz kılın. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | MITM hata ayıklama vekil sunucusunun yerel bağlanma (bind) portu. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Üst akış TLS doğrulamasını devre dışı bırakmak için `1` olarak ayarlayın (yalnızca geliştirme). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Vekil üzerinden geçen bağlantılar için boşta (idle) soket zaman aşımı (ms); bu süreyi aşan boş soketler, yarı açık tünellerin sızıntı yapmasını önlemek için kapatılır. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Antigravity MITM köprüsünün dinlediği port. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Köprünün Antigravity trafiğini ilettiği yönlendirici (router) uç noktası. | | `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Köprünün TLS materyalini okuduğu dizini geçersiz kılar. Sertifika modeli, AgentBridge sunucusunun yaptığı gibi seçilir: eski (legacy) yaprak kurulum için `server.crt`/`server.key`, aksi takdirde `ca.crt`/`ca.key` (kök CA, araya girilen her ana makine için bir yaprak; `MITM_ROOT_CA_ENABLED=true` ile zorlanır). Etkin modelin dosyaları eksikse köprü başlangıçta çıkar. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Yönlendirme kararı günlük ayrıntı düzeyi: `0` susturur, daha yüksek değerler daha fazla bypass/yönlendirme kararını günlüğe kaydeder. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Kök CA + ana makine başına yaprak sertifika modelini etkinleştirmek için `true` olarak ayarlayın (#6684). Yeni kurulumlar bunu otomatik olarak alır; önceden var olan güvenilir eski (legacy) yaprağa sahip kurulumlar, etkinleştirilmedikçe eski sabit-SAN sertifikasını kullanmaya devam eder. | | `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | Oluşturulan vekil işlem için MITM yöneticisi TARAFINDAN ayarlanır (`root-ca` \| `legacy`) — sertifika geçişi kararını yansıtır; elle ayarlanması amaçlanmamıştır. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | MITM sertifika güveni komutlarındaki baştaki `sudo`'yu kaldırmak için `1` (truthy bir değer) olarak ayarlayın — operatörün CA'ya manuel olarak güvendiği (örneğin Node'un extra-CA-certs mekanizması aracılığıyla) root'suz / kullanıcı ad alanlı (user-namespaced) dağıtımlar için. | | `SKIP_ANTIGRAVITY_DNS` | _(ayarlanmamış)_ | `src/mitm/dns/provision.ts` | Antigravity proxy ana bilgisayar adları için `/etc/hosts` DNS girdilerinin hazırlanmasını tamamen atlamak amacıyla `true` olarak ayarlayın — sudo/root erişimi bulunmayan konteynerler için. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(ayarlanmamış)_ | `src/mitm/dns/dnsConfig.ts` | DNS girdileri eklenirken/kaldırılırken hosts dosyasına yazma işlemini atlamak için `1` olarak ayarlayın — korumalı (sandbox) veya salt-okunur test ortamları için. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Yalnızca test/CI koruması: sertifika güveni kurma/kaldırma işlemini işlevsiz (no-op) hale getirmek için `1` olarak ayarlayın; böylece test paketi işletim sistemi güven deposunu asla değiştirmez. Test kurulumu ve CI iş akışları tarafından otomatik olarak ayarlanır. | | `CHANGELOG_BASE_REF` | _(otomatik)_ | `scripts/check/check-changelog-integrity.mjs` | CHANGELOG kaybını önleme (anti CHANGELOG-eat) kapısı için açık temel referans (CI'da varsayılan olarak PR temel dalı ya da en yüksek `release/v*` dalı). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Arka planda çalışan ücretsiz proxy havuzu otomatik senkronizasyon zamanlayıcısını etkinleştirmek için `true` olarak ayarlayın. İsteğe bağlıdır, varsayılan olarak kapalıdır. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Milisaniye cinsinden otomatik senkronizasyon aralığı (varsayılan 30 dakika). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy ücretsiz proxy kaynağını etkinleştirir. Devre dışı bırakmak için `false` olarak ayarlayın. | | `FREE_PROXY_1PROXY_API_URL` | _(bkz. oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy API URL'sini geçersiz kılar. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Senkronizasyon başına 1proxy'den getirilecek maksimum proxy sayısı. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy içe aktarımları için minimum kalite puanı eşiği. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly ücretsiz proxy kaynağını etkinleştirir. Devre dışı bırakmak için `false` olarak ayarlayın. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly senkronizasyonu başına getirilecek proxy sayısı. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly için anonimlik seviyesi filtresi (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate ücretsiz proxy kaynağını etkinleştirir. Yalnızca isteğe bağlı olarak etkinleştirilir. | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate proxy listesi temel URL geçersiz kılması. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Webshare proxy havuzu kaynağını etkinleştirir. Devre dışı bırakmak için `false` olarak ayarlayın; ayrıca `FREE_PROXY_WEBSHARE_API_KEY` değerinin ayarlanmış olması gerekir. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(none)_ | `src/lib/freeProxyProviders/webshare.ts` | Webshare hesap API anahtarı (`Authorization: Token `). Zorunludur — bu olmadan sağlayıcı devre dışı kalır. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Webshare proxy listesi API URL geçersiz kılması. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Webshare senkronizasyonu başına içe aktarılan maksimum proxy sayısı. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Proxy Pool sekmesindeki Deploy Vercel Relay düğmesini gösterir/gizler. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Vercel API temel URL'sini geçersiz kılar (test için). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Vercel Relay dağıtım modalında önceden doldurulan varsayılan proje adı. | | `TAILSCALE_BIN` | _(otomatik algılanır)_ | `src/lib/tailscaleTunnel.ts` | `tailscale` ikili dosyasının açık yolu. | | `TAILSCALED_BIN` | _(otomatik algılanır)_ | `src/lib/tailscaleTunnel.ts` | `tailscaled` arka plan programı ikili dosyasının açık yolu. | | `TAILSCALE_AUTHKEY` | _(ayarlanmamış)_ | `src/lib/tailscaleTunnel.ts` | Etkileşimsiz / headless `tailscale up` için önceden paylaşılmış Tailscale kimlik doğrulama anahtarı (`--auth-key=` ile iletilir). Ayarlanmadığında, oturum açma işlemi etkileşimli tarayıcı kimlik doğrulama URL'sine geri döner. | | `NGROK_AUTHTOKEN` | _(ayarlanmamış)_ | `src/lib/ngrokTunnel.ts` | Giden ngrok tünellerinin kimliğini doğrular. | | `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Manuel/zamanlanmış yedekleme temizliği tarafından saklanan maksimum SQLite yedekleme dosyası sayısı. Migrasyon anlık görüntüleri içerik adreslidir ve aynı veritabanı durumu için yeniden kullanılır; eşzamanlı migrasyon penceresi içinde budanmazlar. Ayarlar → Veritabanı yedekleme saklama bölümünden kaydedilen değeri geçersiz kılar. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Manuel/zamanlanmış yedekleme temizliği tarafından saklanan maksimum yaş (gün). `0` yaşa dayalı budamayı devre dışı bırakır. Migrasyon anlık görüntüleri eşzamanlı migrasyon penceresi içinde budanmaz. Ayarlar → Veritabanı yedekleme saklama bölümünden kaydedilen değeri geçersiz kılar. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | `backup-schedule.json` dosyasını yürüten sunucu tarafı işin tik aralığı (ms). 1 dakikalık cron çözünürlüğünün oldukça altında kalmalıdır; `5000` altındaki veya ayrıştırılamayan değerler `30000` değerine geri döner. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Entrypoint izin kontrolü için konteyner çalışma zamanı ipucu. Herhangi bir Podman topolojisi için `podman` olarak ayarlayın. Konteyner, motorun yerel mi olduğunu yoksa Podman Machine üzerinden mi erişildiğini belirleyemediğinden, uyarı topoloji-nötr kalır ve `contrib/podman/README.md` dosyasına işaret eder. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Kota paylaşımı tüketim deposu arka ucu: `sqlite` (varsayılan) veya `redis`. | | `QUOTA_STORE_REDIS_URL` | _(ayarlanmamış)_ | `src/lib/quota/storeFactory.ts` | `QUOTA_STORE_DRIVER=redis` olduğunda kullanılan Redis bağlantı dizesi (örn. `redis://localhost:6379`). | | `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Havuz doygunluk oranı (0..1); bu değerde veya üzerinde havuz katı moda girer (ödünç alma yok). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Yumuşak kota politikası bir hedefi önceliksizleştirdiğinde o hedefe uygulanan puan çarpanı (0..1). | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Ön kontrol kota kesimi KAPALI olduğunda (#4540), otomatik kombo puanlamasında tükenmiş bir sağlayıcıya (`credits_exhausted`/`rate_limited`) uygulanan puan çarpanı (0..1). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | GC'den (`gcQuotaConsumption`) önce `quota_consumption` grupları için saklama penceresi (gün). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | İsteğe bağlı (varsayılan KAPALI): puanlamadan önce düşük kotalı adayları eleyen otomatik yönlendirme kesin kota kesimini etkinleştirir. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | İsteğe bağlı (varsayılan KAPALI): bir `auto/:` filtresi bağlı hiçbir adayla eşleşmediğinde, boş bir havuz döndürmek yerine tam (filtresiz) havuza geri dönme eski davranışını geri yükler. Varsayılan KAPALI olması, `:free` ifadesinin "yalnızca ücretsiz katman" anlamına gelmesini sağlar. | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | `auto/*:chaos` yayın varyantı için panel boyutu üst sınırı (1–10 arasında kırpılır) — bir istek en fazla bu kadar sayıda sağlayıcı-çeşitli modele yayılır. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(motor varsayılanı)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Kaos yayın işleyicisine iletilen minimum panel boyutu ayarı; ayarlanmadığında motor varsayılanı korunur. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(motor varsayılanı)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Tüm kaos paneli dağıtımı (fan-out) için kesin zaman aşımı (ms); ayarlanmadığında motor varsayılanı korunur. | | `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | grok-web haftalık kotasını almak için kullanılan Grok CLI `auth.json` dosyasının yolu; testler veya standart dışı bir CLI kurulumu için geçersiz kılın. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(ayarlanmadı)_ | `src/mitm/manager.ts` | AgentBridge yukarı akış (upstream) TLS bağlantıları için güvenilen ek CA sertifikası (PEM). | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Traffic Inspector halka arabelleğinde tutulan maksimum yakalanan istek sayısı. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Kesilmeden önceki maksimum yakalanan istek/yanıt gövde boyutu (KB). | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Traffic Inspector HTTP proxy'si için yerel bağlantı noktası. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Inspector HTTP proxy'sini açılışta otomatik başlat. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(ayarlanmadı)_ | `src/lib/inspector/captureState.ts` | Yakalama için LLM uç noktaları olarak kabul edilen ek ana makine adları (virgülle ayrılmış). | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Yakalanan trafikteki gizli bilgileri (kimlik doğrulama başlıkları / API anahtarları) maskele. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Sistem proxy korumasının işletim sistemi proxy ayarlarını otomatik olarak geri almasına kalan dakika süresi. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(otomatik)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Inspector'a yapılan dahili yakalama alımlarının (ingest) kimliğini doğrulayan token. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Playground karşılaştırma modunda yan yana gösterilebilecek maksimum sütun sayısı. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(ayarlanmamış)_ | `src/app/(dashboard)/dashboard/playground/` | Playground 'improve prompt' (istem iyileştir) eylemi için varsayılan model (ayarlanmadığında aktif modele geri döner). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost sidecar proxy'si için ana kapatma anahtarı. `0` olarak ayarlandığında, route `X-Bifrost-Killswitch` başlığıyla 503 döndürür ve operatör TS yoluna yönlendirilir. Sidecar'ı yeniden dağıtmadan (redeploy) devre dışı bırakmak için kullanın (tier-1 router olayı, anahtar rotasyonu). | | `BIFROST_BASE_URL` | _(ayarlanmamış)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Ayarlandığında, Bifrost sidecar proxy route'u `/v1/chat/completions` trafiğini TS relay işleyicisi yerine bu Go gateway'ine yönlendirir. Ayarlanmadığında → fallback ile 503. Sondaki eğik çizgi kaldırılır. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | OmniRoute, Bifrost sidecar yaşam döngüsünü yönettiğinde denetlenen Bifrost gömülü servisinin bağlandığı port (`127.0.0.1:`). Varsayılanı `8080`'dir. | | `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Denetlenen LLMLingua sıkıştırma servisinin bağlandığı port (`127.0.0.1:`). Varsayılanı `20135`'tir. | | `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Yerel LLMLingua HTTP sıkıştırma mikroservis daemon'u için temel URL. Varsayılanı `http://127.0.0.1:20135`'tir. | | `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | Denetlenen LLMLingua sidecar'ının yüklediği Hugging Face model kimliği (alt sürecin ortam değişkenlerine aktarılır). | | `BIFROST_API_KEY` | _(ayarlanmamış)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost gateway'i için API anahtarı (`Authorization: Bearer ...` olarak gönderilir). Ayarlanmadığında, route isteğin geçerli bir OmniRoute API anahtarı taşımasını bekler; bu anahtar yalnızca gateway tarafı kimlik doğrulaması içindir. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Etkin olduğunda, Bifrost sidecar rotası yanıtları TS akış yürütücüsü yerine ağ geçidi üzerinden SSE aracılığıyla akıtarak geri gönderir. Ağ geçidi üzerinden akışsız JSON yanıtlarını zorlamak için `0` olarak ayarlayın. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost ağ geçidine vekil (proxy) işlemi yapılırken istek başına zaman aşımı (ms). Zaman aşımında rota, `X-Bifrost-Fallback` başlığı aracılığıyla TS relay yolunu döndürür. | | `OMNIROUTE_BIFROST_KEY` | _(ayarlanmadı)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `BIFROST_API_KEY` için takma ad (ortam değişkenini `OMNIROUTE_*` üzerinden okuyan betikler tarafından kullanılır). İkisi de ayarlandığında `BIFROST_API_KEY` öncelikli olur. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `/api/v1/relay/chat/completions` için relay arka ucu: `ts \| bifrost \| auto`. `ts` = TypeScript relay'i (Bifrost yapılandırılmamışken varsayılan); `auto`, `BIFROST_BASE_URL` ayarlıysa ve `BIFROST_ENABLED` ≠ `0` ise Bifrost'u seçer; sidecar'a ulaşılamazsa otomatik olarak TS yedeğine döner; `bifrost` Bifrost'u zorlar (katı, yedek yok). Kimlik doğrulama/hız sınırlaması/enjeksiyon koruması/izin listesi her zaman önce Next rotasında çalışır. Yanıtlar `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason` başlıklarını taşır. | | `RELAY_ROUTING_BACKEND` | _(ayarlanmadı)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `OMNIROUTE_RELAY_BACKEND` için kabul edilen takma ad (aynı `ts \| bifrost \| auto` değerleri). İkisi de ayarlandığında `OMNIROUTE_RELAY_BACKEND` öncelikli olur. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | `auto` modunda bir Bifrost sidecar atlaması başarısız olduktan sonra, relay'in sidecar'ı yeniden denemeden önceki bekleme süresi (ms); bekleme süresi boyunca doğrudan TS yoluna yönlendirir, ardından tekrar yoklar. `0` devre dışı bırakır. Yalnızca `OMNIROUTE_RELAY_BACKEND=auto` olduğunda geçerlidir. | | `OMNIROUTE_TLS_CERT` | _(ayarlanmadı)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` komutunu HTTPS üzerinden sunmak için bir PEM TLS sertifikasının yolu (`--tls-cert` ile eşdeğer). `OMNIROUTE_TLS_KEY` ile eşleştirilmelidir; bağımsız sunucu daha sonra TLS'i aynı dinleyicide sonlandırır (`wss://` değişmeden çalışır). Ayarlanmamışsa → düz HTTP. Sertifika/anahtar çiftinden yalnızca birinin sağlanması veya okunamayan bir yol, bir uyarı kaydeder ve HTTP olarak kalır. | | `OMNIROUTE_TLS_KEY` | _(ayarlanmadı)_ | `bin/cli/commands/serve.mjs` | `omniroute serve` HTTPS için PEM TLS özel anahtarının yolu (`--tls-key` ile eşdeğer). `OMNIROUTE_TLS_CERT` ile eşleştirilmelidir. Bkz. `OMNIROUTE_TLS_CERT`. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | `/api/local/*` rotaları için ana anahtar. Ayarlanmadığında veya `0` olduğunda, tüm `/api/local/*` rotaları üretimde 503 döndürür. Redis başlatıcısını ve benzer tek tıklamalı yerel hizmet başlatıcılarını etkinleştirmek için loopback dışı dağıtımlarda `1` olmalıdır. `isLocalOnlyPath()` rota koruyucusu sınıflandırmasıyla (`src/server/authz/routeGuard.ts` içindeki `LOCAL_ONLY_API_PREFIXES`) birlikte çifte güvence sağlar. | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(ayarlanmadı)_ | `src/lib/security/localEndpoints.ts` | Loopback üzerinde olmayan `/api/local/*` çağıranları (ör. masaüstü uygulaması) için Bearer belirteci. Ayarlandığında, loopback dışı IP'lerden gelen istekler `Authorization: Bearer ` taşımalıdır. Loopback dışı dağıtımlarda `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` olduğunda gereklidir. | | `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | Tek tıkla Redis başlatıcısının (`omniroute redis up`) konteyner adı. Hem CLI hem de `RedisLauncherPanel` GUI tarafından kullanılır. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | Tek tıkla Redis başlatıcısı için ana makine portu. Ana makine zaten 6379 portunu kullanıyorsa değiştirin. Konteynerin dahili portu 6379 olarak kalır. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | Tek tıkla Redis başlatıcısının yayın yaptığı ana makine arayüzü. Başlatıcı Redis'i PAROLASIZ başlatır; bu nedenle `0.0.0.0` olarak bağlamak, yerel ağınızdaki her makineye kimlik doğrulamasız bir Redis sunar — bunu yalnızca örnek üzerinde kendiniz bir parola da ayarlıyorsanız genişletin. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose'un Redis yardımcı konteynerini yayınladığı ana makine arayüzü (#9286). Compose Redis'i `requirepass` olmadan çalışır; uygulama konteynerleri ona compose ağı üzerinden (`redis:6379`) ulaşır — yayınlanan port yalnızca ana makine tarafındaki araçlar için vardır. `0.0.0.0`, kimlik doğrulamasız bir Redis'i tüm yerel ağa açar. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Compose Redis yardımcı konteyneri için ana makine portu. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | docker-compose'un uygulamanın kendi pano/API/live-WS portlarını yayınladığı ana makine arayüzü (#12568). `REQUIRE_API_KEY=false` `.env.example` varsayılanı olarak dağıtıldığından, `0.0.0.0` anonim `/v1` LLM vekilini tüm LAN/WAN'a açar — yalnızca `REQUIRE_API_KEY=true` ayarlandığında veya önündeki bir ters vekil kendi kimlik doğrulamasını uyguladığında genişletin. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose'un Qdrant bellek yardımcı konteynerini yayınladığı ana makine arayüzü (#12578). `REDIS_BIND_HOST` ile aynı LAN'a açma gerekçesi geçerlidir. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose'un Bifrost yönlendirici yardımcı konteynerini yayınladığı ana makine arayüzü (#12578). `REDIS_BIND_HOST` ile aynı LAN'a açma gerekçesi geçerlidir. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Her OmniRoute Redis anahtarına uygulanan ad alanı öneki (hız sınırlayıcı, kimlik doğrulama önbelleği, kota deposu, ısınma devre kesicisi). Redis örneği diğer uygulamalarla paylaşıldığında anahtar çakışmalarını önler (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(ayarlanmadı — mekanizma devre dışı)_ | `src/lib/api/internalServiceAuth.ts` | Kimliği koruyan dahili REST atlamaları için paylaşılan gizli anahtar (#9260): Diğer yerel OmniRoute rotalarını çağıran OmniRoute bileşenleri, orijinal çağıranın kimliği korunsun diye bunu `x-omniroute-internal-service-token` olarak gönderir. `timingSafeEqual` ile karşılaştırılır. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(ayarlanmadı)_ | `src/lib/api/internalServiceAuth.ts` | İç servis token'ının gizli dosya varyantı: kırpılmış içeriği token olan bir dosyanın yolu. Yalnızca satır içi değişken ayarlanmadığında başvurulur. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Pano sağlayıcıları listesini OpenRouter haftalık sıralama istatistikleriyle zenginleştir (#9324). Varsayılan olarak açık; arka plan çekimini tamamen atlamak için `false` olarak ayarla (engellemez, asla ölümcül değildir). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24sa) | `src/lib/catalog/openrouterProviderStats.ts` | OpenRouter sağlayıcı istatistikleri anlık görüntüsü için önbellek TTL'si, milisaniye cinsinden. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Tek tıkla Redis başlatıcısı tarafından kullanılan Redis imajı. Gerektiğinde `redis:8-alpine` veya özel bir kayıt aynası ile geçersiz kıl. | | `QDRANT_HOST` | `qdrant` | _(isteğe bağlı küme profili)_ | `--profile memory` etkinken Qdrant yardımcı konteynerinin ana makine adı. Varsayılan, ağ içi qdrant servis adına işaret eder; harici bir dağıtım için geçersiz kıl. Yalnızca kodda `qdrantEnabled` `true` olduğunda kullanılır (`src/lib/memory/vectorStore.ts:108`). | | `QDRANT_PORT` | `6333` | _(isteğe bağlı küme profili)_ | Qdrant yardımcı konteynerinin REST bağlantı noktası. | | `QDRANT_GRPC_PORT` | `6334` | _(isteğe bağlı küme profili)_ | Qdrant yardımcı konteynerinin gRPC bağlantı noktası. Akış işlemleri için REST yerine gRPC'yi tercih eden istemci kütüphaneleri tarafından kullanılır. | | `QDRANT_API_KEY` | _(ayarlanmadı)_ | _(isteğe bağlı küme profili)_ | Qdrant Cloud veya kimlik doğrulamalı şirket içi bir örnek için isteğe bağlı API anahtarı. Boş → `api-key` başlığı gönderilmez. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(isteğe bağlı küme profili)_ | OmniRoute'un konuşma belleği yerleştirmeleri için koleksiyon adı. İlk çalıştırmada `QDRANT_VECTOR_SIZE` boyutuyla oluşturulur. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(isteğe bağlı küme profili)_ | Qdrant koleksiyon meta verilerine kaydedilen varsayılan yerleştirme modeli adı. Gerçek yerleştirmeler, OmniRoute ayarlarındaki `embeddingModel` alanının işaret ettiği sağlayıcı tarafından oluşturulur. | | `QDRANT_VECTOR_SIZE` | `1536` | _(isteğe bağlı küme profili)_ | Gömme (embedding) vektör boyutu. Gömme işlemi için kullandığınız modelle eşleşmelidir (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(isteğe bağlı küme profili)_ | HNSW dizin oluşturma aşaması doğruluğu. Daha yüksek = daha yavaş oluşturma, daha hızlı arama. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Operatör tarafından yapılandırılabilir hesap rotasyonu için ana anahtar. `false` olduğunda, aşağıdaki `OMNIROUTE_ROTATE_*` sınıflarının hiçbiri hesap yedeklemesini tetiklemez (ana kapalı durumu, varsayılan olarak etkin olan 429/500/502 sınıflarını da engeller). Denetleyici bir ön yüzün (ör. VibeProxy masaüstü uygulaması) kendi rotasyon kurallarını arka ucun hesap-yedekleme motoruna yansıtmasına olanak tanır. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Yukarı akış açık bir sıfırlama ipucu vermediğinde hız sınırlı bir hesaba uygulanan bekleme süresi (saniye). `0` = sabit bir geçersiz kılma yerine motorun varsayılan bekleme süresini kullan. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Ön yüzdeki "sıfırlama zamanı olmadan hız sınırlı olarak etiketleme" tercihinin yansıması. | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | `429` hataları için durum bazlı yedekleme etkinleştirmesi. `false` olduğunda (ve `OMNIROUTE_ROTATION_ENABLED=true` iken), bir `429` artık hesap rotasyonunu tetiklemez ve bunun yerine istemciye döndürülür. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesap rotasyona uğramadan önce `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` içinde gereken `429` hatası sayısı. `1` (varsayılan) hemen rotasyon yapar ve geçmiş davranışı korur. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `429` hatalarının `OMNIROUTE_ROTATE_429_THRESHOLD` değerine doğru sayıldığı kayan pencere (saniye). | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | `5xx` sunucu hataları için durum bazlı yedekleme etkinleştirmesi (kendi sınıfına sahip olan `502` hariç). `false` olduğunda, bu hatalar artık hesap rotasyonunu tetiklemez. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesap rotasyona uğramadan önce `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` içinde gereken `5xx` hatası sayısı. `1` (varsayılan) hemen rotasyon yapar. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `5xx` hatalarının `OMNIROUTE_ROTATE_500_THRESHOLD` eşiğine doğru sayıldığı kayar pencere (saniye). | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | `502` (bad gateway) hataları için durum koduna özel geri dönüş etkinleştirmesi. `false` olduğunda, `502` hataları artık hesap rotasyonunu tetiklemez. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesap rotasyona alınmadan önce `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` penceresi içinde gereken `502` hatası sayısı. `1` (varsayılan) hemen rotasyon yapar. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `502` hatalarının `OMNIROUTE_ROTATE_502_THRESHOLD` eşiğine doğru sayıldığı kayar pencere (saniye). | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Katılıma bağlı (varsayılan KAPALI): `true` olduğunda, düz bir `400` (bad request) hatası da hesap rotasyonunu tetikler. Bu yalnızca ekleyicidir — hız sınırı/kota metni taşıyan bir `400` hatasının bu bayraktan bağımsız olarak yine de devrolmasını sağlayan, motorun mevcut davranışını asla engellemez. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Hesap rotasyona alınmadan önce `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` penceresi içinde gereken `400` hatası sayısı (yalnızca `OMNIROUTE_ROTATE_ON_400=true` olduğunda dikkate alınır). | | `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `400` hatalarının `OMNIROUTE_ROTATE_400_THRESHOLD` eşiğine doğru sayıldığı kayar pencere (saniye). | ### Claude Isınma Zamanlayıcısı Katılım sağlanmış Anthropic OAuth bağlantıları için cron tabanlı ısınma; böylece 5 saatlik hız sınırı penceresi ilk gerçek istek yerine önemsiz bir zamanlanmış istekle açılır (#8848). `OMNIROUTE_WARMUP_ENABLED` doğrulanabilir (truthy) bir değer taşımadıkça **ve** bağlantı `settings.claudeWarmup.connections` içinde işaretlenmedikçe zamanlayıcı kapalıdır; boş bir bağlantı listesi, ortam değişkeni açık olsa bile hiçbir şeyin ısıtılmayacağı anlamına gelir. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------ | --------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_WARMUP_ENABLED` | _(ayarlanmamış → kapalı)_ | `src/lib/warmupScheduler.ts` | Isınma zamanlayıcısı için ana anahtar. `1`/`true`/`yes`/`on` değerlerini kabul eder (büyük/küçük harfe duyarsız, boşlukları kırpılmış). Başka herhangi bir değer ya da ayarlanmamış olması, zamanlayıcıyı kapalı bırakır. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Isınma tetiklemesi için beş alanlı cron ifadesi; ana bilgisayar saatinden bağımsız olarak `America/Los_Angeles` (Anthropic'in sıfırlama saat dilimi) içinde değerlendirilir. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Tetikleme başına paralel olarak ısıtılan bağlantı sayısı. `1`-`10` aralığına sabitlenir; sayısal olmayan bir değer `3` değerine geri döner. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Isınma isteği için kullanılan model. Yalnızca varsayılan model planınızda mevcut değilse geçersiz kılın; pencereyi yine de açabilen en ucuz modeli seçin. | ### Tarayıcı-Girişi VNC Oturumları ve Data-Dir Takma Adı Etkileşimli tarayıcı-girişi kimlik bilgisi yakalama (`/api/vnc-session`) için kullanılan konteynerleştirilmiş Chromium+VNC, ayrıca eski bir `DATA_DIR` takma adı. Tümü isteğe bağlıdır — VNC varsayılanları, pakete dahil `omniroute-vnc-chromium:local` imajını hedefler ve yalnızca özel bir konteyner imajı, portlar veya yaşam döngüsü ayarlaması için geçersiz kılınır. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Chromium+VNC giriş konteyneri için Docker imaj etiketi. `docker/vnc-browser/chromium` dizinini derleyin veya bunu özel bir imaja yönlendirin. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC konteynerini başlatmak için kullanılan konteyner çalışma zamanı ikili dosyası (örn. `podman` olarak ayarlayın). | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Konteyner içinde açığa çıkarılan VNC/noVNC portu. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Konteyner içindeki Chrome DevTools Protocol portu. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Konteyner içindeki Chromium profil dizini yolu. | | `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Kalıcı tarayıcı-girişi profillerini tutan ana bilgisayar dizini. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 dk) | `src/lib/vncSession/manifest.ts` | Etkin olmayan bir VNC oturumu temizlenmeden önceki boşta kalma zaman aşımı (ms). | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 dk) | `src/lib/vncSession/manifest.ts` | Tek bir VNC oturumunun ömrü üzerindeki kesin üst sınır (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Eşzamanlı VNC oturumlarının maksimum sayısı. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Konteynerleştirilmiş tarayıcının CDP-hazır hale gelmesini bekleme zaman aşımı (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Giriş tamamlandıktan sonra yakalanan oturumun/çerezlerin toplanması için zaman aşımı (ms). | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Konteynerleştirilmiş Chromium'a geçirilen ek komut satırı bayrakları. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | VNC giriş konteynerinin, kardeş konteynerler CDP köprü portuna erişemesin diye varsayılan köprü yerine katıldığı özel Docker ağı (#12571). | | `VIBEPROXY_DATA_DIR` | _(ayarlanmamış)_ | `open-sse/services/notionThreadSessions.ts` | `DATA_DIR` için **eski takma ad**; yalnızca hem `DATA_DIR` hem de `OMNIROUTE_DATA_DIR` ayarlanmamışsa kontrol edilir. Notion web-thread oturum önbelleğini (`/notion-web-thread-sessions.json`) bulur. | --- ## 26. Test ve E2E Düzeneği `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`, `scripts/dev/run-ecosystem-tests.mjs` ve `scripts/build/uninstall.mjs` tarafından kullanılır. Üretim dağıtımlarında aşağıdaki tüm değerleri ayarlanmamış bırakın. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | -------------------------------------- | -------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Playwright çalıştırıcısı için E2E önyükleme modu (`auth`, `fresh`, `reuse`). | | `OMNIROUTE_E2E_PASSWORD` | `INITIAL_PASSWORD` değerine geri döner | `scripts/dev/run-next-playwright.mjs` | Playwright ortamına enjekte edilen yönetici parolası. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright çalıştırmaları sırasında yerel sağlık kontrolü (healthcheck) sorgusunu devre dışı bırakır. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Testler sırasında OAuth token sağlık kontrolü döngüsünü devre dışı bırakır. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(ayarlanmamış)_ | `src/lib/tokenHealthCheck.ts` | Proaktif token yenileme taramasının dışında tutulan, virgülle ayrılmış sağlayıcılar (örn. `codex,openai`). Sağlık kontrolünü tamamen devre dışı bırakmaya hedefli bir alternatiftir — kısa TTL'li sağlayıcılar yenilemeye devam ederken cascade sağlayıcılar yalnızca reaktif kalır. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright stdout çıktısındaki sağlık kontrolü gürültüsünü susturur. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Playwright başlamadan önce Next.js üretim derlemesini atlar (CI optimizasyonu). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | OmniRoute kaldırma kancasını (uninstall hook) atlar (CI tarafından `node_modules` dizinini bozulmadan tutmak için kullanılır). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Ekosistem/protokol testleri çalıştırılmadan önce sunucunun sağlıklı hale gelmesi için bekleme süresi (ms). | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | Electron smoke düzeneğinin, paketlenmiş uygulamanın sunmasını beklediği URL. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Smoke düzeneği pes etmeden önceki toplam zaman aşımı (ms). | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Sayfa yüklendikten sonraki oturma (settle) penceresi (ms). | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(otomatik)_ | `scripts/dev/smoke-electron-packaged.mjs` | Paketlenmiş Electron çalıştırılabilir dosyasına giden açık yol. | | `ELECTRON_SMOKE_DATA_DIR` | _(geçici dizin)_ | `scripts/dev/smoke-electron-packaged.mjs` | Electron smoke çalıştırması için veri dizini. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Çalıştırma sonrasında smoke veri dizinini korumak için `1` olarak ayarlayın. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Çalıştırma sırasında Electron günlüklerini stdout'a aktarmak için `1` olarak ayarlayın. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: aynı veri dizinine karşı yeniden başlatır ve ikinci başlatmanın yerel SQLite sürücüsünü seçtiğini doğrular. | | `CLI_DEVIN_BIN` | _(PATH araması)_ | `open-sse/executors/devin-cli.ts` | Devin CLI ikili dosya yolunu geçersiz kılar. | ### Doküman çeviri hattı `scripts/i18n/run-translation.mjs` tarafından kullanılır (`npm run i18n:run` komutu). Altı değişkenin tamamı varsayılan olarak ayarlanmamıştır — bunları `.env` içinde yalnızca doküman çevirmenini çalıştırabilmesi gereken makinelerde ayarlayın. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------------------- | ---------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(ayarlanmamış)_ | `scripts/i18n/run-translation.mjs` | Çeviri arka ucu için OpenAI uyumlu temel URL. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(ayarlanmamış)_ | `scripts/i18n/run-translation.mjs` | Çeviri arka ucu için Bearer token'ı (asla günlüğe kaydedilmez). | | `OMNIROUTE_TRANSLATION_MODEL` | _(ayarlanmamış)_ | `scripts/i18n/run-translation.mjs` | Model kimliği, örn. `gpt-4o-mini` veya `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_FALLBACK_MODELS` | _(ayarlanmamış)_ | `scripts/i18n/lib/translate-backend.mjs` | Birincil model başarısız olduğunda (429 kota, 401/402, 5xx, zaman aşımı, ağ) sırayla denenen isteğe bağlı, virgülle ayrılmış model zinciri; hatalı biçimlendirilmiş bir istek (400/413/422) başka bir yerde yeniden denenmez. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | İstek başına milisaniye cinsinden zaman aşımı. | | `OMNIROUTE_TRANSLATION_REASONING_EFFORT` | _(ayarlanmamış)_ | `scripts/i18n/lib/translate-backend.mjs` | İsteğe bağlı akıl yürütme denetimi; ayarlandığında arka uca olduğu gibi gönderilir. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Birden fazla dosya / yerel ayar üzerinde çalışırken yapılan paralel çeviri istekleri. | --- ## 27. Radar Akışı (Kendi Sunucunuzda Barındırma) RADAR_ENABLED özellik bayrağıyla etkinleştirilen isteğe bağlı eklenti (varsayılan olarak kapalıdır — bu bir ortam değişkeni değil, Ayarlar/DB aracılığıyla değiştirilen bir özellik bayrağıdır; bkz. [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)). Aşağıdaki ilk dört değişken, kendi sunucunuzda barındırılan veya çatallanmış bir akış ve destekçi anahtarı akışları için isteğe bağlı geçersiz kılmalardır. Beşinci değişken olan `RADAR_ADMIN_URL`, sahibin özel operasyon paneline yönlendiren, ayrı ve varsayılan değeri olmayan bir bağlantıdır. Modülün tüm belgeleri ve [uçtan uca etkinleştirme ve yönlendirmeli kurulum sırası](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup) için [docs/frameworks/RADAR.md](../frameworks/RADAR.md) sayfasına bakın. Genel Ana Sayfa/Değişiklik Günlüğü duyuru okuyucusu bir ortam değişkeniyle yapılandırılmaz ve RADAR_ENABLED özellik bayrağına bağlı değildir. Yalnızca GET kullanarak `src/shared/utils/releaseNotes.ts` içinde bildirilen herkese açık depo `news.json` URL'sini okur; kapatma kimlikleri tarayıcının yerel depolama alanında kalır. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | Ayrı ayrı imzalanmış katalog, yönlendirmeler, destekçi teklifleri ve Intel akışları tarafından paylaşılan temel URL. Kendi sunucunuzda barındırılan veya çatallanmış bir hizmete yönlendirmek için geçersiz kılın. | | `RADAR_FEED_PUBKEY` | _(sabitlenmiş varsayılan anahtar)_ | `src/lib/radar/pinnedKeys.ts` | Özel bir akıştan gelen akış imzalarını doğrulamak için kullanılan Ed25519 açık anahtarı (base64-DER SPKI veya PEM). | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | "Katkıda bulunanlardan biriyim" pano düğmesinin açtığı URL (GitHub OAuth destekçi anahtarı talep akışı). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | "Projeyi destekle" pano düğmesinin açtığı URL (ödeme/planlar sayfası). | | `RADAR_ADMIN_URL` | _(ayarlanmamış)_ | `src/lib/radar/links.ts` | Yalnızca sahibin kullanabildiği özel operasyon paneli bağlantısı. HTTP geri döngü SSH yönlendirmesi dışında HTTPS gereklidir; ayarlanmamış veya geçersiz değerler herhangi bir gezinme öğesi oluşturmaz. | --- ## Denetim: Kaldırılmış / Kullanılmayan Değişkenler Aşağıdaki değişkenler `.env.example` dosyasının önceki sürümlerinde yer alıyordu ancak mevcut kod tabanında **hiçbir çalışma zamanı referansına sahip değildir**. Bunlar kaldırılmıştır: | Değişken | Neden | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `STORAGE_DRIVER=sqlite` | Hiçbir kaynak dosya tarafından okunmuyor. Desteklenen tek sürücü SQLite olduğundan seçim yapılması gerekmiyor. | | `INSTANCE_NAME=omniroute` | Eski dokümanlarda/ortam şablonlarında mevcut ancak çalışma zamanında kullanılmıyor. Gelecekteki bir çoklu örnek özelliğinde geri dönebilir. | | `SQLITE_MAX_SIZE_MB=2048` | Kaynak kodda referans verilmiyor. Veritabanı boyutu yapay olarak sınırlandırılmıyor. | | `SQLITE_CLEAN_LEGACY_FILES=true` | Kaynak kodda referans verilmiyor. Eski dosya temizleme işlevi muhtemelen kaldırılmış. | | `CLI_ROO_BIN` | `src/shared/services/cliRuntime.ts` içinde kayıtlı değil. | | `CLI_KIMI_CODING_BIN` | `src/shared/services/cliRuntime.ts` içinde kayıtlı değil (Kimi Coding, CLI ikili dosyası değil OAuth kullanır). | | `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Kaynak kodun hiçbir yerinde referans verilmiyor. | | `CEREBRAS_API_KEY` / `COHERE_API_KEY` / `FIREWORKS_API_KEY` / `GROQ_API_KEY` / `MISTRAL_API_KEY` / `NEBIUS_API_KEY` / `PERPLEXITY_API_KEY` / `TOGETHER_API_KEY` / `XAI_API_KEY` | v3.8.0'da kaldırıldı. Çalışma zamanı artık bu ortam değişkenlerini okumuyor; kimlik bilgileri Dashboard / `data/provider-credentials.json` / şifrelenmiş veritabanından gelir. | | `CURSOR_PROTOBUF_DEBUG` | v3.8.0'da kaldırıldı. Cursor yürütücüsü `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` kullanır (bkz. §22). | | `CLI_COMPAT_KIRO` | v3.8.0'da kaldırıldı. Kiro, `CLI_COMPAT_OMITTED_PROVIDER_IDS` içinde yer alır; bu nedenle anahtarının hiçbir etkisi yoktur. | | `QIANFAN_API_KEY` | v3.8.0'da kullanılmayan diğer sağlayıcı API anahtarı taslaklarıyla birlikte kaldırıldı. | ### Varsayılan Değer Düzeltmeleri | Değişken | Eski `.env.example` Değeri | Koddaki Gerçek Varsayılan | Düzeltme | | ------------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------- | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Yanıltıcı değer kaldırıldı; varsayılan olarak `7` belgelendi | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Yanıltıcı değer kaldırıldı; varsayılan olarak `7` belgelendi | ### OpenCode yapılandırmasını yeniden oluşturma (geçici araçlar) Çalışan OmniRoute örneğinden alınan doğru `limit.context` ve `limit.output` değerleriyle bir `opencode.json` dosyasını yeniden oluşturmak için `scripts/ad-hoc/regen-opencode-config.ts` tarafından kullanılır. Bunların hiçbiri normal çalışma için gerekli değildir; betik yalnızca geliştirici aracıdır. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------ | ------------------------ | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | `/v1/models` sorgusu için kullanılacak OmniRoute örneğinin temel URL'si. | | `OMNIROUTE_KEY` | _(ayarlanmamış)_ | `scripts/ad-hoc/regen-opencode-config.ts` | OmniRoute `/v1/models` uç noktasında kimlik doğrulaması için API anahtarı. Ayarlanmamışsa `OPENCODE_API_KEY` kullanılır. | | `OPENCODE_API_KEY` | _(ayarlanmamış)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Yeniden oluşturulan `opencode.json` dosyasına yazılan OpenCode tarzı API anahtarı (`sk-...`). Ayarlanmamışsa `OMNIROUTE_KEY` kullanılır. | ### Sıkıştırma çevrimdışı değerlendirme düzeneği (geçici araçlar) Çevrimdışı sıkıştırma değerlendirme CLI'sı olan `scripts/compression-eval/index.ts` tarafından kullanılır. Normal çalışma için gerekli değildir — yalnızca geliştirici araçları içindir. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------- | ---------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (boş) | `scripts/compression-eval/index.ts` | Çevrimdışı sıkıştırma değerlendirme CLI'sı tarafından kullanılan sağlayıcı için operatörün sağladığı JSON kimlik bilgileri (`JSON.parse` ile ayrıştırılır). Deneme çalıştırması için ayarlamadan bırakın. | ### VNC Tarayıcı Oturumları Tarayıcı otomasyonu sağlayıcıları için Docker tabanlı başsız Chromium oturumlarını yapılandırmak üzere `src/lib/vncSession/manifest.ts` tarafından kullanılır. Tümü isteğe bağlıdır — varsayılanlar aşağıda gösterilmiştir. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------- | ------------------------------ | ------------------------------------------- | --------------------------------------------------------------------------- | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC konteynerlerini başlatmak için kullanılan Docker ikili dosyasının yolu. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | VNC Chromium konteyneri için Docker imajı. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(yerleşik bayraklar)_ | `src/lib/vncSession/manifest.ts` | Konteyner içindeki tarayıcıya iletilen ek Chromium CLI argümanları. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Konteyner içindeki VNC bağlantı noktası. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Konteyner içindeki Chrome DevTools Protocol bağlantı noktası. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Konteyner içindeki profil dizini. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(ayarlanmamış)_ | `src/lib/vncSession/manifest.ts` | Kalıcı tarayıcı profilleri için ana makine tarafındaki dizin. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | Bir VNC oturumunun sonlandırılmasından önceki boşta kalma zaman aşımı (ms). | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Maksimum oturum süresi (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Maksimum eşzamanlı VNC oturumu sayısı. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Tarayıcının hazır olma zaman aşımı (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Sonlandırma/temizleme zaman aşımı (ms). | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Konteynerin katıldığı, varsayılan köprüden ayrı özel Docker ağı (#12571). | | `VIBEPROXY_DATA_DIR` | _(ayarlanmamış)_ | `open-sse/services/notionThreadSessions.ts` | Notion iş parçacığı oturumlarının kalıcı olarak saklanacağı dizin. | ### Dahili hizmet kimlik doğrulaması | Değişken | Varsayılan | Açıklama | | --------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Yönetim düzlemi hizmetler arası kimlik doğrulaması için satır içi belirteç. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Dahili hizmet belirtecini içeren dosyanın yolu (konteynerlerde tercih edilir; satır içi değişkeni geçersiz kılar). | ### OpenRouter sağlayıcı istatistikleri | Değişken | Varsayılan | Açıklama | | ----------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Katalog zenginleştirmesi için sağlayıcı başına OpenRouter istatistiklerinin alınmasını atlamak üzere `false` olarak ayarlayın. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | Alınan OpenRouter sağlayıcı istatistiklerinin önbellek TTL'si (ms). | ### Gömülü Redis bağlaması | Değişken | Varsayılan | Açıklama | | --------------------------- | ----------- | ---------------------------------------------------------------------------- | | `REDIS_BIND_HOST` | `127.0.0.1` | Yerleşik Redis hizmetinin bağlama adresi. | | `REDIS_PORT` | `6379` | Yerleşik Redis hizmetinin bağlantı noktası. | | `OMNIROUTE_REDIS_BIND_HOST` | – | Yerleşik Redis bağlama adresi için OmniRoute kapsamlı geçersiz kılma değeri. | --- ## 24. v3.8.50 sürümüyle eklenenler Bu ayarlar, önceki ortam sözleşmesi anlık görüntüsünden sonra eklendi. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Yeniden denenebilir bir `503` dönülmeden önce ağır bir sohbet kabul yuvası için maksimum bekleme süresi; kısa ve sınırlı bir bekleme, anında `503` vermek yerine aracı patlamalarını sıraya dizer. `0` anında reddi geri getirir. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Kabul beklemesi için kuyruğa alınan bayt bütçesi: beklemenin yığını şişirmemesi için işlem genelinde bekletilen toplam ara bellekteki gövde baytlarını sınırlar (#4380). Bütçeyi aşan beklemeler anında yeniden denenebilir bir `503` alır. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 sn) | `src/shared/middleware/chatBodyAdmission.ts` | #10110'dan beri kullanımdan kaldırılmış etkisiz ayar: oturum başına kabul şeritleri, tek bir işlem genelinde bütçe lehine kaldırıldı. Yapılandırma uyumluluğu için kabul edilir; yok sayılır. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | #10110'dan beri kullanımdan kaldırılmış etkisiz ayar: oturum başına kabul şeritleri, tek bir işlem genelinde bütçe lehine kaldırıldı. Yapılandırma uyumluluğu için kabul edilir; yok sayılır. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (kapalı) | `open-sse/services/admission/runtime.ts` | Uyarlanabilir çalışma zamanı sanal kabul şeritleri (#9654): kiracı başına uyarlanabilir kapının ana anahtarı (sistem 2). Yukarıdaki kullanımdan kaldırılmış bağlantı başına şerit değişkenlerinden farklıdır (TTL_MS / MAX_SESSIONS, #10110'dan beri etkisiz). Aynı ada sahip pano özellik bayrağı; ortam değişkeni pano geçersiz kılmasına baskın gelir; yeniden başlatma gerektirir. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Bir run-now çağrısının, kuyruğa alınmış çalıştırmayı başlatmadan önce devam eden bir işi ne kadar süre bekleyeceğini sınırlar. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | etkin | `open-sse/services/adobeFireflySession.ts` | Hesap kapsamlı Chrome CDP oturumları aracılığıyla IMS ve tarayıcı risk durumunu güncel tutar; devre dışı bırakmak için `0` ayarlayın. | | `ADOBE_FIREFLY_SESSION_DISK` | etkin | `open-sse/services/adobeFireflySession.ts` | Onarılan Adobe oturumlarını `DATA_DIR` altında kalıcı hale getirir; yalnızca bellek içi durum için `0` ayarlayın. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly oluşturma gönderimleri arasındaki minimum aralık. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Her üçüncü başarılı Adobe gönderiminden sonraki ekstra sessizlik süresi. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Yalnızca hata ayıklamaya yönelik gerçek başsız mod; Adobe colligo normalde ortaya çıkan risk oturumunu reddeder. | | `CHROME_PATH` | otomatik algılama | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Platform otomatik algılaması yetersiz kaldığında tarayıcı tabanlı yürütücüler tarafından kullanılan isteğe bağlı mutlak Chrome yürütülebilir dosyası yolu. | | `TELEGRAM_BOT_TOKEN` | _(ayarlanmamış)_ | `src/lib/telegram/config.ts` | Gelen webhook'u etkinleştiren ve Mini App `initData` verisini imzalayan BotFather belirteci. | | `TELEGRAM_WEBHOOK_SECRET` | _(ayarlanmamış)_ | `src/lib/telegram/config.ts` | `setWebhook` aracılığıyla kaydedilen ve her webhook teslimatında `X-Telegram-Bot-Api-Secret-Token` başlığına karşı doğrulanan paylaşılan gizli değer. Webhook yolu için gereklidir; ayarlanmamışsa webhook teslimatları 503 ile reddedilir. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Telegram sohbet yanıtları için kullanılan model. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Vekil sunucular veya kendi barındırılan Bot API sunucuları için Bot API temel URL geçersiz kılması. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Giden Bot API çağrıları için milisaniye cinsinden zaman aşımı. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (etkin) | `scripts/build/optionalPackStaging.mjs` | Electron bağımsız ağacı için isteğe bağlı ML/tarayıcı paketleri hazırlanırken `.tar.gz` arşivlerinin üretilmesini atlamak için `0` ayarlayın (paket dizinleri ve `optional-packs.index.json` yine de üretilir). Artefakt yükleme boyutunu küçültmek için masaüstü sürüm iş akışı tarafından kullanılır. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | xAI abonelik görüntü rotalarının kaydını etkinleştirir; API anahtarı görüntü yolunun değişmeden kalması için varsayılan olarak devre dışıdır. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Bir `429` yanıtında kullanılabilir `Retry-After` ipucu olmadığında anahtar başına milisaniye cinsinden bekleme süresi. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | etkin | `open-sse/services/estimatorCalibration.ts` | Bellek içi tahminci kalibrasyon kaydını ve uygulamasını devre dışı bırakmak için `off`, `0` veya `false` olarak ayarlayın. | | `NEXT_MANUAL_SIG_HANDLE` | _(dahili)_ | `scripts/dev/standalone-server-ws.mjs` | Dahili bağımsız sunucu sinyal işleyici geçersiz kılması; normalde operatörler tarafından yapılandırılmak yerine başlatıcı tarafından ayarlanır ve temizlenir. | ### ChatGPT Web (Codex) Başsız tarayıcı ve giden araç tüneli için genel varsayılanlar. Panoda ayarlanan bağlantı değerleri önceliklidir. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(otomatik algıla)_ | `open-sse/executors/chatgpt-web-codex.ts` | npm, systemd ve PM2 çalıştırması için açık Chrome/Chromium yolu. | | `CHROME_PATH` | _(otomatik algıla)_ | `open-sse/executors/chatgpt-web-codex.ts` | Açık bir Chrome/Chromium yolu için ortak yedek. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(ayarlanmamış)_ | `open-sse/executors/chatgpt-web-codex.ts` | Dahili CDP uç noktası; Docker, `9223` portundaki sidecar'ı kullanır. | | `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _(ayarlanmamış — kapalı)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | Harici olarak yönetilen, oturum açılmış tarayıcı profilinin mevcut ChatGPT sayfasını, tur başına yalıtılmış bir bağlam yerine yeniden kullanmak için `1` olarak ayarlayın (yapılandırılmış bir CDP uç noktası ile); ayrıca eşzamanlı ChatGPT sekmelerini 1 ile sınırlar. Varsayılan olarak kapalıdır. Bkz. [kalıcı CDP profili](../guides/CHATGPT-WEB-PERSISTENT-CDP.md). | | `CDP_PROXY_TOKEN` | _(ayarlanmamış)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Ayarlandığında, CDP proxy sidecar'ına yapılan her istek bu değeri `X-Omni-Cdp-Token` başlığında göndermelidir (#13679). Değer olmadan proxy kimlik doğrulaması olmadan iletir — bu durumda yalnızca `chatgpt-web-codex-net` Compose ağının ağ yalıtımı koruma sağlar. `openssl rand -hex 32` ile oluşturun. | | `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(ayarlanmamış)_ | `open-sse/executors/chatgpt-web-codex.ts` | Yerel Codex araç turları için global OpenAI tünel kimliği. | | `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(ayarlanmamış)_ | `open-sse/executors/chatgpt-web-codex.ts` | Global tünel çalışma zamanı anahtarı; asla günlüklere yazdırmayın. | | `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | MCP köprüsü için yeni oluşturulan ChatGPT özel bağlayıcısının tam adı. | | `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Tarayıcı, aracı (broker) ve tünel durumu için ayrılmış dizin. | | `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | `1` olduğunda her kontrol noktasında tarayıcı tanılama görüntüleri yakalanır. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(ayarlanmamış)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Kalıcı bir başlatıcı ikili dosyasına giden isteğe bağlı mutlak yol. | | `CODEX_CHATGPT_WEB_BUN` | _(otomatik algıla)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Bun çalışma zamanı ikili dosyasına giden isteğe bağlı mutlak yol. | | `CODEX_WEB_GPT_BUN` | _(ayarlanmamış)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | `CODEX_CHATGPT_WEB_BUN` için eski yedek; yeni kurulumlar standart adı kullanır. | --- ## OmniConductor Köprüsü OmniConductor hub görevlerini yerel A2A TaskManager'a (`src/lib/conductor/`) yansıtan uzun ömürlü SSE tüketicisi. İsteğe bağlıdır — köprü yalnızca `CONDUCTOR_HUB_URL` ayarlandığında başlar. Yalnızca sunucu tarafında çalışır: hub token'ı asla tarayıcıya ulaşmamalıdır. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ------------------------------ | ----------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(boş)_ | `src/lib/conductor/boot.ts` | OmniConductor hub'ının temel URL'si (örn. `http://127.0.0.1:7910`). Ayarlanmamış = köprü devre dışı. | | `CONDUCTOR_HUB_TOKEN` | _(boş)_ | `src/lib/conductor/boot.ts` | SSE akışı için hub kimlik bilgisi — hub üzerinde `spokesperson` türünde bir peer oluşturun (`POST /v1/peers`, admin). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(boş)_ | `src/lib/conductor/hubProxy.ts` | Gelen A2A→hub görev devri için kimlik bilgisi (`POST /v1/tasks`); ayarlanmadığında `CONDUCTOR_HUB_TOKEN` değerine geri döner. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Panel sohbet vekil sunucusunun (`/api/conductor/ask`) arkasındaki spokesperson (Faro) hizmetinin temel URL'si. | ### Kota duyarlı planlama İstek öncesi token bütçesi kontrolleri için `open-sse/services/combo.ts` ve `src/lib/quota/quotaScheduler.ts` tarafından kullanılır. İsteğe bağlıdır — ayarlanmadığında varsayılan yönlendirme davranışı değişmez. | Değişken | Varsayılan | Kaynak Dosya | Açıklama | | ---------------------------------- | ---------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | `1` olduğunda, gönderim öncesinde pencere başına token bütçesi (`rateLimitOverrides.tpm`, `provider_quota_state` tablosu) tahmini istek maliyetini karşılayamayan bağlantıları atlar. Bütçe yapılandırılmadığında fail-open davranır (isteği engellemez). | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(açık)_ | `open-sse/services/estimatorCalibration.ts` | Bağlam koruması token tahmincisinin geri bildirim kalibrasyonu (#14931): (sağlayıcı, model, araçların varlığı) başına `usage.prompt_tokens` / tahmin oranının EMA'sı (üstel hareketli ortalama), 0.15–2.0 aralığına sınırlandırılmış, yalnızca bellekte tutulur. `off`, `0` veya `false` kaydı ve uygulamayı devre dışı bırakır. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | `xai-oauth` (`xao`) ve `grok-cli` görsel rotalarını kaydeder. Aynı ada sahip panel özellik bayrağı; bir DB geçersiz kılması bu değerin önüne geçer. |