Files
OmniRoute/docs/i18n/bn/docs/reference/ENVIRONMENT.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

734 KiB
Raw Blame History

Environment Variables Reference (বাংলা)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


OmniRoute দ্বারা স্বীকৃত প্রতিটি environment variable-এর সম্পূর্ণ রেফারেন্স। দ্রুত শুরু করার template-এর জন্য .env.example দেখুন।

Important

এখানে নথিভুক্ত প্রতিটি variable অবশ্যই .env.example-এ থাকতে হবে, এবং .env.example-এর প্রতিটি variable অবশ্যই এখানে থাকতে হবে। commit করার সময় এবং CI-তে npm run check:env-doc-sync এটি প্রয়োগ করে। ইচ্ছাকৃতভাবে কোনো variable বাদ দিতে হলে, সেটিকে scripts/check/check-env-doc-sync.mjs-এর allowlist-এ যোগ করুন।


সূচিপত্র


1. আবশ্যিক Secret

প্রথমবার চালানোর আগে এগুলো অবশ্যই সেট করতে হবে। এগুলো ছাড়া application হয় চালু হতে অস্বীকৃতি জানাবে, নয়তো অনিরাপদ default দিয়ে কাজ করবে।

ভেরিয়েবল আবশ্যক ডিফল্ট সোর্স ফাইল বিবরণ
JWT_SECRET হ্যাঁ (কোনোটিই নয়) src/lib/auth সব ড্যাশবোর্ড সেশন কুকি (JWT) স্বাক্ষর/যাচাই করে। openssl rand -base64 48 দিয়ে তৈরি করুন।
API_KEY_SECRET হ্যাঁ (কোনোটিই নয়) src/lib/db/apiKeys.ts SQLite-এ সংরক্ষিত API কী-এর মানগুলোর জন্য AES এনক্রিপশন কী। openssl rand -hex 32 দিয়ে তৈরি করুন।
INITIAL_PASSWORD হ্যাঁ CHANGEME বুটস্ট্র্যাপ স্ক্রিপ্ট প্রাথমিক অ্যাডমিন ড্যাশবোর্ড পাসওয়ার্ড নির্ধারণ করে (.env.example-এর ডিফল্টের সঙ্গে মেলে—পরিবর্তন করতে বাধ্য করার জন্য ইচ্ছাকৃতভাবে স্পষ্টতই অনিরাপদ রাখা হয়েছে)। প্রথমবার ব্যবহারের আগে পরিবর্তন করুন। লগইন করার পর Dashboard → Settings → Security থেকে পরিবর্তন করুন।
OMNIROUTE_WS_BRIDGE_SECRET হ্যাঁ (প্রোডাকশন) (সেট করা নেই) src/app/api/internal/codex-responses-ws/route.ts অভ্যন্তরীণ Codex Responses WebSocket ব্রিজের জন্য শেয়ার্ড সিক্রেট। Electron/ব্রাউজার WS রিলে ও OmniRoute-এর মধ্যকার ব্রিজ অনুরোধগুলো প্রমাণীকরণ করে। ⚠️ প্রোডাকশনে আবশ্যক—এটি সেট করা না থাকলে সব WS ব্রিজ অনুরোধ প্রত্যাখ্যাত হয়। openssl rand -base64 32 দিয়ে তৈরি করুন।
OMNIROUTE_SW_BUILD_ID না (git SHA) next.config.mjs, scripts/build/assembleStandalone.mjs PWA শেলের (#11779) জন্য সুস্পষ্ট সার্ভিস-ওয়ার্কার ক্যাশ-বস্টিং আইডি; রেজোলিউশন চেইনে প্রথম।
SOURCE_VERSION না (সেট করা নেই) next.config.mjs, scripts/build/assembleStandalone.mjs চেইনে দ্বিতীয়—ডিপ্লয় করা কমিট হিসেবে PaaS বিল্ডারগুলো (যেমন Heroku-ধাঁচের) এটি সেট করে।
NEXT_PUBLIC_SW_BUILD_ID না (উদ্ভূত) src/shared/components/PwaRegister.tsx বিল্ড-টাইমের পাবলিক মান, যা ক্লায়েন্ট /sw.js?v=… নিবন্ধনের জন্য ব্যবহার করে; উপরের দুটি থেকে এবং এরপর git SHA থেকে উদ্ভূত।
OMNIROUTE_PEER_STAMP_TOKEN না (স্বয়ংক্রিয়) (প্রতি বুটে স্বয়ংক্রিয়) src/server/authz/policies/management.ts প্রতি-প্রসেস সিক্রেট, যা প্রমাণ করে যে বিশ্বস্ত পিয়ার-IP স্ট্যাম্পটি OmniRoute-এর নিজস্ব HTTP সার্ভার (scripts/dev/peer-stamp.mjs) থেকে এসেছে। স্ট্যাম্পে এই টোকেন থাকলেই শুধু authz মিডলওয়্যার অনুরোধের স্থানীয়তা (LOCAL_ONLY রুটের লুপব্যাক/LAN গেটিং) বিশ্বাস করে। প্রতি বুটে স্বয়ংক্রিয়ভাবে তৈরি হয়—সেট না করাই শ্রেয়; কেবল সেই মাল্টি-প্রসেস সেটআপগুলোর জন্য এটি নির্দিষ্ট করে দিন, যেগুলোকে স্ট্যাম্পটি শেয়ার করতে হবে।

তৈরির কমান্ডসমূহ

# চারটি সিক্রেটই একসঙ্গে তৈরি করুন:
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

প্রকৃত সিক্রেটসহ .env ফাইল কখনোই ভার্সন কন্ট্রোলে কমিট করবেন না। .gitignore ইতিমধ্যেই .env বাদ দেয়, তবে পুশ করার আগে যাচাই করুন।


2. স্টোরেজ ও ডেটাবেস

OmniRoute সব ধরনের স্থায়ী ডেটা সংরক্ষণের জন্য SQLite (better-sqlite3-এর মাধ্যমে) ব্যবহার করে। এই ভেরিয়েবলগুলো ডেটার অবস্থান, এনক্রিপশন এবং জীবনচক্র নিয়ন্ত্রণ করে।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
DATA_DIR ~/.omniroute/ src/lib/db/core.ts SQLite DB, ব্যাকআপ এবং ডেটা ফাইলের রুট ডিরেক্টরি। Docker ভলিউম বা কাস্টম পাথের জন্য এটি ওভাররাইড করুন।
OMNIROUTE_ALLOW_DEFAULT_DATA_DIR (সেট করা নেই) src/lib/dataPaths.ts টেস্ট/eval-এর DATA_DIR সুরক্ষাব্যবস্থার জন্য বিকল্প পথ (#10428)। DATA_DIR ছাড়া চালানো টেস্ট এবং Node eval/print প্রোবগুলোকে (-e/--eval/-p/--print, যার মধ্যে --eval=/--print= ফর্মও অন্তর্ভুক্ত) একটি অস্থায়ী পরিত্যাজ্য ডিরেক্টরিতে পুনর্নির্দেশ করা হয়, যাতে সেগুলো অপারেটরের প্রকৃত ডেটাবেস খুলতে না পারে; প্রকৃত ডিরেক্টরি ব্যবহারে আবার সম্মতি দিতে এটিকে 1-এ সেট করুন।
OMNIROUTE_BUILD_SHA (সেট করা নেই) src/lib/monitoring/buildSha.ts চলমান আর্টিফ্যাক্টের Git SHA। npm run build:release দ্বারা স্ট্যাম্প করা হয়; dist/BUILD_SHA সেন্টিনেল ছাড়াই সরবরাহ করা কনটেইনারে এটি ইনজেক্ট করা যায়। /api/monitoring/health-এ system.buildSha হিসেবে প্রকাশ করা হয়।
OMNIROUTE_RELEASE_REF origin/main scripts/build/buildProvenance.ts pack-artifact provenance gate যে ref-এর বিপরীতে build SHA যাচাই করে (#10427)।
OMNIROUTE_ALLOW_CANARY_BUILD (সেট করা নেই) scripts/build/buildProvenance.ts যে বিল্ডের SHA release line-এ নেই, সেটিকে প্যাক করার অনুমতি দিতে এটি 1-এ সেট করুন; এতে gate ব্যর্থ হওয়ার পরিবর্তে বিল্ডটিকে ইচ্ছাকৃত canary হিসেবে রেকর্ড করা হবে (#10427)।
OMNIROUTE_SMOKE_API_KEY (সেট করা নেই) scripts/ops/deploy-canary.mjs canary-deploy smoke probe-এর API key, যা /v1/chat/completions-এ Authorization: Bearer হিসেবে পাঠানো হয়। এটি শুধু deploy script ব্যবহার করে (#10429), server কখনোই করে না। এটি opt-in CLI smoke harness-এর OMNIROUTE_SMOKE_* ভেরিয়েবলগুলোর সঙ্গে সম্পর্কিত নয় (RUN_CLI_SMOKE=1, tests/integration/upstream-cli-smoke.int.test.ts-এ OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS) — CLI ইন্টিগ্রেশন → প্রকৃত smoke sweep দেখুন।
OMNIROUTE_BUILDING (সেট করা নেই) src/lib/buildPhase.ts বিল্ড-পর্যায়ের সংকেত (#10060): scripts/build/build-next-isolated.mjs এটিকে 1-এ সেট করে এবং উৎপন্ন প্রতিটি build worker এটি উত্তরাধিকারসূত্রে পায়, যাতে DB layer নেটিভ better-sqlite3 addon লোড করার পরিবর্তে একটি no-op stub ফেরত দেয় (যা প্রস্থানকালে worker-কে abort করে)। চলমান server-এর জন্য এটি কখনো সেট করা হয় না।
OMNIROUTE_SKIP_NATIVE_DEP_CHECK 0 scripts/check/check-native-deps.mjs অস্বাভাবিক vendored tree-এর জন্য ঐচ্ছিক native-dependency prebuild check এড়িয়ে যেতে এটি 1-এ সেট করুন। এটি কোনো অনুপস্থিত dependency-কে buildযোগ্য করে না; কেবল তখনই ব্যবহার করুন, যখন native dependency আলাদাভাবে সরবরাহ করা হয়।
OMNIROUTE_DATA_DIR (সেট করা নেই) open-sse/executors/promptql/threadSticky.ts DATA_DIR-এর fallback alias, যা কেবল DATA_DIR সেট করা না থাকলে পরীক্ষা করা হয়। PromptQL executor-এর on-disk thread-sticky session cache (<dir>/promptql-thread-sessions.json) খুঁজে পেতে ব্যবহৃত হয়; কোনো ভেরিয়েবলই সেট করা না থাকলে cache শুধু in-memory থাকে (restart-এর পর সংরক্ষিত থাকে না)।
OMNIROUTE_PLUGINS_DIR (সেট করা নেই) src/lib/plugins/scanner.ts runtime plugin scanner যে ডিরেক্টরি পড়ে—এবং plugin manager যে root-এ ইনস্টল করে—সেটি নির্ধারণ করে, ফলে home থেকে নির্ধারিত default ওভাররাইড হয় (#11827)। শুধু scan path সরানোর জন্য HOME পরিবর্তন না করে Docker/K8s-এ bind-mount করা plugin tree-এর দিকে এটি নির্দেশ করুন (HOME অন্যান্য সব home-relative আচরণও নিয়ন্ত্রণ করে)। সেট না থাকলে = ~/.omniroute/plugins, অথবা process কোনো home export না করলে /tmp/.omniroute/plugins—এই ভেরিয়েবলটি এমন নীরব non-discovery দূর করে। নির্ধারিত ডিরেক্টরিটি startup-এর সময় একবার scanner.dir_resolved হিসেবে এবং যে input-টি নির্বাচিত হয়েছে সেটিসহ log করা হয়। শুধু server-side-এর জন্য: CLI command plugin নিজস্ব OMNIROUTE_PLUGIN_PATH ব্যবহার করে (অনুচ্ছেদ 9)।
STORAGE_ENCRYPTION_KEY (খালি = নিষ্ক্রিয়) src/lib/db/encryption.ts সংরক্ষিত অবস্থায় সম্পূর্ণ SQLite ডেটাবেস এনক্রিপশনের জন্য AES কী। openssl rand -hex 32 দিয়ে তৈরি করুন।
STORAGE_ENCRYPTION_KEY_VERSION v1 scripts/build/bootstrap-env.mjs, electron/main.js এনক্রিপশন কী-এর সংস্করণ লেবেল। পুরোনো ব্যাকআপ ডিক্রিপ্ট করার সুবিধার্থে কী রোটেশন করার সময় এটি বৃদ্ধি করুন।
DISABLE_SQLITE_AUTO_BACKUP false src/lib/db/backup.ts true হলে, নিয়মিত/লেখার-পূর্ববর্তী SQLite ফাইল ব্যাকআপ (models.dev-এর মূল্য সংরক্ষণ/মুছে ফেলা, সেটিংস লেখা) এড়িয়ে যায়। ম্যানুয়াল এবং পুনরুদ্ধারের-পূর্ববর্তী ব্যাকআপ তারপরও চলে। এটি মাইগ্রেশন রানারের বাধ্যতামূলক টেকসই নিরাপত্তা স্ন্যাপশট বা বিদ্যমান স্থায়ী DB-এর জন্য গণ-মাইগ্রেশন সুরক্ষা নিষ্ক্রিয় করে না। অ-ম্যানুয়াল ব্যাকআপ সর্বোচ্চ প্রতি 60 মিনিটে একবারে সীমিত থাকে। ড্যাশবোর্ডের Settings → Storage থেকে নিয়মিত স্বয়ংক্রিয় ব্যাকআপ স্বাধীনভাবে নিষ্ক্রিয় করা যায়।
OMNIROUTE_CRYPT_KEY (সেট করা নেই) src/lib/db/encryption.ts STORAGE_ENCRYPTION_KEY-এর লিগ্যাসি উপনাম। প্রাথমিক ভেরিয়েবল অনুপস্থিত থাকলে ফলব্যাক হিসেবে গৃহীত হয়।
OMNIROUTE_API_KEY_BASE64 (সেট করা নেই) src/lib/db/encryption.ts লিগ্যাসি উপনাম (Base64-এনকোড করা রূপ), যা ফলব্যাক হিসেবে গৃহীত হয়। ব্যবহারের আগে স্বয়ংক্রিয়ভাবে ডিকোড করা হয়।
OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS (সেট করা নেই) src/lib/db/core.ts পর্যায়ক্রমিক SQLite স্বাস্থ্য পরীক্ষার ব্যবধান (ms) ওভাররাইড করুন। সেট করা না থাকলে, NODE_ENV থেকে ডিফল্ট মান নির্ধারিত হয়।
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS 21600000 (6h) src/lib/db/walMaintenance.ts পর্যায়ক্রমিক wal_checkpoint(TRUNCATE) ব্যবধান (ms) ওভাররাইড করুন। স্বয়ংক্রিয় চেকপয়েন্ট কখনোই WAL ফাইলটিকে নিজে থেকে ছোট করে না এবং দীর্ঘ সময় ধরে চলা সার্ভার কখনোই তার DB বন্ধ করে না। 0 দিলে নিষ্ক্রিয় হয়।
OMNIROUTE_WAL_PASSIVE_INTERVAL_MS 300000 (5m) src/lib/db/walMaintenance.ts ঘন ঘন হওয়া wal_checkpoint(PASSIVE)-এর ব্যবধান (ms) ওভাররাইড করুন। এটি অপেক্ষমাণ WAL ফ্রেমগুলো ছোট রাখে, যাতে পর্যায়ক্রমিক TRUNCATE কখনোই মূল থ্রেডে বহু-GB ব্যাকলগ কপি না করে। 0 দিলে নিষ্ক্রিয় হয়।
OMNIROUTE_WAL_GUARD_MAX_MB 256 src/lib/db/walMaintenance.ts কোনো PASSIVE টিক WAL ফাইলটিকে এই আকারের বেশি পেলে, ধীরগতির টিকের জন্য অপেক্ষা না করে অবিলম্বে wal_checkpoint(TRUNCATE)-এ উন্নীত করে।
OMNIROUTE_PRESSURE_SELF_RESTART false open-sse/utils/resourcePressure.ts গুরুতর রিসোর্স চাপ OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS সময় ধরে অব্যাহত থাকার পর প্রক্রিয়াটি বন্ধ করতে 1/true/yes/on সেট করুন; এতে অনির্দিষ্টকাল 503 পরিবেশনের বদলে কোনো সুপারভাইজার (systemd Restart=always, Docker পুনরারম্ভ নীতি) একটি পরিচ্ছন্ন প্রক্রিয়া পুনরায় চালু করতে পারে।
OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS 120000 (2m) open-sse/utils/resourcePressure.ts স্ব-পুনরারম্ভের জন্য প্রস্থান কার্যকর হওয়ার আগে গুরুতর চাপ কতক্ষণ স্থায়ী থাকতে হবে।
OMNIROUTE_SQLJS_WASM_PATH (স্বয়ংক্রিয়ভাবে শনাক্ত) src/lib/db/adapters/sqljsAdapter.ts sql.js WASM ফলব্যাক অ্যাডাপ্টার ব্যবহারের সময় sql-wasm.wasm-এর সুস্পষ্ট পাথ (অ্যাবসোলিউট অথবা cwd-এর সাপেক্ষে)। সেট করা না থাকলে প্যাকেজ ডিপেন্ডেন্সি এবং সম্ভাব্য লেআউটের মাধ্যমে স্বয়ংক্রিয়ভাবে শনাক্ত করা হয়।
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS 21600000 (6h) src/lib/db/core.ts পর্যায়ক্রমিক wal_checkpoint(TRUNCATE) ব্যবধান (ms) ওভাররাইড করুন। স্বয়ংক্রিয় চেকপয়েন্ট কখনোই WAL ফাইলটিকে নিজে থেকে ছোট করে না এবং দীর্ঘ সময় ধরে চলা সার্ভার কখনোই তার DB বন্ধ করে না। 0 দিলে নিষ্ক্রিয় হয়।
OMNIROUTE_BATCH_RETENTION_DAYS 30 src/lib/db/cleanup.ts কোনো চূড়ান্ত অবস্থায় থাকা (সম্পন্ন/ব্যর্থ/বাতিল/মেয়াদোত্তীর্ণ) Batch API কাজের চেকপয়েন্ট, উল্লেখিত ইনপুট/আউটপুট/ত্রুটি ফাইল এবং সারি মুছে ফেলার আগে স্বয়ংক্রিয় ক্লিনআপ সুইপ যত দিন সংরক্ষণ করে। এটি কেবল BATCH_AND_FILE_AUTO_CLEANUP_ENABLED চালু করার পর কার্যকর হয়; OpenAI-এর নিজস্ব Batch API আউটপুট সংরক্ষণ সময়সীমার সঙ্গে মেলে। অপারেটর-চালিত DELETE /api/v1/batches/delete-completed রুটকে প্রভাবিত করে না, যা নকশা অনুযায়ী শর্তহীন (কোনো বয়স ফিল্টার নেই) থাকে।
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED false src/lib/db/cleanup.ts true হলে, স্বয়ংক্রিয় ক্লিনআপ সুইপকে OMNIROUTE_BATCH_RETENTION_DAYS-এর চেয়ে পুরোনো চূড়ান্ত অবস্থায় পৌঁছানো Batch API জব (এবং তাদের চেকপয়েন্ট) মুছে ফেলতে এবং যেসব আপলোড করা ফাইলের নিজস্ব expires_at পেরিয়ে গেছে সেগুলোর BLOB কনটেন্ট পরিষ্কার করতে দিন। ডিফল্টভাবে বন্ধ: কোনো অপারেটর এটি চালু না করা পর্যন্ত প্রতিটি বিদ্যমান ইনস্টলেশন এই ডেটা ঠিক আগের মতোই রাখে। এটি ড্যাশবোর্ড থেকে সম্পাদনাযোগ্য একটি ফিচার ফ্ল্যাগও — docs/reference/FEATURE_FLAGS.md → Runtime দেখুন।
OMNIROUTE_SKIP_DB_HEALTHCHECK 0 src/lib/db/core.ts, src/lib/db/healthCheck.ts স্টার্টআপের সময় DB হেলথচেক সম্পূর্ণভাবে এড়িয়ে যেতে 1 সেট করুন। স্বল্পস্থায়ী টাস্ক এবং ইন্টিগ্রেশন টেস্টের জন্য উপযোগী।
OMNIROUTE_FORCE_DB_HEALTHCHECK 0 src/lib/db/core.ts DB হেলথচেক লুপটি সাধারণত এড়িয়ে যাওয়া হলেও (যেমন, স্বল্পস্থায়ী টাস্কে) জোর করে চালু করতে 1 সেট করুন।
OMNIROUTE_SKIP_POSTINSTALL 0 scripts/postinstall.mjs npm install-এর সময় নেটিভ রানটাইম ওয়ার্ম-আপ এড়িয়ে যেতে 1 সেট করুন। sqlite ইতিমধ্যে বিল্ড করা আছে এমন CI/হেডলেস ইনস্টলেশনের জন্য উপযোগী।
OMNIROUTE_MIGRATIONS_DIR (স্বয়ংক্রিয়ভাবে শনাক্ত) src/lib/db/migrationRunner.ts মাইগ্রেশন রানার যে ডিরেক্টরি স্ক্যান করে সেটি ওভাররাইড করুন। কাস্টম বিল্ডে বান্ডেল করা মাইগ্রেশন সরবরাহের সময় এটি উপযোগী।
OMNIROUTE_EXTRA_MIGRATIONS_DIRS (সেট করা নেই) src/lib/db/migrationRunner/extraDirs.ts প্ল্যাটফর্মের পাথ ডিলিমিটার দিয়ে পৃথক করা namespace=dir এন্ট্রি হিসেবে অতিরিক্ত মাইগ্রেশন ডিরেক্টরি (যেমন ee=/opt/app/enterprise/db/migrations)। সেখানে পাওয়া ফাইলগুলো <namespace>-<number> হিসেবে রেকর্ড করা হয়, ফলে নিজস্ব মাইগ্রেশনসহ কোনো ডিস্ট্রিবিউশন কখনোই আপস্ট্রিমের সংখ্যাভিত্তিক স্লটের সঙ্গে সংঘর্ষে পড়ে না। কোনো বিকৃত এন্ট্রি, অবৈধ নেমস্পেস বা অনুপস্থিত ডিরেক্টরির ক্ষেত্রে স্কিমাটি নীরবে এড়িয়ে যাওয়ার পরিবর্তে স্টার্টআপের সময় ত্রুটি নিক্ষেপ করা হয়।
OMNIROUTE_MAX_PENDING_MIGRATIONS 50 src/lib/db/migrationRunner.ts বিপুলসংখ্যক অপেক্ষমাণ মাইগ্রেশনের নিরাপত্তা থ্রেশহোল্ড (#3416)। কোনো বিদ্যমান DB-তে এর চেয়ে বেশি মাইগ্রেশন অপেক্ষমাণ থাকলে স্টার্টআপ বাতিল হয় (মুছে ফেলা ট্র্যাকিং টেবিল থেকে সুরক্ষা দেয়)। পুরোনো ব্যাকআপ পুনরুদ্ধার করতে মানটি বাড়ান; পরীক্ষাটি নিষ্ক্রিয় করতে 0 সেট করুন।
OMNIROUTE_INSTALL_UPGRADE_WORKDIR (<repo>/.install-upgrade) scripts/check/check-install-upgrade.mjs check:install-upgrade রিলিজ গেটের কার্যকরী ডিরেক্টরি। এর জন্য প্রায় 12 GB প্রয়োজন (দুটি ~3 GB ইনস্টল ট্রি এবং tarball), তাই এটি ছোট tmpfs-এ চালানো যাবে না — স্ব-হোস্টেড রানারে /tmp হলো 12 GB RAM-সমর্থিত tmpfs এবং গেটটি এর সম্পূর্ণ স্থান ব্যবহার করে ফেলেছিল, ফলে প্যাকেজটি অসম্পূর্ণ হয়ে যায়।
OMNIROUTE_SPEND_FLUSH_INTERVAL_MS (কোডে ডিফল্ট) src/lib/spend/batchWriter.ts ব্যাচভিত্তিক ব্যয়/খরচ রাইটারের ফ্লাশ বিরতি (ms)। কম মান রাইট কোয়ালেসিং কমায়; বেশি মান DB কনটেনশন কমায়।
OMNIROUTE_SPEND_MAX_BUFFER_SIZE (কোডে ডিফল্ট) src/lib/spend/batchWriter.ts জোরপূর্বক ফ্লাশের আগে সর্বোচ্চসংখ্যক বাফারকৃত ব্যয় এন্ট্রি। উচ্চ-QPS ডিপ্লয়মেন্টে বাড়ান; সীমাবদ্ধ মেমরি বেশি গুরুত্বপূর্ণ হলে কমান।
OMNIROUTE_PROXY_FETCH_DEBUG (সেট করা নেই) open-sse/utils/proxyFetch.ts Vercel রিলে পাথে [ProxyFetch] ডিবাগ লগ নির্গত করতে "true" সেট করুন। রাউটিং-সংক্রান্ত ইঙ্গিত ফাঁস হওয়া এড়াতে ডিফল্টভাবে বন্ধ।
PROXY_LOG_INCLUDE_IPS false src/lib/proxyLogger.ts বিস্তারিত [ProxyEgress] প্রসেস-লগ লাইনে ক্লায়েন্ট/এগ্রেস IP এবং অ্যাকাউন্ট প্রিফিক্স অন্তর্ভুক্ত করতে "true" বা "1" সেট করুন। প্রসেস লগে যেন IP বা অ্যাকাউন্ট প্রিফিক্স ফাঁস না হয়, তাই এটি ডিফল্টভাবে বন্ধ রাখা হয়।
OMNIROUTE_DEBUG (সেট করা নেই) bin/cli/commands/quota.mjs CLI কোটা কমান্ড থেকে stderr-এ প্রতি-রিকোয়েস্টের সময়সংক্রান্ত ডায়াগনস্টিক ([omniroute] GET <path> completed in Nms) প্রিন্ট করতে 1 সেট করুন।
OMNIROUTE_HEALTHCHECK_PATH (স্বয়ংক্রিয়) scripts/dev/healthcheck.mjs কনটেইনার হেলথচেক যে সুস্পষ্ট পাথটি পরীক্ষা করে। সেট করা না থাকলে প্রোবটি OMNIROUTE_BASE_PATH থেকে পাথ নির্ধারণ করে; এটি সেট করলে গভীর মনিটরিং এন্ডপয়েন্টে আবার অপ্ট ইন করা হয়।
OMNIROUTE_DEBUG_COMPLETION (সেট করা নেই) bin/cli/commands/completion.mjs CLI শেল-কমপ্লিশন ক্যাশ পাথগুলো (রিড/রিফ্রেশ/রাইট) থেকে [omniroute completion] ডায়াগনস্টিক নির্গত করতে যেকোনো অ-খালি মান সেট করুন। ডিফল্টভাবে বন্ধ — ওই ক্যাশগুলো নীরবে ব্যর্থ হয়, যাতে কোনো অনুপস্থিত/ক্ষতিগ্রস্ত ক্যাশ কখনোই ট্যাব-কমপ্লিশন নষ্ট না করে।
BATCH_RETRY_DURATION_MS 86400000 (24h) open-sse/services/batchProcessor.ts পৃথক ব্যাচ আইটেমের জন্য সর্বোচ্চ পুনঃচেষ্টা সময়সীমা (ms)। এই সময়সীমা অতিক্রম করা আইটেমগুলোকে ব্যর্থ হিসেবে চিহ্নিত করা হয়।
BATCH_BACKOFF_BASE_MS 5000 open-sse/services/batchProcessor.ts ব্যাচ আইটেম পুনঃচেষ্টায় এক্সপোনেনশিয়াল ব্যাকঅফের প্রাথমিক বিলম্ব (ms)।
BATCH_BACKOFF_MAX_MS 3600000 (1h) open-sse/services/batchProcessor.ts ব্যাচ আইটেম পুনঃচেষ্টার মধ্যবর্তী এক্সপোনেনশিয়াল ব্যাকঅফের সর্বোচ্চ সীমা (ms)।
BATCH_MAX_CONCURRENT 1 open-sse/services/batchProcessor.ts একই সময়ে প্রক্রিয়াকৃত ব্যাচের সর্বোচ্চ সংখ্যা। থ্রুপুট বাড়াতে এটি বৃদ্ধি করুন; অতিরিক্ত রেট-লিমিট এড়াতে কম রাখুন।

Important

বিদ্যমান কোনো স্থায়ী ডেটাবেস পরিবর্তনের আগে, মাইগ্রেশন রানার DATA_DIR/db_backups/-এর অধীনে একটি সম্পূর্ণ, কনটেন্ট-অ্যাড্রেসড স্ন্যাপশট প্রকাশ করে। প্রকাশনার জন্য এমন একটি ফাইল সিস্টেম প্রয়োজন, যা একই ফাইল সিস্টেমে ওভাররাইট-বিহীন হার্ড লিংক এবং টেকসই ফাইল সিঙ্ক সমর্থন করে। POSIX হোস্টগুলোর জন্য ডিরেক্টরি সিঙ্কও প্রয়োজন; Windows-এ Node ডিরেক্টরি হ্যান্ডেল প্রত্যাখ্যান করতে পারে, তাই OmniRoute প্রকাশিত ফাইলটি ফ্লাশ করে এবং ডিরেক্টরি-এন্ট্রি সিঙ্ককে সর্বোত্তম প্রচেষ্টা হিসেবে বিবেচনা করে। মাউন্ট করা DATA_DIR যদি এসব নিশ্চয়তা দিতে না পারে, তবে মাইগ্রেশন প্রয়োগের আগেই স্টার্টআপ নিরাপদভাবে ব্যর্থ হয়। DATA_DIR-কে এসব প্রিমিটিভ সমর্থনকারী ভলিউমে সরান; মাইগ্রেশনের নিরাপত্তা এড়িয়ে যেতে DISABLE_SQLITE_AUTO_BACKUP ব্যবহার করবেন না।

পরিস্থিতি

পরিস্থিতি কনফিগারেশন
লোকাল ডেভেলপমেন্ট সব ডিফল্ট অপরিবর্তিত রাখুন। DB ~/.omniroute/omniroute.db-এ থাকে।
Docker DATA_DIR=/data সেট করুন + /data-এ একটি ভলিউম মাউন্ট করুন।
সংরক্ষিত অবস্থায় এনক্রিপ্টেড STORAGE_ENCRYPTION_KEY সেট করুন + কীটির ব্যাকআপ রাখুন! এটি হারানো = ডেটা হারানো।
CI/টেস্টিং DATA_DIR=/tmp/omniroute-test — ক্ষণস্থায়ী, এনক্রিপশনের প্রয়োজন নেই।

3. নেটওয়ার্ক ও পোর্টসমূহ

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
PORT 20128 src/lib/runtime/ports.ts Dashboard UI এবং API এন্ডপয়েন্ট—উভয়ের জন্য প্রধান পোর্ট (একক-পোর্ট মোড)।
OMNIROUTE_BASE_PATH (খালি = রুট) next.config.mjs, scripts/docker/ensure-docker-base-path.mjs রিভার্স প্রক্সির পেছনে OmniRoute পরিবেশনের জন্য URL সাবপাথ (Next.js-এর basePath সেট করে; auth রিডাইরেক্টগুলো basePath-সচেতন)। যেমন /omniroute। Docker-এ মানটি docker build-এর সময় অন্তর্ভুক্ত করা হয় (ARG OMNIROUTE_BASE_PATH); আগে থেকে তৈরি রুট ইমেজগুলো Next.js চালু হওয়ার আগে কনটেইনার শুরুর সময় একবার ভিন্ন রানটাইম মান প্রয়োগ করতে পারে। একই সাবপাথসহ পাবলিক origin-এ NEXT_PUBLIC_BASE_URL সেট করুন।
NEXT_PUBLIC_OMNIROUTE_BASE_PATH (খালি = রুট) src/shared/hooks/useDisplayBaseUrl.ts OMNIROUTE_BASE_PATH-এর ব্রাউজারে দৃশ্যমান প্রতিরূপ, যা বিল্ডের সময় ইনলাইন করা হয়, যাতে ড্যাশবোর্ডের এন্ডপয়েন্ট প্রদর্শনে https://host/v1-এর পরিবর্তে https://host/omniroute/v1 দেখা যায়। সেট না থাকলে OMNIROUTE_BASE_PATH ব্যবহার করে। পরিবর্তনের পর পুনরায় বিল্ড করুন (Next-এর basePath বিল্ড-টাইমে নির্ধারিত)।
DASHBOARD_ALLOW_EMBED (সেট না করা = কখনোই ফ্রেমে দেখানো যাবে না) next.config.mjs, scripts/build/dashboardEmbed.mjs HTML পেজগুলো iframe-এ এম্বেড করার জন্য অপ্ট-ইন। সেট না থাকলে প্রতিটি রুট frame-ancestors 'none' + X-Frame-Options: DENY সহ পরিবেশিত হয়। vscode সেট করলে পেজগুলো (ড্যাশবোর্ড, লগইন, ডকস, ল্যান্ডিং) frame-ancestors 'self' vscode-webview: সহ এবং X-Frame-Options ছাড়াই পরিবেশিত হয়, ফলে VS Code Simple Browser সেগুলো রেন্ডার করতে পারে (OmniCopilot-এর dashboardOpen: "editor" মোড)। API সারফেস (/api, /v1, /v1beta, /a2a, /healthz, রুট-স্তরের alias) উভয় ক্ষেত্রেই কঠোর হেডার বজায় রাখে। শুধু vscode স্বীকৃত—1/true এটি সক্রিয় করে না। বিল্ড-টাইম: পরিবর্তনের পর পুনরায় বিল্ড করুন (ইমেজের জন্য docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode; আগে থেকে তৈরি ইনস্টলে এটি সেট করলে কোনো প্রভাব পড়ে না)।
API_PORT (সেট না করা) src/lib/runtime/ports.ts সেট করা হলে এই পৃথক পোর্টে /v1/* প্রক্সি API পরিবেশন করে।
API_HOST 0.0.0.0 src/lib/runtime/ports.ts API পোর্টের bind address।
DASHBOARD_PORT (সেট না করা) src/lib/runtime/ports.ts সেট করা হলে এই পৃথক পোর্টে Dashboard UI পরিবেশন করে।
OMNI_MAX_CONCURRENT_CONNECTIONS 0 (নিষ্ক্রিয়) src/sse/utils/backpressure.ts একই সময়ে চলমান in-flight chat সংযোগের সর্বোচ্চ সীমা নির্ধারণ করে; সীমার অতিরিক্ত অনুরোধ Retry-After সহ 503 পায়। ধনাত্মক পূর্ণসংখ্যা গার্ডটি সক্রিয় করে; সেট না থাকলে/0 হলে এটি নিষ্ক্রিয় থাকে।
OMNIROUTE_INSTANCE_ID (সেট না করা) src/shared/resilience/peerRouting.ts OmniRoute instance চেইন করার সময় এই gateway-এর স্থিতিশীল, অনন্য ID। আগত peer-loop যাচাই সক্রিয় করে। অনুমোদিত অক্ষর: বর্ণ, সংখ্যা, ., _, :, এবং -; সর্বোচ্চ 64টি অক্ষর।
OMNIROUTE_PEER_URLS (সেট না করা) src/shared/resilience/peerRouting.ts, open-sse/executors/base.ts কমা দিয়ে পৃথক করা OmniRoute base URL, যেগুলো X-OmniRoute-Peer-Trace পেতে পারে। শুধু স্পষ্টভাবে allowlist-এ থাকা upstream URL-গুলো peer metadata পায়; অন্য সব provider অপরিবর্তিত থাকে।
OMNIROUTE_PEER_MAX_HOPS 4 src/shared/resilience/peerRouting.ts চেইন করা অনুরোধে আগে পরিদর্শিত OmniRoute instance-এর সর্বাধিক গ্রহণযোগ্য সংখ্যা (1-32)। পুনরাবৃত্ত instance বা বাজেট শেষ হয়ে গেলে HTTP 508 Loop Detected ফেরত আসে।
PROD_DASHBOARD_PORT 20130 docker-compose.prod.yml Docker production মোডে Dashboard-এর জন্য host-side প্রকাশিত পোর্ট।
PROD_API_PORT 20131 docker-compose.prod.yml Docker production মোডে API-এর জন্য host-side প্রকাশিত পোর্ট।
OMNIROUTE_PORT (সেট না করা) src/lib/runtime/ports.ts Electron বা অন্য wrapper-এর ভেতরে চালানোর সময় PORT-এর চেয়ে অগ্রাধিকার পায়।
LIVE_WS_PORT 20129 src/server/ws/liveServer.ts রিয়েল-টাইম WebSocket live monitoring server-এর পোর্ট।
LIVE_WS_HOST 127.0.0.1 src/server/ws/liveServer.ts live WebSocket server-এর bind address। LAN-এ প্রকাশ করতে 0.0.0.0 সেট করুন (LIVE_WS_ALLOWED_ORIGINS-ও কনফিগার করুন)।
LIVE_WS_ALLOWED_ORIGINS (সেট না করা) src/server/ws/liveServer.ts live WebSocket খোলার অনুমতিপ্রাপ্ত অতিরিক্ত origin-এর কমা দিয়ে পৃথক করা তালিকা। Loopback dashboard origin-গুলো ডিফল্টভাবেই অনুমোদিত।
LIVE_WS_ALLOWED_HOSTS (সেট না করা) src/server/ws/liveServerAllowList.ts live WebSocket origin-এর জন্য অনুমোদিত অতিরিক্ত hostname-এর কমা দিয়ে পৃথক করা তালিকা। LIVE_WS_ALLOWED_ORIGINS (সম্পূর্ণ origin URL)-এর বিপরীতে, এটি শুধু host অংশের সঙ্গে মেলে—LAN/Tailscale সেটআপের জন্য উপযোগী।
NEXT_PUBLIC_LIVE_WS_PUBLIC_URL (সেট না করা) src/hooks/useLiveDashboard.ts live dashboard WebSocket-এর পাবলিক URL (ব্রাউজার-সাইড)। WS server-এর সামনে reverse proxy বা Cloudflare Tunnel থাকলে সেট করুন (যেমন wss://ws.my-ai.com/live-ws); ব্রাউজার তখন ws://hostname:20132-এর বদলে সেখানে সংযুক্ত হয়। pathname অংশটি WebSocket upgrade path হিসেবেও ব্যবহৃত হয় (ডিফল্ট: /live-ws)।
OMNIROUTE_ENABLE_LIVE_WS true src/server/ws/liveServer.ts এবং scripts/start-ws-server.mjs রিয়েল-টাইম WebSocket server নিষ্ক্রিয় করতে 0 বা false সেট করুন (ডিফল্টভাবে সক্রিয়, loopback-এ bound)। এটি একটি CI/harness toggle, যা স্বতন্ত্র live WebSocket helper script নিষ্ক্রিয় করে।
RELAY_IP_PER_MINUTE 30 src/app/api/v1/relay/chat/completions/route.ts প্রতি-(token, IP) relay rate limit, অনুরোধ/মিনিট। In-memory, প্রতি instance-এ। 0 বা ঋণাত্মক মান IP-dimension gate নিষ্ক্রিয় করে (প্রতি-token DB সীমা তবুও প্রযোজ্য থাকে)।
NODE_ENV production Next.js core logging verbosity, caching, error detail exposure এবং Next.js optimization নিয়ন্ত্রণ করে।
OMNIROUTE_USE_TURBOPACK 1 (Turbopack — কোডের ডিফল্ট) package.json / Next.js 16 npm run dev এবং npm run build-এর ডিফল্ট bundler হলো Turbopack (benchmark অনুযায়ী build 2-3× দ্রুত)। Windows-এ native binding / bundler-compat অসামঞ্জস্য দেখা দিলে webpack-এ ফিরে যেতে 0 সেট করুন, অথবা RAM-সীমিত মেশিনে—এই Next.js version line-এ (16.2.x) Turbopack production build বড় module graph-এ webpack-এর তুলনায় অনেক বেশি memory peak করে বলে upstream-এ জানা আছে (Next 16.3-এর Turbopack memory-eviction fix এখনও stable নয়); webpack fallback-এর peak অনেক কম। #6409 দেখুন।
OMNIROUTE_SKIP_DB_HEALTHCHECK (সেট না করা) src/lib/db/core.ts / src/lib/db/healthCheck.ts startup-এর সময় SQLite integrity health check এড়িয়ে যেতে 1 সেট করুন। বড় database-এ দ্রুত boot-এর জন্য উপযোগী।
NOTIFY_SOCKET (সেট না করা) systemd (sd_notify protocol) process যখন sd_notify integration-সহ কোনো service unit-এর অধীনে চলে, তখন systemd এটি সেট করে; READY/WATCHDOG notification পাঠাতে OmniRoute এটি পড়ে (OMNIROUTE_DISABLE_SD_NOTIFY দেখুন)। ব্যবহারকারী কখনো এটি সেট করবেন না।
OMNIROUTE_DISABLE_SD_NOTIFY (সেট না করা) scripts/dev/systemd-notify.mjs systemd unit-এর অধীনে চললেও systemd sd_notify (Type=notify / WatchdogSec=) নিষ্ক্রিয় করতে 1 সেট করুন। systemd-এর বাইরে notifier যেকোনো অবস্থাতেই no-op।
CREDENTIAL_HEALTH_CHECK_INTERVAL 300000 open-sse/config/constants.ts / src/lib/credentialHealth/scheduler.ts background credential health check scheduler-এর interval (ms)। সর্বনিম্ন: 10000 (10s)।
CREDENTIAL_HEALTH_CACHE_TTL 300000 open-sse/config/constants.ts / src/lib/credentialHealth/cache.ts cached credential health status-এর TTL (ms)।
OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK false src/lib/credentialHealth/scheduler.ts provider connection-এর background periodic testing নিষ্ক্রিয় করতে 1 বা true সেট করুন। Search provider-গুলো (src/lib/providers/validation/searchProviders.ts-এর SEARCH_VALIDATOR_CONFIGS, যেমন tavily-search) sweep থেকে সবসময় বাদ থাকে—তাদের "validation" একটি বাস্তব billable upstream query, তাই timer অনুযায়ী কখনোই তাদের health-check করা হয় না (#9970)।
HOST 0.0.0.0 scripts/dev/run-next.mjs Next.js dev/start server-এর bind address। সেট করা হলে ডিফল্ট 0.0.0.0 override করে।
HOSTNAME 127.0.0.1 scripts/dev/run-next-playwright.mjs Next.js চালু করার সময় Playwright runner-এর ব্যবহৃত bind address। hermetic test-এর জন্য ডিফল্ট 127.0.0.1omniroute serve-এর জন্য ব্যবহার করবেন না—এর বদলে OMNIROUTE_SERVER_HOST ব্যবহার করুন (POSIX shell স্বয়ংক্রিয়ভাবে HOSTNAME-কে machine name-এ সেট করে; .env এটি override করতে পারে না)।
OMNIROUTE_SERVER_HOST 0.0.0.0 bin/cli/commands/serve.mjs omniroute serve-এর bind address। POSIX shell-এর HOSTNAME variable-এর সঙ্গে সংঘর্ষ এড়ায় (bash/zsh সর্বদা এটিকে machine name-এ সেট করে)। সেট না থাকলে 0.0.0.0 ব্যবহার করে। (#6194)

পোর্ট মোডসমূহ

┌─────────────────────────── একক পোর্ট (ডিফল্ট) ─────────────────────────────┐
│  PORT=20128                                                                 │
│  → ড্যাশবোর্ড: http://localhost:20128                                       │
│  → API:       http://localhost:20128/v1/chat/completions                    │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────── পৃথক পোর্টসমূহ ─────────────────────────────────┐
│  DASHBOARD_PORT=20128                                                       │
│  API_PORT=20129                                                             │
│  API_HOST=0.0.0.0                                                           │
│  → ড্যাশবোর্ড: http://localhost:20128                                       │
│  → API:       http://0.0.0.0:20129/v1/chat/completions                     │
│  ব্যবহারের ক্ষেত্র: ড্যাশবোর্ড localhost-এ সীমাবদ্ধ রেখে API-কে LAN-এ উন্মুক্ত করুন। │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────── Docker প্রোডাকশন ───────────────────────────────┐
│  PROD_DASHBOARD_PORT=443   PROD_API_PORT=8443                              │
│  → docker-compose.prod.yml-এ কনটেইনার পোর্টগুলোকে হোস্ট পোর্টে ম্যাপ করে।   │
└─────────────────────────────────────────────────────────────────────────────┘

4. নিরাপত্তা ও প্রমাণীকরণ

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
MACHINE_ID_SALT endpoint-proxy-salt src/lib/auth মেশিন ফিঙ্গারপ্রিন্টিংয়ের জন্য হার্ডওয়্যার শনাক্তকারীর সঙ্গে সম্মিলিত salt। বিচ্ছিন্নতা নিশ্চিত করতে প্রতিটি ডিপ্লয়মেন্টে এটি পরিবর্তন করুন।
OMNIROUTE_CLI_SALT (সেট করা নেই = প্রতি ইনস্টলে এলোমেলো salt, যা <DATA_DIR>/cli-token-salt.json-এ সংরক্ষিত থাকে) src/lib/machineToken.ts স্থানীয় CLI auth token উদ্ভূত করার জন্য HMAC salt। এই মান সেট করলে মেশিনের সব CLI token ঘুরিয়ে দেওয়া হয় এবং এটি সর্বদা সংরক্ষিত salt-এর চেয়ে অগ্রাধিকার পায়। docs/security/CLI_TOKEN.md দেখুন।
AUTH_COOKIE_SECURE false src/lib/auth session cookie-তে Secure flag সেট করে। HTTPS-এর পেছনে চলার সময় এটি অবশ্যই true হতে হবে
REQUIRE_API_KEY false API middleware true হলে, সব /v1/* proxy request-এ একটি বৈধ API key অন্তর্ভুক্ত থাকতে হবে।
ALLOW_API_KEY_REVEAL false src/shared/constants/featureFlagDefinitions.ts Dashboard UI-তে API key-এর সম্পূর্ণ মান প্রকাশের অনুমতি দেয়। Dashboard Feature Flags থেকে কনফিগার করা যায়; শেয়ার করা instance-এ এটি একটি নিরাপত্তা ঝুঁকি।
NO_LOG_API_KEY_IDS (খালি) src/lib/compliance/index.ts কমা দিয়ে পৃথক করা API key ID, যেগুলোর জন্য request logging এড়িয়ে যাওয়া হয় (GDPR সম্মতি)।
DEFAULT_RATE_LIMIT_PER_DAY (সেট করা নেই = সীমাহীন) src/shared/utils/apiKeyPolicy.ts যেসব API key-এর rate_limits column null, সেগুলোর ক্ষেত্রে প্রয়োগ করা দৈনিক fallback request budget। সেট করা না থাকলে বা খালি থাকলে: কোনো অন্তর্নিহিত সীমা নেই (#2289, #11017)। 0-ও একই অর্থ বহন করে (সীমাহীন)। ধনাত্মক পূর্ণসংখ্যা N দিলে N/day, 5N/week, 20N/month সক্রিয় হয়। ত্রুটিপূর্ণ অখালি মানের ক্ষেত্রে পুরোনো 1000/day, 5000/week, 20000/month window ব্যবহৃত হয়।
MAX_BODY_SIZE_BYTES 10485760 (10 MB) src/shared/middleware/bodySizeGuard.ts অনুমোদিত request body-এর সর্বোচ্চ আকার। এই সীমা অতিক্রমকারী payload প্রত্যাখ্যান করে।
OMNIROUTE_CHAT_LARGE_BODY_BYTES 262144 (256 KB) src/shared/middleware/chatBodyAdmission.ts এই threshold-এর সমান বা তার বেশি আকারের প্রকৃত request body, JSON parsing-এর আগে atomic process-local heavyweight admission lease গ্রহণ করে (BYTE path, যার মধ্যে POST /v1/responses অন্তর্ভুক্ত)। structure-heavy-এর মতো একই #10437 healthy-headroom escape; তবুও OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110 দ্বারা সীমাবদ্ধ, যাতে #7849 পুনরায় না ঘটে।
OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES 52428800 (50 MB) src/shared/middleware/chatBodyAdmission.ts সীমাবদ্ধ ingestion-এর সময় পড়া byte-এর ভিত্তিতে chat-route-এর hard cap প্রয়োগ করা হয়; এর মধ্যে অনুপস্থিত, অবৈধ বা অসত্য Content-Length-সহ request-ও অন্তর্ভুক্ত। সীমা অতিক্রম করলে 413 ফেরত দেওয়া হয়।
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT (সেট করা নেই — অনুরোধ-সংখ্যার কোনো সীমা নেই) src/shared/middleware/chatBodyAdmission.ts #503-fanout: এই লিগ্যাসি অনুরোধ-সংখ্যার সীমা এখন কেবল স্পষ্টভাবে সেট করলেই কার্যকর হয়। সেট না করা থাকলে (ডিফল্ট), ভারী চ্যাট গ্রহণের পরিবর্তে OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES দ্বারা নিয়ন্ত্রিত হয় — এটি একটি প্রসেসের (একটি V8 heap) প্রকৃত মেমরি-সীমা থেকে স্বয়ংক্রিয়ভাবে নির্ধারিত একটি বাইট বাজেট। একই সময়ে চলা প্রায় 750k-token-এর দুটি /v1/responses অনুরোধ প্রায় 12Gi heap-কে অকার্যকর করে দেয় (#7849) — এটি একটি মেমরি-বাজেট সতর্কতা, পণ্যের সর্বোচ্চ 2-এর কোনো কঠোর সীমা নয়। একটি সুস্থ প্রসেস (shed ratio-এর নিচে heap) OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM-এর মাধ্যমে একই সময়ে আরও দীর্ঘ /v1/responses গ্রহণ করতে পারে। দীর্ঘমেয়াদি SSE client-এর সংখ্যা কয়েক দশক (4050) হওয়া heap + OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110-এর বিষয়, “সর্বোচ্চ 2” নয়। “হোস্টের সম্পূর্ণ ক্ষমতা ব্যবহার” করার জন্য না বুঝে এটি বাড়ালে #7849 আবার দেখা দেবে। Nটি স্বতন্ত্র DATA_DIR (#11024) দিয়ে heap-এর সংখ্যা বাড়ান; একটি SQLite file-এর ক্ষেত্রে কখনোই replicas>1 ব্যবহার করবেন না।
OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES (স্বয়ংক্রিয়ভাবে নির্ধারিত) src/shared/middleware/admissionBudget.ts #503-fanout: স্বয়ংক্রিয়ভাবে নির্ধারিত ingest byte budget-এর override (V8/cgroup-এর মধ্যে কঠোরতর memory ceiling-এর 25%, যাকে 8x transient amplification দিয়ে ভাগ করা হয়)। নির্ধারিত ও স্পষ্টভাবে সেট করা মানগুলো 8 MiB2 GiB-এর মধ্যে সীমাবদ্ধ থাকে। কার্যকর budget-এর চেয়ে বড় body অবিলম্বে 413 body_exceeds_budget দিয়ে ব্যর্থ হয়; আলাদাভাবে পরিবেশনযোগ্য body-গুলোর মধ্যে contention হলে পুনরায় চেষ্টা করা যায় এমন 503 পাওয়া যায়। একই সময়ে 4050টি দীর্ঘ SSE client চলা এই budget + heap-এর বিষয়, কঠোর “সর্বোচ্চ 2” সীমা নয়। সমন্বয় করার আগে /api/monitoring/health-এ chatAdmission.maxInflightBytes / budgetSource / pressureSeverity দেখুন।
OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO 0.75 src/shared/middleware/chatBodyAdmission.ts BYTE ও STRUCTURE-ভিত্তিক ভারী অনুরোধ গ্রহণের জন্য heap-pressure shed ratio (heapUsed / heap_size_limit) (#10183, #10268, #10437)। OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT অতিক্রম করা কোনো সমসাময়িক ভারী অনুরোধকে কেবল তখনই পুনরায় চেষ্টা করা যায় এমন 503 দিয়ে বাদ দেওয়া হয়, যখন heap-ও এই ratio-এর সমান বা বেশি থাকে; সুস্থ heap-এ healthy-headroom-এর মাধ্যমে সেটি গ্রহণ করা হয়।
OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT (ডিফল্ট 1) src/shared/middleware/chatBodyAdmission.ts STRUCTURE ও BYTE উভয়ের (admitChatRequest, যার মধ্যে ≥ OMNIROUTE_CHAT_LARGE_BODY_BYTES body-ও রয়েছে) সুস্থ heap-এর দ্রুতগতির পথের জন্য সীমাবদ্ধ অতিরিক্ত capacity (#10437)। এই সীমা না থাকলে, ব্যস্ত হলেও সুস্থ heap-এর প্রতিটি অনুরোধ কোনো সর্বোচ্চ সীমা ছাড়াই admission এড়িয়ে যেত। healthy-heap path-এর মাধ্যমে একসঙ্গে এতগুলো lease সক্রিয় হয়ে গেলে, পরবর্তী ব্যস্ত অনুরোধগুলো প্রকৃত heap pressure-এর সময় ব্যবহৃত একই সীমাবদ্ধ অপেক্ষা/বাদ দেওয়ার path-এ চলে যায়। 0 দিলে bypass সম্পূর্ণভাবে নিষ্ক্রিয় হয়।
OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT 200 src/shared/middleware/chatBodyAdmission.ts যে message count-এ কোনো chat request-এর body byte threshold-এর নিচে থাকলেও সেটিকে heavyweight হিসেবে শ্রেণিবদ্ধ করা হয়।
OMNIROUTE_CHAT_HEAVY_TOOL_COUNT 64 src/shared/middleware/chatBodyAdmission.ts যে tool count-এ কোনো chat request-এর body byte threshold-এর নিচে থাকলেও সেটিকে heavyweight হিসেবে শ্রেণিবদ্ধ করা হয়।
OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS 32000 src/shared/middleware/chatBodyAdmission.ts রক্ষণশীল string-size token estimate, যার ভিত্তিতে কোনো অনুরোধকে heavyweight হিসেবে শ্রেণিবদ্ধ করা হয়; এটি admission cost-এর proxy, provider billing tokenization নয়।
OMNIROUTE_CHAT_HARD_MAX_MESSAGES 0 (নিষ্ক্রিয়) src/shared/middleware/chatBodyAdmission.ts ঐচ্ছিক opt-in chat history cap। ডিফল্টভাবে নিষ্ক্রিয়: message count হলো deployment policy, কোনো request-এর সার্বজনীন বৈশিষ্ট্য নয়; এখানে সীমা আরোপ করলে compression pipeline কথোপকথনটিকে পরিবেশনযোগ্য করার আগেই terminal 413 দিয়ে প্রত্যাখ্যান করে। Heap-এর বৃদ্ধি OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT এবং heap-pressure shed দ্বারা সীমাবদ্ধ থাকে। কঠোর সর্বোচ্চ সীমা প্রয়োজন এমন memory-constrained deployment-এ একটি ধনাত্মক মান সেট করুন; সীমা অতিক্রম করলে structured compact-required 413 পাওয়া যাবে।
OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES 67108864 (64 MB) open-sse/handlers/chatCore/nonStreamingResponseBody.ts সম্পূর্ণভাবে memory-তে buffer করা non-streaming upstream response-এর কঠোর সীমা। এটি অতিক্রম করলে upstream reader বাতিল করা হয় এবং heap নিঃশেষ না হওয়া পর্যন্ত সীমাহীন string বাড়তে দেওয়ার পরিবর্তে request দ্রুত ব্যর্থ হয়।
OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES 768 open-sse/handlers/chatCore/responseHeaders.ts upstream response header থেকে forward করা সর্বোচ্চ wire byte। Budget অতিক্রম করলে প্রচলিত reverse-proxy header limit-এর মধ্যে থাকতে কম অগ্রাধিকারের header (যেমন custom x-codex-*, x-oai-request-id) বাদ দেওয়া হয়। আরও বেশি upstream metadata forward করতে এটি বাড়ান, তবে এতে response header-এর আকারও বাড়বে।
CORS_ORIGIN (সেট করা নেই) src/server/cors/origins.ts পুরোনো একক-অরিজিন CORS অনুমোদন-তালিকা। নতুন ডিপ্লয়মেন্টের জন্য CORS_ALLOWED_ORIGINS ব্যবহার করুন। CORS কেবল ক্রস-অরিজিন ব্রাউজার API ক্লায়েন্টের জন্য; প্রমাণীকৃত ড্যাশবোর্ড রাইট অপারেশনগুলো এর পরিবর্তে একই-অরিজিন অনুরোধের সঙ্গে সেশন-সংযুক্ত CSRF সুরক্ষা ব্যবহার করে।
CORS_ALLOWED_ORIGINS (সেট করা নেই) src/server/cors/origins.ts কমা দিয়ে পৃথক করা CORS অনুমোদন-তালিকা। CORS_ALLOW_ALL=true স্পষ্টভাবে কনফিগার করা না হলে কোনো ওয়াইল্ডকার্ড পাঠানো হয় না।
CORS_ALLOW_ALL false src/server/cors/origins.ts যেকোনো ব্রাউজার Origin প্রতিফলিত করার জন্য কেবল ডেভেলপমেন্টে ব্যবহারের জরুরি বিকল্প। শেয়ার্ড বা প্রোডাকশন ডিপ্লয়মেন্টে এটি সক্রিয় করবেন না।
OUTBOUND_SSRF_GUARD_ENABLED true src/shared/network/outboundUrlGuard.ts ব্যক্তিগত/লুপব্যাক/লিংক-লোকাল IP রেঞ্জ লক্ষ্যকারী প্রোভাইডার কল ব্লক করুন। শুধু বিচ্ছিন্ন টেস্ট এনভায়রনমেন্টে এটি নিষ্ক্রিয় করুন।
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS false src/shared/network/outboundUrlGuard.ts ব্যক্তিগত/লোকাল নেটওয়ার্কের দিকে নির্দেশ করা প্রোভাইডার URL অনুমোদন করুন (localhost, 192.168.x.x, 10.x.x.x ইত্যাদি)। স্ব-হোস্টেড প্রোভাইডারের জন্য আবশ্যক (LM Studio, Ollama, vLLM, Llamafile, Triton, SearXNG)। false হলে ড্যাশবোর্ড লোকাল URL-এর যাচাইকরণ প্রত্যাখ্যান করে।
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS true src/shared/network/outboundUrlGuard.ts লোকাল/ব্যক্তিগত ঠিকানায় (127.0.0.1, localhost, LAN, ব্যক্তিগত রেঞ্জ) প্রোভাইডার যোগ করা/যাচাই করা অনুমোদন করুন—এটি প্রোভাইডার যাচাইকরণ পাথে সীমাবদ্ধ। ডিফল্ট true (লোকাল-ফার্স্ট); শুধু পাবলিক ঠিকানা অনুমোদনের কঠোর নীতি প্রয়োগ করতে false সেট করুন। ক্লাউড-মেটাডেটা এন্ডপয়েন্ট (169.254.169.254, metadata.google.internal) সব অবস্থাতেই ব্লক থাকে। (#5066)
AUDIO_REMOTE_PROVIDER_NODES false src/app/api/v1/_shared/audioProviderNodes.ts /v1/audio/* রুটগুলোকে (ট্রান্সক্রিপশন, স্পিচ, অনুবাদ) localhost-এর বাইরে হোস্ট করা OpenAI-সামঞ্জস্যপূর্ণ প্রোভাইডার নোড ব্যবহার করতে দিন। ডিফল্টভাবে বন্ধ—অডিওকে দূরবর্তী হোস্টে রাউট করলে বহির্গমন পরিচয় পরিবর্তিত হয় এবং এটি অবশ্যই অপারেটরের স্পষ্ট সিদ্ধান্ত হতে হবে। লুপব্যাক/ব্যক্তিগত নোড (localhost, 127.0.0.1, 172.16-31.x) সর্বদা অনুমোদিত এবং এতে প্রভাবিত হয় না। (#3963)
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN false src/app/api/auth/login/route.ts OIDC সক্রিয় থাকলে পাসওয়ার্ড লগইন নিষ্ক্রিয় করুন, যাতে ব্যবহারকারীরা শুধু OIDC Single Sign-On-এর মাধ্যমে প্রমাণীকরণ করতে পারেন। সংক্ষিপ্ত অ্যালিয়াস OIDC_DISABLE_PASSWORD_LOGIN-ও গৃহীত হয়; একই কী-এর Dashboard Feature Flag অগ্রাধিকার পায়। (#10889)
OIDC_DISABLE_PASSWORD_LOGIN false src/app/api/auth/login/route.ts OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN-এর সংক্ষিপ্ত অ্যালিয়াস (#10889)।

নিরাপত্তা জোরদারকরণ চেকলিস্ট

# প্রোডাকশন নিরাপত্তার ন্যূনতম শর্ত:
AUTH_COOKIE_SECURE=true        # HTTPS আবশ্যক
REQUIRE_API_KEY=true           # সব প্রক্সি কল প্রমাণীকরণ করুন
ALLOW_API_KEY_REVEAL=false     # UI-তে কখনো কী প্রকাশ করবেন না
CORS_ALLOWED_ORIGINS=https://your.domain.com
MAX_BODY_SIZE_BYTES=5242880    # 5 MB সীমা

5. ইনপুট স্যানিটাইজেশন ও PII সুরক্ষা

OmniRoute দুই-স্তরবিশিষ্ট প্রতিরক্ষা প্রদান করে: রিকোয়েস্ট-পার্শ্বের ইনজেকশন স্ক্যানিং এবং রেসপন্স-পার্শ্বের PII অপসারণ।

⚠️ সীমাবদ্ধতা: এই গার্ডরেলগুলো সর্বোচ্চ-প্রচেষ্টাভিত্তিক হিউরিস্টিক শনাক্তকরণ, সম্পূর্ণ প্রম্পট-ইনজেকশন ফায়ারওয়াল বা PII DLP সিস্টেম নয়। এগুলো ফলস পজিটিভ (ক্ষতিকর নয় এমন পারসোনা/RPG প্রম্পট ফ্ল্যাগ হওয়া) এবং ফলস নেগেটিভ (লিটস্পিক, স্পেসিং, অ-ইংরেজি প্যাটার্ন) তৈরি করতে পারে। কমপ্লায়েন্সের জন্য এগুলো একা যথেষ্ট নয়। এগুলোর ওপর নির্ভর করার আগে মোডগুলো সমন্বয় করুন এবং আপনার ট্র্যাফিকের বিপরীতে পরীক্ষা করুন।

রিকোয়েস্ট-পার্শ্ব: প্রম্পট ইনজেকশন গার্ড

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
INPUT_SANITIZER_ENABLED true src/middleware/promptInjectionGuard.ts প্রম্পট ইনজেকশন প্যাটার্নের জন্য ইনকামিং মেসেজ স্ক্যান করা সক্রিয় করে।
INPUT_SANITIZER_MODE warn src/middleware/promptInjectionGuard.ts ইনজেকশন নীতি: warn = শুধু লগ করে, block = 400 সহ রিকোয়েস্ট প্রত্যাখ্যান করে। লিগ্যাসি redact ইনজেকশন টেক্সট অপসারণ করে না; রিকোয়েস্টের PII পুনর্লিখনের জন্য PII_REDACTION_ENABLED ব্যবহার করুন।
INJECTION_GUARD_MODE (সেট করা নেই) src/middleware/promptInjectionGuard.ts INPUT_SANITIZER_MODE-এর লিগ্যাসি উপনাম—একই আচরণ।
INPUT_SANITIZER_BLOCK_THRESHOLD high src/shared/utils/injectionSeverity.ts MODE=block যে ন্যূনতম তীব্রতা প্রত্যাখ্যান করে: high (ডিফল্ট), medium, অথবা low। থ্রেশহোল্ড কমানো না হলে মাঝারি প্যাটার্নগুলো শুধু পর্যবেক্ষণ করা হয়।
INJECTION_GUARD_BLOCK_THRESHOLD (সেট করা নেই) src/shared/utils/injectionSeverity.ts INPUT_SANITIZER_BLOCK_THRESHOLD-এর লিগ্যাসি উপনাম—একই আচরণ।
PII_REDACTION_ENABLED false src/lib/guardrails/piiMasker.ts true হলে, ইনকামিং রিকোয়েস্টে PII অপসারণ করে (ইনজেকশন মোড থেকে স্বাধীন)।
CREDENTIAL_REDACTION_ENABLED false src/lib/guardrails/credentialMasker.ts রিকোয়েস্ট/রেসপন্স পেলোড থেকে সুপরিচিত API-কী / সিক্রেট-টোকেন প্যাটার্ন অপসারণ করে। অপ্ট-ইন; PII_REDACTION_ENABLED-এর আচরণ অনুসরণ করে।

রেসপন্স-পার্শ্ব: PII স্যানিটাইজার

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
PII_RESPONSE_SANITIZATION false src/lib/piiSanitizer.ts ক্লায়েন্টের কাছে ফেরত দেওয়ার আগে ফাঁস হওয়া PII-এর জন্য LLM রেসপন্স স্ক্যান করে।
PII_RESPONSE_SANITIZATION_MODE redact src/lib/piiSanitizer.ts redact = PII মাস্ক করে, warn = শুধু লগ করে, block = সম্পূর্ণ রেসপন্স বাদ দেয়।

VS Code টোকেনাইজড-রুট কনটেক্সট স্যানিটাইজার

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_VSCODE_SANITIZE_CONTEXT 1 src/app/api/v1/vscode/contextSanitizer.ts /v1/vscode/[token]/* রিকোয়েস্ট থেকে অন্তর্নিহিত সক্রিয়-এডিটর কনটেক্সট (editorContext, activeEditor, currentFile, selection, openTabs…) সরিয়ে দেয় এবং স্পষ্টভাবে সংযুক্ত সংবেদনশীল ফাইলগুলোর কনটেন্ট অপসারণ করে। ডিফল্টভাবে সুরক্ষিত; নিষ্ক্রিয় করতে 0 সেট করুন।

পরিস্থিতি

পরিস্থিতি কনফিগারেশন
এন্টারপ্রাইজ কমপ্লায়েন্স INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=block, PII_REDACTION_ENABLED=true, PII_RESPONSE_SANITIZATION=true (ইনজেকশন ব্লকিং + রিকোয়েস্ট/রেসপন্সের PII অপসারণ; মোডগুলো পরস্পর স্বাধীন)
শুধু মনিটরিং INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=warn—লগ করে, কিন্তু কখনো ব্লক করে না
ব্যক্তিগত ব্যবহার সবগুলো নিষ্ক্রিয় রাখুন—কোনো অতিরিক্ত ওভারহেড নেই

6. টুল ও রাউটিং নীতিমালা

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
TOOL_POLICY_MODE disabled src/lib/toolPolicy.ts LLM-এর টুল/ফাংশন-কলিং অ্যাক্সেস নিয়ন্ত্রণ করে। allowlist = শুধু তালিকাভুক্ত টুল, denylist = তালিকাভুক্তগুলো ছাড়া সব, disabled = কোনো বিধিনিষেধ নেই।
OMNIROUTE_PAYLOAD_RULES_PATH ./config/payloadRules.json open-sse/services/payloadRules.ts পেলোড পরিবর্তনের নিয়মসমূহের JSON ফাইলের পাথ (প্রতি-মডেল/প্রোটোকল অনুযায়ী আপস্ট্রিম সমন্বয়)।
OMNIROUTE_PAYLOAD_RULES_RELOAD_MS 5000 open-sse/services/payloadRules.ts পেলোড নিয়মের ফাইলটি হট-রিলোড করার বিরতি (ms)। সর্বনিম্ন 1000
OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS false open-sse/services/model.ts অপ্ট-ইন: প্রোভাইডার প্রিফিক্স আবশ্যক না করে Claude Code ক্লায়েন্টের প্রিফিক্সবিহীন claude-* মডেল ID-গুলোকে Claude Code OAuth অ্যাকাউন্টের মাধ্যমে রাউট করে। স্পষ্ট প্রোভাইডার প্রিফিক্স এখনও অগ্রাধিকার পায়। Claude প্রোভাইডার পেজের একটি ড্যাশবোর্ড টগলের মাধ্যমেও কনফিগার করা যায়।
COMBO_CONCURRENCY_PER_MODEL 3 open-sse/services/comboConfig.ts রাউন্ড-রবিন কম্বোর জন্য প্রতি-মডেলের সমবর্তী কার্যক্রমের সর্বোচ্চ সীমা (#9100)। রাউন্ড-রবিন কম্বো সেমাফোরে কোনো ওভাররাইড ছাড়াই প্রতি মডেলে সর্বোচ্চ 3টি সমবর্তী অনুরোধের হার্ড-ক্যাপ ছিল, ফলে বেশি সমবর্তী ট্রাফিক ওই সীমার পেছনে ধারাবাহিকভাবে প্রক্রিয়াকৃত হতো। >= 1 হিসেবে যাচাই করা হয় এবং <= 32-এ সীমাবদ্ধ করা হয়।
DISABLE_CONTEXT_WINDOW_CHECKS false open-sse/handlers/chatCore.ts বিপজ্জনক অপ্ট-ইন, যা সরাসরি একক-মডেল অনুরোধের জন্য OmniRoute-এর স্থানীয় কনটেক্সট-উইন্ডো / সর্বোচ্চ-ইনপুট-টোকেন যাচাই এড়িয়ে যায়। আপস্ট্রিম প্রোভাইডারগুলো এখনও তাদের প্রকৃত সীমা প্রয়োগ করে; প্রম্পট কম্প্রেশন এবং মডেলের নিজস্ব আউটপুট-টোকেন সীমা সক্রিয় থাকে। কার্যকর অগ্রাধিকারের ক্রম হলো Feature Flags DB ওভাররাইড > এনভায়রনমেন্ট ভেরিয়েবল > ডিফল্ট; রিস্টার্টের প্রয়োজন নেই।
OMNIROUTE_DISABLE_CONVERSATION_TRACKING (সেট করা নেই) open-sse/services/conversationTracker.ts কথোপকথনের ইতিহাস সংগ্রহ বন্ধ করতে 1 সেট করুন। SQLite পড়া বা মেসেজের ইতিহাস পার্স করার আগেই resolveConversationId() একটি ট্র্যাক না করা ফলাফল ফেরত দেয়, এবং ক্লায়েন্ট-প্রদত্ত সেশন ID-ও এর আওতাভুক্ত। রাউটিং-সেশন পরিচালনা অপরিবর্তিত থাকে এবং বিদ্যমান রেকর্ড মুছে ফেলা হয় না। যেসব ডিপ্লয়মেন্ট ড্যাশবোর্ডের কথোপকথন ভিউ ব্যবহার করে না এবং টার্ন টেবিলের বৃদ্ধি বন্ধ করতে চায়, তাদের জন্য।

. URL ও ক্লাউড সিঙ্ক

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
BASE_URL http://localhost:20128 src/lib/cloudSync.ts অভ্যন্তরীণ সিঙ্ক জব থেকে /api/sync/cloud কল করার জন্য সার্ভার-সাইড URL। অ্যাপটি প্রকাশ্যে প্রক্সি করা হলেও এটিকে লুপব্যাক/কন্টেইনার URL হিসেবে রাখুন।
CLOUD_URL (খালি) src/lib/cloudSync.ts ক্লাউড রিলে এন্ডপয়েন্ট URL (প্রিমিয়াম ফিচার)।
CLOUD_SYNC_TIMEOUT_MS 12000 src/lib/cloudSync.ts ক্লাউড সিঙ্ক অনুরোধের জন্য HTTP টাইমআউট।
OMNIROUTE_BUILD_PROFILE full Webpack বিল্ড কনফিগ বিল্ড-টাইম প্রোফাইল (বান্ডেল থেকে বিশেষাধিকারপ্রাপ্ত মডিউলগুলো বাস্তবে বাদ দিতে minimal-এ সেট করুন)।
OMNIROUTE_STANDALONE_DIR .build/ স্বতন্ত্র আউটপুট scripts/build/colocate-standalone.mjs বিল্ড-পরবর্তী কো-লোকেশন ধাপে ব্যবহৃত স্বতন্ত্র আউটপুট ডিরেক্টরির জন্য বিল্ড-টাইম ওভাররাইড। এটি রানটাইম সেটিং নয়।
OMNIROUTE_CLOUD_SYNC_SECRET (খালি) src/lib/cloudSync.ts Cloud Sync প্রতিক্রিয়ার HMAC-SHA256 স্বাক্ষর যাচাই করতে ব্যবহৃত শেয়ার্ড সিক্রেট।
OMNIROUTE_CLOUD_SYNC_SECRETS false src/lib/cloudSync.ts Cloud Sync এন্ডপয়েন্টকে স্থানীয় ক্রেডেনশিয়াল ওভাররাইট করার অনুমতি দিতে true-এ সেট করুন। ডিফল্ট হলো false
OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE false src/lib/cloudSync.ts কোনো স্থানীয় সিক্রেট কনফিগার করা না থাকলে স্বাক্ষরবিহীন Cloud Sync প্রতিক্রিয়া প্রত্যাখ্যান করতে true-এ সেট করুন (#13679)। এই ফ্ল্যাগ নির্বিশেষে, উপস্থিত স্বাক্ষর সবসময় যাচাই করা হয়—এবং OMNIROUTE_CLOUD_SYNC_SECRET সেট না থাকলে সবসময় প্রত্যাখ্যান করা হয়। v3.9 থেকে ডিফল্টভাবে এটি বলবৎ থাকবে।
OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP false src/app/api/providers/zed/import/route.ts ব্যবহারকারীর নিশ্চিতকরণ ছাড়াই v3.8.5-এর এক-ধাপের "সবকিছু ইমপোর্ট করুন" আচরণে ফিরে যেতে true-এ সেট করুন।
NEXT_PUBLIC_BASE_URL http://localhost:20128 OAuth, ড্যাশবোর্ড, সিঙ্ক OAuth redirect_uri, ড্যাশবোর্ড লিংক এবং জেনারেট করা পাবলিক URL-এর জন্য প্রকাশ্য URL। OAuth কলব্যাক বা জেনারেট করা ব্রাউজার লিংকে একটি ক্যানোনিক্যাল রিভার্স-প্রক্সি হোস্ট ব্যবহার করা আবশ্যক হলে এটিকে স্থিতিশীল পাবলিক URL-এ সেট করুন।
NEXT_PUBLIC_CLOUD_URL (খালি) ক্লায়েন্ট-সাইড CLOUD_URL-এর ক্লায়েন্ট-সাইড মিরর।
NEXT_PUBLIC_APP_URL (সেট করা নেই) src/shared/services/cloudSyncScheduler.ts NEXT_PUBLIC_BASE_URL-এর জন্য লিগ্যাসি ফলব্যাক।
OMNIROUTE_PUBLIC_BASE_URL (সেট করা নেই) পাবলিক-অরিজিন রিজলভার, ইমেজ URL পাবলিক URL তৈরি এবং ড্যাশবোর্ড-বহির্ভূত ব্রাউজার-অরিজিন যাচাইয়ের জন্য ব্যবহৃত সর্বোচ্চ-অগ্রাধিকারের ব্রাউজারমুখী OmniRoute অরিজিন। OpenWebUI বা অন্য কোনো রিলে অভ্যন্তরীণ URL দিয়ে OmniRoute-এ পৌঁছালেও ব্যবহারকারীর ব্রাউজারকে LAN, টানেল বা পাবলিক অরিজিন থেকে জেনারেট করা মিডিয়া আনতে হলে এটি সেট করুন। /v1 অন্তর্ভুক্ত করবেন না
OMNIROUTE_PROVIDER_MANIFEST_URL (সেট করা নেই) open-sse/config/providerPluginManifestUrl.ts সাইডকার ক্লায়েন্টদের কাছে ঘোষিত অ্যাবসোলিউট প্রোভাইডার প্লাগইন ম্যানিফেস্ট URL। সেট না থাকলে OmniRoute অনুরোধের অরিজিন বা HOST/PORT থেকে /api/v1/provider-plugin-manifest নির্ণয় করে।
OMNIROUTE_PUBLIC_PROTOCOL http open-sse/config/providerPluginManifestUrl.ts অনুরোধের অরিজিন ছাড়াই HOST/PORT থেকে প্রোভাইডার প্লাগইন ম্যানিফেস্ট URL নির্ণয়ের সময় ব্যবহৃত প্রোটোকল। স্পষ্ট OMNIROUTE_PROVIDER_MANIFEST_URL সেট করা না থাকলে TLS-টার্মিনেটিং পাবলিক প্রক্সির পেছনে এটিকে https-এ সেট করুন।
OMNIROUTE_TRUST_PROXY (সেট করা নেই) src/server/origin/publicOrigin.ts ফরোয়ার্ড করা পাবলিক-অরিজিন হেডারের জন্য ঐচ্ছিক ট্রাস্ট মোড। সেট না থাকা = নিরাপত্তাসংক্রান্ত সিদ্ধান্তের জন্য Forwarded / X-Forwarded-* বিশ্বাস করবেন না। true / loopback শুধু টোকেন-স্ট্যাম্পযুক্ত লুপব্যাক প্রক্সি থেকে ফরোয়ার্ড করা হোস্ট/প্রোটো বিশ্বাস করে। private / lan ব্যক্তিগত-LAN প্রক্সি পিয়ারকেও বিশ্বাস করে। প্রোডাকশনে স্পষ্ট NEXT_PUBLIC_BASE_URL ব্যবহার করাই শ্রেয়।
KIE_CALLBACK_URL (সেট করা নেই) open-sse/utils/kieTask.ts অ্যাসিঙ্ক্রোনাস kie.ai জবের জন্য পাবলিক কলব্যাক URL। OMNIROUTE_KIE_CALLBACK_URL এবং OMNIROUTE_PUBLIC_URL-এর আগে সর্বোচ্চ-অগ্রাধিকারের ওভাররাইড।
OMNIROUTE_KIE_CALLBACK_URL (সেট করা নেই) open-sse/utils/kieTask.ts KIE_CALLBACK_URL-এর বিকল্প বানান। প্রাথমিক ভেরিয়েবল সেট না থাকলে এটিতে ফলব্যাক করা হয়।
OMNIROUTE_PUBLIC_URL (সেট করা নেই) open-sse/utils/kieTask.ts অ্যাসিঙ্ক কলব্যাক URL তৈরি করতে ব্যবহৃত পাবলিক অরিজিন। kie.ai কলব্যাকের জন্য সর্বনিম্ন-অগ্রাধিকারের ফলব্যাক; অন্যান্য রিলের জন্যও জেনেরিক পাবলিক URL হিসেবে ব্যবহৃত হয়।
OMNIROUTE_CROF_USAGE_URL https://crof.ai/usage_api/ open-sse/services/usage.ts Usage পেজে ব্যবহৃত CrofAI কোটা লুকআপ এন্ডপয়েন্ট। রিলে / টেস্ট ফিক্সচারের জন্য ওভাররাইড করুন।
OMNIROUTE_OPENCODE_QUOTA_URL https://opencode.ai/zen/go/v1/usage open-sse/services/opencodeQuotaFetcher.ts Usage পেজে ব্যবহৃত অফিসিয়াল API-কী-প্রমাণীকৃত OpenCode Go ব্যবহার এন্ডপয়েন্ট। রিলে / টেস্ট ফিক্সচারের জন্য ওভাররাইড করুন।
OPENCODE_SYNTHESIZE_CLI_HEADERS true open-sse/executors/opencode.ts ক্লায়েন্ট পাঠায়নি—এমন opencode-go/zen আপস্ট্রিম অনুরোধে OpenCode CLI পরিচয় হেডার (User-Agent, x-opencode-client/project, অনুরোধ/সেশন UUID) তৈরি করে, যাতে VPS ইগ্রেসে Cloudflare সেগুলো গ্রহণ করে (#6210/#5997)। #10571 থেকে ডিফল্টভাবে চালু; false/0/no/off দিয়ে নিষ্ক্রিয় করুন।
OPENCODE_USER_AGENT opencode open-sse/executors/opencode.ts OPENCODE_SYNTHESIZE_CLI_HEADERS চালু থাকলে এবং প্রতি-প্রোভাইডার <PROVIDER>_USER_AGENT ওভাররাইড সেট না থাকলে ব্যবহৃত ডিফল্ট User-Agent। কেবল opencode এক্সিকিউটরে প্রয়োগ করা হয়।
OPENCODE_CLIENT desktop open-sse/executors/opencode.ts OPENCODE_SYNTHESIZE_CLI_HEADERS চালু থাকলে তৈরি করা x-opencode-client হেডারের মান।
OPENCODE_PROJECT global open-sse/executors/opencode.ts OPENCODE_SYNTHESIZE_CLI_HEADERS চালু থাকলে তৈরি করা x-opencode-project হেডারের মান।
OMNIROUTE_OLLAMA_CLOUD_USAGE_URL https://ollama.com/settings open-sse/services/usage.ts কোটা স্ক্র্যাপিংয়ের জন্য ব্যবহৃত Ollama Cloud সেটিংস URL। রিলে / টেস্ট ফিক্সচারের জন্য ওভাররাইড করুন।
OLLAMA_USAGE_COOKIE (সেট করা নেই) open-sse/services/usage.ts সেটিংস-পেজ থেকে কোটা স্ক্র্যাপিংয়ে ব্যবহৃত Ollama Cloud __Secure-session কুকি। সংবেদনশীল; একাধিক অ্যাকাউন্ট কনফিগার করা থাকলে প্রতি-সংযোগ ড্যাশবোর্ড ফিল্ড ব্যবহার করাই শ্রেয়।
OLLAMA_CLOUD_USAGE_COOKIE (সেট করা নেই) open-sse/services/usage.ts বিকল্প Ollama Cloud __Secure-session কুকি এনভায়রনমেন্ট ভেরিয়েবল। সংবেদনশীল; একাধিক অ্যাকাউন্ট কনফিগার করা থাকলে প্রতি-সংযোগ ড্যাশবোর্ড ফিল্ড ব্যবহার করাই শ্রেয়।
OMNIROUTE_OLLAMA_USAGE_COOKIE (সেট করা নেই) open-sse/services/usage.ts সংক্ষিপ্ত অ্যালিয়াসগুলোর আগে ব্যবহৃত বিকল্প Ollama Cloud __Secure-session কুকি এনভায়রনমেন্ট ভেরিয়েবল। সংবেদনশীল; একাধিক অ্যাকাউন্ট কনফিগার করা থাকলে প্রতি-সংযোগ ড্যাশবোর্ড ফিল্ড ব্যবহার করাই শ্রেয়।
OMNIROUTE_CODEWHISPERER_BASE_URL https://codewhisperer.us-east-1.amazonaws.com open-sse/services/usage.ts CodeWhisperer (AWS Kiro) ব্যবহারসীমা এন্ডপয়েন্ট। রিলে / টেস্ট ফিক্সচারের জন্য ওভাররাইড করুন।

Important

রিভার্স প্রক্সির (nginx, Caddy) পেছনে ডিপ্লয় করার সময়, OAuth কলব্যাক বা তৈরি করা পাবলিক লিংকে ওই হোস্টনেম ব্যবহার করা আবশ্যক হলে NEXT_PUBLIC_BASE_URL-কে আপনার স্থিতিশীল পাবলিক URL-এ (যেমন, https://omniroute.example.com) সেট করুন। এটি না করলে OAuth কলব্যাক ব্যর্থ হতে পারে, কারণ redirect_uri মিলবে না এবং তৈরি করা পাবলিক লিংক অভ্যন্তরীণ কনটেইনার অরিজিনের দিকে নির্দেশ করতে পারে।

সার্ভার-টু-সার্ভার জবের জন্য BASE_URL-কে একটি অভ্যন্তরীণ লুপব্যাক/কনটেইনার URL হিসেবেই রাখুন। ক্রেডেনশিয়াল-বহনকারী অভ্যন্তরীণ সেলফ-ফেচের জন্য ব্রাউজারের Origin বা পাবলিক হোস্টনেম ব্যবহার করবেন না।

প্রমাণীকৃত ড্যাশবোর্ড রাইট অপারেশনের জন্য স্থির পাবলিক বেস URL প্রয়োজন হয় না: ড্যাশবোর্ড একটি সেশন-বাউন্ড CSRF টোকেনসহ একই-অরিজিনের অনিরাপদ রিকোয়েস্ট পাঠায়। নন-ড্যাশবোর্ড ব্রাউজার ইন্টিগ্রেশনের জন্য OmniRoute তবুও পাবলিক-অরিজিন যাচাইকরণকে কেন্দ্রীভূত রাখে: স্পষ্টভাবে নির্ধারিত পাবলিক URL এনভায়রনমেন্ট ভ্যারিয়েবলগুলোকে প্রথমে বিশ্বাস করা হয়; OMNIROUTE_TRUST_PROXY সক্রিয় না থাকলে এবং তাৎক্ষণিক প্রক্সি পিয়ারকে টোকেন দিয়ে বিশ্বস্ত হিসেবে চিহ্নিত না করা হলে অপরিবর্তিত Forwarded / X-Forwarded-* হেডারগুলো উপেক্ষা করা হয়। একই-অরিজিন ড্যাশবোর্ড রিকোয়েস্ট ঠিক করতে CORS সেটিংস ব্যবহার করবেন না; CORS কেবল ক্রস-অরিজিন ব্রাউজার ক্লায়েন্টের জন্য।


8. আউটবাউন্ড প্রক্সি

এগ্রেস নিয়ন্ত্রণ, জিও-রাউটিং বা IP মাস্কিংয়ের জন্য আপস্ট্রিম LLM প্রদানকারীর কলগুলো একটি HTTP বা SOCKS5 প্রক্সির মাধ্যমে রাউট করুন।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
ENABLE_SOCKS5_PROXY true open-sse/executors আপস্ট্রিম কলের জন্য SOCKS5 প্রক্সি এজেন্ট সক্রিয় করে। false দিয়ে অপ্ট-আউট করুন।
NEXT_PUBLIC_ENABLE_SOCKS5_PROXY true ক্লায়েন্ট-সাইড SOCKS5-এর উপলভ্যতা সম্পর্কে ক্লায়েন্ট-সাইড সচেতনতা।
PROXY_SKIP_RECENTLY_FAILED false src/shared/utils/featureFlags.ts অপ্ট-ইন ফিচার ফ্ল্যাগ (FEATURE_FLAGS.md দেখুন; ড্যাশবোর্ড DB ওভাররাইড অগ্রাধিকার পায়)। সদ্য ব্যর্থ হওয়া কোনো সদস্যকে (TCP প্রোব প্রত্যাখ্যাত হলে, অথবা সেটির মাধ্যমে 429 এলে) প্রক্সি পুল এবং প্রতি-অ্যাকাউন্ট রোটেশন পুনরায় পরিবেশন করা কিছু সময়ের জন্য বন্ধ রাখে; প্রতিবার পুনরাবৃত্তিতে সময়টি দ্বিগুণ হয়, সর্বোচ্চ সীমা পর্যন্ত। true (অথবা 1, yes) এটি সক্রিয় করে।
HTTP_PROXY (সেট করা নেই) Node.js স্ট্যান্ডার্ড আপস্ট্রিম কলের জন্য HTTP প্রক্সি।
HTTPS_PROXY (সেট করা নেই) Node.js স্ট্যান্ডার্ড আপস্ট্রিম কলের জন্য HTTPS প্রক্সি।
ALL_PROXY (সেট করা নেই) Node.js স্ট্যান্ডার্ড সার্বজনীন প্রক্সি (socks5:// সমর্থন করে)।
OMNIROUTE_PROXY_ECHO_URL (সেট করা নেই) src/lib/proxyEchoTarget.ts প্রক্সি ইগ্রেস প্রোবে ব্যবহৃত echo-IP টার্গেটকে একটি URL-এ স্থির করে। সেট না থাকলে, প্রোব প্রথমে api64.ipify.org, এরপর api4.ipify.org চেষ্টা করে, যাতে শুধুমাত্র IPv4-সমর্থিত টানেলকে অকার্যকর হিসেবে রিপোর্ট করা না হয় (#9694)।
NO_PROXY (সেট করা নেই) Node.js স্ট্যান্ডার্ড প্রক্সি বাইপাস করার জন্য কমা দিয়ে পৃথক করা হোস্টনেম/IP।
OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS 32 open-sse/utils/proxyDispatcher.ts প্রতিটি ক্যাশ করা HTTP/SOCKS প্রক্সি ডিসপ্যাচারের জন্য একযোগে সক্রিয় সকেটের সর্বোচ্চ সংখ্যা। একাধিক অনুরোধ একই অ্যাকাউন্ট-স্তরের প্রক্সি শেয়ার করলে Codex /v1/responses-এর মতো দীর্ঘস্থায়ী SSE স্ট্রিমের জন্য একটির বেশি সংযোগ প্রয়োজন। 256-এর বেশি মান সীমাবদ্ধ করা হয়।
SOCKS_HANDSHAKE_TIMEOUT_MS 10000 open-sse/utils/socksConnectorWithFamily.ts SOCKS5 হ্যান্ডশেকের (সংযোগ) টাইমআউট, ms-এ। একটি আবাসিক গেটওয়ে হোস্টে উচ্চ সমবর্তী চাপ পড়লে (যেমন 100টি একযোগে অনুরোধ) এটি বাড়ান—প্রক্সি অ্যাক্সেসযোগ্য হলেও পরিপূর্ণ পুলে প্রকৃত হ্যান্ডশেক 10s অতিক্রম করতে পারে, যা অন্যথায় ভুল [Proxy Fast-Fail] Proxy unreachable হিসেবে প্রকাশ পায়। সর্বোচ্চ 120000-এ সীমাবদ্ধ।
PROXY_FAIL_OPEN false src/sse/handlers/chatHelpers.ts false (ডিফল্ট) হলে, নির্ধারিত প্রক্সি রিজলভ করতে ব্যর্থ হওয়া অনুরোধকে সরাসরি সংযোগে ফলব্যাক না করে প্রত্যাখ্যান করা হয় (fail-closed)—এটি প্রকৃত IP ফাঁস প্রতিরোধ করে। পুরোনো DIRECT ফলব্যাক পুনরুদ্ধার করতে true সেট করুন।
ENABLE_TLS_FINGERPRINT false open-sse/executors wreq-js ব্যবহার করে TLS ফিঙ্গারপ্রিন্ট স্পুফ করে (Chrome 124 অনুকরণ করে)। JA3/JA4 ব্লকিং প্রতিহত করে।
TLS_FINGERPRINT_PROVIDERS (সেট করা নেই) open-sse/utils/proxyFetch.ts নতুন প্রক্সিযুক্ত TLS রাউটিংয়ের (open-sse/utils/proxyFetch.ts) জন্য কমা দিয়ে পৃথক করা প্রোভাইডার অ্যালাওলিস্ট। সেট না থাকলে সরাসরি TLS তার পুরোনো আচরণ বজায় রাখে; শুধুমাত্র এই প্রোভাইডারগুলো Chrome-124 ফিঙ্গারপ্রিন্ট ব্রিজের মাধ্যমে রাউট হয়।
OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS false open-sse/services/claudeTurnstileSolver.ts Claude Turnstile Playwright ব্রাউজার কনটেক্সটকে HTTPS সার্টিফিকেট ত্রুটি উপেক্ষা করার অনুমতি দেয়।

পরিস্থিতিসমূহ

পরিস্থিতি কনফিগারেশন
SSH টানেলের মাধ্যমে SOCKS5 ALL_PROXY=socks5://127.0.0.1:7890, ENABLE_SOCKS5_PROXY=true
কর্পোরেট HTTP প্রক্সি HTTP_PROXY=http://proxy.corp.com:3128, HTTPS_PROXY=http://proxy.corp.com:3128, NO_PROXY=localhost,internal.corp.com
অ্যান্টি-ফিঙ্গারপ্রিন্ট ENABLE_TLS_FINGERPRINT=truewreq-js প্রয়োজন (অন্তর্ভুক্ত)
নির্গমন-নিয়ন্ত্রিত / সরাসরি অ্যাক্সেস নেই PROXY_FAIL_OPEN=false অপরিবর্তিত রাখুন (ডিফল্ট)। প্রক্সি অনুপলভ্য হলে সরাসরি সংযোগের মাধ্যমে তথ্য ফাঁস করার পরিবর্তে অনুরোধগুলো সম্পূর্ণরূপে ব্যর্থ হয়।
লিগ্যাসি / ডেভ — সরাসরি ফলব্যাক অনুমোদন করুন PROXY_FAIL_OPEN=true। হার্ডেনিং-পূর্ববর্তী আচরণ পুনরুদ্ধার করে: প্রক্সি রেজোলিউশন ব্যর্থ হলে সরাসরি সংযোগ ব্যবহার করা হয়।

দ্রষ্টব্য (NVIDIA যাচাইকরণ বাইপাস — #3226): NVIDIA-এর API-কী যাচাইকরণ এন্ডপয়েন্ট গ্লোবাল প্রক্সি/TLS-প্যাচড fetch-এর মাধ্যমে রাউট করা হলে আটকে যায় (undici dispatcher → 504)। src/lib/providers/validation.ts::directHttpsRequest() ইচ্ছাকৃতভাবে ওই একটি যাচাইকরণ কলের জন্য safeOutboundFetch({ bypassProxyPatch: true }) ব্যবহার করে প্রক্সি প্যাচ বাইপাস করে। এটি একটি নথিভুক্ত, সীমিত-পরিসরের ব্যতিক্রম — এটি চ্যাট/ব্যবহার-সংক্রান্ত নির্গমনকে প্রভাবিত করে না। বাইপাসটির পরিসর tests/unit/proxy-bypass-scope-guard-3226.test.ts দ্বারা নির্দিষ্টভাবে সীমাবদ্ধ রাখা হয়েছে।


৯. CLI টুল ইন্টিগ্রেশন

OmniRoute কীভাবে CLI সাইডকার (Claude Code, Codex ইত্যাদি) শনাক্ত ও চালু করে, তা নিয়ন্ত্রণ করে।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
CLI_MODE auto src/shared/services/cliRuntime.ts auto = সিস্টেম PATH-এ অনুসন্ধান করে; manual = শুধু স্পষ্টভাবে নির্ধারিত পাথ ব্যবহার করে।
CLI_EXTRA_PATHS (সেট করা নেই) src/shared/services/cliRuntime.ts CLI বাইনারি শনাক্তকরণের জন্য অতিরিক্ত PATH এন্ট্রি (কোলন দিয়ে পৃথক করা)।
CLI_CONFIG_HOME (সেট করা নেই) src/shared/services/cliRuntime.ts CLI কনফিগ (~/.claude, ~/.codex) পড়ার জন্য হোম ডিরেক্টরি ওভাররাইড করে। এটি অবশ্যই অ্যাবসলিউট এবং প্রসেস হোমের ভেতরে হতে হবে — অথবা, কোনো কন্টেইনারে, একটি bind-mounted পাথ হতে হবে (/host-home এভাবেই কাজ করে)। অন্য যেকোনো মানের ক্ষেত্রে হোম ডিরেক্টরি ব্যবহার করা হয়।
CLI_ALLOW_CONFIG_WRITES true src/shared/services/cliRuntime.ts OmniRoute-কে CLI কনফিগ ফাইল লিখতে দেয় (টোকেন রিফ্রেশ, সেশন ডেটা)। প্রতিটি CLI কনফিগ লেখার প্রচেষ্টাকে স্পষ্ট "লেখা নিষ্ক্রিয়" ত্রুটিসহ ব্যর্থ করতে এটিকে false-এ সেট করুন।
CLI_CLAUDE_BIN claude src/shared/services/cliRuntime.ts Claude CLI বাইনারির কাস্টম পাথ।
CLI_CODEX_BIN codex src/shared/services/cliRuntime.ts Codex CLI বাইনারির কাস্টম পাথ।
CLI_DROID_BIN droid src/shared/services/cliRuntime.ts Droid CLI বাইনারির কাস্টম পাথ।
CLI_OPENCLAW_BIN openclaw src/shared/services/cliRuntime.ts OpenClaw CLI বাইনারির কাস্টম পাথ।
CLI_CURSOR_BIN agent, তারপর cursor src/shared/services/cliRuntime.ts Cursor agent বাইনারির কাস্টম পাথ। এটি না থাকলে শনাক্তকরণ প্রথমে agent চেষ্টা করে এবং ব্যর্থ হলে cursor ব্যবহার করে।
CLI_CLINE_BIN cline src/shared/services/cliRuntime.ts Cline CLI বাইনারির কাস্টম পাথ।
CLI_5DIVE_BIN 5dive src/shared/services/cliRuntime.ts 5dive CLI বাইনারির কাস্টম পাথ।
CLI_5DIVE_STATE_DIR /var/lib/5dive src/shared/services/cliRuntime.ts 5dive-এর সিস্টেম স্টেট ডিরেক্টরি (root-মালিকানাধীন auth প্রোফাইল); এটি 5dive-এর নিজস্ব STATE_DIR ডিফল্টকে প্রতিফলিত করে।
CLI_CONTINUE_BIN cn src/shared/services/cliRuntime.ts Continue CLI বাইনারির কাস্টম পাথ।
CLI_QODER_BIN qodercli src/shared/services/cliRuntime.ts Qoder CLI বাইনারির কাস্টম পাথ।
CLI_QWEN_BIN qwen src/shared/services/cliRuntime.ts Qwen Code CLI বাইনারির কাস্টম পাথ।
CLI_AIDER_BIN aider src/shared/services/cliRuntime.ts Aider CLI বাইনারির কাস্টম পাথ।
CLI_GOOSE_BIN goose src/shared/services/cliRuntime.ts Goose CLI বাইনারির কাস্টম পাথ।
CLI_GEMINI_BIN gemini src/shared/services/cliRuntime.ts Google Gemini CLI বাইনারির কাস্টম পাথ — শুধু সার্ভার-পার্শ্বের শনাক্তকরণ/স্বাস্থ্য পরীক্ষার জন্য; omniroute run gemini সিস্টেম PATH থেকে gemini বাইনারি নির্ধারণ করে।
CLI_KILO_BIN kilocode src/shared/services/cliRuntime.ts Kilo Code CLI বাইনারির কাস্টম পাথ।
CLI_OPENCODE_BIN opencode src/shared/services/cliRuntime.ts OpenCode CLI বাইনারির কাস্টম পাথ।
CLI_HERMES_BIN hermes src/shared/services/cliRuntime.ts Hermes বাইনারির কাস্টম পাথ। উভয় ক্যাটালগ এন্ট্রি (hermes এবং hermes-agent) এটি শেয়ার করে।
CLI_FORGE_BIN forge src/shared/services/cliRuntime.ts ForgeCode CLI বাইনারির কাস্টম পাথ।
CLI_JCODE_BIN jcode src/shared/services/cliRuntime.ts jcode CLI বাইনারির কাস্টম পাথ।
CLI_DEEPSEEK_TUI_BIN deepseek-tui src/shared/services/cliRuntime.ts DeepSeek TUI বাইনারির কাস্টম পাথ।
CLI_CODEWHALE_BIN codewhale src/shared/services/cliRuntime.ts CodeWhale CLI বাইনারির কাস্টম পাথ।
CLI_SMELT_BIN smelt src/shared/services/cliRuntime.ts Smelt CLI বাইনারির কাস্টম পাথ।
CLI_PI_BIN pi src/shared/services/cliRuntime.ts Pi (pi-coding-agent) বাইনারির কাস্টম পাথ।
CLI_CRUSH_BIN crush src/shared/services/cliRuntime.ts Crush CLI বাইনারির কাস্টম পাথ।
CLI_OMP_BIN omp src/shared/services/cliRuntime.ts Oh My Pi (omp) agent বাইনারির কাস্টম পাথ।
CLI_LETTA_BIN letta src/shared/services/cliRuntime.ts Letta CLI বাইনারির কাস্টম পাথ।
CLI_PRIME_AGENT_BIN prime-agent src/shared/services/cliRuntime.ts Prime Agent (Prime Intellect) বাইনারির কাস্টম পাথ।
CLI_WINDSURF_BIN (কোনোটিই নয়) src/shared/services/cliRuntime.ts Windsurf বাইনারির কাস্টম পাথ। Windsurf-এর সঙ্গে কোনো ডিফল্ট কমান্ড নেই — এটি সেট না করা পর্যন্ত বাইনারি শনাক্তকরণ নিষ্ক্রিয় থাকে।
CLI_DEVIN_BIN devin open-sse/executors/devin-cli.ts Devin CLI বাইনারির কাস্টম পাথ (v3.8.0)। Windsurf/Devin executor এটি ব্যবহার করে।
DEVIN_DESKTOP_VERSION 3.6.27 open-sse/executors/devin-desktop.ts Devin Desktop ide_version। ওভাররাইডে অবশ্যই x.y.z ফরম্যাট ব্যবহার করতে হবে; অবৈধ মানের ক্ষেত্রে যাচাইকৃত ডিফল্ট ব্যবহার করা হয়।
DEVIN_DESKTOP_EXTENSION_VERSION 1.48.2 open-sse/executors/devin-desktop.ts বান্ডল করা Codeium/language-server extension_version, যা Desktop ide_version থেকে আলাদা। ওভাররাইডে অবশ্যই x.y.z ব্যবহার করতে হবে; অবৈধ মানের ক্ষেত্রে বান্ডল করা ডিফল্ট ব্যবহৃত হয়।
CLI_DEVIN_AGENTIC_BIN devin open-sse/executors/devin-cli-agentic.ts শুধু agentic bridge-এর জন্য Devin CLI ওভাররাইড। executor শুধু লোকাল ACP stdio upstream গ্রহণ করে।
DEVIN_AGENTIC_HOME (আবশ্যক) open-sse/executors/devin-cli-agentic.ts agentic Devin সাবপ্রসেসের জন্য অ্যাবসলিউট বিচ্ছিন্ন হোম; গ্রহণযোগ্য bridge পাথ হলো /home/bridge এবং টাস্ক-লোকাল .sandbox পাথ (Windows-এ, C:\...\.sandbox\...)।
DEVIN_AGENTIC_ACP_TIMEOUT_MS 120000 open-sse/executors/devin-cli-agentic.ts bridge চাইল্ড প্রসেস সমাপ্ত করে স্পষ্ট timeout ফেরত দেওয়ার আগে একটি Devin ACP turn-এর সর্বোচ্চ সময়কাল।
DEVIN_BRIDGE_MODEL devin-cli-agentic/swe-1-7 docker/devin-bridge/compose.yml বিচ্ছিন্ন bridge-এর জন্য প্রধান Claude Code মডেল alias। লাইভ harness উদাহরণটিকে বর্তমান Devin অ্যাকাউন্ট থেকে ফেরত পাওয়া একটি মডেল দিয়ে প্রতিস্থাপন করে।
DEVIN_BRIDGE_SONNET_MODEL DEVIN_BRIDGE_MODEL docker/devin-bridge/compose.yml Claude Code তার Sonnet ডিফল্ট চাইলে ব্যবহৃত বিচ্ছিন্ন bridge alias।
DEVIN_BRIDGE_OPUS_MODEL DEVIN_BRIDGE_MODEL docker/devin-bridge/compose.yml Claude Code তার Opus ডিফল্ট চাইলে ব্যবহৃত বিচ্ছিন্ন bridge alias।
DEVIN_BRIDGE_HAIKU_MODEL DEVIN_BRIDGE_MODEL docker/devin-bridge/compose.yml Claude Code তার Haiku ডিফল্ট চাইলে ব্যবহৃত বিচ্ছিন্ন bridge alias।
DEVIN_BRIDGE_SUBAGENT_MODEL DEVIN_BRIDGE_MODEL docker/devin-bridge/compose.yml Claude Code subagent-এর জন্য ব্যবহৃত বিচ্ছিন্ন bridge alias।
DEVIN_SEAT_API_URL https://server.codeium.com open-sse/services/usage/devinCli.ts Devin CLI quota (GetUserStatus) যে Codeium seat-management API ব্যবহার করে, তার ঐচ্ছিক ওভাররাইড।
AUGGIE_BIN auggie open-sse/executors/auggie.ts লোকাল auggie provider-এর ব্যবহৃত Augment (Auggie) CLI বাইনারির জন্য অ্যাবসলিউট-পাথ ওভাররাইড। এটি না পাওয়া গেলে প্রথমে CLI_AUGGIE_BIN, তারপর PATH lookup ব্যবহার করা হয়।
CLI_AUGGIE_BIN auggie open-sse/executors/auggie.ts Augment (Auggie) CLI বাইনারি পাথের alias ওভাররাইড (AUGGIE_BIN-এর পরে পরীক্ষা করা হয়)।
ZCODE_BIN zcode open-sse/executors/zcode.ts লোকাল zcode provider-এর stdio client-এর জন্য ব্যবহৃত বাইনারি। এটি না পাওয়া গেলে PATH-এর zcode ব্যবহার করা হয়।
ZCODE_ARGS open-sse/executors/zcode.ts cliTools-এর মাধ্যমে চালু করার সময় zcode বাইনারিতে পাঠানো অতিরিক্ত আর্গুমেন্টের JSON array (≤16টি string)।
ZCODE_CWD process.cwd() open-sse/executors/zcode.ts ZCode app-server সাবপ্রসেসের কার্যকরী ডিরেক্টরি।
ZCODE_PROVIDER_ID builtin:zai-coding-plan open-sse/executors/zcode.ts app-server-এ পাঠানো provider id-এর ওভাররাইড।
ZCODE_SERVER_RUNTIME_ROOT ~/.zcode/server open-sse/executors/zcode.ts ZCode app-server runtime-এর root (যেখানে বান্ডল করা node এবং zcode-server.cjs থাকে)।
ZCODE_SERVER_NODE <runtimeRoot>/node open-sse/executors/zcode.ts ZCode app-server হোস্ট করতে ব্যবহৃত Node executable।
ZCODE_SERVER_ENTRY <runtimeRoot>/zcode-server.cjs open-sse/executors/zcode.ts ZCode server হোস্ট করতে ব্যবহৃত app-server entry script।
ZCODE_STARTUP_TIMEOUT_MS 10000 open-sse/executors/zcode.ts একটি ZCode app-server চালু করার প্রচেষ্টা ব্যর্থ বলে বিবেচিত হওয়ার আগের startup timeout (ms)।
ZCODE_RPC_TIMEOUT_MS 30000 open-sse/executors/zcode.ts একটি ZCode app-server call-এর জন্য প্রতি-request RPC timeout (ms)।
ZCODE_TURN_TIMEOUT_MS 120000 open-sse/executors/zcode.ts supervisor একটি ZCode turn-কে timeout করার আগের সর্বোচ্চ সময়কাল (ms)।
ZCODE_POLL_INTERVAL_MS 250 open-sse/executors/zcode.ts ZCode turn সম্পন্ন হয়েছে কি না যাচাইয়ের polling interval (ms)।
HERMES_HOME ~/.hermes src/lib/cli-helper/config-generator/hermesHome.ts Hermes Agent-এর হোম ডিরেক্টরি, যেখানে OmniRoute Hermes CLI কনফিগ পড়ে/লেখে। এটি Windows-এ Hermes PowerShell installer যে env var সেট করে (%LOCALAPPDATA%\hermes), তার সঙ্গে মেলে।

CLI প্রোফাইল স্বয়ংক্রিয় সিঙ্ক

এই ফিচার ফ্ল্যাগগুলো অপ্ট-ইন এবং ডিফল্টভাবে বন্ধ থাকে। এগুলো CLI Code ড্যাশবোর্ড থেকেও চালু বা বন্ধ করা যায়।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES false src/shared/constants/featureFlagDefinitions.ts কোনো প্রোভাইডার মডেল সিঙ্কের পর, লাইভ ক্যাটালগ থেকে ~/.codex/*.config.toml প্রোফাইল ফাইলগুলো স্বয়ংক্রিয়ভাবে পুনরায় লেখে। CLI_ALLOW_CONFIG_WRITES প্রয়োজন; সক্রিয়/ডিফল্ট Codex কনফিগ, auth, Codex-lb সেটিংস বা প্রোভাইডার নির্বাচন কখনো পরিবর্তন করে না।
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES false src/shared/constants/featureFlagDefinitions.ts কোনো প্রোভাইডার মডেল সিঙ্কের পর, লাইভ ক্যাটালগ থেকে ~/.claude/profiles/<name>/settings.json Claude Code প্রোফাইল ফাইলগুলো স্বয়ংক্রিয়ভাবে পুনরায় লেখে। CLI_ALLOW_CONFIG_WRITES প্রয়োজন; সক্রিয়/ডিফল্ট Claude কনফিগ, auth বা প্রোভাইডার নির্বাচন কখনো পরিবর্তন করে না।

Docker উদাহরণ

# হোস্ট বাইনারিগুলো কনটেইনারে মাউন্ট করুন এবং OmniRoute-কে সেগুলোর অবস্থান জানান:
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 কেবল তখনই কার্যকর হয়, যখন পাথটি হোস্ট থেকে সত্যিই bind-mounted থাকে—এটিকে ~/.codex:/host-home/.codex:rw-এর মতো মাউন্টের সঙ্গে ব্যবহার করুন (docker-compose.yml-এর host প্রোফাইল দেখুন)। যে পাথ কনটেইনার ব্যবহারকারীর home-এর ভেতরে নয় এবং bind mount-ও নয়, সেটি উপেক্ষা করা হয়, কারণ সেখানে লেখা ডেটা কনটেইনার পুনরায় তৈরি হলে হারিয়ে যাবে।

ইমেজটি USER node হিসেবে চলে, তাই মাউন্ট না করা /root কোনো বৈধ ওভাররাইড নয়

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_CONTAINER (স্বয়ংক্রিয়) src/shared/utils/containerEnv.ts কনটেইনার শনাক্তকরণ জোরপূর্বক চালু (1/true) বা বন্ধ (0/false) করুন। কেবল সেই রানটাইমগুলোতে প্রয়োজন, যেগুলো স্বয়ংক্রিয় শনাক্তকরণে ধরা পড়ে না।
OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE false src/shared/services/cliRuntime.ts মাউন্ট না করা কনটেইনার পাথে CLI টুলের কনফিগ লেখা তবুও অনুমোদন করুন। এর CLI সমতুল্য হলো --allow-container-write

CLI বাইনারি (omniroute) সহায়কসমূহ

এই ভেরিয়েবলগুলো omniroute CLI বাইনারির নিজস্ব আচরণ নিয়ন্ত্রণ করে (উপরের sidecar শনাক্তকরণ নয়)।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_LANG (সিস্টেম) bin/cli/i18n.mjs CLI আউটপুটের ভাষা নির্ধারণ করুন। BCP-47 লোকেল (যেমন en, pt-BR)। সিস্টেম লোকেল env var-গুলোকে (LC_ALL, LC_MESSAGES) ওভাররাইড করে।
OMNIROUTE_SHOW_LOG (সেট করা নেই) bin/cli/runtime/processSupervisor.mjs supervised মোডে সার্ভারের stdout/stderr টার্মিনালে ফরওয়ার্ড করতে 1 সেট করুন। এটি omniroute serve-এর --log ফ্ল্যাগের সমতুল্য।
OMNIROUTE_CLI_TOKEN (সেট করা নেই) bin/cli/api.mjs x-omniroute-cli-token হেডার হিসেবে প্রবেশ করানো machine-auth টোকেন। টাস্ক 8.12-এ স্বয়ংক্রিয়ভাবে তৈরি হয়।
OMNIROUTE_HTTP_TIMEOUT_MS 30000 bin/cli/api.mjs CLI → সার্ভার অনুরোধের জন্য প্রতিটি প্রচেষ্টার HTTP টাইমআউট (ms)।
OMNIROUTE_READY_TIMEOUT_MS 60000 bin/cli/utils/pid.mjs টাইমআউট সতর্কতা দেখানোর আগে CLI সার্ভারের health endpoint-এর জন্য সর্বোচ্চ যতক্ষণ (ms) অপেক্ষা করে। ধীর cold start-এর ক্ষেত্রে উপযোগী (যেমন Windows)। --ready-timeout দিয়েও সেট করা যায়।
OMNIROUTE_VERBOSE 0 bin/cli/api.mjs CLI কমান্ড চলাকালে retry/backoff ডায়াগনস্টিকস stderr-এ দেখাতে 1 সেট করুন।
OMNIROUTE_PLUGIN_PATH (সেট করা নেই) bin/cli/plugins.mjs CLI প্লাগইন আবিষ্কারের জন্য কাস্টম ডিরেক্টরি (omniroute-cmd-* প্যাকেজ)। সেট করা না থাকলে ডিফল্ট হলো ~/.omniroute/plugins/। শুধু CLI-এর জন্য—এটি কখনো সার্ভার-পক্ষের প্লাগইন স্ক্যানারে পৌঁছায় না, যা OMNIROUTE_PLUGINS_DIR (অনুচ্ছেদ 2) দ্বারা নির্দেশিত হয়।

10. অভ্যন্তরীণ এজেন্ট ও MCP ইন্টিগ্রেশনসমূহ

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_BASE_URL স্বয়ংক্রিয় শনাক্তকরণ open-sse/mcp-server/server.ts MCP/A2A টুলগুলো থেকে OmniRoute-এ পৌঁছানোর জন্য সুস্পষ্ট URL। localhost-এর স্বয়ংক্রিয় শনাক্তকরণকে ওভাররাইড করে।
OMNIROUTE_API_KEY (সেট করা নেই) MCP/A2A মডিউলসমূহ অভ্যন্তরীণ MCP টুল ও A2A স্কিল কলের জন্য API কী।
OMNIROUTE_API_KEY_ID (সেট করা নেই) open-sse/mcp-server/audit.ts MCP অডিট লগ অ্যাট্রিবিউশনের জন্য কী ID।
ROUTER_API_KEY (সেট করা নেই) লিগ্যাসি OMNIROUTE_API_KEY-এর লিগ্যাসি উপনাম।
OMNIROUTE_A2A_HISTORY_RETENTION_DAYS 30 src/lib/a2a/taskManager.ts দৈনিক পরিশোধন প্রক্রিয়া কোনো সারি মুছে ফেলার আগে স্থানীয় ডেটাবেসে A2A টাস্কের ইতিহাস যত দিন রাখা হবে। সেট করা না থাকলে, সংখ্যাসূচক না হলে বা <= 0 হলে 30 ব্যবহৃত হয়।
OMNIROUTE_A2A_MEMORY_HITS 1 src/lib/a2a/taskExecution.ts A2A memory-hits পর্যবেক্ষণযোগ্যতা ফিচারের কিল-সুইচ। কোনো টাস্কের জন্য মেমরি রিকল লুকআপ সম্পূর্ণভাবে এড়িয়ে যেতে এটি 0-এ সেট করুন; অন্য যেকোনো মানে (সেট করা না থাকলেও) এটি সক্রিয় থাকে।
OMNIROUTE_ISSUE_AGENT_ENABLED false src/app/api/issue-agent/runs/route.ts অফলাইন/স্থানীয় Issue Agent-এর রেকর্ডকৃত-ট্রায়াজ এন্ডপয়েন্ট সক্রিয় করে। স্থানীয় রেকর্ডকৃত-ট্রায়াজ ওয়ার্কফ্লো স্পষ্টভাবে চালানো না হলে এটি নিষ্ক্রিয় রাখুন।
OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS (সেট করা নেই) src/lib/issueAgent/execution.ts একটি Issue Agent রেকর্ডকৃত-ট্রায়াজ রান-এর টাইমআউট (ms)। এটি একটি অভ্যন্তরীণ সর্বোচ্চ সীমায় আবদ্ধ থাকে; সেট করা না থাকলে বা অবৈধ হলে বিল্ট-ইন ডিফল্ট ব্যবহৃত হয়।
OMNIROUTE_CONTEXT (সক্রিয় কনটেক্সট) bin/cli/program.mjs, bin/cli/api.mjs omniroute কমান্ডগুলোর জন্য CLI রিমোট-মোড কনটেক্সট/প্রোফাইল; স্থানীয় কনটেক্সট স্টোরের সক্রিয় কনটেক্সটকে ওভাররাইড করে। --context <name>-এর সমতুল্য।
OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED 0 bin/cli/contexts.mjs CLI কনটেক্সট ক্রেডেনশিয়ালের জন্য ঐচ্ছিক keytar OS-keychain ব্যাকএন্ড নিষ্ক্রিয় করে। সক্রিয় করা হলে ক্রেডেনশিয়ালগুলো config.json-এ 0600 মোডে থাকে এবং CLI একবারের একটি ফলব্যাক সতর্কতা দেখায়; এটি ইচ্ছাকৃত হেডলেস/কনটেইনার পরিচালনার জন্য নির্ধারিত।
OMNIROUTE_MCP_ENFORCE_SCOPES true open-sse/mcp-server/server.ts MCP টুল কলে স্কোপ-ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগ করে।
OMNIROUTE_MCP_SCOPES (সব) open-sse/mcp-server/server.ts কমা দিয়ে পৃথক করা স্কোপসমূহ: admin, combos, health, models, routing, budget, metrics, pricing, memory, skills
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS false open-sse/mcp-server/descriptionCompressor.ts ম্যানিফেস্ট সিরিয়ালাইজ করার আগে MCP টুলের বিবরণ কম্প্রেস করে। সক্রিয় করার মান: 1, true, on
OMNIROUTE_MCP_DESCRIPTION_COMPRESSION rtk open-sse/mcp-server/descriptionCompressor.ts কম্প্রেশন অ্যালগরিদম/প্রোফাইল। নিষ্ক্রিয় করার মান: 0, false, off
OMNIROUTE_MCP_FETCH_TIMEOUT_MS 10000 open-sse/mcp-server/fetchTimeout.ts MCP-server-এর অভ্যন্তরীণ ব্যবস্থাপনা রিডের (health, resilience, combos, quota, usage) জন্য বাতিলকরণ সময়সীমা (ms)।
OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS 60000 open-sse/mcp-server/fetchTimeout.ts কোনো প্রদানকারীর জন্য অপেক্ষমাণ MCP হপগুলোর (route_request, web_search, web_fetch) বাতিলকরণ সময়সীমা (ms)।
OMNIROUTE_CORPUS_CACHE_SIZE 5 src/lib/localCorpus/configured.ts মেমরিতে ক্যাশ করা স্থানীয়-কর্পাস ইনডেক্স ইনস্ট্যান্সের সর্বাধিক সংখ্যা (LRU, প্রতি ইনডেক্সকৃত রুট ডিরেক্টরিতে একটি)। সর্বনিম্ন 1-এ সীমাবদ্ধ।
MODEL_SYNC_INTERVAL_HOURS 24 src/shared/services/modelSyncScheduler.ts ঘণ্টায় মডেল ক্যাটালগ সিঙ্কের ব্যবধান।
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES 70 src/lib/usage/providerLimits.ts প্রদানকারীর রেট-লিমিট ও কোটা পোলিংয়ের ব্যবধান।
PROVIDER_LIMITS_SYNC_SPACING_MS 1500 src/lib/usage/providerLimits.ts বাল্ক সিঙ্কে ধারাবাহিক OAuth কোটা ফেচগুলোর মধ্যবর্তী বিরতি (ms); আপস্ট্রিমে একসঙ্গে অতিরিক্ত অনুরোধ পাঠানো এড়াতে OAuth সংযোগগুলো একবারে একটি করে ফেচ করা হয়। 0 দিলে এটি নিষ্ক্রিয় হয় (সমসাময়িক)।
OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS 250 open-sse/services/quotaFetchThrottle.ts প্রতি-অনুরোধ প্রিফ্লাইট/মনিটর পাথে ধারাবাহিক আপস্ট্রিম কোটা ফেচগুলোর মধ্যবর্তী সর্বনিম্ন ব্যবধান (ms); সমসাময়িক নেটওয়ার্ক কলগুলোকে ব্যবধান দিয়ে পাঠায়, যাতে একই IP-তে থাকা বহু অ্যাকাউন্ট একসঙ্গে আপস্ট্রিমে অতিরিক্ত অনুরোধ না পাঠায়। Codex (/wham/usage), DeepSeek, Bailian (উভয় ফেচ সাইট), OpenCode এবং Crof কোটা ফেচারে সংযুক্ত (#6009, #6911)। সাধারণ usage.ts::getUsageForProvider ডিসপ্যাচ পাথ (github/glm/minimax/nanogpt/xai/ইত্যাদি) এখনো এর আওতাভুক্ত নয়—আলাদাভাবে ট্র্যাক করা হচ্ছে। ক্যাশ হিট এতে প্রভাবিত হয় না। 0 দিলে নিষ্ক্রিয় হয়; 0..5000-এর মধ্যে সীমাবদ্ধ।
PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS 5000 src/lib/usage/providerLimits.ts প্রকৃত ব্যবহার ইভেন্টের পর প্রদানকারীর সীমা রিফ্রেশ করার আগের বিলম্ব (ms), যাতে আপস্ট্রিম কোটা API-কে ব্যবহার নিবন্ধনের সময় দেওয়া যায়।
OMNIROUTE_LOGIN_BROWSER_PATH স্বয়ংক্রিয় শনাক্তকরণ open-sse/services/adobeFireflyBrowserLogin.ts ইন্টার্যাক্টিভ Adobe Firefly সাইন-ইন এবং অফ-স্ক্রিন নবায়নের জন্য ব্যবহৃত সিস্টেম Chrome বা Edge এক্সিকিউটেবলের পরম পাথ।
ADOBE_FIREFLY_BROWSER_REFRESH সক্রিয় open-sse/services/adobeFireflySession.ts অ্যাকাউন্ট-স্কোপড Chrome CDP সেশনের মাধ্যমে IMS এবং ব্রাউজার-ঝুঁকি অবস্থা হালনাগাদ রাখে। ব্রাউজার নবায়ন নিষ্ক্রিয় করতে 0 সেট করুন।
ADOBE_FIREFLY_SESSION_DISK সক্রিয় open-sse/services/adobeFireflySession.ts প্রক্রিয়া পুনরারম্ভের পরও ব্যবহারের জন্য মেরামত করা Adobe সেশনগুলো DATA_DIR-এর অধীনে সংরক্ষণ করে। সেশনগুলো শুধু মেমরিতে রাখতে 0 সেট করুন।
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS 12000 open-sse/services/adobeFireflySession.ts Adobe Firefly জেনারেট সাবমিশনগুলোর মধ্যবর্তী সর্বনিম্ন ব্যবধান, মিলিসেকেন্ডে; 0 দিলে ব্যবধান নিষ্ক্রিয় হয়।
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS 15000 open-sse/services/adobeFireflySession.ts প্রতি তৃতীয় সফল Adobe সাবমিশনের পর মিলিসেকেন্ডে অতিরিক্ত নীরব সময়কাল।
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS 8000 open-sse/services/adobeFireflyClient.ts Adobe-এর ক্ষণস্থায়ী 408 প্রতিক্রিয়ার পর মিলিসেকেন্ডে বেস ব্যাকঅফ; সর্বাধিক পাঁচটি প্রচেষ্টা পর্যন্ত সাবমিশন ব্যবধানের সঙ্গে সমন্বিত।
OMNIROUTE_DISABLE_BACKGROUND_SERVICES false src/instrumentation-node.ts সব ব্যাকগ্রাউন্ড সার্ভিস (সিঙ্ক, প্রাইসিং, মডেল রিফ্রেশ) নিষ্ক্রিয় করুন। CI/টেস্টের জন্য উপযোগী।
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS (সেট করা নেই) src/lib/config/runtimeSettings.ts স্বয়ংক্রিয় টেস্ট শনাক্তকরণের মধ্যেও ব্যাকগ্রাউন্ড টাস্ক চালু করতে বাধ্য করুন। টেস্ট হিউরিস্টিক ওভাররাইড করতে 1 সেট করুন।
OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS 600000 src/lib/jobs/budgetResetJob.ts বাজেট রিসেট পরীক্ষার বিরতি (ms)। সর্বনিম্ন 10000
OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS 60000 src/lib/quota/connectionRecovery.ts সক্রিয় সংযোগ-কুলডাউন পুনরুদ্ধারের বিরতি (ms): যেসব সংযোগের সাময়িক rate_limited_until অতিক্রান্ত হয়েছে, সেগুলোকে অনুরোধের হট পাথের বাইরে পুনরায় যাচাই করে। সর্বনিম্ন 5000
OMNIROUTE_DISABLE_CONNECTION_RECOVERY false src/lib/quota/connectionRecovery.ts সক্রিয় সংযোগ-কুলডাউন পুনরুদ্ধার শিডিউলার নিষ্ক্রিয় করুন (getProviderCredentials-এ অলস পুনরুদ্ধার তবুও প্রযোজ্য থাকবে)।
OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS 1800000 src/lib/jobs/reasoningCacheCleanupJob.ts রিজনিং ক্যাশ পরিষ্কারের বিরতি (ms)। সর্বনিম্ন 60000
OMNIROUTE_REASONING_MIN_BUDGET অনির্ধারিত (নিষ্ক্রিয়) open-sse/services/reasoningTokenBuffer.ts থিংকিং-মডেলের আউটপুট বাজেটের জন্য ঐচ্ছিক সর্বনিম্ন সীমা: কলারের max_tokens যদি [256, floor) সীমার মধ্যে থাকে, তবে সেটি সর্বনিম্ন সীমায় উন্নীত হয় (মডেলের আউটপুট সীমা দ্বারা সীমাবদ্ধ)। অনির্ধারিত = ক্লায়েন্টের বাজেট কখনো বাড়ানো হয় না (#9507)।
OMNIROUTE_LOG_EXPORT_CRON 0 * * * * src/lib/jobs/logExportJob.ts প্রতিটি সক্রিয় লগ-এক্সপোর্ট গন্তব্য খালি করে এমন কল-লগ এক্সপোর্ট কাজের Cron এক্সপ্রেশন (UTC)।
OMNIROUTE_CONFIG_HOT_RELOAD_MS 5000 src/lib/config/hotReload.ts কনফিগ হট-রিলোডের পোলিং বিরতি (ms)। 1000-এর কম মান প্রত্যাখ্যান করা হয়।
OMNIROUTE_DISABLE_REDIS_AUTH_CACHE (সক্রিয়) src/lib/db/apiKeys.ts Redis-সমর্থিত API-key প্রমাণীকরণ ক্যাশ এড়িয়ে যেতে 1 সেট করুন (DB রিড বাধ্যতামূলক করে)।
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS 0 open-sse/services/compression/engines/rtk/filterLoader.ts কঠোর স্বাক্ষর যাচাই ছাড়াই ব্যবহারকারী-পরিচালিত RTK প্রকল্প ফিল্টারের নিয়মগুলোকে বিশ্বাস করুন।
OMNIROUTE_LITE_MAX_TOOL_LENGTH 2000 open-sse/services/compression/lite.ts lite.maxToolLength অনির্ধারিত থাকলে Lite-এর সক্রিয় টুল-ফলাফল ছাঁটাইয়ের অক্ষরসীমা। পরিসর 2561000000। এই env-এর চেয়ে ড্যাশবোর্ড সেটিং অগ্রাধিকার পায়।
OMNI_COMPRESSION_WORKERS 2 open-sse/services/compression/compressionWorkerPool.ts একই সময়ে চলা সমকালীন RTK/Caveman ওয়ার্কারের সর্বোচ্চ সংখ্যা; অতিরিক্ত কাজগুলো FIFO ক্রমে অপেক্ষা করে।
OMNI_COMPRESSION_WORKER_TIMEOUT_MS 120000 open-sse/services/compression/compressionWorkerPool.ts প্রতিটি কাজের সময়সীমা মিলিসেকেন্ডে। সময়সীমা অতিক্রম করা ওয়ার্কার বন্ধ করে দেওয়া হয় এবং অনুরোধটি অপরিবর্তিত অবস্থায় ফেইল-ওপেন করে।
OMNI_COMPRESSION_WORKER_IDLE_MS 60000 open-sse/services/compression/compressionWorkerPool.ts অব্যবহৃত কম্প্রেশন ওয়ার্কার বন্ধ করার আগের নিষ্ক্রিয় জীবনকাল, মিলিসেকেন্ডে।
COMPRESSION_PIPELINE_BREAKER_ENABLED false open-sse/services/compression/pipelineEngineBreaker.ts T02 স্ট্যাকড-পাইপলাইনের প্রতি-ইঞ্জিন সার্কিট-ব্রেকারের প্রধান সুইচ। ঐচ্ছিক (ডিফল্টভাবে বন্ধ) — চালু থাকলে, বিভিন্ন অনুরোধে বারবার ব্যতিক্রম ঘটানো ইঞ্জিনকে কুলডাউনের জন্য এড়িয়ে যাওয়া হয় (ফেইল-ওপেন); বন্ধ = বাইট-অভিন্ন পুরোনো আচরণ।
COMPRESSION_PIPELINE_BREAKER_THRESHOLD 3 open-sse/services/compression/pipelineEngineBreaker.ts কোনো ইঞ্জিনের ব্রেকার খোলার আগে বিভিন্ন অনুরোধে পরপর ব্যর্থতার সংখ্যা।
COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS 30000 open-sse/services/compression/pipelineEngineBreaker.ts হাফ-ওপেন পরীক্ষার আগে খোলা কোনো ইঞ্জিনকে যত মিলিসেকেন্ড এড়িয়ে যাওয়া হবে।
COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR 2 open-sse/services/compression/engines/ccr/index.ts T08/H8 CCR পুনরুদ্ধার-প্রতিক্রিয়া র্যাম্প: সংরক্ষিত কোনো ব্লকের প্রতিটি পূর্ববর্তী পুনরুদ্ধার তার কার্যকর minChars সরলরৈখিকভাবে বাড়ায় (ঘন ঘন পুনরুদ্ধার করা কনটেন্ট কম সংকুচিত হয়; >=3টি পুনরুদ্ধার = কখনো সংকুচিত হয় না)। 1 র্যাম্প নিষ্ক্রিয় করে (শুধু থ্রেশহোল্ডে বাইনারি স্কিপ)।
COMPRESSION_CCR_DURABLE_STORE true open-sse/services/compression/engines/ccr/index.ts CCR টেকসই ব্লক স্টোর (#9061)। ইন-মেমরি স্টোরটিকে SQLite দিয়ে ব্যাক করে, যাতে কোনো ব্লক LRU উচ্ছেদ, TTL, রিস্টার্ট অথবা অন্য ইনস্ট্যান্সে পৌঁছানো কোনো রিট্রিভের পরেও টিকে থাকে। ব্লকগুলোকে শুধু মেমরিতে রাখতে false সেট করুন। 512KB-এর বেশি আকারের ব্লক এবং ক্লাউড রানটাইম নির্বিশেষে শুধু মেমরিতেই থাকে।
COMPRESSION_PREFIX_FREEZE_ENABLED false open-sse/services/compression/prefixFreeze.ts T08/H5 ব্যবহার-পর্যবেক্ষিত প্রিফিক্স ফ্রিজের মাস্টার সুইচ। অপ্ট-ইন (ডিফল্টভাবে বন্ধ) — চালু থাকলে, থ্রেশহোল্ডের >= বার পর্যবেক্ষিত কোনো সিস্টেম প্রম্পটকে স্থিতিশীল ক্যাশযোগ্য প্রিফিক্স হিসেবে বিবেচনা করা হয় এবং স্ট্যাটিক ক্যাশ হিউরিস্টিক যেসব প্রোভাইডারকে শনাক্ত করতে পারে না, তাদের ক্ষেত্রেও কম্প্রেশন থেকে সংরক্ষণ করা হয় (ফ্রিজ কেবল সংরক্ষণ করে, কখনো পরিবর্তন করে না)।
COMPRESSION_PREFIX_FREEZE_THRESHOLD 3 open-sse/services/compression/prefixFreeze.ts কোনো সিস্টেম প্রম্পটকে ফ্রোজেন স্থিতিশীল প্রিফিক্স হিসেবে বিবেচনা করার আগে সেটির প্রয়োজনীয় পর্যবেক্ষণসংখ্যা।
OMNIROUTE_BOOTSTRAPPED false src/app/(dashboard)/dashboard/page.tsx প্রাথমিক সেটআপের পরে bootstrap স্ক্রিপ্ট দ্বারা true সেট করা হয়। সেটআপ উইজার্ডের দৃশ্যমানতা নিয়ন্ত্রণ করে।
OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE 0 open-sse/executors/antigravity.ts বিকল্প ব্যবস্থা: রিকোয়েস্ট বডিকে Antigravity প্রজেক্ট ফিল্ড ওভাররাইড করার অনুমতি দেয়।
ANTIGRAVITY_CREDITS off open-sse/services/antigravityCredits.ts Google One AI ক্রেডিট নীতি: off কখনো ক্রেডিট ইনজেক্ট করে না, retry উপযুক্ত কোটা 429-এর পরে একবার ইনজেক্ট করে এবং always প্রথম রিকোয়েস্টেই ইনজেক্ট করে।
ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS 0 open-sse/translator/request/openai-to-gemini.ts আপস্ট্রিম প্রকৃত সিগনেচার প্রত্যাখ্যান করলে Antigravity রিকোয়েস্ট ট্রান্সলেটরকে তার কঠোর CLI রিকোয়েস্ট-সিগনেচার যাচাইকরণ এড়িয়ে যাওয়ার অনুমতি দেয় (ডিবাগ/পুরোনো-CLI মোড)। শূন্য ছাড়া অন্য মান বাইপাসটি সক্রিয় করে।
AGY_TOKEN_FILE ~/.gemini/antigravity-cli/antigravity-oauth-token src/app/api/providers/agy-auth/apply-local/route.ts স্বয়ংক্রিয়ভাবে শনাক্ত করা লোকাল লগইন ইমপোর্টের জন্য Antigravity CLI (agy) token-file পাথ ওভাররাইড করে।

OAuth CLI ব্রিজ (অভ্যন্তরীণ)

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_SERVER স্বয়ংক্রিয় শনাক্তকরণ src/lib/oauth/config/index.ts CLI↔OmniRoute অথ ব্রিজের সার্ভার URL।
OMNIROUTE_TOKEN (সেট করা নেই) src/lib/oauth/config/index.ts CLI ব্রিজের অথ টোকেন।
OMNIROUTE_USER_ID cli src/lib/oauth/config/index.ts CLI ব্রিজ সেশনের ইউজার ID।
SERVER_URL (সেট করা নেই) src/lib/oauth/config/index.ts OMNIROUTE_SERVER-এর লিগ্যাসি উপনাম।
CLI_TOKEN (সেট করা নেই) src/lib/oauth/config/index.ts OMNIROUTE_TOKEN-এর লিগ্যাসি উপনাম।
CLI_USER_ID (সেট করা নেই) src/lib/oauth/config/index.ts OMNIROUTE_USER_ID-এর লিগ্যাসি উপনাম।

11. OAuth প্রদানকারীর ক্রেডেনশিয়াল

localhost ডেভেলপমেন্টের জন্য বিল্ট-ইন ক্রেডেনশিয়াল। রিমোট ডিপ্লয়মেন্টের জন্য, প্রতিটি প্রদানকারীর ডেভেলপার কনসোলে আপনার নিজস্ব ক্রেডেনশিয়াল নিবন্ধন করুন।

ভেরিয়েবল প্রদানকারী নোট
CLAUDE_OAUTH_CLIENT_ID Claude Code (Anthropic) পাবলিক ক্লায়েন্ট — কোনো সিক্রেটের প্রয়োজন নেই।
CLAUDE_CODE_REDIRECT_URI Claude Code রিডাইরেক্ট URI ওভাররাইড করে। ডিফল্ট: https://platform.claude.com/oauth/code/callback
CODEX_OAUTH_CLIENT_ID Codex / OpenAI পাবলিক ক্লায়েন্ট।
GEMINI_OAUTH_CLIENT_ID Gemini (Google) সঙ্গতিপূর্ণ _SECRET প্রয়োজন।
GEMINI_OAUTH_CLIENT_SECRET Gemini (Google)
KIMI_CODING_OAUTH_CLIENT_ID Kimi Coding (Moonshot) পাবলিক ক্লায়েন্ট।
ANTIGRAVITY_OAUTH_CLIENT_ID Antigravity (Google) সঙ্গতিপূর্ণ _SECRET প্রয়োজন।
ANTIGRAVITY_OAUTH_CLIENT_SECRET Antigravity (Google)
GITHUB_OAUTH_CLIENT_ID GitHub Copilot পাবলিক ক্লায়েন্ট।
GHE_COPILOT_OAUTH_CLIENT_ID GHE Copilot GitHub Enterprise Copilot-এর OAuth ক্লায়েন্ট ID-এর জন্য ঐচ্ছিক ওভাররাইড। সেট করা না থাকলে GITHUB_OAUTH_CLIENT_ID-এর পাবলিক ডিফল্ট ব্যবহার করে।
WINDSURF_API_KEY Windsurf / Devin (v3.8) প্রতি-সংযোগের জন্য কোনো ক্রেডেনশিয়াল উপলভ্য না থাকলে open-sse/executors/devin-cli.ts দ্বারা ব্যবহৃত API কী ফলব্যাক। ঐচ্ছিক।
CLI_DEVIN_BIN Devin CLI (v3.8) Devin CLI বাইনারির (devin) কাস্টম পাথ। open-sse/executors/devin-cli.ts দ্বারা নির্ধারিত হয়।
GITLAB_DUO_OAUTH_CLIENT_ID GitLab Duo (v3.8) GitLab Duo-এর জন্য OAuth ক্লায়েন্ট ID। https://gitlab.com/-/profile/applications-এ রিডাইরেক্ট URI <NEXT_PUBLIC_BASE_URL>/callback এবং স্কোপ api, read_user, openid, profile, email সহ একটি অ্যাপ নিবন্ধন করুন। GITLAB_OAUTH_CLIENT_ID ফলব্যাক হিসেবে ব্যবহৃত হয়।
GITLAB_DUO_OAUTH_CLIENT_SECRET GitLab Duo (v3.8) GitLab Duo-এর জন্য OAuth ক্লায়েন্ট সিক্রেট। ঐচ্ছিক — PKCE ফ্লোতে সিক্রেটের প্রয়োজন হয় না। GITLAB_OAUTH_CLIENT_SECRET ফলব্যাক হিসেবে ব্যবহৃত হয়।
GITLAB_DUO_BASE_URL GitLab Duo (v3.8) GitLab বেস URL ওভাররাইড করে (স্ব-হোস্টেড GitLab)। ডিফল্ট হলো https://gitlab.comGITLAB_BASE_URL ফলব্যাক হিসেবে ব্যবহৃত হয়।
GITLAB_BASE_URL GitLab Duo (v3.8) GITLAB_DUO_BASE_URL-এর লিগ্যাসি ফলব্যাক। _DUO_ ভ্যারিয়েন্ট সেট করা না থাকলে ব্যবহৃত হয়।
GITLAB_OAUTH_CLIENT_ID GitLab Duo (v3.8) src/lib/oauth/constants/oauth.ts দ্বারা ব্যবহৃত GITLAB_DUO_OAUTH_CLIENT_ID-এর লিগ্যাসি ফলব্যাক।
GITLAB_OAUTH_CLIENT_SECRET GitLab Duo (v3.8) src/lib/oauth/constants/oauth.ts দ্বারা ব্যবহৃত GITLAB_DUO_OAUTH_CLIENT_SECRET-এর লিগ্যাসি ফলব্যাক।
QODER_OAUTH_CLIENT_SECRET Qoder
QODER_OAUTH_AUTHORIZE_URL Qoder Qoder OAuth সক্রিয় করতে সেট করুন।
QODER_OAUTH_TOKEN_URL Qoder
QODER_OAUTH_USERINFO_URL Qoder
QODER_OAUTH_CLIENT_ID Qoder
QODER_PERSONAL_ACCESS_TOKEN Qoder সরাসরি API কী ফলব্যাক (OAuth বাইপাস করে)।
QODER_CLI_WORKSPACE Qoder Qoder CLI-এর জন্য ওয়ার্কস্পেস ID।
OMNIROUTE_QODER_WORKSPACE Qoder QODER_CLI_WORKSPACE-এর উপনাম।
QODER_CLI_CONFIG_DIR Qoder Qoder CLI কনফিগ ডিরেক্টরি ওভাররাইড করে (বিচ্ছিন্ন PAT সেশন, ব্রাউজার লগইন ওভাররাইট করা এড়ায়)।
BLACKBOX_WEB_VALIDATED_TOKEN Blackbox Web /api/chat-এ validated হিসেবে পাঠানোর জন্য ফ্রন্টএন্ড tk টোকেন। Blackbox টোকেন মিলিয়ে দেখা বাধ্যতামূলক করলে এটি প্রয়োজন; অন্যথায় OmniRoute একটি র্যান্ডম UUID ফলব্যাক হিসেবে ব্যবহার করে। সমস্যা #2252 দেখুন।
VISION_BRIDGE_BASE_URL Vision Bridge guardrail নন-Anthropic vision-bridge কলের জন্য OpenAI-সামঞ্জস্যপূর্ণ বেস URL। ডিফল্ট হিসেবে লিগ্যাসি OpenAI URL env অথবা api.openai.com ব্যবহৃত হয়। এটিকে OmniRoute-এর /v1 সেলফ-লুপ অথবা যেকোনো OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্টের (Gemini OpenAI-compat, OpenRouter) দিকে নির্দেশ করুন। সমস্যা #2232। URL-টি OmniRoute-এর নিজস্ব /v1 হলে, describe সাব-রিকোয়েস্ট x-omniroute-admission-bypass: internal পাঠায় এবং নির্ধারিত সেলফ-লুপ ক্রেডেনশিয়াল (লোকাল মোডে sk_omniroute সেন্টিনেল, অথবা OMNIROUTE_API_KEY / ROUTER_API_KEY — #1350) দিয়ে প্রমাণীকরণ করে, যাতে REQUIRE_API_KEY=true ডিপ্লয়মেন্ট কাজ করে।
VISION_BRIDGE_API_KEY Vision Bridge guardrail উপরের URL-এর জন্য API কী। নন-Anthropic vision-bridge কলের ক্ষেত্রে প্রতি-প্রদানকারীর OpenAI / Google env ভ্যারিয়েবল ওভাররাইড করে। Anthropic মডেলগুলো তাদের নিবেদিত Anthropic কী পাথ ব্যবহার করে। সমস্যা #2232।

Warning

  1. Google Cloud Console → Credentials-এ যান
  2. একটি OAuth 2.0 Client ID তৈরি করুন (ধরন: "Web application")
  3. Authorized redirect URI হিসেবে আপনার সার্ভারের URL যোগ করুন
  4. .env-এ থাকা ক্রেডেনশিয়ালের মানগুলো প্রতিস্থাপন করুন।

12. প্রোভাইডার User-Agent ওভাররাইড

প্রতিটি আপস্ট্রিম প্রোভাইডারের কাছে পাঠানো User-Agent হেডার ওভাররাইড করুন। এক্সিকিউটর বেস ক্লাস রানটাইমে এটি ডায়নামিকভাবে নির্ধারণ করে:

process.env[`${PROVIDER_ID}_USER_AGENT`]

উৎস: open-sse/executors/base.tsbuildHeaders()

ভেরিয়েবল ডিফল্ট মান কখন আপডেট করতে হবে
CLAUDE_USER_AGENT claude-cli/2.1.258 (external, cli) Anthropic যখন নতুন CLI সংস্করণ প্রকাশ করে
CLAUDE_DISABLE_TOOL_NAME_CLOAK false executors/base.ts + executors/cliproxyapi.ts Anthropic-গামী উভয় পাথে (নেটিভ OAuth এবং CLIProxyAPI) তৃতীয়-পক্ষের হারনেস টুলের নাম অবিকল ফরওয়ার্ড করতে 1/true সেট করুন। ডিফল্টভাবে, এক্সিকিউটর Claude Code-বহির্ভূত টুলের নাম নির্ধারিত নিয়মে উপনাম দেয় (যেখানে বিদ্যমান, সেখানে Claude Code-এর ক্যানোনিক্যাল ম্যাপিং; অন্যথায় PascalCase) এবং রেসপন্সে _toolNameMap ব্যবহার করে সেগুলোকে পূর্বাবস্থায় ফিরিয়ে দেয়, যাতে snake_case টুলসহ হারনেসগুলোকে ফিঙ্গারপ্রিন্ট করা তৃতীয়-পক্ষের ক্লায়েন্ট হিসেবে প্রত্যাখ্যান করা না হয়। কেবল ডিবাগিংয়ের জন্য।
CODEX_USER_AGENT codex-cli/0.142.0 (Windows 10.0.26200; x64) OpenAI যখন Codex CLI আপডেট করে
CODEX_CLIENT_VERSION 0.131.0 সম্পূর্ণ UA স্ট্রিং থেকে স্বাধীনভাবে Codex ক্লায়েন্ট সংস্করণ ওভাররাইড করুন
CLAUDE_CODE_CLIENT_VERSION 2.1.258 CLAUDE_USER_AGENT থেকে স্বাধীনভাবে ঘোষিত Claude Code সংস্করণ ওভাররাইড করুন। Anthropic এই মানের ভিত্তিতে কিছু মডেলের অ্যাক্সেস নিয়ন্ত্রণ করে (#12417)।
GITHUB_COPILOT_CLI_VERSION 1.0.81-6 GITHUB_USER_AGENT থেকে স্বাধীনভাবে ঘোষিত Copilot CLI সংস্করণ ওভাররাইড করুন
GITHUB_USER_AGENT GitHubCopilotChat/0.54.0 GitHub Copilot Chat আপডেট হলে
ANTIGRAVITY_USER_AGENT antigravity/2.0.1 darwin/arm64 Antigravity IDE আপডেট হলে
KIRO_USER_AGENT AWS-SDK-JS/3.0.0 kiro-ide/1.0.0 Kiro IDE আপডেট হলে
KIRO_OAUTH_CLIENT_ID kiro-cli Kiro সামাজিক ডিভাইস-কোডের clientId (পাবলিক আইডি) ওভাররাইড করুন
KIRO_VERIFY_FULL_CRC false অপ্ট-ইন: Kiro ইভেন্ট স্ট্রিমে প্রতিটি ফ্রেমের সম্পূর্ণ মেসেজ CRC যাচাইকরণ (দূষিত স্ট্রিম ডিবাগ করার জন্য)
QODER_USER_AGENT Qoder-Cli Qoder CLI আপডেট হলে
CURSOR_USER_AGENT Cursor/3.3 Cursor আপডেট হলে

Tip

{PROVIDER_ID}_USER_AGENT প্যাটার্ন ব্যবহার করে আপনি যেকোনো প্রোভাইডারের জন্য User-Agent ওভাররাইড যোগ করতে পারেন। এক্সিকিউটর ডায়নামিকভাবে env var-এর নাম তৈরি করে।


13. CLI ফিঙ্গারপ্রিন্ট সামঞ্জস্যতা

সক্রিয় করা হলে, OmniRoute অফিসিয়াল CLI টুলগুলোর নির্ভুল স্বাক্ষরের সঙ্গে মিল রাখতে HTTP হেডার এবং JSON বডির ফিল্ডগুলো পুনর্বিন্যাস করে। এটি আপনার প্রক্সি IP অপরিবর্তিত রেখে অ্যাকাউন্ট ফ্ল্যাগ হওয়ার ঝুঁকি কমায়।

উৎস: open-sse/config/cliFingerprints.ts, open-sse/executors/base.ts

প্রদানকারীবিশেষ

ভেরিয়েবল সক্রিয়করণ প্রভাব
CLI_COMPAT_CODEX =1 Codex CLI অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_CLAUDE =1 Claude Code অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_GITHUB =1 GitHub Copilot অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_ANTIGRAVITY =1 Antigravity অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_CURSOR =1 Cursor অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_KIMI_CODING =1 Kimi Coding অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_KILOCODE =1 Kilo Code অনুরোধের স্বাক্ষর অনুকরণ করে
CLI_COMPAT_CLINE =1 Cline অনুরোধের স্বাক্ষর অনুকরণ করে

বৈশ্বিক

ভেরিয়েবল সক্রিয়করণ প্রভাব
CLI_COMPAT_ALL =1 একই সঙ্গে সব প্রদানকারীর জন্য ফিঙ্গারপ্রিন্ট সামঞ্জস্যতা সক্রিয় করে।

Kimi Coding CLI পরিচয় ওভাররাইড

ভেরিয়েবল ডিফল্ট উৎস ফাইল বিবরণ
KIMI_CLI_VERSION 1.36.0 src/lib/oauth/providers/kimi-coding.ts OAuth/API কলের সময় পাঠানো Kimi CLI সংস্করণ ওভাররাইড করে।
KIMI_CODING_DEVICE_ID (ধারণকৃত ডিফল্ট) src/lib/oauth/providers/kimi-coding.ts ক্লায়েন্ট হেডারে ব্যবহৃত ধারণকৃত Kimi ডিভাইস ID ওভাররাইড করে।

Note

এই সুবিধাটি User-Agent ওভাররাইডের (§12) পাশাপাশি কাজ করে। ফিঙ্গারপ্রিন্ট সিস্টেম হেডার ও বডি ফিল্ডের ক্রম নিয়ন্ত্রণ করে, আর User-Agent ওভাররাইড নির্দিষ্ট UA স্ট্রিং নিয়ন্ত্রণ করে। দুটিই স্বাধীনভাবে সক্রিয় করা যায়।


14. API কী প্রদানকারী

সরাসরি প্রমাণীকরণ ব্যবহারকারী প্রদানকারীদের API কী। পছন্দের সেটআপ: ড্যাশবোর্ড → প্রদানকারী → API কী যোগ করুন।

Docker বা হেডলেস ডিপ্লয়মেন্টের বিকল্প হিসেবে এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে সেট করা যায়।

স্বীকৃত প্যাটার্ন: {PROVIDER_ID}_API_KEY

ভেরিয়েবল প্রদানকারী
DEEPSEEK_API_KEY DeepSeek
NVIDIA_API_KEY NVIDIA NIM
JINA_AI_API_KEY Jina AI (Foundation API + Reader ফলব্যাক)
JINA_API_KEY Jina AI (JINA_AI_API_KEY-এর উপনাম)
GEMINI_API_KEY Gemini (Google AI Studio) এমবেডিং + চ্যাট ফলব্যাক
GOOGLE_API_KEY Gemini (GEMINI_API_KEY-এর উপনাম)

Note

Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius এবং Qianfan-এর স্ট্যাটিক ${PROVIDER}_API_KEY এন্ট্রিগুলো v3.8.0-এ সরিয়ে ফেলা হয়েছে, কারণ রানটাইম আর সেগুলো পড়ে না—এই প্রদানকারীরা একচেটিয়াভাবে ড্যাশবোর্ড / data/provider-credentials.json / এনক্রিপ্ট করা DB-এর ওপর নির্ভর করে। মাইগ্রেশন পাথের জন্য এই নথির নিচের অডিট: অপসারিত / অব্যবহৃত ভেরিয়েবল বিভাগটি দেখুন।

Tip

ড্যাশবোর্ডের মাধ্যমে সেট করা কীগুলো SQLite-এ এনক্রিপ্ট করা অবস্থায় সংরক্ষিত হয় এবং এনভায়রনমেন্ট ভেরিয়েবলের চেয়ে অগ্রাধিকার পায়।

Jina: কোনো ড্যাশবোর্ড jina-ai (অথবা শেয়ার করা jina-reader) সংযোগ থাকলে jina-ai/… এমবেডিং, রির্যাঙ্ক, শ্রেণিবিন্যাস, সেগমেন্ট এবং jina-search কোনো ক্লাস্টার env কী-তে বিল করে না—getProviderCredentials হলো fill-first। কোনো ব্যবহারযোগ্য ড্যাশবোর্ড কী না থাকলেই কেবল JINA_AI_API_KEY / JINA_API_KEY ব্যবহার করা হয়। কল লগে env ফলব্যাককে connection_id=env:JINA_AI_API_KEY হিসেবে চিহ্নিত করা হয়। Reader কার্ড (jina-reader, r.jina.ai) কখনোই /v1/embeddings বা /v1/rerank পরিবেশন করে না।

Gemini: gemini/gemini-embedding-2 (google/gemini-embedding-2 উপনাম) প্রথমে ড্যাশবোর্ডের gemini সংযোগ ব্যবহার করে। কোনো ব্যবহারযোগ্য ড্যাশবোর্ড কী না থাকলেই কেবল GEMINI_API_KEY / GOOGLE_API_KEY ব্যবহার করা হয়। কল লগে env ফলব্যাককে connection_id=env:GEMINI_API_KEY হিসেবে চিহ্নিত করা হয়। নেটিভ মাল্টিমোডাল ট্রাফিক :embedContent / :batchEmbedContents-এর বিপরীতে x-goog-api-key ব্যবহার করে—Nটি OpenAI input আইটেম থেকে Nটি ভেক্টর তৈরি হয়।


15. টাইমআউট সেটিংস

সব মান মিলিসেকেন্ডে। কেন্দ্রীভূত রেজোলিউশন src/shared/utils/runtimeTimeouts.ts-এ রয়েছে।

টাইমআউটের ক্রমাধিকার

REQUEST_TIMEOUT_MS (গ্লোবাল ওভাররাইড)
├─→ FETCH_TIMEOUT_MS (আপস্ট্রিম প্রোভাইডার কল, ডিফল্ট: 600000)
│   ├─→ FETCH_HEADERS_TIMEOUT_MS (FETCH_TIMEOUT_MS থেকে উত্তরাধিকারসূত্রে প্রাপ্ত)
│   ├─→ FETCH_BODY_TIMEOUT_MS (FETCH_TIMEOUT_MS থেকে উত্তরাধিকারসূত্রে প্রাপ্ত)
│   ├─→ TLS_CLIENT_TIMEOUT_MS (FETCH_TIMEOUT_MS থেকে উত্তরাধিকারসূত্রে প্রাপ্ত)
│   │   └── TLS_FIRST_BYTE_WATCHDOG_MS (স্বতন্ত্র, ডিফল্ট: 10000)
│   ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (স্বতন্ত্র, ডিফল্ট: 15000)
│   ├── FETCH_CONNECT_TIMEOUT_MS (স্বতন্ত্র, ডিফল্ট: 30000)
│   └── FETCH_KEEPALIVE_TIMEOUT_MS (স্বতন্ত্র, ডিফল্ট: 4000)
├─→ STREAM_IDLE_TIMEOUT_MS (REQUEST_TIMEOUT_MS থেকে উত্তরাধিকারসূত্রে প্রাপ্ত, ডিফল্ট: 600000)
├─→ STREAM_ACTIVE_TIMEOUT_MS (স্বতন্ত্র, ডিফল্ট: 1260000; 0 নিষ্ক্রিয় করে)
├─→ STREAM_READINESS_TIMEOUT_MS (REQUEST_TIMEOUT_MS থেকে উত্তরাধিকারসূত্রে প্রাপ্ত, ডিফল্ট: 80000)
├─→ STREAM_READINESS_MAX_TIMEOUT_MS (অভিযোজিত প্রস্তুতি এক্সটেনশনের সীমা নির্ধারণ করে, ডিফল্ট: 180000)
└─→ API_BRIDGE_PROXY_TIMEOUT_MS (REQUEST_TIMEOUT_MS থেকে উত্তরাধিকারসূত্রে প্রাপ্ত, ডিফল্ট: 30000)
    ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (উদ্ভূত, ডিফল্ট: 300000)
    ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (ডিফল্ট: 60000)
    ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (ডিফল্ট: 5000)
    └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (ডিফল্ট: 0 = নিষ্ক্রিয়)
ভেরিয়েবল ডিফল্ট বিবরণ
REQUEST_TIMEOUT_MS (সেট করা নেই) গ্লোবাল শর্টকাট — FETCH_TIMEOUT_MS এবং STREAM_IDLE_TIMEOUT_MS উভয়ের ডিফল্ট মান ওভাররাইড করে।
FETCH_TIMEOUT_MS 600000 আপস্ট্রিম প্রোভাইডার কলে মোট HTTP অনুরোধের টাইমআউট।
STREAM_IDLE_TIMEOUT_MS 600000 বাতিল করার আগে কাঁচা আপস্ট্রিম বাইটগুলোর মধ্যবর্তী সর্বোচ্চ নীরবতার সময়। এক্সটেন্ডেড-থিংকিং মডেল খুব কম ক্ষেত্রেই >90s বিরতি নেয়।
STREAM_ACTIVE_TIMEOUT_MS 1260000 সক্রিয় SSE স্ট্রিমের সর্বোচ্চ মোট আয়ুষ্কাল; আপস্ট্রিম বাইট এলে এটি কখনো রিসেট হয় না এবং REQUEST_TIMEOUT_MS থেকে স্বাধীন। রেজিস্ট্রিতে থাকা প্রতি-মডেলের সর্ববৃহৎ timeoutMs (1200000, Codex)-এর সঙ্গে 60000 মার্জিন যোগ করে এটি নির্ধারিত, যাতে সম্পূর্ণ বরাদ্দকৃত সময় ধরে চলার অনুমতিপ্রাপ্ত কোনো মডেলকে উত্তরের মাঝপথে বন্ধ করা না হয়। নিষ্ক্রিয় করতে 0 সেট করুন।
OMNIROUTE_SSE_COMMENTS (নিষ্ক্রিয়) OmniRoute SSE : মন্তব্যের লাইন (যেমন : keepalive হার্টবিট এবং x-omniroute-* মেটাডেটা ট্রেলার) নির্গত করতে পারবে কি না। ডিফল্টভাবে নিষ্ক্রিয় (#10524), কারণ কঠোর OpenAI-সামঞ্জস্যপূর্ণ ক্লায়েন্টগুলো প্রতিটি SSE লাইনে JSON.parse প্রয়োগ করে এবং : মন্তব্যে ক্র্যাশ করে; data: হার্টবিট এতে প্রভাবিত হয় না। পুনরায় সক্রিয় করতে on/true/1/yes সেট করুন। open-sse/utils/sseHeartbeat.ts দ্বারা ব্যবহৃত।
STREAM_READINESS_TIMEOUT_MS 80000 প্রথম নন-পিং SSE ইভেন্ট পাওয়ার সময়সীমা। REQUEST_TIMEOUT_MS সেট করা থাকলে সেটির মান উত্তরাধিকারসূত্রে পায়।
STREAM_READINESS_MAX_TIMEOUT_MS 180000 বড়, টুল-নির্ভর বা উচ্চ-রিজনিং স্ট্রিমিং অনুরোধের জন্য সর্বোচ্চ অভিযোজিত প্রথম-ইভেন্ট প্রস্তুতি উইন্ডো।
OMNIROUTE_AGENT_GOAL_POLICY_ENABLED true /goal হিউরিস্টিকের জন্য কিল-সুইচ। শনাক্তকরণ সম্পূর্ণরূপে নিষ্ক্রিয় করতে false/0/off সেট করুন — অনুরোধের বডি/হেডার দ্বারা প্রস্তুতি টাইমআউট এবং স্ট্রিম পুনরুদ্ধার কখনো বাড়ানো হবে না, ফলে ক্লায়েন্ট-নিয়ন্ত্রিত টাইমআউট বৃদ্ধির ঝুঁকি কমে।
OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS 600000 শনাক্ত করা /goal এজেন্ট রান বা x-omniroute-agent-goal দিয়ে বাধ্যতামূলক করা অনুরোধের জন্য সর্বোচ্চ প্রথম-ইভেন্ট প্রস্তুতি উইন্ডো।
OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY true শনাক্ত করা /goal এজেন্ট রানের জন্য স্বয়ংক্রিয়ভাবে প্রাথমিক স্ট্রিম পুনরুদ্ধার সক্রিয় করুন। লক্ষ্য-নির্দিষ্ট অপ্ট-ইন নিষ্ক্রিয় করতে false/0/off সেট করুন। এটি কেবল অপারেটরের ডিফল্টের ওপর পুনরুদ্ধার যোগ করতে পারে — এটি কখনো স্পষ্ট STREAM_RECOVERY_ENABLED/DB সেটিংসের অপ্ট-আউট ওভাররাইড করে না।
OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS true যেসব অ-মানক codex.* SSE ইভেন্ট (যেমন codex.rate_limits) OpenAI SDK-এর responses.stream()-কে 502 ত্রুটিসহ ব্যর্থ করে, সেগুলো বাদ দিন। ডিফল্টভাবে চালু (#11014)। সেগুলো ফরওয়ার্ড করতে 0/false/no/off সেট করুন।
OMNIROUTE_CODEX_APPSERVER_WS (সেট করা নেই) অপ্ট-ইন Codex app-server ট্রান্সপোর্ট। স্থানীয় codex app-server সাইডকারের WebSocket এন্ডপয়েন্ট (ws:///wss://)। এটি একটি টোকেনের সঙ্গে সেট করা হলে Codex অনুরোধগুলো HTTP Responses API-এর পরিবর্তে JSON-RPC-এর মাধ্যমে সাইডকারে রাউট করা হয়। প্রতি সংযোগের জন্য providerSpecificData.codexAppServerUrl দিয়েও সেট করা যায়। open-sse/executors/codex/appServerConfig.ts দ্বারা ব্যবহৃত।
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN (সেট করা নেই) app-server-এর কাছে উপস্থাপিত ইনলাইন ক্যাপাবিলিটি/বেয়ারার টোকেন। প্রতি-সংযোগ ওভাররাইড: providerSpecificData.codexAppServerToken
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE (সেট করা নেই) app-server ক্যাপাবিলিটি টোকেন ধারণকারী ফাইলের পাথ (codex app-server --ws-token-file থেকে)। OMNIROUTE_CODEX_APPSERVER_WS_TOKEN সেট করা না থাকলে ব্যবহৃত হয়। প্রতি-সংযোগ ওভাররাইড: providerSpecificData.codexAppServerTokenFile
OMNIROUTE_CODEX_APPSERVER_CWD /tmp যে কার্যকরী ডিরেক্টরিতে app-server টার্নটি চলে। প্রতি-সংযোগ ওভাররাইড: providerSpecificData.codexAppServerCwd
OMNIROUTE_CODEX_APPSERVER_APPROVAL (সেট করা নেই) app-server টার্নে পাঠানো অনুমোদন নীতি (যেমন never, on-request)। প্রতি-সংযোগ ওভাররাইড: providerSpecificData.codexAppServerApprovalPolicy
OMNIROUTE_CODEX_APPSERVER_SANDBOX (সেট করা নেই) app-server টার্নে পাঠানো স্যান্ডবক্স নীতি (যেমন read-only, workspace-write, danger-full-access)। সেট করা না থাকলে এক্সিকিউটর ডিফল্ট হিসেবে workspace-write ব্যবহার করে (আরও সুরক্ষিত; আগে danger-full-access ছিল)। প্রতি-সংযোগ ওভাররাইড: providerSpecificData.codexAppServerSandbox
OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE false app-server-এর নিজস্ব অনুমোদন প্রম্পটগুলো (হোস্টে কমান্ড/ফাইল/অনুমতি কার্যকর করা) স্বয়ংক্রিয়ভাবে অনুমোদন করুন। ডিফল্টভাবে বন্ধ — প্রম্পটগুলো স্বয়ংক্রিয়ভাবে প্রত্যাখ্যাত হয়; হারনেস টুল কলগুলো প্রভাবিত হয় না (সেগুলো পৃথক item/tool/call পাসথ্রুর মাধ্যমে যায়)। true/1/yes গ্রহণ করে। প্রতি-সংযোগ ওভাররাইড: providerSpecificData.codexAppServerAutoApprove
FETCH_HEADERS_TIMEOUT_MS = FETCH_TIMEOUT_MS রেসপন্স হেডার পাওয়ার সময়সীমা।
OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS 30000 (30s) প্রতিটি সরাসরি নো-প্রক্সি প্রচেষ্টায় প্রতিক্রিয়া শুরু হওয়ার জন্য অপেক্ষার সর্বোচ্চ সময় (ms)। টাইমআউট হলে একটি নতুন সকেটে একবার পুনরায় চেষ্টা করা হয়; সীমাটি নিষ্ক্রিয় করে আগের আচরণ বজায় রাখতে 0 সেট করুন।
FETCH_BODY_TIMEOUT_MS = FETCH_TIMEOUT_MS সম্পূর্ণ প্রতিক্রিয়া বডি পাওয়ার সময়সীমা।
FETCH_CONNECT_TIMEOUT_MS 30000 TCP সংযোগ স্থাপনের টাইমআউট।
FETCH_KEEPALIVE_TIMEOUT_MS 4000 Keep-alive সকেটের নিষ্ক্রিয়তার টাইমআউট।
TLS_CLIENT_TIMEOUT_MS = FETCH_TIMEOUT_MS TLS ফিঙ্গারপ্রিন্ট প্রক্সির (wreq-js) টাইমআউট।
TLS_FIRST_BYTE_WATCHDOG_MS 10000 বিশেষভাবে wreq-js TLS-ফিঙ্গারপ্রিন্ট ট্রান্সপোর্টের বডির প্রথম বাইট পাওয়ার সময় সীমাবদ্ধ করে; শুধু TLS_CLIENT_TIMEOUT_MS স্থবির বডি শনাক্ত করতে পারে না, কারণ হেডার আসামাত্র এটি সমাধান হয়ে যায় (#12656)। টাইমআউট হলে wreq রিডার বাতিল করা হয় এবং সরাসরি/প্রক্সি ডিসপ্যাচারে ফিরে যাওয়া হয়; 0 ওয়াচডগ নিষ্ক্রিয় করে।
RESPONSES_FIRST_BYTE_TIMEOUT_MS 15000 শুধু OpenCode এক্সিকিউটরের জন্য এবং কেবল OPENCODE_RESPONSES_STALL_ROTATION ফিচার ফ্ল্যাগ চালু থাকলে (ডিফল্টভাবে বন্ধ): হেডার আসার পর স্ট্রিম করা Responses উত্তরের বডির প্রথম বাইটের জন্য অপেক্ষার সময় সীমাবদ্ধ করে (#13484)। একটি Responses স্ট্রিম response.created দিয়ে শুরু হয়, তাই এই সময়সীমার পরও কোনো ডেটা না এলে সেটি স্থবিরতা হিসেবে গণ্য হয়: অ্যাকাউন্টটিকে কুলডাউন করা হয় এবং অনুরোধটি একবার পরবর্তী অ্যাকাউন্টে ঘোরানো হয়; দ্বিতীয়বার স্থবির হলে দ্রুত ব্যর্থ হয়। ফ্ল্যাগ চালু থাকলেও 0 সুরক্ষাটি নিষ্ক্রিয় করে।
API_BRIDGE_PROXY_TIMEOUT_MS 30000 /v1 ব্রিজ অনুরোধের জন্য প্রক্সি হপ টাইমআউট।
FIRECRAWL_BASE_URL https://api.firecrawl.dev Firecrawl ওয়েব-ফেচ এক্সিকিউটরকে একটি স্ব-হোস্ট করা ইনস্ট্যান্সে নির্দেশ করুন (ক্লাউডের বাইরে API কী ঐচ্ছিক)।
FIRECRAWL_TIMEOUT_MS 30000 Firecrawl ওয়েব-ফেচ এক্সিকিউটরের প্রতিটি অনুরোধের টাইমআউট।
API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS 300000 ব্রিজের জন্য সার্বিক সার্ভার অনুরোধের টাইমআউট।
API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS 60000 ব্রিজের মাধ্যমে প্রতিক্রিয়া হেডার পাঠানোর সময়সীমা।
API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS 5000 ব্রিজের keep-alive নিষ্ক্রিয়তার টাইমআউট।
API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS 0 কাঁচা সকেটের টাইমআউট (0 = নিষ্ক্রিয়)।
SHUTDOWN_TIMEOUT_MS 30000 জোরপূর্বক প্রস্থান করার আগে SIGTERM/SIGINT-এর পর অবকাশকাল।
OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS 120000 FETCH_TIMEOUT_MS সেট করা না থাকলে src/shared/utils/fetchTimeout.ts দ্বারা ব্যবহৃত ফলব্যাক।
OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS 8000 src/shared/network/safeOutboundFetch.ts-এ validationRead এবং modelsProbe প্রিসেটগুলোর টাইমআউট (ms)। ড্যাশবোর্ডে সক্রিয়/ত্রুটি অবস্থার মধ্যে বারবার ওঠানামা ঠেকাতে ধীর এন্ডপয়েন্টের (Cerebras, Cloudflare AI, Groq) জন্য এটি বাড়ান। অবৈধ (<1000) বা অ-সাংখ্যিক মানের ক্ষেত্রে 8000ms-এ ফিরে যায়।
OMNIROUTE_RELAY_FETCH_TIMEOUT_MS 25000 open-sse/utils/proxyFetch.ts-এ রিলে-নির্দিষ্ট ফেচ টাইমআউট (#9158)। আটকে থাকা রিলেকে ক্লায়েন্ট/এজেন্ট টাইমআউটের (~30s) আগেই ব্যর্থ হতে হবে, যাতে কলকারীরা সাধারণ আপস্ট্রিম টাইমআউটের পরিবর্তে রিলে-নির্দিষ্ট ব্যর্থতা দেখতে পান। এটি সর্বদা আগে কার্যকর হওয়া নিশ্চিত করতে সর্বোচ্চ 29000-এ সীমাবদ্ধ।
OMNIROUTE_RETRY_BACKOFF_MS 10 open-sse/utils/proxyFetch.ts-এ সরাসরি/রিলে/প্রক্সির একবার-পুনঃচেষ্টা পাথগুলোর জন্য শেয়ার করা পুনঃচেষ্টা ব্যাকঅফ (#9158)। 0 = অবিলম্বে পুনরায় চেষ্টা।
OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS 60000 নেটিভ wreq-js অনুরোধের টাইমআউট (claudeTlsClient.ts)।
OMNIROUTE_CLAUDE_TLS_GRACE_MS 10000 নেটিভ টাইমআউটের সঙ্গে যোগ করা চূড়ান্ত JS হার্ড-ডেডলাইনের অতিরিক্ত সময়।
OMNIROUTE_PPLX_TLS_TIMEOUT_MS 30000 নেটিভ wreq-js অনুরোধের টাইমআউট (perplexityTlsClient.ts)।
OMNIROUTE_PPLX_TLS_GRACE_MS 10000 নেটিভ টাইমআউটের সঙ্গে যোগ করা চূড়ান্ত JS হার্ড-ডেডলাইনের অতিরিক্ত সময়।
OMNIROUTE_PPLX_SEARCH_HINT 0 (বন্ধ) কলকারীর সিস্টেম বার্তায় "আপনার বিল্ট-ইন ওয়েব সার্চ রয়েছে। সার্চের ফলাফল ব্যবহার করে সরাসরি প্রশ্নের উত্তর দিন।" যোগ করে (perplexity-web/protocol.ts)। ডিফল্টভাবে বন্ধ — Perplexity এমনিতেই সার্চ করে, এবং বাক্যটি কোডিং ক্লায়েন্টের উত্তরে মেটা-মন্তব্য হিসেবে প্রকাশিত হয়ে যায়। পুনরুদ্ধার করতে 1/true/yes/on সেট করুন।
OMNIROUTE_GROK_TLS_TIMEOUT_MS 60000 নেটিভ wreq-js অনুরোধের টাইমআউট (grokTlsClient.ts)।
OMNIROUTE_GROK_TLS_GRACE_MS 10000 নেটিভ টাইমআউটের সঙ্গে যোগ করা পরম JS হার্ড-ডেডলাইনের অতিরিক্ত সময়।
OMNIROUTE_NOTION_TLS_TIMEOUT_MS 30000 নেটিভ wreq-js অনুরোধের টাইমআউট (notionTlsClient.ts); দীর্ঘ জেনারেশনের জন্য notion-web প্রতি অনুরোধে এটিকে বাড়িয়ে 180000 করে।
OMNIROUTE_NOTION_TLS_GRACE_MS 10000 নেটিভ টাইমআউটের সঙ্গে যোগ করা পরম JS হার্ড-ডেডলাইনের অতিরিক্ত সময়।
OMNIROUTE_BROWSER_POOL on ব্রাউজার-সমর্থিত ওয়েব-কুকি চ্যাটের জন্য শেয়ার করা Playwright ব্রাউজার পুল (browserPool.ts); নিষ্ক্রিয় করতে off সেট করুন।
OBSCURA_BIN auto-detect ব্রাউজার পুল ও Cloudflare Playground এক্সিকিউটরের প্রাথমিক ইঞ্জিন হিসেবে ব্যবহৃত obscura বাইনারির পাথ (open-sse/services/obscura.ts); সেট করা না থাকলে সিস্টেম PATH থেকে স্বয়ংক্রিয়ভাবে শনাক্ত করা হয়।
OBSCURA_CDP_ENDPOINT (সেট করা নেই) নতুন একটি চালু করার বদলে ইতিমধ্যে চলমান Obscura-কে (http://host:port) নির্দেশ করুন; মডিউলটি ওই প্রক্রিয়াটির মালিক নয় (open-sse/services/obscura.ts)।
OBSCURA_PORT random free port চালু করা obscura serve-এর জন্য নির্দিষ্ট পোর্ট; সেট করা না থাকলে একটি খালি পোর্ট স্বয়ংক্রিয়ভাবে বেছে নেওয়া হয় (open-sse/services/obscura.ts)।
WEB_COOKIE_USE_BROWSER 0 একটি ওয়েব-কুকি চ্যাট অনুরোধকে ব্রাউজার-সমর্থিত পাথ ব্যবহারের জন্য নির্বাচন করুন (browserBackedChat.ts); সক্রিয় করতে 1
KIMI_WEB_BASE_URL https://www.kimi.ai Kimi Web (আন্তর্জাতিক kimi.ai Connect-RPC) এক্সিকিউটরের বেস URL (kimi-web.ts); শুধু মিরর/প্রক্সি এন্ডপয়েন্টের জন্য ওভাররাইড করুন।
KIMI_WEB_CHAT_URL <KIMI_WEB_BASE_URL>/apiv2/kimi.gateway.chat.v1.ChatService/Chat Kimi Web এক্সিকিউটরের সম্পূর্ণ চ্যাট এন্ডপয়েন্ট (kimi-web.ts)।
OMNIROUTE_LOGIN_BROWSER_PATH (স্বয়ংক্রিয়ভাবে শনাক্ত) Adobe Firefly ইন্টার্যাক্টিভ ব্রাউজার সাইন-ইনের জন্য সিস্টেম Chrome/Edge এক্সিকিউটেবলের পাথ (adobeFireflyBrowserLogin.ts); প্রতি-OS স্বয়ংক্রিয় শনাক্তকরণকে ওভাররাইড করে।
OMNIROUTE_STANDALONE_DIR .build/ স্ট্যান্ডঅ্যালোন আউটপুট পোস্ট-বিল্ড কোলোকেশন ধাপে ব্যবহৃত স্ট্যান্ডঅ্যালোন আউটপুট ডিরেক্টরির জন্য বিল্ড-টাইম ওভাররাইড (scripts/build/colocate-standalone.mjs); এটি বিল্ড টুলিংয়ের জন্য, রানটাইমের জন্য নয়।

কম্বো টার্গেটের প্রচেষ্টাগুলো নির্ধারিত আপস্ট্রিম অনুরোধের টাইমআউট (FETCH_TIMEOUT_MS, অথবা যখন এটি fetch-এর ডিফল্ট সরবরাহ করে তখন REQUEST_TIMEOUT_MS) উত্তরাধিকারসূত্রে পায়। কম্বো ফলব্যাক দ্রুততর করতে শুধু একটি কম্বো, কম্বোর ডিফল্ট, অথবা প্রোভাইডার ওভাররাইডে targetTimeoutMs সেট করুন; বর্তমান আপস্ট্রিম টাইমআউটের চেয়ে বেশি মান আপস্ট্রিম টাইমআউটেই সীমাবদ্ধ করা হয়।

comboTimeoutMs হলো ফেইলওভার টার্গেটগুলো জুড়ে সম্পূর্ণ কম্বোর জন্য আলাদা একটি ওয়াল-ক্লক সময়সীমা। সীমাহীন পুনরাবৃত্তি বজায় রাখতে এটিকে সেট না করে রাখুন অথবা 0 রাখুন (১০ মিনিটের COMBO_LOOP_SAFETY_TIMEOUT_MS হ্যাং-স্টপ তখনও প্রযোজ্য)। একটি ধনাত্মক মান কম্বোর জন্য ওই নিরাপত্তা সীমাটি প্রতিস্থাপন করে। comboTimeoutMs-কে targetTimeoutMs-এর চেয়ে দীর্ঘ রাখুন, যাতে ধীরগতির প্রথম টার্গেটের পরেও ফেইলওভারের জন্য সময় থাকে।

সার্কিট ব্রেকারের থ্রেশহোল্ড

প্রোভাইডার-স্তরের সার্কিট ব্রেকার টিউনিং। ডিফল্টগুলো v3.6 থেকে 500+ সংযোগের জন্য ব্যবহৃত স্কেল করা মান প্রতিফলিত করে।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD 8 open-sse/config/constants.ts ব্রেকার ট্রিপ করার আগে OAuth প্রদানকারীদের ধারাবাহিক ব্যর্থতার সীমা।
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS 60000 open-sse/config/constants.ts OAuth প্রদানকারী ব্রেকারের রিসেট উইন্ডো (ms)।
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD 12 open-sse/config/constants.ts API-key প্রদানকারীদের ধারাবাহিক ব্যর্থতার সীমা।
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS 30000 open-sse/config/constants.ts API-key প্রদানকারী ব্রেকারের রিসেট উইন্ডো (ms)।
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD 2 open-sse/config/constants.ts লোকাল প্রদানকারীদের (Ollama, LM Studio, ...) ধারাবাহিক ব্যর্থতার সীমা।
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS 15000 open-sse/config/constants.ts লোকাল প্রদানকারী ব্রেকারের রিসেট উইন্ডো (ms)।
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD 10 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: সম্পূর্ণ OAuth প্রদানকারী কুলডাউনে প্রবেশ করার আগে উইন্ডোর মধ্যে ব্যর্থতার সংখ্যা।
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS 900000 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: OAuth প্রদানকারীদের জন্য রোলিং ব্যর্থতা-গণনা উইন্ডো (ms)।
OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS 300000 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: OAuth প্রদানকারীর সীমায় পৌঁছানোর পর কুলডাউন (ms)।
OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD 5 open-sse/config/constants.ts এতগুলো ব্যর্থতায় OAuth প্রদানকারী DEGRADED অবস্থায় প্রবেশ করে।
OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER 8 open-sse/config/constants.ts OAuth প্রদানকারীর সর্বোচ্চ resetTimeout বৃদ্ধির গুণক।
OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT 2 open-sse/config/constants.ts এতগুলো ওপেন চক্রের পর OAuth প্রদানকারীর ব্যাকঅফ বৃদ্ধি পায়।
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD 15 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: সম্পূর্ণ API-key প্রদানকারী কুলডাউনে প্রবেশ করার আগে উইন্ডোর মধ্যে ব্যর্থতার সংখ্যা।
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS 1800000 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: API-key প্রদানকারীদের জন্য রোলিং ব্যর্থতা-গণনা উইন্ডো (ms)।
OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS 600000 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: API-key প্রদানকারীর সীমায় পৌঁছানোর পর কুলডাউন (ms)।
OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD 7 open-sse/config/constants.ts এতগুলো ব্যর্থতায় API-key প্রদানকারী DEGRADED অবস্থায় প্রবেশ করে।
OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER 4 open-sse/config/constants.ts API-key প্রদানকারীর সর্বোচ্চ resetTimeout বৃদ্ধির গুণক।
OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT 3 open-sse/config/constants.ts এতগুলো ওপেন চক্রের পর API-key প্রদানকারীর ব্যাকঅফ বৃদ্ধি পায়।
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD 2 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: সম্পূর্ণ লোকাল প্রদানকারী কুলডাউনে প্রবেশ করার আগে ব্যর্থতার সংখ্যা।
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS 300000 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: লোকাল প্রদানকারীদের জন্য রোলিং ব্যর্থতা-গণনা উইন্ডো (ms)।
OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS 60000 open-sse/config/constants.ts প্রদানকারী-স্তরের ব্রেকার: লোকাল প্রদানকারীর সীমায় পৌঁছানোর পর কুলডাউন (ms)।
PIN_DROP_BACKOFF_LEVEL 2 open-sse/services/combo.ts যে ব্যাকঅফ গভীরতায় একটি context-cache পিনের প্রদানকারীকে স্থায়ীভাবে অস্বাস্থ্যকর বলে গণ্য করা হয় এবং ফেইলওভারের জন্য পিনটি সরিয়ে দেওয়া হয়।
PIN_DROP_GRACE_MS 20000 open-sse/services/combo.ts context-cache পিন সরানোর আগে স্বল্পস্থায়ী ক্ষণিকের কুলডাউন সহ্য করার অ্যান্টি-ফ্ল্যাপ উইন্ডো (ms)।

পরিস্থিতি

পরিস্থিতি কনফিগারেশন
দীর্ঘমেয়াদি কোড জেনারেশন REQUEST_TIMEOUT_MS=900000 (15 মিনিট)
মোট স্ট্রিমের আয়ুষ্কাল সীমাবদ্ধ করা STREAM_ACTIVE_TIMEOUT_MS=1260000 (21 মিনিট)
প্রোডাকশন API-এর জন্য দ্রুত ব্যর্থতা API_BRIDGE_PROXY_TIMEOUT_MS=10000
বর্ধিত চিন্তন মডেল STREAM_IDLE_TIMEOUT_MS=300000 (চাঙ্কগুলোর মধ্যে 5 মিনিট)

16. লগিং

লগিং সিস্টেম stdout এবং রোটেট করা লগ ফাইল—উভয় স্থানেই লেখে। সমস্ত কনফিগারেশন src/lib/logEnv.ts দ্বারা পড়া হয়।

ভেরিয়েবল ডিফল্ট বিবরণ
APP_LOG_LEVEL info সর্বনিম্ন লগ স্তর: debug, info, warn, error
APP_LOG_FORMAT text আউটপুট ফরম্যাট: text (মানুষের পাঠযোগ্য) অথবা json (কাঠামোবদ্ধ)।
APP_LOG_TO_FILE true stdout-এর পাশাপাশি ফাইলেও লগ লিখুন।
APP_LOG_FILE_PATH logs/application/app.log লগ ফাইলের পাথ (প্রকল্পের রুট অথবা DATA_DIR-এর সাপেক্ষে)।
APP_LOG_MAX_FILE_SIZE 50M রোটেশনের আগে ফাইলের সর্বোচ্চ আকার। গ্রহণযোগ্য: 50M, 1G, 512K, অথবা সরাসরি বাইটের সংখ্যা।
APP_LOG_RETENTION_DAYS 7 রোটেট করা অ্যাপ্লিকেশন লগ ফাইল যত দিন রাখা হবে।
APP_LOG_MAX_FILES 20 রোটেট করা লগ ফাইলের ব্যাকআপের সর্বোচ্চ সংখ্যা।
CALL_LOG_RETENTION_DAYS 7 ডেটাবেসে অনুরোধ/কল লগ এন্ট্রি যত দিন রাখা হবে।
CALL_LOG_MAX_ENTRIES 10000 ইন-মেমরি বাফারে কল লগ এন্ট্রির সর্বোচ্চ সংখ্যা।
CALL_LOGS_TABLE_MAX_ROWS 100000 ছাঁটাইয়ের আগে call_logs SQLite টেবিলে সারির সর্বোচ্চ সংখ্যা।
ENABLE_REQUEST_LOGS (সেট করা নেই) ড্যাশবোর্ডের সেটিং ওভাররাইড করে বিস্তারিত অনুরোধ লগিং চালু বা বন্ধ করতে বাধ্য করুন।
MAX_PENDING_REQUEST_AGE_MS 3600000 (1 ঘণ্টা) ইন-মেমরি পরিষ্কারকরণের আগে অনাথ সক্রিয় অনুরোধ লগ এন্ট্রির সর্বোচ্চ বয়স।
CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS false call_log_pipeline_enabled=true হলে পাইপলাইন আর্টিফ্যাক্টে স্ট্রিম চাঙ্ক সংরক্ষণ করুন। অপ্ট-ইন (true) — ডিস্কের স্থান বাঁচাতে ডিফল্টভাবে বন্ধ।
CALL_LOG_PIPELINE_MAX_SIZE_KB 512 call_log_pipeline_enabled=true হলে পাইপলাইন কল লগ আর্টিফ্যাক্টের সর্বোচ্চ আকার, KB-তে।
PROXY_LOGS_TABLE_MAX_ROWS 100000 ছাঁটাইয়ের আগে proxy_logs SQLite টেবিলে সারির সর্বোচ্চ সংখ্যা।
PROXY_LOG_INCLUDE_IPS false [ProxyEgress] কনসোল লগে ক্লায়েন্ট/এগ্রেস IP এবং অ্যাকাউন্ট প্রিফিক্স অন্তর্ভুক্ত করুন। ড্যাশবোর্ড/ডেটাবেসের প্রক্সি-লগ রেকর্ডে সম্পূর্ণ বিবরণ বজায় থাকে।
APP_LOG_ROTATION_CHECK_INTERVAL_MS 60000 (1 মিনিট) src/lib/logRotation.ts কত ঘন ঘন সক্রিয় লগ ফাইলের আকার পুনরায় পরীক্ষা করে।
CHAT_LOG_TEXT_LIMIT 65536 চ্যাট লগ আর্টিফ্যাক্টে সংরক্ষিত স্ট্রিংয়ের সর্বোচ্চ দৈর্ঘ্য (ডিফল্ট 64 KB)।
CHAT_LOG_ARRAY_TAIL_ITEMS 128 চ্যাট লগ পেলোড ছাঁটাই করার সময় শেষাংশ থেকে সংরক্ষিত অ্যারে আইটেমের সংখ্যা।
CHAT_LOG_MAX_DEPTH 6 চ্যাট লগ পেলোড ছাঁটাই হওয়ার আগের সর্বোচ্চ নেস্টিং গভীরতা।
CHAT_LOG_MAX_OBJECT_KEYS 80 চ্যাট লগ পেলোডে সংরক্ষিত অবজেক্ট কী-এর সর্বোচ্চ সংখ্যা (0 = সীমাহীন)।
CHAT_LOG_MAX_BODY_KB 1024 সম্পূর্ণ ক্লোনের পরিবর্তে শুধু একটি সারাংশ দিয়ে প্রতিস্থাপিত হওয়ার আগে পুরো অনুরোধ/প্রতিক্রিয়া বডির আকার (KB)। দীর্ঘ এজেন্টিক কথোপকথনের ক্ষেত্রে ড্যাশবোর্ডে আসল বার্তার পরিবর্তে প্লেসহোল্ডার দেখা গেলে এই মান বাড়ান।
CHAT_DEBUG_FILE false true হলে, serializeArtifactForStorage আকারভিত্তিক ছাঁটাই এড়িয়ে যায়। শুধু ডিবাগের জন্য।

17. মেমরি অপ্টিমাইজেশন

ভেরিয়েবল ডিফল্ট বিবরণ
OMNIROUTE_MEMORY_MB স্বয়ংক্রিয় (বেয়ার মেটাল); Docker ইমেজে 1024 প্রস্তাবিত Docker/স্বতন্ত্র V8 হিপ সীমা (MB)। সেট করা না থাকলে, গতিশীলভাবে ক্যালিব্রেট করা হয় (সিস্টেম RAM-এর ~35%, [512, 4096] সীমার মধ্যে); মোট মেমরি পড়া না গেলেই কেবল 512 সর্বনিম্ন সীমা হিসেবে ব্যবহৃত হয়। run-standalone.mjs-এ (Docker CMD), একটি সুস্পষ্ট মান --max-old-space-size হিসেবে যোগ করা হয় এবং বিরোধপূর্ণ NODE_OPTIONS হিপ ফ্ল্যাগের ওপর অগ্রাধিকার পায় (V8-এর শেষ ফ্ল্যাগ)। omniroute serve এখনও বিদ্যমান NODE_OPTIONS হিপকে অগ্রাধিকার দেয় (#5238)। দুটিতে ভিন্ন সংখ্যা সেট করবেন না — প্রক্রিয়াটি উভয় মান ও কোনটি কার্যকর হয়েছে তা উল্লেখ করে একটি সতর্কবার্তা লগ করে। অফিশিয়াল Docker ইমেজ সর্বদা 1024 সেট করে, তাই সেখানে ক্যালিব্রেশন কখনো চলে না। Coding-agent /v1/responses-এর জন্য cgroup-এর অতিরিক্ত ধারণক্ষমতাসহ 819212288 প্রয়োজন — Docker নির্দেশিকা — রানটাইম RAM দেখুন।
PROMPT_CACHE_MAX_SIZE 50 ক্যাশে রাখা সিস্টেম প্রম্পট এন্ট্রির সর্বোচ্চ সংখ্যা।
PROMPT_CACHE_MAX_BYTES 2097152 (2 MB) মোট প্রম্পট ক্যাশের সর্বোচ্চ আকার।
PROMPT_CACHE_TTL_MS 300000 (5 মিনিট) প্রম্পট ক্যাশ এন্ট্রির TTL।
SEMANTIC_CACHE_MAX_SIZE 100 ক্যাশে রাখা temperature=0 রেসপন্সের সর্বোচ্চ সংখ্যা।
SEMANTIC_CACHE_MAX_BYTES 4194304 (4 MB) মোট সেম্যান্টিক ক্যাশের সর্বোচ্চ আকার।
SEMANTIC_CACHE_TTL_MS 1800000 (30 মিনিট) সেম্যান্টিক ক্যাশ এন্ট্রির TTL।
OMNIROUTE_CORPUS_CACHE_SIZE 5 যেসব লোকাল-কর্পাস রুট একই সময়ে একটি সক্রিয় ইন-মেমরি ইনডেক্স ধরে রাখে (src/lib/localCorpus/configured.ts)। LRU: সীমায় পৌঁছালে সবচেয়ে কম সম্প্রতি ব্যবহৃত রুটের ইনডেক্স অপসারণ করা হয় এবং পরবর্তী কোয়েরিতে পুনর্নির্মাণ করা হয়। সর্বনিম্ন 1-এ সীমাবদ্ধ; অ-সাংখ্যিক মান হলে ডিফল্ট ব্যবহৃত হয়।
STREAM_HISTORY_MAX 50 Dashboard-এর লাইভ ভিউ বাফারে সাম্প্রতিক স্ট্রিম ইভেন্টের সর্বোচ্চ সংখ্যা।
CONTEXT_LENGTH_DEFAULT 128000 সুস্পষ্ট কনফিগ ছাড়া মডেলগুলোর জন্য সর্বোচ্চ কনটেক্সট দৈর্ঘ্যের গ্লোবাল ফলব্যাক।
USAGE_TOKEN_BUFFER 100 ব্যবহার কোটা ট্র্যাক করার সময় সংরক্ষিত অতিরিক্ত টোকেন ধারণক্ষমতা।

কম্প্রেশন

ভেরিয়েবল ডিফল্ট বিবরণ
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS সেট করা নেই .rtk/trust.json হ্যাশ ছাড়াই প্রজেক্টের .rtk/filters.json-কে বিশ্বাস করুন। শুধু নিয়ন্ত্রিত লোকাল ডেভেলপমেন্টে ব্যবহার করুন।

মেমরি ইঞ্জিন (পরিকল্পনা 21)

মেমরি, স্কিল ও টোকেন রিফ্রেশের ইভেন্ট-লুপ ব্যয় (#10349)

OmniRoute একটি একক Node প্রক্রিয়া। মেমরি এক্সট্র্যাকশন/রিট্রিভাল, স্কিল ইনজেকশন এবং প্রোভাইডার টোকেন রিফ্রেশ GET /healthz ও dashboard-এর মতো একই ইভেন্ট লুপে চলে। এগুলো কোনো ওয়ার্কার থ্রেড নয়।

কাজ কোড ডিফল্ট অপারেটর নিয়ন্ত্রণ
মেমরি নিষ্কাশন / পুনরুদ্ধার src/lib/memory/ ড্যাশবোর্ডের memoryEnabled (ডিফল্টভাবে চালু) Settings → Memory বন্ধ করুন। সেটিংসে ফিচারটি নিষ্ক্রিয় করা ছাড়া আলাদা কোনো env kill switch নেই।
স্কিল ইনজেকশন src/lib/skills/injection.ts ড্যাশবোর্ডের skillsEnabled (ডিফল্টভাবে চালু) Settings → Memory/Skills (skillsEnabled) বন্ধ করুন। ইনজেকশন ইতিমধ্যে চালু হওয়ার পর নিচের sandbox নিয়ন্ত্রণগুলো শুধু এক্সিকিউশনের সীমা নির্ধারণ করে।
টোকেন রিফ্রেশ src/sse/services/tokenRefresh.ts সংযুক্ত OAuth/web provider-গুলোর জন্য চালু provider-টি সংযোগ বিচ্ছিন্ন করুন অথবা টোকেনগুলো বৈধ থাকতে দিন; বর্তমানে কোনো TOKEN_REFRESH=0 env নেই।

নিষ্ক্রিয় অবস্থায় থাকা কোনো মেশিনে /healthz ধীর হলে প্রথমে memory + skills নিষ্ক্রিয় করুন, তারপর catalog/compression-এর লোড পরীক্ষা করুন (#10303, #9685)। এই ফিচারগুলো await পয়েন্টে নিয়ন্ত্রণ ছেড়ে দেয়, কিন্তু তারপরও একই থ্রেডের জন্য প্রতিযোগিতা করে।

স্থায়ী মেমরি সাবসিস্টেমের (src/lib/memory/) embedding layer, vector store এবং reranking নিয়ন্ত্রণসমূহ।

ভ্যারিয়েবল ডিফল্ট বিবরণ
MEMORY_EMBEDDING_CACHE_TTL_MS 300000 (5 মিনিট) ইন-মেমরি embedding cache-এর TTL (প্রতি source/model/dim signature অনুযায়ী)।
MEMORY_EMBEDDING_CACHE_MAX 1000 embedding cache-এ রাখা সর্বোচ্চ LRU entry সংখ্যা।
MEMORY_TRANSFORMERS_MODEL Xenova/all-MiniLM-L6-v2 ঐচ্ছিক @huggingface/transformers স্থানীয় MiniLM pipeline-এর জন্য HF repo id (~23 MB int8, ~400 MB RAM)।
MEMORY_STATIC_MODEL minishlab/potion-base-8M static potion/Model2Vec lookup-table embedder-এর জন্য HF repo id। প্রয়োজন হলে cache dir-এ ডাউনলোড করা হয়।
MEMORY_STATIC_CACHE_DIR <DATA_DIR>/embeddings static potion model file cache করার directory। সেট করা না থাকলে ডিফল্টভাবে DATA_DIR-এর অধীনে থাকে।
HF_HUB_ENDPOINT https://huggingface.co staticPotion.ts-এর ব্যবহৃত Hugging Face Hub base URL ওভাররাইড করে (যেমন air-gapped setup-এর জন্য mirror endpoint)।
MEMORY_VEC_TOP_K 20 src/lib/memory/vectorStore.ts-এর ভেতরে sqlite-vec brute-force vector search-এ ব্যবহৃত ডিফল্ট top-K।
MEMORY_RRF_K 60 hybrid FTS5 + vector retrieval-এর জন্য Reciprocal Rank Fusion constant k (sqlite-vec recipe)।
VECTOR_STORE_DISABLE_VEC false getVectorStore()-এর (src/lib/memory/vectorStore.ts) test/diagnostic seam: true হলে vector store-কে জোরপূর্বক null করে (sqlite-vec-বিহীন cloud/WASM environment অনুকরণ করে), ফলে memory retrieval-এর কার্যকারিতা কমে FTS5 keyword search-এ নেমে আসে। production-এ এটি সেট না করাই উচিত।
NOTION_API_KEY (সেট করা নেই) Notion backend-এর API key (genericBackend.ts-এর পরিচিত backend preset-এ ব্যবহৃত)।
NOTION_API_URL https://api.notion.com/v1 Notion API-এর base URL (self-hosted Notion বিকল্পের জন্য ওভাররাইড করা যায়)।
OBSIDIAN_API_KEY (সেট করা নেই) Obsidian Vault backend-এর API key (genericBackend.ts-এর পরিচিত backend preset-এ ব্যবহৃত)।
OBSIDIAN_API_URL http://localhost:27123 Obsidian Vault API-এর base URL (remote vault-এর জন্য ওভাররাইড করা যায়)।
MEMORY_TYPED_DECAY_ENABLED false TV6 typed memory decay-এর master switch। ঐচ্ছিক (ডিফল্টভাবে বন্ধ) — sweep ক্ষয়প্রাপ্ত memory মুছে দেয়। এটি বন্ধ থাকলে access_count/last_accessed_at শুধুই telemetry এবং কখনো কিছু মুছে ফেলা হয় না।
MEMORY_TYPED_DECAY_EPISODIC_DAYS 30 যে TTL (দিন) পার হওয়ার পর অব্যবহৃত episodic memory ক্ষয়প্রাপ্ত হয়। 0 দিলে episodic-ও ক্ষয় থেকে সুরক্ষিত থাকে। দীর্ঘস্থায়ী type-গুলো (factual/procedural/semantic) সবসময় সুরক্ষিত। decay clock last_accessed_at অনুযায়ী নতুন ভিত্তি পায়।
MEMORY_TYPED_DECAY_ACCESS_IMMUNITY 3 কোনো memory এতবার বা তার বেশি (>=) inject করা হলে type নির্বিশেষে সেটি decay থেকে সুরক্ষিত হয়ে যায়। 0 access immunity নিষ্ক্রিয় করে।
MEMORY_TYPED_DECAY_SWEEP_INTERVAL 0 (নিষ্ক্রিয়) src/lib/memory/typedDecay.ts-এর ঐচ্ছিক periodic decay sweep-এর interval (সেকেন্ড)। 0/সেট করা নেই = কোনো periodic sweep নেই। এটি দ্বিগুণভাবে ঐচ্ছিক: MEMORY_TYPED_DECAY_ENABLED=true-ও প্রয়োজন।
OMNIROUTE_STRICT_SYSTEM_PROVIDERS (সেট করা নেই) কমা দিয়ে পৃথক করা provider id-সমূহ (case-insensitive), যেগুলো শুধু index 0-এ একটি system message গ্রহণ করে (src/lib/memory/injection.ts)। এগুলোর ক্ষেত্রে multi-turn conversation-এ cache-safe mid-array memory splice নিরাপদ নয়, তাই memory-কে একত্রিত করে/আগে যুক্ত করে শুরুর system message হিসেবে রাখা হয়। ডিফল্টভাবে শুধু xiaomi-mimo/mimo; একই single-leading-system-message সীমা প্রয়োগকারী self-hosted OpenAI-compatible endpoint-গুলোর (যেমন Qwen3.5+/3.6) জন্য তালিকাটি বাড়ান।

কম-RAM Docker উদাহরণ

128 শুধু dashboard-এর জন্য উপযুক্ত। এই heap-এ coding agent দীর্ঘ /v1/responses চলাকালে FATAL ERROR দেয়। Claude/Codex/Grok gateway হিসেবে এই উদাহরণ ব্যবহার করবেন না।

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. মূল্য সমন্বয়

বাহ্যিক উৎস থেকে মডেলের মূল্য-সংক্রান্ত ডেটার স্বয়ংক্রিয় সমন্বয়।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
PRICING_SYNC_ENABLED false src/lib/pricingSync.ts পর্যায়ক্রমিক মূল্য সমন্বয় অপ্ট-ইন করুন।
PRICING_SYNC_INTERVAL 86400 (24h) src/lib/pricingSync.ts সেকেন্ডে সমন্বয়ের ব্যবধান।
PRICING_SYNC_SOURCES litellm src/lib/pricingSync.ts কমা দিয়ে পৃথক করা ডেটা উৎসসমূহ।

Arena ELO সমন্বয়

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
ARENA_ELO_SYNC_ENABLED true src/shared/constants/featureFlagDefinitions.ts পর্যায়ক্রমিক Arena AI লিডারবোর্ড ELO সমন্বয়, যা Dashboard Feature Flags থেকে কনফিগার করা যায় অথবা অপ্ট-আউট করতে false ব্যবহার করা যায়।
MODELS_CATALOG_PREFIX_MODE dual src/shared/constants/featureFlagDefinitions.ts, src/app/api/v1/models/catalog.ts GET /v1/models-এ মডেল আইডিগুলোর জন্য ব্যবহৃত প্রিফিক্সের ধরন। dual প্রতিটি মডেলের জন্য সংক্ষিপ্ত উপনাম প্রিফিক্স এবং ক্যানোনিক্যাল প্রোভাইডার প্রিফিক্স—উভয়ই প্রকাশ করে (পশ্চাৎ-সামঞ্জস্য—ক্যাটালগের আকার প্রায় দ্বিগুণ করে); alias প্রতিটি মডেলের জন্য একটি আইডি নির্গত করে; canonical শুধু সম্পূর্ণ প্রোভাইডার-আইডি প্রিফিক্স নির্গত করে (যেসব প্রোভাইডারের উপনাম ইতোমধ্যেই ক্যানোনিক্যাল আইডি, সেগুলোর একক এন্ট্রি বজায় থাকে)। ক্লায়েন্টরা ?prefix=alias ব্যবহার করে প্রতিটি অনুরোধে এটি ওভাররাইড করতে পারে। API_REFERENCE দেখুন।
ARENA_ELO_SYNC_INTERVAL 86400 (24h) src/lib/arenaEloSync.ts সেকেন্ডে সমন্বয়ের ব্যবধান।

PromptQL Playground প্রোভাইডার (অনানুষ্ঠানিক/পরীক্ষামূলক)

prompt.ql.app-এর জন্য রিভার্স-ইঞ্জিনিয়ার করা GraphQL সেশন ব্রিজ (src/shared/constants/providers/web-cookie.ts)। সবগুলোই ঐচ্ছিক—ডিফল্ট মানগুলো সর্বজনীন playground এন্ডপয়েন্ট নির্দেশ করে; শুধু স্ব-হোস্টেড/বিকল্প PromptQL ডিপ্লয়মেন্টের জন্য ওভাররাইড করুন।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
PROMPTQL_GRAPHQL_ENDPOINT https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql open-sse/executors/promptql.ts চ্যাট/সেশন অপারেশনের জন্য ব্যবহৃত GraphQL এন্ডপয়েন্ট।
PROMPTQL_CREDITS_ENDPOINT https://data.pro.ql.app/v1/graphql open-sse/executors/promptql.ts, open-sse/services/usage/promptql.ts ক্রেডিট ব্যালেন্স/ব্যবহার查询 করতে ব্যবহৃত GraphQL এন্ডপয়েন্ট।
PROMPTQL_TOKEN_REFRESH_URL https://auth.pro.ql.app/ddn/project/token open-sse/executors/promptql.ts সর্বোত্তম-প্রচেষ্টায় টোকেন রিফ্রেশের জন্য ব্যবহৃত এন্ডপয়েন্ট।
PROMPTQL_POLL_TIMEOUT_MS 180000 open-sse/executors/promptql.ts টাইম-আউট হওয়ার আগে thread_events পোল করার সর্বোচ্চ সময় (ms)।

HyperAgent ওয়েব প্রোভাইডার (অনানুষ্ঠানিক/পরীক্ষামূলক)

hyperagent.com-এর জন্য রিভার্স-ইঞ্জিনিয়ার করা সেশন ব্রিজ (src/shared/constants/providers/web-cookie.ts)। ঐচ্ছিক — ডিফল্টভাবে সর্বজনীন বিলিং/ব্যবহার এন্ডপয়েন্ট নির্দেশ করা হয়; শুধুমাত্র স্ব-হোস্টেড/বিকল্প HyperAgent ডিপ্লয়মেন্টের জন্য এটি ওভাররাইড করুন।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
HYPERAGENT_USAGE_URL https://hyperagent.com/api/settings/billing/usage open-sse/services/usage/hyperagent.ts বিলিং/ব্যবহারের ক্রেডিট ব্লক আনতে ব্যবহৃত এন্ডপয়েন্ট।

Kilo Code ব্যবহারের কোটা

Kilo Code প্রোভাইডারের জন্য ব্যক্তিগত USD ব্যালেন্স এবং Kilo Pass ব্যবহার অনুসন্ধান। ঐচ্ছিক — ডিফল্টভাবে সর্বজনীন Kilo API নির্দেশ করা হয়; শুধুমাত্র রিলে/টেস্ট ফিক্সচারের জন্য এটি ওভাররাইড করুন। প্রমাণীকরণে সংযোগটির বিদ্যমান OAuth অ্যাক্সেস টোকেন ব্যবহৃত হয়।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
KILO_API_URL https://api.kilo.ai open-sse/services/usage/kilocode.ts ব্যক্তিগত Kilo Code ব্যালেন্স এবং Kilo Pass ব্যবহার আনতে ব্যবহৃত বেস URL।

Adobe Firefly ওয়েব প্রোভাইডার (অনানুষ্ঠানিক/পরীক্ষামূলক)

Adobe Firefly ওয়েব প্রোভাইডারের জন্য ব্রাউজার-চালিত সেশন রিফ্রেশ (open-sse/services/adobeFireflyBrowserLogin.ts, open-sse/services/adobeFireflySession.ts, open-sse/services/adobeFireflyClient.ts)। ঐচ্ছিক — সব ডিফল্ট একটি স্বাভাবিক ডেস্কটপ ইনস্টলের জন্য সমন্বয় করা হয়েছে।

#9255-এ সরানো হয়েছে। পুরোনো CDP-সংযুক্ত Chrome রানটাইম (adobeFireflyChromeRuntime.ts) একটি Playwright ব্রাউজার-লগইন সার্ভিস দিয়ে প্রতিস্থাপিত হয়েছে, এবং এর নিয়ন্ত্রণগুলো আর বিদ্যমান নেই। ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART ভেরিয়েবলগুলো, সেই সঙ্গে ADOBE_FIREFLY_LOGIN_WAIT_MS এবং ADOBE_FIREFLY_FORTER_WAIT_MS, কোডবেসের কোথাও পড়া হয় না — এগুলো সেট করলে কোনো প্রভাব পড়ে না।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
ADOBE_FIREFLY_CHROME_HEADLESS 0 open-sse/services/adobeFireflyBrowserLogin.ts প্রকৃত হেডলেস Chrome-এর জন্য 1-এ সেট করুন (জেনারেশনের ক্ষেত্রে এটি কাজ করে না বলে জানা গেছে; শুধুমাত্র ডিবাগের জন্য)।
ADOBE_FIREFLY_BROWSER_REFRESH 1 open-sse/services/adobeFireflySession.ts আগাম ব্রাউজার ওয়ার্ম করার অপ্ট-ইন/অপ্ট-আউট। 0 আগাম ওয়ার্ম করা নিষ্ক্রিয় করে (ব্যাচের মাঝখানে 408 পুনরুদ্ধার তবুও প্রযোজ্য থাকে)।
ADOBE_FIREFLY_SESSION_DISK 1 open-sse/services/adobeFireflySession.ts Adobe Firefly সেশন ডিস্কে সংরক্ষণ করা নিষ্ক্রিয় করতে 0-এ সেট করুন।
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS (সেট করা নেই) open-sse/services/adobeFireflySession.ts পরপর সাবমিটের মধ্যে কার্যকর করা ন্যূনতম ব্যবধান (ms), যা বিল্ট-ইন ডিফল্টকে ওভাররাইড করে।
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS (সেট করা নেই) open-sse/services/adobeFireflySession.ts সফল ব্যাচের পরে যোগ করা অতিরিক্ত ব্যবধান (ms), যা বিল্ট-ইন ডিফল্টকে ওভাররাইড করে।
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS (সেট করা নেই) open-sse/services/adobeFireflyClient.ts জেনারেশন অনুরোধ সাবমিট করার আগের বেস বিলম্ব (ms), যা বিল্ট-ইন ডিফল্টকে ওভাররাইড করে।

19. মডেল সিঙ্ক (ডেভ)

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
MODELS_DEV_SYNC_ENABLED (সেট করা নেই) src/lib/modelsDevSync.ts models.dev প্রাইসিং সিঙ্কের জন্য বাধ্যতামূলক ওভাররাইড। সেট করা না থাকলে = Settings > AI (modelsDevSyncEnabled) অনুসরণ করে। 0/false/off/no DB-এর ওপর অগ্রাধিকার পায় এবং পর্যায়ক্রমিক সিঙ্ক ও getModelsDevPricing() SQL/JSON স্ক্যান—উভয়ই এড়িয়ে যায় (ড্যাশবোর্ড একই ইভেন্ট লুপে আটকে গেলে পুনরুদ্ধারের জন্য)। 1/true/on/yes সিঙ্ক চালু করতে বাধ্য করে। প্রাইসিং সংরক্ষণ/মুছে ফেলার সময়ও backupDbFile("pre-write") কল করা হয়, যা 60-মিনিটের থ্রটল বা DISABLE_SQLITE_AUTO_BACKUP-এর অধীনে কোনো কাজ করে না।
MODELS_DEV_SYNC_INTERVAL 86400 (24 ঘণ্টা) src/lib/modelsDevSync.ts ডেভেলপমেন্টকালীন মডেল ক্যাটালগ সিঙ্কের ব্যবধান, সেকেন্ডে।
CONTEXT_WINDOW_RECONCILE_INTERVAL 86400 (24 ঘণ্টা) src/lib/contextWindowResolver.ts স্ব-সংশোধনকারী কনটেক্সট-উইন্ডো রিকনসাইলার (5004)-এর ব্যবধান (সেকেন্ডে): /models ডিসকভারি থেকে প্রোভাইডার-ঘোষিত উইন্ডোগুলো ক্যাটালগের সঙ্গে ভিন্ন হলে সেগুলোকে auto:discovery ওভাররাইড হিসেবে পিন করে। নিষ্ক্রিয় করতে 0 সেট করুন। ইতিমধ্যে সিঙ্ক করা ডেটা পুনরায় ব্যবহার করে (নতুন করে ফেচ করে না); manual ওভাররাইড কখনো প্রতিস্থাপন করে না।

20. প্রোভাইডার-নির্দিষ্ট সেটিংস

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OPENROUTER_CATALOG_TTL_MS 86400000 (24 ঘণ্টা) src/lib/catalog/openrouterCatalog.ts OpenRouter মডেল ক্যাটালগ ক্যাশের TTL।
MODEL_CATALOG_INCLUDE_NAMES true src/shared/constants/featureFlagDefinitions.ts /v1/models রেসপন্সে প্রদর্শন-বান্ধব name ফিল্ড অন্তর্ভুক্ত করে। যেসব ক্লায়েন্ট শুধু ID প্রত্যাশা করে, তাদের জন্য এটি নিষ্ক্রিয় করুন।
CATALOG_BUILD_TIMEOUT_MS 8000 (8 সেকেন্ড) src/app/api/v1/models/catalogCache.ts সমন্বিত GET /v1/models ক্যাটালগ পুনর্নির্মাণের কোল্ড-পাথ অপেক্ষার সীমা (#12627)। টাইমআউট হলে, বিদ্যমান থাকলে সর্বশেষ-সফল 200 রেসপন্স পরিবেশন করা হয়।
OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS 2592000000 (30 দিন) src/lib/db/models/activeSyncedCatalog.ts যে সময় অতিক্রান্ত হলে কোনো সংযোগের সিঙ্ক করা মডেল তালিকা রাউটিংয়ের জন্য নির্ভরযোগ্য হিসেবে গণ্য হয় না এবং রেজিস্ট্রিতে ফেইল-ওপেন করে (#12849)। যেসব সারিতে কখনো টাইমস্ট্যাম্প দেওয়া হয়নি, সেগুলোও স্টেল হিসেবে গণ্য হয়।
NANOBANANA_POLL_TIMEOUT_MS 120000 open-sse/handlers/imageGeneration.ts NanoBanana ইমেজ জেনারেশন জবের জন্য সর্বোচ্চ অপেক্ষার সময়।
NANOBANANA_POLL_INTERVAL_MS 2500 open-sse/handlers/imageGeneration.ts NanoBanana জব পোলিংয়ের ফ্রিকোয়েন্সি।
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS 8000 open-sse/services/adobeFireflyUpscale.ts Adobe Firefly আপস্কেল সাবমিট-রিট্রাই এক্সপোনেনশিয়াল ব্যাকঅফের বেস বিলম্ব।
AWS_REGION (সেট করা নেই) src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts AWS Bedrock এন্ডপয়েন্ট (Kiro, অডিও) তৈরি করতে ব্যবহৃত অঞ্চল।
AWS_DEFAULT_REGION (সেট করা নেই) src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts AWS_REGION সেট করা না থাকলে ফলব্যাক।
CLOUDFLARE_ACCOUNT_ID (সেট করা নেই) open-sse/executors/cloudflare-ai.ts Cloudflare Workers AI-এর অ্যাকাউন্ট ID।
CLOUDFLARE_PLAYGROUND_CHROME_PATH (সেট করা নেই) open-sse/executors/cloudflare-playground.ts Cloudflare AI Playground এক্সিকিউটরের জন্য ডেস্কটপ Chrome বাইনারির পূর্ণ পাথ; হেডলেস ফিঙ্গারপ্রিন্ট যাচাই Playwright-এর বান্ডল করা Chromium ব্লক করলে এটি ব্যবহৃত হয়।
CLOUDFLARE_API_BASE https://api.cloudflare.com/client/v4 src/app/api/settings/proxy/cloudflare-deploy/route.ts প্রক্সি-পুল Workers রিলে ডিপ্লয়ার দ্বারা ব্যবহৃত Cloudflare REST API বেস ওভাররাইড করে (#4640 / 9router#1360)।
NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT omniroute-relay src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx প্রক্সি-পুল "Deploy Relay" মোডালে প্রস্তাবিত ডিফল্ট worker প্রজেক্টের নাম।
NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED true src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx Proxy Pool ট্যাব থেকে Cloudflare Workers রিলে অপশন লুকাতে false সেট করুন।
CLOUDFLARED_BIN স্বয়ংক্রিয়ভাবে শনাক্ত src/lib/cloudflaredTunnel.ts cloudflared বাইনারির কাস্টম পাথ।
CLOUDFLARED_PROTOCOL http2 src/lib/cloudflaredTunnel.ts টানেল ট্রান্সপোর্ট প্রোটোকল: http2 (ডিফল্ট), quic, অথবা auto
CLOUDFLARED_CONFIG (সেট করা নেই) src/lib/cloudflaredTunnel.ts স্থানীয়ভাবে পরিচালিত cloudflared config.yml-এর পাথ (tunnel:, credentials-file:, ingress: সহ)। সেট করা থাকলে OmniRoute ক্ষণস্থায়ী কুইক টানেলের পরিবর্তে tunnel --config <path> run (নামযুক্ত টানেল) চালায়।
CLOUDFLARED_HOSTNAME (কনফিগ ingress থেকে) src/lib/cloudflaredTunnel.ts নামযুক্ত টানেলের পাবলিক হোস্টনেমের ওভাররাইড (যেমন ai.example.com), যা publicUrl/apiUrl হিসেবে রিপোর্ট করা হয়। সেট করা না থাকলে এটি কনফিগের প্রথম ingress হোস্টনেম থেকে পড়া হয়।
DENO_DEPLOY_API_BASE https://api.deno.com/v2 src/app/api/settings/proxy/deno-deploy/route.ts প্রক্সি-পুল রিলে ডিপ্লয়ার দ্বারা ব্যবহৃত Deno Deploy REST API বেস ওভাররাইড করে (#4643 / 9router#1437)।
NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT omniroute-deno-relay src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx প্রক্সি-পুল "Deploy Relay" মোডালে প্রস্তাবিত ডিফল্ট Deno Deploy অ্যাপের নাম।
NEXT_PUBLIC_DENO_RELAY_ENABLED true src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx Proxy Pool ট্যাব থেকে Deno Deploy রিলে অপশন লুকাতে false সেট করুন।
SEARCH_CACHE_TTL_MS 300000 (5 মিনিট) open-sse/services/searchCache.ts সার্চ API (Perplexity, Brave ইত্যাদি) রেসপন্স ক্যাশিংয়ের TTL।
ENABLE_CC_COMPATIBLE_PROVIDER false src/shared/utils/featureFlags.ts শুধু Claude Code-এর রিলেগুলোর জন্য পরীক্ষামূলক CC-সামঞ্জস্যপূর্ণ প্রোভাইডার UI প্রকাশ করে।
NINEROUTER_HOST 127.0.0.1 open-sse/executors/ninerouter.ts এমবেড করা 9router ইনস্ট্যান্স যে হোস্টে লিসেন করে তা ওভাররাইড করে।
NINEROUTER_PORT 20130 open-sse/executors/ninerouter.ts এমবেড করা 9router ইনস্ট্যান্স যে পোর্টে লিসেন করে তা ওভাররাইড করে।
EMBED_WS_PROXY_HOST 127.0.0.1 src/lib/services/embedWsProxy.ts এমবেডেড-সার্ভিস WebSocket প্রক্সির বাইন্ড হোস্ট (ডিফল্টভাবে শুধু লুপব্যাক)।
EMBED_WS_PROXY_PORT 20131 src/lib/services/embedWsProxy.ts এমবেডেড-সার্ভিস WebSocket প্রক্সি সার্ভারের পোর্ট।
CLIPROXYAPI_HOST 127.0.0.1 open-sse/executors/cliproxyapi.ts CLIProxyAPI ব্রিজ হোস্ট (লিগ্যাসি ইন্টিগ্রেশন)।
CLIPROXYAPI_PORT 5544 open-sse/executors/cliproxyapi.ts CLIProxyAPI ব্রিজ পোর্ট।
CLIPROXYAPI_API_KEY (খালি) open-sse/handlers/chatCore/cliproxyapiCredentials.ts cliproxyapi_api_key সেটিং অনুপস্থিত থাকলে ডেটা-প্লেন কী-এর ফলব্যাক।
CLIPROXYAPI_MANAGEMENT_KEY (খালি) src/lib/services/cliproxyAccountHealth.ts বাহ্যিকভাবে পরিচালিত CLIProxyAPI ইনস্ট্যান্স থেকে অ্যাকাউন্ট-স্বাস্থ্য পড়ার ম্যানেজমেন্ট কী।
CLIPROXYAPI_CONFIG_DIR ~/.cli-proxy-api src/lib/versionManager/processManager.ts CLIProxyAPI কনফিগ ডিরেক্টরি।
CLIPROXY_BIND_HOST 127.0.0.1 docker-compose.yml docker-compose যে হোস্ট ইন্টারফেসে cliproxyapi সাইডকার প্রকাশ করে (#12578)। এর ডেটা ভলিউমে প্রোভাইডারের OAuth/API ক্রেডেনশিয়াল থাকে এবং পিন করা ইমেজে পরিবেশ-ভিত্তিক ডেটা-প্লেন api-keys ওভাররাইড নেই (শুধু মাউন্ট করা config.yaml রয়েছে), তাই 0.0.0.0 ব্যবহার করলে ক্রেডেনশিয়াল-ধারণকারী সার্ভিসটি পুরো LAN-এর কাছে উন্মুক্ত হয়।
MUX_SERVICE_PORT 8322 src/lib/services/bootstrap.ts এমবেড করা Mux (coder/mux) এজেন্ট-অর্কেস্ট্রেশন ডেমন যে পোর্টে লিসেন করে তা ওভাররাইড করে (সর্বদা 127.0.0.1)।
DARIO_HOST 127.0.0.1 open-sse/executors/dario.ts Dario এমবেডেড-সার্ভিসের বাইন্ড/কানেক্ট হোস্ট (ডিফল্টভাবে শুধু লুপব্যাক)।
DARIO_PORT 3456 open-sse/executors/dario.ts Dario এমবেডেড-সার্ভিসের পোর্ট।
DARIO_HOST 127.0.0.1 open-sse/executors/dario.ts Dario এমবেডেড-সার্ভিসের বাইন্ড/কানেক্ট হোস্ট (ডিফল্টভাবে শুধু লুপব্যাক)।
DARIO_PORT 3456 open-sse/executors/dario.ts Dario এমবেডেড-সার্ভিসের পোর্ট।
LOCAL_HOSTNAMES (খালি) open-sse/config/providerRegistry.ts "লোকাল" হিসেবে বিবেচিত অতিরিক্ত হোস্টনেমগুলোর কমা-বিভাজিত তালিকা (Docker সার্ভিসের নাম ইত্যাদি)।

ENABLE_CC_COMPATIBLE_PROVIDER শুধু সেই তৃতীয়-পক্ষের রিলেগুলোর জন্য, যেগুলো একচেটিয়াভাবে Claude Code ক্লায়েন্ট গ্রহণ করে। OmniRoute অনুরোধগুলো পুনর্লিখন করে, যাতে ওই রিলেগুলো সেগুলো গ্রহণ করে। আপনি যদি শুধু Claude Code CLI ব্যবহার করতে চান, অথবা এই রিলেগুলো কী তা নিশ্চিত না হন, তাহলে এটি নিষ্ক্রিয় রাখুন এবং পরিবর্তে একটি নিয়মিত Anthropic-সামঞ্জস্যপূর্ণ প্রোভাইডার যোগ করুন।


২১. প্রক্সির স্বাস্থ্য

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
PROXY_FAST_FAIL_TIMEOUT_MS 2000 src/lib/proxyHealth.ts দ্রুত ব্যর্থতার স্বাস্থ্য পরীক্ষার টাইমআউট।
PROXY_LATENCY_WINDOW_HOURS 3 src/lib/db/proxies.ts লেটেন্সি-অপ্টিমাইজড পুল কৌশলে প্রার্থী প্রক্সিগুলোর গড় লেটেন্সি গণনার সময়সীমা (ঘণ্টায়)।
PROXY_HEALTH_CACHE_TTL_MS 30000 src/lib/proxyHealth.ts স্বাস্থ্য পরীক্ষার ফলাফলের ক্যাশ TTL।
PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS 2000 src/lib/proxyHealth.ts ব্যর্থ প্রক্সি স্বাস্থ্য প্রোবের ক্যাশ TTL। এটি PROXY_HEALTH_CACHE_TTL_MS-এর চেয়ে কম রাখুন, যাতে উচ্চ সমসাময়িকতার অধীনে সাময়িক প্রক্সি টাইমআউটগুলো দ্রুত পুনরায় চেষ্টা করতে পারে এবং সত্যিই অচল প্রক্সির জন্য দ্রুত ব্যর্থতা নিষ্ক্রিয় না হয়।
PROXY_HEALTH_ENABLED true src/lib/proxyHealth/scheduler.ts নিবন্ধিত প্রক্সিগুলোকে পর্যায়ক্রমে প্রোব করা ব্যাকগ্রাউন্ড প্রক্সি স্বাস্থ্য শিডিউলার নিষ্ক্রিয় করতে false সেট করুন।
PROXY_HEALTH_INTERVAL_MS 600000 src/lib/proxyHealth/scheduler.ts ব্যাকগ্রাউন্ড স্বাস্থ্য-শিডিউলারের সুইপ ব্যবধান, ms-এ (সর্বনিম্ন 60000)।
PROXY_HEALTH_TEST_URL https://httpbin.org/ip src/lib/proxyHealth/probeTarget.ts শিডিউলার এবং /api/settings/proxies/auto-test এন্ডপয়েন্ট দ্বারা ব্যবহৃত সংযোগযোগ্যতা প্রোবের লক্ষ্য। পাবলিক ডিফল্ট এড়াতে এটিকে একটি অভ্যন্তরীণ/স্ব-হোস্টেড URL-এ নির্দেশ করুন।
PROXY_HEALTH_TEST_CONCURRENCY 10 src/lib/proxyHealth/probeTarget.ts প্রতি ব্যাচে একসঙ্গে শুরু হওয়া প্রোবের সংখ্যা, যা শিডিউলার এবং /api/settings/proxies/auto-test এন্ডপয়েন্ট ভাগাভাগি করে। সর্বনিম্ন 1 এবং সর্বোচ্চ 50-এ সীমাবদ্ধ।
PROXY_HEALTH_TEST_STAGGER_MS 100 src/lib/proxyHealth/probeTarget.ts একটি ব্যাচের ভেতরে পরপর দুটি প্রোব পাঠানোর মধ্যবর্তী বিলম্ব, ms-এ। এটি না থাকলে পুরো ব্যাচ একই মুহূর্তে পাঠানো হয় এবং একটি শেয়ার করা বহির্গমন IP হার-সীমাবদ্ধ লক্ষ্যকে ট্রিগার করতে পারে। ব্যবধান নিষ্ক্রিয় করতে 0 সেট করুন; সর্বোচ্চ 5000।
PROXY_HEALTH_USE_PROVIDER_TARGET true src/lib/proxyHealth/providerProbeTarget.ts প্রক্সির নির্ধারিত প্রোভাইডারের প্রকৃত হোস্ট (GET /models, কোনো API কী নয়) প্রোব করা বন্ধ করতে "false" সেট করুন এবং পরিবর্তে সর্বদা PROXY_HEALTH_TEST_URL ব্যবহার করুন।
PROXY_HEALTH_AUTO_DEACTIVATE false src/lib/proxyHealth/statusPolicy.ts false (ডিফল্ট) হলে, স্বয়ংক্রিয় সংযোগযোগ্যতা প্রোবগুলো (শিডিউলার + /api/settings/proxies/auto-test-এর "সবগুলো পরীক্ষা করুন" বোতাম) শুধু-পঠনযোগ্য এবং কখনোই প্রক্সির স্ট্যাটাস লেখে না — শুধু অপারেটরই সক্রিয়/নিষ্ক্রিয় নির্ধারণ করেন, ফলে অনির্ভরযোগ্য কোনো প্রোব নির্ধারিত প্রক্সিকে আটকে দিতে পারে না (#6246)। পুরোনো পরীক্ষা-ও-সেট আচরণ পুনরুদ্ধার করতে true সেট করুন।
PROXY_POOL_EGRESS_OBSERVATION false src/shared/utils/featureFlags.ts অপ্ট-ইন ফিচার ফ্ল্যাগ (FEATURE_FLAGS.md দেখুন; ড্যাশবোর্ড DB ওভাররাইড অগ্রাধিকার পায়)। true (অথবা 1, yes) হলে ড্যাশবোর্ডে একটি প্রক্সি পুলের অধীনে শুধু-পঠনযোগ্য বহির্গমন পর্যবেক্ষণ দেখায় (পৃথক বহির্গমন IP, সংযোগ এবং গত 24 ঘণ্টায় একটি IP-এর পেছনে সর্বাধিক দেখা সংখ্যা, প্রক্সি লগ থেকে)। রাউটিংয়ের জন্য কখনো ব্যবহার করা হয় না।
PROXY_AUTO_REMOVE false src/lib/proxyHealth/scheduler.ts বারবার ধারাবাহিক ব্যর্থতার পর শিডিউলারকে স্বয়ংক্রিয়ভাবে প্রক্সি অপসারণ করতে দিতে true সেট করুন।
PROXY_AUTO_REMOVE_AFTER 3 src/lib/proxyHealth/scheduler.ts শিডিউলার একটি প্রক্সি স্বয়ংক্রিয়ভাবে অপসারণ করার আগের ধারাবাহিক ব্যর্থতার সংখ্যা (PROXY_AUTO_REMOVE=true হলে)।
PROXY_AUTO_DISABLE false src/lib/proxyHealth/scheduler.ts বারবার ধারাবাহিক ব্যর্থতার পর কোনো প্রক্সি অপসারণের পরিবর্তে শিডিউলারকে সেটি সফট-ডিজেবল (স্ট্যাটাস dead, কখনো মুছে ফেলা হয় না) করতে দিতে true সেট করুন। PROXY_AUTO_REMOVE-এর অ-ধ্বংসাত্মক বিকল্প: প্রক্সিটি অবিলম্বে পুল/রোটেশন রেজোলিউশন থেকে বাদ পড়ে (স্কোপ-পুল রেজোলিউশন দ্বারা ব্যবহৃত জীবিত-স্ট্যাটাস ফিল্টার ইতিমধ্যেই এটিকে বাদ দেয়) এবং আবার প্রোবে সফল হতে শুরু করলে স্বয়ংক্রিয়ভাবে পুনরায় সক্রিয় হয়। এটি PROXY_AUTO_REMOVE_AFTER থ্রেশহোল্ড ভাগ করে। উভয় ফ্ল্যাগ true হলে, PROXY_AUTO_REMOVE অগ্রাধিকার পায়।
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK false src/shared/constants/featureFlagDefinitions.ts প্রক্সি সংযোগযোগ্যতার প্রাক-পরীক্ষা ব্যর্থ হলে OAuth এবং প্রোভাইডার যাচাইকরণ প্রবাহকে পিন করা প্রক্সি এড়িয়ে সরাসরি সংযোগ করার অনুমতি দিন। কার্যকর অগ্রাধিকারের ক্রম হলো: ফিচার ফ্ল্যাগ DB ওভাররাইড > env var > ডিফল্ট।
RATE_LIMIT_MAX_WAIT_MS 30000 (30s) open-sse/services/rateLimitManager.ts অনুরোধ ব্যর্থ করার আগে 429-এর ক্ষেত্রে অপেক্ষার সর্বোচ্চ সময়।
RATE_LIMIT_EXECUTION_MAX_WAIT_MS 600000 (10 মিনিট) open-sse/services/rateLimitManager.ts একটি অনুমোদিত অনুরোধের রেট-লিমিট রিজার্ভেশন মেয়াদোত্তীর্ণ হওয়ার আগে সেটি কতক্ষণ এক্সিকিউশনে থাকতে পারে তার সর্বোচ্চ সীমা — কিউতে অপেক্ষার বাজেট থেকে পৃথক, যাতে নন-ইনক্রিমেন্টাল গেটওয়েতে ধীর fetch-start টাইম আউট না হয় (#12027)।
RATE_LIMIT_MAX_QUEUE_DEPTH 0 (নিষ্ক্রিয়) open-sse/services/rateLimitManager.ts কিউতে ভর্তির সীমা: ইতিমধ্যে এই সংখ্যক অনুরোধ কিউতে থাকলে 429 queue_full দিয়ে প্রত্যাখ্যান করুন। 0 = সীমাহীন (ডিফল্ট)।
RATE_LIMIT_AUTO_ENABLE (সেট করা নেই) open-sse/services/rateLimitManager.ts সংরক্ষিত ড্যাশবোর্ড সেটিং নির্বিশেষে স্বয়ংক্রিয়-সক্রিয় রেট-লিমিট নিরাপত্তা ব্যবস্থা জোরপূর্বক চালু/বন্ধ করুন। জোরপূর্বক চালু করতে true/1/on, এবং জোরপূর্বক বন্ধ করতে false/0/off গ্রহণ করে।
PROVIDER_COOLDOWN_ENABLED (সেট করা নেই → বন্ধ) open-sse/services/providerCooldownTracker.ts অপ্ট-ইন বৈশ্বিক ক্রস-রিকোয়েস্ট প্রোভাইডার/সংযোগ কুলডাউন ট্র্যাকিং। ডিফল্টভাবে বন্ধ (সংযোগ কুলডাউন / প্রোভাইডার সার্কিট ব্রেকারের সঙ্গে ওভারল্যাপ করে)। সক্রিয় করতে true/1/on গ্রহণ করে।
PROVIDER_COOLDOWN_MIN_MS 5000 open-sse/services/providerCooldownTracker.ts ব্যর্থ প্রোভাইডার/সংযোগ পুনরায় চেষ্টা করার আগের সর্বনিম্ন কুলডাউন (ms)। ধারাবাহিক ব্যর্থতার সঙ্গে সূচকীয়ভাবে স্কেল করা হয়। শুধু PROVIDER_COOLDOWN_ENABLED হলে ব্যবহৃত হয়।
PROVIDER_COOLDOWN_MAX_MS 300000 (5 মিনিট) open-sse/services/providerCooldownTracker.ts ব্যর্থ প্রোভাইডার/সংযোগ যেকোনো অবস্থায় পুনরায় চেষ্টা করার আগের সর্বোচ্চ কুলডাউন (ms) সীমা। শুধু PROVIDER_COOLDOWN_ENABLED হলে ব্যবহৃত হয়।
STREAM_RECOVERY_ENABLED (সেট করা নেই → বন্ধ) src/lib/resilience/settings.ts (সিড) → open-sse/services/streamRecovery.ts (লজিক) কী: অসম্পূর্ণভাবে কেটে যাওয়া আপস্ট্রিম স্ট্রিমের স্বচ্ছ পুনরুদ্ধার (free-claude-code পোর্ট)। প্রারম্ভিক SSE উইন্ডোকে STREAM_RECOVERY.HOLDBACK_MS (750 ms) পর্যন্ত ধরে রাখে, যাতে কোনো প্রি-কমিট বিচ্ছিন্নতা — ক্লায়েন্টের কাছে কোনো বাইট পৌঁছানোর আগে ঘটে এমন বিচ্ছিন্নতা — অদৃশ্যভাবে পুনরায় খোলা ও চেষ্টা করা যায়। কখন সক্রিয় করবেন: অনির্ভরযোগ্য/এমন আপস্ট্রিম যেগুলো স্ট্রিমের শুরুতে প্রায়ই 0-বাইটে কেটে যায়; প্রতিটি স্ট্রিমে প্রথম টোকেন পেতে সর্বোচ্চ 750 ms অতিরিক্ত সময় বহন করতে না পারলে বন্ধ রাখুন। true/1/on গ্রহণ করে। সংরক্ষিত রেজিলিয়েন্স সেটিংয়ের প্রাথমিক মান নির্ধারণ করে; একবার ড্যাশবোর্ড সেটিং নির্ধারিত হলে সেটিই অগ্রাধিকার পায়।
STREAM_RECOVERY_MIDSTREAM_ENABLED (সেট করা নেই → বন্ধ) src/lib/resilience/settings.ts (সিড) → open-sse/services/streamRecovery.ts (লজিক) কী: স্ট্রিমের মাঝপথে ধারাবাহিকতা (পর্যায় 4.4) — কোনো পোস্ট-কমিট বিচ্ছিন্নতার পর (বাইট ইতিমধ্যে ক্লায়েন্টে পৌঁছেছে), আংশিক টেক্সটকে অ্যাসিস্ট্যান্ট প্রিফিল হিসেবে দিয়ে পুনরায় অনুরোধ করে এবং অনুপস্থিত সাফিক্স জুড়ে দেয়। শুধু প্লেইন-টেক্সট OpenAI-সামঞ্জস্যপূর্ণ স্ট্রিম; কোনো টুল কল চলমান থাকলে কখনো সক্রিয় হয় না। কখন সক্রিয় করবেন: দীর্ঘ জেনারেশন যা উত্তরের মাঝপথে কেটে যায় এবং আপনি পুনরুদ্ধার করা শেষাংশ টোকেন-বাই-টোকেনের পরিবর্তে একবারে পৌঁছানো মেনে নেন। STREAM_RECOVERY_ENABLED থেকে স্বাধীন (ভিন্ন ঝুঁকি প্রোফাইল)। true/1/on গ্রহণ করে।
STREAM_THROUGHPUT_WATCHDOG_ENABLED (সেট করা নেই → বন্ধ) src/lib/resilience/settings.tsopen-sse/services/throughputWatchdog.ts অপ্ট-ইন সক্রিয়-স্ট্রিম কার্যকর-আউটপুট ওয়াচডগ। এমন স্ট্রিম শনাক্ত করে যেগুলো চাঙ্ক পাঠাতে থাকে কিন্তু কনফিগার করা অ্যাসিস্ট্যান্ট-আউটপুট হারের নিচে থাকে; হার্টবিট, ব্যবহার ইভেন্ট, খালি ডেল্টা এবং টুল/রিজনিং পর্যায় অগ্রগতি হিসেবে ছদ্মবেশ ধারণ করে না। নিষ্ক্রিয়তা এবং কঠোর-সময়সীমা টাইমআউট থেকে পৃথক।
STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS 30000 src/lib/resilience/settings/normalize.ts থ্রুপুট মূল্যায়নের আগের গ্রেস পিরিয়ড, 0600000 ms-এর মধ্যে সীমাবদ্ধ।
STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS 30000 src/lib/resilience/settings/normalize.ts রোলিং কার্যকর-আউটপুট উইন্ডো, 1000600000 ms-এর মধ্যে সীমাবদ্ধ; বাতিল করার আগে একটি সম্পূর্ণ উইন্ডো প্রয়োজন।
STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND 4 src/lib/resilience/settings/normalize.ts সর্বনিম্ন UTF-8 অ্যাসিস্ট্যান্ট-আউটপুট বাইট হার (রক্ষণশীল টোকেন প্রক্সি), 11000000-এর মধ্যে সীমাবদ্ধ।
STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES 1 src/lib/resilience/settings/normalize.ts পরিমাপযোগ্য বলে বিবেচিত সর্বনিম্ন শূন্যের অধিক কার্যকর-আউটপুট নমুনা, 11000000 বাইটের মধ্যে সীমাবদ্ধ।
HEALTHCHECK_STAGGER_MS 3000 src/lib/tokenHealthCheck.ts স্টার্টআপে প্রোভাইডার টোকেন স্বাস্থ্য পরীক্ষাগুলোর মধ্যবর্তী পর্যায়ক্রমিক ব্যবধান (ms)।
HEALTHCHECK_JITTER_MIN_MS 500 src/lib/tokenHealthCheck.ts বার্স্ট প্রতিরোধে প্রোভাইডার টোকেন স্বাস্থ্য পরীক্ষাগুলোর মধ্যে HEALTHCHECK_STAGGER_MS-এর সঙ্গে যোগ করা সর্বনিম্ন র্যান্ডমাইজড জিটার (ms) (ইস্যু #1220)।
HEALTHCHECK_JITTER_MAX_MS 5000 src/lib/tokenHealthCheck.ts বার্স্ট প্রতিরোধে প্রোভাইডার টোকেন স্বাস্থ্য পরীক্ষাগুলোর মধ্যে HEALTHCHECK_STAGGER_MS-এর সঙ্গে যোগ করা সর্বোচ্চ র্যান্ডমাইজড জিটার (ms) (ইস্যু #1220)।
HEALTHCHECK_BATCH_SIZE 20 src/lib/tokenHealthCheck.ts স্টার্টআপ টোকেন-স্বাস্থ্য পরীক্ষা সুইপের সমসাময়িক-পরীক্ষা ব্যাচের আকার; বড় মান সমান্তরালে আরও বেশি সংযোগ পরীক্ষা করে, ছোট মান বার্স্ট লোড কমায় (ইস্যু #7875, #7719-এর রিগ্রেশন)।
REQUEST_RETRY 2 src/sse/services/cooldownAwareRetry.ts ক্লায়েন্টকে ত্রুটি ফেরত দেওয়ার আগে মডেল-স্কোপড কুলডাউন প্রতিক্রিয়ায় স্বয়ংক্রিয় পুনঃচেষ্টার সংখ্যা।
MAX_RETRY_INTERVAL_SEC 30 src/sse/services/cooldownAwareRetry.ts কুলডাউন পুনঃচেষ্টাগুলোর মধ্যবর্তী সর্বোচ্চ ব্যাকঅফ ব্যবধান (সেকেন্ড)। আপস্ট্রিম Retry-After নির্বিশেষে এই মানে সীমাবদ্ধ।
HEADROOM_URL http://localhost:8787 src/lib/headroom/detect.ts Headroom টোকেন-সেভার প্রক্সি URL। ড্যাশবোর্ড লাইফসাইকেল (api/headroom/*) ডিফল্টভাবে লুপব্যাকে একটি স্থানীয় headroom-ai CLI চালু করে; শুধু কোনো বাহ্যিক Docker সাইডকার প্রক্সির দিকে নির্দেশ করতে এটি ওভাররাইড করুন।

স্ট্রিম-রিকভারি টিউনিং ধ্রুবক

রিকভারি হোল্ডব্যাক আচরণটি open-sse/config/constants.ts-এর STREAM_RECOVERY-তে হার্ডকোড করা ধ্রুবকগুলোর মাধ্যমে টিউন করা হয়, যা রেফারেন্সের জন্য এখানে দেখানো হয়েছে — এগুলো পরিবর্তন করতে কোড সম্পাদনা করতে হবে, env var নয়:

  • STREAM_RECOVERY.HOLDBACK_MS = 750 — প্রারম্ভিক SSE উইন্ডোটি কতক্ষণ ধরে রাখা হবে, যাতে ক্লায়েন্টের কাছে কোনো বাইট কমিট করার আগেই প্রাথমিক ট্রাঙ্কেশন হলে পুনরায় চেষ্টা করা যায়।
  • STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536 — ধরে রাখা উইন্ডোর কঠোর সর্বোচ্চ সীমা; টাইমার নির্বিশেষে এতগুলো বাইট জমা হওয়ার সঙ্গে সঙ্গেই কমিট (ফ্লাশ + পাসথ্রু) করা হয়।
  • STREAM_RECOVERY.EARLY_RETRY_MAX = 4 — হোল্ডব্যাকটি কমিট না হওয়া পর্যন্ত আপস্ট্রিম স্ট্রিম স্বচ্ছভাবে পুনরায় খোলার সর্বোচ্চ সংখ্যা।

প্রতি-প্রোভাইডার স্লাইডিং-উইন্ডো রেট লিমিট (কোনো env var নেই): FCC থেকে পোর্ট করা প্রতি-প্রোভাইডার স্লাইডিং-উইন্ডো রেট-লিমিট ফলব্যাক কোডে বিদ্যমান (open-sse/services/providerDefaultRateLimit.ts, যা open-sse/services/rateLimitManager.ts-এর মাধ্যমে সংযুক্ত), কিন্তু এটি একটি খালি ডিফল্ট ম্যাপ সহ সরবরাহ করা হয় এবং বর্তমানে এর জন্য কোনো অপারেটর env var নেই — এটি কেবল একটি টেস্ট হুক / কোড সম্পাদনার মাধ্যমে সক্রিয় করা যায়। ইচ্ছাকৃতভাবেই এটি উপরের টেবিলে তালিকাভুক্ত করা হয়নি। যে প্রতি-(token, IP) রিলে লিমিটারে সত্যিই একটি নিয়ন্ত্রণযোগ্য সেটিং রয়েছে, সেটি হলো RELAY_IP_PER_MINUTE (§3 নেটওয়ার্ক ও পোর্টসমূহ)।


22. ডিবাগিং

Caution

এই ভেরিয়েবলগুলো বিস্তারিত আউটপুট তৈরি করে এবং সংবেদনশীল ডেটা ফাঁস করতে পারে। প্রোডাকশনে কখনোই সক্রিয় করবেন না।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
CURSOR_DEBUG (সেট করা নেই) open-sse/executors/cursor.ts বিস্তারিত Cursor executor লগ (ডিকোড করা SSE chunk ইত্যাদি) সক্রিয় করতে 1 সেট করুন।
CURSOR_STREAM_DEBUG (সেট করা নেই) open-sse/executors/cursor.ts CURSOR_DEBUG-এর পশ্চাৎ-সামঞ্জস্যপূর্ণ alias।
CURSOR_DUMP_FILE (সেট করা নেই) open-sse/executors/cursor.ts ঐচ্ছিক ফাইল পাথ, যেখানে CURSOR_DEBUG=1 হলে raw ডিকোড করা Cursor chunk লেখা হয়।
CURSOR_STREAM_TIMEOUT_MS 300000 open-sse/executors/cursor.ts Cursor executor-এর stream নিষ্ক্রিয়তার timeout (ms)।
CURSOR_KV_GRACE_MS 2000 open-sse/executors/cursor.ts composer kv_after_text soft terminator-এর পরে byte buffer-এ থেকে গেলে grace window (ms)—এটি পরবর্তী exec_mcp tool call-কে তার frame সম্পূর্ণ করার সময় দেয়।
CURSOR_TOOL_DIRECTIVE সক্রিয় (!== "0") open-sse/executors/cursor.ts Tool-commit directive, যা composer-2.5-কে নির্ভরযোগ্যভাবে tool call করতে সহায়তা করে। নিষ্ক্রিয় করতে 0 সেট করুন।
OMNIROUTE_SYSTEM_INSTRUCTION_APPEND (সেট করা নেই) open-sse/translator/request/claude-to-openai.ts, open-sse/translator/response/openai-to-claude.ts অপারেটর-নির্ধারিত system prompt text, যা অনুবাদের পরে system message-এ যুক্ত হয় (post-translation injection) এবং codex/Responses ও /v1/messages path-এ পৌঁছায়। প্রতিধ্বনিত system preamble block থেকে বাদ দেওয়া directive prefix হিসেবেও ব্যবহৃত হয়। নিষ্ক্রিয় রাখতে সেট না করে রাখুন।
CURSOR_IMAGE_FETCH_TIMEOUT_MS 15000 open-sse/utils/cursorImages.ts remote image_url vision input-এর জন্য প্রতি-image fetch timeout (ms)।
CURSOR_STATE_DB_PATH (অনুসন্ধান করা হয়) open-sse/utils/cursorVersionDetector.ts IDE version শনাক্তকরণে ব্যবহৃত Cursor IDE state DB lookup override করুন।
CURSOR_AGENT_CLI_VERSION (শনাক্ত / pin) open-sse/utils/cursorAgentCliVersion.ts Agent Run-এ x-cursor-client-version: cli-…-এর জন্য Agent CLI build id (YYYY.MM.DD-<hash>)।
CURSOR_AGENT_BIN (সেট করা নেই) open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts image generation-এর জন্য ব্যবহৃত Cursor Agent binary-র path। সেট না থাকলে handler প্রথমে providerSpecificData.agentBin, তারপর PATH ব্যবহার করে।
CURSOR_IMG_TIMEOUT_MS 210000 open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts Cursor Agent image job-এর জন্য প্রতি-image wall clock (ms)।
CURSOR_IMG_MAX_CONCURRENT 2 open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts Cursor image job-এর জন্য shared-seat concurrency gate।
CURSOR_IMG_MODEL request / auto open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts image job-এর জন্য Cursor CLI --model override করুন।
UC_IMAGE_POLL_INTERVAL_MS 2000 open-sse/handlers/imageGeneration/providers/ucImage.ts UC (uncensored.com) image-gen ফলাফল poll করার cadence (ms)।
UC_IMAGE_POLL_TIMEOUT_MS 60000 open-sse/handlers/imageGeneration/providers/ucImage.ts UC image-gen ফলাফল poll করার wall clock (ms)।
UC_VIDEO_POLL_INTERVAL_MS 3000 open-sse/handlers/videoGeneration/providers/ucVideo.ts UC (uncensored.com) video-gen ফলাফল poll করার cadence (ms)।
UC_VIDEO_POLL_TIMEOUT_MS 300000 open-sse/handlers/videoGeneration/providers/ucVideo.ts UC video-gen ফলাফল poll করার wall clock (ms)।
CURSOR_DATA_DIR (অনুসন্ধান করা হয়) open-sse/utils/cursorAgentCliVersion.ts Cursor Agent CLI data dir (…/versions/<id>) override করুন; official agent-ও একই var ব্যবহার করে।
CURSOR_TOKEN (সেট করা নেই) scripts/ad-hoc/cursor-tap.cjs developer tooling-এ ব্যবহৃত সরাসরি Cursor bearer token।
OMNIROUTE_LOG_REQUEST_SHAPE নিষ্ক্রিয় ("1" দিয়ে opt-in) src/app/api/v1/chat/completions/route.ts "1" সেট করা হলে বড় chat payload-এর content-type/length marker লগ করুন। লগের অপ্রয়োজনীয় তথ্য কমাতে ডিফল্টরূপে বন্ধ থাকে।
DEBUG_RESPONSES_SSE_TO_JSON (সেট করা নেই) open-sse/handlers/responseTranslator.ts Responses API SSE→JSON অনুবাদের বিবরণ লগ করতে true সেট করুন।
DEBUG_CLAUDE_NONSTREAM (সেট করা নেই) open-sse/handlers/responseTranslator.ts Claude response অনুবাদ path-এ খালি textContent chunk প্রকাশ করতে true সেট করুন (শুধু debugging-এর জন্য)।
NEXT_PUBLIC_OMNIROUTE_E2E_MODE (সেট করা নেই) E2E test harness E2E test mode (শিথিল auth, test hook) সক্রিয় করতে true সেট করুন।

23. GitHub ইন্টিগ্রেশন

ব্যবহারকারীদের সরাসরি ড্যাশবোর্ড থেকে সমস্যা রিপোর্ট করার সুযোগ দিন।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
GITHUB_ISSUES_REPO (সেট করা নেই) src/app/api/v1/issues/report/route.ts owner/repo ফরম্যাটে রিপোজিটরি।
GITHUB_ISSUES_TOKEN (সেট করা নেই) src/app/api/v1/issues/report/route.ts issues:write স্কোপসহ GitHub Personal Access Token।
GITHUB_TOKEN (সেট করা নেই) ইস্যু ট্রায়াজ / ক্লাউড এজেন্ট হেল্পার GITHUB_ISSUES_TOKEN-এর ফলব্যাক হিসেবে ব্যবহৃত এবং src/lib/cloudAgent/*-এর ক্লাউড এজেন্ট হেল্পারগুলো দ্বারা ব্যবহৃত সাধারণ GitHub অ্যাক্সেস টোকেন।

ডিপ্লয়মেন্টের পরিস্থিতি

রিলে ব্যাকএন্ডের SRE নির্দেশনার জন্য (ts/bifrost/auto-এর আচরণ, 9router বনাম CLIProxyAPI-এর অবস্থান এবং উচ্চ-থ্রুপুট ফলব্যাক কৌশল), রিলে ব্যাকএন্ড কৌশল দেখুন।

ন্যূনতম লোকাল ডেভেলপমেন্ট

JWT_SECRET=$(openssl rand -base64 48)
API_KEY_SECRET=$(openssl rand -hex 32)
INITIAL_PASSWORD=dev123
PORT=20128
NODE_ENV=development

Docker প্রোডাকশন

JWT_SECRET=<generated>
API_KEY_SECRET=<generated>
INITIAL_PASSWORD=<generated>
STORAGE_ENCRYPTION_KEY=<generated>
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

এয়ার-গ্যাপড / CI

JWT_SECRET=test-jwt-secret-for-ci
API_KEY_SECRET=test-api-key-secret-for-ci
INITIAL_PASSWORD=testpass
NODE_ENV=production
OMNIROUTE_DISABLE_BACKGROUND_SERVICES=true
APP_LOG_TO_FILE=false

রিভার্স প্রক্সিসহ VPS (nginx + Cloudflare)

JWT_SECRET=<generated>
API_KEY_SECRET=<generated>
STORAGE_ENCRYPTION_KEY=<generated>
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 স্যান্ডবক্স (v3.8.0+)

Skills ফ্রেমওয়ার্ক (src/lib/skills/) যখন স্যান্ডবক্স পরিবেশে ব্যবহারকারী-নির্ধারিত অটোমেশন চালায়, তখন প্রয়োগ করা সীমা ও নিরাপত্তা নিয়ন্ত্রণসমূহ।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
SKILLS_SANDBOX_TIMEOUT_MS 10000 (10 সেকেন্ড) src/lib/skills/builtins.ts স্যান্ডবক্সকৃত স্কিল কোডের প্রতিটি এক্সিকিউশনের জন্য বাস্তব সময়ের টাইমআউট। এটি একটি কঠোর সীমা; এর চেয়ে বেশি সময় চললে প্রক্রিয়াটি বন্ধ করে দেওয়া হয়।
SKILLS_EXECUTION_TIMEOUT_MS (SKILLS_SANDBOX_TIMEOUT_MS-এ ফলব্যাক করে) src/lib/skills/ উচ্চ-স্তরের স্কিল অর্কেস্ট্রেশন টাইমআউট। বহু-ধাপের ওয়ার্কফ্লোর সুযোগ দিতে এটি SKILLS_SANDBOX_TIMEOUT_MS-এর চেয়ে বেশি নির্ধারণ করুন।
SKILLS_MAX_FILE_BYTES 1048576 (1 MB) src/lib/skills/builtins.ts একটি স্কিল যেকোনো একক স্যান্ডবক্সকৃত ফাইল থেকে সর্বোচ্চ যত বাইট পড়তে পারবে।
SKILLS_MAX_HTTP_RESPONSE_BYTES 256000 (250 KB) src/lib/skills/builtins.ts একটি স্কিলের মধ্যে যেকোনো একক HTTP রেসপন্স থেকে ধারণ করা সর্বোচ্চ বাইট।
SKILLS_MAX_SANDBOX_OUTPUT_CHARS 100000 src/lib/skills/builtins.ts একটি স্যান্ডবক্স ইনভোকেশন থেকে ফেরত আসা stdout/stderr অক্ষরের কঠোর সর্বোচ্চ সীমা।
SKILLS_SANDBOX_NETWORK_ENABLED false src/lib/skills/builtins.ts স্যান্ডবক্সের ভেতর থেকে আউটবাউন্ড নেটওয়ার্ক ব্যবহারের অনুমতি দিতে 1/true নির্ধারণ করুন। নিরাপত্তার জন্য ডিফল্টভাবে বিচ্ছিন্ন থাকে।
SKILLS_ALLOWED_SANDBOX_IMAGES (খালি) src/lib/skills/builtins.ts স্যান্ডবক্স এক্সিকিউশনের জন্য অনুমোদিত কনটেইনার ইমেজগুলোর কমা দিয়ে পৃথক করা অ্যালাউলিস্ট। খালি থাকলে শুধুমাত্র বিল্ট-ইন ডিফল্ট ব্যবহৃত হবে।
SKILLS_SANDBOX_DOCKER_IMAGE (বিল্ট-ইন ডিফল্ট) src/lib/skills/ Docker-সমর্থিত স্যান্ডবক্স চালু করার সময় ব্যবহৃত কনটেইনার ইমেজ। একটি কাস্টম হার্ডেনড বেস ইমেজ পিন করতে এটি ওভাররাইড করুন।
SKILLS_SANDBOX_RUNTIME auto src/lib/skills/sandbox.ts, src/lib/skills/containerProvider.ts স্কিল স্যান্ডবক্সিংয়ের জন্য কনটেইনার রানটাইম: auto | docker | apple | wsl | orbstack | podmanauto হোস্ট OS অনুযায়ী ইনস্টল করা সেরা রানটাইমটি বেছে নেয় (macOS-এ Apple Container/OrbStack, Windows-এ WSL Container, Linux-এ Podman), এবং প্রয়োজনে Docker-এ ফলব্যাক করে।

Caution

SKILLS_SANDBOX_NETWORK_ENABLED=true সক্রিয় করলে যেকোনো স্কিল কোডের জন্য একটি ইগ্রেস পথ খুলে যায়। শেয়ার্ড ডিপ্লয়মেন্টে এটি OUTBOUND_SSRF_GUARD_ENABLED=true এবং কঠোর CORS_ORIGIN/প্রক্সি নীতির সঙ্গে ব্যবহার করুন।


25. প্রোভাইডার কোটা, টানেল, ব্যাকআপ ও বিবিধ রানটাইম

প্রোভাইডার কোটা এন্ডপয়েন্ট, নেটওয়ার্ক টানেল (Tailscale, Ngrok, MITM ডিবাগ প্রক্সি), 1Proxy ইগ্রেস পুল, ডেটাবেস ব্যাকআপ এবং এক্সিকিউটর স্তর বা স্ক্রিপ্টসমূহে উল্লেখিত প্রতিটি ফিচারের ছোট ওভাররাইডসমূহ।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
REDIS_URL redis://localhost:6379 src/shared/utils/rateLimiter.ts রেট লিমিটার ব্যাকএন্ডের জন্য Redis সংযোগ স্ট্রিং।
ALIBABA_CODING_PLAN_HOST (প্রোডাকশন হোস্ট) open-sse/services/bailianQuotaFetcher.ts Alibaba Bailian coding-plan কোটা আনতে ব্যবহৃত হোস্ট ওভাররাইড করে।
ALIBABA_CODING_PLAN_QUOTA_URL হোস্ট থেকে নির্ণীত open-sse/services/bailianQuotaFetcher.ts Alibaba Bailian-এর জন্য সম্পূর্ণ কোটা URL ওভাররাইড।
QWEN_CLOUD_COOKIE (সেট করা নেই) open-sse/services/qwenTokenPlanQuotaFetcher.ts Qwen Cloud / Model Studio ব্যক্তিগত Token Plan কোটা গেটওয়ের Console সেশন কুকি (inference API key দিয়ে এটি পড়া যায় না)। home.qwencloud.com Billing Subscription-এ (F12 Network) cs-data.qwencloud.com-এ করা যেকোনো api.json কল থেকে সম্পূর্ণ Cookie অনুরোধ হেডারটি কপি করুন—এতে login_qwencloud_ticket থাকে। সংবেদনশীল ও সেশন-সীমাবদ্ধ; প্রতি-সংযোগ qwenCloudCookie Dashboard ফিল্ড ব্যবহার করাই শ্রেয়।
QWEN_CLOUD_SEC_TOKEN (সেট করা নেই) open-sse/services/qwenTokenPlanQuotaFetcher.ts Token Plan console গেটওয়ের জন্য ম্যানুয়াল sec_token ওভাররাইড। সংবেদনশীল; সেট করা না থাকলে fetcher কুকি ব্যবহার করে dashboard HTML থেকে এটি নির্ণয় করে।
QWEN_TOKEN_PLAN_HOST https://cs-data.qwencloud.com open-sse/services/qwenTokenPlanQuotaFetcher.ts ব্যক্তিগত Token Plan quota fetcher-এর গেটওয়ে হোস্ট ওভাররাইড (যেমন Model Studio console-এর জন্য bailian-singapore-cs.alibabacloud.com)।
QWEN_TOKEN_PLAN_DASHBOARD_URL https://home.qwencloud.com/ open-sse/services/qwenTokenPlanQuotaFetcher.ts লগ-ইন করা HTML থেকে sec_token নির্ণয়ে ব্যবহৃত Dashboard URL।
ALIBABA_FREE_TIER_VISION_FE_PATH /costing-balance/free-quota-image-video open-sse/services/alibabaFreeTierQuotaFetcher.ts Alibaba Model Studio free-tier vision/media কোটা আনার জন্য Console front-end পাথ ওভাররাইড।
ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH /costing-balance/free-quota-multimodal open-sse/services/alibabaFreeTierQuotaFetcher.ts Alibaba Model Studio free-tier multimodal কোটা আনার জন্য Console front-end পাথ ওভাররাইড।
ALIBABA_FREE_TIER_AUDIO_FE_PATH /costing-balance/free-quota-audio open-sse/services/alibabaFreeTierQuotaFetcher.ts Alibaba Model Studio free-tier audio কোটা আনার জন্য Console front-end পাথ ওভাররাইড।
ALIBABA_FREE_TIER_ALLOWLIST_PATH (সেট করা নেই) open-sse/services/alibabaFreeTierAllowlist.ts বিল্ট-ইন Alibaba free-tier text-model allowlist-এর স্থানীয় JSON ওভাররাইডের ঐচ্ছিক পাথ। প্রথমে $DATA_DIR/alibaba-free-tier-allowlist.json, তারপর config/alibaba-free-tier-allowlist.json-এ fallback করে।
CONTEXT_RESERVE_TOKENS 1024 open-sse/services/contextManager.ts prompt budget গণনার সময় completion output-এর জন্য সংরক্ষিত token।
CONTEXT_KEEP_LATEST_IMAGES 2 open-sse/services/contextManager.ts context window-এ মানানসই করতে পুরোনো inline image ছাঁটাইয়ের সময় সর্বশেষ কয়টি image রাখা হবে (#8560)।
MODEL_ALIAS_COMPAT_ENABLED সক্রিয় open-sse/services/model.ts পুরোনো client-এ ব্যবহৃত legacy model-alias compatibility layer চালু বা বন্ধ করে।
OMNIROUTE_EMERGENCY_FALLBACK সক্রিয় open-sse/services/emergencyFallback.ts ব্যর্থ অনুরোধকে বিনামূল্যের nvidia/openai/gpt-oss-120b model-এ পুনরায় route করা জরুরি budget-exhaustion fallback বন্ধ করতে false (অথবা 0) সেট করুন। কার্যকর অগ্রাধিকার হলো Feature Flags DB override > env var > default; এটি অনুপলব্ধ হলে service সরাসরি env মানে fallback করে।
COMMAND_CODE_CALLBACK_PORT (সেট করা নেই) src/app/api/providers/command-code/auth/shared.ts Command Code CLI helper থেকে OAuth-ধাঁচের callback-এর জন্য ব্যবহৃত স্থানীয় port।
COMMAND_CODE_VERSION 0.33.2 open-sse/executors/commandCode.ts Command Code upstream-এ x-command-code-version header হিসেবে পাঠানো মান। CLI version বাড়াতে ওভাররাইড করুন।
COMMANDCODE_API_URL https://api.commandcode.ai open-sse/services/usage/command-code.ts smartphone quota-fetcher telemetry-তে ব্যবহৃত Command Code usage/quota upstream-এর base URL। self-hosted/বিকল্প Command Code API-এর জন্য ওভাররাইড করুন।
MITM_LOCAL_PORT 443 src/mitm/server.cjs MITM debug proxy-এর স্থানীয় bind port।
MITM_DISABLE_TLS_VERIFY 0 src/mitm/server.cjs upstream TLS verification বন্ধ করতে 1 সেট করুন (শুধু development-এর জন্য)।
MITM_IDLE_TIMEOUT_MS 60000 src/mitm/socketTimeouts.ts, src/mitm/server.cjs proxied connection-এর idle socket timeout (ms); এর বেশি সময় idle থাকা socket বিচ্ছিন্ন করা হয়, যাতে half-open tunnel leak না হয়।
MITM_VERBOSE 1 src/mitm/server.cjs, src/mitm/_internal/bypass.cjs routing-decision log-এর verbosity: 0 নীরব রাখে, বেশি মান আরও bypass/route decision log করে।
MITM_ROOT_CA_ENABLED false src/mitm/manager.ts root-CA + per-host-leaf cert model বেছে নিতে true সেট করুন (#6684)। নতুন install-এ এটি স্বয়ংক্রিয়ভাবে থাকে; আগে থেকেই trusted legacy leaf থাকা install বেছে না নিলে legacy fixed-SAN cert বজায় রাখে।
MITM_CERT_MODE legacy src/mitm/manager.ts, src/mitm/server.cjs spawned proxy process-এর জন্য MITM manager দ্বারা সেট করা হয় (root-ca | legacy)—cert-migration সিদ্ধান্ত প্রতিফলিত করে; ম্যানুয়ালি সেট করার জন্য নয়।
OMNIROUTE_NO_SUDO 0 src/mitm/systemCommands.ts MITM cert-trust command-এর শুরু থেকে sudo বাদ দিতে 1 (truthy) সেট করুন—root-less / user-namespaced deployment-এর জন্য, যেখানে operator ম্যানুয়ালি CA trust করেন (যেমন Node-এর extra-CA-certs mechanism-এর মাধ্যমে)।
SKIP_ANTIGRAVITY_DNS (সেট করা নেই) src/mitm/dns/provision.ts sudo/root অনুপলব্ধ container-এর জন্য Antigravity proxy hostname-গুলোর /etc/hosts DNS entry provisioning সম্পূর্ণ এড়াতে true সেট করুন।
OMNIROUTE_SKIP_DNS_WRITE (সেট করা নেই) src/mitm/dns/dnsConfig.ts sandboxed বা read-only test environment-এ DNS entry যোগ/অপসারণের সময় hosts file-এ লেখা এড়াতে 1 সেট করুন।
OMNIROUTE_SKIP_SYSTEM_TRUST 0 src/mitm/cert/install.ts, src/mitm/tproxy/caTrust.ts শুধু Test/CI-এর guard: cert trust install/uninstall-কে no-op করতে 1 সেট করুন, যাতে suite কখনো OS trust store পরিবর্তন না করে। test setup ও CI workflow এটি স্বয়ংক্রিয়ভাবে সেট করে।
CHANGELOG_BASE_REF (স্বয়ংক্রিয়) scripts/check/check-changelog-integrity.mjs anti CHANGELOG-eat gate-এর explicit base ref (ডিফল্টভাবে CI-তে PR base branch, অথবা সর্বোচ্চ release/v*)।
FREE_PROXY_AUTO_SYNC_ENABLED false src/lib/freeProxyProviders/scheduler.ts background free-proxy pool auto-sync scheduler সক্রিয় করতে true সেট করুন। এটি opt-in এবং ডিফল্টভাবে বন্ধ।
FREE_PROXY_AUTO_SYNC_INTERVAL_MS 1800000 src/lib/freeProxyProviders/scheduler.ts মিলিসেকেন্ডে auto-sync interval (ডিফল্ট 30 মিনিট)।
FREE_PROXY_1PROXY_ENABLED true src/lib/freeProxyProviders/oneproxy.ts 1proxy free proxy source সক্রিয় করে। বন্ধ করতে false সেট করুন।
FREE_PROXY_1PROXY_API_URL (oneproxy.ts দেখুন) src/lib/freeProxyProviders/oneproxy.ts 1proxy API URL ওভাররাইড।
FREE_PROXY_1PROXY_MAX 500 src/lib/freeProxyProviders/oneproxy.ts প্রতি sync-এ 1proxy থেকে আনা proxy-র সর্বোচ্চ সংখ্যা।
FREE_PROXY_1PROXY_MIN_QUALITY 50 src/lib/freeProxyProviders/oneproxy.ts 1proxy import-এর ন্যূনতম quality score threshold।
FREE_PROXY_PROXIFLY_ENABLED true src/lib/freeProxyProviders/proxifly.ts Proxifly free proxy source সক্রিয় করে। বন্ধ করতে false সেট করুন।
FREE_PROXY_PROXIFLY_QUANTITY 100 src/lib/freeProxyProviders/proxifly.ts প্রতি Proxifly sync-এ আনার জন্য proxy-র সংখ্যা।
FREE_PROXY_PROXIFLY_ANONYMITY elite src/lib/freeProxyProviders/proxifly.ts Proxifly-এর anonymity level filter (elite, anonymous, transparent)।
FREE_PROXY_IPLOCATE_ENABLED false src/lib/freeProxyProviders/iplocate.ts IPLocate free proxy source সক্রিয় করে। শুধু opt-in।
FREE_PROXY_IPLOCATE_BASE_URL https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols src/lib/freeProxyProviders/iplocate.ts IPLocate proxy list-এর base URL ওভাররাইড।
FREE_PROXY_WEBSHARE_ENABLED true src/lib/freeProxyProviders/webshare.ts Webshare proxy pool source সক্রিয় করে। বন্ধ করতে false সেট করুন; পাশাপাশি FREE_PROXY_WEBSHARE_API_KEY সেট করাও আবশ্যক।
FREE_PROXY_WEBSHARE_API_KEY (কোনোটিই নয়) src/lib/freeProxyProviders/webshare.ts Webshare account API token (Authorization: Token <key>)। আবশ্যক—এটি ছাড়া provider নিষ্ক্রিয় থাকে।
FREE_PROXY_WEBSHARE_API_URL https://proxy.webshare.io/api/v2/proxy/list/ src/lib/freeProxyProviders/webshare.ts Webshare proxy list API URL ওভাররাইড।
FREE_PROXY_WEBSHARE_MAX 500 src/lib/freeProxyProviders/webshare.ts প্রতি Webshare sync-এ import করা proxy-র সর্বোচ্চ সংখ্যা।
NEXT_PUBLIC_VERCEL_RELAY_ENABLED true src/app/(dashboard)/…/ProxyPoolTab.tsx Proxy Pool tab-এ Deploy Vercel Relay button দেখায়/লুকায়।
VERCEL_API_BASE https://api.vercel.com src/app/api/settings/proxy/vercel-deploy/route.ts Vercel API base URL ওভাররাইড (testing-এর জন্য)।
NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT omniroute-relay src/app/(dashboard)/…/VercelRelayModal.tsx Vercel Relay deploy modal-এ আগে থেকে পূরণ করা ডিফল্ট project name।
TAILSCALE_BIN (স্বয়ংক্রিয়ভাবে শনাক্ত) src/lib/tailscaleTunnel.ts tailscale binary-র explicit পাথ।
TAILSCALED_BIN (স্বয়ংক্রিয়ভাবে শনাক্ত) src/lib/tailscaleTunnel.ts tailscaled daemon binary-র explicit পাথ।
TAILSCALE_AUTHKEY (সেট করা নেই) src/lib/tailscaleTunnel.ts non-interactive / headless tailscale up-এর জন্য pre-shared Tailscale auth key (--auth-key= দিয়ে পাঠানো হয়)। সেট করা না থাকলে login interactive browser auth URL-এ fallback করে।
NGROK_AUTHTOKEN (সেট করা নেই) src/lib/ngrokTunnel.ts outbound ngrok tunnel authenticate করে।
DB_BACKUP_MAX_FILES 20 src/lib/db/backup.ts manual/scheduled backup cleanup-এ সংরক্ষিত SQLite backup file-এর সর্বোচ্চ সংখ্যা। Migration snapshot content-addressed এবং একই DB state-এর জন্য পুনর্ব্যবহৃত হয়; concurrent migration window-এর মধ্যে সেগুলো prune করা হয় না। Settings → Database backup retention-এ সংরক্ষিত মান ওভাররাইড করে।
DB_BACKUP_RETENTION_DAYS 0 src/lib/db/backup.ts manual/scheduled backup cleanup-এ সংরক্ষণের সর্বোচ্চ বয়স (দিন)। 0 age-based pruning বন্ধ করে। concurrent migration window-এর মধ্যে Migration snapshot prune করা হয় না। Settings → Database backup retention-এ সংরক্ষিত মান ওভাররাইড করে।
OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS 30000 src/lib/jobs/backupScheduleJob.ts backup-schedule.json চালানো server-side job-এর tick interval (ms)। এটি 1-minute cron granularity-এর চেয়ে যথেষ্ট কম হতে হবে; 5000-এর কম বা parse করা যায় না এমন মান 30000-এ fallback করে।
CONTAINER_HOST docker scripts/check-permissions.sh entrypoint permission check-এর জন্য container runtime hint। যেকোনো Podman topology-র জন্য podman সেট করুন। container engine স্থানীয় নাকি Podman Machine-এর মাধ্যমে ব্যবহৃত তা নির্ধারণ করতে পারে না বলে warning topology-neutral থাকে এবং contrib/podman/README.md নির্দেশ করে।
QUOTA_STORE_DRIVER sqlite src/lib/quota/storeFactory.ts Quota-share consumption store backend: sqlite (ডিফল্ট) অথবা redis
QUOTA_STORE_REDIS_URL (সেট করা নেই) src/lib/quota/storeFactory.ts QUOTA_STORE_DRIVER=redis হলে ব্যবহৃত Redis connection string (যেমন redis://localhost:6379)।
QUOTA_SATURATION_THRESHOLD 0.5 src/lib/quota/enforce.ts Pool saturation ratio (0..1); এটি বা তার বেশি হলে pool strict mode-এ প্রবেশ করে (borrowing হয় না)।
QUOTA_SOFT_DEPRIORITIZE_FACTOR 0.7 open-sse/services/combo.ts soft quota policy কোনো target-কে deprioritize করলে প্রয়োগ করা score multiplier (0..1)।
STATUS_SOFT_DEPRIORITIZE_FACTOR 0.5 open-sse/services/combo/autoStrategy.ts preflight quota cutoff বন্ধ থাকলে auto-combo scoring-এ exhausted provider-এর (credits_exhausted/rate_limited) ওপর প্রয়োগ করা score multiplier (0..1) (#4540)।
QUOTA_CONSUMPTION_RETENTION_DAYS 14 src/lib/db/quotaConsumption.ts GC (gcQuotaConsumption)-এর আগে quota_consumption bucket-এর retention window (দিন)।
QUOTA_PREFLIGHT_CUTOFF_ENABLED false src/lib/resilience/settings.ts Opt-in (ডিফল্টভাবে বন্ধ): scoring-এর আগে low-quota candidate বাদ দেওয়া auto-routing hard quota cutoff সক্রিয় করে।
OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL false open-sse/services/autoCombo/virtualFactory.ts Opt-in (ডিফল্টভাবে বন্ধ): কোনো auto/<category>:<tier> filter-এ connected candidate না মিললে empty pool ফেরানোর বদলে সম্পূর্ণ (unfiltered) pool-এ fallback করার legacy behavior ফিরিয়ে আনে। ডিফল্টভাবে বন্ধ থাকায় :free অর্থ "শুধু free tier"।
OMNIROUTE_CHAOS_MAX_PANEL 5 open-sse/services/autoCombo/virtualFactory.ts auto/*:chaos broadcast variant-এর panel-size cap (110-এর মধ্যে clamped)—একটি request সর্বাধিক এতগুলো provider-diverse model-এ fan out হয়।
OMNIROUTE_CHAOS_MIN_PANEL (engine-এর ডিফল্ট) open-sse/services/autoCombo/virtualFactory.ts chaos broadcast handler-এ forward করা minimum panel-size tuning; সেট না করলে engine-এর ডিফল্ট বজায় থাকে।
OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS (engine-এর ডিফল্ট) open-sse/services/autoCombo/virtualFactory.ts সম্পূর্ণ chaos panel fan-out-এর hard timeout (ms); সেট না করলে engine-এর ডিফল্ট বজায় থাকে।
GROK_AUTH_PATH ~/.grok/auth.json open-sse/services/grokQuotaFetcher.ts grok-web weekly quota আনতে ব্যবহৃত Grok CLI auth.json-এর পাথ; test বা non-standard CLI install-এর জন্য ওভাররাইড করুন।
AGENTBRIDGE_UPSTREAM_CA_CERT (সেট করা নেই) src/mitm/manager.ts AgentBridge upstream TLS connection-এর জন্য trusted অতিরিক্ত CA certificate (PEM)।
INSPECTOR_BUFFER_SIZE 1000 src/mitm/inspector/buffer.ts Traffic Inspector ring buffer-এ রাখা captured request-এর সর্বোচ্চ সংখ্যা।
INSPECTOR_MAX_BODY_KB 1024 src/mitm/inspector/buffer.ts truncation-এর আগে captured request/response body-র সর্বোচ্চ আকার (KB)।
INSPECTOR_HTTP_PROXY_PORT 8080 src/mitm/inspector/httpProxyServer.ts Traffic Inspector HTTP proxy-এর স্থানীয় port।
INSPECTOR_HTTP_PROXY_AUTOSTART false src/mitm/inspector/httpProxyServer.ts boot-এর সময় inspector HTTP proxy স্বয়ংক্রিয়ভাবে চালু করে।
INSPECTOR_TLS_INTERCEPT false src/lib/inspector/captureState.ts captured HTTPS traffic-এর জন্য TLS interception (MITM) সক্রিয় করে।
INSPECTOR_LLM_HOSTS_EXTRA (সেট করা নেই) src/lib/inspector/captureState.ts capture-এর জন্য LLM endpoint হিসেবে বিবেচিত অতিরিক্ত hostname (কমা দিয়ে পৃথক)।
INSPECTOR_MASK_SECRETS true src/mitm/inspector/buffer.ts captured traffic-এ secret (auth header / API key) mask করে।
INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES 30 src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts system-proxy guard স্বয়ংক্রিয়ভাবে OS proxy setting ফিরিয়ে দেওয়ার আগের সময়, মিনিটে।
INSPECTOR_INTERNAL_INGEST_TOKEN (স্বয়ংক্রিয়) src/app/api/tools/traffic-inspector/internal/ingest/route.ts inspector-এ internal capture ingest authenticate করা token।
PLAYGROUND_COMPARE_MAX_COLUMNS 4 src/app/(dashboard)/dashboard/playground/ Playground compare mode-এ পাশাপাশি column-এর সর্বোচ্চ সংখ্যা।
PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL (সেট করা নেই) src/app/(dashboard)/dashboard/playground/ Playground-এর 'improve prompt' action-এর ডিফল্ট model (সেট না থাকলে active model-এ fallback করে)।
BIFROST_ENABLED 1 src/app/api/v1/relay/chat/completions/bifrost/route.ts bifrost sidecar proxy-এর master kill switch। 0 সেট করলে route X-Bifrost-Killswitch header সহ 503 ফেরায় এবং operator-কে TS path-এ পাঠানো হয়। পুনরায় deploy না করেই sidecar বন্ধ করতে ব্যবহার করুন (tier-1 router incident, key rotation)।
BIFROST_BASE_URL (সেট করা নেই) src/app/api/v1/relay/chat/completions/bifrost/route.ts সেট করা হলে Bifrost sidecar proxy route /v1/chat/completions traffic TS relay handler-এর বদলে এই Go gateway-তে forward করে। সেট না থাকলে → fallback-সহ 503। trailing slash বাদ দেওয়া হয়।
BIFROST_PORT 8080 src/lib/services/bootstrap.ts OmniRoute যখন Bifrost sidecar lifecycle পরিচালনা করে, তখন supervised Bifrost embedded service যে port-এ bind করে (127.0.0.1:<port>)। ডিফল্ট 8080
BIFROST_API_KEY (সেট করা নেই) src/app/api/v1/relay/chat/completions/bifrost/route.ts Bifrost gateway-এর API key (Authorization: Bearer ... হিসেবে পাঠানো হয়)। সেট না থাকলে route আশা করে request-এ বৈধ OmniRoute API key থাকবে; এই key শুধু gateway-side auth-এর জন্য।
BIFROST_STREAMING_ENABLED true src/app/api/v1/relay/chat/completions/bifrost/route.ts true হলে Bifrost sidecar route TS streaming executor-এর বদলে gateway-এর মধ্য দিয়ে SSE ব্যবহার করে response stream করে। gateway-এর মধ্য দিয়ে non-streaming JSON response বাধ্যতামূলক করতে 0 সেট করুন।
BIFROST_TIMEOUT_MS 30000 src/app/api/v1/relay/chat/completions/bifrost/route.ts Bifrost gateway-তে proxy করার সময় প্রতি-request timeout (ms)। timeout হলে route X-Bifrost-Fallback header-এর মাধ্যমে TS relay path ফেরায়।
OMNIROUTE_BIFROST_KEY (সেট করা নেই) src/app/api/v1/relay/chat/completions/bifrost/route.ts BIFROST_API_KEY-এর alias (OMNIROUTE_* দিয়ে env পড়া script-এ ব্যবহৃত)। উভয়টি সেট থাকলে BIFROST_API_KEY অগ্রাধিকার পায়।
OMNIROUTE_RELAY_BACKEND ts / auto src/app/api/v1/relay/chat/completions/routingBackend.ts /api/v1/relay/chat/completions-এর Relay backend: ts | bifrost | autots = TypeScript relay (Bifrost configure না থাকলে ডিফল্ট); BIFROST_BASE_URL সেট এবং BIFROST_ENABLED0 হলে auto Bifrost বেছে নেয়, sidecar অপ্রাপ্য হলে স্বয়ংক্রিয় TS fallback সহ; bifrost Bifrost বাধ্যতামূলক করে (strict, কোনো fallback নয়)। Auth/rate-limit/injection-guard/allowlist সর্বদা প্রথমে Next route-এ চলে। Response-এ X-Routing-Backend / X-Routing-Fallback / X-Routing-Fallback-Reason থাকে।
RELAY_ROUTING_BACKEND (সেট করা নেই) src/app/api/v1/relay/chat/completions/routingBackend.ts OMNIROUTE_RELAY_BACKEND-এর গৃহীত alias (একই ts | bifrost | auto মান)। উভয়টি সেট থাকলে OMNIROUTE_RELAY_BACKEND অগ্রাধিকার পায়।
OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS 5000 src/app/api/v1/relay/chat/completions/bifrostCooldown.ts auto mode-এ Bifrost sidecar hop ব্যর্থ হওয়ার পর relay আবার sidecar চেষ্টা করার আগের cooldown (ms); cooldown চলাকালে এটি সরাসরি TS path-এ route করে, তারপর আবার probe করে। 0 এটি বন্ধ করে। শুধু OMNIROUTE_RELAY_BACKEND=auto হলে প্রযোজ্য।
OMNIROUTE_TLS_CERT (সেট করা নেই) bin/cli/commands/serve.mjs HTTPS-এ omniroute serve চালানোর PEM TLS certificate-এর পাথ (--tls-cert-এর সমতুল্য)। OMNIROUTE_TLS_KEY-এর সঙ্গে জোড়ায় দিতে হবে; এরপর standalone server একই listener-এ TLS terminate করে (wss:// অপরিবর্তিতভাবে কাজ করে)। সেট না থাকলে → plain HTTP। cert/key-এর শুধু একটি দেওয়া হলে বা পাথ পড়া না গেলে warning log হয় এবং HTTP-তেই থাকে।
OMNIROUTE_TLS_KEY (সেট করা নেই) bin/cli/commands/serve.mjs omniroute serve HTTPS-এর PEM TLS private key-এর পাথ (--tls-key-এর সমতুল্য)। OMNIROUTE_TLS_CERT-এর সঙ্গে জোড়ায় দিতে হবে। OMNIROUTE_TLS_CERT দেখুন।
OMNIROUTE_LOCAL_ENDPOINTS_ENABLED 0 src/lib/security/localEndpoints.ts /api/local/* route-এর master switch। সেট না থাকলে বা 0 হলে production-এ সব /api/local/* route 503 ফেরায়। Redis launcher এবং অনুরূপ 1-click local service starter সক্রিয় করতে non-loopback deployment-এ অবশ্যই 1 হতে হবে। isLocalOnlyPath() route-guard classification-এর সঙ্গে দ্বৈত সুরক্ষা (src/server/authz/routeGuard.ts-এ LOCAL_ONLY_API_PREFIXES)।
OMNIROUTE_LOCAL_ENDPOINTS_TOKEN (সেট করা নেই) src/lib/security/localEndpoints.ts loopback-এ নেই এমন /api/local/* caller-এর Bearer token (যেমন desktop app)। সেট করা থাকলে non-loopback IP-এর request-এ Authorization: Bearer <token> থাকতে হবে। non-loopback deployment-এ OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1 হলে আবশ্যক।
OMNIROUTE_REDIS_CONTAINER_NAME omniroute-redis bin/cli/commands/redis.mjs 1-click Redis launcher-এর container name (omniroute redis up)। CLI ও RedisLauncherPanel GUI উভয়েই ব্যবহার করে।
OMNIROUTE_REDIS_HOST_PORT 6379 bin/cli/commands/redis.mjs 1-click Redis launcher-এর host port। host-এ ইতিমধ্যে 6379 bind করা থাকলে বাড়ান। container-এর internal port 6379-ই থাকে।
OMNIROUTE_REDIS_BIND_HOST 127.0.0.1 bin/cli/commands/redis.mjs 1-click Redis launcher যে host interface-এ publish করে। launcher কোনো password ছাড়াই Redis চালায়, তাই 0.0.0.0-এ bind করলে LAN-এর প্রতিটি host unauthenticated Redis access পাবে—নিজে instance-এ password সেট করলেই কেবল এটি প্রসারিত করুন।
REDIS_BIND_HOST 127.0.0.1 docker-compose.yml docker-compose যে host interface-এ Redis sidecar publish করে (#9286)। compose Redis requirepass ছাড়াই চলে; app container compose network (redis:6379) দিয়ে এতে পৌঁছায়—published port শুধু host-side tooling-এর জন্য। 0.0.0.0 সম্পূর্ণ LAN-এ unauthenticated Redis উন্মুক্ত করে।
REDIS_PORT 6379 docker-compose.yml compose Redis sidecar-এর host port।
APP_BIND_HOST 127.0.0.1 docker-compose.yml, docker-compose.prod.yml docker-compose যে host interface-এ app-এর নিজস্ব dashboard/API/live-WS port publish করে (#12568)। .env.example-এর ডিফল্ট হিসেবে REQUIRE_API_KEY=false সরবরাহ হওয়ায়, 0.0.0.0 anonymous /v1 LLM proxy-কে সম্পূর্ণ LAN/WAN-এ উন্মুক্ত করে—REQUIRE_API_KEY=true করার পর বা সামনের reverse proxy নিজস্ব auth প্রয়োগ করলেই শুধু এটি প্রসারিত করুন।
QDRANT_BIND_HOST 127.0.0.1 docker-compose.yml docker-compose যে host interface-এ Qdrant memory sidecar publish করে (#12578)। LAN exposure-এর যুক্তি REDIS_BIND_HOST-এর মতোই।
BIFROST_BIND_HOST 127.0.0.1 docker-compose.yml docker-compose যে host interface-এ Bifrost router sidecar publish করে (#12578)। LAN exposure-এর যুক্তি REDIS_BIND_HOST-এর মতোই।
REDIS_KEY_PREFIX omniroute: src/shared/utils/rateLimiter.ts প্রতিটি OmniRoute Redis key-তে প্রয়োগ করা namespace prefix (rate limiter, auth cache, quota store, warmup circuit breaker)। Redis instance অন্য app-এর সঙ্গে share করা হলে key collision প্রতিরোধ করে (#11042)।
OMNIROUTE_INTERNAL_SERVICE_TOKEN (সেট করা নেই—mechanism নিষ্ক্রিয়) src/lib/api/internalServiceAuth.ts identity-preserving internal REST hop-এর shared secret (#9260): অন্য স্থানীয় OmniRoute route-এ কল করা OmniRoute component এটি x-omniroute-internal-service-token হিসেবে পাঠায়, যাতে মূল caller identity সংরক্ষিত থাকে। timingSafeEqual দিয়ে তুলনা করা হয়।
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE (সেট করা নেই) src/lib/api/internalServiceAuth.ts internal service token-এর secret-file variant: এমন file-এর পাথ, যার trimmed content হলো token। inline var সেট না থাকলেই শুধু এটি বিবেচনা করা হয়।
OPENROUTER_PROVIDER_STATS_ENABLED true src/lib/catalog/openrouterProviderStats.ts OpenRouter weekly ranking stats দিয়ে dashboard provider list সমৃদ্ধ করে (#9324)। ডিফল্টভাবে চালু; background fetch সম্পূর্ণ এড়াতে false সেট করুন (non-blocking, কখনো fatal নয়)।
OPENROUTER_PROVIDER_STATS_TTL_MS 86400000 (24h) src/lib/catalog/openrouterProviderStats.ts OpenRouter provider-stats snapshot-এর cache TTL, মিলিসেকেন্ডে।
OMNIROUTE_REDIS_IMAGE redis:7-alpine bin/cli/commands/redis.mjs 1-click Redis launcher-এ ব্যবহৃত Redis image। প্রয়োজনমতো redis:8-alpine বা private registry mirror দিয়ে ওভাররাইড করুন।
QDRANT_HOST qdrant (opt-in cluster profile) --profile memory সক্রিয় থাকলে Qdrant sidecar-এর hostname। ডিফল্টটি in-network qdrant service name নির্দেশ করে; external deployment-এর জন্য ওভাররাইড করুন। code-এ (src/lib/memory/vectorStore.ts:108) qdrantEnabled true হলেই শুধু ব্যবহৃত হয়।
QDRANT_PORT 6333 (opt-in cluster profile) Qdrant sidecar-এর REST port।
QDRANT_GRPC_PORT 6334 (opt-in cluster profile) Qdrant sidecar-এর gRPC port। streaming operation-এর জন্য REST-এর বদলে gRPC পছন্দ করা client library-তে ব্যবহৃত।
QDRANT_API_KEY (সেট করা নেই) (opt-in cluster profile) Qdrant Cloud বা authenticated on-prem instance-এর ঐচ্ছিক API key। খালি থাকলে → কোনো api-key header পাঠানো হয় না।
QDRANT_COLLECTION omniroute-memory (opt-in cluster profile) OmniRoute-এর conversation memory embedding-এর collection name। প্রথমবার চালানোর সময় QDRANT_VECTOR_SIZE dimension দিয়ে তৈরি হয়।
QDRANT_EMBEDDING_MODEL text-embedding-3-small (opt-in cluster profile) Qdrant collection metadata-তে রেকর্ড করা ডিফল্ট embedding model name। প্রকৃত embedding OmniRoute setting-এর embeddingModel field যে provider নির্দেশ করে, সেটিই তৈরি করে।
QDRANT_VECTOR_SIZE 1536 (opt-in cluster profile) Embedding vector dimension। embedding-এ ব্যবহৃত model-এর সঙ্গে অবশ্যই মিলতে হবে (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768)।
QDRANT_HNSW_EF_CONSTRUCT 128 (opt-in cluster profile) HNSW index তৈরির সময়কার accuracy। বেশি মান = ধীর build, দ্রুত search।
OMNIROUTE_ROTATION_ENABLED true open-sse/services/rotationConfig.ts operator-configurable account rotation-এর master switch। false হলে নিচের কোনো OMNIROUTE_ROTATE_* class account fallback trigger করে না (master-off state ডিফল্টভাবে সক্রিয় 429/500/502 class-ও block করে)। এর ফলে supervising front-end (যেমন VibeProxy desktop app) নিজস্ব rotation rule backend-এর account-fallback engine-এ mirror করতে পারে।
OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS 0 open-sse/services/rotationConfig.ts upstream কোনো explicit reset hint না দিলে rate-limited account-এ প্রয়োগ করা cooldown (সেকেন্ড)। 0 = fixed override-এর বদলে engine-এর ডিফল্ট cooldown ব্যবহার করুন।
OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET true open-sse/services/rotationConfig.ts front-end-এর "reset time ছাড়া rate-limited হিসেবে tag করবেন না" পছন্দের mirror।
OMNIROUTE_ROTATE_ON_429 true open-sse/services/rotationConfig.ts 429 error-এর জন্য per-status fallback enable। false হলে (এবং OMNIROUTE_ROTATION_ENABLED=true) 429 আর account rotation trigger করে না; পরিবর্তে client-কে ফেরত দেওয়া হয়।
OMNIROUTE_ROTATE_429_THRESHOLD 1 open-sse/services/rotationConfig.ts account rotate করার আগে OMNIROUTE_ROTATE_429_WINDOW_SECONDS-এর মধ্যে প্রয়োজনীয় 429 error-এর সংখ্যা। 1 (ডিফল্ট) সঙ্গে সঙ্গে rotate করে, ঐতিহাসিক behavior বজায় রাখে।
OMNIROUTE_ROTATE_429_WINDOW_SECONDS 120 open-sse/services/rotationConfig.ts OMNIROUTE_ROTATE_429_THRESHOLD-এর জন্য 429 error গণনার sliding window (সেকেন্ড)।
OMNIROUTE_ROTATE_ON_500 true open-sse/services/rotationConfig.ts 5xx server error-এর জন্য per-status fallback enable (502 বাদে, যার নিজস্ব class আছে)। false হলে এসব error আর account rotation trigger করে না।
OMNIROUTE_ROTATE_500_THRESHOLD 1 open-sse/services/rotationConfig.ts account rotate করার আগে OMNIROUTE_ROTATE_500_WINDOW_SECONDS-এর মধ্যে প্রয়োজনীয় 5xx error-এর সংখ্যা। 1 (ডিফল্ট) সঙ্গে সঙ্গে rotate করে।
OMNIROUTE_ROTATE_500_WINDOW_SECONDS 120 open-sse/services/rotationConfig.ts OMNIROUTE_ROTATE_500_THRESHOLD-এর জন্য 5xx error গণনার sliding window (সেকেন্ড)।
OMNIROUTE_ROTATE_ON_502 true open-sse/services/rotationConfig.ts 502 (bad gateway) error-এর জন্য per-status fallback enable। false হলে 502 আর account rotation trigger করে না।
OMNIROUTE_ROTATE_502_THRESHOLD 1 open-sse/services/rotationConfig.ts account rotate করার আগে OMNIROUTE_ROTATE_502_WINDOW_SECONDS-এর মধ্যে প্রয়োজনীয় 502 error-এর সংখ্যা। 1 (ডিফল্ট) সঙ্গে সঙ্গে rotate করে।
OMNIROUTE_ROTATE_502_WINDOW_SECONDS 120 open-sse/services/rotationConfig.ts OMNIROUTE_ROTATE_502_THRESHOLD-এর জন্য 502 error গণনার sliding window (সেকেন্ড)।
OMNIROUTE_ROTATE_ON_400 false open-sse/services/rotationConfig.ts Opt-in (ডিফল্টভাবে বন্ধ): true হলে সাধারণ 400 (bad request)-ও account rotation trigger করে। এটি শুধু additive—এই flag নির্বিশেষে rate-limit/quota text বহনকারী 400-এ engine-এর বিদ্যমান fallback behavior কখনো block করে না।
OMNIROUTE_ROTATE_400_THRESHOLD 1 open-sse/services/rotationConfig.ts account rotate করার আগে OMNIROUTE_ROTATE_400_WINDOW_SECONDS-এর মধ্যে প্রয়োজনীয় 400 error-এর সংখ্যা (শুধু OMNIROUTE_ROTATE_ON_400=true হলে বিবেচিত)।
OMNIROUTE_ROTATE_400_WINDOW_SECONDS 120 open-sse/services/rotationConfig.ts OMNIROUTE_ROTATE_400_THRESHOLD-এর জন্য 400 error গণনার sliding window (সেকেন্ড)।

Claude ওয়ার্মআপ শিডিউলার

অপ্ট-ইন করা Anthropic OAuth সংযোগগুলোর জন্য cron-চালিত ওয়ার্মআপ, যাতে ৫ ঘণ্টার রেট-লিমিট উইন্ডোটি প্রথম প্রকৃত অনুরোধের বদলে একটি সাধারণ নির্ধারিত অনুরোধের মাধ্যমে খোলা হয় (#8848)। OMNIROUTE_WARMUP_ENABLED truthy এবং সংযোগটি settings.claudeWarmup.connections-এ চিহ্নিত না থাকলে শিডিউলারটি বন্ধ থাকে; সংযোগের তালিকা খালি থাকলে env var চালু থাকলেও কোনো সংযোগ ওয়ার্মআপ করা হয় না।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_WARMUP_ENABLED (সেট না করা → বন্ধ) src/lib/warmupScheduler.ts ওয়ার্মআপ শিডিউলারের প্রধান সুইচ। 1/true/yes/on গ্রহণ করে (বড়-ছোট অক্ষর নির্বিশেষে, প্রান্তের ফাঁকা স্থান বাদ দিয়ে)। অন্য যেকোনো মান বা সেট না করা অবস্থায় শিডিউলার বন্ধ থাকে।
OMNIROUTE_WARMUP_CRON 0 7 * * * src/lib/warmupScheduler.ts ওয়ার্মআপ টিকের জন্য পাঁচ-ফিল্ডের cron এক্সপ্রেশন, যা হোস্টের ঘড়ি নির্বিশেষে America/Los_Angeles-এ (Anthropic-এর রিসেট টাইমজোন) মূল্যায়ন করা হয়।
OMNIROUTE_WARMUP_CONCURRENCY 3 src/lib/warmupScheduler.ts প্রতি টিকে সমান্তরালভাবে যতগুলো সংযোগ ওয়ার্মআপ করা হয়। মানটি 1-10-এর মধ্যে সীমাবদ্ধ রাখা হয়; অ-সাংখ্যিক মান হলে 3 ব্যবহার করা হয়।
OMNIROUTE_WARMUP_MODEL claude-3-5-haiku-20241022 src/lib/warmupScheduler.ts ওয়ার্মআপ অনুরোধের জন্য ব্যবহৃত মডেল। ডিফল্টটি আপনার প্ল্যানে অনুপলভ্য হলেই কেবল ওভাররাইড করুন; উইন্ডোটি খুলতে সক্ষম সবচেয়ে সাশ্রয়ী মডেলটি বেছে নিন।

ব্রাউজার-লগইন VNC সেশন ও ডেটা-ডিরেক্টরি অ্যালিয়াস

ইন্টার্যাক্টিভ ব্রাউজার-লগইন ক্রেডেনশিয়াল সংগ্রহের জন্য ব্যবহৃত কনটেইনারাইজড Chromium+VNC (/api/vnc-session), সঙ্গে একটি লিগ্যাসি DATA_DIR অ্যালিয়াস। সবই ঐচ্ছিক — VNC-এর ডিফল্টগুলো বান্ডেল করা omniroute-vnc-chromium:local ইমেজকে লক্ষ্য করে এবং কেবল কাস্টম কনটেইনার ইমেজ, পোর্ট বা লাইফসাইকেল টিউনিংয়ের জন্য ওভাররাইড করা হয়।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_VNC_IMAGE omniroute-vnc-chromium:local src/lib/vncSession/manifest.ts Chromium+VNC লগইন কনটেইনারের Docker ইমেজ ট্যাগ। docker/vnc-browser/chromium বিল্ড করুন অথবা এটিকে কোনো কাস্টম ইমেজের দিকে নির্দেশ করুন।
OMNIROUTE_DOCKER_BIN docker src/lib/vncSession/manifest.ts VNC কনটেইনার চালু করতে ব্যবহৃত কনটেইনার রানটাইম বাইনারি (যেমন, podman-এ সেট করুন)।
OMNIROUTE_VNC_CONTAINER_VNC_PORT 3000 src/lib/vncSession/manifest.ts কনটেইনারের ভেতরে উন্মুক্ত VNC/noVNC পোর্ট।
OMNIROUTE_VNC_CONTAINER_CDP_PORT 9223 src/lib/vncSession/manifest.ts কনটেইনারের ভেতরের Chrome DevTools Protocol পোর্ট।
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR /config src/lib/vncSession/manifest.ts কনটেইনারের ভেতরের Chromium প্রোফাইল ডিরেক্টরির পাথ।
OMNIROUTE_VNC_PROFILE_DIR $HOME/.omniroute/browser-login-profiles src/lib/vncSession/manifest.ts সংরক্ষিত ব্রাউজার-লগইন প্রোফাইল ধারণকারী হোস্ট ডিরেক্টরি।
OMNIROUTE_VNC_IDLE_MS 600000 (১০ মিনিট) src/lib/vncSession/manifest.ts নিষ্ক্রিয় VNC সেশন অপসারণের আগের নিষ্ক্রিয়তার সময়সীমা (মিলিসেকেন্ড)।
OMNIROUTE_VNC_MAX_MS 1800000 (৩০ মিনিট) src/lib/vncSession/manifest.ts একটি VNC সেশনের আয়ুষ্কালের সর্বোচ্চ কঠোর সীমা (মিলিসেকেন্ড)।
OMNIROUTE_VNC_MAX_SESSIONS 4 src/lib/vncSession/manifest.ts সমবর্তী VNC সেশনের সর্বোচ্চ সংখ্যা।
OMNIROUTE_VNC_READY_MS 45000 src/lib/vncSession/manifest.ts কনটেইনারাইজড ব্রাউজারটি CDP-প্রস্তুত হওয়ার অপেক্ষার সময়সীমা (মিলিসেকেন্ড)।
OMNIROUTE_VNC_HARVEST_MS 20000 src/lib/vncSession/manifest.ts লগইন সম্পন্ন হওয়ার পর সংগৃহীত সেশন/কুকি আহরণের সময়সীমা (মিলিসেকেন্ড)।
OMNIROUTE_VNC_CHROMIUM_ARGS --remote-debugging-port=9222 --no-first-run --no-default-browser-check src/lib/vncSession/manifest.ts কনটেইনারাইজড Chromium-এ পাঠানো অতিরিক্ত কমান্ড-লাইন ফ্ল্যাগ।
OMNIROUTE_VNC_NETWORK omniroute-vnc-browser-login src/lib/vncSession/manifest.ts ডিফল্ট ব্রিজের পরিবর্তে VNC লগইন কনটেইনারটি যে নিবেদিত Docker নেটওয়ার্কে যুক্ত হয় (#12571), যাতে সমপর্যায়ের কনটেইনারগুলো এর CDP ব্রিজ পোর্টে পৌঁছাতে না পারে।
VIBEPROXY_DATA_DIR (সেট না করা) open-sse/services/notionThreadSessions.ts DATA_DIR-এর জন্য লিগ্যাসি অ্যালিয়াস, যা কেবল DATA_DIR এবং OMNIROUTE_DATA_DIR—উভয়ই সেট না থাকলে পরীক্ষা করা হয়। Notion ওয়েব-থ্রেড সেশন ক্যাশের অবস্থান নির্ধারণ করে (<dir>/notion-web-thread-sessions.json)।

26. টেস্ট ও E2E হার্নেস

scripts/dev/run-next-playwright.mjs, scripts/dev/smoke-electron-packaged.mjs, scripts/dev/run-ecosystem-tests.mjs এবং scripts/build/uninstall.mjs দ্বারা ব্যবহৃত। প্রোডাকশন ডিপ্লয়মেন্টে নিচের প্রতিটি মান আনসেট রাখুন।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_E2E_BOOTSTRAP_MODE auth scripts/dev/run-next-playwright.mjs Playwright রানারের জন্য E2E bootstrap মোড (auth, fresh, reuse)।
OMNIROUTE_E2E_PASSWORD INITIAL_PASSWORD-এ fallback করে scripts/dev/run-next-playwright.mjs Playwright environment-এ inject করা admin password।
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK true scripts/dev/run-next-playwright.mjs Playwright চালানোর সময় local healthcheck poll নিষ্ক্রিয় করে।
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK true scripts/dev/run-next-playwright.mjs test চলাকালীন OAuth token healthcheck loop নিষ্ক্রিয় করে।
OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS (সেট করা নেই) src/lib/tokenHealthCheck.ts proactive token-refresh sweep থেকে বাদ দেওয়া comma-separated provider-গুলোর তালিকা (যেমন codex,openai)। healthcheck সম্পূর্ণ নিষ্ক্রিয় করার পরিবর্তে লক্ষ্যভিত্তিক বিকল্প—short-TTL provider-গুলো refresh হতে থাকে, আর cascade provider-গুলো কেবল reactive থাকে।
OMNIROUTE_HIDE_HEALTHCHECK_LOGS true scripts/dev/run-next-playwright.mjs Playwright stdout-এ healthcheck-এর অপ্রয়োজনীয় output নীরব করে।
OMNIROUTE_PLAYWRIGHT_SKIP_BUILD 0 scripts/dev/run-next-playwright.mjs Playwright শুরু হওয়ার আগে Next.js production build এড়িয়ে যায় (CI optimization)।
OMNIROUTE_SKIP_UNINSTALL_HOOK 0 scripts/build/uninstall.mjs OmniRoute uninstall hook এড়িয়ে যায় (node_modules অক্ষত রাখতে CI-তে ব্যবহৃত)।
ECOSYSTEM_SERVER_WAIT_MS 180000 scripts/dev/run-ecosystem-tests.mjs ecosystem/protocol test চালানোর আগে server সুস্থ হওয়ার জন্য অপেক্ষার সময় (ms)।
ELECTRON_SMOKE_URL http://127.0.0.1:20128/login scripts/dev/smoke-electron-packaged.mjs packaged app যে URL serve করবে বলে Electron smoke harness প্রত্যাশা করে।
ELECTRON_SMOKE_TIMEOUT_MS 45000 scripts/dev/smoke-electron-packaged.mjs smoke harness হাল ছেড়ে দেওয়ার আগের মোট timeout (ms)।
ELECTRON_SMOKE_SETTLE_MS 2000 scripts/dev/smoke-electron-packaged.mjs page load হওয়ার পর settle window (ms)।
ELECTRON_SMOKE_APP_EXECUTABLE (স্বয়ংক্রিয়) scripts/dev/smoke-electron-packaged.mjs packaged Electron executable-এর স্পষ্ট path।
ELECTRON_SMOKE_DATA_DIR (tmpdir) scripts/dev/smoke-electron-packaged.mjs Electron smoke run-এর data directory।
ELECTRON_SMOKE_KEEP_DATA 0 scripts/dev/smoke-electron-packaged.mjs run-এর পরে smoke data directory সংরক্ষণ করতে 1 সেট করুন।
ELECTRON_SMOKE_STREAM_LOGS 0 scripts/dev/smoke-electron-packaged.mjs run চলাকালীন Electron log stdout-এ stream করতে 1 সেট করুন।
ELECTRON_SMOKE_COLD_RESTART 0 scripts/dev/smoke-electron-packaged.mjs #7592: একই data dir ব্যবহার করে পুনরায় চালু করে এবং নিশ্চিত করে যে দ্বিতীয় launch-এ native SQLite driver নির্বাচন করা হয়েছে।
CLI_DEVIN_BIN (PATH lookup) open-sse/executors/devin-cli.ts Devin CLI binary path override করে।

ডকুমেন্টেশন অনুবাদ পাইপলাইন

scripts/i18n/run-translation.mjs দ্বারা ব্যবহৃত (npm run i18n:run কমান্ড)। পাঁচটি ভেরিয়েবলই ডিফল্টভাবে সেট করা থাকে না — কেবল সেইসব মেশিনের .env-এ এগুলো সেট করুন, যেগুলোতে ডকুমেন্টেশন অনুবাদক চালানোর অনুমতি থাকা উচিত।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_TRANSLATION_API_URL (সেট করা নেই) scripts/i18n/run-translation.mjs অনুবাদ ব্যাকএন্ডের জন্য OpenAI-সামঞ্জস্যপূর্ণ বেস URL।
OMNIROUTE_TRANSLATION_API_KEY (সেট করা নেই) scripts/i18n/run-translation.mjs অনুবাদ ব্যাকএন্ডের জন্য Bearer টোকেন (কখনো লগ করা হয় না)।
OMNIROUTE_TRANSLATION_MODEL (সেট করা নেই) scripts/i18n/run-translation.mjs মডেল আইডি, যেমন gpt-4o-mini বা cx/gpt-5.4-mini
OMNIROUTE_TRANSLATION_TIMEOUT_MS 60000 scripts/i18n/run-translation.mjs প্রতি অনুরোধের সময়সীমা, মিলিসেকেন্ডে।
OMNIROUTE_TRANSLATION_CONCURRENCY 4 scripts/i18n/run-translation.mjs একাধিক ফাইল / লোকেলের ক্ষেত্রে চালানোর সময় সমান্তরাল অনুবাদ অনুরোধের সংখ্যা।

27. Radar Feed (স্ব-হোস্টিং)

ঐচ্ছিক অ্যাড-অন, যা RADAR_ENABLED ফিচার ফ্ল্যাগ দ্বারা নিয়ন্ত্রিত (ডিফল্টভাবে বন্ধ — এটি Settings/DB-এর মাধ্যমে টগল করা একটি ফিচার ফ্ল্যাগ, কোনো env var নয়; দেখুন docs/frameworks/RADAR.md)। নিচের প্রথম চারটি ভেরিয়েবল স্ব-হোস্ট করা বা ফর্ক করা ফিড এবং supporter-key প্রবাহের জন্য ঐচ্ছিক ওভাররাইড। পঞ্চমটি, RADAR_ADMIN_URL, মালিকের ব্যক্তিগত অপারেশন প্যানেলের জন্য পৃথক, ডিফল্টবিহীন একটি লিংক। সম্পূর্ণ মডিউল ডকুমেন্টেশন এবং এর শুরু থেকে শেষ পর্যন্ত সক্রিয়করণ ও নির্দেশিত সেটআপের ধাপসমূহ দেখতে docs/frameworks/RADAR.md দেখুন।

সাধারণ Home/Changelog ঘোষণা রিডার কোনো environment variable দ্বারা কনফিগার করা হয় না এবং RADAR_ENABLED ফিচার ফ্ল্যাগের ওপর নির্ভর করে না। এটি কেবল GET-এর মাধ্যমে src/shared/utils/releaseNotes.ts-এ ঘোষিত পাবলিক রিপোজিটরির news.json URL পড়ে; বাতিল করার ID-গুলো ব্রাউজারের লোকাল স্টোরেজে থেকে যায়।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
RADAR_FEED_URL https://radar.omniroute.online src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts পৃথকভাবে স্বাক্ষরিত catalog, referrals, supporter-offers এবং Intel ফিডগুলোর অভিন্ন বেস URL। স্ব-হোস্ট করা বা ফর্ক করা কোনো সার্ভিস নির্দেশ করতে এটি ওভাররাইড করুন।
RADAR_FEED_PUBKEY (পিন করা ডিফল্ট কী) src/lib/radar/pinnedKeys.ts কাস্টম ফিড থেকে আসা ফিড স্বাক্ষর যাচাই করতে ব্যবহৃত Ed25519 পাবলিক কী (base64-DER SPKI বা PEM)।
RADAR_CONTRIBUTOR_CLAIM_URL https://radar.omniroute.online/auth/github src/lib/radar/links.ts ড্যাশবোর্ডের "আমি একজন অবদানকারী" বোতামটি যে URL খোলে (GitHub OAuth supporter-key দাবি করার প্রবাহ)।
RADAR_SUPPORTER_PLANS_URL https://radar.omniroute.online/planos src/lib/radar/links.ts ড্যাশবোর্ডের "প্রকল্পটিকে সহায়তা করুন" বোতামটি যে URL খোলে (পেমেন্ট/প্ল্যান পৃষ্ঠা)।
RADAR_ADMIN_URL (সেট করা নেই) src/lib/radar/links.ts কেবল মালিকের জন্য ব্যক্তিগত অপারেশন-প্যানেলের লিংক। HTTP লুপব্যাক SSH ফরওয়ার্ড ছাড়া HTTPS আবশ্যক; সেট না করা বা অবৈধ মান কোনো নেভিগেশন আইটেম তৈরি করে না।

অডিট: অপসারিত / অব্যবহৃত ভেরিয়েবল

নিচের ভেরিয়েবলগুলো .env.example-এর পূর্ববর্তী সংস্করণগুলোতে ছিল, কিন্তু বর্তমান কোডবেসে এগুলোর কোনো রানটাইম রেফারেন্স নেই। এগুলো অপসারণ করা হয়েছে:

ভেরিয়েবল কারণ
STORAGE_DRIVER=sqlite কোনো সোর্স ফাইলেই এটি পড়া হয় না। SQLite-ই একমাত্র সমর্থিত ড্রাইভার — নির্বাচন করার প্রয়োজন নেই।
INSTANCE_NAME=omniroute পুরোনো ডকুমেন্টেশন/env টেমপ্লেটে উপস্থিত থাকলেও রানটাইমে অব্যবহৃত। ভবিষ্যতের কোনো মাল্টি-ইনস্ট্যান্স ফিচারে ফিরে আসতে পারে।
SQLITE_MAX_SIZE_MB=2048 সোর্স কোডে রেফারেন্স করা হয়নি। ডেটাবেসের আকার কৃত্রিমভাবে সীমিত করা হয় না।
SQLITE_CLEAN_LEGACY_FILES=true সোর্স কোডে রেফারেন্স করা হয়নি। সম্ভবত লিগ্যাসি ক্লিনআপ সরিয়ে ফেলা হয়েছে।
CLI_ROO_BIN src/shared/services/cliRuntime.ts-এ নিবন্ধিত নয়।
CLI_KIMI_CODING_BIN src/shared/services/cliRuntime.ts-এ নিবন্ধিত নয় (Kimi Coding একটি CLI বাইনারি নয়, OAuth ব্যবহার করে)।
IFLOW_OAUTH_CLIENT_ID / IFLOW_OAUTH_CLIENT_SECRET সোর্স কোডের কোথাও রেফারেন্স করা হয়নি।
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-এ সরিয়ে ফেলা হয়েছে। রানটাইম আর এই env ভেরিয়েবলগুলো পড়ে না — ক্রেডেনশিয়াল Dashboard / data/provider-credentials.json / এনক্রিপ্টেড DB থেকে আসে।
CURSOR_PROTOBUF_DEBUG v3.8.0-এ সরিয়ে ফেলা হয়েছে। Cursor এক্সিকিউটর CURSOR_DEBUG / CURSOR_STREAM_DEBUG ব্যবহার করে (§22 দেখুন)।
CLI_COMPAT_KIRO v3.8.0-এ সরিয়ে ফেলা হয়েছে। Kiro CLI_COMPAT_OMITTED_PROVIDER_IDS-এ রয়েছে — এর টগলের কোনো প্রভাব নেই।
QIANFAN_API_KEY v3.8.0-এ অন্যান্য অব্যবহৃত প্রোভাইডার API কী স্টাবের সঙ্গে সরিয়ে ফেলা হয়েছে।

ডিফল্ট মানের সংশোধন

ভেরিয়েবল পুরোনো .env.example মান কোডের প্রকৃত ডিফল্ট সংশোধন
APP_LOG_RETENTION_DAYS 90 7 বিভ্রান্তিকর মান সরানো হয়েছে; 7-কে ডিফল্ট হিসেবে নথিভুক্ত করা হয়েছে
CALL_LOG_RETENTION_DAYS 90 7 বিভ্রান্তিকর মান সরানো হয়েছে; 7-কে ডিফল্ট হিসেবে নথিভুক্ত করা হয়েছে

OpenCode কনফিগ পুনর্জেনারেশন (অ্যাড-হক টুলিং)

চলমান OmniRoute ইনস্ট্যান্স থেকে নির্ভুল limit.context এবং limit.output মান নিয়ে একটি opencode.json পুনর্জেনারেট করতে scripts/ad-hoc/regen-opencode-config.ts এটি ব্যবহার করে। স্বাভাবিক কার্যক্রমের জন্য এগুলোর কোনোটিই প্রয়োজনীয় নয় — স্ক্রিপ্টটি শুধু ডেভেলপার টুলিং।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_URL http://localhost:20128 scripts/ad-hoc/regen-opencode-config.ts /v1/models কোয়েরি করার জন্য OmniRoute ইনস্ট্যান্সের বেস URL।
OMNIROUTE_KEY (সেট করা নেই) scripts/ad-hoc/regen-opencode-config.ts OmniRoute /v1/models এন্ডপয়েন্টে প্রমাণীকরণের জন্য API কী। সেট করা না থাকলে OPENCODE_API_KEY ব্যবহার করে।
OPENCODE_API_KEY (সেট করা নেই) scripts/ad-hoc/regen-opencode-config.ts পুনরায় তৈরি করা opencode.json-এ লেখা OpenCode-ধাঁচের API কী (sk-...)। সেট করা না থাকলে OMNIROUTE_KEY ব্যবহার করে।

কম্প্রেশন অফলাইন-ইভ্যাল হারনেস (অ্যাড-হক টুলিং)

অফলাইন কম্প্রেশন মূল্যায়ন CLI দ্বারা scripts/compression-eval/index.ts ব্যবহৃত হয়। স্বাভাবিক পরিচালনার জন্য প্রয়োজনীয় নয় — শুধুমাত্র ডেভেলপার টুলিং।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_EVAL_CREDENTIALS {} (খালি) scripts/compression-eval/index.ts অফলাইন compression-eval CLI দ্বারা ব্যবহৃত প্রোভাইডারের জন্য অপারেটর-সরবরাহকৃত JSON ক্রেডেনশিয়াল (JSON.parse দিয়ে পার্স করা হয়)। ড্রাই রানের জন্য সেট না করে রাখুন।

VNC ব্রাউজার সেশন

ব্রাউজার-অটোমেশন প্রোভাইডারগুলোর জন্য Docker-ভিত্তিক হেডলেস Chromium সেশন কনফিগার করতে src/lib/vncSession/manifest.ts দ্বারা ব্যবহৃত হয়। সবগুলোই ঐচ্ছিক — ডিফল্টগুলো নিচে দেখানো হয়েছে।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_DOCKER_BIN docker src/lib/vncSession/manifest.ts VNC কনটেইনার চালু করতে ব্যবহৃত Docker বাইনারির পাথ।
OMNIROUTE_VNC_IMAGE omniroute-vnc-chromium:local src/lib/vncSession/manifest.ts VNC Chromium কনটেইনারের Docker ইমেজ।
OMNIROUTE_VNC_CHROMIUM_ARGS (বিল্ট-ইন ফ্ল্যাগ) src/lib/vncSession/manifest.ts কনটেইনারের ভেতরে ব্রাউজারে পাঠানো অতিরিক্ত Chromium CLI আর্গুমেন্ট।
OMNIROUTE_VNC_CONTAINER_VNC_PORT 3000 src/lib/vncSession/manifest.ts কনটেইনারের ভেতরের VNC পোর্ট।
OMNIROUTE_VNC_CONTAINER_CDP_PORT 9223 src/lib/vncSession/manifest.ts কনটেইনারের ভেতরের Chrome DevTools Protocol পোর্ট।
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR /config src/lib/vncSession/manifest.ts কনটেইনারের ভেতরের প্রোফাইল ডিরেক্টরি।
OMNIROUTE_VNC_PROFILE_DIR (সেট করা নেই) src/lib/vncSession/manifest.ts স্থায়ী ব্রাউজার প্রোফাইলের জন্য হোস্ট-সাইড ডিরেক্টরি।
OMNIROUTE_VNC_IDLE_MS 600000 src/lib/vncSession/manifest.ts একটি VNC সেশন সংগ্রহ করার আগে নিষ্ক্রিয়তার টাইমআউট (ms)।
OMNIROUTE_VNC_MAX_MS 1800000 src/lib/vncSession/manifest.ts সেশনের সর্বোচ্চ সময়কাল (ms)।
OMNIROUTE_VNC_MAX_SESSIONS 4 src/lib/vncSession/manifest.ts একযোগে চলমান VNC সেশনের সর্বোচ্চ সংখ্যা।
OMNIROUTE_VNC_READY_MS 45000 src/lib/vncSession/manifest.ts ব্রাউজার প্রস্তুতির টাইমআউট (ms)।
OMNIROUTE_VNC_HARVEST_MS 20000 src/lib/vncSession/manifest.ts সংগ্রহ/ক্লিনআপের টাইমআউট (ms)।
OMNIROUTE_VNC_NETWORK omniroute-vnc-browser-login src/lib/vncSession/manifest.ts কনটেইনারটি যে নিবেদিত Docker নেটওয়ার্কে যুক্ত হয় (#12571), যা ডিফল্ট ব্রিজের বাইরে।
VIBEPROXY_DATA_DIR (সেট করা নেই) open-sse/services/notionThreadSessions.ts Notion থ্রেড সেশন স্থায়ীকরণের জন্য ডিরেক্টরি।

অভ্যন্তরীণ সার্ভিস প্রমাণীকরণ

ভেরিয়েবল ডিফল্ট বিবরণ
OMNIROUTE_INTERNAL_SERVICE_TOKEN ম্যানেজমেন্ট-প্লেনের সার্ভিস-টু-সার্ভিস প্রমাণীকরণের জন্য ইনলাইন টোকেন।
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE অভ্যন্তরীণ সার্ভিস টোকেন-সংবলিত ফাইলের পাথ (কনটেইনারে অগ্রাধিকারযোগ্য; ইনলাইন ভেরিয়েবলকে ওভাররাইড করে)।

OpenRouter প্রোভাইডার পরিসংখ্যান

ভেরিয়েবল ডিফল্ট বিবরণ
OPENROUTER_PROVIDER_STATS_ENABLED true ক্যাটালগ সমৃদ্ধকরণের জন্য OpenRouter-এর প্রতি-প্রোভাইডার পরিসংখ্যান আনা এড়াতে false সেট করুন।
OPENROUTER_PROVIDER_STATS_TTL_MS 3600000 আনা OpenRouter প্রোভাইডার পরিসংখ্যানের ক্যাশ TTL (ms)।

এমবেডেড Redis বাইন্ডিং

ভেরিয়েবল ডিফল্ট বিবরণ
REDIS_BIND_HOST 127.0.0.1 এম্বেডেড Redis পরিষেবার বাইন্ড ঠিকানা।
REDIS_PORT 6379 এম্বেডেড Redis পরিষেবার পোর্ট।
OMNIROUTE_REDIS_BIND_HOST এম্বেডেড Redis বাইন্ড ঠিকানার জন্য OmniRoute-স্কোপড ওভাররাইড।

24. রিলিজ v3.8.50-এর সংযোজনসমূহ

পূর্ববর্তী এনভায়রনমেন্ট-কন্ট্রাক্ট স্ন্যাপশটের পরে এই সেটিংসগুলো চালু করা হয়েছে।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_CHAT_ADMISSION_QUEUE_MS 2000 src/shared/middleware/chatBodyAdmission.ts পুনরায় চেষ্টা করা যায় এমন 503 ফেরত দেওয়ার আগে একটি হেভিওয়েট চ্যাট অ্যাডমিশন স্লটের জন্য অপেক্ষার সর্বোচ্চ সময়; তাৎক্ষণিক 503 দেওয়ার পরিবর্তে স্বল্প ও সীমাবদ্ধ অপেক্ষা এজেন্টের আকস্মিক অনুরোধগুলোকে ধারাবাহিকভাবে প্রক্রিয়া করে। 0 তাৎক্ষণিক প্রত্যাখ্যান পুনরুদ্ধার করে।
OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES 4194304 (4 MB) src/shared/middleware/chatBodyAdmission.ts অ্যাডমিশন অপেক্ষার জন্য সারিবদ্ধ-বাইট বাজেট: পুরো প্রসেসজুড়ে অপেক্ষমাণ মোট বাফার করা বডি বাইট সীমাবদ্ধ করে, যাতে অপেক্ষা হিপের ব্যবহার বাড়িয়ে না দেয় (#4380)। বাজেট অতিক্রম করা অপেক্ষাগুলো অবিলম্বে পুনরায় চেষ্টা করা যায় এমন 503 পায়।
OMNIROUTE_CHAT_VIRTUAL_TTL_MS 60000 (60 s) src/shared/middleware/chatBodyAdmission.ts #10110 থেকে অবচিত নো-অপ: একটি প্রসেস-ব্যাপী বাজেটের পক্ষে প্রতি-সেশন অ্যাডমিশন লেন সরিয়ে দেওয়া হয়েছে। কনফিগারেশন সামঞ্জস্যের জন্য গৃহীত হয়; উপেক্ষা করা হয়।
OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS 64 src/shared/middleware/chatBodyAdmission.ts #10110 থেকে অবচিত নো-অপ: একটি প্রসেস-ব্যাপী বাজেটের পক্ষে প্রতি-সেশন অ্যাডমিশন লেন সরিয়ে দেওয়া হয়েছে। কনফিগারেশন সামঞ্জস্যের জন্য গৃহীত হয়; উপেক্ষা করা হয়।
OMNIROUTE_CHAT_VIRTUAL_LANES 0 (বন্ধ) open-sse/services/admission/runtime.ts অভিযোজিত রানটাইম ভার্চুয়াল অ্যাডমিশন লেন (#9654): প্রতি-টেন্যান্ট অভিযোজিত গেটের (সিস্টেম 2) প্রধান সুইচ। উপরের অবচিত প্রতি-কানেকশন লেন ভেরিয়েবলগুলো থেকে আলাদা (TTL_MS / MAX_SESSIONS, #10110 থেকে নো-অপ)। একই নামের ড্যাশবোর্ড ফিচার ফ্ল্যাগ; এনভায়রনমেন্ট ভেরিয়েবলটি ড্যাশবোর্ড ওভাররাইডের ওপর অগ্রাধিকার পায়; পুনরায় চালু করা আবশ্যক।
OMNIROUTE_RUNNOW_TIMEOUT_MS 30000 src/app/api/jobs/[id]/run-now/route.ts সারিবদ্ধ রান শুরু করার আগে চলমান কোনো জবের জন্য একটি run-now কল কতক্ষণ অপেক্ষা করবে, তা সীমাবদ্ধ করে।
ADOBE_FIREFLY_BROWSER_REFRESH সক্রিয় open-sse/services/adobeFireflySession.ts অ্যাকাউন্ট-স্কোপড Chrome CDP সেশনের মাধ্যমে IMS এবং ব্রাউজার-ঝুঁকি অবস্থা হালনাগাদ রাখে; নিষ্ক্রিয় করতে 0 সেট করুন।
ADOBE_FIREFLY_SESSION_DISK সক্রিয় open-sse/services/adobeFireflySession.ts মেরামত করা Adobe সেশনগুলো DATA_DIR-এর অধীনে সংরক্ষণ করে; শুধু মেমরিতে অবস্থা রাখতে 0 সেট করুন।
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS 12000 open-sse/services/adobeFireflySession.ts Adobe Firefly জেনারেট সাবমিশনগুলোর মধ্যবর্তী ন্যূনতম বিরতি।
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS 15000 open-sse/services/adobeFireflySession.ts প্রতি তৃতীয় সফল Adobe সাবমিশনের পর অতিরিক্ত নিষ্ক্রিয় সময়কাল।
ADOBE_FIREFLY_CHROME_HEADLESS 0 open-sse/services/adobeFireflyBrowserLogin.ts শুধু ডিবাগের জন্য প্রকৃত হেডলেস মোড; Adobe colligo সাধারণত এর ফলে তৈরি হওয়া ঝুঁকিপূর্ণ সেশন প্রত্যাখ্যান করে।
CHROME_PATH স্বয়ংক্রিয় শনাক্তকরণ open-sse/executors/cloudflare-playground.ts, open-sse/executors/chatgpt-web-codex.ts প্ল্যাটফর্মের স্বয়ংক্রিয় শনাক্তকরণ যথেষ্ট না হলে ব্রাউজার-চালিত এক্সিকিউটরগুলো যে ঐচ্ছিক পরম Chrome এক্সিকিউটেবল পাথ ব্যবহার করবে।
TELEGRAM_BOT_TOKEN (সেট করা নেই) src/lib/telegram/config.ts BotFather টোকেন, যা ইনবাউন্ড ওয়েবহুক সক্রিয় করে এবং Mini App initData স্বাক্ষর করে।
TELEGRAM_WEBHOOK_SECRET (সেট করা নেই) src/lib/telegram/config.ts setWebhook-এর মাধ্যমে নিবন্ধিত শেয়ার্ড সিক্রেট, যা প্রতিটি ওয়েবহুক ডেলিভারিতে X-Telegram-Bot-Api-Secret-Token হেডারের বিপরীতে যাচাই করা হয়। ওয়েবহুক পাথের জন্য আবশ্যক; সেট করা না থাকলে ওয়েবহুক ডেলিভারি 503 সহ প্রত্যাখ্যান করা হয়।
TELEGRAM_DEFAULT_MODEL auto/chat src/lib/telegram/chatProxy.ts Telegram চ্যাটের উত্তরগুলোর জন্য ব্যবহৃত মডেল।
TELEGRAM_BOT_API_BASE https://api.telegram.org src/lib/telegram/config.ts প্রক্সি বা স্ব-হোস্টেড Bot API সার্ভারের জন্য Bot API বেস URL ওভাররাইড।
TELEGRAM_WEBHOOK_TIMEOUT_MS 60000 src/lib/telegram/config.ts আউটবাউন্ড Bot API কলের টাইমআউট, মিলিসেকেন্ডে।
OMNIROUTE_OPTIONAL_PACK_TAR 1 (সক্রিয়) scripts/build/optionalPackStaging.mjs Electron স্বতন্ত্র ট্রির জন্য ঐচ্ছিক ML/ব্রাউজার প্যাক স্টেজ করার সময় .tar.gz টারবল তৈরি করা এড়াতে 0 সেট করুন (প্যাক ডিরেক্টরি এবং optional-packs.index.json তবুও তৈরি করা হয়)। আর্টিফ্যাক্ট আপলোডের আকার কমাতে ডেস্কটপ রিলিজ ওয়ার্কফ্লো এটি ব্যবহার করে।

ChatGPT Web (Codex)

হেডলেস ব্রাউজার এবং আউটবাউন্ড টুল টানেলের জন্য গ্লোবাল ডিফল্ট। ড্যাশবোর্ডে সেট করা কানেকশন মানগুলো অগ্রাধিকার পায়।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
CHATGPT_WEB_CODEX_CHROME_PATH (স্বয়ংক্রিয়ভাবে শনাক্ত) open-sse/executors/chatgpt-web-codex.ts npm, systemd এবং PM2 পরিচালনার জন্য নির্দিষ্ট Chrome/Chromium পাথ।
CHROME_PATH (স্বয়ংক্রিয়ভাবে শনাক্ত) open-sse/executors/chatgpt-web-codex.ts নির্দিষ্ট Chrome/Chromium পাথের জন্য সাধারণ ফলব্যাক।
CHATGPT_WEB_CODEX_CDP_URL (সেট করা নেই) open-sse/executors/chatgpt-web-codex.ts অভ্যন্তরীণ CDP এন্ডপয়েন্ট; Docker পোর্ট 9223-এর সাইডকার ব্যবহার করে।
CDP_PROXY_TOKEN (সেট করা নেই) docker/chatgpt-web-codex-browser/cdp-proxy.mjs সেট করা থাকলে, CDP প্রক্সি সাইডকারে পাঠানো প্রতিটি অনুরোধের X-Omni-Cdp-Token হেডারে এই মানটি অন্তর্ভুক্ত করতে হবে (#13679)। কোনো মান না থাকলে প্রক্সি প্রমাণীকরণ ছাড়াই অনুরোধ ফরওয়ার্ড করে—সেক্ষেত্রে কেবল Compose নেটওয়ার্ক chatgpt-web-codex-net-এর নেটওয়ার্ক বিচ্ছিন্নতাই সুরক্ষা দেয়। openssl rand -hex 32 দিয়ে তৈরি করুন।
CHATGPT_WEB_CODEX_TUNNEL_ID (সেট করা নেই) open-sse/executors/chatgpt-web-codex.ts স্থানীয় Codex টুল রাউন্ডের জন্য গ্লোবাল OpenAI টানেল আইডি।
CHATGPT_WEB_CODEX_RUNTIME_KEY (সেট করা নেই) open-sse/executors/chatgpt-web-codex.ts গ্লোবাল টানেল রানটাইম কী; কখনোই লগে আউটপুট করবেন না।
CHATGPT_WEB_CODEX_CONNECTOR_NAME OmniRoute Codex v2 open-sse/executors/chatgpt-web-codex.ts MCP ব্রিজের জন্য সদ্য তৈরি ChatGPT কাস্টম কানেক্টরের সঠিক নাম।
CODEX_CHATGPT_WEB_HOME <DATA_DIR>/chatgpt-web-codex open-sse/vendor/codex-chatgpt-web/config.ts ব্রাউজার, ব্রোকার এবং টানেলের অবস্থার জন্য নিবেদিত ডিরেক্টরি।
CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS 0 open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts 1 হলে প্রতিটি চেকপয়েন্টে ব্রাউজার ডায়াগনস্টিক চিত্র ধারণ করা হয়।
CODEX_CHATGPT_WEB_LAUNCHER (সেট করা নেই) open-sse/vendor/codex-chatgpt-web/config.ts একটি স্থায়ী লঞ্চার বাইনারির ঐচ্ছিক পরম পাথ।
CODEX_CHATGPT_WEB_BUN (স্বয়ংক্রিয়ভাবে শনাক্ত) open-sse/vendor/codex-chatgpt-web/config.ts Bun রানটাইম বাইনারির ঐচ্ছিক পরম পাথ।
CODEX_WEB_GPT_BUN (সেট করা নেই) open-sse/vendor/codex-chatgpt-web/config.ts CODEX_CHATGPT_WEB_BUN-এর জন্য লিগ্যাসি ফলব্যাক; নতুন সেটআপগুলো ক্যানোনিক্যাল নামটি ব্যবহার করে।

OmniConductor ব্রিজ

দীর্ঘস্থায়ী SSE কনজিউমার, যা OmniConductor হাবের টাস্কগুলোকে লোকাল A2A TaskManager-এ (src/lib/conductor/) প্রতিফলিত করে। অপ্ট-ইন — CONDUCTOR_HUB_URL সেট করা থাকলেই কেবল ব্রিজটি চালু হয়। শুধুমাত্র সার্ভার-সাইড: হাব টোকেন কখনোই ব্রাউজারে পৌঁছানো যাবে না।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
CONDUCTOR_HUB_URL (খালি) src/lib/conductor/boot.ts OmniConductor হাবের বেস URL (যেমন http://127.0.0.1:7910)। সেট না করা = ব্রিজ নিষ্ক্রিয়।
CONDUCTOR_HUB_TOKEN (খালি) src/lib/conductor/boot.ts SSE ফিডের জন্য হাব ক্রেডেনশিয়াল — হাবে একটি spokesperson-ধরনের পিয়ার তৈরি করুন (POST /v1/peers, অ্যাডমিন)।
CONDUCTOR_ORCHESTRATOR_TOKEN (খালি) src/lib/conductor/hubProxy.ts ইনবাউন্ড A2A→হাব টাস্ক ডেলিগেশনের জন্য ক্রেডেনশিয়াল (POST /v1/tasks); সেট না থাকলে CONDUCTOR_HUB_TOKEN ব্যবহার করে।
CONDUCTOR_SPOKESPERSON_URL http://127.0.0.1:7920 src/lib/conductor/faroProxy.ts ড্যাশবোর্ড চ্যাট প্রক্সির (/api/conductor/ask) পেছনে থাকা spokesperson (Faro) সার্ভিসের বেস URL।

কোটা-সচেতন শিডিউলিং

রিকোয়েস্ট-পূর্ব টোকেন-বাজেট যাচাইয়ের জন্য open-sse/services/combo.ts এবং src/lib/quota/quotaScheduler.ts এটি ব্যবহার করে। অপ্ট-ইন — সেট না থাকলে ডিফল্ট রাউটিং আচরণ অপরিবর্তিত থাকে।

ভেরিয়েবল ডিফল্ট সোর্স ফাইল বিবরণ
OMNIROUTE_QUOTA_AWARE_ROUTING 0 open-sse/services/combo.ts 1 হলে, ডিসপ্যাচের আগে যেসব সংযোগের প্রতি-উইন্ডো টোকেন বাজেট (rateLimitOverrides.tpm, টেবিল provider_quota_state) আনুমানিক রিকোয়েস্ট খরচ বহন করতে পারে না, সেগুলো এড়িয়ে যায়। কোনো বাজেট কনফিগার করা না থাকলে fail-open হয়।