Environment Variables Reference (Русский)
Содержание
Заголовок раздела «Содержание»- 1. Обязательные секреты
- 2. Хранилище и база данных
- 3. Сеть и порты
- 4. Безопасность и аутентификация
- 5. Санитизация входных данных и защита PII
- 6. Политики инструментов и маршрутизации
- 7. URL-адреса и облачная синхронизация
- 8. Исходящий прокси
- 9. Интеграция с инструментами CLI
- 10. Интеграции внутренних агентов и MCP
- 11. Учётные данные провайдеров OAuth
- 12. Переопределение User-Agent для провайдеров
- 13. Совместимость отпечатков CLI
- 14. Провайдеры API-ключей
- 15. Настройки тайм-аутов
- 16. Журналирование
- 17. Оптимизация памяти
- 18. Синхронизация цен
- 19. Синхронизация моделей (разработка)
- 20. Настройки отдельных провайдеров
- 21. Состояние прокси
- 22. Отладка
- 23. Интеграция с GitHub
- 24. Песочница навыков (v3.8.0+)
- 27. Лента Radar (самостоятельное размещение)
- Сценарии развёртывания
- Аудит: удалённые / неиспользуемые переменные
1. Обязательные секреты
Заголовок раздела «1. Обязательные секреты»Их необходимо задать перед первым запуском. Без них приложение либо откажется запускаться, либо будет работать с небезопасными значениями по умолчанию.
| Переменная | Обязательность | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|---|
JWT_SECRET |
Да | (нет) | src/lib/auth |
Подписывает/проверяет все файлы cookie сеансов панели управления (JWT). Создайте с помощью openssl rand -base64 48. |
API_KEY_SECRET |
Да | (нет) | src/lib/db/apiKeys.ts |
Ключ шифрования AES для хранящихся в SQLite значений ключей API. Создайте с помощью openssl rand -hex 32. |
INITIAL_PASSWORD |
Да | CHANGEME |
Скрипт начальной настройки | Задаёт начальный пароль администратора панели управления (совпадает со значением по умолчанию в .env.example — он намеренно оставлен явно небезопасным, чтобы его обязательно изменили). Измените перед первым использованием. После входа измените его через «Панель управления → Настройки → Безопасность». |
OMNIROUTE_WS_BRIDGE_SECRET |
Да (в продакшене) | (не задано) | src/app/api/internal/codex-responses-ws/route.ts |
Общий секрет внутреннего WebSocket-моста Codex Responses. Аутентифицирует запросы моста между WS-ретранслятором Electron/браузера и OmniRoute. ⚠️ ОБЯЗАТЕЛЕН в продакшене — если он не задан, все запросы к WS-мосту отклоняются. Создайте с помощью openssl rand -base64 32. |
OMNIROUTE_SW_BUILD_ID |
Нет | (git SHA) | next.config.mjs, scripts/build/assembleStandalone.mjs |
Явный идентификатор сборки для сброса кеша service worker оболочки 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-адреса узла поступила от собственного HTTP-сервера OmniRoute (scripts/dev/peer-stamp.mjs). Промежуточное ПО авторизации доверяет локальности запроса (ограничению маршрутов LOCAL_ONLY адресами loopback/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. Хранилище и база данных
Заголовок раздела «2. Хранилище и база данных»OmniRoute использует SQLite (через better-sqlite3) для постоянного хранения всех данных. Эти переменные управляют расположением данных, шифрованием и жизненным циклом.
| Переменная | По умолчанию | Исходный файл | Описание |
|---|---|---|---|
DATA_DIR |
~/.omniroute/ |
src/lib/db/core.ts |
Корневой каталог для базы данных SQLite, резервных копий и файлов данных. Переопределите его для томов Docker или пользовательских путей. |
OMNIROUTE_ALLOW_DEFAULT_DATA_DIR |
(не задано) | src/lib/dataPaths.ts |
Аварийный обход защиты DATA_DIR для тестов и eval (#10428). Тесты и eval/print-вызовы Node (-e/--eval/-p/--print, включая формы --eval=/--print=) без DATA_DIR перенаправляются во временный одноразовый каталог, чтобы они не могли открыть настоящую базу данных оператора; задайте значение 1, чтобы снова использовать настоящий каталог. |
OMNIROUTE_BUILD_SHA |
(не задано) | src/lib/monitoring/buildSha.ts |
Git SHA запущенного артефакта. Записывается командой npm run build:release; может внедряться в контейнеры, поставляемые без файла-маркера dist/BUILD_SHA. Отображается как system.buildSha в /api/monitoring/health. |
OMNIROUTE_RELEASE_REF |
origin/main |
scripts/build/buildProvenance.ts |
Ссылка, по которой проверка происхождения упаковываемого артефакта сверяет SHA сборки (#10427). |
OMNIROUTE_ALLOW_CANARY_BUILD |
(не задано) | scripts/build/buildProvenance.ts |
Задайте значение 1, чтобы разрешить упаковку сборки, SHA которой не относится к релизной ветке, зарегистрировав её как намеренную канареечную сборку вместо завершения проверки с ошибкой (#10427). |
OMNIROUTE_SMOKE_API_KEY |
(не задано) | scripts/ops/deploy-canary.mjs |
API-ключ для smoke-проверки канареечного развёртывания, отправляемый как Authorization: Bearer в /v1/chat/completions. Используется только скриптом развёртывания (#10429), но не сервером. Не связан с переменными OMNIROUTE_SMOKE_* опционального CLI-инструмента smoke-тестирования (RUN_CLI_SMOKE=1, OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS в tests/integration/upstream-cli-smoke.int.test.ts) — см. Интеграции CLI → Реальный набор smoke-проверок. |
OMNIROUTE_BUILDING |
(не задано) | src/lib/buildPhase.ts |
Сигнал фазы сборки (#10060): задаётся равным 1 скриптом scripts/build/build-next-isolated.mjs и наследуется каждым запущенным процессом сборки, чтобы слой БД возвращал заглушку без операций вместо загрузки нативного дополнения better-sqlite3 (из-за которого процесс аварийно завершается при выходе). Никогда не задаётся для работающего сервера. |
OMNIROUTE_SKIP_NATIVE_DEP_CHECK |
0 |
scripts/check/check-native-deps.mjs |
Задайте значение 1, чтобы пропустить предварительную проверку необязательных нативных зависимостей для нестандартных встроенных деревьев. Это не позволит выполнить сборку при отсутствии зависимости; используйте только в том случае, если нативные зависимости предоставляются внешним способом. |
OMNIROUTE_DATA_DIR |
(не задано) | open-sse/executors/promptql/threadSticky.ts |
Резервный псевдоним для DATA_DIR, проверяемый только в том случае, если DATA_DIR не задана. Используется для определения расположения дискового кеша закреплённых за потоком сеансов исполнителя PromptQL (<dir>/promptql-thread-sessions.json); если ни одна из переменных не задана, кеш хранится только в памяти (и не сохраняется между перезапусками). |
OMNIROUTE_PLUGINS_DIR |
(не задано) | src/lib/plugins/scanner.ts |
Каталог, считываемый сканером плагинов среды выполнения, а также корневой каталог, в который менеджер плагинов выполняет установку, с переопределением стандартного значения, вычисляемого на основе домашнего каталога (#11827). В Docker/K8s укажите дерево плагинов, подключённое через bind mount, вместо изменения HOME только для переноса пути сканирования (HOME также управляет любым другим поведением, связанным с домашним каталогом). Если переменная не задана, используется ~/.omniroute/plugins либо /tmp/.omniroute/plugins, когда процесс вообще не экспортирует домашний каталог, — эта переменная устраняет возникающее в таком случае незаметное необнаружение плагинов. Разрешённый каталог однократно записывается в журнал при запуске как scanner.dir_resolved вместе с входным значением, которое было выбрано. Только для серверной части: плагины команд CLI продолжают использовать собственную переменную OMNIROUTE_PLUGIN_PATH (раздел 9). |
STORAGE_ENCRYPTION_KEY |
(пусто = отключено) | src/lib/db/encryption.ts |
Ключ AES для полного шифрования базы данных SQLite при хранении. Создайте с помощью 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, запись настроек). Резервное копирование вручную и перед восстановлением продолжает выполняться. Это не отключает обязательный надежный снимок безопасности средства выполнения миграций или защиту от массовой миграции для существующей постоянной БД. Резервное копирование, не выполняемое вручную, ограничено частотой не более одного раза в 60 минут. Регулярное автоматическое резервное копирование можно независимо отключить в панели управления в разделе Настройки → Хранилище. |
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 (мс). Если значение не задано, параметры по умолчанию определяются на основе NODE_ENV. |
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS |
(удалено) | src/lib/db/walMaintenance.ts |
Удалено. Периодический вызов wal_checkpoint(TRUNCATE) в работающей системе может сделать недействительным общее отображение wal-index и вызвать аварийное завершение процесса с SIGBUS (#13973), поэтому планировщик больше не существует. Переменная не действует: положительное значение приводит к однократной записи предупреждения об устаревании в журнал, а при значении 0 или отсутствии значения никаких сообщений не выводится. WAL обслуживается с помощью контрольных точек PASSIVE (см. ниже) и усекается контрольной точкой при завершении работы. |
OMNIROUTE_WAL_PASSIVE_INTERVAL_MS |
300000 (5 мин) |
src/lib/db/walMaintenance.ts |
Переопределяет интервал частого выполнения wal_checkpoint(PASSIVE) (мс). Позволяет поддерживать небольшой объем ожидающих кадров WAL, чтобы контрольные точки обрабатывались быстро, а размер файла WAL оставался ограниченным между усечениями при завершении работы. Значение 0 отключает эту функцию. |
OMNIROUTE_WAL_GUARD_MAX_MB |
256 |
src/lib/db/walMaintenance.ts |
Если при выполнении PASSIVE размер файла WAL превышает это значение, запускается wal_checkpoint(RESTART), чтобы WAL начал работу заново без перезаписи отображаемого wal-index. Контрольные точки с усечением в работающей системе удалены (см. строку OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS). |
OMNIROUTE_PRESSURE_SELF_RESTART |
false |
open-sse/utils/resourcePressure.ts |
Установите значение 1/true/yes/on, чтобы завершить процесс после сохранения критической нехватки ресурсов в течение OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS. Это позволит супервизору (systemd Restart=always, политика перезапуска Docker) запустить чистый процесс вместо бесконечной выдачи ответов 503. |
OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS |
120000 (2 мин) |
open-sse/utils/resourcePressure.ts |
Время, в течение которого должна сохраняться критическая нехватка ресурсов, прежде чем сработает завершение процесса для самостоятельного перезапуска. |
OMNIROUTE_SQLJS_WASM_PATH |
(автоопределение) | src/lib/db/adapters/sqljsAdapter.ts |
Явный путь (абсолютный или относительно cwd) к sql-wasm.wasm при использовании резервного WASM-адаптера sql.js. Если значение не задано, путь определяется автоматически по зависимостям пакета и возможным вариантам расположения. |
OMNIROUTE_BATCH_RETENTION_DAYS |
30 |
src/lib/db/cleanup.ts |
Количество дней, в течение которых контрольные точки завершенного (completed/failed/cancelled/expired) задания Batch API, связанные входные/выходные файлы и файлы ошибок, а также соответствующая строка сохраняются перед удалением в ходе автоматической очистки. Действует только после включения BATCH_AND_FILE_AUTO_CLEANUP_ENABLED; соответствует периоду хранения результатов Batch API в OpenAI. Не влияет на запускаемый оператором маршрут DELETE /api/v1/batches/delete-completed, который по замыслу всегда работает безусловно (без фильтра по возрасту). |
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED |
false |
src/lib/db/cleanup.ts |
Если задано значение true, автоматическая очистка удаляет завершенные задания Batch API (и их контрольные точки) по истечении OMNIROUTE_BATCH_RETENTION_DAYS, а также очищает BLOB-содержимое загруженных файлов после наступления их собственного срока expires_at. По умолчанию отключено: все существующие установки сохраняют эти данные точно так же, как и раньше, пока оператор явно не включит функцию. Также является флагом функции, редактируемым в панели управления — см. docs/reference/FEATURE_FLAGS.md → «Среда выполнения». |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts, src/lib/db/healthCheck.ts |
Установите значение 1, чтобы полностью пропустить проверку работоспособности БД при запуске. Полезно для кратковременных задач и интеграционных тестов. |
OMNIROUTE_FORCE_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts |
Установите значение 1, чтобы принудительно включить цикл проверки работоспособности БД, даже если обычно он пропускается (например, для кратковременных задач). |
OMNIROUTE_SKIP_POSTINSTALL |
0 |
scripts/postinstall.mjs |
Установите значение 1, чтобы пропустить предварительный прогрев нативной среды выполнения во время npm install. Полезно при установке в CI-средах и средах без графического интерфейса, где sqlite уже собран. |
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). Запуск прерывается, если для существующей БД ожидается больше указанного количества миграций (защита от очищенной таблицы отслеживания). Увеличьте значение, чтобы восстановить более старую резервную копию; установите 0, чтобы отключить проверку. |
OMNIROUTE_INSTALL_UPGRADE_WORKDIR |
(<repo>/.install-upgrade) |
scripts/check/check-install-upgrade.mjs |
Рабочий каталог для контрольного этапа выпуска check:install-upgrade. Для него требуется около 12 ГБ (два дерева установки примерно по 3 ГБ плюс tar-архив), поэтому его нельзя запускать на небольшом tmpfs — на собственном раннере /tmp представляет собой размещённый в ОЗУ tmpfs размером 12 ГБ, и контрольный этап исчерпал его, из-за чего пакет был усечён. |
OMNIROUTE_SPEND_FLUSH_INTERVAL_MS |
(значение по умолчанию в коде) | src/lib/spend/batchWriter.ts |
Интервал сброса (мс) для пакетной записи расходов/затрат. Меньшие значения сокращают объединение операций записи; большие значения снижают конкуренцию за доступ к БД. |
OMNIROUTE_SPEND_MAX_BUFFER_SIZE |
(значение по умолчанию в коде) | src/lib/spend/batchWriter.ts |
Максимальное количество буферизованных записей о расходах перед принудительным сбросом. Увеличьте для развёртываний с высоким QPS; уменьшите, если ограничение потребления памяти важнее. |
OMNIROUTE_PROXY_FETCH_DEBUG |
(не задано) | open-sse/utils/proxyFetch.ts |
Установите значение "true", чтобы выводить отладочные журналы [ProxyFetch] в маршруте ретрансляции Vercel. По умолчанию отключено во избежание утечки сведений о маршрутизации. |
PROXY_LOG_INCLUDE_IPS |
false |
src/lib/proxyLogger.ts |
Установите значение "true" или "1", чтобы включить IP-адреса клиента/исходящего подключения и префикс учётной записи в подробную строку журнала процесса [ProxyEgress]. По умолчанию отключено, чтобы журнал процесса не раскрывал IP-адреса или префикс учётной записи. |
OMNIROUTE_DEBUG |
(не задано) | bin/cli/commands/quota.mjs |
Установите значение 1, чтобы команды квот CLI выводили в stderr диагностические данные о времени выполнения каждого запроса ([omniroute] GET <path> completed in Nms). |
OMNIROUTE_HEALTHCHECK_PATH |
(авто) | scripts/dev/healthcheck.mjs |
Явный путь, проверяемый средством проверки работоспособности контейнера. Если значение не задано, проверяемый путь определяется на основе OMNIROUTE_BASE_PATH; задание значения снова включает использование углублённой конечной точки мониторинга. |
OMNIROUTE_DEBUG_COMPLETION |
(не задано) | bin/cli/commands/completion.mjs |
Установите любое непустое значение, чтобы выводить диагностические данные [omniroute completion] из путей кэша автодополнения оболочки CLI (чтение/обновление/запись). По умолчанию отключено — сбои этих кэшей обрабатываются без вывода сообщений, поэтому отсутствие или повреждение кэша никогда не нарушает автодополнение по Tab. |
BATCH_RETRY_DURATION_MS |
86400000 (24 ч) |
open-sse/services/batchProcessor.ts |
Максимальный период повторных попыток для отдельных элементов пакета (мс). Элементы, превысившие эту продолжительность, помечаются как неуспешные. |
BATCH_BACKOFF_BASE_MS |
5000 |
open-sse/services/batchProcessor.ts |
Базовая задержка (мс) для экспоненциальной выдержки при повторных попытках обработки элементов пакета. |
BATCH_BACKOFF_MAX_MS |
3600000 (1 ч) |
open-sse/services/batchProcessor.ts |
Максимальная задержка (мс) для экспоненциальной выдержки между повторными попытками обработки элементов пакета. |
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для обхода мер безопасности миграции.
Сценарии
Заголовок раздела «Сценарии»| Сценарий | Конфигурация |
|---|---|
| Локальная разработка | Оставьте все значения по умолчанию. БД находится в ~/.omniroute/omniroute.db. |
| Docker | DATA_DIR=/data + подключите том в /data. |
| Шифрование при хранении | Задайте STORAGE_ENCRYPTION_KEY + обязательно храните резервные копии ключа! Потеря ключа = потеря данных. |
| CI/Тестирование | DATA_DIR=/tmp/omniroute-test — временное хранилище, шифрование не требуется. |
3. Сеть и порты
Заголовок раздела «3. Сеть и порты»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
PORT |
20128 |
src/lib/runtime/ports.ts |
Основной порт как для пользовательского интерфейса панели управления, так и для конечных точек API (режим одного порта). |
OMNIROUTE_BASE_PATH |
(пусто = корень) | next.config.mjs, scripts/docker/ensure-docker-base-path.mjs |
Подпуть URL для размещения OmniRoute за обратным прокси-сервером (задаёт basePath в Next.js; перенаправления аутентификации учитывают basePath). Например, /omniroute. В Docker значение встраивается во время docker build (ARG OMNIROUTE_BASE_PATH); для предварительно собранных корневых образов другое значение времени выполнения можно применить один раз при запуске контейнера до загрузки Next.js. Укажите в NEXT_PUBLIC_BASE_URL публичный источник, включающий тот же подпуть. |
NEXT_PUBLIC_OMNIROUTE_BASE_PATH |
(пусто = корень) | src/shared/hooks/useDisplayBaseUrl.ts |
Доступная браузеру копия OMNIROUTE_BASE_PATH, встраиваемая во время сборки, чтобы в панели управления адрес конечной точки отображался как https://host/omniroute/v1, а не https://host/v1. Если значение не задано, используется OMNIROUTE_BASE_PATH. После изменения выполните повторную сборку (basePath в Next задаётся во время сборки). |
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 сможет их отображать (режим dashboardOpen: "editor" в OmniCopilot). Поверхность API (/api, /v1, /v1beta, /a2a, /healthz, псевдонимы корневого уровня) в любом случае сохраняет строгие заголовки. Распознаётся только vscode — значения 1/true не включают эту возможность. Настройка выполняется во время сборки: после изменения выполните повторную сборку (docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode для образов; установка переменной в предварительно собранной инсталляции не действует). |
API_PORT |
(не задано) | src/lib/runtime/ports.ts |
Если задано, прокси-API /v1/* обслуживается через этот отдельный порт. |
API_HOST |
0.0.0.0 |
src/lib/runtime/ports.ts |
Адрес привязки для порта API. |
DASHBOARD_PORT |
(не задано) | src/lib/runtime/ports.ts |
Если задано, пользовательский интерфейс панели управления обслуживается через этот отдельный порт. |
OMNI_MAX_CONCURRENT_CONNECTIONS |
0 (отключено) |
src/sse/utils/backpressure.ts |
Ограничивает количество одновременно обрабатываемых подключений чата; запросы сверх лимита получают ответ 503 с Retry-After. Положительное целое число включает это ограничение; отсутствие значения или 0 отключает его. |
OMNIROUTE_INSTANCE_ID |
(не задано) | src/shared/resilience/peerRouting.ts |
Стабильный уникальный идентификатор этого шлюза при объединении экземпляров OmniRoute в цепочку. Включает проверку входящих запросов на наличие циклов между узлами. Допустимые символы: буквы, цифры, ., _, : и -; максимальная длина — 64 символа. |
OMNIROUTE_PEER_URLS |
(не задано) | src/shared/resilience/peerRouting.ts, open-sse/executors/base.ts |
Разделённые запятыми базовые URL-адреса OmniRoute, которые могут получать X-OmniRoute-Peer-Trace. Метаданные узлов передаются только явно внесённым в список разрешённых вышестоящим URL-адресам; все остальные провайдеры остаются без изменений. |
OMNIROUTE_PEER_MAX_HOPS |
4 |
src/shared/resilience/peerRouting.ts |
Максимальное количество ранее посещённых экземпляров OmniRoute, допустимое в цепочечном запросе (1–32). Повторное посещение экземпляров или исчерпание лимита приводит к ответу HTTP 508 Loop Detected. |
PROD_DASHBOARD_PORT |
20130 |
docker-compose.prod.yml |
Порт хоста, публикуемый для панели управления в режиме промышленной эксплуатации Docker. |
PROD_API_PORT |
20131 |
docker-compose.prod.yml |
Порт хоста, публикуемый для API в режиме промышленной эксплуатации Docker. |
OMNIROUTE_PORT |
(не задано) | src/lib/runtime/ports.ts |
Имеет приоритет над PORT при запуске внутри Electron или других оболочек. |
LIVE_WS_PORT |
20129 |
src/server/ws/liveServer.ts |
Порт сервера мониторинга в реальном времени через WebSocket. |
LIVE_WS_HOST |
127.0.0.1 |
src/server/ws/liveServer.ts |
Адрес привязки сервера WebSocket реального времени. Установите значение 0.0.0.0, чтобы открыть доступ из локальной сети (также настройте LIVE_WS_ALLOWED_ORIGINS). |
LIVE_WS_ALLOWED_ORIGINS |
(не задано) | src/server/ws/liveServer.ts |
Разделённые запятыми дополнительные источники, которым разрешено устанавливать соединение WebSocket реального времени. Источники панели управления на loopback-интерфейсе уже разрешены по умолчанию. |
LIVE_WS_ALLOWED_HOSTS |
(не задано) | src/server/ws/liveServerAllowList.ts |
Разделённые запятыми дополнительные имена хостов, разрешённые для источников WebSocket реального времени. В отличие от LIVE_WS_ALLOWED_ORIGINS (полные URL-адреса источников), сопоставляется только часть с именем хоста — это удобно для конфигураций LAN/Tailscale. |
NEXT_PUBLIC_LIVE_WS_PUBLIC_URL |
(не задано) | src/hooks/useLiveDashboard.ts |
Публичный URL-адрес WebSocket для панели мониторинга в реальном времени (на стороне браузера). Задайте его, если перед WS-сервером используется обратный прокси-сервер или Cloudflare Tunnel (например, wss://ws.my-ai.com/live-ws); браузер будет подключаться к нему вместо ws://hostname:20132. Часть с путём также используется как путь обновления соединения до WebSocket (по умолчанию: /live-ws). |
OMNIROUTE_ENABLE_LIVE_WS |
true |
src/server/ws/liveServer.ts и scripts/start-ws-server.mjs |
Установите значение 0 или false, чтобы отключить сервер WebSocket реального времени (по умолчанию включён и привязан к loopback-интерфейсу). Переключатель для CI/тестовой среды, отключающий отдельный вспомогательный скрипт WebSocket-сервера. |
RELAY_IP_PER_MINUTE |
30 |
src/app/api/v1/relay/chat/completions/route.ts |
Ограничение частоты ретрансляции для каждой пары (токен, IP), в запросах в минуту. Хранится в памяти отдельно для каждого экземпляра. Значение 0 или отрицательное отключает ограничение по IP (ограничение БД для каждого токена продолжает действовать). |
NODE_ENV |
production |
Ядро Next.js | Управляет детализацией журналирования, кэшированием, раскрытием сведений об ошибках и оптимизациями Next.js. |
OMNIROUTE_USE_TURBOPACK |
1 (Turbopack — значение по умолчанию в коде) |
package.json / Next.js 16 |
Turbopack — сборщик по умолчанию для npm run dev и npm run build (сборки в 2–3 раза быстрее согласно тестам производительности). Установите значение 0, чтобы вернуться к webpack в Windows, при возникновении несовместимости нативных привязок или сборщика, либо на компьютерах с ограниченным объёмом ОЗУ — известно, что производственные сборки Turbopack в этой линейке версий Next.js (16.2.x) на больших графах модулей достигают гораздо более высокого пикового потребления памяти, чем webpack (исправление вытеснения из памяти Turbopack в Next 16.3 ещё не является стабильным); при использовании резервного варианта с webpack пиковое потребление значительно ниже. См. #6409. |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
(не задано) | src/lib/db/core.ts / src/lib/db/healthCheck.ts |
Установите значение 1, чтобы пропустить проверку целостности SQLite при запуске. Полезно для ускорения запуска при больших базах данных. |
NOTIFY_SOCKET |
(не задано) | systemd (протокол sd_notify) | Устанавливается systemd, когда процесс выполняется в сервисном юните с интеграцией sd_notify; OmniRoute считывает её (см. OMNIROUTE_DISABLE_SD_NOTIFY) для отправки уведомлений READY/WATCHDOG. Никогда не задаётся пользователем. |
OMNIROUTE_DISABLE_SD_NOTIFY |
(не задано) | scripts/dev/systemd-notify.mjs |
Установите значение 1, чтобы отключить systemd sd_notify (Type=notify / WatchdogSec=), даже при запуске в юните systemd. Вне systemd средство уведомлений в любом случае ничего не делает. |
CREDENTIAL_HEALTH_CHECK_INTERVAL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/scheduler.ts |
Интервал (мс) для фонового планировщика проверки работоспособности учётных данных. Минимум: 10000 (10 с). |
CREDENTIAL_HEALTH_CACHE_TTL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/cache.ts |
TTL (мс) для кэшированного состояния работоспособности учётных данных. |
OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK |
false |
src/lib/credentialHealth/scheduler.ts |
Установите значение 1 или true, чтобы отключить фоновую периодическую проверку подключений к провайдерам. Поисковые провайдеры (SEARCH_VALIDATOR_CONFIGS в src/lib/providers/validation/searchProviders.ts, например tavily-search) всегда исключаются из обхода — их «проверка» представляет собой реальный тарифицируемый запрос к вышестоящему сервису, поэтому их работоспособность никогда не проверяется по таймеру (#9970). |
HOST |
0.0.0.0 |
scripts/dev/run-next.mjs |
Адрес привязки для сервера разработки/запуска Next.js. Если задан, переопределяет значение по умолчанию 0.0.0.0. |
HOSTNAME |
127.0.0.1 |
scripts/dev/run-next-playwright.mjs |
Адрес привязки, используемый средством запуска Playwright при запуске Next.js. По умолчанию используется 127.0.0.1 для герметичных тестов. Не используйте для omniroute serve — вместо этого используйте OMNIROUTE_SERVER_HOST (оболочки POSIX автоматически задают HOSTNAME равным имени компьютера; .env не может переопределить её). |
OMNIROUTE_SERVER_HOST |
0.0.0.0 |
bin/cli/commands/serve.mjs |
Адрес привязки для omniroute serve. Позволяет избежать конфликта с переменной оболочки POSIX HOSTNAME (bash/zsh всегда задают её равной имени компьютера). Если значение не задано, используется 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 ││ Сценарий: доступ к API из LAN, при этом панель доступна лишь с localhost. │└─────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────── Docker в продакшене ─────────────────────────┐│ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 ││ → Сопоставляет порты контейнера с портами хоста в docker-compose.prod.yml. │└─────────────────────────────────────────────────────────────────────────────┘4. Безопасность и аутентификация
Заголовок раздела «4. Безопасность и аутентификация»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
MACHINE_ID_SALT |
endpoint-proxy-salt |
src/lib/auth |
Соль, объединяемая с аппаратными идентификаторами для создания цифрового отпечатка машины. Для изоляции задавайте отдельное значение для каждого развертывания. |
OMNIROUTE_CLI_SALT |
(не задано = случайная соль для каждой установки, сохраняемая в <DATA_DIR>/cli-token-salt.json) |
src/lib/machineToken.ts |
Соль HMAC для формирования локального токена аутентификации CLI. Установка этого значения приводит к ротации всех токенов CLI на машине и всегда имеет приоритет над сохраненной солью. См. docs/security/CLI_TOKEN.md. |
AUTH_COOKIE_SECURE |
false |
src/lib/auth |
Устанавливает флаг Secure для cookie-файлов сеанса. При работе через HTTPS значение обязательно должно быть true. |
REQUIRE_API_KEY |
false |
Промежуточное ПО API | Если задано значение true, все прокси-запросы /v1/* должны содержать действительный ключ API. Этот флаг не ограничивает доступ к GET /v1/models: для него вместо этого применяется политика входа в Панель управления (requireAuthForModels), поэтому ответ 401 от /v1/models НЕ означает, что инференс защищен. См. docs/security/INFERENCE_AUTH_POSTURE.md (#13695). |
ALLOW_API_KEY_REVEAL |
false |
src/shared/constants/featureFlagDefinitions.ts |
Позволяет отображать полные значения ключей API в интерфейсе Панели управления. Настраивается с помощью флагов функций Панели управления; представляет угрозу безопасности в экземплярах с общим доступом. |
NO_LOG_API_KEY_IDS |
(пусто) | src/lib/compliance/index.ts |
Разделенные запятыми идентификаторы ключей API, для которых журналирование запросов отключено (соответствие GDPR). |
DEFAULT_RATE_LIMIT_PER_DAY |
(не задано = без ограничений) | src/shared/utils/apiKeyPolicy.ts |
Резервный дневной бюджет запросов, применяемый к ключам API, у которых столбец rate_limits имеет значение null. Не задано или пусто: неявное ограничение отсутствует (#2289, #11017). 0 означает то же самое (без ограничений). Положительное целое число N включает ограничения N/день, 5N/неделю и 20N/месяц. Для некорректных непустых значений используются прежние интервалы: 1000/день, 5000/неделю и 20000/месяц. |
MAX_BODY_SIZE_BYTES |
10485760 (10 МБ) |
src/shared/middleware/bodySizeGuard.ts |
Максимально допустимый размер тела запроса. Полезные нагрузки, превышающие этот предел, отклоняются. |
OMNIROUTE_CHAT_LARGE_BODY_BYTES |
262144 (256 КБ) |
src/shared/middleware/chatBodyAdmission.ts |
Фактические тела запросов, размер которых не меньше этого порогового значения, перед разбором JSON получают атомарную локальную для процесса квоту допуска для ресурсоемких запросов (путь BYTE, включая POST /v1/responses). Используется тот же механизм пропуска при достаточном запасе ресурсов из #10437, что и для структурно сложных запросов; при этом по-прежнему действует ограничение OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110, чтобы проблема #7849 не повторилась. |
OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES |
52428800 (50 МБ) |
src/shared/middleware/chatBodyAdmission.ts |
Жёсткий лимит для маршрутов чата, применяемый к количеству байтов, прочитанных в ходе ограниченного приёма данных, включая запросы с отсутствующим, недопустимым или недостоверным Content-Length; при превышении возвращается 413. |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT |
(не задано — нет ограничения по количеству запросов) | src/shared/middleware/chatBodyAdmission.ts |
#503-fanout: это устаревшее ограничение по КОЛИЧЕСТВУ запросов теперь применяется только в том случае, если задано явно. Если значение не задано (по умолчанию), допуск тяжеловесных запросов чата вместо этого регулируется OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES — автоматически вычисляемым БАЙТОВЫМ бюджетом, размер которого определяется фактическим пределом памяти процесса в рамках одного процесса (одной кучи V8). Два перекрывающихся запроса /v1/responses объёмом около 750 тыс. токенов аварийно завершают кучи размером около 12 ГиБ (#7849) — это предупреждение о бюджете памяти, а не жёсткий продуктовый максимум в 2 запроса. Исправный процесс (куча ниже коэффициента сброса нагрузки) МОЖЕТ принимать больше одновременных длительных запросов /v1/responses через OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM. Десятки длительных SSE-клиентов (40–50) ограничиваются кучей + OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110, а не «максимумом в 2». Бездумное увеличение этого значения с целью «использовать ресурсы хоста» вновь приводит к #7849. Умножайте количество куч, используя N независимых DATA_DIR (#11024); никогда не используйте replicas>1 для одного файла SQLite. |
OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES |
(вычисляется автоматически) | src/shared/middleware/admissionBudget.ts |
#503-fanout: переопределение автоматически вычисляемого байтового бюджета приёма данных (25% от меньшего из ограничений памяти V8/cgroup, делённые на коэффициент 8-кратного временного увеличения). Вычисленные и явно заданные значения ограничиваются диапазоном 8 МиБ–2 ГиБ. Если тело превышает действующий бюджет, запрос немедленно завершается с ошибкой 413 body_exceeds_budget; конкуренция между телами, каждое из которых по отдельности может быть обработано, по-прежнему приводит к допускающей повторную попытку ошибке 503. 40–50 одновременных длительных SSE-клиентов ограничиваются этим бюджетом + кучей, а не жёстким «максимумом в 2». Перед настройкой проверьте chatAdmission.maxInflightBytes / budgetSource / pressureSeverity по адресу /api/monitoring/health. |
OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO |
0.75 |
src/shared/middleware/chatBodyAdmission.ts |
Коэффициент сброса нагрузки при давлении на кучу (heapUsed / heap_size_limit) для допуска тяжеловесных запросов категорий BYTE и STRUCTURE (#10183, #10268, #10437). Одновременный тяжеловесный запрос сверх OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT отклоняется с допускающей повторную попытку ошибкой 503, только если использование кучи ТАКЖЕ достигает или превышает этот коэффициент; при нормальном состоянии кучи он допускается за счёт резерва для исправного состояния. |
OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT (по умолчанию 1) |
src/shared/middleware/chatBodyAdmission.ts |
Ограниченная дополнительная ёмкость для быстрого пути при нормальном состоянии кучи (#10437) как для STRUCTURE, так и для BYTE (admitChatRequest, включая тела ≥ OMNIROUTE_CHAT_LARGE_BODY_BYTES). Без этого ограничения каждый запрос при высокой нагрузке, но нормальном состоянии кучи обходил механизм допуска без какого-либо верхнего предела. Когда через путь нормального состояния кучи активируется указанное количество одновременных разрешений, последующие запросы при высокой нагрузке переходят к ТОМУ ЖЕ пути ограниченного ожидания/сброса нагрузки, который используется при реальном давлении на кучу. Значение 0 полностью отключает обход. |
OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT |
200 |
src/shared/middleware/chatBodyAdmission.ts |
Количество сообщений, при котором запрос чата классифицируется как тяжеловесный, даже если размер его тела ниже байтового порога. |
OMNIROUTE_CHAT_HEAVY_TOOL_COUNT |
64 |
src/shared/middleware/chatBodyAdmission.ts |
Количество инструментов, при котором запрос чата классифицируется как тяжеловесный, даже если размер его тела ниже байтового порога. |
OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS |
32000 |
src/shared/middleware/chatBodyAdmission.ts |
Консервативная оценка количества токенов по размеру строк, при которой запрос классифицируется как тяжеловесный; это приблизительная оценка стоимости допуска, а не токенизация для выставления счетов провайдером. |
OMNIROUTE_CHAT_HARD_MAX_MESSAGES |
0 (отключено) |
src/shared/middleware/chatBodyAdmission.ts |
Необязательное, явно включаемое ограничение истории чата. По умолчанию отключено: количество сообщений является политикой развёртывания, а не универсальным свойством запроса, и такое ограничение отклоняет диалоги с окончательной ошибкой 413 до того, как конвейер сжатия сможет сделать их пригодными для обработки. Рост кучи ограничивается OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT и сбросом нагрузки при давлении на кучу. Задайте положительное значение в развёртываниях с ограниченной памятью, которым необходим жёсткий предел; при его превышении возвращается структурированная ошибка 413, требующая сжатия. |
OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES |
67108864 (64 МБ) |
open-sse/handlers/chatCore/nonStreamingResponseBody.ts |
Жёсткий лимит для непотокового ответа вышестоящего сервиса, полностью буферизуемого в памяти. При его превышении чтение ответа вышестоящего сервиса отменяется, а запрос быстро завершается с ошибкой вместо неограниченного роста строки вплоть до исчерпания кучи. |
OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES |
768 |
open-sse/handlers/chatCore/responseHeaders.ts |
Максимальный объём заголовков ответа вышестоящего сервера, передаваемых по сети, в байтах. При превышении лимита заголовки с более низким приоритетом (например, пользовательские x-codex-*, x-oai-request-id) отбрасываются, чтобы не выходить за типичные ограничения обратных прокси на размер заголовков. Установите более высокое значение, чтобы передавать больше метаданных вышестоящего сервера ценой увеличения размера заголовков ответа. |
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 |
Блокирует обращения к поставщикам, нацеленные на частные, loopback- или link-local-диапазоны 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/* (транскрипция, речь, перевод) использовать совместимый с OpenAI узел поставщика, размещённый вне localhost. По умолчанию отключено — маршрутизация аудио на удалённый хост изменяет идентификатор исходящего подключения и должна быть явным решением оператора. Loopback-узлы и узлы в частных сетях (localhost, 127.0.0.1, 172.16-31.x) разрешены всегда и не зависят от этой настройки. (#3963) |
RERANK_REMOTE_PROVIDER_NODES |
false |
src/app/api/v1/_shared/rerankProviderNodes.ts |
Позволяет POST /v1/rerank (а также loopback-этапу повторного ранжирования механизма памяти) использовать совместимый с OpenAI узел поставщика, размещённый вне localhost, — компьютер в LAN или пир Tailscale, на котором запущен TEI, Infinity, vLLM и т. д. По умолчанию отключено — маршрутизация на удалённый хост изменяет идентификатор исходящего подключения и должна быть явным решением оператора. Loopback-узлы (localhost, 127.0.0.1, 172.16-31.x) разрешены всегда и не зависят от этой настройки. Удалённые узлы также должны соответствовать политике исходящих URL-адресов поставщиков (OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS / OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS); маршрутизация на хосты облачных метаданных никогда не выполняется. |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
Когда OIDC включён, отключает вход по паролю, чтобы пользователи могли проходить аутентификацию только через единый вход OIDC. Также поддерживается краткий псевдоним OIDC_DISABLE_PASSWORD_LOGIN; флаг функции панели управления с тем же ключом имеет приоритет. (#10889) |
OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
Краткий псевдоним OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN (#10889). |
Контрольный список усиления защиты
Заголовок раздела «Контрольный список усиления защиты»# Минимальные требования безопасности для производственной среды:AUTH_COOKIE_SECURE=true # Требуется HTTPSREQUIRE_API_KEY=true # Аутентифицировать все обращения к проксиALLOW_API_KEY_REVEAL=false # Никогда не раскрывать ключи в интерфейсеCORS_ALLOWED_ORIGINS=https://your.domain.comMAX_BODY_SIZE_BYTES=5242880 # Ограничение 5 МБ5. Очистка входных данных и защита персональных данных
Заголовок раздела «5. Очистка входных данных и защита персональных данных»OmniRoute обеспечивает двухуровневую защиту: сканирование запросов на наличие инъекций и удаление персональных данных из ответов.
⚠️ Ограничения: Эти защитные механизмы используют эвристическое обнаружение по принципу максимальных усилий и не являются полноценным межсетевым экраном для защиты от промпт-инъекций или DLP-системой для персональных данных. Они могут давать ложноположительные результаты (помечая безопасные промпты с персонажами или ролевыми играми) и ложноотрицательные результаты (литспик, пробелы, шаблоны не на английском языке). Сами по себе они недостаточны для обеспечения соответствия нормативным требованиям. Настройте режимы и протестируйте их на своём трафике, прежде чем полагаться на них.
На стороне запроса: защита от промпт-инъекций
Заголовок раздела «На стороне запроса: защита от промпт-инъекций»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
INPUT_SANITIZER_ENABLED |
true |
src/middleware/promptInjectionGuard.ts |
Включает сканирование входящих сообщений на наличие шаблонов промпт-инъекций. |
INPUT_SANITIZER_MODE |
warn |
src/middleware/promptInjectionGuard.ts |
Политика обработки инъекций: warn = только записывать в журнал, block = отклонять запрос с кодом 400. Устаревший режим redact не удаляет текст инъекции; для очистки персональных данных в запросе используйте 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. Шаблоны уровня medium по умолчанию только отслеживаются, если порог не снижен. |
INJECTION_GUARD_BLOCK_THRESHOLD |
(не задано) | src/shared/utils/injectionSeverity.ts |
Устаревший псевдоним для INPUT_SANITIZER_BLOCK_THRESHOLD — поведение идентично. |
PII_REDACTION_ENABLED |
false |
src/lib/guardrails/piiMasker.ts |
Если установлено значение true, персональные данные во входящих запросах редактируются независимо от режима обработки инъекций. |
CREDENTIAL_REDACTION_ENABLED |
false |
src/lib/guardrails/credentialMasker.ts |
Редактирует известные шаблоны API-ключей и секретных токенов в данных запросов и ответов. Включается явно; работает аналогично PII_REDACTION_ENABLED. |
На стороне ответа: очистка персональных данных
Заголовок раздела «На стороне ответа: очистка персональных данных»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
PII_RESPONSE_SANITIZATION |
false |
src/lib/piiSanitizer.ts |
Сканирует ответы LLM на наличие утечек персональных данных перед их возвратом клиенту. |
PII_RESPONSE_SANITIZATION_MODE |
redact |
src/lib/piiSanitizer.ts |
redact = маскировать персональные данные, warn = только записывать в журнал, block = полностью удалять ответ. |
Очистка контекста токенизированных маршрутов VS Code
Заголовок раздела «Очистка контекста токенизированных маршрутов VS Code»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_VSCODE_SANITIZE_CONTEXT |
1 |
src/app/api/v1/vscode/contextSanitizer.ts |
Удаляет неявный контекст активного редактора (editorContext, activeEditor, currentFile, selection, openTabs…) из запросов /v1/vscode/[token]/* и редактирует содержимое явно прикреплённых конфиденциальных файлов. Безопасный режим используется по умолчанию; чтобы отключить его, установите значение 0. |
Сценарии
Заголовок раздела «Сценарии»| Сценарий | Конфигурация |
|---|---|
| Соответствие корпоративным требованиям | INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=block, PII_REDACTION_ENABLED=true, PII_RESPONSE_SANITIZATION=true (инъекции блокируются, а персональные данные в запросах и ответах редактируются; режимы независимы) |
| Только мониторинг | INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=warn — события записываются в журнал, но запросы никогда не блокируются |
| Личное использование | Оставьте всё отключённым — никаких дополнительных накладных расходов |
6. Политики инструментов и маршрутизации
Заголовок раздела «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 |
Интервал перезагрузки (мс) файла правил полезной нагрузки без остановки сервиса. Минимум — 1000. |
OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS |
false |
open-sse/services/model.ts |
Опциональная настройка: направлять идентификаторы моделей вида claude-* без префикса от клиентов Claude Code через OAuth-аккаунт Claude Code вместо требования префикса провайдера. Явные префиксы провайдера по-прежнему имеют приоритет. Также настраивается с помощью переключателя на странице провайдера Claude в панели управления. |
COMBO_CONCURRENCY_PER_MODEL |
3 |
open-sse/services/comboConfig.ts |
Ограничение параллелизма для каждой модели в комбинациях с циклическим распределением (#9100). Семафор комбинаций с циклическим распределением был жёстко ограничен тремя параллельными запросами на модель без возможности переопределения, из-за чего трафик с более высоким уровнем параллелизма обрабатывался последовательно сверх этого ограничения. Проверяется условие >= 1, максимальное значение ограничено <= 32. |
DISABLE_CONTEXT_WINDOW_CHECKS |
false |
open-sse/handlers/chatCore.ts |
Опасная опциональная настройка, отключающая локальную проверку OmniRoute размера контекстного окна / максимального количества входных токенов для прямых запросов к одной модели. Вышестоящие провайдеры по-прежнему применяют свои фактические ограничения; сжатие запроса и собственный лимит выходных токенов модели остаются активными. Фактический порядок приоритета: переопределение в БД Feature Flags > переменная окружения > значение по умолчанию; перезапуск не требуется. |
OMNIROUTE_SELF_HOSTED_PROVIDERS |
(не задано) | open-sse/services/selfHostedEntry.ts |
Встроенный YAML-документ providers: (RIC-738, D4). Если задан (с блоком strategy: или без него), /v1/chat/completions перенаправляется в унифицированную самоуправляемую точку входа, совместимую с OpenAI, вместо облачного конвейера. Если не задано (по умолчанию), маршрут напрямую передаётся существующему облачному конвейеру. См. docs/routing/SELF_HOSTED_OPENAI_ENTRY.md. |
OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE |
(не задано) | open-sse/services/selfHostedEntry.ts |
Путь к YAML-файлу, содержащему тот же документ providers:, что и OMNIROUTE_SELF_HOSTED_PROVIDERS, для развёртываний, в которых файл предпочтительнее встроенной переменной окружения. Любой из этих вариантов активирует самоуправляемую точку входа. |
OMNIROUTE_SELF_HOSTED_API_KEY |
(не задано — открытый маршрут) | open-sse/services/selfHostedEntry.ts |
Необязательный общий API-ключ для унифицированной самоуправляемой точки входа (заготовка D5, зарезервированная для системы квот для каждого ключа). Если он задан, запросы должны включать Authorization: Bearer <key>. Если не задан, маршрут открыт, что соответствует существующему шаблону локального самоуправляемого провайдера (развёртывание в loopback-интерфейсе/доверенной сети). |
OMNIROUTE_SELF_HOSTED_STRATEGY |
(не задано) | open-sse/services/routingStrategies.ts |
Встроенный YAML-документ strategy: для механизма детерминированной маршрутизации (M2/RIC-740, D3): чёрный/белый список, предохранитель с периодом восстановления, приоритет по стоимости, учёт задержки, цепочка резервных вариантов. Переопределяет для каждого ключа встроенный блок strategy:, вложенный в OMNIROUTE_SELF_HOSTED_PROVIDERS. См. docs/routing/DETERMINISTIC_ROUTING.md. |
OMNIROUTE_SELF_HOSTED_STRATEGY_FILE |
(не задано) | open-sse/services/routingStrategies.ts |
Путь к YAML-файлу, содержащему тот же документ strategy:, что и OMNIROUTE_SELF_HOSTED_STRATEGY, для развёртываний, в которых файл предпочтительнее встроенной переменной окружения. |
OMNIROUTE_DISABLE_CONVERSATION_TRACKING |
(не задано) | open-sse/services/conversationTracker.ts |
Установите значение 1, чтобы прекратить сбор истории разговоров. resolveConversationId() возвращает неотслеживаемый результат до чтения SQLite или анализа истории сообщений; это также распространяется на идентификаторы сеансов, предоставленные клиентом. Обработка сеансов маршрутизации остаётся без изменений, а существующие записи не удаляются. Предназначено для развёртываний, в которых не используется представление разговоров на панели управления и требуется остановить рост таблицы ходов. |
7. URL-адреса и облачная синхронизация
Заголовок раздела «7. URL-адреса и облачная синхронизация»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
BASE_URL |
http://localhost:20128 |
src/lib/cloudSync.ts |
Серверный URL-адрес, по которому внутренние задания синхронизации вызывают /api/sync/cloud. Оставляйте здесь адрес обратной петли или контейнера, даже если приложение доступно через публичный прокси-сервер. |
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 |
Общий секрет, используемый для проверки подписи HMAC-SHA256 ответов Cloud Sync. |
OMNIROUTE_CLOUD_SYNC_SECRETS |
false |
src/lib/cloudSync.ts |
Установите значение true, чтобы разрешить конечной точке Cloud Sync перезаписывать локальные учётные данные. Значение по умолчанию — false. |
OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE |
false |
src/lib/cloudSync.ts |
Установите значение true, чтобы отклонять неподписанный ответ Cloud Sync, если локальный секрет не настроен (#13679). Присутствующая подпись проверяется всегда — и всегда отклоняется, если OMNIROUTE_CLOUD_SYNC_SECRET не задан, — независимо от этого флага. В v3.9 значение по умолчанию изменится на обязательную проверку. |
OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP |
false |
src/app/api/providers/zed/import/route.ts |
Установите значение true, чтобы вернуться к одноступенчатому поведению «импортировать всё» из v3.8.5 без подтверждения пользователя. |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
OAuth, панель управления, синхронизация | Публичный URL-адрес для OAuth redirect_uri, ссылок панели управления и создаваемых публичных URL-адресов. Укажите здесь стабильный публичный URL-адрес, если обратные вызовы OAuth или создаваемые ссылки для браузера должны использовать канонический хост обратного прокси-сервера. |
NEXT_PUBLIC_CLOUD_URL |
(пусто) | Клиентская часть | Клиентская копия CLOUD_URL. |
NEXT_PUBLIC_APP_URL |
(не задано) | src/shared/services/cloudSyncScheduler.ts |
Устаревший резервный вариант для NEXT_PUBLIC_BASE_URL. |
NEXT_PUBLIC_PORT |
(не задано — используется PORT) |
src/shared/hooks/useDisplayBaseUrl.ts |
Резервный порт на стороне клиента для отображаемых URL, когда источник неизвестен (SSR/тесты); считывается перед PORT. |
OMNIROUTE_PUBLIC_BASE_URL |
(не задано) | Средство определения публичного источника, URL изображений | Имеющий наивысший приоритет доступный браузеру источник OmniRoute, используемый для создания публичных URL и проверки источника браузера вне панели управления. Задайте его, если OpenWebUI или другой ретранслятор обращается к OmniRoute по внутреннему URL, но браузер пользователя должен получать созданные медиафайлы через локальную сеть, туннель или публичный источник. Не добавляйте /v1. |
OMNIROUTE_PROVIDER_MANIFEST_URL |
(не задано) | open-sse/config/providerPluginManifestUrl.ts |
Абсолютный URL манифеста плагина провайдера, предоставляемый клиентам sidecar. Если значение не задано, OmniRoute формирует /api/v1/provider-plugin-manifest на основе источника запроса или HOST/PORT. |
OMNIROUTE_PUBLIC_PROTOCOL |
http |
open-sse/config/providerPluginManifestUrl.ts |
Протокол, используемый при формировании URL манифеста плагина провайдера на основе HOST/PORT без источника запроса. Установите значение https, если используется публичный прокси-сервер с завершением TLS и явное значение OMNIROUTE_PROVIDER_MANIFEST_URL не задано. |
OMNIROUTE_TRUST_PROXY |
(не задано) | src/server/origin/publicOrigin.ts |
Необязательный режим доверия к переадресованным заголовкам публичного источника. Не задано = не доверять Forwarded / X-Forwarded-* при принятии решений безопасности. true / loopback разрешает доверять переадресованным хосту/протоколу только от loopback-прокси с токеном. private / lan также разрешает доверять прокси-узлам в частной локальной сети. В рабочей среде предпочтительно явно задавать NEXT_PUBLIC_BASE_URL. |
KIE_CALLBACK_URL |
(не задано) | open-sse/utils/kieTask.ts |
Публичный URL обратного вызова для асинхронных заданий kie.ai. Переопределение с наивысшим приоритетом, применяемое перед 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 |
Конечная точка получения квоты CrofAI, используемая страницей «Использование». Переопределите для ретрансляторов / тестовых фикстур. |
OMNIROUTE_OPENCODE_QUOTA_URL |
https://opencode.ai/zen/go/v1/usage |
open-sse/services/opencodeQuotaFetcher.ts |
Официальная конечная точка использования OpenCode Go с аутентификацией по ключу API, используемая страницей «Использование». Переопределите для ретрансляторов / тестовых фикстур. |
OPENCODE_SYNTHESIZE_CLI_HEADERS |
true |
open-sse/executors/opencode.ts |
Формирует заголовки идентификации OpenCode CLI (User-Agent, x-opencode-client/project, UUID запроса/сеанса) в отправляемых opencode-go/zen запросах, если клиент их не передал, чтобы Cloudflare принимал исходящий трафик с VPS (#6210/#5997). Включено по умолчанию начиная с #10571; для отключения используйте false/0/no/off. |
OPENCODE_USER_AGENT |
opencode/1.18.31 |
open-sse/utils/opencodeHeaders.ts |
Значение User-Agent по умолчанию, используемое, когда включён OPENCODE_SYNTHESIZE_CLI_HEADERS и переопределение <PROVIDER>_USER_AGENT для конкретного провайдера не задано. Применяется только к исполнителям opencode. Если исходный сервер блокирует запрос без ключа, настроенное значение, не содержащее opencode/<version >= 1.17>, заменяется этим значением по умолчанию, а запрос не отклоняется. |
OPENCODE_CLIENT |
desktop |
open-sse/executors/opencode.ts |
Значение синтезированного заголовка x-opencode-client, когда включён OPENCODE_SYNTHESIZE_CLI_HEADERS. |
OPENCODE_PROJECT |
global |
open-sse/executors/opencode.ts |
Значение синтезированного заголовка x-opencode-project, когда включён OPENCODE_SYNTHESIZE_CLI_HEADERS. |
OPENCODE_FREE_TIER_REQUEST_CONTRACT |
(не задано) | open-sse/executors/opencodeFreeTierContract.ts |
Установите значение off, чтобы прекратить корректировку тела запросов OpenCode без ключа (флага потоковой передачи и списка инструментов). Заголовки по-прежнему применяются. Значение считывается для каждого запроса, поэтому изменение вступает в силу немедленно. |
OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS |
(не задано) | open-sse/executors/opencodeFreeTierContract.ts |
Разделённые запятыми имена инструментов, объявляемых в запросе OpenCode без ключа, если в нём нет инструментов и для этой модели ещё ничего не наблюдалось. Пустое значение приводит к использованию одного фиктивного инструмента, который модели предписывается не вызывать. Не более 32 записей, [A-Za-z_][A-Za-z0-9_-]{0,63}; недопустимые записи игнорируются. |
OMNIROUTE_OLLAMA_CLOUD_USAGE_URL |
https://ollama.com/settings |
open-sse/services/usage.ts |
URL настроек Ollama Cloud, используемый для получения данных о квоте. Переопределите для ретрансляторов / тестовых фикстур. |
OLLAMA_USAGE_COOKIE |
(не задано) | open-sse/services/usage.ts |
Cookie Ollama Cloud __Secure-session, используемый для получения данных о квоте со страницы настроек. Конфиденциальные данные; если настроено несколько учётных записей, предпочтительно использовать поле для конкретного подключения на панели управления. |
OLLAMA_CLOUD_USAGE_COOKIE |
(не задано) | open-sse/services/usage.ts |
Альтернативная переменная окружения для cookie Ollama Cloud __Secure-session. Конфиденциальные данные; если настроено несколько учётных записей, предпочтительно использовать поле для конкретного подключения на панели управления. |
OMNIROUTE_OLLAMA_USAGE_COOKIE |
(не задано) | open-sse/services/usage.ts |
Альтернативная переменная окружения для cookie 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) задайте для
NEXT_PUBLIC_BASE_URLстабильный публичный URL (например,https://omniroute.example.com), если обратные вызовы OAuth или генерируемые публичные ссылки должны использовать это имя хоста. Без этого обратные вызовы OAuth могут завершаться ошибкой, поскольку redirect_uri не будет совпадать, а сгенерированные публичные ссылки могут указывать на внутренний источник контейнера.Оставьте
BASE_URLв качестве внутреннего URL обратной петли/контейнера для межсерверных задач. Не используйте браузерныйOriginили публичное имя хоста для внутренних самозапросов, содержащих учётные данные.Для аутентифицированных операций записи из панели управления статический публичный базовый URL не требуется: панель управления отправляет небезопасные запросы в пределах одного источника с CSRF-токеном, привязанным к сеансу. OmniRoute по-прежнему централизованно проверяет публичный источник для браузерных интеграций вне панели управления: сначала доверенными считаются явно заданные переменные окружения публичного URL; необработанные заголовки
Forwarded/X-Forwarded-*игнорируются, если только не включена переменнаяOMNIROUTE_TRUST_PROXYи непосредственный прокси-узел не помечен токеном как доверенный. Не используйте настройки CORS для исправления запросов панели управления в пределах одного источника; CORS предназначен только для браузерных клиентов, работающих из других источников.
8. Исходящий прокси
Заголовок раздела «8. Исходящий прокси»Направляйте вызовы к вышестоящим поставщикам LLM через прокси HTTP или SOCKS5 для управления исходящим трафиком, геомаршрутизации или маскировки IP-адреса.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
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; переопределение из БД панели управления имеет приоритет). Пулы прокси и ротация для отдельных аккаунтов временно прекращают повторно назначать прокси, который только что завершился ошибкой (отклонённая проверка 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 |
Закрепляет целевой URL для определения внешнего IP-адреса, используемый при проверке исходящего прокси-трафика. Если переменная не задана, проверка сначала обращается к 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-прокси. Долгоживущим потокам SSE, таким как Codex /v1/responses, требуется более одного соединения, когда несколько запросов используют один и тот же прокси на уровне аккаунта. Значения выше 256 ограничиваются этим пределом. |
SOCKS_HANDSHAKE_TIMEOUT_MS |
10000 |
open-sse/utils/socksConnectorWithFamily.ts |
Тайм-аут установления соединения (рукопожатия) SOCKS5 в мс. Увеличьте его, если один хост резидентного шлюза испытывает высокую параллельную нагрузку (например, 100 одновременных запросов): в перегруженном пуле реальное рукопожатие может длиться более 10 с, даже если прокси доступен, что в противном случае приводит к ложной ошибке [Proxy Fast-Fail] Proxy unreachable. Максимальное значение — 120000. |
PROXY_FAIL_OPEN |
false |
src/sse/handlers/chatHelpers.ts |
Если задано false (по умолчанию), запрос, назначенный прокси которого не удаётся разрешить, отклоняется (fail-closed) вместо переключения на прямое соединение — это предотвращает утечки реального IP-адреса. Задайте true, чтобы восстановить прежний резервный режим DIRECT. |
ENABLE_TLS_FINGERPRINT |
false |
open-sse/executors |
Подмена TLS-отпечатка с помощью wreq-js (имитирует 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. |
Сценарии
Заголовок раздела «Сценарии»| Сценарий | Конфигурация |
|---|---|
| SOCKS5 через SSH-туннель | 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=true — требуется wreq-js (входит в комплект) |
| Контролируемый исходящий трафик / без прямого доступа | Оставьте PROXY_FAIL_OPEN=false (по умолчанию). Если прокси недоступен, запросы завершаются с ошибкой вместо утечки через прямое подключение. |
| Устаревший режим / разработка — разрешить прямое резервное подключение | PROXY_FAIL_OPEN=true. Восстанавливает поведение до усиления защиты: если не удаётся определить прокси, используется прямое подключение. |
Примечание (обход проверки NVIDIA — #3226): Конечная точка проверки API-ключа NVIDIA зависает при маршрутизации через глобальный прокси или модифицированный TLS-вызов fetch (диспетчер undici → 504).
src/lib/providers/validation.ts::directHttpsRequest()намеренно обходит модификацию прокси для этого единственного вызова проверки с помощьюsafeOutboundFetch({ bypassProxyPatch: true }). Это документированное и ограниченное исключение — оно не влияет на исходящий трафик чата или статистики использования. Область действия обхода закреплена тестомtests/unit/proxy-bypass-scope-guard-3226.test.ts.
9. Интеграция инструментов командной строки
Заголовок раздела «9. Интеграция инструментов командной строки»Управляет тем, как OmniRoute обнаруживает и запускает вспомогательные процессы командной строки (Claude Code, Codex и т. д.).
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
CLI_MODE |
auto |
src/shared/services/cliRuntime.ts |
auto = искать в системной переменной PATH; manual = использовать только явно указанные пути. |
CLI_EXTRA_PATHS |
(не задано) | src/shared/services/cliRuntime.ts |
Дополнительные записи PATH для поиска исполняемых файлов CLI (разделённые двоеточиями). |
CLI_CONFIG_HOME |
(не задано) | src/shared/services/cliRuntime.ts |
Переопределяет домашний каталог для чтения конфигураций CLI (~/.claude, ~/.codex). Путь должен быть абсолютным и находиться внутри домашнего каталога процесса — либо, в контейнере, быть путём, подключённым через bind mount (именно так работает /host-home). Во всех остальных случаях используется домашний каталог. |
CLI_ALLOW_CONFIG_WRITES |
true |
src/shared/services/cliRuntime.ts |
Разрешает OmniRoute записывать файлы конфигурации CLI (обновление токена, данные сеанса). Установите значение false, чтобы каждая попытка записи конфигурации CLI завершалась явной ошибкой «запись отключена». |
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, а при неудаче — 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 профили аутентификации); соответствует собственному значению STATE_DIR по умолчанию в 5dive. |
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 находит исполняемый файл gemini через системную переменную PATH. |
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). |
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. |
DEVIN_DESKTOP_VERSION |
3.6.27 |
open-sse/executors/devin-desktop.ts |
Значение ide_version для Devin Desktop. Переопределения должны иметь формат x.y.z; при недопустимых значениях используется проверенное значение по умолчанию. |
DEVIN_DESKTOP_EXTENSION_VERSION |
1.48.2 |
open-sse/executors/devin-desktop.ts |
Версия встроенного расширения Codeium/языкового сервера (extension_version), отличная от ide_version Desktop. Переопределения должны иметь формат x.y.z; при недопустимых значениях используется встроенное значение по умолчанию. |
CLI_DEVIN_AGENTIC_BIN |
devin |
open-sse/executors/devin-cli-agentic.ts |
Переопределение Devin CLI только для агентного моста. Исполнитель принимает только локальный вышестоящий ACP-процесс через stdio. |
DEVIN_AGENTIC_HOME |
(обязательно) | open-sse/executors/devin-cli-agentic.ts |
Абсолютный путь к изолированному домашнему каталогу агентного подпроцесса Devin; допустимые пути моста — /home/bridge и локальные для задачи пути .sandbox (в Windows — C:\...\.sandbox\...). |
DEVIN_AGENTIC_ACP_TIMEOUT_MS |
120000 |
open-sse/executors/devin-cli-agentic.ts |
Максимальная продолжительность одного хода Devin ACP, после которой мост завершает дочерний процесс и возвращает явное сообщение о тайм-ауте. |
DEVIN_BRIDGE_MODEL |
devin-cli-agentic/swe-1-7 |
docker/devin-bridge/compose.yml |
Основной псевдоним модели Claude Code для изолированного моста. Рабочая тестовая среда заменяет пример моделью, возвращаемой текущей учётной записью Devin. |
DEVIN_BRIDGE_SONNET_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Псевдоним изолированного моста, используемый, когда Claude Code запрашивает модель Sonnet по умолчанию. |
DEVIN_BRIDGE_OPUS_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Псевдоним изолированного моста, используемый, когда Claude Code запрашивает модель Opus по умолчанию. |
DEVIN_BRIDGE_HAIKU_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Псевдоним изолированного моста, используемый, когда Claude Code запрашивает модель Haiku по умолчанию. |
DEVIN_BRIDGE_SUBAGENT_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Псевдоним изолированного моста, используемый для субагентов Claude Code. |
DEVIN_SEAT_API_URL |
https://server.codeium.com |
open-sse/services/usage/devinCli.ts |
Необязательное переопределение API управления лицензиями Codeium, используемого для квоты Devin CLI (GetUserStatus). |
AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Переопределение абсолютного пути к исполняемому файлу Augment (Auggie) CLI, используемому локальным провайдером auggie. Если не задано, используется CLI_AUGGIE_BIN, а затем выполняется поиск в PATH. |
CLI_AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Альтернативное переопределение пути к исполняемому файлу Augment (Auggie) CLI (проверяется после AUGGIE_BIN). |
ZCODE_BIN |
zcode |
open-sse/executors/zcode.ts |
Исполняемый файл, используемый stdio-клиентом локального провайдера zcode. Если не задан, используется zcode из PATH. |
ZCODE_ARGS |
— | open-sse/executors/zcode.ts |
JSON-массив (≤16 строк) дополнительных аргументов, передаваемых исполняемому файлу zcode при запуске через cliTools. |
ZCODE_CWD |
process.cwd() |
open-sse/executors/zcode.ts |
Рабочий каталог подпроцесса сервера приложений ZCode. |
ZCODE_PROVIDER_ID |
builtin:zai-coding-plan |
open-sse/executors/zcode.ts |
Переопределение идентификатора провайдера, отправляемого серверу приложений. |
ZCODE_SERVER_RUNTIME_ROOT |
~/.zcode/server |
open-sse/executors/zcode.ts |
Корневой каталог среды выполнения сервера приложений ZCode (в котором находятся встроенные node и zcode-server.cjs). |
ZCODE_SERVER_NODE |
<runtimeRoot>/node |
open-sse/executors/zcode.ts |
Исполняемый файл Node, используемый для запуска сервера приложений ZCode. |
ZCODE_SERVER_ENTRY |
<runtimeRoot>/zcode-server.cjs |
open-sse/executors/zcode.ts |
Входной скрипт сервера приложений, используемый для запуска сервера ZCode. |
ZCODE_STARTUP_TIMEOUT_MS |
10000 |
open-sse/executors/zcode.ts |
Тайм-аут запуска (мс), после которого запуск сервера приложений ZCode считается неудачным. |
ZCODE_RPC_TIMEOUT_MS |
30000 |
open-sse/executors/zcode.ts |
Тайм-аут RPC для каждого запроса (мс) к серверу приложений ZCode. |
ZCODE_TURN_TIMEOUT_MS |
120000 |
open-sse/executors/zcode.ts |
Максимальная длительность (мс) одного цикла ZCode, после которой супервизор прерывает его по тайм-ауту. |
ZCODE_POLL_INTERVAL_MS |
250 |
open-sse/executors/zcode.ts |
Интервал опроса (мс) для проверки завершения цикла ZCode. |
HERMES_HOME |
~/.hermes |
src/lib/cli-helper/config-generator/hermesHome.ts |
Домашний каталог Hermes Agent, в котором OmniRoute читает и записывает конфигурацию Hermes CLI. Соответствует переменной среды, задаваемой установщиком Hermes PowerShell в Windows (%LOCALAPPDATA%\hermes). |
Автоматическая синхронизация профилей CLI
Заголовок раздела «Автоматическая синхронизация профилей CLI»Эти флаги функций включаются явно и по умолчанию отключены. Их также можно переключать на панели управления CLI Code.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
После синхронизации моделей провайдера автоматически перезаписывает файлы профилей ~/.codex/*.config.toml из актуального каталога. Требуется CLI_ALLOW_CONFIG_WRITES; активная конфигурация Codex или конфигурация Codex по умолчанию, данные аутентификации, настройки Codex-lb и выбор провайдера никогда не изменяются. |
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
После синхронизации моделей провайдера автоматически перезаписывает файлы профилей Claude Code ~/.claude/profiles/<name>/settings.json из актуального каталога. Требуется CLI_ALLOW_CONFIG_WRITES; активная конфигурация Claude или конфигурация Claude по умолчанию, данные аутентификации и выбор провайдера никогда не изменяются. |
Пример Docker
Заголовок раздела «Пример Docker»# Подключите исполняемые файлы хоста к контейнеру и укажите OmniRoute их расположение:CLI_EXTRA_PATHS=/host-cli/binCLI_CONFIG_HOME=/host-homeCLI_ALLOW_CONFIG_WRITES=trueCLI_CLAUDE_BIN=/host-cli/bin/claudeCLI_CONFIG_HOME действует только тогда, когда путь действительно смонтирован с
хоста через bind mount — используйте его вместе с монтированием наподобие ~/.codex:/host-home/.codex:rw (см.
профиль host в docker-compose.yml). Путь, который не находится ни в домашнем каталоге
пользователя контейнера, ни в 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)
Заголовок раздела «Вспомогательные средства двоичного файла CLI (omniroute)»Эти переменные настраивают поведение самого двоичного файла CLI omniroute (а не описанное
выше обнаружение sidecar-контейнера).
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_LANG |
(системное) | bin/cli/i18n.mjs |
Принудительно задать язык вывода CLI. Локаль BCP-47 (например, en, pt-BR). Переопределяет системные переменные среды локали (LC_ALL, LC_MESSAGES). |
OMNIROUTE_SHOW_LOG |
(не задано) | bin/cli/runtime/processSupervisor.mjs |
Установите 1, чтобы перенаправлять stdout/stderr сервера в терминал в контролируемом режиме. Эквивалентно флагу --log команды omniroute serve. |
OMNIROUTE_CLI_TOKEN |
(не задано) | bin/cli/api.mjs |
Токен машинной аутентификации, передаваемый в заголовке x-omniroute-cli-token. Автоматически создаётся в задаче 8.12. |
OMNIROUTE_HTTP_TIMEOUT_MS |
30000 |
bin/cli/api.mjs |
Тайм-аут HTTP для каждой попытки (мс) при запросах CLI → сервер. |
OMNIROUTE_READY_TIMEOUT_MS |
60000 |
bin/cli/utils/pid.mjs |
Максимальное время (мс), в течение которого CLI ожидает ответа от конечной точки проверки работоспособности сервера, прежде чем вывести предупреждение о тайм-ауте. Полезно при медленном холодном запуске (например, в Windows). Также можно задать с помощью --ready-timeout. |
OMNIROUTE_VERBOSE |
0 |
bin/cli/api.mjs |
Установите 1, чтобы во время выполнения команд CLI выводить в stderr диагностические сведения о повторных попытках и задержках между ними. |
OMNIROUTE_PLUGIN_PATH |
(не задано) | bin/cli/plugins.mjs |
Пользовательский каталог для обнаружения плагинов CLI (пакетов omniroute-cmd-*). Если не задан, по умолчанию используется ~/.omniroute/plugins/. Только для CLI — эта переменная никогда не передаётся серверному сканеру плагинов, путь для которого задаётся через OMNIROUTE_PLUGINS_DIR (раздел 2). |
10. Интеграции внутренних агентов и MCP
Заголовок раздела «10. Интеграции внутренних агентов и MCP»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_BASE_URL |
автоопределение | open-sse/mcp-server/server.ts |
Явный URL-адрес, по которому инструменты MCP/A2A обращаются к OmniRoute. Переопределяет автоопределение localhost. |
OMNIROUTE_API_KEY |
(не задано) | Модули MCP/A2A | API-ключ для вызовов внутреннего инструмента MCP и навыков A2A. |
OMNIROUTE_API_KEY_ID |
(не задано) | open-sse/mcp-server/audit.ts |
Идентификатор ключа для атрибуции записей журнала аудита MCP. |
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. Установите 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. Ограничивается внутренним максимумом; если значение не задано или недопустимо, используется встроенное значение по умолчанию. |
OMNIROUTE_CONTEXT |
(активный контекст) | bin/cli/program.mjs, bin/cli/api.mjs |
Контекст/профиль удалённого режима CLI для команд omniroute; переопределяет активный контекст в локальном хранилище контекстов. Эквивалентно --context <name>. |
OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED |
0 |
bin/cli/contexts.mjs |
Отключает необязательный бэкенд системной связки ключей keytar для учётных данных контекста CLI. Когда параметр включён, учётные данные остаются в config.json с режимом 0600, а CLI однократно выводит предупреждение о переходе на резервный механизм; предназначено для намеренного использования без графического интерфейса или в контейнере. |
OMNIROUTE_MCP_ENFORCE_SCOPES |
false |
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-сервера (состояние, отказоустойчивость, комбинации, квота, использование). |
OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS |
60000 |
open-sse/mcp-server/fetchTimeout.ts |
Лимит времени ожидания (мс) для переходов MCP, ожидающих ответа от провайдера (route_request, web_search, web_fetch). |
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 при массовой синхронизации; OAuth-подключения опрашиваются по одному, чтобы избежать всплеска нагрузки на вышестоящий сервис. Значение 0 отключает интервал (запросы выполняются параллельно). |
OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS |
250 |
open-sse/services/quotaFetchThrottle.ts |
Минимальный интервал (мс) между последовательными запросами квот к вышестоящему сервису на пути предварительной проверки/мониторинга для каждого запроса; распределяет параллельные сетевые вызовы во времени, чтобы множество учётных записей с одного IP-адреса не создавали всплеск нагрузки на вышестоящий сервис. Используется в механизмах получения квот Codex (/wham/usage), DeepSeek, Bailian (в обоих местах получения), OpenCode и Crof (#6009, #6911). Общий путь диспетчеризации usage.ts::getUsageForProvider (github/glm/minimax/nanogpt/xai/etc.) пока не охвачен — отслеживается отдельно. Попадания в кэш не затрагиваются. 0 отключает функцию; значение ограничено диапазоном 0..5000. |
PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS |
5000 |
src/lib/usage/providerLimits.ts |
Задержка (мс) перед обновлением лимитов провайдера после фактического использования, чтобы API квот вышестоящего сервиса успел зарегистрировать потребление. |
OMNIROUTE_LOGIN_BROWSER_PATH |
автоопределение | open-sse/services/adobeFireflyBrowserLogin.ts |
Абсолютный путь к системному исполняемому файлу Chrome или Edge, используемому для интерактивного входа в Adobe Firefly и фонового продления сеанса. |
ADOBE_FIREFLY_BROWSER_REFRESH |
включено | open-sse/services/adobeFireflySession.ts |
Поддерживает актуальность IMS и состояния браузерных рисков с помощью сеансов Chrome CDP, привязанных к учётной записи. Установите значение 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 |
Периодичность проверки сброса бюджета (мс). Минимальное значение — 10000. |
OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS |
60000 |
src/lib/quota/connectionRecovery.ts |
Интервал упреждающего восстановления подключений после периода ожидания (мс): повторно проверяет подключения, у которых истёк временный срок 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 |
Интервал очистки кеша рассуждений (мс). Минимум — 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 |
Интервал опроса (мс) для горячей перезагрузки конфигурации. Значение меньше 1000 отклоняется. |
OMNIROUTE_DISABLE_REDIS_AUTH_CACHE |
(включено) | src/lib/db/apiKeys.ts |
Установите 1, чтобы обойти кеш аутентификации API-ключей на базе Redis (принудительно выполняются чтения из БД). |
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, когда lite.maxToolLength не задано. Диапазон: 256–1000000. Настройка панели управления имеет приоритет над этой переменной окружения. |
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, чтобы хранить блоки только в памяти. Блоки размером более 512 КБ и облачные среды выполнения в любом случае используют только память. |
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 |
Устанавливается в 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) для автоматического обнаружения и импорта локального входа. |
Мост OAuth CLI (внутренний)
Заголовок раздела «Мост OAuth CLI (внутренний)»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_SERVER |
автоопределение | src/lib/oauth/config/index.ts |
URL сервера для моста аутентификации CLI↔OmniRoute. |
OMNIROUTE_TOKEN |
(не задано) | src/lib/oauth/config/index.ts |
Токен аутентификации для моста CLI. |
OMNIROUTE_USER_ID |
cli |
src/lib/oauth/config/index.ts |
Идентификатор пользователя для сеансов моста CLI. |
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
Заголовок раздела «11. Учетные данные провайдеров OAuth»Встроенные учетные данные для разработки на localhost. Для удаленного развертывания зарегистрируйте свои собственные приложения в консоли разработчика каждого провайдера.
| Переменная | Провайдер | Примечания |
|---|---|---|
CLAUDE_OAUTH_CLIENT_ID |
Claude Code (Anthropic) | Публичный клиент — секрет не требуется. |
CLAUDE_CODE_REDIRECT_URI |
Claude Code | Переопределение redirect 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) | Публичный клиент. |
MUSE_CODE_OAUTH_CLIENT_ID |
Muse Code (Meta) | Необязательное переопределение публичного client id для Muse CLI device-flow. Оставьте пустым, чтобы использовать встроенный публичный клиент. |
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 | Необязательное переопределение OAuth client id для GitHub Enterprise Copilot. Если не задано, используется значение по умолчанию из GITHUB_OAUTH_CLIENT_ID. |
COPILOT_INTEGRATION_ID |
GitHub Copilot | Необязательное переопределение ID интеграции клиента GitHub Copilot, отправляемого в заголовках Copilot-Integration-Id и Editor-Plugin-Version. По умолчанию: copilot-developer-cli. |
WINDSURF_API_KEY |
Windsurf / Devin (v3.8) | Резервный API-ключ, используемый open-sse/executors/devin-cli.ts, когда учетные данные для конкретного соединения недоступны. Необязательно. |
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) | OAuth client ID для GitLab Duo. Зарегистрируйте приложение на https://gitlab.com/-/profile/applications с redirect 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) | OAuth client secret для GitLab Duo. Необязательно — поток PKCE не требует секрета. Резервный вариант: GITLAB_OAUTH_CLIENT_SECRET. |
GITLAB_DUO_BASE_URL |
GitLab Duo (v3.8) | Переопределение базового URL GitLab (для self-hosted GitLab). По умолчанию: https://gitlab.com. Резервный вариант: GITLAB_BASE_URL. |
GITLAB_BASE_URL |
GitLab Duo (v3.8) | Устаревший запасной вариант для GITLAB_DUO_BASE_URL. Используется, когда вариант _DUO_ не установлен. |
GITLAB_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | Устаревший запасной вариант для GITLAB_DUO_OAUTH_CLIENT_ID, используемый src/lib/oauth/constants/oauth.ts. |
GITLAB_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | Устаревший запасной вариант для GITLAB_DUO_OAUTH_CLIENT_SECRET, используемый src/lib/oauth/constants/oauth.ts. |
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 | ID рабочего пространства для Qoder CLI. |
OMNIROUTE_QODER_WORKSPACE |
Qoder | Псевдоним для QODER_CLI_WORKSPACE. |
QODER_CLI_CONFIG_DIR |
Qoder | Переопределяет каталог конфигурации Qoder CLI (изолированная сессия PAT, избегает перезаписи входа через браузер). |
BLACKBOX_WEB_VALIDATED_TOKEN |
Blackbox Web | Токен tk для фронтенда, отправляемый как validated на /api/chat. Требуется, когда Blackbox принудительно применяет сопоставление токенов; в противном случае OmniRoute использует случайный UUID. См. проблему #2252. |
VISION_BRIDGE_BASE_URL |
Защитный барьер Vision Bridge | Базовый URL, совместимый с OpenAI, для вызовов vision-bridge, не относящихся к Anthropic. По умолчанию используется устаревшая переменная среды URL OpenAI или api.openai.com. Указывает на самозацикливание OmniRoute /v1 или любую конечную точку, совместимую с OpenAI (Gemini OpenAI-compat, OpenRouter). Проблема #2232. Когда URL является собственным /v1 OmniRoute, подзапрос описания отправляет x-omniroute-admission-bypass: internal и аутентифицируется с разрешенными учетными данными самозацикливания (сентинел sk_omniroute в локальном режиме или OMNIROUTE_API_KEY / ROUTER_API_KEY — #1350), чтобы развертывания с REQUIRE_API_KEY=true работали. |
VISION_BRIDGE_API_KEY |
Защитный барьер Vision Bridge | Ключ API для указанного выше URL. Переопределяет переменные среды OpenAI / Google для каждого провайдера для вызовов vision-bridge, не относящихся к Anthropic. Модели Anthropic сохраняют свой выделенный путь ключа Anthropic. Проблема #2232. |
OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS |
Защитный барьер Vision Bridge | Как долго кэшируется результат маршрутизации “нет подходящего кандидата”, в мс (по умолчанию 30000). Неверные или отрицательные значения возвращаются к значению по умолчанию; 0 отключает отрицательный кэш. Источник: src/lib/guardrails/visionBridgeRouter.ts. |
[!WARNING]
- Перейдите в Google Cloud Console → Credentials
- Создайте Client ID OAuth 2.0 (тип: “Веб-приложение”)
- Добавьте URL вашего сервера как Authorized redirect URI
- Замените значения учетных данных в
.env.
12. Переопределение User-Agent провайдеров
Заголовок раздела «12. Переопределение User-Agent провайдеров»Переопределяет заголовок User-Agent, отправляемый каждому вышестоящему провайдеру. Значение динамически определяется во время выполнения базовым классом исполнителя:
process.env[`${PROVIDER_ID}_USER_AGENT`]Источник:
open-sse/executors/base.ts→buildHeaders()
| Переменная | Значение по умолчанию | Когда обновлять |
| –––––––––––––––– | ——————————————— | ———————————————————————————————— | —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— |
| CLAUDE_USER_AGENT | claude-cli/2.1.258 (external, cli) | Когда Anthropic выпускает новую версию CLI |
| CLAUDE_DISABLE_TOOL_NAME_CLOAK | false | executors/base.ts + executors/cliproxyapi.ts | Установите значение 1/true, чтобы передавать Anthropic имена инструментов сторонней среды без изменений по обоим путям, ведущим к Anthropic (нативный OAuth и CLIProxyAPI). По умолчанию исполнитель детерминированно назначает псевдонимы именам инструментов, не относящихся к Claude Code (используя каноническое сопоставление Claude Code, если оно существует, иначе PascalCase), и восстанавливает их в ответе с помощью _toolNameMap, чтобы среды с инструментами в snake_case не отклонялись как идентифицированные сторонние клиенты. Только для отладки. |
| CODEX_USER_AGENT | codex-cli/0.155.0 (Windows 10.0.26200; x64) | Когда OpenAI обновляет Codex CLI |
| CODEX_CLIENT_VERSION | 0.155.0 | Переопределяет версию клиента Codex независимо от полной строки UA |
| CLAUDE_CODE_CLIENT_VERSION | 2.1.258 | Переопределяет заявленную версию Claude Code независимо от CLAUDE_USER_AGENT. Anthropic ограничивает доступ к некоторым моделям на основе этого значения (#12417). |
| GITHUB_COPILOT_CLI_VERSION | 1.0.81-6 | Переопределяет заявленную версию Copilot CLI независимо от GITHUB_USER_AGENT |
| 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 | Переопределяет clientId (публичный идентификатор) для социального потока Kiro с кодом устройства |
| KIRO_VERIFY_FULL_CRC | false | Опционально: полная проверка CRC каждого кадра в потоке событий Kiro (для отладки поврежденных потоков) |
| QODER_USER_AGENT | Qoder-Cli | Когда обновляется Qoder CLI |
| CURSOR_USER_AGENT | Cursor/3.3 | Когда обновляется Cursor |
[!TIP] Переопределение User-Agent можно добавить для любого провайдера, используя шаблон
{PROVIDER_ID}_USER_AGENT. Исполнитель динамически формирует имя переменной среды.
13. Совместимость отпечатков CLI
Заголовок раздела «13. Совместимость отпечатков CLI»Когда эта функция включена, OmniRoute изменяет порядок HTTP-заголовков и полей тела JSON, чтобы они в точности соответствовали сигнатуре официальных инструментов CLI. Это снижает риск пометки учетной записи, сохраняя при этом ваш прокси-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 Coding CLI»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
KIMI_CLI_VERSION |
1.36.0 |
src/lib/oauth/providers/kimi-coding.ts |
Переопределяет версию Kimi CLI, отправляемую при вызовах OAuth/API. |
KIMI_CODING_DEVICE_ID |
(полученное значение) | src/lib/oauth/providers/kimi-coding.ts |
Переопределяет полученный идентификатор устройства Kimi в заголовках клиента. |
[!NOTE] Эта функция работает совместно с переопределениями User-Agent (§12). Система отпечатков управляет порядком заголовков и полей тела, а переопределения User-Agent — конкретной строкой UA. Обе функции можно включать независимо друг от друга.
14. Провайдеры с ключами API
Заголовок раздела «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] Статические записи
${PROVIDER}_API_KEYдля Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius и Qianfan были удалены в v3.8.0, поскольку среда выполнения больше их не считывает — эти провайдеры используют исключительно панель управления /data/provider-credentials.json/ зашифрованную БД. Путь миграции описан в разделе Аудит: удаленные / неиспользуемые переменные в конце этого документа.
[!TIP] Ключи, заданные через панель управления, хранятся в SQLite в зашифрованном виде и имеют приоритет над переменными окружения.
Jina: эмбеддинги
jina-ai/…, операции переранжирования, классификации и сегментации, а такжеjina-searchне используют для выставления счетов ключ окружения кластера, если существует подключениеjina-ai(или общее подключениеjina-reader) из панели управления —getProviderCredentialsсначала заполняет уже доступные данные.JINA_AI_API_KEY/JINA_API_KEYиспользуются только при отсутствии подходящего ключа из панели управления. В журналах вызовов резервный ключ из окружения отмечается как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используются только при отсутствии подходящего ключа из панели управления. В журналах вызовов резервный ключ из окружения отмечается какconnection_id=env:GEMINI_API_KEY. Нативный мультимодальный трафик используетx-goog-api-keyдля:embedContent/:batchEmbedContents— N элементов OpenAIinputпреобразуются в N векторов.
15. Настройки тайм-аутов
Заголовок раздела «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 |
Максимальное время отсутствия необработанных байтов от вышестоящего сервера до прерывания. Модели с расширенным рассуждением редко приостанавливаются более чем на 90 с. |
STREAM_ACTIVE_TIMEOUT_MS |
1260000 |
Максимальная общая продолжительность активного SSE-потока; не сбрасывается при получении байтов от вышестоящего сервера и не зависит от REQUEST_TIMEOUT_MS. Рассчитывается на основе наибольшего значения timeoutMs для каждой модели в реестре (1200000, Codex) с добавлением запаса 60000, поэтому модель, которой разрешено использовать весь свой временной бюджет, никогда не будет остановлена посреди ответа. Установите значение 0, чтобы отключить. |
OMNIROUTE_SSE_COMMENTS |
(отключено) | Определяет, может ли OmniRoute отправлять строки комментариев SSE : (например, сигнал активности : keepalive и завершающие метаданные x-omniroute-*). По умолчанию отключено (#10524), поскольку строгие OpenAI-совместимые клиенты вызывают JSON.parse для каждой строки SSE и аварийно завершаются при получении комментариев :; это не влияет на сигналы активности data:. Установите on/true/1/yes, чтобы снова включить. Используется в open-sse/utils/sseHeartbeat.ts. |
STREAM_READINESS_TIMEOUT_MS |
80000 |
Время ожидания первого SSE-события, не являющегося ping. Если задано значение 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 или настройки БД. |
OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS |
true |
Удаляет нестандартные SSE-события codex.* (например, codex.rate_limits), из-за которых responses.stream() в OpenAI SDK завершается с ошибкой 502. По умолчанию ВКЛЮЧЕНО (#11014). Установите 0/false/no/off, чтобы пересылать их. |
OMNIROUTE_CODEX_APPSERVER_WS |
(не задано) | Опциональный транспорт Codex app-server. Конечная точка WebSocket (ws:///wss://) локального вспомогательного процесса codex app-server. Если задана вместе с токеном, запросы Codex направляются вспомогательному процессу по JSON-RPC вместо HTTP Responses API. Также можно задать для отдельного подключения через providerSpecificData.codexAppServerUrl. Используется в open-sse/executors/codex/appServerConfig.ts. |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN |
(не задано) | Встроенный токен возможностей или bearer-токен, передаваемый 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 (30 с) |
Максимальное время ожидания начала ответа (мс) для каждой прямой попытки без прокси. При тайм-ауте выполняется одна повторная попытка через новый сокет; установите 0, чтобы отключить ограничение и сохранить прежнее поведение. |
OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS |
600000 (10 мин) |
Верхний предел (мс) для ПОВТОРНОЙ попытки через новый сокет после указанного выше тайм-аута начала ответа при попытке через сокет из пула (#13703). Применяется только в том случае, если вызывающая сторона уже установила собственный сигнал крайнего срока (каскад разрешённых параметров подключения/модели/провайдера/FETCH_TIMEOUT_MS); этот сигнал является фактическим ограничением и в предусмотренном сценарии срабатывает первым, поэтому данное значение служит щедрой страховочной границей, а не фиксированным пределом — без него повторная попытка использовала то же короткое окно OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS, что и попытка через сокет из пула, из-за чего исправные модели рассуждений с медленным TTFB получали ошибку 504. Значение никогда не может быть ниже указанного выше фиксированного минимума; если вызывающая сторона вообще не передаёт сигнал крайнего срока, для повторной попытки фиксированный минимум остаётся без изменений. |
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 |
Ограничивает время до получения первого байта именно тела ответа в транспорте отпечатков TLS wreq-js; один только TLS_CLIENT_TIMEOUT_MS не может обнаружить зависшее тело, поскольку завершается сразу после получения заголовков (#12656). При тайм-ауте чтение через wreq отменяется и выполняется переход на прямой/прокси-диспетчер; 0 отключает сторожевой таймер. |
RESPONSES_FIRST_BYTE_TIMEOUT_MS |
15000 |
Только для исполнителя OpenCode и только при включённом флаге функции OPENCODE_RESPONSES_STALL_ROTATION (по умолчанию отключён): ограничивает ожидание первого байта тела потокового ответа Responses после получения его заголовков (#13484). Поток Responses открывается событием response.created, поэтому отсутствие данных по истечении этого интервала считается зависанием: учётная запись временно блокируется, а запрос один раз перенаправляется на следующую учётную запись; при повторном зависании происходит немедленный отказ. 0 отключает защиту даже при включённом флаге. |
OPENCODE_PARK_AND_RESUME |
false |
Только для исполнителя OpenCode: приостановить запрос с отправкой сигналов активности после повторяющихся временных ошибок 429 (или при наличии свежего маркера нагрузки на пул), а затем повторно выполнить один ограниченный этап максимум через 3 последовательные учётные записи вместо веерной отправки по всему пулу (#13924). По умолчанию отключено: каждая ошибка 429 приводит к переходу на следующую учётную запись точно так же, как и раньше. |
OPENCODE_POOL_STRAIN_MARKER_PATH |
(не задано) | Только для исполнителя OpenCode: переопределяет путь к маркеру нагрузки на пул, считываемому перед приостановкой ({since, reason, ttl_s}; по умолчанию /tmp/opencode-pool-strain.json, #13924). При наличии свежего маркера запрос приостанавливается без повторного подсчёта; если маркер отсутствует или устарел, используется счётчик всплесков. |
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 |
Резервное значение, используемое src/shared/utils/fetchTimeout.ts, когда FETCH_TIMEOUT_MS не задана. |
OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS |
8000 |
Тайм-аут (мс) для предустановок validationRead и modelsProbe в src/shared/network/safeOutboundFetch.ts. Увеличьте его для медленных конечных точек (Cerebras, Cloudflare AI, Groq), чтобы предотвратить постоянные переключения между состояниями active/error на панели мониторинга. Для недопустимых (<1000) или нечисловых значений используется резервное значение 8000 мс. |
OMNIROUTE_RELAY_FETCH_TIMEOUT_MS |
25000 |
Тайм-аут запроса через ретранслятор в open-sse/utils/proxyFetch.ts (#9158). Зависший ретранслятор должен завершиться с ошибкой до истечения тайм-аута клиента/агента (~30 с), чтобы вызывающая сторона получила ошибку ретранслятора, а не общую ошибку тайм-аута вышестоящего сервиса. Ограничен значением 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 для чата на основе веб-cookie с использованием браузера (browserPool.ts); укажите off, чтобы отключить. |
OBSCURA_BIN |
auto-detect |
Путь к исполняемому файлу obscura, используемому в качестве основного движка пулом браузеров и исполнителем Cloudflare Playground (open-sse/services/obscura.ts); если значение не задано, путь автоматически определяется из системной переменной PATH. |
OBSCURA_CDP_ENDPOINT |
(не задано) | Указывает на уже запущенный экземпляр Obscura (http://host:port) вместо запуска нового; модуль не управляет этим процессом (open-sse/services/obscura.ts). |
OBSCURA_PORT |
случайный свободный порт |
Явный порт для запускаемого obscura serve; если значение не задано, свободный порт выбирается автоматически (open-sse/services/obscura.ts). |
WEB_COOKIE_USE_BROWSER |
0 |
Переводит запрос чата на основе веб-cookie на путь с использованием браузера (browserBackedChat.ts); укажите 1, чтобы включить. |
KIMI_WEB_BASE_URL |
https://www.kimi.ai |
Базовый URL для исполнителя Kimi Web (международный Connect-RPC kimi.ai) (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 |
(определяется автоматически) | Путь к системному исполняемому файлу Chrome/Edge для интерактивного входа в Adobe Firefly через браузер (adobeFireflyBrowserLogin.ts); переопределяет автоматическое определение для каждой ОС. |
OMNIROUTE_STANDALONE_DIR |
.build/ — автономный вывод | Переопределение на этапе сборки каталога автономного вывода, используемого на этапе совместного размещения после сборки (scripts/build/colocate-standalone.mjs); относится к инструментам сборки, а не к среде выполнения. |
Попытки обращения к целевым ресурсам комбинации наследуют вычисленный тайм-аут запроса к вышестоящему сервису (FETCH_TIMEOUT_MS или
REQUEST_TIMEOUT_MS, если он задаёт значение по умолчанию для fetch). Задавайте targetTimeoutMs в комбинации,
значениях комбинации по умолчанию или переопределении провайдера только для ускорения перехода к резервному варианту; значения выше
текущего тайм-аута вышестоящего сервиса ограничиваются этим тайм-аутом.
comboTimeoutMs — это отдельный общий временной бюджет комбинации по настенным часам для всех резервных целевых ресурсов.
Оставьте его незаданным или равным 0, чтобы сохранить неограниченный перебор (при этом по-прежнему действует
жёстко заданное 10-минутное ограничение на зависание в comboPredicates.ts). Положительное значение заменяет эту
защитную меру для комбинации. Задавайте 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-провайдера. |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD |
12 |
open-sse/config/constants.ts |
Порог последовательных сбоев для провайдеров, использующих API-ключи. |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS |
30000 |
open-sse/config/constants.ts |
Период сброса (мс) автоматического выключателя провайдера, использующего API-ключ. |
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 |
Период сброса (мс) автоматического выключателя локального провайдера. |
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-провайдеров. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS |
300000 |
open-sse/config/constants.ts |
Автоматический выключатель уровня провайдера: период ожидания (мс) после достижения порога OAuth-провайдером. |
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 |
Максимальный множитель увеличения resetTimeout для OAuth-провайдера. |
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-ключом переходит в режим ожидания. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS |
1800000 |
open-sse/config/constants.ts |
Автоматический выключатель уровня провайдера: скользящее временное окно подсчёта сбоев (мс) для провайдеров с API-ключами. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS |
600000 |
open-sse/config/constants.ts |
Автоматический выключатель уровня провайдера: период ожидания (мс) после достижения порога провайдером с API-ключом. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD |
7 |
open-sse/config/constants.ts |
Провайдер с API-ключом переходит в состояние DEGRADED после такого количества сбоев. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER |
4 |
open-sse/config/constants.ts |
Максимальный множитель увеличения resetTimeout для провайдера с API-ключом. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT |
3 |
open-sse/config/constants.ts |
Для провайдера с API-ключом задержка увеличивается после такого количества циклов в открытом состоянии. |
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 |
Автоматический выключатель уровня провайдера: скользящее временное окно подсчёта сбоев (мс) для локальных провайдеров. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS |
60000 |
open-sse/config/constants.ts |
Автоматический выключатель уровня провайдера: период ожидания (мс) после достижения порога локальным провайдером. |
PIN_DROP_BACKOFF_LEVEL |
2 |
open-sse/services/combo.ts |
Глубина экспоненциальной задержки, при которой провайдер закрепления в кэше контекста считается длительно неработоспособным, а закрепление удаляется для переключения при отказе. |
PIN_DROP_GRACE_MS |
20000 |
open-sse/services/combo.ts |
Период защиты от частых переключений (мс), в течение которого кратковременные переходные периоды ожидания допускаются без удаления закрепления в кэше контекста. |
Сценарии
Заголовок раздела «Сценарии»| Сценарий | Конфигурация |
|---|---|
| Длительная генерация кода | 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. Логирование
Заголовок раздела «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 |
Максимальное количество строк в таблице SQLite call_logs перед очисткой. |
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. |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
Максимальное количество строк в таблице SQLite proxy_logs перед очисткой. |
PROXY_LOG_INCLUDE_IPS |
false |
Включать IP-адреса клиента/исходящего подключения и префиксы учётных записей в консольные журналы [ProxyEgress]. Записи журнала прокси-сервера в панели управления и базе данных сохраняют полные сведения. |
APP_LOG_ROTATION_CHECK_INTERVAL_MS |
60000 (1 мин) |
Частота повторной проверки размера активного файла журнала модулем src/lib/logRotation.ts. |
CHAT_LOG_TEXT_LIMIT |
65536 |
Максимальная длина строки, сохраняемой в артефактах журнала чата (по умолчанию 64 КБ). |
CHAT_LOG_ARRAY_TAIL_ITEMS |
128 |
Количество элементов массива, сохраняемых с конца при усечении полезной нагрузки журнала чата. |
CHAT_LOG_MAX_DEPTH |
6 |
Максимальная глубина вложенности, после которой полезная нагрузка журнала чата усекается. |
CHAT_LOG_MAX_OBJECT_KEYS |
80 |
Максимальное количество ключей объекта, сохраняемых в полезной нагрузке журнала чата (0 = без ограничений). |
CHAT_LOG_MAX_BODY_KB |
1024 |
Размер всего тела запроса/ответа (КБ), после превышения которого полная копия заменяется краткой сводкой. Увеличьте это значение, если в длительных агентных диалогах на панели управления вместо реальных сообщений отображается заполнитель. |
CHAT_DEBUG_FILE |
false |
Если установлено значение true, serializeArtifactForStorage не выполняет усечение на основе размера. Только для отладки. |
17. Оптимизация памяти
Заголовок раздела «17. Оптимизация памяти»| Переменная | Значение по умолчанию | Описание |
|---|---|---|
OMNIROUTE_MEMORY_MB |
авто (без контейнера); 1024 в образе Docker |
Рекомендуемый предел кучи V8 (МБ) для Docker/автономного запуска. Если не задан, динамически вычисляется (~35% системной ОЗУ с ограничением диапазоном [512, 4096]); 512 используется как минимальное значение только тогда, когда не удаётся определить общий объём памяти. В run-standalone.mjs (Docker CMD) явное значение добавляется как --max-old-space-size и имеет приоритет над конфликтующим флагом кучи NODE_OPTIONS (V8 использует последний флаг). omniroute serve по-прежнему отдаёт предпочтение существующему флагу кучи NODE_OPTIONS (#5238). Не задавайте разные значения в обоих местах — процесс записывает в журнал предупреждение с обоими значениями и указанием победившего. Официальный образ Docker всегда задаёт 1024, поэтому калибровка в нём не выполняется. Для /v1/responses агента программирования требуется 8192–12288 плюс резерв для cgroup — см. Руководство по Docker — ОЗУ среды выполнения. |
PROMPT_CACHE_MAX_SIZE |
50 |
Максимальное количество кэшированных записей системных промптов. |
PROMPT_CACHE_MAX_BYTES |
2097152 (2 МБ) |
Максимальный общий размер кэша промптов. |
PROMPT_CACHE_TTL_MS |
300000 (5 мин) |
TTL записи кэша промптов. |
SEMANTIC_CACHE_MAX_SIZE |
100 |
Максимальное количество кэшированных ответов с temperature=0. |
SEMANTIC_CACHE_MAX_BYTES |
4194304 (4 МБ) |
Максимальный общий размер семантического кэша. |
SEMANTIC_CACHE_TTL_MS |
1800000 (30 мин) |
TTL записи семантического кэша. |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
Количество корней локальных корпусов, для которых одновременно поддерживается активный индекс в памяти (src/lib/localCorpus/configured.ts). LRU: при достижении предела индекс наименее недавно использованного корня удаляется и перестраивается при следующем запросе к нему. Минимальное значение ограничено 1; при нечисловом значении используется значение по умолчанию. |
STREAM_HISTORY_MAX |
50 |
Максимальное количество последних событий потока в буфере просмотра в реальном времени на панели мониторинга. |
CONTEXT_LENGTH_DEFAULT |
128000 |
Глобальная резервная максимальная длина контекста для моделей без явной конфигурации. |
USAGE_TOKEN_BUFFER |
100 |
Дополнительный резерв токенов при отслеживании квот использования. |
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
не задано | Доверять проектному файлу .rtk/filters.json без хеша .rtk/trust.json. Используйте только в контролируемой локальной среде разработки. |
Механизм памяти (план 21)
Заголовок раздела «Механизм памяти (план 21)»Нагрузка на цикл событий со стороны памяти, навыков и обновления токенов (#10349)
Заголовок раздела «Нагрузка на цикл событий со стороны памяти, навыков и обновления токенов (#10349)»OmniRoute — это единый процесс Node. Извлечение и поиск данных в памяти, внедрение навыков и обновление токенов провайдера выполняются в том же цикле событий, что и GET /healthz и панель мониторинга. Они не выполняются в рабочем потоке.
| Работа | Код | По умолчанию | Управление оператором |
|---|---|---|---|
| Извлечение / поиск в памяти | src/lib/memory/ |
memoryEnabled в панели управления (по умолчанию включено) | Отключите Настройки → Память. Отдельного аварийного выключателя через переменную окружения, помимо отключения функции в настройках, нет. |
| Внедрение навыков | src/lib/skills/injection.ts |
skillsEnabled в панели управления (по умолчанию включено) | Отключите Настройки → Память/Навыки (skillsEnabled). Приведённые ниже параметры песочницы лишь ограничивают выполнение после того, как внедрение уже включено. |
| Обновление токенов | src/sse/services/tokenRefresh.ts |
Включено для подключённых OAuth-/веб-провайдеров | Отключите провайдера или позвольте токенам оставаться действительными; в настоящее время переменной окружения TOKEN_REFRESH=0 нет. |
Если /healthz медленно отвечает на машине без нагрузки, сначала отключите память и навыки, а затем проверьте нагрузку от каталога/сжатия (#10303, #9685). Эти функции уступают управление в точках await, но всё равно конкурируют за единственный поток.
Параметры слоя эмбеддингов, векторного хранилища и переранжирования для подсистемы постоянной памяти (src/lib/memory/).
| Переменная | По умолчанию | Описание |
|---|---|---|
MEMORY_EMBEDDING_CACHE_TTL_MS |
300000 (5 мин) |
TTL кэша эмбеддингов в памяти (для каждой сигнатуры источника/модели/размерности). |
MEMORY_EMBEDDING_CACHE_MAX |
1000 |
Максимальное количество LRU-записей, сохраняемых в кэше эмбеддингов. |
MEMORY_TRANSFORMERS_MODEL |
Xenova/all-MiniLM-L6-v2 |
Идентификатор репозитория HF для опционального локального конвейера MiniLM на базе @huggingface/transformers (~23 МБ int8, ~400 МБ ОЗУ). |
MEMORY_STATIC_MODEL |
minishlab/potion-base-8M |
Идентификатор репозитория HF для статического эмбеддера potion/Model2Vec на основе таблицы поиска. Загружается в каталог кэша по требованию. |
MEMORY_STATIC_CACHE_DIR |
<DATA_DIR>/embeddings |
Каталог для кэширования файлов статической модели potion. Если значение не задано, по умолчанию используется каталог внутри DATA_DIR. |
HF_HUB_ENDPOINT |
https://huggingface.co |
Переопределяет базовый URL Hugging Face Hub, используемый staticPotion.ts (например, адрес зеркала для изолированных сред). |
MEMORY_VEC_TOP_K |
20 |
Значение top-K по умолчанию, используемое полным перебором при векторном поиске sqlite-vec внутри src/lib/memory/vectorStore.ts. |
MEMORY_RRF_K |
60 |
Константа k Reciprocal Rank Fusion для гибридного поиска FTS5 + векторного поиска (рецепт sqlite-vec). |
VECTOR_STORE_DISABLE_VEC |
false |
Механизм для тестирования/диагностики в getVectorStore() (src/lib/memory/vectorStore.ts): при значении true принудительно устанавливает векторное хранилище в null (имитирует облачную/WASM-среду без sqlite-vec), в результате чего поиск по памяти ограничивается поиском по ключевым словам FTS5. В рабочей среде не задавайте. |
NOTION_API_KEY |
(не задано) | API-ключ для бэкенда Notion (используется предустановкой известного бэкенда genericBackend.ts). |
NOTION_API_URL |
https://api.notion.com/v1 |
Базовый URL API Notion (можно переопределить для самостоятельно размещённых альтернатив Notion). |
OBSIDIAN_API_KEY |
(не задано) | API-ключ для бэкенда Obsidian Vault (используется предустановкой известного бэкенда genericBackend.ts). |
OBSIDIAN_API_URL |
http://localhost:27123 |
Базовый URL API Obsidian Vault (можно переопределить для удалённого хранилища). |
MEMORY_TYPED_DECAY_ENABLED |
false |
Главный переключатель типизированного затухания памяти TV6. Включается явно (по умолчанию отключено) — очистка удаляет затухшие воспоминания. Когда функция отключена, access_count/last_accessed_at служат исключительно телеметрией и ничего не удаляется. |
MEMORY_TYPED_DECAY_EPISODIC_DAYS |
30 |
TTL (в днях), по истечении которого неиспользуемое воспоминание типа episodic затухает. Значение 0 также делает эпизодические воспоминания невосприимчивыми. Долговечные типы (factual/procedural/semantic) всегда невосприимчивы. Отсчёт затухания начинается заново от last_accessed_at. |
MEMORY_TYPED_DECAY_ACCESS_IMMUNITY |
3 |
Воспоминание, внедрённое не менее указанного количества раз (>=), становится невосприимчивым к затуханию независимо от типа. Значение 0 отключает невосприимчивость на основе обращений. |
MEMORY_TYPED_DECAY_SWEEP_INTERVAL |
0 (отключено) |
Интервал (в секундах) необязательной периодической очистки затухших воспоминаний в src/lib/memory/typedDecay.ts. 0/не задано = периодическая очистка не выполняется. Требуется двойное явное включение: также необходимо задать MEMORY_TYPED_DECAY_ENABLED=true. |
OMNIROUTE_STRICT_SYSTEM_PROVIDERS |
(не задано) | Разделённые запятыми идентификаторы провайдеров (без учёта регистра), которые принимают сообщение system только с индексом 0 (src/lib/memory/injection.ts). Для них безопасная для кэша вставка памяти в середину массива небезопасна в многоходовых диалогах, поэтому память объединяется с ведущим системным сообщением или добавляется перед ним. По умолчанию содержит только xiaomi-mimo/mimo; расширьте список для самостоятельно размещённых OpenAI-совместимых конечных точек (например, Qwen3.5+/3.6), шаблон чата которых требует единственного ведущего системного сообщения. |
Пример Docker для малого объёма ОЗУ
Заголовок раздела «Пример Docker для малого объёма ОЗУ»128 предназначено только для панели управления. Агенты программирования при таком объёме кучи завершаются с FATAL ERROR во время длительных запросов /v1/responses. Не используйте этот пример в качестве шлюза Claude/Codex/Grok.
OMNIROUTE_MEMORY_MB=128PROMPT_CACHE_MAX_SIZE=20PROMPT_CACHE_MAX_BYTES=524288 # 512 КБSEMANTIC_CACHE_MAX_SIZE=25SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 МБSTREAM_HISTORY_MAX=1018. Синхронизация цен
Заголовок раздела «18. Синхронизация цен»Автоматическая синхронизация данных о ценах моделей из внешних источников.
| Переменная | По умолчанию | Исходный файл | Описание |
|---|---|---|---|
PRICING_SYNC_ENABLED |
false |
src/lib/pricingSync.ts |
Периодическая синхронизация цен, включаемая по желанию. |
PRICING_SYNC_INTERVAL |
86400 (24 ч) |
src/lib/pricingSync.ts |
Интервал синхронизации в секундах. |
PRICING_SYNC_SOURCES |
litellm |
src/lib/pricingSync.ts |
Источники данных, разделённые запятыми. |
Синхронизация ELO Arena
Заголовок раздела «Синхронизация ELO Arena»| Переменная | По умолчанию | Исходный файл | Описание |
|---|---|---|---|
ARENA_ELO_SYNC_ENABLED |
true |
src/shared/constants/featureFlagDefinitions.ts |
Периодическая синхронизация ELO из рейтинга Arena AI; настраивается через флаги функций панели управления или отключается значением 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 (24 ч) |
src/lib/arenaEloSync.ts |
Интервал синхронизации в секундах. |
Провайдер PromptQL Playground (неофициальный/экспериментальный)
Заголовок раздела «Провайдер PromptQL Playground (неофициальный/экспериментальный)»Восстановленный методом обратной разработки мост сеансов GraphQL для prompt.ql.app (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 до истечения времени ожидания. |
Веб-провайдер HyperAgent (неофициальный/экспериментальный)
Заголовок раздела «Веб-провайдер 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 Code. Необязательно — по умолчанию используется общедоступный API Kilo; переопределяйте его только для ретранслятора или тестовой фикстуры. Для аутентификации используется существующий токен доступа OAuth подключения.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
KILO_API_URL |
https://api.kilo.ai |
open-sse/services/usage/kilocode.ts |
Базовый URL, используемый для получения личного баланса Kilo Code и данных об использовании Kilo Pass. |
Веб-провайдер Adobe Firefly (неофициальный/экспериментальный)
Заголовок раздела «Веб-провайдер Adobe Firefly (неофициальный/экспериментальный)»Обновление сеанса через браузер для веб-провайдера Adobe Firefly
(open-sse/services/adobeFireflyBrowserLogin.ts, open-sse/services/adobeFireflySession.ts,
open-sse/services/adobeFireflyClient.ts). Необязательно — все значения по умолчанию настроены для обычной
настольной установки.
Удалено в #9255. Прежняя среда выполнения Chrome с подключением через CDP (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 |
Установите 1, чтобы использовать действительно безголовый режим Chrome (генерация в нём заведомо не работает; только для отладки). |
ADOBE_FIREFLY_BROWSER_REFRESH |
1 |
open-sse/services/adobeFireflySession.ts |
Включение/отключение упреждающего прогрева браузера. 0 отключает упреждающий прогрев (восстановление после ошибки 408 в середине пакета по-прежнему применяется). |
ADOBE_FIREFLY_SESSION_DISK |
1 |
open-sse/services/adobeFireflySession.ts |
Установите 0, чтобы отключить сохранение сеанса Adobe Firefly на диск. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
(не задано) | open-sse/services/adobeFireflySession.ts |
Минимальный интервал (мс), принудительно выдерживаемый между последовательными отправками и переопределяющий встроенное значение по умолчанию. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
(не задано) | open-sse/services/adobeFireflySession.ts |
Дополнительный интервал (мс), добавляемый после успешной пакетной операции и переопределяющий встроенное значение по умолчанию. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
(не задано) | open-sse/services/adobeFireflyClient.ts |
Базовая задержка (мс) перед отправкой запроса на генерацию, переопределяющая встроенное значение по умолчанию. |
19. Синхронизация моделей (разработка)
Заголовок раздела «19. Синхронизация моделей (разработка)»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
MODELS_DEV_SYNC_ENABLED |
(не задано) | src/lib/modelsDevSync.ts |
Принудительное переопределение синхронизации цен models.dev. Если значение не задано, учитывается параметр «Настройки > ИИ» (modelsDevSyncEnabled). 0/false/off/no имеет приоритет над БД и отключает как периодическую синхронизацию, так и сканирование SQL/JSON в getModelsDevPricing() (для восстановления, когда панель управления зависла в том же цикле событий). 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. Настройки, специфичные для провайдера
Заголовок раздела «20. Настройки, специфичные для провайдера»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OPENROUTER_CATALOG_TTL_MS |
86400000 (24 ч) |
src/lib/catalog/openrouterCatalog.ts |
Время жизни кэша каталога моделей OpenRouter. |
MODEL_CATALOG_INCLUDE_NAMES |
true |
src/shared/constants/featureFlagDefinitions.ts |
Включает удобные для отображения поля name в ответы /v1/models. Отключите для клиентов, ожидающих только идентификаторы. |
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. |
CLOUDFLARE_PLAYGROUND_CHROME_PATH |
(не задано) | open-sse/executors/cloudflare-playground.ts |
Полный путь к исполняемому файлу настольной версии Chrome для исполнителя Cloudflare AI Playground, используемый, когда проверка цифрового отпечатка браузера в безголовом режиме блокирует Chromium из комплекта Playwright. |
CLOUDFLARE_API_BASE |
https://api.cloudflare.com/client/v4 |
src/app/api/settings/proxy/cloudflare-deploy/route.ts |
Переопределяет базовый URL REST API Cloudflare, используемый средством развёртывания ретранслятора Workers для пула прокси (#4640 / 9router#1360). |
NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx |
Имя проекта Worker по умолчанию, предлагаемое в модальном окне «Deploy Relay» пула прокси. |
NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
Установите значение false, чтобы скрыть вариант ретранслятора Cloudflare Workers на вкладке Proxy Pool. |
CLOUDFLARED_BIN |
автоопределение | src/lib/cloudflaredTunnel.ts |
Пользовательский путь к исполняемому файлу cloudflared. |
CLOUDFLARED_PROTOCOL |
http2 |
src/lib/cloudflaredTunnel.ts |
Транспортный протокол туннеля: http2 (по умолчанию), quic или auto. |
CLOUDFLARED_CONFIG |
(не задано) | src/lib/cloudflaredTunnel.ts |
Путь к локально управляемому файлу config.yml cloudflared (с 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 |
Переопределяет базовый URL REST API Deno Deploy, используемый средством развертывания ретранслятора пула прокси (#4643 / 9router#1437). |
NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT |
omniroute-deno-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx |
Имя приложения Deno Deploy по умолчанию, предлагаемое в модальном окне «Deploy Relay» пула прокси. |
NEXT_PUBLIC_DENO_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
Установите значение false, чтобы скрыть вариант ретранслятора Deno Deploy на вкладке пула прокси. |
SEARCH_CACHE_TTL_MS |
300000 (5 мин) |
open-sse/services/searchCache.ts |
TTL кэша ответов поисковых API (Perplexity, Brave и т. д.). |
ENABLE_CC_COMPATIBLE_PROVIDER |
false |
src/shared/utils/featureFlags.ts |
Показывает экспериментальный интерфейс CC-совместимого провайдера для ретрансляторов, предназначенных только для Claude Code. |
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-прокси встроенной службы (по умолчанию — только loopback-интерфейс). |
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 открывает всей локальной сети доступ к службе, содержащей учетные данные. |
MUX_SERVICE_PORT |
8322 |
src/lib/services/bootstrap.ts |
Переопределяет порт, на котором прослушивает встроенный демон оркестрации агентов Mux (coder/mux) (всегда 127.0.0.1). |
OPENWA_SERVICE_PORT |
8323 |
src/lib/services/bootstrap.ts |
Переопределяет порт, на котором прослушивает встроенный демон open-wa (автоматизация WhatsApp Web) (всегда 127.0.0.1). |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Хост привязки/подключения встроенной службы Dario (по умолчанию — только loopback-интерфейс). |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Порт встроенной службы Dario. |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Хост привязки/подключения встроенной службы Dario (по умолчанию — только loopback-интерфейс). |
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-совместимого провайдера.
21. Состояние прокси
Заголовок раздела «21. Состояние прокси»| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
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 |
Интервал цикла фонового планировщика проверки состояния в мс (минимум 60000). |
PROXY_HEALTH_RECOVERY_INTERVAL_MS |
600000 |
src/lib/proxyHealth/scheduler.ts |
Интервал фоновой проверки восстановления в мс: определяет, как часто ранее неработоспособные прокси проверяются повторно, чтобы восстановившийся прокси снова вернулся в ротацию без перезапуска. При значениях ниже 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 |
Задержка в мс между запуском двух проверок внутри пакета. Без неё весь пакет отправляется одновременно, и общий исходящий IP-адрес может привести к срабатыванию ограничения частоты запросов на целевом сервере. Установите 0, чтобы отключить интервалы; максимальное значение — 5000. |
PROXY_HEALTH_USE_PROVIDER_TARGET |
true |
src/lib/proxyHealth/providerProbeTarget.ts |
Установите "false", чтобы прекратить проверку реального хоста провайдера, назначенного прокси (GET /models, без ключа API), и вместо этого всегда использовать PROXY_HEALTH_TEST_URL. |
PROXY_HEALTH_AUTO_DEACTIVATE |
false |
src/lib/proxyHealth/statusPolicy.ts |
Если установлено false (по умолчанию), автоматические проверки доступности (планировщик и кнопка «Test All» эндпоинта /api/settings/proxies/auto-test) выполняются только для чтения и никогда не изменяют статус прокси — только оператор переводит его в активное или неактивное состояние, поэтому нестабильная проверка не может вывести назначенный прокси из работы (#6246). Установите true, чтобы восстановить прежнее поведение с проверкой и изменением статуса. |
FLUSH_EMPTY_RETRY_ENABLED |
false |
src/shared/utils/featureFlags.ts |
Флаг функции, включаемой явно (см. FEATURE_FLAGS.md; переопределение из БД панели управления имеет приоритет). Значение true (или 1, yes) повторяет пустые переведённые потоковые ответы через обычный путь учётных данных (до STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX повторных попыток) вместо возврата пустого ответа 200 или ответа 502 с пустым содержимым. |
PROXY_POOL_EGRESS_OBSERVATION |
false |
src/shared/utils/featureFlags.ts |
Флаг функции, включаемой явно (см. FEATURE_FLAGS.md; переопределение из БД панели управления имеет приоритет). Значение true (или 1, yes) отображает в панели управления под пулом прокси доступные только для чтения данные об исходящем трафике пула (уникальные исходящие IP-адреса, соединения и максимальное количество соединений через один IP-адрес за последние 24 ч согласно журналу прокси). Никогда не используется для маршрутизации. |
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 |
Установите true, чтобы планировщик после нескольких последовательных сбоев программно отключал прокси (статус dead, без удаления) вместо его удаления. Неразрушающая альтернатива PROXY_AUTO_REMOVE: прокси немедленно исключается из пула и ротации (фильтр активного статуса, используемый при определении пула области, уже исключает его) и автоматически активируется снова, как только начинает успешно проходить проверки. Использует тот же порог PROXY_AUTO_REMOVE_AFTER. Если оба флага имеют значение true, приоритет имеет PROXY_AUTO_REMOVE. |
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK |
false |
src/shared/constants/featureFlagDefinitions.ts |
Разрешить потокам OAuth и проверки провайдера обходить закреплённый прокси и подключаться напрямую, если предварительные проверки доступности прокси завершаются неудачно. Фактический порядок приоритета: переопределение в БД флагов функций > переменная окружения > значение по умолчанию. |
RATE_LIMIT_MAX_WAIT_MS |
30000 (30 с) |
src/lib/resilience/settings.ts |
Бюджет ожидания в очереди по умолчанию: как долго запрос может ожидать слот провайдера и находиться в очереди, прежде чем будет отклонён, так и не достигнув вышестоящего сервиса. Таймер сбрасывается, как только задание начинает выполняться, — выполнение отдельно ограничивается параметром RATE_LIMIT_EXECUTION_MAX_WAIT_MS. Переменная окружения задаёт только значение по умолчанию: сохранённый параметр resilienceSettings.requestQueue.maxWaitMs, а затем параметр rateLimitOverrides.maxWaitMs для отдельного подключения имеют над ним приоритет. |
RATE_LIMIT_EXECUTION_MAX_WAIT_MS |
600000 (10 мин) |
open-sse/services/rateLimitManager.ts |
Максимальное время, в течение которого допущенный запрос может выполняться до истечения срока резервирования лимита частоты запросов; оно не зависит от бюджета ожидания в очереди, поэтому медленное начало получения данных на шлюзах без инкрементальной передачи не приводит к тайм-ауту (#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 |
Принудительно включить или отключить защитный механизм автоматического включения ограничения частоты запросов независимо от сохранённой настройки Dashboard. Принимает true/1/on для принудительного включения и false/0/off для принудительного отключения. |
PROVIDER_COOLDOWN_ENABLED |
(не задано → выкл.) | open-sse/services/providerCooldownTracker.ts |
Опциональное глобальное отслеживание периода ожидания для провайдеров/подключений между запросами. По умолчанию ВЫКЛЮЧЕНО (частично дублирует механизмы Connection Cooldown / Provider Circuit Breaker). Для включения принимает true/1/on. |
PROVIDER_COOLDOWN_MIN_MS |
5000 |
open-sse/services/providerCooldownTracker.ts |
Минимальный период ожидания (мс) перед повторной попыткой использования провайдера/подключения после сбоя. Экспоненциально увеличивается при последовательных сбоях. Используется только при включённой переменной PROVIDER_COOLDOWN_ENABLED. |
PROVIDER_COOLDOWN_MAX_MS |
300000 (5 мин) |
open-sse/services/providerCooldownTracker.ts |
Максимальный период ожидания (мс), после которого повторная попытка использования провайдера/подключения выполняется в любом случае. Используется только при включённой переменной 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 мс), чтобы при обрыве до фиксации — то есть до того, как хотя бы один байт достигнет клиента, — незаметно повторно открыть поток и выполнить запрос. Когда включать: при нестабильных восходящих сервисах, которые часто обрывают поток без передачи данных в самом начале; оставьте ВЫКЛЮЧЕННЫМ, если не можете допустить увеличения времени до первого токена до 750 мс для каждого потока. Для включения принимает true/1/on. Задаёт начальное значение сохраняемого параметра Resilience; после настройки параметр в Dashboard имеет приоритет. |
STREAM_RECOVERY_MIDSTREAM_ENABLED |
(не задано → выкл.) | src/lib/resilience/settings.ts (начальное значение) → open-sse/services/streamRecovery.ts (логика) |
Назначение: продолжение с середины потока (Fase 4.4) — после усечения после фиксации (байты уже достигли клиента) повторно отправляет запрос, используя частичный текст как предварительно заполненный ответ ассистента, и дополняет недостающий суффикс. Только для OpenAI-совместимых потоков с обычным текстом; никогда не срабатывает во время выполнения вызова инструмента. Когда включать: для длинных генераций, которые обрываются на середине ответа, если допустимо, что восстановленная оставшаяся часть поступит одним пакетом, а не токен за токеном. Не зависит от STREAM_RECOVERY_ENABLED (другой профиль риска). Для включения принимает true/1/on. |
STREAM_THROUGHPUT_WATCHDOG_ENABLED |
(не задано → выкл.) | src/lib/resilience/settings.ts → open-sse/services/throughputWatchdog.ts |
Опциональный сторожевой механизм полезной выходной пропускной способности активного потока. Обнаруживает потоки, которые продолжают отправлять фрагменты, но остаются ниже настроенной скорости вывода ассистента; сигналы активности, события использования, пустые дельты, а также фазы работы инструментов и рассуждений не считаются прогрессом. Работает отдельно от тайм-аутов простоя и жёстких предельных сроков. |
STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
Льготный период перед оценкой пропускной способности, ограниченный диапазоном 0–600000 мс. |
STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
Скользящее окно полезного вывода, ограниченное диапазоном 1000–600000 мс; перед прерыванием необходимо одно полное окно. |
STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND |
4 |
src/lib/resilience/settings/normalize.ts |
Минимальная скорость вывода ассистента в байтах UTF-8 (консервативная замена подсчёта токенов), ограниченная диапазоном 1–1000000. |
STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES |
1 |
src/lib/resilience/settings/normalize.ts |
Минимальный ненулевой объём полезного вывода, считающийся измеримым, ограниченный диапазоном 1–1000000 байт. |
HEALTHCHECK_STAGGER_MS |
3000 |
src/lib/tokenHealthCheck.ts |
Интервал задержки (мс) между проверками состояния токенов провайдеров при запуске. |
HEALTHCHECK_JITTER_MIN_MS |
500 |
src/lib/tokenHealthCheck.ts |
Минимальная случайная задержка (мс), добавляемая к HEALTHCHECK_STAGGER_MS между проверками состояния токенов провайдера для предотвращения всплесков нагрузки (Issue #1220). |
HEALTHCHECK_JITTER_MAX_MS |
5000 |
src/lib/tokenHealthCheck.ts |
Максимальная случайная задержка (мс), добавляемая к HEALTHCHECK_STAGGER_MS между проверками состояния токенов провайдера для предотвращения всплесков нагрузки (Issue #1220). |
HEALTHCHECK_BATCH_SIZE |
20 |
src/lib/tokenHealthCheck.ts |
Размер пакета параллельных проверок при начальном проходе проверки состояния токенов; большие значения позволяют проверять больше подключений параллельно, а меньшие снижают пиковую нагрузку (Issue #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 |
URL прокси-сервера Headroom для экономии токенов. Жизненный цикл панели управления (api/headroom/*) по умолчанию запускает локальный CLI headroom-ai на loopback-интерфейсе; переопределяйте это значение только для подключения к внешнему sidecar-прокси Docker. |
Константы настройки восстановления потока
Заголовок раздела «Константы настройки восстановления потока»Поведение буферизации при восстановлении настраивается жестко заданными константами в
open-sse/config/constants.ts (STREAM_RECOVERY), приведенными здесь для справки —
для их изменения требуется редактирование кода, а не переменная окружения:
STREAM_RECOVERY.HOLDBACK_MS = 750— время удержания начального окна SSE, позволяющее повторить попытку при раннем обрыве до того, как клиенту будет отправлен хотя бы один байт.STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536— жесткое ограничение размера удерживаемого окна; фиксация (сброс буфера + сквозная передача) выполняется сразу после накопления указанного количества байтов независимо от таймера.STREAM_RECOVERY.EARLY_RETRY_MAX = 4— максимальное количество прозрачных повторных открытий вышестоящего потока, пока удерживаемые данные еще не зафиксированы.
Ограничение частоты запросов для каждого провайдера на основе скользящего окна (без переменной окружения): перенесенный из FCC резервный механизм ограничения частоты запросов для каждого провайдера присутствует в коде (
open-sse/services/providerDefaultRateLimit.ts, подключен черезopen-sse/services/rateLimitManager.ts), но поставляется с пустой картой по умолчанию и в настоящее время не имеет переменной окружения для оператора — он включается только через тестовый хук / редактирование кода. Он намеренно не указан в таблице выше. Ограничитель ретрансляции для каждой пары(token, IP), у которого есть параметр настройки, — этоRELAY_IP_PER_MINUTE(§3 «Сеть и порты»).
22. Отладка
Заголовок раздела «22. Отладка»[!CAUTION] Эти переменные создают подробный вывод и могут раскрыть конфиденциальные данные. Никогда не включайте их в рабочей среде.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
CURSOR_DEBUG |
(не задано) | open-sse/executors/cursor.ts |
Установите 1, чтобы включить подробные журналы исполнителя Cursor (декодированные фрагменты SSE и т. д.). |
CURSOR_STREAM_DEBUG |
(не задано) | open-sse/executors/cursor.ts |
Обратно совместимый псевдоним для CURSOR_DEBUG. |
CURSOR_DUMP_FILE |
(не задано) | open-sse/executors/cursor.ts |
Необязательный путь к файлу, в который записываются необработанные декодированные фрагменты Cursor при CURSOR_DEBUG=1. |
CURSOR_STREAM_TIMEOUT_MS |
300000 |
open-sse/executors/cursor.ts |
Тайм-аут бездействия потока (мс) для исполнителя Cursor. |
CURSOR_KV_GRACE_MS |
2000 |
open-sse/executors/cursor.ts |
Льготный интервал (мс) после мягкого терминатора composer kv_after_text, если в буфере остаются байты — позволяет завершающему вызову инструмента exec_mcp успеть закончить свой кадр. |
CURSOR_TOOL_DIRECTIVE |
включено (!== "0") |
open-sse/executors/cursor.ts |
Директива фиксации инструмента, благодаря которой composer-2.5 надежно выполняет вызовы инструментов. Установите 0, чтобы отключить. |
OMNIROUTE_SYSTEM_INSTRUCTION_APPEND |
(не задано) | open-sse/translator/request/claude-to-openai.ts, open-sse/translator/response/openai-to-claude.ts |
Заданный оператором текст системной подсказки, добавляемый к системному сообщению ПОСЛЕ преобразования (внедрение после преобразования) и передаваемый в codex/Responses и по путям /v1/messages. Также используется как префикс директивы, удаляемый из повторенных блоков системной преамбулы. Оставьте незаданным, чтобы отключить. |
OMNIROUTE_STRIP_SYSTEM_PREAMBLE |
0 (выключено) |
open-sse/translator/response/openai-to-claude.ts, open-sse/utils/directivePreambleStripper.ts |
Установите 1, чтобы удалять повторенные блоки преамбулы системной подсказки из начала потока openai→claude. По умолчанию выключено — эвристики рассчитаны на английский прозаический текст и изменяют содержимое ответа, поэтому ответ, который правомерно начинается с такого раздела, потеряет его. |
CURSOR_IMAGE_FETCH_TIMEOUT_MS |
15000 |
open-sse/utils/cursorImages.ts |
Тайм-аут получения каждого изображения (мс) для удаленного визуального ввода image_url. |
CURSOR_STATE_DB_PATH |
(определяется автоматически) | open-sse/utils/cursorVersionDetector.ts |
Переопределяет путь поиска базы данных состояния Cursor IDE, используемой для определения версии IDE. |
CURSOR_AGENT_CLI_VERSION |
(определять / зафиксировать) | open-sse/utils/cursorAgentCliVersion.ts |
Идентификатор сборки Agent CLI (YYYY.MM.DD-<hash>) для x-cursor-client-version: cli-… при Agent Run. |
CURSOR_AGENT_BIN |
(не задано) | open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Путь к исполняемому файлу Cursor Agent, используемому для генерации изображений. Если не задан, обработчик использует providerSpecificData.agentBin, а затем PATH. |
CURSOR_IMG_TIMEOUT_MS |
210000 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Лимит астрономического времени на одно изображение (мс) для заданий Cursor Agent по генерации изображений. |
CURSOR_IMG_MAX_CONCURRENT |
2 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Ограничение параллельного выполнения заданий Cursor по генерации изображений для общей учетной записи. |
CURSOR_IMG_MODEL |
запрос / auto |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Переопределяет параметр Cursor CLI --model для заданий по генерации изображений. |
UC_IMAGE_POLL_INTERVAL_MS |
2000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
Интервал опроса результата генерации изображений UC (uncensored.com) (мс). |
UC_IMAGE_POLL_TIMEOUT_MS |
60000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
Лимит астрономического времени на опрос результата генерации изображений UC (мс). |
UC_VIDEO_POLL_INTERVAL_MS |
3000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
Интервал опроса результата генерации видео UC (uncensored.com) (мс). |
UC_VIDEO_POLL_TIMEOUT_MS |
300000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
Лимит астрономического времени на опрос результата генерации видео UC (мс). |
CURSOR_DATA_DIR |
(определяется автоматически) | open-sse/utils/cursorAgentCliVersion.ts |
Переопределяет каталог данных Cursor Agent CLI (…/versions/<id>); это та же переменная, которую использует официальный агент. |
CURSOR_TOKEN |
(не задано) | scripts/ad-hoc/cursor-tap.cjs |
Токен носителя Cursor, напрямую используемый инструментами разработчика. |
OMNIROUTE_LOG_REQUEST_SHAPE |
отключено (включается посредством "1") |
src/app/api/v1/chat/completions/route.ts |
Регистрирует маркеры типа и длины содержимого для больших полезных нагрузок чата, если установлено "1". По умолчанию выключено для уменьшения объема журналов. |
DEBUG_RESPONSES_SSE_TO_JSON |
(не задано) | open-sse/handlers/responseTranslator.ts |
Установите true, чтобы регистрировать подробности преобразования Responses API из SSE в JSON. |
DEBUG_CLAUDE_NONSTREAM |
(не задано) | open-sse/handlers/responseTranslator.ts |
Установите true, чтобы отображать пустые фрагменты textContent в пути преобразования ответов Claude (только для отладки). |
NEXT_PUBLIC_OMNIROUTE_E2E_MODE |
(не задано) | Инфраструктура E2E-тестирования | Установите true, чтобы включить режим E2E-тестирования (упрощенная аутентификация, тестовые перехватчики). |
23. Интеграция с GitHub
Заголовок раздела «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 |
Персональный токен доступа GitHub с областью разрешений issues:write. |
GITHUB_TOKEN |
(не задано) | обработка проблем / вспомогательные средства облачного агента | Универсальный токен доступа GitHub, используемый как резервный вариант для GITHUB_ISSUES_TOKEN, а также вспомогательными средствами облачного агента в src/lib/cloudAgent/*. |
Сценарии развёртывания
Заголовок раздела «Сценарии развёртывания»Рекомендации SRE по серверной части ретрансляции (поведение ts/bifrost/auto, размещение 9router относительно CLIProxyAPI и стратегия резервирования при высокой пропускной нагрузке) см. в документе Стратегия серверной части ретрансляции.
Минимальная локальная разработка
Заголовок раздела «Минимальная локальная разработка»JWT_SECRET=$(openssl rand -base64 48)API_KEY_SECRET=$(openssl rand -hex 32)INITIAL_PASSWORD=dev123PORT=20128NODE_ENV=developmentРабочая среда Docker
Заголовок раздела «Рабочая среда Docker»JWT_SECRET=<сгенерировано>API_KEY_SECRET=<сгенерировано>INITIAL_PASSWORD=<сгенерировано>STORAGE_ENCRYPTION_KEY=<сгенерировано>DATA_DIR=/dataPORT=20128API_PORT=20129NODE_ENV=productionAUTH_COOKIE_SECURE=trueREQUIRE_API_KEY=trueNEXT_PUBLIC_BASE_URL=https://omniroute.example.comBASE_URL=http://localhost:20128OMNIROUTE_MEMORY_MB=8192CORS_ORIGIN=https://your-frontend.example.comИзолированная среда / CI
Заголовок раздела «Изолированная среда / CI»JWT_SECRET=test-jwt-secret-for-ciAPI_KEY_SECRET=test-api-key-secret-for-ciINITIAL_PASSWORD=testpassNODE_ENV=productionOMNIROUTE_DISABLE_BACKGROUND_SERVICES=trueAPP_LOG_TO_FILE=falseVPS с обратным прокси (nginx + Cloudflare)
Заголовок раздела «VPS с обратным прокси (nginx + Cloudflare)»JWT_SECRET=<сгенерировано>API_KEY_SECRET=<сгенерировано>STORAGE_ENCRYPTION_KEY=<сгенерировано>PORT=20128AUTH_COOKIE_SECURE=trueREQUIRE_API_KEY=trueNEXT_PUBLIC_BASE_URL=https://omniroute.example.comBASE_URL=http://127.0.0.1:20128CORS_ORIGIN=https://omniroute.example.comENABLE_TLS_FINGERPRINT=trueCLI_COMPAT_ALL=124. Песочница Skills (v3.8.0+)
Заголовок раздела «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 МБ) |
src/lib/skills/builtins.ts |
Максимальное количество байтов, которое навык может прочитать из одного файла в песочнице. |
SKILLS_MAX_HTTP_RESPONSE_BYTES |
256000 (250 КБ) |
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 | podman. auto выбирает лучшую установленную среду выполнения для ОС хоста (Apple Container/OrbStack в macOS, WSL Container в Windows, Podman в Linux), при необходимости переключаясь на Docker. |
[!CAUTION] Включение
SKILLS_SANDBOX_NETWORK_ENABLED=trueоткрывает путь для исходящего трафика из произвольного кода навыков. В общих развёртываниях используйте эту настройку совместно сOUTBOUND_SSRF_GUARD_ENABLED=trueи строгой политикойCORS_ORIGIN/прокси.
25. Квоты провайдеров, туннели, резервные копии и прочие параметры среды выполнения
Заголовок раздела «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 |
Переопределяет полный URL квот Alibaba Bailian. |
QWEN_CLOUD_COOKIE |
(не задано) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Cookie сеанса консоли для шлюза квот персонального тарифного плана Token Plan в Qwen Cloud / Model Studio (ключ API для инференса не позволяет прочитать эти данные). Скопируйте весь заголовок запроса Cookie — он содержит login_qwencloud_ticket — из любого вызова api.json к cs-data.qwencloud.com на странице home.qwencloud.com › Billing › Subscription (F12 › Network). Содержит конфиденциальные данные и привязан к сеансу; предпочтительно использовать поле панели управления qwenCloudCookie для конкретного подключения. |
QWEN_CLOUD_SEC_TOKEN |
(не задано) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Переопределение sec_token вручную для консольного шлюза Token Plan. Содержит конфиденциальные данные; если значение не задано, модуль получения данных извлекает его из HTML-кода панели управления с помощью cookie. |
QWEN_TOKEN_PLAN_HOST |
https://cs-data.qwencloud.com |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Переопределение хоста шлюза для модуля получения квот персонального тарифного плана Token Plan (например, bailian-singapore-cs.alibabacloud.com для консоли Model Studio). |
QWEN_TOKEN_PLAN_DASHBOARD_URL |
https://home.qwencloud.com/ |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
URL панели управления, используемый для извлечения sec_token из HTML-кода после входа в систему. |
ALIBABA_FREE_TIER_VISION_FE_PATH |
/costing-balance/free-quota-image-video |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Переопределение пути интерфейса консоли для получения квоты бесплатного уровня Alibaba Model Studio на обработку изображений и мультимедиа. |
ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH |
/costing-balance/free-quota-multimodal |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Переопределение пути фронтенда консоли для получения бесплатной квоты Alibaba Model Studio на мультимодальные модели. |
ALIBABA_FREE_TIER_AUDIO_FE_PATH |
/costing-balance/free-quota-audio |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Переопределение пути фронтенда консоли для получения бесплатной квоты Alibaba Model Studio на аудиомодели. |
ALIBABA_FREE_TIER_ALLOWLIST_PATH |
(не задано) | open-sse/services/alibabaFreeTierAllowlist.ts |
Необязательный путь к локальному JSON-файлу, переопределяющему встроенный список разрешённых текстовых моделей бесплатного уровня Alibaba. Если файл отсутствует, используется $DATA_DIR/alibaba-free-tier-allowlist.json, а затем config/alibaba-free-tier-allowlist.json. |
CONTEXT_RESERVE_TOKENS |
1024 |
open-sse/services/contextManager.ts |
Количество токенов, зарезервированных для выходных данных при вычислении бюджета промпта. |
CONTEXT_KEEP_LATEST_IMAGES |
2 |
open-sse/services/contextManager.ts |
Количество новейших встроенных изображений, которые следует сохранить при удалении более старых для соблюдения размера контекстного окна (#8560). |
MODEL_ALIAS_COMPAT_ENABLED |
включено | open-sse/services/model.ts |
Включает или отключает устаревший слой совместимости псевдонимов моделей, используемый старыми клиентами. |
OMNIROUTE_EMERGENCY_FALLBACK |
включено | open-sse/services/emergencyFallback.ts |
Установите значение false (или 0), чтобы отключить аварийный резервный механизм при исчерпании бюджета, который перенаправляет неудачные запросы на бесплатную модель nvidia/openai/gpt-oss-120b. Фактический приоритет: переопределение в БД Feature Flags > переменная окружения > значение по умолчанию; если они недоступны, сервис использует исходное значение переменной окружения. |
COMMAND_CODE_CALLBACK_PORT |
(не задано) | src/app/api/providers/command-code/auth/shared.ts |
Локальный порт, используемый для обратных вызовов в стиле OAuth от вспомогательной утилиты Command Code CLI. |
COMMAND_CODE_VERSION |
0.33.2 |
open-sse/executors/commandCode.ts |
Значение, отправляемое вышестоящему сервису Command Code в заголовке x-command-code-version. Переопределите его, чтобы повысить версию CLI. |
COMMANDCODE_API_URL |
https://api.commandcode.ai |
open-sse/services/usage/command-code.ts |
Базовый URL вышестоящего сервиса использования/квот Command Code, применяемого телеметрией средства получения квот для смартфонов. Переопределите для самостоятельно размещённого или альтернативного API Command Code. |
MITM_LOCAL_PORT |
443 |
src/mitm/server.cjs |
Локальный порт привязки для отладочного MITM-прокси. |
MITM_DISABLE_TLS_VERIFY |
0 |
src/mitm/server.cjs |
Установите 1, чтобы отключить проверку TLS вышестоящего сервера (только для разработки). |
MITM_IDLE_TIMEOUT_MS |
60000 |
src/mitm/socketTimeouts.ts, src/mitm/server.cjs |
Тайм-аут бездействия сокета (мс) для проксируемых соединений; сокеты, бездействующие дольше указанного времени, закрываются во избежание утечки полуоткрытых туннелей. |
BRIDGE_PORT |
20129 |
bin/antigravity-bridge.mjs |
Порт, который прослушивает MITM-мост Antigravity. |
ROUTER_URL |
http://127.0.0.1:20128/v1/antigravity |
bin/antigravity-bridge.mjs |
Конечная точка маршрутизатора, на которую мост перенаправляет трафик Antigravity. |
CERT_DIR |
~/.omniroute/mitm |
bin/antigravity-bridge.mjs |
Каталог, содержащий server.key/server.crt для TLS-прослушивателя моста; мост завершает работу, если хотя бы один из файлов отсутствует. |
MITM_VERBOSE |
1 |
src/mitm/server.cjs, src/mitm/_internal/bypass.cjs |
Уровень подробности журналирования решений о маршрутизации: 0 отключает журналирование, более высокие значения регистрируют больше решений об обходе и маршрутизации. |
MITM_ROOT_CA_ENABLED |
false |
src/mitm/manager.ts |
Установите true, чтобы явно включить модель с корневым центром сертификации и отдельными конечными сертификатами для каждого хоста (#6684). В новых установках она включается автоматически; установки с ранее доверенным устаревшим конечным сертификатом продолжают использовать устаревший сертификат с фиксированным SAN, если модель не была включена явно. |
MITM_CERT_MODE |
legacy |
src/mitm/manager.ts, src/mitm/server.cjs |
Устанавливается менеджером MITM для запускаемого процесса прокси (root-ca | legacy) — отражает решение о миграции сертификатов; не предназначено для ручной настройки. |
OMNIROUTE_NO_SUDO |
0 |
src/mitm/systemCommands.ts |
Установите 1 (истинное значение), чтобы удалить начальный sudo из команд доверия сертификатам MITM — для развёртываний без root или с пространством имён пользователей, где оператор вручную устанавливает доверие к центру сертификации (например, через механизм дополнительных сертификатов ЦС Node). |
SKIP_ANTIGRAVITY_DNS |
(не задано) | src/mitm/dns/provision.ts |
Установите true, чтобы полностью пропустить добавление в /etc/hosts записей DNS для имён хостов прокси Antigravity — для контейнеров без доступа к sudo/root. |
OMNIROUTE_SKIP_DNS_WRITE |
(не задано) | src/mitm/dns/dnsConfig.ts |
Установите 1, чтобы при добавлении или удалении записей DNS не выполнять запись в файл hosts — для изолированных или доступных только для чтения тестовых сред. |
OMNIROUTE_SKIP_SYSTEM_TRUST |
0 |
src/mitm/cert/install.ts, src/mitm/tproxy/caTrust.ts |
Защитный параметр только для тестов/CI: установите 1, чтобы установка/удаление доверия к сертификату не выполняли никаких действий и набор тестов никогда не изменял системное хранилище доверенных сертификатов ОС. Устанавливается автоматически при настройке тестов и в рабочих процессах CI. |
CHANGELOG_BASE_REF |
(автоматически) | scripts/check/check-changelog-integrity.mjs |
Явное указание базовой ссылки для проверки, предотвращающей удаление данных из CHANGELOG (по умолчанию — базовая ветвь PR в CI или старшая release/v*). |
FREE_PROXY_AUTO_SYNC_ENABLED |
false |
src/lib/freeProxyProviders/scheduler.ts |
Установите true, чтобы включить фоновый планировщик автоматической синхронизации пула бесплатных прокси. Требует явного включения; по умолчанию отключён. |
FREE_PROXY_AUTO_SYNC_INTERVAL_MS |
1800000 |
src/lib/freeProxyProviders/scheduler.ts |
Интервал автоматической синхронизации в миллисекундах (по умолчанию — 30 мин). |
FREE_PROXY_1PROXY_ENABLED |
true |
src/lib/freeProxyProviders/oneproxy.ts |
Включает источник бесплатных прокси 1proxy. Установите false, чтобы отключить. |
FREE_PROXY_1PROXY_API_URL |
(см. oneproxy.ts) | src/lib/freeProxyProviders/oneproxy.ts |
Переопределение URL API 1proxy. |
FREE_PROXY_1PROXY_MAX |
500 |
src/lib/freeProxyProviders/oneproxy.ts |
Максимальное количество прокси, получаемых из 1proxy при каждой синхронизации. |
FREE_PROXY_1PROXY_MIN_QUALITY |
50 |
src/lib/freeProxyProviders/oneproxy.ts |
Минимальный порог оценки качества для импорта из 1proxy. |
FREE_PROXY_PROXIFLY_ENABLED |
true |
src/lib/freeProxyProviders/proxifly.ts |
Включает источник бесплатных прокси Proxifly. Установите false, чтобы отключить. |
FREE_PROXY_PROXIFLY_QUANTITY |
100 |
src/lib/freeProxyProviders/proxifly.ts |
Количество прокси, получаемых при каждой синхронизации с Proxifly. |
FREE_PROXY_PROXIFLY_ANONYMITY |
elite |
src/lib/freeProxyProviders/proxifly.ts |
Фильтр уровня анонимности для Proxifly (elite, anonymous, transparent). |
FREE_PROXY_IPLOCATE_ENABLED |
false |
src/lib/freeProxyProviders/iplocate.ts |
Включает бесплатный источник прокси IPLocate. Требует явного включения. |
FREE_PROXY_IPLOCATE_BASE_URL |
https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols |
src/lib/freeProxyProviders/iplocate.ts |
Переопределяет базовый URL списка прокси IPLocate. |
FREE_PROXY_WEBSHARE_ENABLED |
true |
src/lib/freeProxyProviders/webshare.ts |
Включает источник пула прокси Webshare. Установите значение false, чтобы отключить; также необходимо задать FREE_PROXY_WEBSHARE_API_KEY. |
FREE_PROXY_WEBSHARE_API_KEY |
(отсутствует) | src/lib/freeProxyProviders/webshare.ts |
API-токен учётной записи Webshare (Authorization: Token <key>). Обязателен — без него провайдер остаётся отключённым. |
FREE_PROXY_WEBSHARE_API_URL |
https://proxy.webshare.io/api/v2/proxy/list/ |
src/lib/freeProxyProviders/webshare.ts |
Переопределяет URL API списка прокси Webshare. |
FREE_PROXY_WEBSHARE_MAX |
500 |
src/lib/freeProxyProviders/webshare.ts |
Максимальное количество прокси, импортируемых при каждой синхронизации с Webshare. |
NEXT_PUBLIC_VERCEL_RELAY_ENABLED |
true |
src/app/(dashboard)/…/ProxyPoolTab.tsx |
Показывает или скрывает кнопку развёртывания Vercel Relay на вкладке пула прокси. |
VERCEL_API_BASE |
https://api.vercel.com |
src/app/api/settings/proxy/vercel-deploy/route.ts |
Переопределяет базовый URL API Vercel (для тестирования). |
NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/…/VercelRelayModal.tsx |
Имя проекта по умолчанию, предварительно заполненное в модальном окне развёртывания Vercel Relay. |
TAILSCALE_BIN |
(автоопределение) | src/lib/tailscaleTunnel.ts |
Явный путь к исполняемому файлу tailscale. |
TAILSCALED_BIN |
(автоопределение) | src/lib/tailscaleTunnel.ts |
Явный путь к исполняемому файлу демона tailscaled. |
TAILSCALE_AUTHKEY |
(не задано) | src/lib/tailscaleTunnel.ts |
Предварительно выданный ключ аутентификации Tailscale для неинтерактивного запуска / запуска без графического интерфейса tailscale up (передаётся через --auth-key=). Если не задан, для входа используется интерактивный URL аутентификации в браузере. |
NGROK_AUTHTOKEN |
(не задано) | src/lib/ngrokTunnel.ts |
Аутентифицирует исходящие туннели ngrok. |
DB_BACKUP_MAX_FILES |
20 |
src/lib/db/backup.ts |
Максимальное количество файлов резервных копий SQLite, сохраняемых при ручной/плановой очистке резервных копий. Снимки миграции адресуются по содержимому и повторно используются для идентичного состояния БД; они не удаляются в пределах окна параллельной миграции. Переопределяет значение, сохранённое в разделе «Настройки» → «Срок хранения резервных копий базы данных». |
DB_BACKUP_RETENTION_DAYS |
0 |
src/lib/db/backup.ts |
Максимальный возраст (в днях) файлов, сохраняемых при ручной/плановой очистке резервных копий. 0 отключает удаление по возрасту. Снимки миграции не удаляются в пределах окна параллельной миграции. Переопределяет значение, сохранённое в разделе «Настройки» → «Срок хранения резервных копий базы данных». |
OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS |
30000 |
src/lib/jobs/backupScheduleJob.ts |
Интервал срабатывания (мс) серверного задания, которое обрабатывает backup-schedule.json. Он должен быть значительно меньше минутной точности cron; при значениях меньше 5000 или значениях, которые невозможно преобразовать в число, используется значение 30000. |
CONTAINER_HOST |
docker |
scripts/check-permissions.sh |
Указание среды выполнения контейнеров для проверки разрешений в точке входа. Установите значение podman для любой топологии Podman. Поскольку контейнер не может определить, является ли движок локальным или доступ к нему осуществляется через Podman Machine, предупреждение остаётся нейтральным к топологии и содержит ссылку на contrib/podman/README.md. |
QUOTA_STORE_DRIVER |
sqlite |
src/lib/quota/storeFactory.ts |
Серверная часть хранилища потребления общих квот: sqlite (по умолчанию) или redis. |
QUOTA_STORE_REDIS_URL |
(не задано) | src/lib/quota/storeFactory.ts |
Строка подключения к Redis, используемая при QUOTA_STORE_DRIVER=redis (например, redis://localhost:6379). |
QUOTA_SATURATION_THRESHOLD |
0.5 |
src/lib/quota/enforce.ts |
Коэффициент насыщения пула (0..1); при достижении или превышении этого значения пул переходит в строгий режим (без заимствования). |
QUOTA_SOFT_DEPRIORITIZE_FACTOR |
0.7 |
open-sse/services/combo.ts |
Множитель оценки (0..1), применяемый к целевому варианту, когда политика мягкой квоты снижает его приоритет. |
STATUS_SOFT_DEPRIORITIZE_FACTOR |
0.5 |
open-sse/services/combo/autoStrategy.ts |
Множитель оценки (0..1), применяемый к исчерпанному провайдеру (credits_exhausted/rate_limited) при оценке auto-combo, когда предварительное отсечение по квоте ОТКЛЮЧЕНО (#4540). |
QUOTA_CONSUMPTION_RETENTION_DAYS |
14 |
src/lib/db/quotaConsumption.ts |
Период хранения (в днях) сегментов quota_consumption до сборки мусора (gcQuotaConsumption). |
QUOTA_PREFLIGHT_CUTOFF_ENABLED |
false |
src/lib/resilience/settings.ts |
Опциональная настройка (по умолчанию ОТКЛЮЧЕНА): включает жёсткое отсечение по квоте при автоматической маршрутизации, которое исключает кандидатов с низкой квотой до оценки. |
OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL |
false |
open-sse/services/autoCombo/virtualFactory.ts |
Опциональная настройка (по умолчанию ОТКЛЮЧЕНА): если фильтр auto/<category>:<tier> не находит подключённых кандидатов, восстанавливает прежнее поведение с возвратом к полному (нефильтрованному) пулу вместо возврата пустого пула. При значении по умолчанию ОТКЛЮЧЕНО :free означает «только бесплатный тариф». |
OMNIROUTE_CHAOS_MAX_PANEL |
5 |
open-sse/services/autoCombo/virtualFactory.ts |
Ограничение размера панели (в диапазоне 1–10) для широковещательного варианта auto/*:chaos — один запрос разветвляется не более чем на указанное количество моделей от разных провайдеров. |
OMNIROUTE_CHAOS_MIN_PANEL |
(по умолчанию движка) | open-sse/services/autoCombo/virtualFactory.ts |
Настройка минимального размера панели, передаваемая обработчику широковещательного режима chaos; если значение не задано, используется значение по умолчанию движка. |
OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS |
(по умолчанию движка) | open-sse/services/autoCombo/virtualFactory.ts |
Жёсткий тайм-аут (мс) для всего разветвления панели chaos; если значение не задано, используется значение по умолчанию движка. |
GROK_AUTH_PATH |
~/.grok/auth.json |
open-sse/services/grokQuotaFetcher.ts |
Путь к файлу auth.json CLI Grok, используемому для получения недельной квоты grok-web; переопределяется для тестов или нестандартной установки CLI. |
AGENTBRIDGE_UPSTREAM_CA_CERT |
(не задано) | src/mitm/manager.ts |
Дополнительный сертификат центра сертификации (PEM), которому доверяют TLS-соединения AgentBridge с вышестоящими серверами. |
INSPECTOR_BUFFER_SIZE |
1000 |
src/mitm/inspector/buffer.ts |
Максимальное количество перехваченных запросов, хранящихся в кольцевом буфере Traffic Inspector. |
INSPECTOR_MAX_BODY_KB |
1024 |
src/mitm/inspector/buffer.ts |
Максимальный размер перехваченного тела запроса/ответа (КБ), после которого оно усекается. |
INSPECTOR_HTTP_PROXY_PORT |
8080 |
src/mitm/inspector/httpProxyServer.ts |
Локальный порт HTTP-прокси Traffic Inspector. |
INSPECTOR_HTTP_PROXY_AUTOSTART |
false |
src/mitm/inspector/httpProxyServer.ts |
Автоматически запускать HTTP-прокси инспектора при загрузке. |
INSPECTOR_TLS_INTERCEPT |
false |
src/lib/inspector/captureState.ts |
Включить перехват TLS (MITM) для перехватываемого HTTPS-трафика. |
INSPECTOR_LLM_HOSTS_EXTRA |
(не задано) | src/lib/inspector/captureState.ts |
Дополнительные имена хостов (через запятую), которые считаются конечными точками LLM для перехвата. |
INSPECTOR_MASK_SECRETS |
true |
src/mitm/inspector/buffer.ts |
Маскировать секретные данные (заголовки авторизации / ключи API) в перехваченном трафике. |
INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES |
30 |
src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts |
Количество минут до автоматического возврата системных настроек прокси к исходным значениям защитным механизмом. |
INSPECTOR_INTERNAL_INGEST_TOKEN |
(автоматически) | src/app/api/tools/traffic-inspector/internal/ingest/route.ts |
Токен для аутентификации внутренней передачи перехваченных данных в инспектор. |
PLAYGROUND_COMPARE_MAX_COLUMNS |
4 |
src/app/(dashboard)/dashboard/playground/ |
Максимальное количество расположенных рядом столбцов в режиме сравнения Playground. |
PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL |
(не задано) | src/app/(dashboard)/dashboard/playground/ |
Модель по умолчанию для действия «улучшить промпт» в Playground (если значение не задано, используется активная модель). |
BIFROST_ENABLED |
1 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Главный аварийный выключатель для прокси-сайдкара Bifrost. Если задано значение 0, маршрут возвращает 503 с заголовком X-Bifrost-Killswitch, а оператор перенаправляется на путь TS. Используйте для отключения сайдкара без повторного развертывания (инцидент маршрутизатора первого уровня, ротация ключей). |
BIFROST_BASE_URL |
(не задано) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Если значение задано, маршрут прокси-сайдкара Bifrost перенаправляет трафик /v1/chat/completions на этот шлюз Go вместо обработчика ретрансляции TS. Не задано → 503 с резервным переключением. Завершающий слеш удаляется. |
BIFROST_PORT |
8080 |
src/lib/services/bootstrap.ts |
Порт, к которому привязывается контролируемая встроенная служба Bifrost (127.0.0.1:<port>), когда OmniRoute управляет жизненным циклом сайдкара Bifrost. Значение по умолчанию — 8080. |
BIFROST_API_KEY |
(не задано) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
API-ключ для шлюза Bifrost (передается как Authorization: Bearer ...). Если значение не задано, маршрут ожидает, что запрос будет содержать действительный API-ключ OmniRoute; этот ключ предназначен только для аутентификации на стороне шлюза. |
BIFROST_STREAMING_ENABLED |
true |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Если задано значение true, маршрут сайдкара Bifrost передает ответы обратно через SSE посредством шлюза, а не через потоковый исполнитель TS. Задайте 0, чтобы принудительно получать через шлюз непотоковые ответы JSON. |
BIFROST_TIMEOUT_MS |
30000 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Тайм-аут для каждого запроса при проксировании на шлюз Bifrost (мс). При превышении времени ожидания маршрут возвращает путь ретрансляции TS через заголовок X-Bifrost-Fallback. |
OMNIROUTE_BIFROST_KEY |
(не задано) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Псевдоним для BIFROST_API_KEY (используется скриптами, которые считывают переменные окружения через OMNIROUTE_*). Если заданы обе переменные, приоритет имеет BIFROST_API_KEY. |
OMNIROUTE_RELAY_BACKEND |
ts / auto |
src/app/api/v1/relay/chat/completions/routingBackend.ts |
Бэкенд ретрансляции для /api/v1/relay/chat/completions: ts | bifrost | auto. ts = ретрансляция TypeScript (по умолчанию, если Bifrost не настроен); auto выбирает Bifrost, если задан BIFROST_BASE_URL и BIFROST_ENABLED ≠ 0, с автоматическим резервным переключением на TS, если сайдкар недоступен; bifrost принудительно использует Bifrost (строгий режим, без резервного переключения). Аутентификация, ограничение частоты запросов, защита от инъекций и список разрешений всегда сначала обрабатываются в маршруте Next. Ответы содержат 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 (те же значения ts | bifrost | auto). Если заданы обе переменные, приоритет имеет OMNIROUTE_RELAY_BACKEND. |
OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS |
5000 |
src/app/api/v1/relay/chat/completions/bifrostCooldown.ts |
Период ожидания (мс) после сбоя перехода через сайдкар Bifrost в режиме auto, прежде чем реле повторит попытку обращения к сайдкару; пока длится период ожидания, запросы направляются непосредственно по пути TS, после чего проверка повторяется. 0 отключает этот период. Применяется только при OMNIROUTE_RELAY_BACKEND=auto. |
OMNIROUTE_TLS_CERT |
(не задано) | bin/cli/commands/serve.mjs |
Путь к TLS-сертификату PEM для запуска omniroute serve по HTTPS (эквивалент --tls-cert). Должен использоваться вместе с OMNIROUTE_TLS_KEY; после этого автономный сервер завершает TLS на том же слушателе (wss:// продолжает работать без изменений). Не задано → обычный HTTP. Если указан только сертификат или ключ либо путь недоступен для чтения, в журнал выводится предупреждение и продолжает использоваться HTTP. |
OMNIROUTE_TLS_KEY |
(не задано) | bin/cli/commands/serve.mjs |
Путь к закрытому ключу TLS в формате PEM для HTTPS в omniroute serve (эквивалент --tls-key). Должен использоваться вместе с OMNIROUTE_TLS_CERT. См. OMNIROUTE_TLS_CERT. |
OMNIROUTE_LOCAL_ENDPOINTS_ENABLED |
0 |
src/lib/security/localEndpoints.ts |
Главный переключатель маршрутов /api/local/*. Если переменная не задана или имеет значение 0, все маршруты /api/local/* в рабочей среде возвращают 503. В развёртываниях не на loopback-интерфейсе должна иметь значение 1, чтобы включить средство запуска Redis и аналогичные средства запуска локальных служб в один клик. Дополнительная мера защиты наряду с классификацией маршрутов в isLocalOnlyPath() (LOCAL_ONLY_API_PREFIXES в src/server/authz/routeGuard.ts). |
OMNIROUTE_LOCAL_ENDPOINTS_TOKEN |
(не задано) | src/lib/security/localEndpoints.ts |
Bearer-токен для клиентов /api/local/*, находящихся не на loopback-интерфейсе (например, настольного приложения). Если переменная задана, запросы с IP-адресов не на loopback-интерфейсе должны содержать Authorization: Bearer <token>. Обязателен, если OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1 в развёртываниях не на loopback-интерфейсе. |
OMNIROUTE_REDIS_CONTAINER_NAME |
omniroute-redis |
bin/cli/commands/redis.mjs |
Имя контейнера для средства запуска Redis в один клик (omniroute redis up). Используется как CLI, так и графическим интерфейсом RedisLauncherPanel. |
OMNIROUTE_REDIS_HOST_PORT |
6379 |
bin/cli/commands/redis.mjs |
Порт хоста для средства запуска Redis в один клик. Измените его, если порт 6379 на хосте уже занят. Внутренний порт контейнера остаётся равным 6379. |
OMNIROUTE_REDIS_BIND_HOST |
127.0.0.1 |
bin/cli/commands/redis.mjs |
Интерфейс хоста, на котором средство запуска Redis в один клик публикует порт. Средство запуска запускает Redis БЕЗ пароля, поэтому привязка к 0.0.0.0 предоставляет каждому хосту в вашей локальной сети неаутентифицированный доступ к Redis — расширяйте область привязки, только если вы самостоятельно задали пароль для экземпляра. |
REDIS_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Интерфейс хоста, на котором docker-compose публикует порт сайдкара Redis (#9286). Redis в compose работает без requirepass; контейнеры приложения обращаются к нему через сеть compose (redis:6379) — опубликованный порт существует только для инструментов на стороне хоста. 0.0.0.0 открывает всей локальной сети неаутентифицированный доступ к Redis. |
REDIS_PORT |
6379 |
docker-compose.yml |
Порт хоста для сайдкара Redis в Docker Compose. |
APP_BIND_HOST |
127.0.0.1 |
docker-compose.yml, docker-compose.prod.yml |
Интерфейс хоста, на котором Docker Compose публикует собственные порты приложения для панели управления, API и live-WS (#12568). Поскольку REQUIRE_API_KEY=false по умолчанию задано в .env.example, адрес 0.0.0.0 открывает анонимный LLM-прокси /v1 для всей LAN/WAN — расширяйте доступ только после установки REQUIRE_API_KEY=true или если расположенный перед ним обратный прокси обеспечивает собственную аутентификацию. |
QDRANT_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Интерфейс хоста, на котором Docker Compose публикует сайдкар памяти Qdrant (#12578). Обоснование относительно доступа из LAN такое же, как для REDIS_BIND_HOST. |
BIFROST_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Интерфейс хоста, на котором Docker Compose публикует сайдкар маршрутизатора Bifrost (#12578). Обоснование относительно доступа из LAN такое же, как для REDIS_BIND_HOST. |
REDIS_KEY_PREFIX |
omniroute: |
src/shared/utils/rateLimiter.ts |
Префикс пространства имён, применяемый к каждому ключу OmniRoute в Redis (ограничитель частоты запросов, кэш аутентификации, хранилище квот, автоматический выключатель прогрева). Предотвращает конфликты ключей, когда экземпляр Redis используется совместно с другими приложениями (#11042). |
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
(не задано — механизм отключён) | src/lib/api/internalServiceAuth.ts |
Общий секрет для внутренних REST-переходов с сохранением идентификации (#9260): компоненты OmniRoute, вызывающие другие локальные маршруты OmniRoute, отправляют его как x-omniroute-internal-service-token, чтобы сохранить идентификацию исходного вызывающего субъекта. Сравнивается с помощью timingSafeEqual. |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
(не задано) | src/lib/api/internalServiceAuth.ts |
Вариант внутреннего сервисного токена в виде секретного файла: путь к файлу, содержимое которого после удаления начальных и конечных пробелов используется как токен. Учитывается только в том случае, если встроенная переменная не задана. |
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
src/lib/catalog/openrouterProviderStats.ts |
Дополняет список поставщиков на панели управления статистикой еженедельного рейтинга OpenRouter (#9324). Включено по умолчанию; задайте false, чтобы полностью пропустить фоновую загрузку (не блокирует работу и никогда не приводит к критической ошибке). |
OPENROUTER_PROVIDER_STATS_TTL_MS |
86400000 (24 ч) |
src/lib/catalog/openrouterProviderStats.ts |
TTL кэша для снимка статистики поставщиков OpenRouter, в миллисекундах. |
OMNIROUTE_REDIS_IMAGE |
redis:7-alpine |
bin/cli/commands/redis.mjs |
Образ Redis, используемый средством запуска Redis в один клик. При необходимости переопределите его значением redis:8-alpine или адресом зеркала приватного реестра. |
QDRANT_HOST |
qdrant |
(опциональный профиль кластера) | Имя хоста вспомогательного контейнера Qdrant, когда активен --profile memory. По умолчанию указывает на имя сервиса qdrant во внутренней сети; переопределите для внешнего развертывания. Используется только тогда, когда qdrantEnabled имеет значение true в коде (src/lib/memory/vectorStore.ts:108). |
QDRANT_PORT |
6333 |
(опциональный профиль кластера) | REST-порт вспомогательного контейнера Qdrant. |
QDRANT_GRPC_PORT |
6334 |
(опциональный профиль кластера) | gRPC-порт вспомогательного контейнера Qdrant. Используется клиентскими библиотеками, которые предпочитают gRPC вместо REST для потоковых операций. |
QDRANT_API_KEY |
(не задано) | (опциональный профиль кластера) | Необязательный API-ключ для Qdrant Cloud или локального экземпляра с аутентификацией. Пустое значение → заголовок api-key не отправляется. |
QDRANT_COLLECTION |
omniroute-memory |
(опциональный профиль кластера) | Имя коллекции для эмбеддингов памяти диалогов OmniRoute. Создается при первом запуске с числом измерений, указанным в QDRANT_VECTOR_SIZE. |
QDRANT_EMBEDDING_MODEL |
text-embedding-3-small |
(опциональный профиль кластера) | Имя модели эмбеддингов по умолчанию, записываемое в метаданные коллекции Qdrant. Фактически эмбеддинги создаются тем провайдером, на который указывает поле embeddingModel в настройках OmniRoute. |
QDRANT_VECTOR_SIZE |
1536 |
(опциональный профиль кластера) | Размерность вектора эмбеддинга. Должна соответствовать используемой модели (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). |
QDRANT_HNSW_EF_CONSTRUCT |
128 |
(опциональный профиль кластера) | Точность построения индекса HNSW. Более высокое значение = более медленное построение, но более быстрый поиск. |
OMNIROUTE_ROTATION_ENABLED |
true |
open-sse/services/rotationConfig.ts |
Главный переключатель настраиваемой оператором ротации учетных записей. При значении false ни один из перечисленных ниже классов OMNIROUTE_ROTATE_* не запускает переключение на резервную учетную запись (состояние отключенного главного переключателя также блокирует классы 429/500/502, включенные по умолчанию). Позволяет управляющему фронтенду (например, настольному приложению VibeProxy) синхронизировать собственные правила ротации с серверным механизмом переключения учетных записей. |
OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS |
0 |
open-sse/services/rotationConfig.ts |
Период ожидания (в секундах), применяемый к учетной записи с ограниченной частотой запросов, когда вышестоящий сервис не предоставляет явной подсказки о времени сброса ограничения. 0 = использовать период ожидания по умолчанию, заданный механизмом, вместо фиксированного переопределения. |
OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET |
true |
open-sse/services/rotationConfig.ts |
Аналог настройки интерфейса «не помечать как ограниченный по частоте запросов без времени сброса». |
OMNIROUTE_ROTATE_ON_429 |
true |
open-sse/services/rotationConfig.ts |
Включает резервное переключение для ошибок со статусом 429. Если установлено значение false (при OMNIROUTE_ROTATION_ENABLED=true), ошибка 429 больше не инициирует ротацию учётной записи и вместо этого возвращается клиенту. |
OMNIROUTE_ROTATE_429_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Количество ошибок 429 за период OMNIROUTE_ROTATE_429_WINDOW_SECONDS, необходимое для ротации учётной записи. Значение 1 (по умолчанию) запускает ротацию немедленно, сохраняя прежнее поведение. |
OMNIROUTE_ROTATE_429_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Скользящее окно (в секундах), в пределах которого ошибки 429 учитываются для достижения порога OMNIROUTE_ROTATE_429_THRESHOLD. |
OMNIROUTE_ROTATE_ON_500 |
true |
open-sse/services/rotationConfig.ts |
Включает резервное переключение для серверных ошибок 5xx (кроме 502, для которой предусмотрен отдельный класс). Если установлено значение false, эти ошибки больше не инициируют ротацию учётной записи. |
OMNIROUTE_ROTATE_500_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Количество ошибок 5xx за период OMNIROUTE_ROTATE_500_WINDOW_SECONDS, необходимое для ротации учётной записи. Значение 1 (по умолчанию) запускает ротацию немедленно. |
OMNIROUTE_ROTATE_500_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Скользящее окно (в секундах), в пределах которого ошибки 5xx учитываются для достижения порога OMNIROUTE_ROTATE_500_THRESHOLD. |
OMNIROUTE_ROTATE_ON_502 |
true |
open-sse/services/rotationConfig.ts |
Включает резервное переключение для ошибок 502 (неверный шлюз). Если установлено значение false, ошибки 502 больше не инициируют ротацию учётной записи. |
OMNIROUTE_ROTATE_502_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Количество ошибок 502 за период OMNIROUTE_ROTATE_502_WINDOW_SECONDS, необходимое для ротации учётной записи. Значение 1 (по умолчанию) запускает ротацию немедленно. |
OMNIROUTE_ROTATE_502_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Скользящее окно (в секундах), в пределах которого ошибки 502 учитываются для достижения порога OMNIROUTE_ROTATE_502_THRESHOLD. |
OMNIROUTE_ROTATE_ON_400 |
false |
open-sse/services/rotationConfig.ts |
Явное включение (по умолчанию ОТКЛЮЧЕНО): если задано значение true, обычная ошибка 400 (неверный запрос) также запускает ротацию аккаунта. Эта настройка лишь дополняет существующее поведение — она никогда не блокирует предусмотренный движком переход при ошибке 400, содержащей текст об ограничении частоты запросов или квоте, независимо от значения этого флага. |
OMNIROUTE_ROTATE_400_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Количество ошибок 400 в течение OMNIROUTE_ROTATE_400_WINDOW_SECONDS, необходимое для ротации аккаунта (учитывается только при OMNIROUTE_ROTATE_ON_400=true). |
OMNIROUTE_ROTATE_400_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Скользящее окно (в секундах), в пределах которого ошибки 400 учитываются для достижения OMNIROUTE_ROTATE_400_THRESHOLD. |
Планировщик прогрева Claude
Заголовок раздела «Планировщик прогрева Claude»Прогрев подключений Anthropic OAuth, включённых пользователем, по расписанию cron, чтобы 5-часовое окно ограничения частоты запросов открывалось простым запланированным запросом, а не первым реальным запросом (#8848). Планировщик отключён, если OMNIROUTE_WARMUP_ENABLED не имеет истинного значения или подключение не отмечено в settings.claudeWarmup.connections; пустой список подключений означает, что прогрев не выполняется, даже если переменная среды включена.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
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-сеансы для входа через браузер и псевдоним каталога данных
Заголовок раздела «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 |
Тег Docker-образа для контейнера авторизации Chromium+VNC. Соберите 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 (10 мин) |
src/lib/vncSession/manifest.ts |
Время ожидания при бездействии (мс), по истечении которого неактивный VNC-сеанс удаляется. |
OMNIROUTE_VNC_MAX_MS |
1800000 (30 мин) |
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 |
Время ожидания (мс) для извлечения сохранённого сеанса и файлов cookie после завершения авторизации. |
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 |
Выделенная сеть Docker, к которой подключается VNC-контейнер авторизации (#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-инструментарий
Заголовок раздела «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 |
Режим начальной настройки E2E (auth, fresh, reuse) для средства запуска Playwright. |
OMNIROUTE_E2E_PASSWORD |
резервно используется INITIAL_PASSWORD |
scripts/dev/run-next-playwright.mjs |
Пароль администратора, передаваемый в окружение Playwright. |
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
Отключает локальный опрос проверки работоспособности во время запусков Playwright. |
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
Отключает цикл проверки работоспособности токенов OAuth во время тестов. |
OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS |
(не задано) | src/lib/tokenHealthCheck.ts |
Список провайдеров через запятую, исключённых из упреждающего цикла обновления токенов (например, codex,openai). Целевая альтернатива полному отключению проверки работоспособности: провайдеры с коротким TTL продолжают обновляться, а каскадные провайдеры работают только реактивно. |
OMNIROUTE_HIDE_HEALTHCHECK_LOGS |
true |
scripts/dev/run-next-playwright.mjs |
Отключает вывод сообщений проверки работоспособности в stdout Playwright. |
OMNIROUTE_PLAYWRIGHT_SKIP_BUILD |
0 |
scripts/dev/run-next-playwright.mjs |
Пропускает производственную сборку Next.js перед запуском Playwright (оптимизация CI). |
OMNIROUTE_SKIP_UNINSTALL_HOOK |
0 |
scripts/build/uninstall.mjs |
Пропускает хук удаления OmniRoute (используется CI, чтобы сохранить node_modules без изменений). |
ECOSYSTEM_SERVER_WAIT_MS |
180000 |
scripts/dev/run-ecosystem-tests.mjs |
Время ожидания (мс), в течение которого сервер должен перейти в работоспособное состояние перед запуском тестов экосистемы/протокола. |
ELECTRON_SMOKE_URL |
http://127.0.0.1:20128/login |
scripts/dev/smoke-electron-packaged.mjs |
URL, по которому инструментарий дымового тестирования Electron ожидает доступность упакованного приложения. |
ELECTRON_SMOKE_TIMEOUT_MS |
45000 |
scripts/dev/smoke-electron-packaged.mjs |
Общее время ожидания (мс), по истечении которого инструментарий дымового тестирования прекращает работу. |
ELECTRON_SMOKE_SETTLE_MS |
2000 |
scripts/dev/smoke-electron-packaged.mjs |
Период стабилизации (мс) после загрузки страницы. |
ELECTRON_SMOKE_APP_EXECUTABLE |
(автоматически) | scripts/dev/smoke-electron-packaged.mjs |
Явно заданный путь к исполняемому файлу упакованного приложения Electron. |
ELECTRON_SMOKE_DATA_DIR |
(tmpdir) | scripts/dev/smoke-electron-packaged.mjs |
Каталог данных для дымового тестирования Electron. |
ELECTRON_SMOKE_KEEP_DATA |
0 |
scripts/dev/smoke-electron-packaged.mjs |
Установите значение 1, чтобы сохранить каталог данных smoke-теста после запуска. |
ELECTRON_SMOKE_STREAM_LOGS |
0 |
scripts/dev/smoke-electron-packaged.mjs |
Установите значение 1, чтобы во время запуска передавать журналы Electron в stdout. |
ELECTRON_SMOKE_COLD_RESTART |
0 |
scripts/dev/smoke-electron-packaged.mjs |
#7592: повторный запуск с тем же каталогом данных и проверка того, что при втором запуске выбран нативный драйвер SQLite. |
CLI_DEVIN_BIN |
(поиск в PATH) | open-sse/executors/devin-cli.ts |
Переопределяет путь к исполняемому файлу Devin CLI. |
Конвейер перевода документации
Заголовок раздела «Конвейер перевода документации»Используется скриптом 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 (самостоятельный хостинг)
Заголовок раздела «27. Лента Radar (самостоятельный хостинг)»Необязательное дополнение, управляемое флагом функции RADAR_ENABLED (по умолчанию отключён — это флаг
функции, переключаемый через Settings/DB, а не переменная окружения; см.
docs/frameworks/RADAR.md).
Первые четыре переменные ниже позволяют при необходимости переопределить параметры для самостоятельно размещённой или форкнутой ленты и
процессов получения ключей спонсоров. Пятая переменная, RADAR_ADMIN_URL, представляет собой отдельную ссылку без значения по умолчанию на закрытую
операционную панель владельца. Полную документацию модуля и
сквозную последовательность активации и управляемой настройки
см. в docs/frameworks/RADAR.md.
Универсальный компонент чтения объявлений Home/Changelog не настраивается с помощью переменной
окружения и не зависит от флага функции RADAR_ENABLED. Он считывает URL общедоступного репозитория
news.json, объявленный в src/shared/utils/releaseNotes.ts, используя
только GET; идентификаторы скрытых объявлений сохраняются в локальном хранилище браузера.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
RADAR_FEED_URL |
https://radar.omniroute.online |
src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts |
Базовый URL, общий для отдельно подписанных лент каталога, рефералов, предложений для спонсоров и Intel. Переопределите его, чтобы использовать самостоятельно размещённый или форкнутый сервис. |
RADAR_FEED_PUBKEY |
(закреплённый ключ по умолчанию) | src/lib/radar/pinnedKeys.ts |
Открытый ключ Ed25519 (SPKI в формате base64-DER или PEM), используемый для проверки подписей пользовательской ленты. |
RADAR_CONTRIBUTOR_CLAIM_URL |
https://radar.omniroute.online/auth/github |
src/lib/radar/links.ts |
URL, который открывает кнопка панели управления «Я участник проекта» (процесс получения ключа спонсора через GitHub OAuth). |
RADAR_SUPPORTER_PLANS_URL |
https://radar.omniroute.online/planos |
src/lib/radar/links.ts |
URL, который открывает кнопка панели управления «Поддержать проект» (страница оплаты/тарифов). |
RADAR_ADMIN_URL |
(не задано) | src/lib/radar/links.ts |
Ссылка на закрытую операционную панель, доступную только владельцу. Требуется HTTPS, кроме случая HTTP-перенаправления на loopback-интерфейс через SSH; если значение не задано или недопустимо, элемент навигации не создаётся. |
Аудит: удалённые / неиспользуемые переменные
Заголовок раздела «Аудит: удалённые / неиспользуемые переменные»Следующие переменные присутствовали в предыдущих версиях .env.example, но не имеют ссылок во время выполнения в текущей кодовой базе. Они были удалены:
| Переменная | Причина |
|---|---|
STORAGE_DRIVER=sqlite |
Не считывается ни одним исходным файлом. SQLite — единственный поддерживаемый драйвер, поэтому выбор не требуется. |
INSTANCE_NAME=omniroute |
Присутствует в старой документации и шаблонах переменных окружения, но не используется во время выполнения. Может вернуться в будущей функции поддержки нескольких экземпляров. |
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 использует OAuth, а не исполняемый файл CLI). |
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. Среда выполнения больше не считывает эти переменные окружения — учётные данные поступают из Dashboard / data/provider-credentials.json / зашифрованной БД. |
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 |
Удалена вместе с другими неиспользуемыми заготовками API-ключей провайдеров в v3.8.0. |
Исправления значений по умолчанию
Заголовок раздела «Исправления значений по умолчанию»| Переменная | Старое значение в .env.example |
Фактическое значение по умолчанию | Исправление |
|---|---|---|---|
APP_LOG_RETENTION_DAYS |
90 |
7 |
✅ Вводящее в заблуждение значение удалено; 7 указано как значение по умолчанию |
CALL_LOG_RETENTION_DAYS |
90 |
7 |
✅ Вводящее в заблуждение значение удалено; 7 указано как значение по умолчанию |
Повторное создание конфигурации OpenCode (специализированные инструменты)
Заголовок раздела «Повторное создание конфигурации OpenCode (специализированные инструменты)»Используется скриптом scripts/ad-hoc/regen-opencode-config.ts для повторного создания opencode.json
с точными значениями limit.context и limit.output, полученными из работающего
экземпляра OmniRoute. Ни одна из этих переменных не требуется для обычной работы — скрипт
предназначен только для разработчиков.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_URL |
http://localhost:20128 |
scripts/ad-hoc/regen-opencode-config.ts |
Базовый URL экземпляра OmniRoute, к которому выполняется запрос /v1/models. |
OMNIROUTE_KEY |
(не задано) | scripts/ad-hoc/regen-opencode-config.ts |
API-ключ для аутентификации в конечной точке OmniRoute /v1/models. Если не задан, используется OPENCODE_API_KEY. |
OPENCODE_API_KEY |
(не задано) | scripts/ad-hoc/regen-opencode-config.ts |
API-ключ в стиле OpenCode (sk-...), записываемый в заново созданный opencode.json. Если не задан, используется OMNIROUTE_KEY. |
Средства автономной оценки сжатия (специализированные инструменты)
Заголовок раздела «Средства автономной оценки сжатия (специализированные инструменты)»Используется scripts/compression-eval/index.ts — CLI для автономной оценки сжатия.
Для обычной работы не требуется — предназначено только для разработчиков.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_EVAL_CREDENTIALS |
{} (пустой объект) |
scripts/compression-eval/index.ts |
Предоставленные оператором учётные данные в формате JSON для провайдера, проверяемого CLI автономной оценки сжатия (разбираются с помощью JSON.parse). Не задавайте для пробного запуска. |
Браузерные сеансы VNC
Заголовок раздела «Браузерные сеансы VNC»Используются src/lib/vncSession/manifest.ts для настройки безголовых сеансов Chromium на базе Docker для провайдеров автоматизации браузера. Все параметры необязательны — значения по умолчанию указаны ниже.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
Путь к исполняемому файлу Docker, используемому для запуска контейнеров VNC. |
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
Образ Docker для контейнера VNC Chromium. |
OMNIROUTE_VNC_CHROMIUM_ARGS |
(встроенные флаги) | src/lib/vncSession/manifest.ts |
Дополнительные аргументы CLI Chromium, передаваемые браузеру внутри контейнера. |
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 завершается. |
OMNIROUTE_VNC_MAX_MS |
1800000 |
src/lib/vncSession/manifest.ts |
Максимальная продолжительность сеанса (мс). |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
Максимальное количество одновременных сеансов VNC. |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
Время ожидания готовности браузера (мс). |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
Время ожидания завершения или очистки (мс). |
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»| Переменная | Значение по умолчанию | Описание |
|---|---|---|
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
Установите значение false, чтобы пропустить получение статистики OpenRouter по каждому провайдеру для дополнения каталога. |
OPENROUTER_PROVIDER_STATS_TTL_MS |
3600000 |
TTL кеша (мс) для полученной статистики провайдеров OpenRouter. |
Встроенная привязка Redis
Заголовок раздела «Встроенная привязка Redis»| Переменная | Значение по умолчанию | Описание |
|---|---|---|
REDIS_BIND_HOST |
127.0.0.1 |
Адрес привязки встроенной службы Redis. |
REDIS_PORT |
6379 |
Порт встроенной службы Redis. |
OMNIROUTE_REDIS_BIND_HOST |
– | Переопределение адреса привязки встроенной службы Redis на уровне OmniRoute. |
24. Дополнения в выпуске v3.8.50
Заголовок раздела «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 МБ) |
src/shared/middleware/chatBodyAdmission.ts |
Бюджет байтов в очереди для ожидания допуска: ограничивает общий объём буферизованных байтов тела запроса, ожидающих в рамках всего процесса, чтобы ожидание не приводило к росту кучи (#4380). При превышении бюджета немедленно возвращается допускающая повторную попытку ошибка 503. |
OMNIROUTE_CHAT_VIRTUAL_TTL_MS |
60000 (60 с) |
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 |
Ограничивает время, в течение которого вызов немедленного запуска ожидает выполнения уже запущенного задания, прежде чем начать запуск задания из очереди. |
ADOBE_FIREFLY_BROWSER_REFRESH |
включено | open-sse/services/adobeFireflySession.ts |
Поддерживает актуальность состояния IMS и состояния браузерных рисков с помощью сеансов Chrome CDP, привязанных к учётной записи; установите 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, который включает входящий вебхук и подписывает 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 |
Переопределение базового URL Bot API для прокси или самостоятельно размещённых серверов Bot API. |
TELEGRAM_WEBHOOK_TIMEOUT_MS |
60000 |
src/lib/telegram/config.ts |
Время ожидания исходящих вызовов Bot API в миллисекундах. |
OMNIROUTE_OPTIONAL_PACK_TAR |
1 (включено) |
scripts/build/optionalPackStaging.mjs |
Установите 0, чтобы не создавать архивы .tar.gz при подготовке необязательных пакетов машинного обучения и браузера для автономного дерева Electron (каталоги пакетов и optional-packs.index.json по-прежнему создаются). Используется процессом выпуска настольного приложения для уменьшения размера загружаемых артефактов. |
ChatGPT Web (Codex)
Заголовок раздела «ChatGPT Web (Codex)»Глобальные значения по умолчанию для безголового браузера и исходящего туннеля инструментов. Значения подключения, заданные на панели управления, имеют приоритет.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
CHATGPT_WEB_CODEX_CHROME_PATH |
(автоматическое определение) | open-sse/executors/chatgpt-web-codex.ts |
Явный путь к Chrome/Chromium для работы через npm, systemd и PM2. |
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 |
Глобальный идентификатор туннеля OpenAI для локальных циклов инструментов Codex. |
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 |
Точное имя вновь созданного пользовательского коннектора ChatGPT для моста MCP. |
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
Заголовок раздела «Мост OmniConductor»Долгоживущий потребитель SSE, который зеркалирует задачи хаба OmniConductor в локальный A2A TaskManager (src/lib/conductor/). Использование по выбору — мост запускается только тогда, когда задана переменная CONDUCTOR_HUB_URL. Только для серверной части: токен хаба никогда не должен попадать в браузер.
| Переменная | Значение по умолчанию | Исходный файл | Описание |
|---|---|---|---|
CONDUCTOR_HUB_URL |
(пусто) | src/lib/conductor/boot.ts |
Базовый URL хаба OmniConductor (например, 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 |
Базовый URL сервиса spokesperson (Faro), доступного через прокси чата панели управления (/api/conductor/ask). |
Планирование с учётом квот
Заголовок раздела «Планирование с учётом квот»Используется в 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) недостаточно для покрытия оценочной стоимости запроса до его отправки. Если бюджет не настроен, запрос разрешается. |
HagiCode
HagiCode — агентная среда разработки со структурированными процессами, параллельным выполнением несколькими агентами и интерфейсами Hero Dungeon.
Превращайте идеи в полезное ПО с более умным, быстрым и увлекательным агентным рабочим процессом.

- SmartСтруктурированные процессы превращают намерение в исполнимый путь от идеи до готового изменения.
- EfficientМультиагентные процессы параллельно продвигают исследование, реализацию и проверку.
- FunHero Dungeon делает длительную совместную разработку наглядной и увлекательной.