Environment Variables Reference (Español)
Tabla de contenido
Sección titulada «Tabla de contenido»- 1. Secretos obligatorios
- 2. Almacenamiento y base de datos
- 3. Red y puertos
- 4. Seguridad y autenticación
- 5. Saneamiento de entradas y protección de PII
- 6. Políticas de herramientas y enrutamiento
- 7. URLs y sincronización con la nube
- 8. Proxy de salida
- 9. Integración con herramientas de CLI
- 10. Integraciones con agentes internos y MCP
- 11. Credenciales de proveedores OAuth
- 12. Personalizaciones de User-Agent de proveedores
- 13. Compatibilidad de huellas digitales de CLI
- 14. Proveedores de claves de API
- 15. Configuración de tiempos de espera
- 16. Registro
- 17. Optimización de memoria
- 18. Sincronización de precios
- 19. Sincronización de modelos (desarrollo)
- 20. Configuración específica de proveedores
- 21. Estado del proxy
- 22. Depuración
- 23. Integración con GitHub
- 24. Entorno aislado de habilidades (v3.8.0+)
- 27. Fuente de Radar (alojamiento propio)
- Escenarios de despliegue
- Auditoría: variables eliminadas / obsoletas
1. Secretos obligatorios
Sección titulada «1. Secretos obligatorios»Estos deben configurarse antes de la primera ejecución. Sin ellos, la aplicación se negará a iniciarse o funcionará con valores predeterminados inseguros.
| Variable | Obligatoria | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|---|
JWT_SECRET |
Sí | (ninguno) | src/lib/auth |
Firma/verifica todas las cookies de sesión del panel de control (JWT). Genérela con openssl rand -base64 48. |
API_KEY_SECRET |
Sí | (ninguno) | src/lib/db/apiKeys.ts |
Clave de cifrado AES para los valores de claves de API almacenados en reposo en SQLite. Genérela con openssl rand -hex 32. |
INITIAL_PASSWORD |
Sí | CHANGEME |
Script de arranque | Establece la contraseña inicial de administración del panel de control (coincide con el valor predeterminado de .env.example; se mantiene deliberadamente insegura para forzar su cambio). Cámbiela antes del primer uso. Después de iniciar sesión, cámbiela mediante Panel de control → Configuración → Seguridad. |
OMNIROUTE_WS_BRIDGE_SECRET |
Sí (producción) | (sin definir) | src/app/api/internal/codex-responses-ws/route.ts |
Secreto compartido para el puente WebSocket interno de Codex Responses. Autentica las solicitudes del puente entre el relé WS de Electron/navegador y OmniRoute. ⚠️ OBLIGATORIO en producción: cuando no está definido, se rechazan todas las solicitudes del puente WS. Genérelo con openssl rand -base64 32. |
OMNIROUTE_SW_BUILD_ID |
No | (SHA de git) | next.config.mjs, scripts/build/assembleStandalone.mjs |
Identificador explícito para invalidar la caché del service worker del shell de la PWA (#11779); es el primero en la cadena de resolución. |
SOURCE_VERSION |
No | (sin definir) | next.config.mjs, scripts/build/assembleStandalone.mjs |
Segundo en la cadena; lo establecen los sistemas de compilación de PaaS (p. ej., al estilo de Heroku) como el commit desplegado. |
NEXT_PUBLIC_SW_BUILD_ID |
No | (derivado) | src/shared/components/PwaRegister.tsx |
Valor público del tiempo de compilación que el cliente utiliza para registrar /sw.js?v=…; se deriva de los dos anteriores y, después, del SHA de git. |
OMNIROUTE_PEER_STAMP_TOKEN |
No (automático) | (automático en cada arranque) | src/server/authz/policies/management.ts |
Secreto por proceso que demuestra que el sello de IP del par de confianza procede del propio servidor HTTP de OmniRoute (scripts/dev/peer-stamp.mjs). El middleware de autorización solo confía en la localidad de la solicitud (restricción por bucle local/LAN de las rutas LOCAL_ONLY) cuando el sello contiene este token. Se genera automáticamente en cada arranque; déjelo sin definir y fíjelo únicamente en configuraciones multiproceso que deban compartir el sello. |
Comandos de generación
Sección titulada «Comandos de generación»# Generar los cuatro secretos a la vez: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] Nunca confirme archivos
.envcon secretos reales en el control de versiones..gitignoreya excluye.env, pero verifíquelo antes de hacer push.
2. Almacenamiento y base de datos
Sección titulada «2. Almacenamiento y base de datos»OmniRoute usa SQLite (mediante better-sqlite3) para toda la persistencia. Estas variables controlan la ubicación, el cifrado y el ciclo de vida de los datos.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
DATA_DIR |
~/.omniroute/ |
src/lib/db/core.ts |
Directorio raíz para la base de datos SQLite, las copias de seguridad y los archivos de datos. Sobrescríbalo para volúmenes de Docker o rutas personalizadas. |
OMNIROUTE_ALLOW_DEFAULT_DATA_DIR |
(sin definir) | src/lib/dataPaths.ts |
Vía de escape para la protección de DATA_DIR en pruebas/evaluaciones (#10428). Las pruebas y las sondas de evaluación/impresión de Node (-e/--eval/-p/--print, incluidas las formas --eval=/--print=) sin DATA_DIR se redirigen a un directorio temporal desechable para impedir que abran la base de datos real del operador; establézcala en 1 para volver a habilitar el uso del directorio real. |
OMNIROUTE_BUILD_SHA |
(sin definir) | src/lib/monitoring/buildSha.ts |
SHA de Git del artefacto en ejecución. Lo registra npm run build:release; puede inyectarse en contenedores distribuidos sin el archivo centinela dist/BUILD_SHA. Se expone como system.buildSha en /api/monitoring/health. |
OMNIROUTE_RELEASE_REF |
origin/main |
scripts/build/buildProvenance.ts |
Referencia con la que la comprobación de procedencia del empaquetado del artefacto contrasta el SHA de la compilación (#10427). |
OMNIROUTE_ALLOW_CANARY_BUILD |
(sin definir) | scripts/build/buildProvenance.ts |
Establézcala en 1 para permitir el empaquetado de una compilación cuyo SHA no esté en la línea de publicación, registrándola como una versión canary deliberada en lugar de hacer que falle la comprobación (#10427). |
OMNIROUTE_SMOKE_API_KEY |
(sin definir) | scripts/ops/deploy-canary.mjs |
Clave de API para la sonda de humo del despliegue canary, enviada como Authorization: Bearer a /v1/chat/completions. Solo la usa el script de despliegue (#10429), nunca el servidor. No está relacionada con las variables OMNIROUTE_SMOKE_* del conjunto de pruebas de humo opcional de la CLI (RUN_CLI_SMOKE=1, OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS en tests/integration/upstream-cli-smoke.int.test.ts); consulte Integraciones de la CLI → Barrido de humo real. |
OMNIROUTE_BUILDING |
(sin definir) | src/lib/buildPhase.ts |
Señal de fase de compilación (#10060): scripts/build/build-next-isolated.mjs la establece en 1 y cada proceso de trabajo de compilación generado la hereda, de modo que la capa de la base de datos devuelve un stub sin operaciones en lugar de cargar el complemento nativo better-sqlite3 (que interrumpe el proceso de trabajo al salir). Nunca se establece para el servidor en ejecución. |
OMNIROUTE_SKIP_NATIVE_DEP_CHECK |
0 |
scripts/check/check-native-deps.mjs |
Establézcala en 1 para omitir la comprobación opcional previa a la compilación de dependencias nativas en árboles de dependencias integradas poco habituales. Esto no permite compilar si falta una dependencia; úsela únicamente cuando las dependencias nativas se proporcionen por separado. |
OMNIROUTE_DATA_DIR |
(sin definir) | open-sse/executors/promptql/threadSticky.ts |
Alias alternativo de DATA_DIR, que solo se comprueba cuando DATA_DIR no está definida. Se usa para localizar la caché persistente en disco de sesiones con afinidad de hilo del ejecutor de PromptQL (<dir>/promptql-thread-sessions.json); si no se define ninguna de las dos variables, la caché permanece únicamente en memoria (no persiste entre reinicios). |
OMNIROUTE_PLUGINS_DIR |
(sin definir) | src/lib/plugins/scanner.ts |
Directorio que lee el escáner de complementos en tiempo de ejecución y raíz en la que instala el administrador de complementos; sustituye el valor predeterminado derivado del directorio personal (#11827). En Docker/K8s, apúntelo al árbol de complementos montado mediante bind en lugar de cambiar HOME únicamente para reubicar la ruta de exploración (HOME también rige todos los demás comportamientos relativos al directorio personal). Sin definir = ~/.omniroute/plugins, o /tmp/.omniroute/plugins cuando el proceso no exporta ningún directorio personal; esta variable elimina la falta de detección silenciosa resultante. El directorio resuelto se registra una vez durante el inicio como scanner.dir_resolved, junto con la entrada que prevaleció. Solo del lado del servidor: los complementos de comandos de la CLI conservan su propio OMNIROUTE_PLUGIN_PATH (sección 9). |
STORAGE_ENCRYPTION_KEY |
(vacío = deshabilitado) | src/lib/db/encryption.ts |
Clave AES para el cifrado completo en reposo de la base de datos SQLite. Genérela con openssl rand -hex 32. |
STORAGE_ENCRYPTION_KEY_VERSION |
v1 |
scripts/build/bootstrap-env.mjs, electron/main.js |
Etiqueta de versión de la clave de cifrado. Increméntela al rotar la clave para permitir el descifrado de copias de seguridad antiguas. |
DISABLE_SQLITE_AUTO_BACKUP |
false |
src/lib/db/backup.ts |
Cuando es true, omite las copias de seguridad rutinarias/previas a la escritura del archivo SQLite (guardar/borrar precios de models.dev, escrituras de configuración). Las copias de seguridad manuales y previas a una restauración se siguen ejecutando. No deshabilita la instantánea de seguridad duradera obligatoria del ejecutor de migraciones ni la protección contra migraciones masivas para una base de datos persistente existente. Las copias de seguridad no manuales se limitan a una como máximo cada 60 minutos. En el panel, Configuración → Almacenamiento puede deshabilitarse de forma independiente la copia de seguridad automática rutinaria. |
OMNIROUTE_CRYPT_KEY |
(sin definir) | src/lib/db/encryption.ts |
Alias heredado de STORAGE_ENCRYPTION_KEY. Se acepta como alternativa cuando la variable principal no está presente. |
OMNIROUTE_API_KEY_BASE64 |
(sin definir) | src/lib/db/encryption.ts |
Alias heredado (formato codificado en Base64) aceptado como alternativa. Se decodifica automáticamente antes de usarse. |
OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS |
(sin definir) | src/lib/db/core.ts |
Sobrescribe el intervalo de comprobación periódica del estado de SQLite (ms). Cuando no está definido, los valores predeterminados se derivan de NODE_ENV. |
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS |
(eliminado) | src/lib/db/walMaintenance.ts |
Eliminado. Un wal_checkpoint(TRUNCATE) periódico en vivo puede invalidar el mapeo wal-index compartido y provocar que el proceso falle con SIGBUS (#13973), por lo que el planificador ya no existe. La variable no tiene efecto: un valor positivo registra una advertencia de obsolescencia una sola vez, mientras que 0 o un valor sin definir no genera ningún mensaje. El WAL se mantiene mediante puntos de control PASSIVE (abajo) y se trunca mediante el punto de control del apagado. |
OMNIROUTE_WAL_PASSIVE_INTERVAL_MS |
300000 (5 min) |
src/lib/db/walMaintenance.ts |
Sobrescribe el intervalo frecuente de wal_checkpoint(PASSIVE) (ms). Mantiene pequeños los marcos WAL pendientes para que los puntos de control sigan siendo rápidos y el archivo WAL permanezca acotado entre los truncamientos del apagado. 0 lo deshabilita. |
OMNIROUTE_WAL_GUARD_MAX_MB |
256 |
src/lib/db/walMaintenance.ts |
Cuando una ejecución periódica PASSIVE detecta que el archivo WAL supera este tamaño, ejecuta wal_checkpoint(RESTART) para que el WAL comience de nuevo sin reescribir el wal-index mapeado. Se eliminaron los puntos de control en modo de truncamiento en vivo (consulte la fila OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS). |
OMNIROUTE_PRESSURE_SELF_RESTART |
false |
open-sse/utils/resourcePressure.ts |
Establézcalo en 1/true/yes/on para salir del proceso después de que la presión crítica sobre los recursos se mantenga durante OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS, permitiendo que un supervisor (systemd Restart=always, política de reinicio de Docker) restaure un proceso limpio en lugar de responder con errores 503 indefinidamente. |
OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS |
120000 (2 min) |
open-sse/utils/resourcePressure.ts |
Tiempo durante el cual debe persistir la presión crítica antes de que se active la salida para el autorreinicio. |
OMNIROUTE_SQLJS_WASM_PATH |
(detección automática) | src/lib/db/adapters/sqljsAdapter.ts |
Ruta explícita (absoluta o relativa al directorio de trabajo actual) a sql-wasm.wasm al utilizar el adaptador alternativo WASM de sql.js. Cuando no está definida, se detecta automáticamente mediante las dependencias del paquete y las posibles estructuras de directorios. |
OMNIROUTE_BATCH_RETENTION_DAYS |
30 |
src/lib/db/cleanup.ts |
Días durante los cuales el proceso de limpieza automática conserva, antes de eliminarlos, los puntos de control, los archivos de entrada/salida/error referenciados y la fila de un trabajo terminal (completado/fallido/cancelado/expirado) de la API de lotes. Solo surte efecto una vez habilitado BATCH_AND_FILE_AUTO_CLEANUP_ENABLED; coincide con el periodo de retención de resultados de la API de lotes de OpenAI. No afecta a la ruta DELETE /api/v1/batches/delete-completed activada por el operador, que, por diseño, permanece incondicional (sin filtro por antigüedad). |
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED |
false |
src/lib/db/cleanup.ts |
Cuando es true, permite que el proceso de limpieza automática elimine los trabajos terminales de la API de lotes (y sus puntos de control) que superen OMNIROUTE_BATCH_RETENTION_DAYS, y borre el contenido BLOB de los archivos cargados después de su propio expires_at. Está deshabilitado de forma predeterminada: todas las instalaciones existentes conservan estos datos exactamente como antes hasta que un operador lo habilite. También es un indicador de funcionalidad editable desde el panel; consulte docs/reference/FEATURE_FLAGS.md → Tiempo de ejecución. |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts, src/lib/db/healthCheck.ts |
Establécelo en 1 para omitir por completo la comprobación de estado de la base de datos durante el inicio. Resulta útil para tareas de corta duración y pruebas de integración. |
OMNIROUTE_FORCE_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts |
Establécelo en 1 para forzar la activación del bucle de comprobación de estado de la base de datos, incluso cuando normalmente se omitiría (p. ej., en tareas de corta duración). |
OMNIROUTE_SKIP_POSTINSTALL |
0 |
scripts/postinstall.mjs |
Establécelo en 1 para omitir la preparación del entorno de ejecución nativo durante npm install. Resulta útil en instalaciones de CI/sin interfaz gráfica donde sqlite ya está compilado. |
OMNIROUTE_MIGRATIONS_DIR |
(detección automática) | src/lib/db/migrationRunner.ts |
Reemplaza el directorio que analiza el ejecutor de migraciones. Resulta útil al distribuir migraciones empaquetadas en compilaciones personalizadas. |
OMNIROUTE_EXTRA_MIGRATIONS_DIRS |
(no establecido) | src/lib/db/migrationRunner/extraDirs.ts |
Directorios de migración adicionales en forma de entradas namespace=dir separadas por el delimitador de rutas de la plataforma (p. ej., ee=/opt/app/enterprise/db/migrations). Los archivos encontrados allí se registran como <namespace>-<number>, por lo que una distribución que incluya sus propias migraciones nunca entra en conflicto con los espacios numéricos del proyecto original. Una entrada con formato incorrecto, un espacio de nombres no válido o un directorio inexistente provocan un error durante el inicio en lugar de omitir silenciosamente el esquema. |
OMNIROUTE_MAX_PENDING_MIGRATIONS |
50 |
src/lib/db/migrationRunner.ts |
Umbral de seguridad para migraciones pendientes en masa (#3416). El inicio se interrumpe si hay más migraciones pendientes que este límite en una base de datos existente (protege frente al borrado de la tabla de seguimiento). Auméntalo para restaurar una copia de seguridad antigua; establécelo en 0 para desactivar la comprobación. |
OMNIROUTE_INSTALL_UPGRADE_WORKDIR |
(<repo>/.install-upgrade) |
scripts/check/check-install-upgrade.mjs |
Directorio de trabajo para la puerta de validación de versiones check:install-upgrade. Necesita aproximadamente 12 GB (dos árboles de instalación de ~3 GB más el archivo tar), por lo que no debe ejecutarse en un tmpfs pequeño; en el ejecutor autohospedado, /tmp es un tmpfs de 12 GB respaldado por RAM y la puerta de validación lo agotó, truncando el paquete. |
OMNIROUTE_SPEND_FLUSH_INTERVAL_MS |
(valor predeterminado en el código) | src/lib/spend/batchWriter.ts |
Intervalo de vaciado (ms) para el escritor de gastos/costes por lotes. Los valores más bajos reducen la agrupación de escrituras; los valores más altos reducen la contención en la base de datos. |
OMNIROUTE_SPEND_MAX_BUFFER_SIZE |
(valor predeterminado en el código) | src/lib/spend/batchWriter.ts |
Número máximo de entradas de gasto almacenadas en el búfer antes de forzar su vaciado. Auméntalo en despliegues con muchas consultas por segundo; redúcelo cuando limitar el uso de memoria sea más importante. |
OMNIROUTE_PROXY_FETCH_DEBUG |
(no establecido) | open-sse/utils/proxyFetch.ts |
Establécelo en "true" para emitir registros de depuración [ProxyFetch] en la ruta de retransmisión de Vercel. Está desactivado de forma predeterminada para evitar revelar indicios sobre el enrutamiento. |
PROXY_LOG_INCLUDE_IPS |
false |
src/lib/proxyLogger.ts |
Establécelo en "true" o "1" para incluir las IP del cliente y de salida, así como el prefijo de la cuenta, en la línea detallada del registro del proceso [ProxyEgress]. Se mantiene DESACTIVADO de forma predeterminada para que el registro del proceso no revele las IP ni el prefijo de la cuenta. |
OMNIROUTE_DEBUG |
(no establecido) | bin/cli/commands/quota.mjs |
Establécelo en 1 para imprimir en stderr diagnósticos de tiempo por solicitud ([omniroute] GET <path> completed in Nms) desde los comandos de cuota de la CLI. |
OMNIROUTE_HEALTHCHECK_PATH |
(automático) | scripts/dev/healthcheck.mjs |
Ruta explícita que sondea la comprobación de estado del contenedor. Si no se establece, la sonda la deriva de OMNIROUTE_BASE_PATH; al establecerla, se vuelve a utilizar el endpoint de monitorización profunda. |
OMNIROUTE_DEBUG_COMPLETION |
(no establecido) | bin/cli/commands/completion.mjs |
Establécelo en cualquier valor no vacío para emitir diagnósticos [omniroute completion] desde las rutas de la caché de autocompletado del shell de la CLI (lectura/actualización/escritura). Está desactivado de forma predeterminada: los fallos de estas cachés se omiten silenciosamente para que una caché ausente o dañada nunca interrumpa el autocompletado mediante tabulación. |
BATCH_RETRY_DURATION_MS |
86400000 (24 h) |
open-sse/services/batchProcessor.ts |
Ventana máxima de reintentos para elementos individuales del lote (ms). Los elementos que superen esta duración se marcan como fallidos. |
BATCH_BACKOFF_BASE_MS |
5000 |
open-sse/services/batchProcessor.ts |
Retraso base (ms) para el retroceso exponencial en los reintentos de elementos por lotes. |
BATCH_BACKOFF_MAX_MS |
3600000 (1 h) |
open-sse/services/batchProcessor.ts |
Límite (ms) del retroceso exponencial entre reintentos de elementos por lotes. |
BATCH_MAX_CONCURRENT |
1 |
open-sse/services/batchProcessor.ts |
Número máximo de lotes procesados simultáneamente. Auméntelo para incrementar el rendimiento; manténgalo bajo para evitar avalanchas de límites de tasa. |
[!IMPORTANT] Antes de modificar una base de datos persistente existente, el ejecutor de migraciones publica una instantánea completa, direccionada por contenido, en
DATA_DIR/db_backups/. La publicación requiere un sistema de archivos que admita enlaces físicos sin sobrescritura dentro del mismo sistema de archivos, además de sincronización duradera de archivos. Los hosts POSIX también requieren sincronización de directorios; en Windows, Node puede rechazar los identificadores de directorio, por lo que OmniRoute vacía el archivo publicado y trata la sincronización de entradas de directorio como una operación de mejor esfuerzo. Si elDATA_DIRmontado no puede proporcionar esas garantías, el inicio falla de forma segura antes de aplicar una migración. MuevaDATA_DIRa un volumen que admita esas primitivas; no utiliceDISABLE_SQLITE_AUTO_BACKUPpara eludir la seguridad de las migraciones.
Escenarios
Sección titulada «Escenarios»| Escenario | Configuración |
|---|---|
| Desarrollo local | Mantenga todos los valores predeterminados. La base de datos se encuentra en ~/.omniroute/omniroute.db. |
| Docker | DATA_DIR=/data + monte un volumen en /data. |
| Cifrado en reposo | Establezca STORAGE_ENCRYPTION_KEY + ¡guarde copias de seguridad de la clave! Perderla = perder los datos. |
| CI/Pruebas | DATA_DIR=/tmp/omniroute-test — efímero, no se necesita cifrado. |
3. Red y puertos
Sección titulada «3. Red y puertos»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
PORT |
20128 |
src/lib/runtime/ports.ts |
Puerto principal tanto para la interfaz del panel como para los endpoints de la API (modo de puerto único). |
OMNIROUTE_BASE_PATH |
(vacío = raíz) | next.config.mjs, scripts/docker/ensure-docker-base-path.mjs |
Subruta de URL para servir OmniRoute detrás de un proxy inverso (establece basePath de Next.js; las redirecciones de autenticación tienen en cuenta basePath). Por ejemplo, /omniroute. En Docker, el valor se incorpora durante docker build (ARG OMNIROUTE_BASE_PATH); las imágenes raíz precompiladas pueden aplicar un valor distinto en tiempo de ejecución una vez al iniciar el contenedor, antes de que arranque Next.js. Establezca NEXT_PUBLIC_BASE_URL en el origen público, incluida la misma subruta. |
NEXT_PUBLIC_OMNIROUTE_BASE_PATH |
(vacío = raíz) | src/shared/hooks/useDisplayBaseUrl.ts |
Reflejo visible para el navegador de OMNIROUTE_BASE_PATH, insertado durante la compilación para que la visualización del endpoint en el panel muestre https://host/omniroute/v1 en lugar de https://host/v1. Si no se establece, usa OMNIROUTE_BASE_PATH. Vuelva a compilar después de cambiarlo (basePath de Next se define durante la compilación). |
DASHBOARD_ALLOW_EMBED |
(sin establecer = nunca se puede mostrar en un marco) | next.config.mjs, scripts/build/dashboardEmbed.mjs |
Permite de forma opcional incrustar las páginas HTML en un iframe. Si no se establece, todas las rutas incluyen frame-ancestors 'none' + X-Frame-Options: DENY. Establézcalo en vscode para servir las páginas (panel, inicio de sesión, documentación y página de inicio) con frame-ancestors 'self' vscode-webview: y sin X-Frame-Options, de modo que el navegador simple de VS Code pueda representarlas (modo dashboardOpen: "editor" de OmniCopilot). La superficie de la API (/api, /v1, /v1beta, /a2a, /healthz, alias de nivel raíz) mantiene los encabezados estrictos en ambos casos. Solo se reconoce vscode; 1/true no lo habilitan. Se define durante la compilación: vuelva a compilar después de cambiarlo (docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode para imágenes; establecerlo en una instalación precompilada no tiene efecto). |
API_PORT |
(sin establecer) | src/lib/runtime/ports.ts |
Cuando se establece, sirve la API proxy /v1/* en este puerto independiente. |
API_HOST |
0.0.0.0 |
src/lib/runtime/ports.ts |
Dirección de enlace para el puerto de la API. |
DASHBOARD_PORT |
(sin establecer) | src/lib/runtime/ports.ts |
Cuando se establece, sirve la interfaz del panel en este puerto independiente. |
OMNI_MAX_CONCURRENT_CONNECTIONS |
0 (deshabilitado) |
src/sse/utils/backpressure.ts |
Limita las conexiones de chat simultáneas en curso; las solicitudes que superen el límite reciben 503 con Retry-After. Un entero positivo habilita la protección; no establecerlo o usar 0 la deshabilita. |
OMNIROUTE_INSTANCE_ID |
(sin establecer) | src/shared/resilience/peerRouting.ts |
ID estable y único de esta puerta de enlace al encadenar instancias de OmniRoute. Habilita las comprobaciones de bucles entre pares para solicitudes entrantes. Caracteres permitidos: letras, dígitos, ., _, : y -; máximo de 64 caracteres. |
OMNIROUTE_PEER_URLS |
(sin establecer) | src/shared/resilience/peerRouting.ts, open-sse/executors/base.ts |
URLs base de OmniRoute separadas por comas que pueden recibir X-OmniRoute-Peer-Trace. Solo las URLs ascendentes incluidas explícitamente en la lista de permitidas reciben metadatos de pares; el resto de proveedores no se modifica. |
OMNIROUTE_PEER_MAX_HOPS |
4 |
src/shared/resilience/peerRouting.ts |
Número máximo de instancias de OmniRoute visitadas previamente que se acepta en una solicitud encadenada (1-32). Las instancias repetidas o un presupuesto agotado devuelven HTTP 508 Loop Detected. |
PROD_DASHBOARD_PORT |
20130 |
docker-compose.prod.yml |
Puerto publicado en el host para el panel en el modo de producción de Docker. |
PROD_API_PORT |
20131 |
docker-compose.prod.yml |
Puerto publicado en el host para la API en el modo de producción de Docker. |
OMNIROUTE_PORT |
(sin establecer) | src/lib/runtime/ports.ts |
Tiene prioridad sobre PORT cuando se ejecuta dentro de Electron u otros contenedores. |
LIVE_WS_PORT |
20129 |
src/server/ws/liveServer.ts |
Puerto para el servidor de supervisión en directo mediante WebSocket en tiempo real. |
LIVE_WS_HOST |
127.0.0.1 |
src/server/ws/liveServer.ts |
Dirección de enlace para el servidor WebSocket en directo. Establézcala en 0.0.0.0 para exponerlo en la LAN (configure también LIVE_WS_ALLOWED_ORIGINS). |
LIVE_WS_ALLOWED_ORIGINS |
(sin establecer) | src/server/ws/liveServer.ts |
Orígenes adicionales separados por comas autorizados para abrir un WebSocket en directo. Los orígenes del panel en la interfaz de bucle invertido ya están permitidos de forma predeterminada. |
LIVE_WS_ALLOWED_HOSTS |
(sin establecer) | src/server/ws/liveServerAllowList.ts |
Nombres de host adicionales separados por comas permitidos para los orígenes de WebSocket en directo. A diferencia de LIVE_WS_ALLOWED_ORIGINS (URLs de origen completas), solo coincide con la parte del host; resulta útil para configuraciones de LAN/Tailscale. |
NEXT_PUBLIC_LIVE_WS_PUBLIC_URL |
(sin establecer) | src/hooks/useLiveDashboard.ts |
URL pública del WebSocket del panel en directo (en el navegador). Establézcala cuando el servidor WS esté detrás de un proxy inverso o de Cloudflare Tunnel (por ejemplo, wss://ws.my-ai.com/live-ws); el navegador se conectará allí en lugar de a ws://hostname:20132. La parte de la ruta también se usa como ruta de actualización de WebSocket (valor predeterminado: /live-ws). |
OMNIROUTE_ENABLE_LIVE_WS |
true |
src/server/ws/liveServer.ts and scripts/start-ws-server.mjs |
Establézcalo en 0 o false para deshabilitar el servidor WebSocket en tiempo real (habilitado de forma predeterminada y enlazado a la interfaz de bucle invertido). Conmutador para CI/arneses de prueba que deshabilita el script auxiliar independiente de WebSocket en directo. |
RELAY_IP_PER_MINUTE |
30 |
src/app/api/v1/relay/chat/completions/route.ts |
Límite de frecuencia del relé por (token, IP), en solicitudes/minuto. Se mantiene en memoria por instancia. 0 o un valor negativo deshabilita el control por IP (el límite de la base de datos por token sigue aplicándose). |
NODE_ENV |
production |
Núcleo de Next.js | Controla el nivel de detalle de los registros, el almacenamiento en caché, la exposición de detalles de errores y las optimizaciones de Next.js. |
OMNIROUTE_USE_TURBOPACK |
1 (Turbopack — valor predeterminado del código) |
package.json / Next.js 16 |
Turbopack es el empaquetador predeterminado para npm run dev y npm run build (compilaciones entre 2 y 3 veces más rápidas, según pruebas comparativas). Establézcalo en 0 para volver a webpack en Windows cuando se produzcan incompatibilidades con enlaces nativos o con el empaquetador, o en máquinas con RAM limitada; se sabe que las compilaciones de producción con Turbopack en esta línea de versiones de Next.js (16.2.x) alcanzan picos de memoria mucho mayores que webpack en grafos de módulos grandes (la corrección de expulsión de memoria de Turbopack de Next 16.3 aún no es estable); la alternativa con webpack alcanza picos mucho menores. Consulte #6409. |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
(sin establecer) | src/lib/db/core.ts / src/lib/db/healthCheck.ts |
Establézcalo en 1 para omitir la comprobación de integridad de SQLite durante el inicio. Resulta útil para acelerar el arranque con bases de datos grandes. |
NOTIFY_SOCKET |
(sin establecer) | systemd (protocolo sd_notify) | Lo establece systemd cuando el proceso se ejecuta bajo una unidad de servicio con integración de sd_notify; OmniRoute lo lee (consulte OMNIROUTE_DISABLE_SD_NOTIFY) para enviar notificaciones READY/WATCHDOG. El usuario nunca debe establecerlo. |
OMNIROUTE_DISABLE_SD_NOTIFY |
(sin establecer) | scripts/dev/systemd-notify.mjs |
Establézcalo en 1 para deshabilitar sd_notify de systemd (Type=notify / WatchdogSec=), incluso cuando se ejecute bajo una unidad de systemd. El notificador no realiza ninguna operación fuera de systemd en ningún caso. |
CREDENTIAL_HEALTH_CHECK_INTERVAL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/scheduler.ts |
Intervalo (ms) del programador de comprobaciones de estado de credenciales en segundo plano. Mínimo: 10000 (10 s). |
CREDENTIAL_HEALTH_CACHE_TTL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/cache.ts |
TTL (ms) del estado de salud de credenciales almacenado en caché. |
OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK |
false |
src/lib/credentialHealth/scheduler.ts |
Establézcalo en 1 o true para deshabilitar las pruebas periódicas en segundo plano de las conexiones de proveedores. Los proveedores de búsqueda (SEARCH_VALIDATOR_CONFIGS en src/lib/providers/validation/searchProviders.ts, por ejemplo, tavily-search) siempre se excluyen del barrido: su «validación» es una consulta real facturada por el proveedor ascendente, por lo que nunca se comprueba su estado de forma programada (#9970). |
HOST |
0.0.0.0 |
scripts/dev/run-next.mjs |
Dirección de enlace para el servidor de desarrollo/inicio de Next.js. Cuando se establece, sustituye el valor predeterminado 0.0.0.0. |
HOSTNAME |
127.0.0.1 |
scripts/dev/run-next-playwright.mjs |
Dirección de enlace utilizada por el ejecutor de Playwright al iniciar Next.js. El valor predeterminado es 127.0.0.1 para realizar pruebas herméticas. No la use para omniroute serve; use OMNIROUTE_SERVER_HOST en su lugar (los shells POSIX establecen automáticamente HOSTNAME con el nombre de la máquina; .env no puede sobrescribirlo). |
OMNIROUTE_SERVER_HOST |
0.0.0.0 |
bin/cli/commands/serve.mjs |
Dirección de enlace para omniroute serve. Evita la colisión con la variable HOSTNAME del shell POSIX (bash/zsh siempre la establecen con el nombre de la máquina). Si no se establece, usa 0.0.0.0. (#6194) |
Modos de puerto
Sección titulada «Modos de puerto»┌────────────────────────── Puerto único (predeterminado) ───────────────────┐│ PORT=20128 ││ → Panel: http://localhost:20128 ││ → API: http://localhost:20128/v1/chat/completions │└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Puertos separados ───────────────────────────────┐│ DASHBOARD_PORT=20128 ││ API_PORT=20129 ││ API_HOST=0.0.0.0 ││ → Panel: http://localhost:20128 ││ → API: http://0.0.0.0:20129/v1/chat/completions ││ Caso de uso: Exponer la API a la LAN y restringir el panel a localhost. │└─────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────── Producción con Docker ────────────────────────────┐│ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 ││ → Asigna puertos del contenedor a puertos del host en docker-compose.prod.yml. │└─────────────────────────────────────────────────────────────────────────────┘4. Seguridad y autenticación
Sección titulada «4. Seguridad y autenticación»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
MACHINE_ID_SALT |
endpoint-proxy-salt |
src/lib/auth |
Sal combinada con identificadores de hardware para generar la huella digital de la máquina. Cámbiela en cada despliegue para garantizar el aislamiento. |
OMNIROUTE_CLI_SALT |
(sin establecer = sal aleatoria por instalación, almacenada de forma persistente en <DATA_DIR>/cli-token-salt.json) |
src/lib/machineToken.ts |
Sal HMAC para derivar el token de autenticación de la CLI local. Establecer este valor rota todos los tokens de la CLI en la máquina y siempre tiene prioridad sobre la sal almacenada. Consulte docs/security/CLI_TOKEN.md. |
AUTH_COOKIE_SECURE |
false |
src/lib/auth |
Establece el atributo Secure en las cookies de sesión. Debe ser true cuando se ejecute detrás de HTTPS. |
REQUIRE_API_KEY |
false |
Middleware de la API | Cuando es true, todas las solicitudes del proxy a /v1/* deben incluir una clave de API válida. Este indicador no controla GET /v1/models, que sigue la configuración de inicio de sesión del panel (requireAuthForModels); por lo tanto, un 401 de /v1/models NO significa que la inferencia esté protegida. Consulte docs/security/INFERENCE_AUTH_POSTURE.md (#13695). |
ALLOW_API_KEY_REVEAL |
false |
src/shared/constants/featureFlagDefinitions.ts |
Permite revelar los valores completos de las claves de API en la interfaz del panel. Se puede configurar desde los indicadores de funcionalidades del panel; supone un riesgo de seguridad en instancias compartidas. |
NO_LOG_API_KEY_IDS |
(vacío) | src/lib/compliance/index.ts |
IDs de claves de API separados por comas que omiten el registro de solicitudes (cumplimiento del RGPD). |
DEFAULT_RATE_LIMIT_PER_DAY |
(sin establecer = ilimitado) | src/shared/utils/apiKeyPolicy.ts |
Presupuesto alternativo de solicitudes por día aplicado a las claves de API cuya columna rate_limits es nula. Sin establecer o vacío: sin límite implícito (#2289, #11017). 0 equivale a ilimitado. Un entero positivo N habilita N/día, 5N/semana y 20N/mes. Los valores no vacíos con formato incorrecto recurren a los límites heredados de 1000/día, 5000/semana y 20000/mes. |
MAX_BODY_SIZE_BYTES |
10485760 (10 MB) |
src/shared/middleware/bodySizeGuard.ts |
Tamaño máximo permitido del cuerpo de la solicitud. Rechaza las cargas útiles que superen este límite. |
OMNIROUTE_CHAT_LARGE_BODY_BYTES |
262144 (256 KB) |
src/shared/middleware/chatBodyAdmission.ts |
Los cuerpos reales de las solicitudes que alcancen o superen este umbral adquieren, antes del análisis de JSON, la concesión atómica local al proceso para operaciones pesadas (ruta BYTE, incluido POST /v1/responses). Usa la misma vía de escape por margen saludable de #10437 que las solicitudes estructuralmente pesadas; sigue estando limitada por OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110, para que #7849 no vuelva a producirse. |
OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES |
52428800 (50 MB) |
src/shared/middleware/chatBodyAdmission.ts |
Límite estricto de las rutas de chat aplicado a los bytes leídos durante la ingesta acotada, incluidas las solicitudes con Content-Length ausente, no válido o falseado; el exceso recibe 413. |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT |
(sin establecer — sin límite por número de solicitudes) | src/shared/middleware/chatBodyAdmission.ts |
#503-fanout: este límite heredado de NÚMERO de solicitudes ahora solo se aplica cuando se establece explícitamente. Si se deja sin establecer (el valor predeterminado), la admisión de solicitudes de chat pesadas queda controlada por OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES: un presupuesto de BYTES derivado automáticamente y dimensionado según el límite real de memoria del proceso en un proceso (un heap de V8). Dos solicitudes /v1/responses solapadas de ~750 000 tokens hacen abortar heaps de ~12 GiB (#7849): una advertencia sobre el presupuesto de memoria, no un máximo estricto de producto de 2. Un proceso saludable (con el heap por debajo de la proporción de descarte) PUEDE admitir más solicitudes /v1/responses largas simultáneas mediante OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM. Decenas de clientes SSE de larga duración (40–50) dependen del heap + OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110, no de un «máximo de 2». Aumentar esto a ciegas para «usar el host» vuelve a introducir #7849. Multiplique los heaps con N DATA_DIR independientes (#11024); nunca use replicas>1 sobre un único archivo SQLite. |
OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES |
(derivado automáticamente) | src/shared/middleware/admissionBudget.ts |
#503-fanout: sobrescritura del presupuesto de bytes de ingesta derivado automáticamente (el 25 % del límite más restrictivo de memoria de V8/cgroup, dividido por una amplificación transitoria de 8x). Los valores derivados y explícitos se restringen al intervalo de 8 MiB a 2 GiB. Un cuerpo mayor que el presupuesto efectivo falla inmediatamente con 413 body_exceeds_budget; la contención entre cuerpos que podrían procesarse individualmente sigue siendo reintentable mediante 503. La concurrencia de 40–50 clientes SSE de larga duración depende de este presupuesto + el heap, no de un «máximo de 2» estricto. Consulte chatAdmission.maxInflightBytes / budgetSource / pressureSeverity en /api/monitoring/health antes de ajustar la configuración. |
OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO |
0.75 |
src/shared/middleware/chatBodyAdmission.ts |
Proporción de descarte por presión del heap (heapUsed / heap_size_limit) para la admisión de solicitudes pesadas por BYTES y ESTRUCTURA (#10183, #10268, #10437). Una solicitud pesada simultánea que supere OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT solo se descarta con el 503 reintentable cuando el heap TAMBIÉN se encuentra en esta proporción o por encima de ella; con un heap saludable, se admite mediante el margen de capacidad saludable. |
OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT (valor predeterminado 1) |
src/shared/middleware/chatBodyAdmission.ts |
Capacidad adicional acotada para la ruta rápida con un heap saludable (#10437), tanto para ESTRUCTURA como para BYTES (admitChatRequest, incluidos los cuerpos ≥ OMNIROUTE_CHAT_LARGE_BODY_BYTES). Sin este límite, todas las solicitudes con el sistema ocupado pero con un heap saludable eludían la admisión sin tope alguno. Cuando hay tantas concesiones simultáneas activas mediante la ruta de heap saludable, las siguientes solicitudes realizadas mientras el sistema está ocupado pasan a la MISMA ruta de espera acotada/descarte utilizada bajo una presión real del heap. 0 desactiva por completo esta omisión. |
OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT |
200 |
src/shared/middleware/chatBodyAdmission.ts |
Número de mensajes que clasifica una solicitud de chat como pesada, incluso cuando su cuerpo está por debajo del umbral de bytes. |
OMNIROUTE_CHAT_HEAVY_TOOL_COUNT |
64 |
src/shared/middleware/chatBodyAdmission.ts |
Número de herramientas que clasifica una solicitud de chat como pesada, incluso cuando su cuerpo está por debajo del umbral de bytes. |
OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS |
32000 |
src/shared/middleware/chatBodyAdmission.ts |
Estimación conservadora de tokens basada en el tamaño de las cadenas que clasifica una solicitud como pesada; se trata de una aproximación del coste de admisión, no de la tokenización de facturación del proveedor. |
OMNIROUTE_CHAT_HARD_MAX_MESSAGES |
0 (desactivado) |
src/shared/middleware/chatBodyAdmission.ts |
Límite opcional y voluntario del historial de chat. Está desactivado de forma predeterminada: el número de mensajes es una política de implementación, no una propiedad universal de una solicitud, y establecer aquí un límite rechaza las conversaciones con un 413 definitivo antes de que el proceso de compresión pueda hacerlas procesables. El crecimiento del heap está limitado por OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT y el descarte por presión del heap. Establezca un valor positivo en implementaciones con memoria limitada que necesiten un límite estricto; el exceso recibirá entonces un 413 estructurado que indica que se requiere compactación. |
OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES |
67108864 (64 MB) |
open-sse/handlers/chatCore/nonStreamingResponseBody.ts |
Límite estricto para una respuesta ascendente sin streaming almacenada íntegramente en memoria. Al superarlo, se cancela el lector ascendente y la solicitud falla de inmediato, en lugar de hacer crecer una cadena sin límites hasta agotar el heap. |
OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES |
768 |
open-sse/handlers/chatCore/responseHeaders.ts |
Máximo de bytes transmitidos que se reenvían desde las cabeceras de respuesta del servidor de origen. Cuando se supera el límite, se descartan las cabeceras de menor prioridad (p. ej., las personalizadas x-codex-*, x-oai-request-id) para mantenerse dentro de los límites habituales de cabeceras de los proxies inversos. Establézcalo en un valor más alto para reenviar más metadatos del servidor de origen a costa de aumentar el tamaño de las cabeceras de respuesta. |
CORS_ORIGIN |
(sin definir) | src/server/cors/origins.ts |
Lista de orígenes permitidos de CORS heredada para un único origen. Para nuevos despliegues, se recomienda usar CORS_ALLOWED_ORIGINS. CORS solo se utiliza para clientes de API de navegador entre orígenes; en su lugar, las operaciones de escritura autenticadas del panel usan solicitudes del mismo origen junto con protección CSRF vinculada a la sesión. |
CORS_ALLOWED_ORIGINS |
(sin definir) | src/server/cors/origins.ts |
Lista de orígenes permitidos de CORS separados por comas. No se envía ningún comodín a menos que se configure explícitamente CORS_ALLOW_ALL=true. |
CORS_ALLOW_ALL |
false |
src/server/cors/origins.ts |
Mecanismo de escape exclusivo para desarrollo que permite reflejar cualquier Origin del navegador. No lo habilite en despliegues compartidos ni de producción. |
OUTBOUND_SSRF_GUARD_ENABLED |
true |
src/shared/network/outboundUrlGuard.ts |
Bloquea las llamadas a proveedores dirigidas a rangos de IP privados, de bucle invertido o locales de enlace. Deshabilítelo únicamente en entornos de prueba aislados. |
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS |
false |
src/shared/network/outboundUrlGuard.ts |
Permite URLs de proveedores que apunten a redes privadas/locales (localhost, 192.168.x.x, 10.x.x.x, etc.). REQUERIDO para proveedores autoalojados (LM Studio, Ollama, vLLM, Llamafile, Triton, SearXNG). Cuando es false, el panel rechaza la validación de URLs locales. |
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS |
true |
src/shared/network/outboundUrlGuard.ts |
Permite añadir/validar proveedores en direcciones locales/privadas (127.0.0.1, localhost, LAN, rangos privados); se limita a la ruta de validación del proveedor. Valor predeterminado: true (prioridad local); establézcalo en false para imponer un bloqueo estricto que solo permita direcciones públicas. Los endpoints de metadatos de la nube (169.254.169.254, metadata.google.internal) permanecen bloqueados en todos los casos. (#5066) |
AUDIO_REMOTE_PROVIDER_NODES |
false |
src/app/api/v1/_shared/audioProviderNodes.ts |
Permite que las rutas /v1/audio/* (transcripciones, voz, traducciones) utilicen un nodo proveedor compatible con OpenAI alojado fuera de localhost. Está desactivado de forma predeterminada: enrutar el audio a un host remoto cambia la identidad de salida y debe ser una decisión explícita del operador. Los nodos de bucle invertido/privados (localhost, 127.0.0.1, 172.16-31.x) siempre están permitidos y no se ven afectados. (#3963) |
RERANK_REMOTE_PROVIDER_NODES |
false |
src/app/api/v1/_shared/rerankProviderNodes.ts |
Permite que POST /v1/rerank (y el paso de reclasificación mediante bucle invertido del motor de memoria) utilice un nodo proveedor compatible con OpenAI alojado fuera de localhost: un equipo en la LAN o un par de Tailscale que ejecute TEI, Infinity, vLLM, etc. Está desactivado de forma predeterminada: enrutar a un host remoto cambia la identidad de salida y debe ser una decisión explícita del operador. Los nodos de bucle invertido (localhost, 127.0.0.1, 172.16-31.x) siempre están permitidos y no se ven afectados. Los nodos remotos también deben cumplir la política de URLs salientes del proveedor (OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS / OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS); nunca se enruta a hosts de metadatos de la nube. |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
Cuando OIDC está habilitado, deshabilita el inicio de sesión mediante contraseña para que los usuarios solo puedan autenticarse mediante el inicio de sesión único de OIDC. También se acepta el alias simple OIDC_DISABLE_PASSWORD_LOGIN; la marca de funcionalidad del panel con la misma clave tiene prioridad. (#10889) |
OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
Alias simple de OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN (#10889). |
Lista de comprobación de refuerzo de seguridad
Sección titulada «Lista de comprobación de refuerzo de seguridad»# Requisitos mínimos de seguridad para producción:AUTH_COOKIE_SECURE=true # Requiere HTTPSREQUIRE_API_KEY=true # Autentica todas las llamadas al proxyALLOW_API_KEY_REVEAL=false # Nunca expone las claves en la interfazCORS_ALLOWED_ORIGINS=https://your.domain.comMAX_BODY_SIZE_BYTES=5242880 # Límite de 5 MB5. Saneamiento de entradas y protección de PII
Sección titulada «5. Saneamiento de entradas y protección de PII»OmniRoute proporciona una defensa de dos capas: análisis de inyecciones en las solicitudes y eliminación de PII en las respuestas.
⚠️ Limitaciones: Estas medidas de protección son detecciones heurísticas de mejor esfuerzo, no un cortafuegos completo contra la inyección de prompts ni un sistema DLP para PII. Pueden producir falsos positivos (prompts benignos de personajes o juegos de rol marcados) y falsos negativos (leetspeak, espacios, patrones en idiomas distintos del inglés). Por sí solas, no son suficientes para garantizar el cumplimiento normativo. Ajuste los modos y pruébelos con su tráfico antes de confiar en ellos.
Solicitudes: protección contra la inyección de prompts
Sección titulada «Solicitudes: protección contra la inyección de prompts»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
INPUT_SANITIZER_ENABLED |
true |
src/middleware/promptInjectionGuard.ts |
Habilita el análisis de los mensajes entrantes en busca de patrones de inyección de prompts. |
INPUT_SANITIZER_MODE |
warn |
src/middleware/promptInjectionGuard.ts |
Política de inyección: warn = solo registrar, block = rechazar la solicitud con un error 400. El valor heredado redact no elimina el texto de la inyección; utilice PII_REDACTION_ENABLED para reescribir la PII de las solicitudes. |
INJECTION_GUARD_MODE |
(sin establecer) | src/middleware/promptInjectionGuard.ts |
Alias heredado de INPUT_SANITIZER_MODE: mismo comportamiento. |
INPUT_SANITIZER_BLOCK_THRESHOLD |
high |
src/shared/utils/injectionSeverity.ts |
Gravedad mínima que rechaza MODE=block: high (valor predeterminado), medium o low. Los patrones de gravedad media solo se observan, a menos que se reduzca el umbral. |
INJECTION_GUARD_BLOCK_THRESHOLD |
(sin establecer) | src/shared/utils/injectionSeverity.ts |
Alias heredado de INPUT_SANITIZER_BLOCK_THRESHOLD: mismo comportamiento. |
PII_REDACTION_ENABLED |
false |
src/lib/guardrails/piiMasker.ts |
Cuando es true, censura la PII de las solicitudes entrantes (independientemente del modo de inyección). |
CREDENTIAL_REDACTION_ENABLED |
false |
src/lib/guardrails/credentialMasker.ts |
Censura patrones conocidos de claves de API y tokens secretos en las cargas útiles de solicitudes y respuestas. Es opcional y funciona de forma análoga a PII_REDACTION_ENABLED. |
Respuestas: saneador de PII
Sección titulada «Respuestas: saneador de PII»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
PII_RESPONSE_SANITIZATION |
false |
src/lib/piiSanitizer.ts |
Analiza las respuestas del LLM en busca de PII filtrada antes de devolverlas al cliente. |
PII_RESPONSE_SANITIZATION_MODE |
redact |
src/lib/piiSanitizer.ts |
redact = enmascarar la PII, warn = solo registrar, block = descartar la respuesta completa. |
Saneador de contexto de rutas tokenizadas de VS Code
Sección titulada «Saneador de contexto de rutas tokenizadas de VS Code»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_VSCODE_SANITIZE_CONTEXT |
1 |
src/app/api/v1/vscode/contextSanitizer.ts |
Elimina el contexto implícito del editor activo (editorContext, activeEditor, currentFile, selection, openTabs…) de las solicitudes a /v1/vscode/[token]/* y censura el contenido de los archivos confidenciales adjuntados explícitamente. Es seguro de forma predeterminada; establézcalo en 0 para deshabilitarlo. |
Escenarios
Sección titulada «Escenarios»| Escenario | Configuración |
|---|---|
| Cumplimiento empresarial | INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=block, PII_REDACTION_ENABLED=true, PII_RESPONSE_SANITIZATION=true (bloqueo de inyecciones + censura de PII en solicitudes y respuestas; los modos son independientes) |
| Solo supervisión | INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=warn — registra, pero nunca bloquea |
| Uso personal | Deje todo deshabilitado: sobrecarga cero |
6. Políticas de herramientas y enrutamiento
Sección titulada «6. Políticas de herramientas y enrutamiento»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
TOOL_POLICY_MODE |
disabled |
src/lib/toolPolicy.ts |
Controla el acceso del LLM a herramientas/llamadas de funciones. allowlist = solo las herramientas enumeradas, denylist = todas excepto las enumeradas, disabled = sin restricciones. |
OMNIROUTE_PAYLOAD_RULES_PATH |
./config/payloadRules.json |
open-sse/services/payloadRules.ts |
Ruta al archivo JSON de reglas de manipulación de la carga útil (ajustes del servicio ascendente por modelo/protocolo). |
OMNIROUTE_PAYLOAD_RULES_RELOAD_MS |
5000 |
open-sse/services/payloadRules.ts |
Intervalo de recarga (ms) para la recarga en caliente del archivo de reglas de carga útil. Mínimo: 1000. |
OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS |
false |
open-sse/services/model.ts |
Activación opcional: enruta los ID de modelos claude-* sin prefijo desde clientes de Claude Code mediante la cuenta OAuth de Claude Code, en lugar de requerir un prefijo de proveedor. Los prefijos de proveedor explícitos siguen teniendo prioridad. También puede configurarse mediante un interruptor del panel en la página del proveedor Claude. |
COMBO_CONCURRENCY_PER_MODEL |
3 |
open-sse/services/comboConfig.ts |
Límite de concurrencia por modelo para combinaciones de turno rotativo (#9100). El semáforo de combinaciones de turno rotativo tenía un límite fijo de 3 solicitudes simultáneas por modelo sin posibilidad de anulación, lo que serializaba el tráfico de mayor concurrencia tras ese límite. Se valida como >= 1 y se limita a <= 32. |
DISABLE_CONTEXT_WINDOW_CHECKS |
false |
open-sse/handlers/chatCore.ts |
Activación opcional peligrosa que omite la comprobación local de OmniRoute de la ventana de contexto o del máximo de tokens de entrada para solicitudes directas a un único modelo. Los proveedores ascendentes siguen aplicando sus límites reales; la compresión del prompt y el límite de tokens de salida propio del modelo permanecen activos. La precedencia efectiva es: anulación de la base de datos de indicadores de funciones > variable de entorno > valor predeterminado; no se requiere reiniciar. |
OMNIROUTE_SELF_HOSTED_PROVIDERS |
(sin definir) | open-sse/services/selfHostedEntry.ts |
Documento YAML providers: insertado directamente (RIC-738, D4). Cuando se establece (con o sin un bloque strategy:), /v1/chat/completions se desvía a la entrada unificada autohospedada compatible con OpenAI, en lugar de usar la canalización en la nube. Sin definir (valor predeterminado): la ruta pasa directamente a la canalización en la nube existente. Consulta docs/routing/SELF_HOSTED_OPENAI_ENTRY.md. |
OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE |
(sin definir) | open-sse/services/selfHostedEntry.ts |
Ruta a un archivo YAML que contiene el mismo documento providers: que OMNIROUTE_SELF_HOSTED_PROVIDERS, para implementaciones que prefieren un archivo en lugar de una variable de entorno insertada directamente. Cualquiera de las dos opciones activa la entrada autohospedada. |
OMNIROUTE_SELF_HOSTED_API_KEY |
(sin definir — ruta abierta) | open-sse/services/selfHostedEntry.ts |
Clave de API compartida opcional para la entrada unificada autohospedada (estructura D5, reservada para el sistema de cuotas por clave). Cuando se establece, las solicitudes deben incluir Authorization: Bearer <key>. Sin definir: la ruta está abierta, de acuerdo con el patrón existente de proveedores locales autohospedados (implementación en bucle invertido/red de confianza). |
OMNIROUTE_SELF_HOSTED_STRATEGY |
(sin definir) | open-sse/services/routingStrategies.ts |
Documento YAML strategy: insertado directamente para el motor de enrutamiento determinista (M2/RIC-740, D3): lista negra/lista blanca, disyuntor con tiempo de espera, prioridad de costes, reconocimiento de latencia y cadena de reserva. Anula, por clave, un bloque strategy: insertado directamente y anidado dentro de OMNIROUTE_SELF_HOSTED_PROVIDERS. Consulta docs/routing/DETERMINISTIC_ROUTING.md. |
OMNIROUTE_SELF_HOSTED_STRATEGY_FILE |
(sin definir) | open-sse/services/routingStrategies.ts |
Ruta a un archivo YAML que contiene el mismo documento strategy: que OMNIROUTE_SELF_HOSTED_STRATEGY, para implementaciones que prefieren un archivo en lugar de una variable de entorno insertada directamente. |
OMNIROUTE_DISABLE_CONVERSATION_TRACKING |
(sin definir) | open-sse/services/conversationTracker.ts |
Establézcalo en 1 para dejar de recopilar el historial de conversaciones. resolveConversationId() devuelve un resultado sin seguimiento antes de leer SQLite o analizar el historial de mensajes, y también se incluyen los ID de sesión proporcionados por el cliente. La gestión de sesiones de enrutamiento no cambia y los registros existentes no se eliminan. Para implementaciones que no utilizan la vista de conversaciones del panel y desean evitar que la tabla de turnos siga creciendo. |
7. URLs y sincronización en la nube
Sección titulada «7. URLs y sincronización en la nube»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
BASE_URL |
http://localhost:20128 |
src/lib/cloudSync.ts |
URL del servidor que utilizan los trabajos internos de sincronización para llamar a /api/sync/cloud. Manténgala como una URL de bucle invertido/contenedor incluso cuando la aplicación se publique mediante un proxy. |
CLOUD_URL |
(vacío) | src/lib/cloudSync.ts |
URL del endpoint de retransmisión en la nube (función prémium). |
CLOUD_SYNC_TIMEOUT_MS |
12000 |
src/lib/cloudSync.ts |
Tiempo de espera HTTP para las solicitudes de sincronización en la nube. |
OMNIROUTE_BUILD_PROFILE |
full |
Configuración de compilación de Webpack | Perfil de compilación (establézcalo en minimal para excluir físicamente del paquete los módulos con privilegios). |
OMNIROUTE_STANDALONE_DIR |
salida independiente .build/ | scripts/build/colocate-standalone.mjs |
Anulación durante la compilación del directorio de salida independiente utilizado por el paso de coubicación posterior a la compilación. No es una configuración de tiempo de ejecución. |
OMNIROUTE_CLOUD_SYNC_SECRET |
(vacío) | src/lib/cloudSync.ts |
Secreto compartido utilizado para verificar la firma HMAC-SHA256 de las respuestas de Cloud Sync. |
OMNIROUTE_CLOUD_SYNC_SECRETS |
false |
src/lib/cloudSync.ts |
Establézcalo en true para permitir que el endpoint de Cloud Sync sobrescriba las credenciales locales. El valor predeterminado es false. |
OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE |
false |
src/lib/cloudSync.ts |
Establézcalo en true para rechazar una respuesta de Cloud Sync sin firma cuando no haya ningún secreto local configurado (#13679). Las firmas presentes siempre se verifican —y siempre se rechazan cuando OMNIROUTE_CLOUD_SYNC_SECRET no está definido— independientemente de esta opción. En v3.9, el valor predeterminado cambia para exigir la firma. |
OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP |
false |
src/app/api/providers/zed/import/route.ts |
Establézcalo en true para volver al comportamiento de «importar todo» en un solo paso de v3.8.5 sin confirmación del usuario. |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
OAuth, panel de control, sincronización | URL pública para redirect_uri de OAuth, los enlaces del panel de control y las URLs públicas generadas. Establézcala en la URL pública estable cuando las devoluciones de llamada de OAuth o los enlaces generados para el navegador deban utilizar un host canónico de proxy inverso. |
NEXT_PUBLIC_CLOUD_URL |
(vacío) | Lado del cliente | Réplica del lado del cliente de CLOUD_URL. |
NEXT_PUBLIC_APP_URL |
(sin definir) | src/shared/services/cloudSyncScheduler.ts |
Alternativa heredada para NEXT_PUBLIC_BASE_URL. |
NEXT_PUBLIC_PORT |
(sin definir — utiliza PORT como alternativa) |
src/shared/hooks/useDisplayBaseUrl.ts |
Puerto alternativo del lado del cliente para las URL mostradas cuando no se conoce ningún origen (SSR/pruebas); se lee antes que PORT. |
OMNIROUTE_PUBLIC_BASE_URL |
(sin definir) | Resolutor de origen público, URL de imágenes | Origen de OmniRoute orientado al navegador con la máxima prioridad, utilizado para generar URL públicas y validar el origen del navegador fuera del panel. Configúrelo cuando OpenWebUI u otro relé acceda a OmniRoute mediante una URL interna, pero el navegador del usuario deba obtener los medios generados desde una red LAN, un túnel o un origen público. No incluya /v1. |
OMNIROUTE_PROVIDER_MANIFEST_URL |
(sin definir) | open-sse/config/providerPluginManifestUrl.ts |
URL absoluta del manifiesto del complemento de proveedor anunciada a los clientes sidecar. Cuando no está definida, OmniRoute deriva /api/v1/provider-plugin-manifest del origen de la solicitud o de HOST/PORT. |
OMNIROUTE_PUBLIC_PROTOCOL |
http |
open-sse/config/providerPluginManifestUrl.ts |
Protocolo utilizado al derivar la URL del manifiesto del complemento de proveedor a partir de HOST/PORT sin un origen de solicitud. Establézcalo en https detrás de un proxy público con terminación TLS cuando no se haya definido explícitamente OMNIROUTE_PROVIDER_MANIFEST_URL. |
OMNIROUTE_TRUST_PROXY |
(sin definir) | src/server/origin/publicOrigin.ts |
Modo de confianza opcional para las cabeceras reenviadas del origen público. Sin definir = no confiar en Forwarded / X-Forwarded-* para decisiones de seguridad. true / loopback confía en el host/protocolo reenviado únicamente desde un proxy de loopback marcado con un token. private / lan también confía en pares proxy de una LAN privada. En producción, prefiera definir explícitamente NEXT_PUBLIC_BASE_URL. |
KIE_CALLBACK_URL |
(sin definir) | open-sse/utils/kieTask.ts |
URL pública de devolución de llamada para trabajos asíncronos de kie.ai. Anulación de máxima prioridad antes de OMNIROUTE_KIE_CALLBACK_URL y OMNIROUTE_PUBLIC_URL. |
OMNIROUTE_KIE_CALLBACK_URL |
(sin definir) | open-sse/utils/kieTask.ts |
Nombre alternativo de KIE_CALLBACK_URL. Se utiliza como alternativa cuando la variable principal no está definida. |
OMNIROUTE_PUBLIC_URL |
(sin definir) | open-sse/utils/kieTask.ts |
Origen público utilizado para componer las URL de devolución de llamada asíncronas. Alternativa de menor prioridad para las devoluciones de llamada de kie.ai; también se utiliza como URL pública genérica para otros relés. |
OMNIROUTE_CROF_USAGE_URL |
https://crof.ai/usage_api/ |
open-sse/services/usage.ts |
Punto de conexión de consulta de cuota de CrofAI utilizado por la página Uso. Se puede sustituir para relés / datos de prueba. |
OMNIROUTE_OPENCODE_QUOTA_URL |
https://opencode.ai/zen/go/v1/usage |
open-sse/services/opencodeQuotaFetcher.ts |
Punto de conexión oficial de uso de OpenCode Go, autenticado mediante clave de API y utilizado por la página Uso. Se puede sustituir para relés / datos de prueba. |
OPENCODE_SYNTHESIZE_CLI_HEADERS |
true |
open-sse/executors/opencode.ts |
Sintetiza las cabeceras de identidad de OpenCode CLI (User-Agent, x-opencode-client/project, UUID de solicitud/sesión) en las solicitudes ascendentes de opencode-go/zen que el cliente no haya enviado, para que Cloudflare las acepte en la salida de VPS (#6210/#5997). Activado de forma predeterminada desde #10571; desactívelo con false/0/no/off. |
OPENCODE_USER_AGENT |
opencode/1.18.31 |
open-sse/utils/opencodeHeaders.ts |
User-Agent predeterminado utilizado cuando OPENCODE_SYNTHESIZE_CLI_HEADERS está activado y no se ha definido ninguna sustitución <PROVIDER>_USER_AGENT por proveedor. Solo se aplica a los ejecutores de opencode. En una solicitud sin clave bloqueada por el servicio ascendente, un valor configurado que no contenga opencode/<version >= 1.17> se sustituye por este valor predeterminado en lugar de rechazarse. |
OPENCODE_CLIENT |
desktop |
open-sse/executors/opencode.ts |
Valor de la cabecera x-opencode-client sintetizada cuando OPENCODE_SYNTHESIZE_CLI_HEADERS está activado. |
OPENCODE_PROJECT |
global |
open-sse/executors/opencode.ts |
Valor de la cabecera x-opencode-project sintetizada cuando OPENCODE_SYNTHESIZE_CLI_HEADERS está activado. |
OPENCODE_FREE_TIER_REQUEST_CONTRACT |
(sin establecer) | open-sse/executors/opencodeFreeTierContract.ts |
Establézcalo en off para dejar de ajustar el cuerpo de las solicitudes de OpenCode sin clave (la opción de streaming y la lista de herramientas). Las cabeceras se siguen aplicando. Se lee en cada solicitud, por lo que los cambios surten efecto inmediatamente. |
OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS |
(sin establecer) | open-sse/executors/opencodeFreeTierContract.ts |
Nombres de herramientas separados por comas que se declararán en una solicitud de OpenCode sin clave que no incluya ninguna, cuando aún no se haya observado nada para ese modelo. Si está vacío, se recurre a un único marcador de posición que se indica al modelo que no debe invocar. Como máximo 32 entradas, [A-Za-z_][A-Za-z0-9_-]{0,63}; las entradas no válidas se ignoran. |
OMNIROUTE_OLLAMA_CLOUD_USAGE_URL |
https://ollama.com/settings |
open-sse/services/usage.ts |
URL de configuración de Ollama Cloud utilizada para extraer la cuota. Se puede sobrescribir para relés o datos de prueba. |
OLLAMA_USAGE_COOKIE |
(sin establecer) | open-sse/services/usage.ts |
Cookie __Secure-session de Ollama Cloud utilizada para extraer la cuota de la página de configuración. Es confidencial; si hay varias cuentas configuradas, se recomienda usar el campo correspondiente a cada conexión en el Dashboard. |
OLLAMA_CLOUD_USAGE_COOKIE |
(sin establecer) | open-sse/services/usage.ts |
Variable de entorno alternativa para la cookie __Secure-session de Ollama Cloud. Es confidencial; si hay varias cuentas configuradas, se recomienda usar el campo correspondiente a cada conexión en el Dashboard. |
OMNIROUTE_OLLAMA_USAGE_COOKIE |
(sin establecer) | open-sse/services/usage.ts |
Variable de entorno alternativa para la cookie __Secure-session de Ollama Cloud que se utiliza antes que los alias más cortos. Es confidencial; si hay varias cuentas configuradas, se recomienda usar el campo correspondiente a cada conexión en el Dashboard. |
OMNIROUTE_CODEWHISPERER_BASE_URL |
https://codewhisperer.us-east-1.amazonaws.com |
open-sse/services/usage.ts |
Endpoint de límites de uso de CodeWhisperer (AWS Kiro). Se puede sobrescribir para relés o datos de prueba. |
[!IMPORTANT] Al desplegar detrás de un proxy inverso (nginx, Caddy), establezca
NEXT_PUBLIC_BASE_URLen su URL pública estable (por ejemplo,https://omniroute.example.com) cuando las devoluciones de llamada de OAuth o los enlaces públicos generados deban usar ese nombre de host. Sin esto, las devoluciones de llamada de OAuth pueden fallar porqueredirect_urino coincidirá, y los enlaces públicos generados pueden apuntar al origen interno del contenedor.Mantenga
BASE_URLcomo una URL interna de bucle local o del contenedor para los trabajos de servidor a servidor. No utilice unOrigindel navegador ni un nombre de host público para las solicitudes internas a sí mismo que incluyan credenciales.Las escrituras autenticadas del Dashboard no requieren una URL base pública estática: el Dashboard envía solicitudes no seguras del mismo origen con un token CSRF vinculado a la sesión. OmniRoute sigue centralizando la validación del origen público para integraciones de navegador ajenas al Dashboard: primero se confía en las variables de entorno explícitas de URL pública; las cabeceras
Forwarded/X-Forwarded-*sin procesar se ignoran a menos queOMNIROUTE_TRUST_PROXYesté activado y el par proxy inmediato esté marcado con un token como de confianza. No utilice la configuración de CORS para corregir solicitudes del Dashboard del mismo origen; CORS solo se aplica a clientes de navegador de origen cruzado.
8. Proxy de salida
Sección titulada «8. Proxy de salida»Enrute las llamadas a proveedores de LLM ascendentes a través de un proxy HTTP o SOCKS5 para controlar el tráfico de salida, el enrutamiento geográfico o el enmascaramiento de IP.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
open-sse/executors |
Habilita el agente proxy SOCKS5 para las llamadas ascendentes. Desactívelo con false. |
NEXT_PUBLIC_ENABLE_SOCKS5_PROXY |
true |
Lado del cliente | Indica al cliente la disponibilidad de SOCKS5. |
PROXY_SKIP_RECENTLY_FAILED |
false |
src/shared/utils/featureFlags.ts |
Indicador de funcionalidad opcional (consulte FEATURE_FLAGS.md; una configuración en la base de datos del panel tiene prioridad). Los grupos de proxies y la rotación por cuenta dejan de reutilizar temporalmente un miembro que acaba de fallar (sondeo TCP rechazado o respuesta 429 a través de él), durante un período que se duplica con cada repetición, hasta un límite máximo. true (o 1, yes) lo habilita. |
HTTP_PROXY |
(sin definir) | Estándar de Node.js | Proxy HTTP para las llamadas ascendentes. |
HTTPS_PROXY |
(sin definir) | Estándar de Node.js | Proxy HTTPS para las llamadas ascendentes. |
ALL_PROXY |
(sin definir) | Estándar de Node.js | Proxy universal (admite socks5://). |
OMNIROUTE_PROXY_ECHO_URL |
(sin definir) | src/lib/proxyEchoTarget.ts |
Fija en una única URL el destino de eco de IP utilizado por los sondeos de salida del proxy. Si no se define, el sondeo intenta primero api64.ipify.org y luego api4.ipify.org, de modo que los túneles que solo admiten IPv4 no se notifiquen como inactivos (#9694). |
NO_PROXY |
(sin definir) | Estándar de Node.js | Nombres de host o direcciones IP, separados por comas, que deben omitir el proxy. |
OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS |
32 |
open-sse/utils/proxyDispatcher.ts |
Número máximo de sockets simultáneos por despachador de proxy HTTP/SOCKS almacenado en caché. Los flujos SSE de larga duración, como Codex /v1/responses, necesitan más de una conexión cuando varias solicitudes comparten el mismo proxy de nivel de cuenta. Los valores superiores a 256 se limitan a ese valor. |
SOCKS_HANDSHAKE_TIMEOUT_MS |
10000 |
open-sse/utils/socksConnectorWithFamily.ts |
Tiempo de espera, en ms, para el protocolo de enlace SOCKS5 (conexión). Auméntelo cuando un único host de puerta de enlace residencial reciba una alta concurrencia (p. ej., 100 solicitudes simultáneas): el protocolo de enlace real puede superar los 10 s con un grupo saturado aunque el proxy sea accesible, lo que, de otro modo, aparecería como un falso [Proxy Fast-Fail] Proxy unreachable. Limitado a 120000. |
PROXY_FAIL_OPEN |
false |
src/sse/handlers/chatHelpers.ts |
Cuando es false (valor predeterminado), una solicitud cuyo proxy asignado no se puede resolver se rechaza (cierre en caso de fallo) en vez de recurrir a una conexión directa, lo que evita filtraciones de la IP real. Establézcalo en true para restaurar el comportamiento DIRECT heredado. |
ENABLE_TLS_FINGERPRINT |
false |
open-sse/executors |
Suplanta la huella digital TLS mediante wreq-js (imita Chrome 124). Contrarresta los bloqueos JA3/JA4. |
TLS_FINGERPRINT_PROVIDERS |
(sin definir) | open-sse/utils/proxyFetch.ts |
Lista de proveedores permitidos, separados por comas, para el nuevo enrutamiento TLS mediante proxy (open-sse/utils/proxyFetch.ts). Cuando no se define, el TLS directo conserva su comportamiento heredado; solo estos proveedores se enrutan a través del puente de huella digital de Chrome 124. |
OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS |
false |
open-sse/services/claudeTurnstileSolver.ts |
Permite que el contexto del navegador Playwright de Claude Turnstile ignore los errores de certificados HTTPS. |
Escenarios
Sección titulada «Escenarios»| Escenario | Configuración |
|---|---|
| SOCKS5 mediante un túnel SSH | ALL_PROXY=socks5://127.0.0.1:7890, ENABLE_SOCKS5_PROXY=true |
| Proxy HTTP corporativo | HTTP_PROXY=http://proxy.corp.com:3128, HTTPS_PROXY=http://proxy.corp.com:3128, NO_PROXY=localhost,internal.corp.com |
| Antihuellas | ENABLE_TLS_FINGERPRINT=true — requiere wreq-js (incluido) |
| Salida controlada/sin acceso directo | Deje PROXY_FAIL_OPEN=false (valor predeterminado). Las solicitudes fallan de forma explícita cuando el proxy no está disponible, en lugar de filtrarse mediante una conexión directa. |
| Entorno heredado/desarrollo — permitir conexión directa como alternativa | PROXY_FAIL_OPEN=true. Restaura el comportamiento anterior al refuerzo de seguridad: se utiliza una conexión directa cuando falla la resolución del proxy. |
Nota (omisión de la validación de NVIDIA — #3226): El endpoint de validación de claves de API de NVIDIA se bloquea cuando se enruta mediante el fetch global con el proxy/parche TLS (dispatcher de undici → 504).
src/lib/providers/validation.ts::directHttpsRequest()omite intencionadamente el parche del proxy para esa única llamada de validación mediantesafeOutboundFetch({ bypassProxyPatch: true }). Esta es una excepción documentada y limitada — no afecta al tráfico saliente de chat/uso. El alcance de la omisión está fijado mediantetests/unit/proxy-bypass-scope-guard-3226.test.ts.
9. Integración de herramientas de CLI
Sección titulada «9. Integración de herramientas de CLI»Controla cómo OmniRoute detecta e inicia procesos auxiliares de CLI (Claude Code, Codex, etc.).
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
CLI_MODE |
auto |
src/shared/services/cliRuntime.ts |
auto = busca en el PATH del sistema; manual = usa únicamente rutas explícitas. |
CLI_EXTRA_PATHS |
(sin definir) | src/shared/services/cliRuntime.ts |
Entradas de PATH adicionales para detectar binarios de la CLI (separadas por dos puntos). |
CLI_CONFIG_HOME |
(sin definir) | src/shared/services/cliRuntime.ts |
Sobrescribe el directorio de inicio para leer las configuraciones de la CLI (~/.claude, ~/.codex). Debe ser absoluto y estar dentro del directorio de inicio del proceso —o, en un contenedor, ser una ruta montada mediante bind (así funciona /host-home). Cualquier otro valor hace que se utilice el directorio de inicio. |
CLI_ALLOW_CONFIG_WRITES |
true |
src/shared/services/cliRuntime.ts |
Permite que OmniRoute escriba archivos de configuración de la CLI (renovación de tokens, datos de sesión). Establécelo en false para que cada escritura en la configuración de la CLI falle con un error explícito de «escrituras deshabilitadas». |
CLI_CLAUDE_BIN |
claude |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Claude. |
CLI_CODEX_BIN |
codex |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Codex. |
CLI_DROID_BIN |
droid |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Droid. |
CLI_OPENCLAW_BIN |
openclaw |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de OpenClaw. |
CLI_CURSOR_BIN |
agent, luego cursor |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario del agente de Cursor. Sin ella, la detección prueba primero agent y, si falla, recurre a cursor. |
CLI_CLINE_BIN |
cline |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Cline. |
CLI_5DIVE_BIN |
5dive |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de 5dive. |
CLI_5DIVE_STATE_DIR |
/var/lib/5dive |
src/shared/services/cliRuntime.ts |
Directorio de estado del sistema de 5dive (perfiles de autenticación propiedad de root); refleja el valor predeterminado de STATE_DIR de 5dive. |
CLI_CONTINUE_BIN |
cn |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Continue. |
CLI_QODER_BIN |
qodercli |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Qoder. |
CLI_QWEN_BIN |
qwen |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Qwen Code. |
CLI_AIDER_BIN |
aider |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Aider. |
CLI_GOOSE_BIN |
goose |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Goose. |
CLI_GEMINI_BIN |
gemini |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Google Gemini —solo para la detección y las comprobaciones de estado del lado del servidor; omniroute run gemini resuelve el binario gemini desde el PATH del sistema. |
CLI_KILO_BIN |
kilocode |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Kilo Code. |
CLI_OPENCODE_BIN |
opencode |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de OpenCode. |
CLI_HERMES_BIN |
hermes |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de Hermes. Compartida por ambas entradas del catálogo (hermes y hermes-agent). |
CLI_FORGE_BIN |
forge |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de ForgeCode. |
CLI_JCODE_BIN |
jcode |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de jcode. |
CLI_DEEPSEEK_TUI_BIN |
deepseek-tui |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la TUI de DeepSeek. |
CLI_CODEWHALE_BIN |
codewhale |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de CodeWhale. |
CLI_SMELT_BIN |
smelt |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Smelt. |
CLI_PI_BIN |
pi |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de Pi (pi-coding-agent). |
CLI_CRUSH_BIN |
crush |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Crush. |
CLI_OMP_BIN |
omp |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario del agente Oh My Pi (omp). |
CLI_LETTA_BIN |
letta |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de la CLI de Letta. |
CLI_PRIME_AGENT_BIN |
prime-agent |
src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de Prime Agent (Prime Intellect). |
CLI_WINDSURF_BIN |
(ninguno) | src/shared/services/cliRuntime.ts |
Ruta personalizada al binario de Windsurf. Windsurf no incluye ningún comando predeterminado; la detección del binario permanece deshabilitada hasta que se defina esta variable. |
CLI_DEVIN_BIN |
devin |
open-sse/executors/devin-cli.ts |
Ruta personalizada al binario de la CLI de Devin (v3.8.0). La utiliza el ejecutor de Windsurf/Devin. |
DEVIN_DESKTOP_VERSION |
3.6.27 |
open-sse/executors/devin-desktop.ts |
ide_version de Devin Desktop. Las sobrescrituras deben usar el formato x.y.z; los valores no válidos hacen que se utilice el valor predeterminado verificado. |
DEVIN_DESKTOP_EXTENSION_VERSION |
1.48.2 |
open-sse/executors/devin-desktop.ts |
extension_version del servidor de lenguaje/Codeium incluido, distinta de la ide_version de Desktop. Las sobrescrituras deben usar x.y.z; los valores no válidos hacen que se utilice el valor predeterminado incluido. |
CLI_DEVIN_AGENTIC_BIN |
devin |
open-sse/executors/devin-cli-agentic.ts |
Sobrescritura de la CLI de Devin exclusiva para el puente agéntico. El ejecutor solo acepta el upstream stdio de ACP local. |
DEVIN_AGENTIC_HOME |
(obligatorio) | open-sse/executors/devin-cli-agentic.ts |
Directorio de inicio absoluto y aislado para el subproceso agéntico de Devin; las rutas de puente aceptadas son /home/bridge y las rutas .sandbox locales de la tarea (en Windows, C:\...\.sandbox\...). |
DEVIN_AGENTIC_ACP_TIMEOUT_MS |
120000 |
open-sse/executors/devin-cli-agentic.ts |
Duración máxima de un turno ACP de Devin antes de que el puente finalice el proceso hijo y devuelva un tiempo de espera agotado explícito. |
DEVIN_BRIDGE_MODEL |
devin-cli-agentic/swe-1-7 |
docker/devin-bridge/compose.yml |
Alias del modelo principal de Claude Code para el puente aislado. El entorno de pruebas activo sustituye el ejemplo por un modelo devuelto por la cuenta actual de Devin. |
DEVIN_BRIDGE_SONNET_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias del puente aislado utilizado cuando Claude Code solicita su valor predeterminado de Sonnet. |
DEVIN_BRIDGE_OPUS_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias del puente aislado utilizado cuando Claude Code solicita su valor predeterminado de Opus. |
DEVIN_BRIDGE_HAIKU_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias del puente aislado utilizado cuando Claude Code solicita su valor predeterminado de Haiku. |
DEVIN_BRIDGE_SUBAGENT_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias del puente aislado utilizado para los subagentes de Claude Code. |
DEVIN_SEAT_API_URL |
https://server.codeium.com |
open-sse/services/usage/devinCli.ts |
Sobrescritura opcional para la API de administración de puestos de Codeium utilizada por la cuota de la CLI de Devin (GetUserStatus). |
AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Sobrescritura mediante ruta absoluta para el binario de la CLI de Augment (Auggie) utilizado por el proveedor local auggie. Si no está disponible, recurre a CLI_AUGGIE_BIN y, después, a una búsqueda en PATH. |
CLI_AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Sobrescritura alternativa para la ruta del binario de la CLI de Augment (Auggie), comprobada después de AUGGIE_BIN. |
ZCODE_BIN |
zcode |
open-sse/executors/zcode.ts |
Binario utilizado para el cliente stdio del proveedor local zcode. Si no está disponible, recurre a zcode en PATH. |
ZCODE_ARGS |
— | open-sse/executors/zcode.ts |
Matriz JSON (≤16 cadenas) de argumentos adicionales pasados al binario zcode cuando se inicia mediante cliTools. |
ZCODE_CWD |
process.cwd() |
open-sse/executors/zcode.ts |
Directorio de trabajo para el subproceso del servidor de aplicaciones de ZCode. |
ZCODE_PROVIDER_ID |
builtin:zai-coding-plan |
open-sse/executors/zcode.ts |
Sobrescritura del ID del proveedor enviado al servidor de aplicaciones. |
ZCODE_SERVER_RUNTIME_ROOT |
~/.zcode/server |
open-sse/executors/zcode.ts |
Raíz del entorno de ejecución del servidor de aplicaciones de ZCode (donde se encuentran los archivos incluidos node y zcode-server.cjs). |
ZCODE_SERVER_NODE |
<runtimeRoot>/node |
open-sse/executors/zcode.ts |
Ejecutable de Node utilizado para alojar el servidor de aplicaciones de ZCode. |
ZCODE_SERVER_ENTRY |
<runtimeRoot>/zcode-server.cjs |
open-sse/executors/zcode.ts |
Script de entrada del servidor de aplicaciones utilizado para alojar el servidor de ZCode. |
ZCODE_STARTUP_TIMEOUT_MS |
10000 |
open-sse/executors/zcode.ts |
Tiempo de espera de inicio (ms) antes de considerar fallido el lanzamiento de un servidor de aplicaciones de ZCode. |
ZCODE_RPC_TIMEOUT_MS |
30000 |
open-sse/executors/zcode.ts |
Tiempo de espera RPC por solicitud (ms) para una llamada al servidor de aplicaciones de ZCode. |
ZCODE_TURN_TIMEOUT_MS |
120000 |
open-sse/executors/zcode.ts |
Duración máxima (ms) de un turno de ZCode antes de que el supervisor agote el tiempo de espera. |
ZCODE_POLL_INTERVAL_MS |
250 |
open-sse/executors/zcode.ts |
Intervalo de sondeo (ms) para la finalización de un turno de ZCode. |
HERMES_HOME |
~/.hermes |
src/lib/cli-helper/config-generator/hermesHome.ts |
Directorio de inicio de Hermes Agent donde OmniRoute lee/escribe la configuración de la CLI de Hermes. Coincide con la variable de entorno que el instalador de PowerShell de Hermes establece en Windows (%LOCALAPPDATA%\hermes). |
Sincronización automática de perfiles de la CLI
Sección titulada «Sincronización automática de perfiles de la CLI»Estas opciones de funcionalidad son opcionales y están desactivadas de forma predeterminada. También pueden activarse o desactivarse desde el panel de CLI Code.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
Después de sincronizar los modelos de un proveedor, reescribe automáticamente los archivos de perfil ~/.codex/*.config.toml a partir del catálogo activo. Requiere CLI_ALLOW_CONFIG_WRITES; nunca cambia la configuración activa/predeterminada de Codex, la autenticación, los ajustes de Codex-lb ni la elección del proveedor. |
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
Después de sincronizar los modelos de un proveedor, reescribe automáticamente los archivos de perfil de Claude Code ~/.claude/profiles/<name>/settings.json a partir del catálogo activo. Requiere CLI_ALLOW_CONFIG_WRITES; nunca cambia la configuración activa/predeterminada de Claude, la autenticación ni la elección del proveedor. |
Ejemplo de Docker
Sección titulada «Ejemplo de Docker»# Monta los binarios del host en el contenedor e indica a OmniRoute dónde están:CLI_EXTRA_PATHS=/host-cli/binCLI_CONFIG_HOME=/host-homeCLI_ALLOW_CONFIG_WRITES=trueCLI_CLAUDE_BIN=/host-cli/bin/claudeCLI_CONFIG_HOME solo tiene efecto cuando la ruta está realmente montada mediante bind mount desde
el host; combínala con montajes como ~/.codex:/host-home/.codex:rw (consulta el
perfil host en docker-compose.yml). Una ruta que no esté dentro del directorio personal
del usuario del contenedor ni sea un bind mount se ignora, ya que los datos escritos allí
se perderían al volver a crear el contenedor.
La imagen se ejecuta como USER node, por lo que un /root sin montar no es una
sustitución válida.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_CONTAINER |
(automático) | src/shared/utils/containerEnv.ts |
Fuerza la detección de contenedores a activada (1/true) o desactivada (0/false). Solo es necesario en entornos de ejecución que la detección automática no reconoce. |
OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE |
false |
src/shared/services/cliRuntime.ts |
Permite de todos modos que las herramientas de la CLI escriban la configuración en una ruta no montada del contenedor. El equivalente en la CLI es --allow-container-write. |
Utilidades del binario de la CLI (omniroute)
Sección titulada «Utilidades del binario de la CLI (omniroute)»Estas variables ajustan el comportamiento propio del binario de la CLI omniroute (no la detección
del sidecar indicada anteriormente).
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_LANG |
(sistema) | bin/cli/i18n.mjs |
Fuerza el idioma de salida de la CLI. Configuración regional BCP-47 (p. ej., en, pt-BR). Anula las variables de entorno de configuración regional del sistema (LC_ALL, LC_MESSAGES). |
OMNIROUTE_SHOW_LOG |
(sin establecer) | bin/cli/runtime/processSupervisor.mjs |
Establécela en 1 para reenviar stdout/stderr del servidor al terminal en modo supervisado. Equivale a la opción --log de omniroute serve. |
OMNIROUTE_CLI_TOKEN |
(sin establecer) | bin/cli/api.mjs |
Token de autenticación de máquina inyectado como encabezado x-omniroute-cli-token. Se genera automáticamente en la tarea 8.12. |
OMNIROUTE_HTTP_TIMEOUT_MS |
30000 |
bin/cli/api.mjs |
Tiempo de espera HTTP por intento (ms) para las solicitudes de la CLI → servidor. |
OMNIROUTE_READY_TIMEOUT_MS |
60000 |
bin/cli/utils/pid.mjs |
Tiempo máximo (ms) que la CLI espera al endpoint de estado del servidor antes de mostrar una advertencia de tiempo de espera agotado. Resulta útil para arranques en frío lentos (p. ej., Windows). También puede establecerse mediante --ready-timeout. |
OMNIROUTE_VERBOSE |
0 |
bin/cli/api.mjs |
Establécela en 1 para imprimir diagnósticos de reintentos y espera incremental en stderr durante los comandos de la CLI. |
OMNIROUTE_PLUGIN_PATH |
(sin establecer) | bin/cli/plugins.mjs |
Directorio personalizado para detectar plugins de la CLI (paquetes omniroute-cmd-*). Si no se establece, el valor predeterminado es ~/.omniroute/plugins/. Solo para la CLI: nunca llega al detector de plugins del servidor, que utiliza OMNIROUTE_PLUGINS_DIR (sección 2). |
10. Integraciones internas de agentes y MCP
Sección titulada «10. Integraciones internas de agentes y MCP»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_BASE_URL |
detección automática | open-sse/mcp-server/server.ts |
URL explícita para que las herramientas MCP/A2A accedan a OmniRoute. Anula la detección automática de localhost. |
OMNIROUTE_API_KEY |
(sin definir) | Módulos MCP/A2A | Clave de API para las llamadas internas de herramientas MCP y habilidades A2A. |
OMNIROUTE_API_KEY_ID |
(sin definir) | open-sse/mcp-server/audit.ts |
ID de clave para la atribución del registro de auditoría de MCP. |
ROUTER_API_KEY |
(sin definir) | Heredado | Alias heredado de OMNIROUTE_API_KEY. |
OMNIROUTE_A2A_HISTORY_RETENTION_DAYS |
30 |
src/lib/a2a/taskManager.ts |
Días durante los que se conserva el historial de tareas A2A en la base de datos local antes de que la purga diaria elimine una fila. Si no se define, no es numérico o es <= 0, se utiliza 30. |
OMNIROUTE_A2A_MEMORY_HITS |
1 |
src/lib/a2a/taskExecution.ts |
Interruptor de desactivación para la función de observabilidad de coincidencias de memoria A2A. Establézcalo en 0 para omitir por completo la búsqueda de recuperación de memoria de una tarea; cualquier otro valor (incluso sin definir) la mantiene habilitada. |
OMNIROUTE_ISSUE_AGENT_ENABLED |
false |
src/app/api/issue-agent/runs/route.ts |
Habilita el endpoint de triaje grabado sin conexión/local de Issue Agent. Déjelo deshabilitado salvo que se ejecuten explícitamente flujos de trabajo locales de triaje grabado. |
OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS |
(sin definir) | src/lib/issueAgent/execution.ts |
Tiempo de espera (ms) para una única ejecución de triaje grabado de Issue Agent. Se limita a un máximo interno; si no se define o no es válido, se utiliza el valor predeterminado integrado. |
OMNIROUTE_CONTEXT |
(contexto activo) | bin/cli/program.mjs, bin/cli/api.mjs |
Contexto/perfil del modo remoto de la CLI para los comandos omniroute; anula el contexto activo del almacén local de contextos. Equivale a --context <name>. |
OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED |
0 |
bin/cli/contexts.mjs |
Deshabilita el backend opcional del llavero del sistema operativo keytar para las credenciales de contexto de la CLI. Cuando está habilitado, las credenciales permanecen en config.json con el modo 0600 y la CLI emite una advertencia única de uso del mecanismo alternativo; está destinado al funcionamiento deliberado en entornos sin interfaz gráfica o contenedores. |
OMNIROUTE_MCP_ENFORCE_SCOPES |
false |
open-sse/mcp-server/server.ts |
Aplica el control de acceso basado en ámbitos a las llamadas de herramientas MCP. |
OMNIROUTE_MCP_SCOPES |
(todos) | open-sse/mcp-server/server.ts |
Ámbitos separados por comas: admin, combos, health, models, routing, budget, metrics, pricing, memory, skills. |
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS |
false |
open-sse/mcp-server/descriptionCompressor.ts |
Comprime las descripciones de las herramientas MCP antes de serializar el manifiesto. Valores de activación: 1, true, on. |
OMNIROUTE_MCP_DESCRIPTION_COMPRESSION |
rtk |
open-sse/mcp-server/descriptionCompressor.ts |
Algoritmo/perfil de compresión. Valores de desactivación: 0, false, off. |
OMNIROUTE_MCP_FETCH_TIMEOUT_MS |
10000 |
open-sse/mcp-server/fetchTimeout.ts |
Límite de tiempo (ms) antes de cancelar las lecturas internas de administración del servidor MCP (estado, resiliencia, combinaciones, cuota, uso). |
OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS |
60000 |
open-sse/mcp-server/fetchTimeout.ts |
Tiempo límite de cancelación (ms) para los saltos de MCP que esperan a un proveedor (route_request, web_search, web_fetch). |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
src/lib/localCorpus/configured.ts |
Número máximo de instancias del índice del corpus local almacenadas en memoria caché (LRU, una por cada directorio raíz indexado). Limitado a un mínimo de 1. |
MODEL_SYNC_INTERVAL_HOURS |
24 |
src/shared/services/modelSyncScheduler.ts |
Intervalo de sincronización del catálogo de modelos, en horas. |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
src/lib/usage/providerLimits.ts |
Intervalo de consulta de los límites de frecuencia y las cuotas del proveedor. |
PROVIDER_LIMITS_SYNC_SPACING_MS |
1500 |
src/lib/usage/providerLimits.ts |
Pausa (ms) entre consultas consecutivas de cuotas OAuth durante una sincronización masiva; las conexiones OAuth se consultan de una en una para evitar ráfagas hacia un servicio ascendente. 0 desactiva este comportamiento (consultas simultáneas). |
OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS |
250 |
open-sse/services/quotaFetchThrottle.ts |
Intervalo mínimo (ms) entre consultas consecutivas de cuotas al servicio ascendente en la ruta de comprobación previa/supervisión por solicitud; separa las llamadas de red simultáneas para que muchas cuentas con una misma IP no generen ráfagas hacia el servicio ascendente. Integrado en los mecanismos de consulta de cuotas de Codex (/wham/usage), DeepSeek, Bailian (ambos puntos de consulta), OpenCode y Crof (#6009, #6911). La ruta genérica de despacho usage.ts::getUsageForProvider (github/glm/minimax/nanogpt/xai/etc.) aún no está cubierta; se realiza su seguimiento por separado. Las coincidencias de caché no se ven afectadas. 0 lo desactiva; limitado a 0..5000. |
PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS |
5000 |
src/lib/usage/providerLimits.ts |
Retraso (ms) antes de actualizar los límites del proveedor tras un evento de uso real, para dar tiempo a la API de cuotas ascendente a registrar el consumo. |
OMNIROUTE_LOGIN_BROWSER_PATH |
detección automática | open-sse/services/adobeFireflyBrowserLogin.ts |
Ruta absoluta a un ejecutable de Chrome o Edge del sistema utilizado para el inicio de sesión interactivo en Adobe Firefly y la renovación fuera de pantalla. |
ADOBE_FIREFLY_BROWSER_REFRESH |
habilitado | open-sse/services/adobeFireflySession.ts |
Mantiene actualizados el estado de IMS y el estado de riesgo del navegador mediante sesiones de Chrome CDP específicas de cada cuenta. Establézcalo en 0 para deshabilitar la renovación mediante el navegador. |
ADOBE_FIREFLY_SESSION_DISK |
habilitado | open-sse/services/adobeFireflySession.ts |
Conserva las sesiones reparadas de Adobe en DATA_DIR entre reinicios del proceso. Establézcalo en 0 para mantener las sesiones únicamente en memoria. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
12000 |
open-sse/services/adobeFireflySession.ts |
Intervalo mínimo, en milisegundos, entre envíos de generación a Adobe Firefly; 0 deshabilita el espaciado. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
15000 |
open-sse/services/adobeFireflySession.ts |
Periodo de espera adicional, en milisegundos, después de cada tercer envío correcto a Adobe. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
8000 |
open-sse/services/adobeFireflyClient.ts |
Espera incremental base, en milisegundos, tras respuestas transitorias 408 de Adobe; se combina con el espaciado entre envíos durante un máximo de cinco intentos. |
OMNIROUTE_DISABLE_BACKGROUND_SERVICES |
false |
src/instrumentation-node.ts |
Deshabilita todos los servicios en segundo plano (sincronización, precios y actualización de modelos). Útil para CI/pruebas. |
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS |
(sin definir) | src/lib/config/runtimeSettings.ts |
Fuerza la activación de las tareas en segundo plano cuando se detectan pruebas automatizadas. Establézcalo en 1 para anular la heurística de pruebas. |
OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS |
600000 |
src/lib/jobs/budgetResetJob.ts |
Frecuencia de comprobación del restablecimiento del presupuesto (ms). Mínimo de 10000. |
OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS |
60000 |
src/lib/quota/connectionRecovery.ts |
Cadencia de recuperación proactiva tras el enfriamiento de conexiones (ms): vuelve a validar las conexiones cuyo rate_limited_until transitorio ha expirado, fuera de la ruta crítica de las solicitudes. Mínimo: 5000. |
OMNIROUTE_DISABLE_CONNECTION_RECOVERY |
false |
src/lib/quota/connectionRecovery.ts |
Desactiva el programador de recuperación proactiva tras el enfriamiento de conexiones (la recuperación diferida en getProviderCredentials sigue aplicándose). |
OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS |
1800000 |
src/lib/jobs/reasoningCacheCleanupJob.ts |
Cadencia de limpieza de la caché de razonamiento (ms). Mínimo: 60000. |
OMNIROUTE_REASONING_MIN_BUDGET |
sin definir (desactivado) | open-sse/services/reasoningTokenBuffer.ts |
Límite mínimo opcional para los presupuestos de salida de modelos de razonamiento: el valor max_tokens del llamador en [256, límite mínimo) se eleva al límite mínimo (restringido por el límite de salida del modelo). Sin definir = los presupuestos del cliente nunca se amplían (#9507). |
OMNIROUTE_LOG_EXPORT_CRON |
0 * * * * |
src/lib/jobs/logExportJob.ts |
Expresión cron (UTC) para la tarea de exportación de registros de llamadas que vacía cada destino de exportación de registros habilitado. |
OMNIROUTE_CONFIG_HOT_RELOAD_MS |
5000 |
src/lib/config/hotReload.ts |
Intervalo de sondeo (ms) para la recarga en caliente de la configuración. Se rechazan los valores inferiores a 1000. |
OMNIROUTE_DISABLE_REDIS_AUTH_CACHE |
(habilitado) | src/lib/db/apiKeys.ts |
Establezca el valor en 1 para omitir la caché de autenticación de claves de API respaldada por Redis (fuerza lecturas de la base de datos). |
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
0 |
open-sse/services/compression/engines/rtk/filterLoader.ts |
Confía en las reglas de filtrado de proyectos RTK administradas por el usuario sin comprobaciones estrictas de firma. |
OMNIROUTE_LITE_MAX_TOOL_LENGTH |
2000 |
open-sse/services/compression/lite.ts |
Límite de caracteres para el truncamiento proactivo de resultados de herramientas de Lite cuando lite.maxToolLength no está definido. Intervalo: 256–1000000. La configuración del panel prevalece sobre esta variable de entorno. |
OMNI_COMPRESSION_WORKERS |
2 |
open-sse/services/compression/compressionWorkerPool.ts |
Número máximo de procesos de trabajo RTK/Caveman síncronos simultáneos; las tareas excedentes esperan en orden FIFO. |
OMNI_COMPRESSION_WORKER_TIMEOUT_MS |
120000 |
open-sse/services/compression/compressionWorkerPool.ts |
Tiempo de espera por tarea en milisegundos. Los procesos de trabajo que superan el tiempo de espera se terminan y la solicitud continúa sin cambios, siguiendo una estrategia de fallo abierto. |
OMNI_COMPRESSION_WORKER_IDLE_MS |
60000 |
open-sse/services/compression/compressionWorkerPool.ts |
Tiempo de inactividad en milisegundos antes de que se termine un proceso de trabajo de compresión sin usar. |
COMPRESSION_PIPELINE_BREAKER_ENABLED |
false |
open-sse/services/compression/pipelineEngineBreaker.ts |
Interruptor principal del disyuntor por motor para canalizaciones apiladas T02. Activación opcional (desactivado de forma predeterminada) — cuando está activado, se omite durante un período de enfriamiento cualquier motor que genere errores repetidamente entre solicitudes (fallo abierto); desactivado = comportamiento heredado idéntico byte a byte. |
COMPRESSION_PIPELINE_BREAKER_THRESHOLD |
3 |
open-sse/services/compression/pipelineEngineBreaker.ts |
Número de fallos consecutivos entre solicitudes antes de que se abra el disyuntor de un motor. |
COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS |
30000 |
open-sse/services/compression/pipelineEngineBreaker.ts |
Milisegundos durante los que se omite un motor cuyo disyuntor está abierto antes de realizar una prueba en estado semiabierto. |
COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR |
2 |
open-sse/services/compression/engines/ccr/index.ts |
Rampa de retroalimentación de recuperación de CCR T08/H8: cada recuperación previa de un bloque almacenado aumenta linealmente su minChars efectivo (el contenido recuperado con frecuencia se comprime menos; >=3 recuperaciones = nunca se comprime). 1 desactiva la rampa (solo omisión binaria al alcanzar el umbral). |
COMPRESSION_CCR_DURABLE_STORE |
true |
open-sse/services/compression/engines/ccr/index.ts |
Almacén duradero de bloques CCR (#9061). Respalda el almacén en memoria con SQLite para que los bloques sobrevivan al desalojo LRU, al TTL, a un reinicio o a una recuperación que llegue a otra instancia. Establézcalo en false para mantener los bloques únicamente en memoria. Los bloques de más de 512 KB y los entornos de ejecución en la nube permanecen únicamente en memoria en todos los casos. |
COMPRESSION_PREFIX_FREEZE_ENABLED |
false |
open-sse/services/compression/prefixFreeze.ts |
Interruptor principal de congelación de prefijos basada en el uso observado T08/H5. Activación voluntaria (desactivado de forma predeterminada): cuando está activado, un prompt del sistema observado >= al umbral se trata como un prefijo estable que puede almacenarse en caché y se preserva durante la compresión, incluso para proveedores que la heurística de caché estática no detecta (la congelación solo preserva, nunca modifica). |
COMPRESSION_PREFIX_FREEZE_THRESHOLD |
3 |
open-sse/services/compression/prefixFreeze.ts |
Número de observaciones de un prompt del sistema antes de que se trate como un prefijo estable congelado. |
OMNIROUTE_BOOTSTRAPPED |
false |
src/app/(dashboard)/dashboard/page.tsx |
El script de arranque lo establece en true tras la configuración inicial. Controla la visibilidad del asistente de configuración. |
OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE |
0 |
open-sse/executors/antigravity.ts |
Vía de escape: permite que el cuerpo de la solicitud sobrescriba el campo de proyecto de Antigravity. |
ANTIGRAVITY_CREDITS |
off |
open-sse/services/antigravityCredits.ts |
Política de créditos de Google One AI: off nunca inyecta créditos, retry los inyecta una vez después de un error de cuota 429 apto y always los inyecta en la primera solicitud. |
ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS |
0 |
open-sse/translator/request/openai-to-gemini.ts |
Permite que el traductor de solicitudes de Antigravity omita su validación estricta de la firma de solicitudes de la CLI cuando el servicio de origen rechaza firmas reales (modo de depuración/CLI obsoleta). Un valor distinto de cero habilita la omisión. |
AGY_TOKEN_FILE |
~/.gemini/antigravity-cli/antigravity-oauth-token |
src/app/api/providers/agy-auth/apply-local/route.ts |
Sobrescribe la ruta del archivo de token de la CLI de Antigravity (agy) para la importación del inicio de sesión local mediante detección automática. |
Puente OAuth de la CLI (interno)
Sección titulada «Puente OAuth de la CLI (interno)»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_SERVER |
detección automática | src/lib/oauth/config/index.ts |
URL del servidor para el puente de autenticación CLI↔OmniRoute. |
OMNIROUTE_TOKEN |
(sin establecer) | src/lib/oauth/config/index.ts |
Token de autenticación para el puente de la CLI. |
OMNIROUTE_USER_ID |
cli |
src/lib/oauth/config/index.ts |
ID de usuario para las sesiones del puente de la CLI. |
SERVER_URL |
(sin establecer) | src/lib/oauth/config/index.ts |
Alias heredado de OMNIROUTE_SERVER. |
CLI_TOKEN |
(sin establecer) | src/lib/oauth/config/index.ts |
Alias heredado de OMNIROUTE_TOKEN. |
CLI_USER_ID |
(sin establecer) | src/lib/oauth/config/index.ts |
Alias heredado de OMNIROUTE_USER_ID. |
11. Credenciales de proveedores OAuth
Sección titulada «11. Credenciales de proveedores OAuth»Credenciales integradas para el desarrollo en localhost. Para implementaciones remotas, registre sus propias credenciales en la consola para desarrolladores de cada proveedor.
| Variable | Proveedor | Notas |
|---|---|---|
CLAUDE_OAUTH_CLIENT_ID |
Claude Code (Anthropic) | Cliente público; no se necesita ningún secreto. |
CLAUDE_CODE_REDIRECT_URI |
Claude Code | Permite reemplazar el URI de redirección. Valor predeterminado: https://platform.claude.com/oauth/code/callback |
CODEX_OAUTH_CLIENT_ID |
Codex / OpenAI | Cliente público. |
GEMINI_OAUTH_CLIENT_ID |
Gemini (Google) | Requiere el _SECRET correspondiente. |
GEMINI_OAUTH_CLIENT_SECRET |
Gemini (Google) | — |
KIMI_CODING_OAUTH_CLIENT_ID |
Kimi Coding (Moonshot) | Cliente público. |
MUSE_CODE_OAUTH_CLIENT_ID |
Muse Code (Meta) | Reemplazo opcional del ID de cliente público del flujo de dispositivo de Muse CLI. Déjelo sin definir para usar el cliente público incorporado. |
ANTIGRAVITY_OAUTH_CLIENT_ID |
Antigravity (Google) | Requiere el _SECRET correspondiente. |
ANTIGRAVITY_OAUTH_CLIENT_SECRET |
Antigravity (Google) | — |
GITHUB_OAUTH_CLIENT_ID |
GitHub Copilot | Cliente público. |
GHE_COPILOT_OAUTH_CLIENT_ID |
GHE Copilot | Reemplazo opcional del ID de cliente OAuth de GitHub Enterprise Copilot. Si no se define, utiliza el valor público predeterminado de GITHUB_OAUTH_CLIENT_ID. |
COPILOT_INTEGRATION_ID |
GitHub Copilot | Reemplazo opcional del ID de integración del cliente GitHub Copilot enviado en los encabezados Copilot-Integration-Id y Editor-Plugin-Version. El valor predeterminado es copilot-developer-cli. |
WINDSURF_API_KEY |
Windsurf / Devin (v3.8) | Clave de API alternativa utilizada por open-sse/executors/devin-cli.ts cuando no hay credenciales disponibles para la conexión. Opcional. |
CLI_DEVIN_BIN |
Devin CLI (v3.8) | Ruta personalizada al binario de Devin CLI (devin). Resuelta por open-sse/executors/devin-cli.ts. |
GITLAB_DUO_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | ID de cliente OAuth para GitLab Duo. Registre una aplicación en https://gitlab.com/-/profile/applications con el URI de redirección <NEXT_PUBLIC_BASE_URL>/callback y los ámbitos api, read_user, openid, profile, email. Usa GITLAB_OAUTH_CLIENT_ID como alternativa. |
GITLAB_DUO_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | Secreto de cliente OAuth para GitLab Duo. Opcional; el flujo PKCE no requiere ningún secreto. Usa GITLAB_OAUTH_CLIENT_SECRET como alternativa. |
GITLAB_DUO_BASE_URL |
GitLab Duo (v3.8) | Permite reemplazar la URL base de GitLab (GitLab autoalojado). El valor predeterminado es https://gitlab.com. Usa GITLAB_BASE_URL como alternativa. |
GITLAB_BASE_URL |
GitLab Duo (v3.8) | Alternativa heredada para GITLAB_DUO_BASE_URL. Se utiliza cuando la variante _DUO_ no está definida. |
GITLAB_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | Alternativa heredada para GITLAB_DUO_OAUTH_CLIENT_ID, utilizada por src/lib/oauth/constants/oauth.ts. |
GITLAB_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | Alternativa heredada para GITLAB_DUO_OAUTH_CLIENT_SECRET, utilizada por src/lib/oauth/constants/oauth.ts. |
QODER_OAUTH_CLIENT_SECRET |
Qoder | — |
QODER_OAUTH_AUTHORIZE_URL |
Qoder | Establézcala para habilitar OAuth de Qoder. |
QODER_OAUTH_TOKEN_URL |
Qoder | — |
QODER_OAUTH_USERINFO_URL |
Qoder | — |
QODER_OAUTH_CLIENT_ID |
Qoder | — |
QODER_PERSONAL_ACCESS_TOKEN |
Qoder | Clave de API directa alternativa (omite OAuth). |
QODER_CLI_WORKSPACE |
Qoder | ID del espacio de trabajo para la CLI de Qoder. |
OMNIROUTE_QODER_WORKSPACE |
Qoder | Alias de QODER_CLI_WORKSPACE. |
QODER_CLI_CONFIG_DIR |
Qoder | Sobrescribe el directorio de configuración de la CLI de Qoder (sesión PAT aislada, evita sobrescribir un inicio de sesión del navegador). |
BLACKBOX_WEB_VALIDATED_TOKEN |
Blackbox Web | Token tk del frontend que se envía como validated en /api/chat. Es obligatorio cuando Blackbox exige la coincidencia de tokens; de lo contrario, OmniRoute utiliza como alternativa un UUID aleatorio. Consulte la incidencia #2252. |
VISION_BRIDGE_BASE_URL |
Mecanismo de protección de Vision Bridge | URL base compatible con OpenAI para llamadas de Vision Bridge que no sean de Anthropic. De forma predeterminada, utiliza la variable de entorno de la URL heredada de OpenAI o api.openai.com. Apunte al bucle interno /v1 de OmniRoute o a cualquier endpoint compatible con OpenAI (compatibilidad de Gemini con OpenAI, OpenRouter). Incidencia #2232. Cuando la URL es el propio /v1 de OmniRoute, la subsolicitud de descripción envía x-omniroute-admission-bypass: internal y se autentica con la credencial resuelta del bucle interno (centinela sk_omniroute en modo local, o OMNIROUTE_API_KEY / ROUTER_API_KEY — #1350), de modo que los despliegues con REQUIRE_API_KEY=true funcionen. |
VISION_BRIDGE_API_KEY |
Mecanismo de protección de Vision Bridge | Clave de API para la URL anterior. Sobrescribe las variables de entorno de OpenAI/Google de cada proveedor para las llamadas de Vision Bridge que no sean de Anthropic. Los modelos de Anthropic mantienen su ruta de clave dedicada de Anthropic. Incidencia #2232. |
OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS |
Mecanismo de protección de Vision Bridge | Tiempo durante el que se almacena en caché un resultado de enrutamiento «sin candidato utilizable», en ms (valor predeterminado: 30000). Los valores no válidos o negativos usan el valor predeterminado como alternativa; 0 deshabilita la caché negativa. Fuente: src/lib/guardrails/visionBridgeRouter.ts. |
[!WARNING]
- Vaya a Google Cloud Console → Credenciales
- Cree un ID de cliente de OAuth 2.0 (tipo: «Aplicación web»)
- Añada la URL de su servidor como URI de redireccionamiento autorizado
- Sustituya los valores de las credenciales en
.env.
12. Reemplazos de User-Agent de proveedores
Sección titulada «12. Reemplazos de User-Agent de proveedores»Reemplaza el encabezado User-Agent enviado a cada proveedor ascendente. La clase base del ejecutor lo resuelve dinámicamente en tiempo de ejecución:
process.env[`${PROVIDER_ID}_USER_AGENT`]Fuente:
open-sse/executors/base.ts→buildHeaders()
| Variable | Valor predeterminado | Cuándo actualizar |
| –––––––––––––––– | ——————————————— | ———————————————————————————————— | —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— |
| CLAUDE_USER_AGENT | claude-cli/2.1.258 (external, cli) | Cuando Anthropic publique una nueva versión de la CLI |
| CLAUDE_DISABLE_TOOL_NAME_CLOAK | false | executors/base.ts + executors/cliproxyapi.ts | Establécelo en 1/true para reenviar literalmente a Anthropic los nombres de herramientas de arneses de terceros en ambas rutas dirigidas a Anthropic (OAuth nativo y CLIProxyAPI). De forma predeterminada, el ejecutor asigna alias de manera determinista a los nombres de herramientas que no son de Claude Code (la asignación canónica de Claude Code cuando existe; de lo contrario, PascalCase) y los revierte en la respuesta mediante _toolNameMap, para que los arneses con herramientas snake_case no sean rechazados por ser identificados como clientes de terceros. Solo para depuración. |
| CODEX_USER_AGENT | codex-cli/0.155.0 (Windows 10.0.26200; x64) | Cuando OpenAI actualice la CLI de Codex |
| CODEX_CLIENT_VERSION | 0.155.0 | Reemplaza la versión del cliente de Codex independientemente de la cadena completa del UA |
| CLAUDE_CODE_CLIENT_VERSION | 2.1.258 | Reemplaza la versión anunciada de Claude Code independientemente de CLAUDE_USER_AGENT. Anthropic restringe algunos modelos según este valor (#12417). |
| GITHUB_COPILOT_CLI_VERSION | 1.0.81-6 | Reemplaza la versión anunciada de la CLI de Copilot independientemente de GITHUB_USER_AGENT |
| GITHUB_USER_AGENT | GitHubCopilotChat/0.54.0 | Cuando GitHub Copilot Chat se actualice |
| ANTIGRAVITY_USER_AGENT | antigravity/2.0.1 darwin/arm64 | Cuando Antigravity IDE se actualice |
| KIRO_USER_AGENT | AWS-SDK-JS/3.0.0 kiro-ide/1.0.0 | Cuando Kiro IDE se actualice |
| KIRO_OAUTH_CLIENT_ID | kiro-cli | Reemplaza el clientId (identificador público) del código de dispositivo social de Kiro |
| KIRO_VERIFY_FULL_CRC | false | Opción voluntaria: validación completa del CRC de cada trama en el flujo de eventos de Kiro (para depurar flujos corruptos) |
| QODER_USER_AGENT | Qoder-Cli | Cuando la CLI de Qoder se actualice |
| CURSOR_USER_AGENT | Cursor/3.3 | Cuando Cursor se actualice |
[!TIP] Puedes añadir reemplazos de User-Agent para cualquier proveedor utilizando el patrón
{PROVIDER_ID}_USER_AGENT. El ejecutor construye dinámicamente el nombre de la variable de entorno.
13. Compatibilidad de huellas digitales de CLI
Sección titulada «13. Compatibilidad de huellas digitales de CLI»Cuando está habilitada, OmniRoute reordena los encabezados HTTP y los campos del cuerpo JSON para que coincidan con la firma exacta de las herramientas CLI oficiales. Esto reduce el riesgo de que la cuenta sea marcada, a la vez que conserva la IP del proxy.
Fuente: open-sse/config/cliFingerprints.ts, open-sse/executors/base.ts
Por proveedor
Sección titulada «Por proveedor»| Variable | Activación | Efecto |
|---|---|---|
CLI_COMPAT_CODEX |
=1 |
Imita la firma de solicitudes de Codex CLI |
CLI_COMPAT_CLAUDE |
=1 |
Imita la firma de solicitudes de Claude Code |
CLI_COMPAT_GITHUB |
=1 |
Imita la firma de solicitudes de GitHub Copilot |
CLI_COMPAT_ANTIGRAVITY |
=1 |
Imita la firma de solicitudes de Antigravity |
CLI_COMPAT_CURSOR |
=1 |
Imita la firma de solicitudes de Cursor |
CLI_COMPAT_KIMI_CODING |
=1 |
Imita la firma de solicitudes de Kimi Coding |
CLI_COMPAT_KILOCODE |
=1 |
Imita la firma de solicitudes de Kilo Code |
CLI_COMPAT_CLINE |
=1 |
Imita la firma de solicitudes de Cline |
| Variable | Activación | Efecto |
|---|---|---|
CLI_COMPAT_ALL |
=1 |
Habilita la compatibilidad de huellas digitales para todos los proveedores a la vez. |
Anulaciones de identidad de Kimi Coding CLI
Sección titulada «Anulaciones de identidad de Kimi Coding CLI»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
KIMI_CLI_VERSION |
1.36.0 |
src/lib/oauth/providers/kimi-coding.ts |
Anula la versión de Kimi CLI enviada durante las llamadas OAuth/API. |
KIMI_CODING_DEVICE_ID |
(valor capturado predeterminado) | src/lib/oauth/providers/kimi-coding.ts |
Anula el ID de dispositivo Kimi capturado usado en los encabezados del cliente. |
[!NOTE] Esta función opera junto con las anulaciones de User-Agent (§12). El sistema de huellas digitales gestiona el orden de los encabezados y de los campos del cuerpo, mientras que las anulaciones de User-Agent gestionan la cadena de UA específica. Ambas pueden habilitarse de forma independiente.
14. Proveedores con clave de API
Sección titulada «14. Proveedores con clave de API»Claves de API para proveedores que usan autenticación directa. Configuración preferida: Panel de control → Proveedores → Añadir clave de API.
La configuración mediante variables de entorno es una alternativa para implementaciones con Docker o sin interfaz gráfica.
Patrón reconocido: {PROVIDER_ID}_API_KEY
| Variable | Proveedor |
|---|---|
DEEPSEEK_API_KEY |
DeepSeek |
NVIDIA_API_KEY |
NVIDIA NIM |
JINA_AI_API_KEY |
Jina AI (Foundation API + alternativa de Reader) |
JINA_API_KEY |
Jina AI (alias de JINA_AI_API_KEY) |
GEMINI_API_KEY |
Gemini (Google AI Studio): embeddings + alternativa de chat |
GOOGLE_API_KEY |
Gemini (alias de GEMINI_API_KEY) |
[!NOTE] Las entradas estáticas
${PROVIDER}_API_KEYpara Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius y Qianfan se eliminaron en v3.8.0 porque el entorno de ejecución ya no las lee; esos proveedores dependen exclusivamente del Panel de control /data/provider-credentials.json/ la base de datos cifrada. Consulta la sección Auditoría: variables eliminadas/inactivas al final de este documento para conocer la ruta de migración.
[!TIP] Las claves configuradas mediante el Panel de control se almacenan cifradas en SQLite y tienen prioridad sobre las variables de entorno.
Jina: Los embeddings
jina-ai/…, así como las operaciones de rerank, classify, segment yjina-search, no facturan una clave de entorno del clúster cuando existe una conexiónjina-ai(o una conexión compartidajina-reader) en el panel de control;getProviderCredentialscompleta primero los valores disponibles.JINA_AI_API_KEY/JINA_API_KEYsolo se utilizan cuando no existe una clave válida en el panel de control. Los registros de llamadas atribuyen la alternativa de entorno comoconnection_id=env:JINA_AI_API_KEY. La tarjeta Reader (jina-reader,r.jina.ai) nunca atiende/v1/embeddingsni/v1/rerank.Gemini:
gemini/gemini-embedding-2(aliasgoogle/gemini-embedding-2) utiliza primero la conexióngeminidel panel de control.GEMINI_API_KEY/GOOGLE_API_KEYsolo se utilizan cuando no existe una clave válida en el panel de control. Los registros de llamadas atribuyen la alternativa de entorno comoconnection_id=env:GEMINI_API_KEY. El tráfico multimodal nativo utilizax-goog-api-keycon:embedContent/:batchEmbedContents: N elementos deinputde OpenAI se convierten en N vectores.
15. Configuración de tiempos de espera
Sección titulada «15. Configuración de tiempos de espera»Todos los valores se expresan en milisegundos. La resolución está centralizada en src/shared/utils/runtimeTimeouts.ts.
Jerarquía de tiempos de espera
Sección titulada «Jerarquía de tiempos de espera»REQUEST_TIMEOUT_MS (anulación global)├─→ FETCH_TIMEOUT_MS (llamadas a proveedores externos, valor predeterminado: 600000)│ ├─→ FETCH_HEADERS_TIMEOUT_MS (hereda de FETCH_TIMEOUT_MS)│ ├─→ FETCH_BODY_TIMEOUT_MS (hereda de FETCH_TIMEOUT_MS)│ ├─→ TLS_CLIENT_TIMEOUT_MS (hereda de FETCH_TIMEOUT_MS)│ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (independiente, valor predeterminado: 10000)│ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (independiente, valor predeterminado: 15000)│ ├── FETCH_CONNECT_TIMEOUT_MS (independiente, valor predeterminado: 30000)│ └── FETCH_KEEPALIVE_TIMEOUT_MS (independiente, valor predeterminado: 4000)├─→ STREAM_IDLE_TIMEOUT_MS (hereda de REQUEST_TIMEOUT_MS, valor predeterminado: 600000)├─→ STREAM_ACTIVE_TIMEOUT_MS (independiente, valor predeterminado: 1260000; 0 lo desactiva)├─→ STREAM_READINESS_TIMEOUT_MS (hereda de REQUEST_TIMEOUT_MS, valor predeterminado: 80000)├─→ STREAM_READINESS_MAX_TIMEOUT_MS (limita las extensiones adaptativas de disponibilidad, valor predeterminado: 180000)└─→ API_BRIDGE_PROXY_TIMEOUT_MS (hereda de REQUEST_TIMEOUT_MS, valor predeterminado: 30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (derivado, valor predeterminado: 300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (valor predeterminado: 60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (valor predeterminado: 5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (valor predeterminado: 0 = desactivado)| Variable | Valor predeterminado | Descripción |
|---|---|---|
REQUEST_TIMEOUT_MS |
(no definido) | Atajo global: sobrescribe los valores predeterminados de FETCH_TIMEOUT_MS y STREAM_IDLE_TIMEOUT_MS. |
FETCH_TIMEOUT_MS |
600000 |
Tiempo de espera total de las solicitudes HTTP para las llamadas al proveedor ascendente. |
STREAM_IDLE_TIMEOUT_MS |
600000 |
Silencio máximo entre bytes sin procesar del origen ascendente antes de cancelar. Los modelos de razonamiento extendido rara vez se detienen durante más de 90 s. |
STREAM_ACTIVE_TIMEOUT_MS |
1260000 |
Duración activa total máxima del flujo SSE; nunca se reinicia al recibir bytes del origen ascendente y es independiente de REQUEST_TIMEOUT_MS. Se deriva del mayor timeoutMs por modelo del registro (1200000, Codex), más un margen de 60000, para que un modelo al que se permita consumir todo su presupuesto nunca sea interrumpido a mitad de una respuesta. Establézcalo en 0 para desactivarlo. |
OMNIROUTE_SSE_COMMENTS |
(desactivado) | Indica si OmniRoute puede emitir líneas de comentario SSE : (por ejemplo, el latido : keepalive y los tráileres de metadatos x-omniroute-*). Está desactivado de forma predeterminada (#10524), ya que los clientes estrictamente compatibles con OpenAI aplican JSON.parse a cada línea SSE y fallan con los comentarios :; los latidos data: no se ven afectados. Establezca on/true/1/yes para volver a activarlo. Utilizado por open-sse/utils/sseHeartbeat.ts. |
STREAM_READINESS_TIMEOUT_MS |
80000 |
Tiempo para recibir el primer evento SSE que no sea un ping. Hereda REQUEST_TIMEOUT_MS cuando está definido. |
STREAM_READINESS_MAX_TIMEOUT_MS |
180000 |
Ventana máxima adaptativa de disponibilidad del primer evento para solicitudes de streaming grandes, con un uso intensivo de herramientas o con un alto nivel de razonamiento. |
OMNIROUTE_AGENT_GOAL_POLICY_ENABLED |
true |
Interruptor de emergencia para la heurística de /goal. Establezca false/0/off para desactivar por completo la detección: los tiempos de espera de disponibilidad y la recuperación del flujo nunca se incrementan en función del cuerpo o los encabezados de la solicitud, lo que mitiga la amplificación del tiempo de espera controlada por el cliente. |
OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS |
600000 |
Ventana máxima de disponibilidad del primer evento para ejecuciones de agente /goal detectadas o solicitudes forzadas mediante x-omniroute-agent-goal. |
OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY |
true |
Habilita automáticamente la recuperación temprana del flujo para las ejecuciones de agente /goal detectadas. Establezca false/0/off para desactivar la activación específica de objetivos. Esto solo puede AÑADIR recuperación a la configuración predeterminada del operador; nunca sobrescribe una desactivación explícita mediante STREAM_RECOVERY_ENABLED o la configuración de la base de datos. |
OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS |
true |
Elimina los eventos SSE no estándar codex.* (por ejemplo, codex.rate_limits) que hacen que responses.stream() del SDK de OpenAI falle con un error 502. ACTIVADO de forma predeterminada (#11014). Establezca 0/false/no/off para reenviarlos. |
OMNIROUTE_CODEX_APPSERVER_WS |
(no definido) | Transporte del app-server de Codex de activación opcional. Endpoint WebSocket (ws:///wss://) de un sidecar local codex app-server. Cuando se establece junto con un token, las solicitudes de Codex se enrutan mediante JSON-RPC al sidecar en lugar de usar la API HTTP Responses. También se puede establecer por conexión mediante providerSpecificData.codexAppServerUrl. Utilizado por open-sse/executors/codex/appServerConfig.ts. |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN |
(no definido) | Token de capacidad/bearer en línea presentado al app-server. Sobrescritura por conexión: providerSpecificData.codexAppServerToken. |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE |
(no definido) | Ruta a un archivo que contiene el token de capacidad del app-server (procedente de codex app-server --ws-token-file). Se utiliza cuando OMNIROUTE_CODEX_APPSERVER_WS_TOKEN no está definido. Sobrescritura por conexión: providerSpecificData.codexAppServerTokenFile. |
OMNIROUTE_CODEX_APPSERVER_CWD |
/tmp |
Directorio de trabajo en el que se ejecuta el turno del app-server. Sobrescritura por conexión: providerSpecificData.codexAppServerCwd. |
OMNIROUTE_CODEX_APPSERVER_APPROVAL |
(no definido) | Política de aprobación que se pasa al turno del app-server (por ejemplo, never, on-request). Sobrescritura por conexión: providerSpecificData.codexAppServerApprovalPolicy. |
OMNIROUTE_CODEX_APPSERVER_SANDBOX |
(no definido) | Política de aislamiento que se pasa al turno del app-server (por ejemplo, read-only, workspace-write, danger-full-access). Cuando no está definida, el ejecutor usa de forma predeterminada workspace-write (reforzado; anteriormente danger-full-access). Sobrescritura por conexión: providerSpecificData.codexAppServerSandbox. |
OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE |
false |
Aprueba automáticamente las solicitudes de aprobación propias del app-server (ejecución de comandos, archivos o permisos en el host). Está desactivado de forma predeterminada: las solicitudes se rechazan automáticamente; las llamadas a herramientas del entorno de ejecución no se ven afectadas (viajan por el mecanismo de paso independiente item/tool/call). Acepta true/1/yes. Sobrescritura por conexión: providerSpecificData.codexAppServerAutoApprove. |
FETCH_HEADERS_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
Tiempo para recibir los encabezados de respuesta. |
OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS |
30000 (30 s) |
Espera máxima para el inicio de la respuesta (ms) en cada intento directo sin proxy. Tras agotarse el tiempo de espera, se reintenta una vez con un socket nuevo; establezca 0 para desactivar el límite y conservar el comportamiento anterior. |
OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS |
600000 (10 min) |
Límite máximo (ms) para el intento RETRY con un socket nuevo después de que se agote el tiempo de espera para el inicio de la respuesta de un intento con una conexión reutilizada, como se indicó anteriormente (#13703). Solo se aplica cuando el invocador ya ha asociado su propia señal de fecha límite (la cascada resuelta de conexión/modelo/proveedor/FETCH_TIMEOUT_MS); esa señal es el límite real y se activa primero en la ruta prevista, por lo que este es un mecanismo de respaldo generoso en lugar de un límite fijo. Sin él, el reintento reutilizaba la misma ventana breve de OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS que el intento con una conexión reutilizada y devolvía un error 504 para modelos de razonamiento en buen estado con un TTFB lento. Nunca puede establecerse por debajo del límite mínimo fijo anterior; cuando el invocador no proporciona ninguna señal de fecha límite, el reintento mantiene sin cambios el límite mínimo fijo. |
FETCH_BODY_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
Tiempo para recibir el cuerpo completo de la respuesta. |
FETCH_CONNECT_TIMEOUT_MS |
30000 |
Tiempo de espera para establecer la conexión TCP. |
FETCH_KEEPALIVE_TIMEOUT_MS |
4000 |
Tiempo de espera de inactividad del socket keep-alive. |
TLS_CLIENT_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
Tiempo de espera del proxy de huella digital TLS (wreq-js). |
TLS_FIRST_BYTE_WATCHDOG_MS |
10000 |
Limita específicamente el tiempo hasta el primer byte del cuerpo en el transporte de huella digital TLS de wreq-js; TLS_CLIENT_TIMEOUT_MS por sí solo no puede detectar un cuerpo bloqueado, ya que se resuelve en cuanto llegan las cabeceras (#12656). Cuando se agota el tiempo de espera, se cancela el lector de wreq y se recurre al despachador directo/proxy; 0 desactiva el supervisor. |
RESPONSES_FIRST_BYTE_TIMEOUT_MS |
15000 |
Solo para el ejecutor OpenCode y únicamente mientras esté activada la marca de funcionalidad OPENCODE_RESPONSES_STALL_ROTATION (desactivada de forma predeterminada): limita la espera del primer byte del cuerpo de una respuesta transmitida de Responses después de sus cabeceras (#13484). Un flujo de Responses se abre con response.created, por lo que el silencio después de esta ventana se considera un bloqueo: la cuenta entra en un periodo de enfriamiento y la solicitud rota una vez a la siguiente cuenta; un segundo bloqueo provoca un fallo inmediato. 0 desactiva la protección incluso con la marca activada. |
OPENCODE_PARK_AND_RESUME |
false |
Solo para el ejecutor OpenCode: pone en espera la solicitud con una señal periódica de actividad después de varios errores 429 transitorios (o de un marcador reciente de saturación del grupo) y, a continuación, reproduce una etapa limitada de hasta 3 cuentas secuenciales, en lugar de distribuirla por toda la flota (#13924). Desactivado de forma predeterminada: cada error 429 rota a la siguiente cuenta exactamente como antes. |
OPENCODE_POOL_STRAIN_MARKER_PATH |
(sin establecer) | Solo para el ejecutor OpenCode: ruta alternativa del marcador de saturación del grupo que se lee antes de poner la solicitud en espera ({since, reason, ttl_s}; valor predeterminado: /tmp/opencode-pool-strain.json, #13924). Un marcador reciente pone la solicitud en espera sin volver a contar; si está ausente o es obsoleto, se recurre al contador de ráfagas. |
API_BRIDGE_PROXY_TIMEOUT_MS |
30000 |
Tiempo de espera del salto del proxy para las solicitudes del puente /v1. |
FIRECRAWL_BASE_URL |
https://api.firecrawl.dev |
Dirige el ejecutor de obtención web de Firecrawl a una instancia autoalojada (la clave de API es opcional fuera de la nube). |
FIRECRAWL_TIMEOUT_MS |
30000 |
Tiempo de espera por solicitud para el ejecutor de obtención web de Firecrawl. |
API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS |
300000 |
Tiempo de espera total de la solicitud del servidor para el puente. |
API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS |
60000 |
Tiempo para enviar las cabeceras de respuesta a través del puente. |
API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS |
5000 |
Tiempo de espera de inactividad keep-alive del puente. |
API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS |
0 |
Tiempo de espera del socket sin procesar (0 = desactivado). |
SHUTDOWN_TIMEOUT_MS |
30000 |
Periodo de gracia tras SIGTERM/SIGINT antes de forzar la salida. |
OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS |
120000 |
Valor de reserva utilizado por src/shared/utils/fetchTimeout.ts cuando FETCH_TIMEOUT_MS no está establecido. |
OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS |
8000 |
Tiempo de espera (ms) para los preajustes validationRead y modelsProbe de src/shared/network/safeOutboundFetch.ts. Auméntelo para endpoints lentos (Cerebras, Cloudflare AI, Groq) a fin de evitar oscilaciones entre los estados activo/error en el panel. Para valores no válidos (<1000) o no numéricos, se utiliza 8000 ms como valor de reserva. |
OMNIROUTE_RELAY_FETCH_TIMEOUT_MS |
25000 |
Tiempo de espera de fetch específico del relay en open-sse/utils/proxyFetch.ts (#9158). Un relay bloqueado debe fallar antes del tiempo de espera del cliente/agente (~30s), para que quienes realizan la llamada vean un fallo específico del relay en lugar de un tiempo de espera genérico del upstream. Limitado a 29000 para que siempre se active primero. |
OMNIROUTE_RETRY_BACKOFF_MS |
10 |
Espera de retroceso compartida para las rutas direct/relay/proxy con un único reintento en open-sse/utils/proxyFetch.ts (#9158). 0 = reintentar inmediatamente. |
OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS |
60000 |
Tiempo de espera de solicitud nativo de wreq-js (claudeTlsClient.ts). |
OMNIROUTE_CLAUDE_TLS_GRACE_MS |
10000 |
Margen para el límite estricto absoluto de JS añadido al tiempo de espera nativo. |
OMNIROUTE_PPLX_TLS_TIMEOUT_MS |
30000 |
Tiempo de espera de solicitud nativo de wreq-js (perplexityTlsClient.ts). |
OMNIROUTE_PPLX_TLS_GRACE_MS |
10000 |
Margen para el límite estricto absoluto de JS añadido al tiempo de espera nativo. |
OMNIROUTE_PPLX_SEARCH_HINT |
0 (desactivado) |
Añade “Tienes búsqueda web integrada. Responde directamente a las preguntas utilizando los resultados de búsqueda.” al mensaje del sistema de quien realiza la llamada (perplexity-web/protocol.ts). Desactivado de forma predeterminada: Perplexity realiza búsquedas de todos modos y la frase se filtra en las respuestas como metacomentario para los clientes de programación. Establece 1/true/yes/on para restaurarlo. |
OMNIROUTE_GROK_TLS_TIMEOUT_MS |
60000 |
Tiempo de espera de solicitud nativo de wreq-js (grokTlsClient.ts). |
OMNIROUTE_GROK_TLS_GRACE_MS |
10000 |
Margen para el límite estricto absoluto de JS añadido al tiempo de espera nativo. |
OMNIROUTE_NOTION_TLS_TIMEOUT_MS |
30000 |
Tiempo de espera de solicitud nativo de wreq-js (notionTlsClient.ts); notion-web lo aumenta por solicitud a 180000 para generaciones largas. |
OMNIROUTE_NOTION_TLS_GRACE_MS |
10000 |
Margen para el límite estricto absoluto de JS añadido al tiempo de espera nativo. |
OMNIROUTE_BROWSER_POOL |
on |
Pool compartido de navegadores Playwright para el chat con cookies web respaldado por navegador (browserPool.ts); establece off para desactivarlo. |
OBSCURA_BIN |
auto-detect |
Ruta al binario obscura utilizado como motor principal por el pool de navegadores y el ejecutor de Cloudflare Playground (open-sse/services/obscura.ts); cuando no se establece, se detecta automáticamente desde el PATH del sistema. |
OBSCURA_CDP_ENDPOINT |
(sin establecer) | Apunta a una instancia de Obscura que ya esté en ejecución (http://host:port) en lugar de iniciar una; el módulo no es propietario de ese proceso (open-sse/services/obscura.ts). |
OBSCURA_PORT |
puerto libre aleatorio |
Puerto explícito para el proceso obscura serve iniciado; cuando no se establece, se elige automáticamente un puerto libre (open-sse/services/obscura.ts). |
WEB_COOKIE_USE_BROWSER |
0 |
Hace que una solicitud de chat con cookies web utilice la ruta respaldada por navegador (browserBackedChat.ts); 1 para habilitarla. |
KIMI_WEB_BASE_URL |
https://www.kimi.ai |
URL base para el ejecutor de Kimi Web (Connect-RPC internacional de kimi.ai) (kimi-web.ts); sobrescríbela únicamente para endpoints espejo/proxy. |
KIMI_WEB_CHAT_URL |
<KIMI_WEB_BASE_URL>/apiv2/kimi.gateway.chat.v1.ChatService/Chat |
Endpoint de chat completo para el ejecutor de Kimi Web (kimi-web.ts). |
OMNIROUTE_LOGIN_BROWSER_PATH |
(detectada automáticamente) | Ruta a un ejecutable de Chrome/Edge del sistema para el inicio de sesión interactivo mediante navegador de Adobe Firefly (adobeFireflyBrowserLogin.ts); sobrescribe la detección automática específica de cada sistema operativo. |
OMNIROUTE_STANDALONE_DIR |
salida standalone de .build/ | Sobrescritura en tiempo de compilación del directorio de salida standalone utilizado por el paso de colocación posterior a la compilación (scripts/build/colocate-standalone.mjs); corresponde a las herramientas de compilación, no al entorno de ejecución. |
Los intentos de los destinos combo heredan el tiempo de espera resuelto de la solicitud upstream (FETCH_TIMEOUT_MS, o
REQUEST_TIMEOUT_MS cuando proporciona el valor predeterminado de fetch). Establece targetTimeoutMs en un combo,
en los valores predeterminados del combo o en la sobrescritura del proveedor únicamente para acelerar el fallback del combo; los valores superiores al
tiempo de espera actual del upstream se limitan al tiempo de espera del upstream.
comboTimeoutMs es un presupuesto de tiempo de reloj independiente para todo el combo y abarca todos los destinos de conmutación por error.
Déjalo sin establecer o en 0 para mantener la iteración sin límites (sigue aplicándose un mecanismo de detención
por bloqueo de 10 minutos codificado directamente en comboPredicates.ts). Un valor positivo reemplaza esa
red de seguridad para el combo. Mantén comboTimeoutMs por encima de targetTimeoutMs para que la conmutación por error
siga teniendo tiempo después de un primer destino lento.
Umbrales del disyuntor
Sección titulada «Umbrales del disyuntor»Ajuste del disyuntor a nivel de proveedor. Los valores predeterminados reflejan los valores escalados utilizados desde v3.6 para más de 500 conexiones.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD |
8 |
open-sse/config/constants.ts |
Umbral de fallos consecutivos para proveedores OAuth antes de que se active el disyuntor. |
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS |
60000 |
open-sse/config/constants.ts |
Ventana de restablecimiento (ms) del disyuntor de proveedores OAuth. |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD |
12 |
open-sse/config/constants.ts |
Umbral de fallos consecutivos para proveedores con clave de API. |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS |
30000 |
open-sse/config/constants.ts |
Ventana de restablecimiento (ms) del disyuntor de proveedores con clave de API. |
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD |
2 |
open-sse/config/constants.ts |
Umbral de fallos consecutivos para proveedores locales (Ollama, LM Studio, …). |
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS |
15000 |
open-sse/config/constants.ts |
Ventana de restablecimiento (ms) del disyuntor de proveedores locales. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD |
10 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: fallos dentro de la ventana antes de que todo el proveedor OAuth entre en período de espera. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS |
900000 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: ventana móvil de recuento de fallos (ms) para proveedores OAuth. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS |
300000 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: período de espera (ms) una vez alcanzado el umbral del proveedor OAuth. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD |
5 |
open-sse/config/constants.ts |
El proveedor OAuth entra en DEGRADED al alcanzar esta cantidad de fallos. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER |
8 |
open-sse/config/constants.ts |
Multiplicador máximo de escalamiento de resetTimeout para el proveedor OAuth. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT |
2 |
open-sse/config/constants.ts |
El proveedor OAuth escala después de esta cantidad de ciclos abiertos. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD |
15 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: fallos dentro de la ventana antes de que todo el proveedor con clave de API entre en período de espera. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS |
1800000 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: ventana móvil de recuento de fallos (ms) para proveedores con clave de API. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS |
600000 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: período de espera (ms) una vez alcanzado el umbral del proveedor con clave de API. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD |
7 |
open-sse/config/constants.ts |
El proveedor con clave de API entra en DEGRADED al alcanzar esta cantidad de fallos. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER |
4 |
open-sse/config/constants.ts |
Multiplicador máximo de escalamiento de resetTimeout para el proveedor con clave de API. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT |
3 |
open-sse/config/constants.ts |
El proveedor con clave de API escala después de esta cantidad de ciclos abiertos. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD |
2 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: fallos antes de que todo el proveedor local entre en período de espera. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS |
300000 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: ventana móvil de recuento de fallos (ms) para proveedores locales. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS |
60000 |
open-sse/config/constants.ts |
Disyuntor a nivel de proveedor: período de espera (ms) una vez alcanzado el umbral del proveedor local. |
PIN_DROP_BACKOFF_LEVEL |
2 |
open-sse/services/combo.ts |
Profundidad de retroceso a partir de la cual el proveedor asociado a un pin de la caché de contexto se considera persistentemente inoperativo y se descarta el pin para permitir la conmutación por error. |
PIN_DROP_GRACE_MS |
20000 |
open-sse/services/combo.ts |
Ventana antioscilación (ms) que tolera períodos de espera transitorios breves antes de descartar un pin de la caché de contexto. |
Escenarios
Sección titulada «Escenarios»| Escenario | Configuración |
|---|---|
| Generación de código de larga duración | REQUEST_TIMEOUT_MS=900000 (15 min) |
| Limitar la duración total del flujo | STREAM_ACTIVE_TIMEOUT_MS=1260000 (21 min) |
| Fallo rápido para la API de producción | API_BRIDGE_PROXY_TIMEOUT_MS=10000 |
| Modelos de razonamiento extendido | STREAM_IDLE_TIMEOUT_MS=300000 (5 min entre fragmentos) |
16. Registro
Sección titulada «16. Registro»El sistema de registro escribe tanto en stdout como en archivos de registro rotados. Toda la configuración se lee desde src/lib/logEnv.ts.
| Variable | Valor predeterminado | Descripción |
|---|---|---|
APP_LOG_LEVEL |
info |
Nivel mínimo de registro: debug, info, warn, error. |
APP_LOG_FORMAT |
text |
Formato de salida: text (legible para humanos) o json (estructurado). |
APP_LOG_TO_FILE |
true |
Escribe los registros en un archivo además de stdout. |
APP_LOG_FILE_PATH |
logs/application/app.log |
Ruta del archivo de registro (relativa a la raíz del proyecto o a DATA_DIR). |
APP_LOG_MAX_FILE_SIZE |
50M |
Tamaño máximo del archivo antes de la rotación. Admite: 50M, 1G, 512K o bytes sin unidad. |
APP_LOG_RETENTION_DAYS |
7 |
Días durante los que se conservan los archivos de registro de la aplicación rotados. |
APP_LOG_MAX_FILES |
20 |
Número máximo de copias de seguridad de archivos de registro rotados. |
CALL_LOG_RETENTION_DAYS |
7 |
Días durante los que se conservan en la base de datos las entradas de registro de solicitudes/llamadas. |
CALL_LOG_MAX_ENTRIES |
10000 |
Número máximo de entradas del registro de llamadas en el búfer en memoria. |
CALL_LOGS_TABLE_MAX_ROWS |
100000 |
Número máximo de filas en la tabla SQLite call_logs antes de la depuración. |
ENABLE_REQUEST_LOGS |
(sin establecer) | Fuerza la activación o desactivación del registro detallado de solicitudes, anulando la configuración del panel. |
MAX_PENDING_REQUEST_AGE_MS |
3600000 (1 hora) |
Antigüedad máxima de las entradas huérfanas del registro de solicitudes activas antes de la limpieza en memoria. |
CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS |
false |
Almacena fragmentos de flujo en los artefactos de la canalización cuando call_log_pipeline_enabled=true. Activación opcional (true); está desactivado de forma predeterminada para ahorrar espacio en disco. |
CALL_LOG_PIPELINE_MAX_SIZE_KB |
512 |
Tamaño máximo en KB del artefacto de registro de llamadas de la canalización cuando call_log_pipeline_enabled=true. |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
Número máximo de filas en la tabla SQLite proxy_logs antes de la depuración. |
PROXY_LOG_INCLUDE_IPS |
false |
Incluye las IP del cliente/de salida y los prefijos de cuenta en los registros de consola [ProxyEgress]. Los registros del proxy en el panel y la base de datos conservan todos los detalles. |
APP_LOG_ROTATION_CHECK_INTERVAL_MS |
60000 (1 min) |
Frecuencia con la que src/lib/logRotation.ts vuelve a comprobar el tamaño del archivo de registro activo. |
CHAT_LOG_TEXT_LIMIT |
65536 |
Longitud máxima de cadena conservada en los artefactos del registro de chat (valor predeterminado: 64 KB). |
CHAT_LOG_ARRAY_TAIL_ITEMS |
128 |
Número de elementos de matriz conservados desde el final al truncar las cargas útiles del registro de chat. |
CHAT_LOG_MAX_DEPTH |
6 |
Profundidad máxima de anidamiento antes de truncar las cargas útiles del registro de chat. |
CHAT_LOG_MAX_OBJECT_KEYS |
80 |
Número máximo de claves de objeto conservadas en las cargas útiles del registro de chat (0 = ilimitado). |
CHAT_LOG_MAX_BODY_KB |
1024 |
Tamaño total del cuerpo de la solicitud/respuesta (KB) a partir del cual se sustituye por un resumen básico en lugar de conservar la copia completa. Aumente este valor si las conversaciones agénticas largas muestran un marcador de posición en lugar de los mensajes reales en el panel. |
CHAT_DEBUG_FILE |
false |
Cuando es true, serializeArtifactForStorage omite el truncamiento basado en el tamaño. Solo para depuración. |
17. Optimización de memoria
Sección titulada «17. Optimización de memoria»| Variable | Valor predeterminado | Descripción |
|---|---|---|
OMNIROUTE_MEMORY_MB |
automático (servidor físico); 1024 en la imagen de Docker |
Límite de heap de V8 recomendado para Docker/entornos independientes (MB). Cuando no se establece, se calibra dinámicamente (~35 % de la RAM del sistema, limitado al intervalo [512, 4096]); 512 es solo el límite inferior cuando no se puede determinar la memoria total. En run-standalone.mjs (CMD de Docker), un valor explícito se añade como --max-old-space-size y prevalece sobre una opción de heap conflictiva de NODE_OPTIONS (V8 aplica la última opción). omniroute serve sigue dando preferencia a una opción de heap existente en NODE_OPTIONS (#5238). No establezca ambos con números diferentes: el proceso registra una advertencia que indica ambos valores y cuál prevalece. La imagen oficial de Docker siempre establece 1024, por lo que la calibración nunca se ejecuta allí. El endpoint /v1/responses del agente de codificación necesita 8192–12288, además de margen adicional para cgroup; consulte la Guía de Docker — RAM en tiempo de ejecución. |
PROMPT_CACHE_MAX_SIZE |
50 |
Número máximo de entradas de prompts del sistema almacenadas en caché. |
PROMPT_CACHE_MAX_BYTES |
2097152 (2 MB) |
Tamaño total máximo de la caché de prompts. |
PROMPT_CACHE_TTL_MS |
300000 (5 min) |
TTL de las entradas de la caché de prompts. |
SEMANTIC_CACHE_MAX_SIZE |
100 |
Número máximo de respuestas con temperature=0 almacenadas en caché. |
SEMANTIC_CACHE_MAX_BYTES |
4194304 (4 MB) |
Tamaño total máximo de la caché semántica. |
SEMANTIC_CACHE_TTL_MS |
1800000 (30 min) |
TTL de las entradas de la caché semántica. |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
Raíces de corpus locales que mantienen simultáneamente un índice activo en memoria (src/lib/localCorpus/configured.ts). LRU: al alcanzar el límite, el índice de la raíz utilizada menos recientemente se expulsa y se vuelve a generar en su siguiente consulta. Se limita a un mínimo de 1; un valor no numérico hace que se utilice el valor predeterminado. |
STREAM_HISTORY_MAX |
50 |
Número máximo de eventos recientes del flujo en el búfer de la vista en directo del panel. |
CONTEXT_LENGTH_DEFAULT |
128000 |
Longitud máxima global de contexto de reserva para modelos sin configuración explícita. |
USAGE_TOKEN_BUFFER |
100 |
Margen adicional de tokens reservado al realizar el seguimiento de las cuotas de uso. |
Compresión
Sección titulada «Compresión»| Variable | Valor predeterminado | Descripción |
|---|---|---|
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
no establecido | Confía en el archivo .rtk/filters.json del proyecto sin un hash de .rtk/trust.json. Utilícelo únicamente en entornos de desarrollo local controlados. |
Motor de memoria (plan 21)
Sección titulada «Motor de memoria (plan 21)»Coste en el bucle de eventos de la memoria, las habilidades y la actualización de tokens (#10349)
Sección titulada «Coste en el bucle de eventos de la memoria, las habilidades y la actualización de tokens (#10349)»OmniRoute es un único proceso de Node. La extracción/recuperación de memoria, la inyección de habilidades y la actualización de tokens del proveedor se ejecutan en el mismo bucle de eventos que GET /healthz y el panel. No se ejecutan en un hilo de trabajo.
| Trabajo | Código | Valor predeterminado | Control del operador |
|---|---|---|---|
| Extracción/recuperación de memoria | src/lib/memory/ |
memoryEnabled en el panel (activado de forma predeterminada) | Desactive Configuración → Memoria. No hay un interruptor de desactivación independiente mediante una variable de entorno, aparte de deshabilitar la función en la configuración. |
| Inyección de habilidades | src/lib/skills/injection.ts |
skillsEnabled en el panel (activado de forma predeterminada) | Desactive Configuración → Memoria/Habilidades (skillsEnabled). Los controles del sandbox que aparecen a continuación solo limitan la ejecución una vez que la inyección ya está activada. |
| Actualización de tokens | src/sse/services/tokenRefresh.ts |
Activada para proveedores web/OAuth conectados | Desconecte el proveedor o deje que los tokens sigan siendo válidos; actualmente no existe una variable de entorno TOKEN_REFRESH=0. |
Si /healthz responde lentamente en un servidor inactivo, deshabilite primero la memoria y las habilidades; después, compruebe la carga del catálogo y la compresión (#10303, #9685). Estas funciones ceden la ejecución en los puntos await, pero siguen compitiendo por el único hilo.
Controles de la capa de embeddings, del almacén vectorial y de la reclasificación para el subsistema de memoria persistente (src/lib/memory/).
| Variable | Valor predeterminado | Descripción |
|---|---|---|
MEMORY_EMBEDDING_CACHE_TTL_MS |
300000 (5 min) |
TTL de la caché de embeddings en memoria (por firma de origen/modelo/dimensión). |
MEMORY_EMBEDDING_CACHE_MAX |
1000 |
Número máximo de entradas LRU conservadas en la caché de embeddings. |
MEMORY_TRANSFORMERS_MODEL |
Xenova/all-MiniLM-L6-v2 |
Id del repositorio de HF para el pipeline local MiniLM opcional de @huggingface/transformers (~23 MB int8, ~400 MB de RAM). |
MEMORY_STATIC_MODEL |
minishlab/potion-base-8M |
Id del repositorio de HF para el generador de embeddings estático potion/Model2Vec basado en una tabla de consulta. Se descarga de forma diferida en el directorio de caché. |
MEMORY_STATIC_CACHE_DIR |
<DATA_DIR>/embeddings |
Directorio utilizado para almacenar en caché los archivos del modelo estático potion. Si no se establece, se usa de forma predeterminada una ubicación dentro de DATA_DIR. |
HF_HUB_ENDPOINT |
https://huggingface.co |
Sustituye la URL base de Hugging Face Hub utilizada por staticPotion.ts (p. ej., un endpoint espejo para entornos aislados de la red). |
MEMORY_VEC_TOP_K |
20 |
Valor top-K predeterminado utilizado por la búsqueda vectorial por fuerza bruta de sqlite-vec dentro de src/lib/memory/vectorStore.ts. |
MEMORY_RRF_K |
60 |
Constante k de Reciprocal Rank Fusion para la recuperación híbrida mediante FTS5 + vectores (receta de sqlite-vec). |
VECTOR_STORE_DISABLE_VEC |
false |
Punto de prueba/diagnóstico en getVectorStore() (src/lib/memory/vectorStore.ts): cuando es true, fuerza el almacén vectorial a null (simula un entorno de nube/WASM sin sqlite-vec), lo que degrada la recuperación de memoria a una búsqueda por palabras clave con FTS5. Déjelo sin establecer en producción. |
NOTION_API_KEY |
(sin establecer) | Clave de API para el backend de Notion (utilizada por la configuración predeterminada de backend conocido de genericBackend.ts). |
NOTION_API_URL |
https://api.notion.com/v1 |
URL base de la API de Notion (puede sustituirse para alternativas de Notion autoalojadas). |
OBSIDIAN_API_KEY |
(sin establecer) | Clave de API para el backend de Obsidian Vault (utilizada por la configuración predeterminada de backend conocido de genericBackend.ts). |
OBSIDIAN_API_URL |
http://localhost:27123 |
URL base de la API de Obsidian Vault (puede sustituirse para un almacén remoto). |
MEMORY_TYPED_DECAY_ENABLED |
false |
Interruptor principal del decaimiento de memoria tipada de TV6. Opcional (desactivado de forma predeterminada): el barrido elimina las memorias que han decaído. Cuando está desactivado, access_count/last_accessed_at son meros datos de telemetría y nunca se elimina nada. |
MEMORY_TYPED_DECAY_EPISODIC_DAYS |
30 |
TTL (días) tras el cual decae una memoria episodic no utilizada. 0 también hace inmune a episodic. Los tipos duraderos (factual/procedural/semantic) siempre son inmunes. El reloj de decaimiento vuelve a basarse en last_accessed_at. |
MEMORY_TYPED_DECAY_ACCESS_IMMUNITY |
3 |
Una memoria inyectada >= este número de veces se vuelve inmune al decaimiento, independientemente del tipo. 0 deshabilita la inmunidad por acceso. |
MEMORY_TYPED_DECAY_SWEEP_INTERVAL |
0 (deshabilitado) |
Intervalo (segundos) para el barrido periódico opcional de decaimiento en src/lib/memory/typedDecay.ts. 0/sin establecer = sin barrido periódico. Requiere una doble activación: también exige MEMORY_TYPED_DECAY_ENABLED=true. |
OMNIROUTE_STRICT_SYSTEM_PROVIDERS |
(sin establecer) | Ids de proveedores separados por comas (sin distinción entre mayúsculas y minúsculas) que aceptan un mensaje system solo en el índice 0 (src/lib/memory/injection.ts). Para estos proveedores, la inserción de memoria en medio del array, segura para la caché, no es segura en conversaciones de varios turnos, por lo que la memoria se combina/antepone como mensaje de sistema inicial. De forma predeterminada, solo incluye xiaomi-mimo/mimo; amplíelo para endpoints autoalojados compatibles con OpenAI (p. ej., Qwen3.5+/3.6) cuya plantilla de chat imponga la misma restricción de un único mensaje de sistema inicial. |
Ejemplo de Docker con poca RAM
Sección titulada «Ejemplo de Docker con poca RAM»128 solo es apto para el panel. Los agentes de programación con este heap generan un FATAL ERROR durante solicitudes largas a /v1/responses. No utilice este ejemplo como gateway para Claude/Codex/Grok.
OMNIROUTE_MEMORY_MB=128PROMPT_CACHE_MAX_SIZE=20PROMPT_CACHE_MAX_BYTES=524288 # 512 KBSEMANTIC_CACHE_MAX_SIZE=25SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MBSTREAM_HISTORY_MAX=1018. Sincronización de precios
Sección titulada «18. Sincronización de precios»Sincronización automática de los datos de precios de los modelos desde fuentes externas.
| Variable | Valor predeterminado | Archivo fuente | Descripción |
|---|---|---|---|
PRICING_SYNC_ENABLED |
false |
src/lib/pricingSync.ts |
Sincronización periódica de precios opcional. |
PRICING_SYNC_INTERVAL |
86400 (24h) |
src/lib/pricingSync.ts |
Intervalo de sincronización en segundos. |
PRICING_SYNC_SOURCES |
litellm |
src/lib/pricingSync.ts |
Fuentes de datos separadas por comas. |
Sincronización de ELO de Arena
Sección titulada «Sincronización de ELO de Arena»| Variable | Valor predeterminado | Archivo fuente | Descripción |
|---|---|---|---|
ARENA_ELO_SYNC_ENABLED |
true |
src/shared/constants/featureFlagDefinitions.ts |
Sincronización periódica del ELO de la tabla de clasificación de Arena AI, configurable desde las marcas de funcionalidad del panel o mediante false para desactivarla. |
MODELS_CATALOG_PREFIX_MODE |
dual |
src/shared/constants/featureFlagDefinitions.ts, src/app/api/v1/models/catalog.ts |
Forma del prefijo utilizada para los identificadores de modelos en GET /v1/models. dual publica tanto el prefijo de alias corto como el prefijo canónico del proveedor para cada modelo (compatibilidad con versiones anteriores; aproximadamente duplica el catálogo); alias genera un identificador por modelo; canonical genera únicamente el prefijo completo del identificador del proveedor (los proveedores cuyo alias ya es el identificador canónico conservan su única entrada). Los clientes pueden sobrescribir este valor en cada solicitud mediante ?prefix=alias. Consulte API_REFERENCE. |
ARENA_ELO_SYNC_INTERVAL |
86400 (24h) |
src/lib/arenaEloSync.ts |
Intervalo de sincronización en segundos. |
Proveedor del entorno de pruebas de PromptQL (no oficial/experimental)
Sección titulada «Proveedor del entorno de pruebas de PromptQL (no oficial/experimental)»Puente de sesión GraphQL obtenido mediante ingeniería inversa para prompt.ql.app (src/shared/constants/providers/web-cookie.ts). Todo es opcional: los valores predeterminados apuntan a los endpoints públicos del entorno de pruebas; sobrescríbalos únicamente para un despliegue de PromptQL autoalojado o alternativo.
| Variable | Valor predeterminado | Archivo fuente | Descripción |
|---|---|---|---|
PROMPTQL_GRAPHQL_ENDPOINT |
https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql |
open-sse/executors/promptql.ts |
Endpoint GraphQL utilizado para las operaciones de chat y sesión. |
PROMPTQL_CREDITS_ENDPOINT |
https://data.pro.ql.app/v1/graphql |
open-sse/executors/promptql.ts, open-sse/services/usage/promptql.ts |
Endpoint GraphQL utilizado para consultar el saldo y el uso de créditos. |
PROMPTQL_TOKEN_REFRESH_URL |
https://auth.pro.ql.app/ddn/project/token |
open-sse/executors/promptql.ts |
Endpoint utilizado para intentar actualizar el token. |
PROMPTQL_POLL_TIMEOUT_MS |
180000 |
open-sse/executors/promptql.ts |
Tiempo máximo (ms) para consultar thread_events antes de agotar el tiempo. |
Proveedor web de HyperAgent (no oficial/experimental)
Sección titulada «Proveedor web de HyperAgent (no oficial/experimental)»Puente de sesión obtenido mediante ingeniería inversa para hyperagent.com (src/shared/constants/providers/web-cookie.ts). Opcional: el valor predeterminado apunta al endpoint público de facturación/uso; modifíquelo únicamente para un despliegue de HyperAgent autoalojado/alternativo.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
HYPERAGENT_USAGE_URL |
https://hyperagent.com/api/settings/billing/usage |
open-sse/services/usage/hyperagent.ts |
Endpoint utilizado para obtener bloques de créditos de facturación/uso. |
Cuotas de uso de Kilo Code
Sección titulada «Cuotas de uso de Kilo Code»Consulta del saldo personal en USD y del uso de Kilo Pass para el proveedor Kilo Code. Opcional: el valor predeterminado apunta a la API pública de Kilo; modifíquelo únicamente para un relé/fixture de prueba. La autenticación utiliza el token de acceso OAuth existente de la conexión.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
KILO_API_URL |
https://api.kilo.ai |
open-sse/services/usage/kilocode.ts |
URL base utilizada para obtener el saldo personal de Kilo Code y el uso de Kilo Pass. |
Proveedor web de Adobe Firefly (no oficial/experimental)
Sección titulada «Proveedor web de Adobe Firefly (no oficial/experimental)»Actualización de sesión controlada mediante navegador para el proveedor web de Adobe Firefly
(open-sse/services/adobeFireflyBrowserLogin.ts, open-sse/services/adobeFireflySession.ts,
open-sse/services/adobeFireflyClient.ts). Opcional: todos los valores predeterminados están ajustados para una instalación
normal de escritorio.
Eliminado en #9255. El antiguo entorno de ejecución de Chrome conectado mediante CDP (adobeFireflyChromeRuntime.ts) fue reemplazado por un servicio de inicio de sesión mediante navegador basado en Playwright, y sus opciones de configuración ya no existen. Las variables ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART, además de ADOBE_FIREFLY_LOGIN_WAIT_MS y ADOBE_FIREFLY_FORTER_WAIT_MS, no se leen en ninguna parte del código base; configurarlas no tiene ningún efecto.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
ADOBE_FIREFLY_CHROME_HEADLESS |
0 |
open-sse/services/adobeFireflyBrowserLogin.ts |
Establézcalo en 1 para usar Chrome realmente sin interfaz gráfica (se sabe que no funciona para generar; solo para depuración). |
ADOBE_FIREFLY_BROWSER_REFRESH |
1 |
open-sse/services/adobeFireflySession.ts |
Activación/desactivación del calentamiento proactivo del navegador. 0 desactiva el calentamiento proactivo (la recuperación de errores 408 durante un lote sigue aplicándose). |
ADOBE_FIREFLY_SESSION_DISK |
1 |
open-sse/services/adobeFireflySession.ts |
Establézcalo en 0 para desactivar la persistencia en disco de la sesión de Adobe Firefly. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
(sin establecer) | open-sse/services/adobeFireflySession.ts |
Intervalo mínimo (ms) aplicado entre envíos sucesivos, que sustituye al valor predeterminado integrado. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
(sin establecer) | open-sse/services/adobeFireflySession.ts |
Intervalo adicional (ms) añadido después de un lote completado correctamente, que sustituye al valor predeterminado integrado. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
(sin establecer) | open-sse/services/adobeFireflyClient.ts |
Retraso base (ms) antes de enviar una solicitud de generación, que sustituye al valor predeterminado integrado. |
19. Sincronización de modelos (Desarrollo)
Sección titulada «19. Sincronización de modelos (Desarrollo)»| Variable | Valor predeterminado | Archivo fuente | Descripción |
|---|---|---|---|
MODELS_DEV_SYNC_ENABLED |
(sin definir) | src/lib/modelsDevSync.ts |
Anulación explícita de la sincronización de precios de models.dev. Sin definir = respeta Configuración > IA (modelsDevSyncEnabled). 0/false/off/no prevalece sobre la BD y omite tanto la sincronización periódica como los análisis SQL/JSON de getModelsDevPricing() (recuperación cuando el panel queda bloqueado en el mismo bucle de eventos). 1/true/on/yes fuerza la activación de la sincronización. Guardar/borrar precios sigue llamando a backupDbFile("pre-write"), que no realiza ninguna operación durante la limitación de 60 minutos o con DISABLE_SQLITE_AUTO_BACKUP. |
MODELS_DEV_SYNC_INTERVAL |
86400 (24 h) |
src/lib/modelsDevSync.ts |
Intervalo de sincronización del catálogo de modelos durante el desarrollo, en segundos. |
CONTEXT_WINDOW_RECONCILE_INTERVAL |
86400 (24 h) |
src/lib/contextWindowResolver.ts |
Intervalo (en segundos) del reconciliador autocorrectivo de ventanas de contexto (5004): fija las ventanas declaradas por el proveedor a partir del descubrimiento de /models como anulaciones auto:discovery cuando difieren del catálogo. Establézcalo en 0 para desactivarlo. Reutiliza los datos ya sincronizados (sin nuevas solicitudes); nunca sobrescribe las anulaciones manual. |
20. Configuración específica del proveedor
Sección titulada «20. Configuración específica del proveedor»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OPENROUTER_CATALOG_TTL_MS |
86400000 (24 h) |
src/lib/catalog/openrouterCatalog.ts |
TTL de la caché del catálogo de modelos de OpenRouter. |
MODEL_CATALOG_INCLUDE_NAMES |
true |
src/shared/constants/featureFlagDefinitions.ts |
Incluye campos name fáciles de leer en las respuestas de /v1/models. Desactívelo para clientes que solo esperan identificadores. |
CATALOG_BUILD_TIMEOUT_MS |
8000 (8 s) |
src/app/api/v1/models/catalogCache.ts |
Límite de espera en la ruta en frío para una reconstrucción agrupada del catálogo mediante GET /v1/models (#12627). Si se agota el tiempo de espera, se devuelve la última respuesta 200 válida, si existe. |
OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS |
2592000000 (30 días) |
src/lib/db/models/activeSyncedCatalog.ts |
Antigüedad tras la cual la lista de modelos sincronizada de una conexión deja de ser autoritativa para el enrutamiento y recurre al registro en caso de error (#12849). Las filas que nunca han recibido una marca de tiempo se consideran obsoletas. |
NANOBANANA_POLL_TIMEOUT_MS |
120000 |
open-sse/handlers/imageGeneration.ts |
Tiempo máximo de espera para los trabajos de generación de imágenes de NanoBanana. |
NANOBANANA_POLL_INTERVAL_MS |
2500 |
open-sse/handlers/imageGeneration.ts |
Frecuencia de sondeo de los trabajos de NanoBanana. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
8000 |
open-sse/services/adobeFireflyUpscale.ts |
Retraso base para la espera exponencial entre reintentos de envío del escalado de Adobe Firefly. |
AWS_REGION |
(sin definir) | src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts |
Región utilizada para construir los endpoints de AWS Bedrock (Kiro, audio). |
AWS_DEFAULT_REGION |
(sin definir) | src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts |
Valor alternativo cuando AWS_REGION no está definida. |
CLOUDFLARE_ACCOUNT_ID |
(sin definir) | open-sse/executors/cloudflare-ai.ts |
ID de cuenta para Cloudflare Workers AI. |
CLOUDFLARE_PLAYGROUND_CHROME_PATH |
(sin definir) | open-sse/executors/cloudflare-playground.ts |
Ruta completa al binario de Chrome de escritorio para el ejecutor de Cloudflare AI Playground, utilizada cuando la comprobación de huella digital del modo sin interfaz bloquea el Chromium incluido con Playwright. |
CLOUDFLARE_API_BASE |
https://api.cloudflare.com/client/v4 |
src/app/api/settings/proxy/cloudflare-deploy/route.ts |
Sustituye la base de la API REST de Cloudflare utilizada por el implementador del relé de Workers del grupo de proxies (#4640 / 9router#1360). |
NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx |
Nombre predeterminado del proyecto de Worker sugerido en el modal «Deploy Relay» del grupo de proxies. |
NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
Establézcalo en false para ocultar la opción de relé de Cloudflare Workers en la pestaña del grupo de proxies. |
CLOUDFLARED_BIN |
detección automática | src/lib/cloudflaredTunnel.ts |
Ruta personalizada al binario cloudflared. |
CLOUDFLARED_PROTOCOL |
http2 |
src/lib/cloudflaredTunnel.ts |
Protocolo de transporte del túnel: http2 (predeterminado), quic o auto. |
CLOUDFLARED_CONFIG |
(sin definir) | src/lib/cloudflaredTunnel.ts |
Ruta a un archivo config.yml de cloudflared administrado localmente (con tunnel:, credentials-file:, ingress:). Cuando se define, OmniRoute ejecuta tunnel --config <path> run (túnel con nombre) en lugar de un túnel rápido efímero. |
CLOUDFLARED_HOSTNAME |
(del ingreso de la configuración) | src/lib/cloudflaredTunnel.ts |
Sustitución del nombre de host público del túnel con nombre (p. ej., ai.example.com), indicado como publicUrl/apiUrl. Cuando no se define, se obtiene del primer nombre de host de ingress de la configuración. |
DENO_DEPLOY_API_BASE |
https://api.deno.com/v2 |
src/app/api/settings/proxy/deno-deploy/route.ts |
Sobrescribe la base de la API REST de Deno Deploy utilizada por el implementador del relé del grupo de proxies (#4643 / 9router#1437). |
NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT |
omniroute-deno-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx |
Nombre predeterminado de la aplicación de Deno Deploy sugerido en el modal «Deploy Relay» del grupo de proxies. |
NEXT_PUBLIC_DENO_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
Establécelo en false para ocultar la opción de relé de Deno Deploy en la pestaña del grupo de proxies. |
SEARCH_CACHE_TTL_MS |
300000 (5 min) |
open-sse/services/searchCache.ts |
TTL del almacenamiento en caché de las respuestas de las API de búsqueda (Perplexity, Brave, etc.). |
ENABLE_CC_COMPATIBLE_PROVIDER |
false |
src/shared/utils/featureFlags.ts |
Muestra la interfaz experimental del proveedor compatible con CC para relés exclusivos de Claude Code. |
NINEROUTER_HOST |
127.0.0.1 |
open-sse/executors/ninerouter.ts |
Sobrescribe el host en el que escucha la instancia integrada de 9router. |
NINEROUTER_PORT |
20130 |
open-sse/executors/ninerouter.ts |
Sobrescribe el puerto en el que escucha la instancia integrada de 9router. |
EMBED_WS_PROXY_HOST |
127.0.0.1 |
src/lib/services/embedWsProxy.ts |
Host de enlace para el proxy WebSocket del servicio integrado (solo loopback de forma predeterminada). |
EMBED_WS_PROXY_PORT |
20131 |
src/lib/services/embedWsProxy.ts |
Puerto del servidor proxy WebSocket del servicio integrado. |
CLIPROXYAPI_HOST |
127.0.0.1 |
open-sse/executors/cliproxyapi.ts |
Host del puente de CLIProxyAPI (integración heredada). |
CLIPROXYAPI_PORT |
5544 |
open-sse/executors/cliproxyapi.ts |
Puerto del puente de CLIProxyAPI. |
CLIPROXYAPI_API_KEY |
(vacío) | open-sse/handlers/chatCore/cliproxyapiCredentials.ts |
Clave alternativa del plano de datos cuando la configuración cliproxyapi_api_key no está presente. |
CLIPROXYAPI_MANAGEMENT_KEY |
(vacío) | src/lib/services/cliproxyAccountHealth.ts |
Clave de administración para consultar el estado de las cuentas desde una instancia de CLIProxyAPI administrada externamente. |
CLIPROXYAPI_CONFIG_DIR |
~/.cli-proxy-api |
src/lib/versionManager/processManager.ts |
Directorio de configuración de CLIProxyAPI. |
CLIPROXY_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interfaz de host en la que docker-compose publica el sidecar cliproxyapi (#12578). Su volumen de datos contiene credenciales OAuth/API de proveedores y la imagen fijada no permite sobrescribir las api-keys del plano de datos mediante variables de entorno (solo mediante un config.yaml montado), por lo que 0.0.0.0 expone un servicio que contiene credenciales a toda la LAN. |
MUX_SERVICE_PORT |
8322 |
src/lib/services/bootstrap.ts |
Sobrescribe el puerto en el que escucha el demonio integrado de orquestación de agentes Mux (coder/mux) (siempre 127.0.0.1). |
OPENWA_SERVICE_PORT |
8323 |
src/lib/services/bootstrap.ts |
Sobrescribe el puerto en el que escucha el demonio integrado open-wa (automatización de WhatsApp Web) (siempre 127.0.0.1). |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Host de enlace/conexión del servicio integrado Dario (solo loopback de forma predeterminada). |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Puerto del servicio integrado Dario. |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Host de enlace/conexión del servicio integrado Dario (solo loopback de forma predeterminada). |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Puerto del servicio integrado de Dario. |
LOCAL_HOSTNAMES |
(vacío) | open-sse/config/providerRegistry.ts |
Nombres de host adicionales separados por comas que se tratan como «locales» (nombres de servicios de Docker, etc.). |
ENABLE_CC_COMPATIBLE_PROVIDER es solo para relés de terceros que aceptan clientes de Claude Code
exclusivamente. OmniRoute reescribe las solicitudes para que esos relés las acepten. Si solo desea usar
la CLI de Claude Code, o no sabe con certeza qué son estos relés, mantenga esta opción desactivada y añada en su lugar
un proveedor normal compatible con Anthropic.
21. Estado de los proxies
Sección titulada «21. Estado de los proxies»| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
src/lib/proxyHealth.ts |
Tiempo de espera de la comprobación de estado con fallo rápido. |
PROXY_LATENCY_WINDOW_HOURS |
3 |
src/lib/db/proxies.ts |
Ventana de tiempo (en horas) para calcular la latencia media de los proxies candidatos en la estrategia de grupo optimizada para la latencia. |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
src/lib/proxyHealth.ts |
TTL de la caché de resultados de la comprobación de estado. |
PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS |
2000 |
src/lib/proxyHealth.ts |
TTL de la caché para sondeos fallidos del estado de los proxies. Mantenga este valor por debajo de PROXY_HEALTH_CACHE_TTL_MS para que los tiempos de espera transitorios de los proxies bajo alta concurrencia se vuelvan a intentar rápidamente sin deshabilitar el fallo rápido para los proxies realmente inactivos. |
PROXY_HEALTH_ENABLED |
true |
src/lib/proxyHealth/scheduler.ts |
Establézcalo en false para deshabilitar el programador de estado de proxies en segundo plano que sondea periódicamente los proxies registrados. |
PROXY_HEALTH_INTERVAL_MS |
600000 |
src/lib/proxyHealth/scheduler.ts |
Intervalo de barrido del programador de estado en segundo plano en ms (mínimo: 60000). |
PROXY_HEALTH_RECOVERY_INTERVAL_MS |
600000 |
src/lib/proxyHealth/scheduler.ts |
Interval en ms de la pasada de recuperación en segundo plano: determina con qué frecuencia se vuelven a sondear los proxies que anteriormente no estaban en buen estado, de modo que un proxy recuperado vuelva a la rotación sin necesidad de reiniciar. Los valores inferiores a 60000 utilizan el valor predeterminado. |
PROXY_HEALTH_TEST_URL |
https://httpbin.org/ip |
src/lib/proxyHealth/probeTarget.ts |
Destino del sondeo de accesibilidad utilizado por el programador y el endpoint /api/settings/proxies/auto-test. Apúntelo a una URL interna o autoalojada para evitar el destino público predeterminado. |
PROXY_HEALTH_TEST_CONCURRENCY |
10 |
src/lib/proxyHealth/probeTarget.ts |
Cantidad de sondeos iniciados simultáneamente por lote, compartida por el programador y el endpoint /api/settings/proxies/auto-test. Se establece un mínimo de 1 y un máximo de 50. |
PROXY_HEALTH_TEST_STAGGER_MS |
100 |
src/lib/proxyHealth/probeTarget.ts |
Retraso en ms entre dos envíos de sondeo dentro de un lote. Sin este retraso, todo el lote se envía al mismo tiempo y una IP de salida compartida puede activar el límite de solicitudes del destino. Establézcalo en 0 para deshabilitar el espaciado; el máximo es 5000. |
PROXY_HEALTH_USE_PROVIDER_TARGET |
true |
src/lib/proxyHealth/providerProbeTarget.ts |
Establézcalo en “false” para dejar de sondear el host real del proveedor asignado a un proxy (GET /models, sin clave de API) y utilizar siempre PROXY_HEALTH_TEST_URL en su lugar. |
PROXY_HEALTH_AUTO_DEACTIVATE |
false |
src/lib/proxyHealth/statusPolicy.ts |
Cuando es false (valor predeterminado), los sondeos automatizados de accesibilidad (el programador y el botón “Probar todos” de /api/settings/proxies/auto-test) son de solo lectura y nunca modifican el estado de un proxy; solo el operador lo establece como activo o inactivo, por lo que un sondeo inestable no puede dejar inutilizable un proxy asignado (#6246). Establézcalo en true para restaurar el comportamiento heredado de probar y establecer el estado. |
FLUSH_EMPTY_RETRY_ENABLED |
false |
src/shared/utils/featureFlags.ts |
Indicador de función opcional (consulte FEATURE_FLAGS.md; una anulación en la base de datos del panel tiene prioridad). true (o 1, yes) reintenta los turnos vacíos de streaming traducido a través de la ruta normal de credenciales (hasta STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX reintentos), en lugar de exponer una respuesta 200 vacía o una respuesta 502 sin contenido. |
PROXY_POOL_EGRESS_OBSERVATION |
false |
src/shared/utils/featureFlags.ts |
Indicador de función opcional (consulte FEATURE_FLAGS.md; una anulación en la base de datos del panel tiene prioridad). true (o 1, yes) muestra la observación de salida de solo lectura del grupo debajo de un grupo de proxies en el panel (IP de salida distintas, conexiones y la cantidad máxima observada detrás de una sola IP durante las últimas 24 h, a partir del registro del proxy). Nunca se utiliza para el enrutamiento. |
PROXY_AUTO_REMOVE |
false |
src/lib/proxyHealth/scheduler.ts |
Establécelo en true para permitir que el programador elimine automáticamente los proxies después de varios fallos consecutivos. |
PROXY_AUTO_REMOVE_AFTER |
3 |
src/lib/proxyHealth/scheduler.ts |
Número de fallos consecutivos antes de que el programador elimine automáticamente un proxy (cuando PROXY_AUTO_REMOVE=true). |
PROXY_AUTO_DISABLE |
false |
src/lib/proxyHealth/scheduler.ts |
Establécelo en true para permitir que el programador deshabilite de forma no permanente (estado dead, sin eliminarlo nunca) un proxy después de varios fallos consecutivos, en lugar de eliminarlo. Es una alternativa no destructiva a PROXY_AUTO_REMOVE: el proxy se excluye inmediatamente de la resolución del pool/de la rotación (el filtro de estado activo utilizado por la resolución de pools de alcance ya lo excluye) y se reactiva automáticamente cuando vuelve a superar las comprobaciones. Comparte el umbral PROXY_AUTO_REMOVE_AFTER. Si ambas opciones son true, prevalece PROXY_AUTO_REMOVE. |
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK |
false |
src/shared/constants/featureFlagDefinitions.ts |
Permite que los flujos de OAuth y de validación de proveedores omitan un proxy fijado y se conecten directamente cuando fallen las comprobaciones previas de accesibilidad del proxy. La precedencia efectiva es: configuración de la base de datos de indicadores de características > variable de entorno > valor predeterminado. |
RATE_LIMIT_MAX_WAIT_MS |
30000 (30 s) |
src/lib/resilience/settings.ts |
Presupuesto predeterminado de espera en cola: cuánto tiempo puede esperar una solicitud a que haya una ranura de proveedor disponible y permanecer en cola antes de ser rechazada sin llegar nunca al servicio upstream. El temporizador se cancela cuando el trabajo comienza a ejecutarse; la ejecución está limitada por separado mediante RATE_LIMIT_EXECUTION_MAX_WAIT_MS. La variable de entorno solo establece el valor predeterminado: un valor persistente de resilienceSettings.requestQueue.maxWaitMs y, después, un valor de rateLimitOverrides.maxWaitMs por conexión tienen prioridad sobre él, en ese orden. |
RATE_LIMIT_EXECUTION_MAX_WAIT_MS |
600000 (10 min) |
open-sse/services/rateLimitManager.ts |
Límite máximo de tiempo durante el cual una solicitud admitida puede permanecer en ejecución antes de que caduque su reserva de límite de tasa; está desvinculado del presupuesto de espera en cola para que un inicio lento de la obtención en gateways no incrementales no agote el tiempo de espera (#12027). |
RATE_LIMIT_MAX_QUEUE_DEPTH |
0 (deshabilitado) |
open-sse/services/rateLimitManager.ts |
Límite de admisión a la cola: rechaza con un error 429 queue_full cuando ya hay este número de solicitudes en cola. 0 = sin límite (valor predeterminado). |
RATE_LIMIT_AUTO_ENABLE |
(sin establecer) | open-sse/services/rateLimitManager.ts |
Fuerza la activación o desactivación de la red de seguridad de activación automática del límite de tasa, independientemente de la configuración persistente del panel de control. Acepta true/1/on para forzar la activación y false/0/off para forzar la desactivación. |
PROVIDER_COOLDOWN_ENABLED |
(sin definir → desactivado) | open-sse/services/providerCooldownTracker.ts |
Seguimiento global opcional entre solicitudes del período de espera de proveedores/conexiones. DESACTIVADO de forma predeterminada (se solapa con el período de espera de conexiones y el disyuntor de proveedores). Acepta true/1/on para habilitarlo. |
PROVIDER_COOLDOWN_MIN_MS |
5000 |
open-sse/services/providerCooldownTracker.ts |
Período de espera mínimo (ms) antes de volver a intentar usar un proveedor/conexión con errores. Se amplía exponencialmente con los errores consecutivos. Solo se utiliza cuando PROVIDER_COOLDOWN_ENABLED está habilitado. |
PROVIDER_COOLDOWN_MAX_MS |
300000 (5 min) |
open-sse/services/providerCooldownTracker.ts |
Límite máximo del período de espera (ms) antes de volver a intentar usar un proveedor/conexión con errores en cualquier caso. Solo se utiliza cuando PROVIDER_COOLDOWN_ENABLED está habilitado. |
STREAM_RECOVERY_ENABLED |
(sin definir → desactivado) | src/lib/resilience/settings.ts (valor inicial) → open-sse/services/streamRecovery.ts (lógica) |
Qué hace: recuperación transparente de flujos ascendentes truncados (adaptación de free-claude-code). Retiene la ventana SSE inicial hasta STREAM_RECOVERY.HOLDBACK_MS (750 ms), de modo que un corte previo a la confirmación —que ocurre antes de que cualquier byte llegue al cliente— se reabra y vuelva a intentarse de forma invisible. Cuándo habilitarlo: servicios ascendentes inestables que suelen truncar el flujo con 0 bytes al iniciarlo; déjelo DESACTIVADO si no puede asumir hasta 750 ms adicionales en el tiempo hasta el primer token de cada flujo. Acepta true/1/on. Establece el valor inicial de la configuración persistente de Resiliencia; una vez definido, prevalece el ajuste del panel de control. |
STREAM_RECOVERY_MIDSTREAM_ENABLED |
(sin definir → desactivado) | src/lib/resilience/settings.ts (valor inicial) → open-sse/services/streamRecovery.ts (lógica) |
Qué hace: continuación a mitad del flujo (Fase 4.4): tras un truncamiento posterior a la confirmación (los bytes ya llegaron al cliente), repite la solicitud usando el texto parcial como prefijo del asistente y ensambla el sufijo que falta. Solo para flujos de texto sin formato compatibles con OpenAI; nunca se activa mientras haya una llamada a herramientas en curso. Cuándo habilitarlo: generaciones largas que se cortan a mitad de la respuesta cuando se acepta que la parte final recuperada llegue de una sola vez en lugar de token por token. Es independiente de STREAM_RECOVERY_ENABLED (perfil de riesgo diferente). Acepta true/1/on. |
STREAM_THROUGHPUT_WATCHDOG_ENABLED |
(sin definir → desactivado) | src/lib/resilience/settings.ts → open-sse/services/throughputWatchdog.ts |
Supervisor opcional de salida útil para flujos activos. Detecta los flujos que siguen enviando fragmentos, pero permanecen por debajo de la tasa configurada de salida del asistente; las señales de actividad, los eventos de uso, los deltas vacíos y las fases de herramientas/razonamiento no se hacen pasar por progreso. Es independiente de los tiempos de espera por inactividad y de los plazos máximos estrictos. |
STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
Período de gracia antes de evaluar el rendimiento, limitado a 0–600000 ms. |
STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
Ventana móvil de salida útil, limitada a 1000–600000 ms; debe completarse una ventana antes de cancelar. |
STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND |
4 |
src/lib/resilience/settings/normalize.ts |
Tasa mínima de bytes UTF-8 de salida del asistente (aproximación conservadora de tokens), limitada a 1–1000000. |
STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES |
1 |
src/lib/resilience/settings/normalize.ts |
Muestra mínima distinta de cero de salida útil que se considera medible, limitada a 1–1000000 bytes. |
HEALTHCHECK_STAGGER_MS |
3000 |
src/lib/tokenHealthCheck.ts |
Intervalo escalonado (ms) entre las comprobaciones de estado de los tokens de los proveedores durante el inicio. |
HEALTHCHECK_JITTER_MIN_MS |
500 |
src/lib/tokenHealthCheck.ts |
Jitter aleatorio mínimo (ms) añadido a HEALTHCHECK_STAGGER_MS entre las comprobaciones de estado de los tokens de los proveedores, para evitar ráfagas (incidencia #1220). |
HEALTHCHECK_JITTER_MAX_MS |
5000 |
src/lib/tokenHealthCheck.ts |
Jitter aleatorio máximo (ms) añadido a HEALTHCHECK_STAGGER_MS entre las comprobaciones de estado de los tokens de los proveedores, para evitar ráfagas (incidencia #1220). |
HEALTHCHECK_BATCH_SIZE |
20 |
src/lib/tokenHealthCheck.ts |
Tamaño del lote de comprobaciones simultáneas para el barrido de comprobación del estado de los tokens durante el inicio; los valores más altos comprueban más conexiones en paralelo, mientras que los valores más bajos reducen la carga en ráfagas (incidencia #7875, regresión de #7719). |
REQUEST_RETRY |
2 |
src/sse/services/cooldownAwareRetry.ts |
Número de reintentos automáticos ante respuestas de tiempo de espera específicas del modelo antes de devolver un error al cliente. |
MAX_RETRY_INTERVAL_SEC |
30 |
src/sse/services/cooldownAwareRetry.ts |
Intervalo máximo de espera exponencial (segundos) entre reintentos por tiempo de espera. Está limitado por este valor independientemente del valor de Retry-After del servicio ascendente. |
HEADROOM_URL |
http://localhost:8787 |
src/lib/headroom/detect.ts |
URL del proxy de ahorro de tokens Headroom. El ciclo de vida del panel (api/headroom/*) inicia de forma predeterminada una CLI local headroom-ai en la interfaz de bucle invertido; sobrescríbala únicamente para apuntar a un proxy sidecar externo de Docker. |
Constantes de ajuste de la recuperación de flujos
Sección titulada «Constantes de ajuste de la recuperación de flujos»El comportamiento de retención de la recuperación se ajusta mediante constantes codificadas
en open-sse/config/constants.ts (STREAM_RECOVERY), que se muestran aquí como referencia;
cambiarlas requiere editar el código, no una variable de entorno:
STREAM_RECOVERY.HOLDBACK_MS = 750— cuánto tiempo se retiene la ventana SSE inicial para que un truncamiento temprano pueda reintentarse antes de enviar cualquier byte al cliente.STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536— límite estricto de la ventana retenida; se confirma (vaciado + transferencia directa) en cuanto se acumula esta cantidad de bytes, independientemente del temporizador.STREAM_RECOVERY.EARLY_RETRY_MAX = 4— número máximo de reaperturas transparentes del flujo ascendente mientras la retención aún no se haya confirmado.
Límite de frecuencia por proveedor mediante ventana deslizante (sin variable de entorno): la alternativa de límite de frecuencia por proveedor mediante ventana deslizante, portada de FCC, existe en el código (
open-sse/services/providerDefaultRateLimit.ts, conectada medianteopen-sse/services/rateLimitManager.ts), pero se distribuye con un mapa predeterminado vacío y actualmente no dispone de una variable de entorno para el operador; solo se habilita mediante un hook de prueba o una edición del código. Intencionadamente, no aparece en la tabla anterior. El limitador del relé por(token, IP)que sí dispone de un parámetro de configuración esRELAY_IP_PER_MINUTE(§3 Red y puertos).
22. Depuración
Sección titulada «22. Depuración»[!CAUTION] Estas variables producen una salida detallada y pueden filtrar datos confidenciales. Nunca las habilite en producción.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
CURSOR_DEBUG |
(sin definir) | open-sse/executors/cursor.ts |
Establezca 1 para habilitar los registros detallados del ejecutor de Cursor (fragmentos SSE decodificados, etc.). |
CURSOR_STREAM_DEBUG |
(sin definir) | open-sse/executors/cursor.ts |
Alias de CURSOR_DEBUG compatible con versiones anteriores. |
CURSOR_DUMP_FILE |
(sin definir) | open-sse/executors/cursor.ts |
Ruta de archivo opcional que recibe los fragmentos sin procesar y decodificados de Cursor cuando CURSOR_DEBUG=1. |
CURSOR_STREAM_TIMEOUT_MS |
300000 |
open-sse/executors/cursor.ts |
Tiempo de espera por inactividad del flujo (ms) para el ejecutor de Cursor. |
CURSOR_KV_GRACE_MS |
2000 |
open-sse/executors/cursor.ts |
Período de gracia (ms) después de un terminador flexible kv_after_text del compositor cuando quedan bytes en el búfer; permite que una llamada de herramienta exec_mcp posterior tenga tiempo para completar su trama. |
CURSOR_TOOL_DIRECTIVE |
habilitada (!== "0") |
open-sse/executors/cursor.ts |
Directiva de confirmación de herramientas que hace que composer-2.5 emita llamadas de herramientas de forma fiable. Establezca 0 para deshabilitarla. |
OMNIROUTE_SYSTEM_INSTRUCTION_APPEND |
(sin definir) | open-sse/translator/request/claude-to-openai.ts, open-sse/translator/response/openai-to-claude.ts |
Texto del mensaje del sistema definido por el operador que se añade al mensaje del sistema DESPUÉS de la traducción (inyección posterior a la traducción), llegando a las rutas de codex/Responses y /v1/messages. También se utiliza como prefijo de directiva que se elimina de los bloques de preámbulo del sistema repetidos. Déjelo sin definir para deshabilitarlo. |
OMNIROUTE_STRIP_SYSTEM_PREAMBLE |
0 (desactivado) |
open-sse/translator/response/openai-to-claude.ts, open-sse/utils/directivePreambleStripper.ts |
Establezca 1 para eliminar los bloques de preámbulo del mensaje del sistema repetidos al inicio de un flujo openai→claude. Está desactivado de forma predeterminada: las heurísticas están diseñadas para prosa en inglés y modifican la carga útil de la respuesta, por lo que se perdería una respuesta que comenzara legítimamente con una sección de ese tipo. |
CURSOR_IMAGE_FETCH_TIMEOUT_MS |
15000 |
open-sse/utils/cursorImages.ts |
Tiempo de espera por imagen (ms) para obtener entradas visuales remotas de image_url. |
CURSOR_STATE_DB_PATH |
(detectado) | open-sse/utils/cursorVersionDetector.ts |
Sustituye la búsqueda de la base de datos de estado del IDE Cursor utilizada para detectar la versión del IDE. |
CURSOR_AGENT_CLI_VERSION |
(detectar / fijar) | open-sse/utils/cursorAgentCliVersion.ts |
Id. de compilación de Agent CLI (YYYY.MM.DD-<hash>) para x-cursor-client-version: cli-… en Agent Run. |
CURSOR_AGENT_BIN |
(sin definir) | open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Ruta al binario de Cursor Agent utilizado para generar imágenes. Si no se define, el controlador utiliza providerSpecificData.agentBin y después PATH. |
CURSOR_IMG_TIMEOUT_MS |
210000 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Tiempo máximo por imagen (ms) para los trabajos de imágenes de Cursor Agent. |
CURSOR_IMG_MAX_CONCURRENT |
2 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Límite de concurrencia del puesto compartido para los trabajos de imágenes de Cursor. |
CURSOR_IMG_MODEL |
solicitud / auto |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Sustituye el valor --model de la CLI de Cursor para los trabajos de imágenes. |
UC_IMAGE_POLL_INTERVAL_MS |
2000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
Frecuencia de consulta de resultados (ms) de generación de imágenes de UC (uncensored.com). |
UC_IMAGE_POLL_TIMEOUT_MS |
60000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
Tiempo máximo de consulta de resultados (ms) de generación de imágenes de UC. |
UC_VIDEO_POLL_INTERVAL_MS |
3000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
Frecuencia de consulta de resultados (ms) de generación de vídeos de UC (uncensored.com). |
UC_VIDEO_POLL_TIMEOUT_MS |
300000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
Tiempo máximo de consulta de resultados (ms) de generación de vídeos de UC. |
CURSOR_DATA_DIR |
(detectado) | open-sse/utils/cursorAgentCliVersion.ts |
Sustituye el directorio de datos de Cursor Agent CLI (…/versions/<id>); es la misma variable que utiliza el agente oficial. |
CURSOR_TOKEN |
(sin definir) | scripts/ad-hoc/cursor-tap.cjs |
Token de portador directo de Cursor utilizado por las herramientas de desarrollo. |
OMNIROUTE_LOG_REQUEST_SHAPE |
deshabilitado (activación mediante "1") |
src/app/api/v1/chat/completions/route.ts |
Registra marcadores de tipo y longitud del contenido para cargas útiles de chat grandes cuando se establece "1". Está desactivado de forma predeterminada para reducir el ruido de los registros. |
DEBUG_RESPONSES_SSE_TO_JSON |
(sin definir) | open-sse/handlers/responseTranslator.ts |
Establezca true para registrar los detalles de la traducción SSE→JSON de Responses API. |
DEBUG_CLAUDE_NONSTREAM |
(sin definir) | open-sse/handlers/responseTranslator.ts |
Establezca true para mostrar fragmentos textContent vacíos en la ruta de traducción de respuestas de Claude (solo para depuración). |
NEXT_PUBLIC_OMNIROUTE_E2E_MODE |
(sin definir) | Infraestructura de pruebas E2E | Establezca true para habilitar el modo de pruebas E2E (autenticación relajada, enlaces de prueba). |
23. Integración con GitHub
Sección titulada «23. Integración con GitHub»Permite a los usuarios informar de problemas directamente desde el panel de control.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
GITHUB_ISSUES_REPO |
(sin definir) | src/app/api/v1/issues/report/route.ts |
Repositorio con el formato owner/repo. |
GITHUB_ISSUES_TOKEN |
(sin definir) | src/app/api/v1/issues/report/route.ts |
Token de acceso personal de GitHub con el ámbito issues:write. |
GITHUB_TOKEN |
(sin definir) | clasificación de incidencias / asistentes de agente en la nube | Token de acceso genérico de GitHub utilizado como alternativa a GITHUB_ISSUES_TOKEN y por los asistentes de agente en la nube de src/lib/cloudAgent/*. |
Escenarios de despliegue
Sección titulada «Escenarios de despliegue»Para obtener orientación de SRE sobre el backend de relé (comportamiento de ts/bifrost/auto, ubicación de 9router frente a CLIProxyAPI y estrategia de respaldo para alto rendimiento), consulta Estrategia del backend de relé.
Desarrollo local mínimo
Sección titulada «Desarrollo local mínimo»JWT_SECRET=$(openssl rand -base64 48)API_KEY_SECRET=$(openssl rand -hex 32)INITIAL_PASSWORD=dev123PORT=20128NODE_ENV=developmentProducción con Docker
Sección titulada «Producción con Docker»JWT_SECRET=<generado>API_KEY_SECRET=<generado>INITIAL_PASSWORD=<generado>STORAGE_ENCRYPTION_KEY=<generado>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.comEntorno aislado / CI
Sección titulada «Entorno aislado / 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 con proxy inverso (nginx + Cloudflare)
Sección titulada «VPS con proxy inverso (nginx + Cloudflare)»JWT_SECRET=<generado>API_KEY_SECRET=<generado>STORAGE_ENCRYPTION_KEY=<generado>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. Entorno aislado de Skills (v3.8.0+)
Sección titulada «24. Entorno aislado de Skills (v3.8.0+)»Límites y controles de seguridad aplicados cuando el framework Skills (src/lib/skills/) ejecuta automatizaciones definidas por el usuario en un entorno aislado.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
SKILLS_SANDBOX_TIMEOUT_MS |
10000 (10 s) |
src/lib/skills/builtins.ts |
Tiempo de espera de reloj por ejecución para el código de Skills en el entorno aislado. Es un límite estricto; cualquier ejecución que tarde más se termina. |
SKILLS_EXECUTION_TIMEOUT_MS |
(recurre a SKILLS_SANDBOX_TIMEOUT_MS) |
src/lib/skills/ |
Tiempo de espera de alto nivel para la orquestación de Skills. Establécelo por encima de SKILLS_SANDBOX_TIMEOUT_MS para permitir flujos de trabajo de varios pasos. |
SKILLS_MAX_FILE_BYTES |
1048576 (1 MB) |
src/lib/skills/builtins.ts |
Cantidad máxima de bytes que una Skill puede leer de un único archivo del entorno aislado. |
SKILLS_MAX_HTTP_RESPONSE_BYTES |
256000 (250 KB) |
src/lib/skills/builtins.ts |
Cantidad máxima de bytes capturados de una única respuesta HTTP dentro de una Skill. |
SKILLS_MAX_SANDBOX_OUTPUT_CHARS |
100000 |
src/lib/skills/builtins.ts |
Límite estricto de caracteres de stdout/stderr devueltos por una invocación del entorno aislado. |
SKILLS_SANDBOX_NETWORK_ENABLED |
false |
src/lib/skills/builtins.ts |
Establécelo en 1/true para permitir conexiones de red salientes desde el entorno aislado. De forma predeterminada está aislado por motivos de seguridad. |
SKILLS_ALLOWED_SANDBOX_IMAGES |
(vacío) | src/lib/skills/builtins.ts |
Lista de imágenes de contenedor permitidas para la ejecución en el entorno aislado, separadas por comas. Si está vacía, solo se permite el valor predeterminado integrado. |
SKILLS_SANDBOX_DOCKER_IMAGE |
(valor predeterminado integrado) | src/lib/skills/ |
Imagen de contenedor utilizada al iniciar un entorno aislado respaldado por Docker. Sobrescríbela para fijar una imagen base reforzada personalizada. |
SKILLS_SANDBOX_RUNTIME |
auto |
src/lib/skills/sandbox.ts, src/lib/skills/containerProvider.ts |
Entorno de ejecución de contenedores para el aislamiento de Skills: auto | docker | apple | wsl | orbstack | podman. auto selecciona el mejor entorno instalado según el SO del host (Apple Container/OrbStack en macOS, WSL Container en Windows y Podman en Linux), recurriendo a Docker como alternativa. |
[!CAUTION] Habilitar
SKILLS_SANDBOX_NETWORK_ENABLED=trueabre una vía de salida desde código arbitrario de Skills. Combínalo conOUTBOUND_SSRF_GUARD_ENABLED=truey una política estricta deCORS_ORIGIN/proxy en despliegues compartidos.
25. Cuotas de proveedores, túneles, copias de seguridad y entorno de ejecución misceláneo
Sección titulada «25. Cuotas de proveedores, túneles, copias de seguridad y entorno de ejecución misceláneo»Endpoints de cuotas de proveedores, túneles de red (Tailscale, Ngrok, proxy de depuración MITM), el pool de salida de 1Proxy, copias de seguridad de bases de datos y pequeños ajustes específicos por funcionalidad a los que hacen referencia la capa de ejecución o los scripts.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
REDIS_URL |
redis://localhost:6379 |
src/shared/utils/rateLimiter.ts |
Cadena de conexión de Redis para el backend del limitador de frecuencia. |
ALIBABA_CODING_PLAN_HOST |
(host de producción) | open-sse/services/bailianQuotaFetcher.ts |
Sobrescribe el host utilizado para obtener las cuotas del plan de programación de Alibaba Bailian. |
ALIBABA_CODING_PLAN_QUOTA_URL |
derivado del host | open-sse/services/bailianQuotaFetcher.ts |
Sobrescribe la URL completa de cuotas de Alibaba Bailian. |
QWEN_CLOUD_COOKIE |
(sin configurar) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Cookie de sesión de la consola para la pasarela de cuotas del Token Plan personal de Qwen Cloud / Model Studio (la clave de la API de inferencia no puede leerla). Copie el encabezado completo de la solicitud Cookie —contiene login_qwencloud_ticket— de cualquier llamada a api.json realizada a cs-data.qwencloud.com desde home.qwencloud.com › Facturación › Suscripción (F12 › Red). Es información confidencial y limitada a la sesión; se recomienda usar el campo qwenCloudCookie del panel para cada conexión. |
QWEN_CLOUD_SEC_TOKEN |
(sin configurar) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Sobrescritura manual de sec_token para la pasarela de la consola del Token Plan. Es confidencial; cuando no se configura, el recuperador lo obtiene del HTML del panel usando la cookie. |
QWEN_TOKEN_PLAN_HOST |
https://cs-data.qwencloud.com |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Sobrescribe el host de la pasarela para el recuperador de cuotas del Token Plan personal (p. ej., bailian-singapore-cs.alibabacloud.com para la consola de Model Studio). |
QWEN_TOKEN_PLAN_DASHBOARD_URL |
https://home.qwencloud.com/ |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
URL del panel utilizada para obtener sec_token del HTML con la sesión iniciada. |
ALIBABA_FREE_TIER_VISION_FE_PATH |
/costing-balance/free-quota-image-video |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Sobrescribe la ruta del frontend de la consola para obtener la cuota gratuita de visión y contenido multimedia de Alibaba Model Studio. |
ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH |
/costing-balance/free-quota-multimodal |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Anulación de la ruta del front-end de la consola para obtener la cuota multimodal del nivel gratuito de Alibaba Model Studio. |
ALIBABA_FREE_TIER_AUDIO_FE_PATH |
/costing-balance/free-quota-audio |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Anulación de la ruta del front-end de la consola para obtener la cuota de audio del nivel gratuito de Alibaba Model Studio. |
ALIBABA_FREE_TIER_ALLOWLIST_PATH |
(sin definir) | open-sse/services/alibabaFreeTierAllowlist.ts |
Ruta opcional a un archivo JSON local que sustituye la lista de permitidos integrada de modelos de texto del nivel gratuito de Alibaba. Si no está disponible, se recurre a $DATA_DIR/alibaba-free-tier-allowlist.json y, después, a config/alibaba-free-tier-allowlist.json. |
CONTEXT_RESERVE_TOKENS |
1024 |
open-sse/services/contextManager.ts |
Tokens reservados para la salida de completado al calcular los presupuestos del prompt. |
CONTEXT_KEEP_LATEST_IMAGES |
2 |
open-sse/services/contextManager.ts |
Número de imágenes en línea más recientes que se conservan al eliminar las más antiguas para ajustarse a la ventana de contexto (#8560). |
MODEL_ALIAS_COMPAT_ENABLED |
habilitado | open-sse/services/model.ts |
Activa o desactiva la capa heredada de compatibilidad con alias de modelos utilizada por clientes antiguos. |
OMNIROUTE_EMERGENCY_FALLBACK |
habilitado | open-sse/services/emergencyFallback.ts |
Establézcalo en false (o 0) para deshabilitar el mecanismo de emergencia por agotamiento del presupuesto que redirige las solicitudes fallidas al modelo gratuito nvidia/openai/gpt-oss-120b. El orden de precedencia efectivo es: anulación de la base de datos de indicadores de funcionalidades > variable de entorno > valor predeterminado; si no está disponible, el servicio recurre al valor sin procesar de la variable de entorno. |
COMMAND_CODE_CALLBACK_PORT |
(sin definir) | src/app/api/providers/command-code/auth/shared.ts |
Puerto local utilizado para devoluciones de llamada de tipo OAuth desde la utilidad auxiliar de la CLI de Command Code. |
COMMAND_CODE_VERSION |
0.33.2 |
open-sse/executors/commandCode.ts |
Valor enviado como encabezado x-command-code-version al servicio ascendente de Command Code. Anúlelo para incrementar la versión de la CLI. |
COMMANDCODE_API_URL |
https://api.commandcode.ai |
open-sse/services/usage/command-code.ts |
URL base del servicio ascendente de uso/cuota de Command Code utilizado por la telemetría del recopilador de cuotas para smartphones. Anúlela para usar una API de Command Code autoalojada o alternativa. |
MITM_LOCAL_PORT |
443 |
src/mitm/server.cjs |
Puerto de enlace local para el proxy de depuración MITM. |
MITM_DISABLE_TLS_VERIFY |
0 |
src/mitm/server.cjs |
Establezca 1 para deshabilitar la verificación TLS ascendente (solo para desarrollo). |
MITM_IDLE_TIMEOUT_MS |
60000 |
src/mitm/socketTimeouts.ts, src/mitm/server.cjs |
Tiempo de espera por inactividad del socket (ms) para las conexiones con proxy; los sockets que superen este tiempo de inactividad se cierran para evitar fugas de túneles semiabiertos. |
BRIDGE_PORT |
20129 |
bin/antigravity-bridge.mjs |
Puerto en el que escucha el puente MITM de Antigravity. |
ROUTER_URL |
http://127.0.0.1:20128/v1/antigravity |
bin/antigravity-bridge.mjs |
Endpoint del enrutador al que el puente reenvía el tráfico de Antigravity. |
CERT_DIR |
~/.omniroute/mitm |
bin/antigravity-bridge.mjs |
Directorio que contiene server.key/server.crt para el listener TLS del puente; el puente se cierra si falta alguno de ellos. |
MITM_VERBOSE |
1 |
src/mitm/server.cjs, src/mitm/_internal/bypass.cjs |
Nivel de detalle de los registros de decisiones de enrutamiento: 0 los silencia; los valores más altos registran más decisiones de omisión/enrutamiento. |
MITM_ROOT_CA_ENABLED |
false |
src/mitm/manager.ts |
Establezca true para habilitar explícitamente el modelo de CA raíz y certificados hoja por host (#6684). Las instalaciones nuevas lo reciben automáticamente; las instalaciones con un certificado hoja heredado de confianza preexistente conservan el certificado heredado con SAN fijo, a menos que se habilite explícitamente. |
MITM_CERT_MODE |
legacy |
src/mitm/manager.ts, src/mitm/server.cjs |
Lo establece el administrador MITM para el proceso de proxy iniciado (root-ca | legacy); refleja la decisión de migración de certificados y no está pensado para configurarse manualmente. |
OMNIROUTE_NO_SUDO |
0 |
src/mitm/systemCommands.ts |
Establezca 1 (valor verdadero) para eliminar el sudo inicial de los comandos de confianza de certificados MITM; está destinado a implementaciones sin root o con espacios de nombres de usuario en las que el operador confía manualmente en la CA (p. ej., mediante el mecanismo de certificados de CA adicionales de Node). |
SKIP_ANTIGRAVITY_DNS |
(sin establecer) | src/mitm/dns/provision.ts |
Establezca true para omitir por completo el aprovisionamiento de entradas DNS en /etc/hosts para los nombres de host del proxy de Antigravity; está destinado a contenedores sin sudo/root disponible. |
OMNIROUTE_SKIP_DNS_WRITE |
(sin establecer) | src/mitm/dns/dnsConfig.ts |
Establezca 1 para omitir la escritura en el archivo hosts al añadir o eliminar entradas DNS; está destinado a entornos de prueba aislados o de solo lectura. |
OMNIROUTE_SKIP_SYSTEM_TRUST |
0 |
src/mitm/cert/install.ts, src/mitm/tproxy/caTrust.ts |
Protección exclusiva para pruebas/CI: establézcala en 1 para que la instalación/desinstalación de la confianza del certificado no realice ninguna operación, de modo que la suite nunca modifique el almacén de confianza del sistema operativo. Se establece automáticamente mediante la configuración de pruebas y los flujos de trabajo de CI. |
CHANGELOG_BASE_REF |
(automático) | scripts/check/check-changelog-integrity.mjs |
Referencia base explícita para la comprobación contra la eliminación de contenido del CHANGELOG (de forma predeterminada, la rama base del PR en CI o la release/v* más alta). |
FREE_PROXY_AUTO_SYNC_ENABLED |
false |
src/lib/freeProxyProviders/scheduler.ts |
Establézcala en true para habilitar el programador de sincronización automática en segundo plano del grupo de proxies gratuitos. Es opcional y está deshabilitado de forma predeterminada. |
FREE_PROXY_AUTO_SYNC_INTERVAL_MS |
1800000 |
src/lib/freeProxyProviders/scheduler.ts |
Intervalo de sincronización automática en milisegundos (valor predeterminado: 30 min). |
FREE_PROXY_1PROXY_ENABLED |
true |
src/lib/freeProxyProviders/oneproxy.ts |
Habilita la fuente de proxies gratuitos de 1proxy. Establézcala en false para deshabilitarla. |
FREE_PROXY_1PROXY_API_URL |
(consulte oneproxy.ts) | src/lib/freeProxyProviders/oneproxy.ts |
Sustitución de la URL de la API de 1proxy. |
FREE_PROXY_1PROXY_MAX |
500 |
src/lib/freeProxyProviders/oneproxy.ts |
Número máximo de proxies obtenidos de 1proxy por sincronización. |
FREE_PROXY_1PROXY_MIN_QUALITY |
50 |
src/lib/freeProxyProviders/oneproxy.ts |
Umbral mínimo de puntuación de calidad para las importaciones de 1proxy. |
FREE_PROXY_PROXIFLY_ENABLED |
true |
src/lib/freeProxyProviders/proxifly.ts |
Habilita la fuente de proxies gratuitos de Proxifly. Establézcala en false para deshabilitarla. |
FREE_PROXY_PROXIFLY_QUANTITY |
100 |
src/lib/freeProxyProviders/proxifly.ts |
Número de proxies que se obtendrán por cada sincronización de Proxifly. |
FREE_PROXY_PROXIFLY_ANONYMITY |
elite |
src/lib/freeProxyProviders/proxifly.ts |
Filtro de nivel de anonimato para Proxifly (elite, anonymous, transparent). |
FREE_PROXY_IPLOCATE_ENABLED |
false |
src/lib/freeProxyProviders/iplocate.ts |
Habilita la fuente de proxies gratuitos de IPLocate. Solo mediante activación explícita. |
FREE_PROXY_IPLOCATE_BASE_URL |
https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols |
src/lib/freeProxyProviders/iplocate.ts |
Anulación de la URL base de la lista de proxies de IPLocate. |
FREE_PROXY_WEBSHARE_ENABLED |
true |
src/lib/freeProxyProviders/webshare.ts |
Habilita la fuente del grupo de proxies de Webshare. Establécelo en false para deshabilitarla; también requiere que se establezca FREE_PROXY_WEBSHARE_API_KEY. |
FREE_PROXY_WEBSHARE_API_KEY |
(ninguno) | src/lib/freeProxyProviders/webshare.ts |
Token de la API de la cuenta de Webshare (Authorization: Token <key>). Obligatorio: el proveedor permanece deshabilitado si no se proporciona. |
FREE_PROXY_WEBSHARE_API_URL |
https://proxy.webshare.io/api/v2/proxy/list/ |
src/lib/freeProxyProviders/webshare.ts |
Anulación de la URL de la API de la lista de proxies de Webshare. |
FREE_PROXY_WEBSHARE_MAX |
500 |
src/lib/freeProxyProviders/webshare.ts |
Número máximo de proxies importados por cada sincronización con Webshare. |
NEXT_PUBLIC_VERCEL_RELAY_ENABLED |
true |
src/app/(dashboard)/…/ProxyPoolTab.tsx |
Muestra u oculta el botón para desplegar Vercel Relay en la pestaña del grupo de proxies. |
VERCEL_API_BASE |
https://api.vercel.com |
src/app/api/settings/proxy/vercel-deploy/route.ts |
Anulación de la URL base de la API de Vercel (para pruebas). |
NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/…/VercelRelayModal.tsx |
Nombre predeterminado del proyecto, rellenado previamente en el modal de despliegue de Vercel Relay. |
TAILSCALE_BIN |
(detección automática) | src/lib/tailscaleTunnel.ts |
Ruta explícita al binario tailscale. |
TAILSCALED_BIN |
(detección automática) | src/lib/tailscaleTunnel.ts |
Ruta explícita al binario del demonio tailscaled. |
TAILSCALE_AUTHKEY |
(sin definir) | src/lib/tailscaleTunnel.ts |
Clave de autenticación precompartida de Tailscale para ejecutar tailscale up de forma no interactiva/sin interfaz gráfica (se pasa mediante --auth-key=). Si no está definida, el inicio de sesión recurre a la URL de autenticación interactiva en el navegador. |
NGROK_AUTHTOKEN |
(sin definir) | src/lib/ngrokTunnel.ts |
Autentica los túneles salientes de ngrok. |
DB_BACKUP_MAX_FILES |
20 |
src/lib/db/backup.ts |
Número máximo de archivos de copia de seguridad de SQLite que conserva la limpieza de copias manuales/programadas. Las instantáneas de migración se direccionan por contenido y se reutilizan para un estado idéntico de la base de datos; no se eliminan durante el periodo de migraciones simultáneas. Anula el valor guardado en Configuración → Retención de copias de seguridad de la base de datos. |
DB_BACKUP_RETENTION_DAYS |
0 |
src/lib/db/backup.ts |
Antigüedad máxima (en días) que conserva la limpieza de copias de seguridad manuales/programadas. 0 desactiva la eliminación basada en la antigüedad. Las instantáneas de migración no se eliminan durante el periodo de migraciones simultáneas. Anula el valor guardado en Configuración → Retención de copias de seguridad de la base de datos. |
OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS |
30000 |
src/lib/jobs/backupScheduleJob.ts |
Intervalo de ejecución (ms) de la tarea del servidor que procesa backup-schedule.json. Debe mantenerse muy por debajo de la granularidad de 1 minuto de cron; los valores inferiores a 5000 o que no se puedan analizar vuelven al valor predeterminado de 30000. |
CONTAINER_HOST |
docker |
scripts/check-permissions.sh |
Indicación del entorno de ejecución de contenedores para la comprobación de permisos del punto de entrada. Establézcalo en podman para cualquier topología de Podman. Dado que el contenedor no puede determinar si el motor es local o si se accede a él mediante Podman Machine, la advertencia no hace referencia a ninguna topología específica y remite a contrib/podman/README.md. |
QUOTA_STORE_DRIVER |
sqlite |
src/lib/quota/storeFactory.ts |
Backend del almacén de consumo de cuotas compartidas: sqlite (valor predeterminado) o redis. |
QUOTA_STORE_REDIS_URL |
(sin definir) | src/lib/quota/storeFactory.ts |
Cadena de conexión de Redis utilizada cuando QUOTA_STORE_DRIVER=redis (p. ej., redis://localhost:6379). |
QUOTA_SATURATION_THRESHOLD |
0.5 |
src/lib/quota/enforce.ts |
Proporción de saturación del pool (0..1); al alcanzarla o superarla, el pool entra en modo estricto (sin préstamos). |
QUOTA_SOFT_DEPRIORITIZE_FACTOR |
0.7 |
open-sse/services/combo.ts |
Multiplicador de puntuación (0..1) aplicado a un destino cuando la política de cuota flexible reduce su prioridad. |
STATUS_SOFT_DEPRIORITIZE_FACTOR |
0.5 |
open-sse/services/combo/autoStrategy.ts |
Multiplicador de puntuación (0..1) aplicado a un proveedor agotado (credits_exhausted/rate_limited) en la puntuación de combinación automática cuando el corte preventivo por cuota está DESACTIVADO (#4540). |
QUOTA_CONSUMPTION_RETENTION_DAYS |
14 |
src/lib/db/quotaConsumption.ts |
Ventana de retención (días) para los segmentos de quota_consumption antes de la recolección de elementos no utilizados (gcQuotaConsumption). |
QUOTA_PREFLIGHT_CUTOFF_ENABLED |
false |
src/lib/resilience/settings.ts |
Activación opcional (DESACTIVADA de forma predeterminada): habilita el corte estricto por cuota del enrutamiento automático, que descarta los candidatos con poca cuota antes de la puntuación. |
OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL |
false |
open-sse/services/autoCombo/virtualFactory.ts |
Activación opcional (DESACTIVADA de forma predeterminada): cuando un filtro auto/<category>:<tier> no encuentra candidatos conectados, restaura el comportamiento heredado de recurrir al pool completo (sin filtrar) en lugar de devolver un pool vacío. Con el valor predeterminado DESACTIVADO, :free significa «solo el nivel gratuito». |
OMNIROUTE_CHAOS_MAX_PANEL |
5 |
open-sse/services/autoCombo/virtualFactory.ts |
Límite del tamaño del panel (restringido a 1–10) para la variante de difusión auto/*:chaos: una solicitud se distribuye entre un máximo de esta cantidad de modelos de distintos proveedores. |
OMNIROUTE_CHAOS_MIN_PANEL |
(valor predeterminado del motor) | open-sse/services/autoCombo/virtualFactory.ts |
Ajuste del tamaño mínimo del panel que se reenvía al controlador de difusión de caos; si no se establece, se conserva el valor predeterminado del motor. |
OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS |
(valor predeterminado del motor) | open-sse/services/autoCombo/virtualFactory.ts |
Tiempo de espera máximo (ms) para la distribución completa del panel de caos; si no se establece, se conserva el valor predeterminado del motor. |
GROK_AUTH_PATH |
~/.grok/auth.json |
open-sse/services/grokQuotaFetcher.ts |
Ruta del archivo auth.json de la CLI de Grok utilizado para obtener la cuota semanal de grok-web; se puede sobrescribir para pruebas o para una instalación no estándar de la CLI. |
AGENTBRIDGE_UPSTREAM_CA_CERT |
(sin definir) | src/mitm/manager.ts |
Certificado de CA adicional (PEM) de confianza para las conexiones TLS ascendentes de AgentBridge. |
INSPECTOR_BUFFER_SIZE |
1000 |
src/mitm/inspector/buffer.ts |
Número máximo de solicitudes capturadas almacenadas en el búfer circular del Inspector de tráfico. |
INSPECTOR_MAX_BODY_KB |
1024 |
src/mitm/inspector/buffer.ts |
Tamaño máximo del cuerpo de las solicitudes/respuestas capturadas (KB) antes de truncarlo. |
INSPECTOR_HTTP_PROXY_PORT |
8080 |
src/mitm/inspector/httpProxyServer.ts |
Puerto local para el proxy HTTP del Inspector de tráfico. |
INSPECTOR_HTTP_PROXY_AUTOSTART |
false |
src/mitm/inspector/httpProxyServer.ts |
Inicia automáticamente el proxy HTTP del inspector al arrancar. |
INSPECTOR_TLS_INTERCEPT |
false |
src/lib/inspector/captureState.ts |
Habilita la interceptación TLS (MITM) del tráfico HTTPS capturado. |
INSPECTOR_LLM_HOSTS_EXTRA |
(sin definir) | src/lib/inspector/captureState.ts |
Nombres de host adicionales (separados por comas) tratados como endpoints de LLM para su captura. |
INSPECTOR_MASK_SECRETS |
true |
src/mitm/inspector/buffer.ts |
Enmascara los secretos (encabezados de autenticación/claves de API) en el tráfico capturado. |
INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES |
30 |
src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts |
Minutos antes de que la protección del proxy del sistema revierta automáticamente la configuración del proxy del sistema operativo. |
INSPECTOR_INTERNAL_INGEST_TOKEN |
(automático) | src/app/api/tools/traffic-inspector/internal/ingest/route.ts |
Token que autentica la ingesta interna de capturas en el inspector. |
PLAYGROUND_COMPARE_MAX_COLUMNS |
4 |
src/app/(dashboard)/dashboard/playground/ |
Número máximo de columnas en paralelo en el modo de comparación del Playground. |
PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL |
(sin definir) | src/app/(dashboard)/dashboard/playground/ |
Modelo predeterminado para la acción «mejorar prompt» del Playground (si no está definido, se utiliza el modelo activo). |
BIFROST_ENABLED |
1 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Interruptor maestro de emergencia para el proxy sidecar de Bifrost. Cuando se establece en 0, la ruta devuelve 503 con el encabezado X-Bifrost-Killswitch y el operador es redirigido a la ruta de TS. Se utiliza para deshabilitar el sidecar sin volver a desplegar (incidente del enrutador de nivel 1, rotación de claves). |
BIFROST_BASE_URL |
(sin definir) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Cuando está definida, la ruta del proxy sidecar de Bifrost reenvía el tráfico de /v1/chat/completions a este gateway de Go en lugar de al controlador de retransmisión de TS. Sin definir → 503 con fallback. Se elimina la barra diagonal final. |
BIFROST_PORT |
8080 |
src/lib/services/bootstrap.ts |
Puerto al que se vincula el servicio integrado supervisado de Bifrost (127.0.0.1:<port>) cuando OmniRoute gestiona el ciclo de vida del sidecar de Bifrost. El valor predeterminado es 8080. |
BIFROST_API_KEY |
(sin definir) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Clave de API para el gateway de Bifrost (enviada como Authorization: Bearer ...). Si no está definida, la ruta espera que la solicitud incluya una clave de API válida de OmniRoute; esta clave es únicamente para la autenticación del lado del gateway. |
BIFROST_STREAMING_ENABLED |
true |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Cuando es true, la ruta del sidecar de Bifrost transmite las respuestas mediante SSE a través del gateway, en lugar de utilizar el ejecutor de streaming de TS. Establézcala en 0 para forzar respuestas JSON sin streaming a través del gateway. |
BIFROST_TIMEOUT_MS |
30000 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Tiempo de espera por solicitud al hacer proxy al gateway de Bifrost (ms). Cuando se agota el tiempo de espera, la ruta devuelve la ruta de retransmisión de TS mediante el encabezado X-Bifrost-Fallback. |
OMNIROUTE_BIFROST_KEY |
(sin definir) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Alias de BIFROST_API_KEY (utilizado por scripts que leen el entorno mediante OMNIROUTE_*). BIFROST_API_KEY tiene prioridad cuando ambas están definidas. |
OMNIROUTE_RELAY_BACKEND |
ts / auto |
src/app/api/v1/relay/chat/completions/routingBackend.ts |
Backend de retransmisión para /api/v1/relay/chat/completions: ts | bifrost | auto. ts = retransmisión de TypeScript (valor predeterminado cuando Bifrost no está configurado); auto selecciona Bifrost cuando BIFROST_BASE_URL está definida y BIFROST_ENABLED ≠ 0, con fallback automático a TS si no se puede acceder al sidecar; bifrost fuerza el uso de Bifrost (estricto, sin fallback). La autenticación, la limitación de tasa, la protección contra inyección y la lista de permitidos siempre se ejecutan primero en la ruta de Next. Las respuestas incluyen X-Routing-Backend / X-Routing-Fallback / X-Routing-Fallback-Reason. |
RELAY_ROUTING_BACKEND |
(sin establecer) | src/app/api/v1/relay/chat/completions/routingBackend.ts |
Alias aceptado para OMNIROUTE_RELAY_BACKEND (los mismos valores ts | bifrost | auto). OMNIROUTE_RELAY_BACKEND tiene prioridad cuando ambos están establecidos. |
OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS |
5000 |
src/app/api/v1/relay/chat/completions/bifrostCooldown.ts |
Tiempo de espera (ms) después de que falle un salto al sidecar Bifrost en modo auto antes de que el relé vuelva a intentar usarlo; mientras dura este tiempo, enruta directamente por la ruta de TS y, después, vuelve a sondear el sidecar. 0 lo desactiva. Solo se aplica cuando OMNIROUTE_RELAY_BACKEND=auto. |
OMNIROUTE_TLS_CERT |
(sin establecer) | bin/cli/commands/serve.mjs |
Ruta a un certificado TLS PEM para servir omniroute serve mediante HTTPS (equivalente a --tls-cert). Debe proporcionarse junto con OMNIROUTE_TLS_KEY; el servidor independiente finaliza entonces TLS en el mismo listener (wss:// funciona sin cambios). Sin establecer → HTTP sin cifrar. Si solo se proporciona el certificado o la clave, o si la ruta no es legible, se registra una advertencia y se mantiene HTTP. |
OMNIROUTE_TLS_KEY |
(sin establecer) | bin/cli/commands/serve.mjs |
Ruta a la clave privada TLS PEM para HTTPS de omniroute serve (equivalente a --tls-key). Debe proporcionarse junto con OMNIROUTE_TLS_CERT. Consulte OMNIROUTE_TLS_CERT. |
OMNIROUTE_LOCAL_ENDPOINTS_ENABLED |
0 |
src/lib/security/localEndpoints.ts |
Interruptor principal para las rutas /api/local/*. Cuando no está establecido o es 0, todas las rutas /api/local/* devuelven 503 en producción. Debe ser 1 en despliegues que no sean de loopback para habilitar el iniciador de Redis y otros iniciadores similares de servicios locales con un clic. Protección redundante con la clasificación del guardián de rutas isLocalOnlyPath() (LOCAL_ONLY_API_PREFIXES en src/server/authz/routeGuard.ts). |
OMNIROUTE_LOCAL_ENDPOINTS_TOKEN |
(sin establecer) | src/lib/security/localEndpoints.ts |
Token Bearer para clientes de /api/local/* que no estén en loopback (p. ej., la aplicación de escritorio). Cuando está establecido, las solicitudes procedentes de direcciones IP que no sean de loopback deben incluir Authorization: Bearer <token>. Es obligatorio cuando OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1 en despliegues que no sean de loopback. |
OMNIROUTE_REDIS_CONTAINER_NAME |
omniroute-redis |
bin/cli/commands/redis.mjs |
Nombre del contenedor para el iniciador de Redis con un clic (omniroute redis up). Lo utilizan tanto la CLI como la interfaz gráfica RedisLauncherPanel. |
OMNIROUTE_REDIS_HOST_PORT |
6379 |
bin/cli/commands/redis.mjs |
Puerto del host para el iniciador de Redis con un clic. Cámbielo si el host ya tiene enlazado el puerto 6379. El puerto interno del contenedor permanece en 6379. |
OMNIROUTE_REDIS_BIND_HOST |
127.0.0.1 |
bin/cli/commands/redis.mjs |
Interfaz del host en la que publica el iniciador de Redis con un clic. El iniciador ejecuta Redis SIN contraseña, por lo que enlazarlo a 0.0.0.0 proporciona a todos los hosts de la LAN acceso sin autenticar a Redis; amplíe esta vinculación únicamente si también configura por su cuenta una contraseña en la instancia. |
REDIS_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interfaz del host en la que docker-compose publica el sidecar de Redis (#9286). El Redis de compose se ejecuta sin requirepass; los contenedores de la aplicación acceden a él mediante la red de compose (redis:6379); el puerto publicado solo existe para las herramientas del host. 0.0.0.0 expone un Redis sin autenticar a toda la LAN. |
REDIS_PORT |
6379 |
docker-compose.yml |
Puerto del host para el servicio auxiliar Redis de Compose. |
APP_BIND_HOST |
127.0.0.1 |
docker-compose.yml, docker-compose.prod.yml |
Interfaz del host en la que docker-compose publica los puertos del panel, la API y WebSocket en vivo de la propia aplicación (#12568). Dado que REQUIRE_API_KEY=false se distribuye como valor predeterminado de .env.example, 0.0.0.0 expone el proxy LLM /v1 anónimo a toda la LAN/WAN; amplíe el acceso únicamente cuando REQUIRE_API_KEY=true o cuando un proxy inverso situado delante aplique su propia autenticación. |
QDRANT_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interfaz del host en la que docker-compose publica el servicio auxiliar de memoria Qdrant (#12578). Se aplica el mismo criterio de exposición a la LAN que para REDIS_BIND_HOST. |
BIFROST_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interfaz del host en la que docker-compose publica el servicio auxiliar del enrutador Bifrost (#12578). Se aplica el mismo criterio de exposición a la LAN que para REDIS_BIND_HOST. |
REDIS_KEY_PREFIX |
omniroute: |
src/shared/utils/rateLimiter.ts |
Prefijo de espacio de nombres aplicado a cada clave Redis de OmniRoute (limitador de tasa, caché de autenticación, almacén de cuotas y disyuntor de precalentamiento). Evita colisiones de claves cuando la instancia de Redis se comparte con otras aplicaciones (#11042). |
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
(sin establecer; mecanismo deshabilitado) | src/lib/api/internalServiceAuth.ts |
Secreto compartido para saltos REST internos que conservan la identidad (#9260): los componentes de OmniRoute que llaman a otras rutas locales de OmniRoute lo envían como x-omniroute-internal-service-token para conservar la identidad del solicitante original. Se compara mediante timingSafeEqual. |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
(sin establecer) | src/lib/api/internalServiceAuth.ts |
Variante mediante archivo secreto del token de servicio interno: ruta a un archivo cuyo contenido, sin espacios al inicio ni al final, es el token. Solo se consulta cuando la variable en línea no está establecida. |
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
src/lib/catalog/openrouterProviderStats.ts |
Enriquece la lista de proveedores del panel con estadísticas semanales de clasificación de OpenRouter (#9324). Está habilitado de forma predeterminada; establezca false para omitir por completo la obtención en segundo plano (no bloqueante y nunca fatal). |
OPENROUTER_PROVIDER_STATS_TTL_MS |
86400000 (24 h) |
src/lib/catalog/openrouterProviderStats.ts |
TTL de caché para la instantánea de estadísticas de proveedores de OpenRouter, en milisegundos. |
OMNIROUTE_REDIS_IMAGE |
redis:7-alpine |
bin/cli/commands/redis.mjs |
Imagen de Redis utilizada por el iniciador de Redis con un solo clic. Sustitúyala por redis:8-alpine o por un espejo de registro privado según sea necesario. |
QDRANT_HOST |
qdrant |
(perfil de clúster opcional) | Nombre de host del sidecar de Qdrant cuando --profile memory está activo. El valor predeterminado apunta al nombre del servicio qdrant dentro de la red; sobrescríbalo para un despliegue externo. Solo se utiliza cuando qdrantEnabled es true en el código (src/lib/memory/vectorStore.ts:108). |
QDRANT_PORT |
6333 |
(perfil de clúster opcional) | Puerto REST del sidecar de Qdrant. |
QDRANT_GRPC_PORT |
6334 |
(perfil de clúster opcional) | Puerto gRPC del sidecar de Qdrant. Lo utilizan las bibliotecas cliente que prefieren gRPC en lugar de REST para operaciones de streaming. |
QDRANT_API_KEY |
(sin establecer) | (perfil de clúster opcional) | Clave de API opcional para Qdrant Cloud o una instancia local autenticada. Vacío → no se envía el encabezado api-key. |
QDRANT_COLLECTION |
omniroute-memory |
(perfil de clúster opcional) | Nombre de la colección para los embeddings de la memoria de conversaciones de OmniRoute. Se crea en la primera ejecución con las dimensiones indicadas por QDRANT_VECTOR_SIZE. |
QDRANT_EMBEDDING_MODEL |
text-embedding-3-small |
(perfil de clúster opcional) | Nombre predeterminado del modelo de embeddings registrado en los metadatos de la colección de Qdrant. Los embeddings reales son generados por el proveedor al que apunta el campo embeddingModel en la configuración de OmniRoute. |
QDRANT_VECTOR_SIZE |
1536 |
(perfil de clúster opcional) | Dimensión del vector de embeddings. Debe coincidir con el modelo utilizado para generar los embeddings (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). |
QDRANT_HNSW_EF_CONSTRUCT |
128 |
(perfil de clúster opcional) | Precisión del índice HNSW durante su construcción. Un valor más alto implica una construcción más lenta y una búsqueda más rápida. |
OMNIROUTE_ROTATION_ENABLED |
true |
open-sse/services/rotationConfig.ts |
Interruptor maestro para la rotación de cuentas configurable por el operador. Cuando es false, ninguna de las clases OMNIROUTE_ROTATE_* que aparecen a continuación activa el cambio a una cuenta alternativa (el estado de desactivación maestra también bloquea las clases 429/500/502 habilitadas de forma predeterminada). Permite que un frontend supervisor (p. ej., la aplicación de escritorio VibeProxy) replique sus propias reglas de rotación en el motor de cambio a cuentas alternativas del backend. |
OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS |
0 |
open-sse/services/rotationConfig.ts |
Tiempo de espera (segundos) aplicado a una cuenta con limitación de tasa cuando el servicio upstream no proporciona una indicación explícita de restablecimiento. 0 = utilizar el tiempo de espera predeterminado del motor en lugar de una sobrescritura fija. |
OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET |
true |
open-sse/services/rotationConfig.ts |
Refleja la preferencia del front-end «no etiquetar como limitado por tasa sin una hora de restablecimiento». |
OMNIROUTE_ROTATE_ON_429 |
true |
open-sse/services/rotationConfig.ts |
Habilita la conmutación por estado para los errores 429. Cuando es false (y OMNIROUTE_ROTATION_ENABLED=true), un error 429 deja de activar la rotación de cuentas y, en su lugar, se devuelve al cliente. |
OMNIROUTE_ROTATE_429_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de errores 429 dentro de OMNIROUTE_ROTATE_429_WINDOW_SECONDS necesarios antes de rotar la cuenta. 1 (valor predeterminado) realiza la rotación inmediatamente, preservando el comportamiento histórico. |
OMNIROUTE_ROTATE_429_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Ventana deslizante (en segundos) durante la cual se contabilizan los errores 429 para alcanzar OMNIROUTE_ROTATE_429_THRESHOLD. |
OMNIROUTE_ROTATE_ON_500 |
true |
open-sse/services/rotationConfig.ts |
Habilita la conmutación por estado para los errores de servidor 5xx (excepto 502, que tiene su propia categoría). Cuando es false, estos errores dejan de activar la rotación de cuentas. |
OMNIROUTE_ROTATE_500_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de errores 5xx dentro de OMNIROUTE_ROTATE_500_WINDOW_SECONDS necesarios antes de rotar la cuenta. 1 (valor predeterminado) realiza la rotación inmediatamente. |
OMNIROUTE_ROTATE_500_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Ventana deslizante (en segundos) durante la cual se contabilizan los errores 5xx para alcanzar OMNIROUTE_ROTATE_500_THRESHOLD. |
OMNIROUTE_ROTATE_ON_502 |
true |
open-sse/services/rotationConfig.ts |
Habilita la conmutación por estado para los errores 502 (puerta de enlace incorrecta). Cuando es false, los errores 502 dejan de activar la rotación de cuentas. |
OMNIROUTE_ROTATE_502_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de errores 502 dentro de OMNIROUTE_ROTATE_502_WINDOW_SECONDS necesarios antes de rotar la cuenta. 1 (valor predeterminado) realiza la rotación inmediatamente. |
OMNIROUTE_ROTATE_502_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Ventana deslizante (en segundos) durante la cual se contabilizan los errores 502 para alcanzar OMNIROUTE_ROTATE_502_THRESHOLD. |
OMNIROUTE_ROTATE_ON_400 |
false |
open-sse/services/rotationConfig.ts |
Opción voluntaria (DESACTIVADA de forma predeterminada): cuando es true, un 400 simple (solicitud incorrecta) también activa la rotación de cuenta. Esto solo añade comportamiento; nunca bloquea el comportamiento existente del motor, según el cual un 400 que contiene texto sobre límites de frecuencia o cuota activa la conmutación independientemente de esta opción. |
OMNIROUTE_ROTATE_400_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de errores 400 dentro de OMNIROUTE_ROTATE_400_WINDOW_SECONDS necesarios antes de rotar la cuenta (solo se consulta cuando OMNIROUTE_ROTATE_ON_400=true). |
OMNIROUTE_ROTATE_400_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Ventana deslizante (en segundos) durante la cual se contabilizan los errores 400 para alcanzar OMNIROUTE_ROTATE_400_THRESHOLD. |
Programador de calentamiento de Claude
Sección titulada «Programador de calentamiento de Claude»Calentamiento controlado por cron para las conexiones OAuth de Anthropic que hayan optado por participar, de modo que la ventana del límite de frecuencia de 5 horas se abra mediante una solicitud programada trivial, en lugar de hacerlo con la primera solicitud real (#8848). El programador permanece desactivado salvo que OMNIROUTE_WARMUP_ENABLED tenga un valor verdadero y la conexión esté marcada en settings.claudeWarmup.connections; una lista de conexiones vacía significa que no se calienta ninguna, incluso si la variable de entorno está activada.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_WARMUP_ENABLED |
(sin definir → desactivado) | src/lib/warmupScheduler.ts |
Interruptor principal del programador de calentamiento. Acepta 1/true/yes/on (sin distinguir entre mayúsculas y minúsculas y omitiendo los espacios en blanco). Cualquier otro valor, o si no está definido, mantiene desactivado el programador. |
OMNIROUTE_WARMUP_CRON |
0 7 * * * |
src/lib/warmupScheduler.ts |
Expresión cron de cinco campos para la ejecución del calentamiento, evaluada en America/Los_Angeles (la zona horaria de restablecimiento de Anthropic) independientemente del reloj del host. |
OMNIROUTE_WARMUP_CONCURRENCY |
3 |
src/lib/warmupScheduler.ts |
Número de conexiones que se calientan en paralelo por ejecución. Se limita al intervalo 1-10; un valor no numérico vuelve a 3. |
OMNIROUTE_WARMUP_MODEL |
claude-3-5-haiku-20241022 |
src/lib/warmupScheduler.ts |
Modelo utilizado para la solicitud de calentamiento. Sobrescríbalo solo si el valor predeterminado no está disponible en su plan; elija el modelo más económico que aun así abra la ventana. |
Sesiones VNC de inicio de sesión en el navegador y alias del directorio de datos
Sección titulada «Sesiones VNC de inicio de sesión en el navegador y alias del directorio de datos»Chromium+VNC en contenedores, utilizado para la captura interactiva de credenciales de inicio de sesión en el navegador (/api/vnc-session), junto con un alias DATA_DIR heredado. Todo es opcional: los valores predeterminados de VNC usan la imagen incluida omniroute-vnc-chromium:local y solo se sobrescriben para usar una imagen de contenedor personalizada, puertos personalizados o ajustar el ciclo de vida.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
Etiqueta de la imagen de Docker para el contenedor de inicio de sesión de Chromium+VNC. Compile docker/vnc-browser/chromium o especifique aquí una imagen personalizada. |
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
Binario del entorno de ejecución de contenedores utilizado para iniciar el contenedor VNC (p. ej., configúrelo como podman). |
OMNIROUTE_VNC_CONTAINER_VNC_PORT |
3000 |
src/lib/vncSession/manifest.ts |
Puerto VNC/noVNC expuesto dentro del contenedor. |
OMNIROUTE_VNC_CONTAINER_CDP_PORT |
9223 |
src/lib/vncSession/manifest.ts |
Puerto del Protocolo de DevTools de Chrome dentro del contenedor. |
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR |
/config |
src/lib/vncSession/manifest.ts |
Ruta del directorio del perfil de Chromium dentro del contenedor. |
OMNIROUTE_VNC_PROFILE_DIR |
$HOME/.omniroute/browser-login-profiles |
src/lib/vncSession/manifest.ts |
Directorio del host que contiene los perfiles persistentes de inicio de sesión del navegador. |
OMNIROUTE_VNC_IDLE_MS |
600000 (10 min) |
src/lib/vncSession/manifest.ts |
Tiempo de espera por inactividad (ms) tras el cual se elimina una sesión VNC inactiva. |
OMNIROUTE_VNC_MAX_MS |
1800000 (30 min) |
src/lib/vncSession/manifest.ts |
Límite máximo absoluto (ms) para la duración de una única sesión VNC. |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
Número máximo de sesiones VNC simultáneas. |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
Tiempo de espera (ms) hasta que el navegador en el contenedor esté listo para CDP. |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
Tiempo de espera (ms) para recopilar la sesión y las cookies capturadas una vez completado el inicio de sesión. |
OMNIROUTE_VNC_CHROMIUM_ARGS |
--remote-debugging-port=9222 --no-first-run --no-default-browser-check |
src/lib/vncSession/manifest.ts |
Indicadores adicionales de la línea de comandos que se pasan a Chromium en el contenedor. |
OMNIROUTE_VNC_NETWORK |
omniroute-vnc-browser-login |
src/lib/vncSession/manifest.ts |
Red dedicada de Docker a la que se une el contenedor de inicio de sesión VNC (#12571) en lugar del puente predeterminado, para que los contenedores del mismo nivel no puedan acceder a su puerto puente CDP. |
VIBEPROXY_DATA_DIR |
(sin establecer) | open-sse/services/notionThreadSessions.ts |
Alias heredado de DATA_DIR, que solo se comprueba cuando tanto DATA_DIR como OMNIROUTE_DATA_DIR no están establecidas. Localiza la caché de sesiones de hilos web de Notion (<dir>/notion-web-thread-sessions.json). |
26. Banco de pruebas y E2E
Sección titulada «26. Banco de pruebas y E2E»Utilizado por scripts/dev/run-next-playwright.mjs, scripts/dev/smoke-electron-packaged.mjs,
scripts/dev/run-ecosystem-tests.mjs y scripts/build/uninstall.mjs. Deje todos los
valores siguientes sin configurar en los despliegues de producción.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_E2E_BOOTSTRAP_MODE |
auth |
scripts/dev/run-next-playwright.mjs |
Modo de inicialización E2E (auth, fresh, reuse) para el ejecutor de Playwright. |
OMNIROUTE_E2E_PASSWORD |
recurre a INITIAL_PASSWORD |
scripts/dev/run-next-playwright.mjs |
Contraseña de administrador inyectada en el entorno de Playwright. |
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
Deshabilita el sondeo de comprobación de estado local durante las ejecuciones de Playwright. |
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
Deshabilita el bucle de comprobación de estado de los tokens OAuth durante las pruebas. |
OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS |
(sin definir) | src/lib/tokenHealthCheck.ts |
Proveedores separados por comas excluidos del barrido proactivo de actualización de tokens (p. ej., codex,openai). Alternativa específica a deshabilitar por completo la comprobación de estado: los proveedores con TTL corto continúan actualizándose, mientras que los proveedores en cascada permanecen únicamente reactivos. |
OMNIROUTE_HIDE_HEALTHCHECK_LOGS |
true |
scripts/dev/run-next-playwright.mjs |
Silencia los mensajes de comprobación de estado en la salida estándar de Playwright. |
OMNIROUTE_PLAYWRIGHT_SKIP_BUILD |
0 |
scripts/dev/run-next-playwright.mjs |
Omite la compilación de producción de Next.js antes de que se inicie Playwright (optimización para CI). |
OMNIROUTE_SKIP_UNINSTALL_HOOK |
0 |
scripts/build/uninstall.mjs |
Omite el hook de desinstalación de OmniRoute (utilizado por CI para mantener node_modules intacto). |
ECOSYSTEM_SERVER_WAIT_MS |
180000 |
scripts/dev/run-ecosystem-tests.mjs |
Tiempo de espera (ms) para que el servidor alcance un estado correcto antes de ejecutar las pruebas de ecosistema/protocolo. |
ELECTRON_SMOKE_URL |
http://127.0.0.1:20128/login |
scripts/dev/smoke-electron-packaged.mjs |
URL en la que el entorno de pruebas de humo de Electron espera que la aplicación empaquetada preste servicio. |
ELECTRON_SMOKE_TIMEOUT_MS |
45000 |
scripts/dev/smoke-electron-packaged.mjs |
Tiempo de espera total (ms) antes de que el entorno de pruebas de humo desista. |
ELECTRON_SMOKE_SETTLE_MS |
2000 |
scripts/dev/smoke-electron-packaged.mjs |
Intervalo de estabilización (ms) después de que se cargue la página. |
ELECTRON_SMOKE_APP_EXECUTABLE |
(automático) | scripts/dev/smoke-electron-packaged.mjs |
Ruta explícita al ejecutable de Electron empaquetado. |
ELECTRON_SMOKE_DATA_DIR |
(tmpdir) | scripts/dev/smoke-electron-packaged.mjs |
Directorio de datos para la ejecución de la prueba de humo de Electron. |
ELECTRON_SMOKE_KEEP_DATA |
0 |
scripts/dev/smoke-electron-packaged.mjs |
Establece 1 para conservar el directorio de datos de la prueba de humo después de la ejecución. |
ELECTRON_SMOKE_STREAM_LOGS |
0 |
scripts/dev/smoke-electron-packaged.mjs |
Establece 1 para transmitir los registros de Electron a la salida estándar durante la ejecución. |
ELECTRON_SMOKE_COLD_RESTART |
0 |
scripts/dev/smoke-electron-packaged.mjs |
#7592: reinicia utilizando el mismo directorio de datos y comprueba que el segundo inicio seleccione el controlador SQLite nativo. |
CLI_DEVIN_BIN |
(búsqueda en PATH) | open-sse/executors/devin-cli.ts |
Reemplaza la ruta del binario de Devin CLI. |
Canal de traducción de la documentación
Sección titulada «Canal de traducción de la documentación»Utilizado por scripts/i18n/run-translation.mjs (el comando npm run i18n:run).
Las cinco variables no están configuradas de forma predeterminada; configúralas en .env únicamente en las máquinas
que deban poder ejecutar el traductor de la documentación.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_TRANSLATION_API_URL |
(sin configurar) | scripts/i18n/run-translation.mjs |
URL base compatible con OpenAI para el backend de traducción. |
OMNIROUTE_TRANSLATION_API_KEY |
(sin configurar) | scripts/i18n/run-translation.mjs |
Token Bearer para el backend de traducción (nunca se registra). |
OMNIROUTE_TRANSLATION_MODEL |
(sin configurar) | scripts/i18n/run-translation.mjs |
Identificador del modelo, p. ej., gpt-4o-mini o cx/gpt-5.4-mini. |
OMNIROUTE_TRANSLATION_TIMEOUT_MS |
60000 |
scripts/i18n/run-translation.mjs |
Tiempo de espera por solicitud, en milisegundos. |
OMNIROUTE_TRANSLATION_CONCURRENCY |
4 |
scripts/i18n/run-translation.mjs |
Solicitudes de traducción paralelas al procesar varios archivos o configuraciones regionales. |
27. Feed de Radar (autoalojamiento)
Sección titulada «27. Feed de Radar (autoalojamiento)»Complemento opcional controlado por la bandera de funcionalidad RADAR_ENABLED (desactivada de forma predeterminada; es una bandera de funcionalidad que se activa mediante Ajustes/DB, no una variable de entorno; consulte
docs/frameworks/RADAR.md).
Las primeras cuatro variables que aparecen a continuación son anulaciones opcionales para un feed autoalojado o bifurcado y para los flujos de claves de colaborador. La quinta, RADAR_ADMIN_URL, es un enlace independiente, sin valor predeterminado, al panel privado de operaciones del propietario. Consulte docs/frameworks/RADAR.md para ver la documentación completa del módulo y su
secuencia integral de activación y configuración guiada.
El lector genérico de anuncios de Inicio/Registro de cambios no se configura mediante una variable de entorno y no depende de la bandera de funcionalidad RADAR_ENABLED. Lee únicamente mediante GET la URL pública de news.json del repositorio, declarada en src/shared/utils/releaseNotes.ts; los ID de descarte permanecen en el almacenamiento local del navegador.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
RADAR_FEED_URL |
https://radar.omniroute.online |
src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts |
URL base compartida por los feeds firmados por separado de catálogo, referidos, ofertas para colaboradores e Intel. Anúlela para apuntar a un servicio autoalojado o bifurcado. |
RADAR_FEED_PUBKEY |
(clave predeterminada fijada) | src/lib/radar/pinnedKeys.ts |
Clave pública Ed25519 (SPKI DER codificada en base64 o PEM) utilizada para verificar las firmas de un feed personalizado. |
RADAR_CONTRIBUTOR_CLAIM_URL |
https://radar.omniroute.online/auth/github |
src/lib/radar/links.ts |
URL que abre el botón «Soy colaborador» del panel (flujo de solicitud de clave de colaborador mediante OAuth de GitHub). |
RADAR_SUPPORTER_PLANS_URL |
https://radar.omniroute.online/planos |
src/lib/radar/links.ts |
URL que abre el botón «Apoyar el proyecto» del panel (página de pagos/planes). |
RADAR_ADMIN_URL |
(sin establecer) | src/lib/radar/links.ts |
Enlace al panel privado de operaciones, exclusivo para el propietario. Se requiere HTTPS, excepto para un reenvío SSH de bucle invertido HTTP; los valores no establecidos o no válidos no crean ningún elemento de navegación. |
Auditoría: variables eliminadas / obsoletas
Sección titulada «Auditoría: variables eliminadas / obsoletas»Las siguientes variables aparecían en versiones anteriores de .env.example, pero no tienen referencias en tiempo de ejecución en el código base actual. Se han eliminado:
| Variable | Motivo |
|---|---|
STORAGE_DRIVER=sqlite |
Ningún archivo fuente la consulta. SQLite es el único controlador compatible, por lo que no es necesario seleccionarlo. |
INSTANCE_NAME=omniroute |
Está presente en documentación y plantillas de entorno antiguas, pero no se utiliza durante la ejecución. Puede volver en una futura función de múltiples instancias. |
SQLITE_MAX_SIZE_MB=2048 |
No se referencia en el código fuente. El tamaño de la base de datos no está limitado artificialmente. |
SQLITE_CLEAN_LEGACY_FILES=true |
No se referencia en el código fuente. Es probable que se haya eliminado la limpieza de archivos heredados. |
CLI_ROO_BIN |
No está registrado en src/shared/services/cliRuntime.ts. |
CLI_KIMI_CODING_BIN |
No está registrado en src/shared/services/cliRuntime.ts (Kimi Coding utiliza OAuth, no un binario de CLI). |
IFLOW_OAUTH_CLIENT_ID / IFLOW_OAUTH_CLIENT_SECRET |
No se referencia en ninguna parte del código fuente. |
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 |
Se eliminaron en v3.8.0. El entorno de ejecución ya no consulta estas variables de entorno; las credenciales proceden del Dashboard, de data/provider-credentials.json o de la base de datos cifrada. |
CURSOR_PROTOBUF_DEBUG |
Se eliminó en v3.8.0. El ejecutor de Cursor utiliza CURSOR_DEBUG / CURSOR_STREAM_DEBUG (consulte §22). |
CLI_COMPAT_KIRO |
Se eliminó en v3.8.0. Kiro está en CLI_COMPAT_OMITTED_PROVIDER_IDS, por lo que su opción de activación no tiene efecto. |
QIANFAN_API_KEY |
Se eliminó junto con otros stubs de claves de API de proveedores no utilizados en v3.8.0. |
Correcciones de valores predeterminados
Sección titulada «Correcciones de valores predeterminados»| Variable | Valor anterior de .env.example |
Valor predeterminado real en el código | Corrección |
|---|---|---|---|
APP_LOG_RETENTION_DAYS |
90 |
7 |
✅ Se eliminó el valor engañoso; se documentó 7 como predeterminado |
CALL_LOG_RETENTION_DAYS |
90 |
7 |
✅ Se eliminó el valor engañoso; se documentó 7 como predeterminado |
Regeneración de la configuración de OpenCode (herramientas ad hoc)
Sección titulada «Regeneración de la configuración de OpenCode (herramientas ad hoc)»Utilizado por scripts/ad-hoc/regen-opencode-config.ts para regenerar un archivo opencode.json
con valores precisos de limit.context y limit.output obtenidos de la instancia de
OmniRoute en ejecución. Ninguno de ellos es necesario para el funcionamiento normal; el script
es únicamente una herramienta para desarrolladores.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_URL |
http://localhost:20128 |
scripts/ad-hoc/regen-opencode-config.ts |
URL base de la instancia de OmniRoute que se consultará para /v1/models. |
OMNIROUTE_KEY |
(sin definir) | scripts/ad-hoc/regen-opencode-config.ts |
Clave de API para autenticarse en el endpoint /v1/models de OmniRoute. Si no está definida, se utiliza OPENCODE_API_KEY. |
OPENCODE_API_KEY |
(sin definir) | scripts/ad-hoc/regen-opencode-config.ts |
Clave de API con formato OpenCode (sk-...) que se escribe en el archivo opencode.json regenerado. Si no está definida, se utiliza OMNIROUTE_KEY. |
Entorno de evaluación sin conexión de la compresión (herramientas ad hoc)
Sección titulada «Entorno de evaluación sin conexión de la compresión (herramientas ad hoc)»Utilizado por scripts/compression-eval/index.ts, la CLI de evaluación de compresión sin conexión.
No es necesario para el funcionamiento normal; se trata únicamente de herramientas para desarrolladores.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_EVAL_CREDENTIALS |
{} (vacío) |
scripts/compression-eval/index.ts |
Credenciales JSON proporcionadas por el operador para el proveedor utilizado por la CLI de evaluación de compresión sin conexión (analizadas con JSON.parse). Déjela sin definir para realizar una ejecución de prueba. |
Sesiones de navegador VNC
Sección titulada «Sesiones de navegador VNC»Utilizadas por src/lib/vncSession/manifest.ts para configurar sesiones de Chromium sin interfaz gráfica basadas en Docker para proveedores de automatización del navegador. Todas son opcionales; a continuación se muestran los valores predeterminados.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
Ruta al binario de Docker utilizado para iniciar contenedores VNC. |
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
Imagen de Docker para el contenedor VNC de Chromium. |
OMNIROUTE_VNC_CHROMIUM_ARGS |
(marcas integradas) | src/lib/vncSession/manifest.ts |
Argumentos adicionales de la CLI de Chromium que se pasan al navegador dentro del contenedor. |
OMNIROUTE_VNC_CONTAINER_VNC_PORT |
3000 |
src/lib/vncSession/manifest.ts |
Puerto VNC dentro del contenedor. |
OMNIROUTE_VNC_CONTAINER_CDP_PORT |
9223 |
src/lib/vncSession/manifest.ts |
Puerto del protocolo Chrome DevTools dentro del contenedor. |
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR |
/config |
src/lib/vncSession/manifest.ts |
Directorio de perfiles dentro del contenedor. |
OMNIROUTE_VNC_PROFILE_DIR |
(sin definir) | src/lib/vncSession/manifest.ts |
Directorio del host para almacenar perfiles persistentes del navegador. |
OMNIROUTE_VNC_IDLE_MS |
600000 |
src/lib/vncSession/manifest.ts |
Tiempo de espera por inactividad (ms) antes de finalizar una sesión VNC. |
OMNIROUTE_VNC_MAX_MS |
1800000 |
src/lib/vncSession/manifest.ts |
Duración máxima de la sesión (ms). |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
Número máximo de sesiones VNC simultáneas. |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
Tiempo de espera hasta que el navegador esté listo (ms). |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
Tiempo de espera para la finalización y limpieza (ms). |
OMNIROUTE_VNC_NETWORK |
omniroute-vnc-browser-login |
src/lib/vncSession/manifest.ts |
Red dedicada de Docker a la que se conecta el contenedor (#12571), fuera del puente predeterminado. |
VIBEPROXY_DATA_DIR |
(sin definir) | open-sse/services/notionThreadSessions.ts |
Directorio para la persistencia de las sesiones de hilos de Notion. |
Autenticación de servicios internos
Sección titulada «Autenticación de servicios internos»| Variable | Valor predeterminado | Descripción |
|---|---|---|
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
– | Token insertado directamente para la autenticación entre servicios del plano de administración. |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
– | Ruta a un archivo que contiene el token del servicio interno (opción preferida en contenedores; reemplaza la variable insertada directamente). |
Estadísticas del proveedor OpenRouter
Sección titulada «Estadísticas del proveedor OpenRouter»| Variable | Valor predeterminado | Descripción |
|---|---|---|
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
Establézcalo en false para omitir la obtención de estadísticas por proveedor de OpenRouter para enriquecer el catálogo. |
OPENROUTER_PROVIDER_STATS_TTL_MS |
3600000 |
TTL de caché (ms) para las estadísticas obtenidas de los proveedores de OpenRouter. |
Vinculación de Redis integrada
Sección titulada «Vinculación de Redis integrada»| Variable | Valor predeterminado | Descripción |
|---|---|---|
REDIS_BIND_HOST |
127.0.0.1 |
Dirección de enlace para el servicio Redis integrado. |
REDIS_PORT |
6379 |
Puerto para el servicio Redis integrado. |
OMNIROUTE_REDIS_BIND_HOST |
– | Anulación específica de OmniRoute para la dirección de enlace de Redis integrado. |
24. Incorporaciones de la versión v3.8.50
Sección titulada «24. Incorporaciones de la versión v3.8.50»Estas opciones se introdujeron después de la instantánea anterior del contrato de entorno.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_CHAT_ADMISSION_QUEUE_MS |
2000 |
src/shared/middleware/chatBodyAdmission.ts |
Tiempo máximo de espera para obtener una plaza de admisión de chat de alto consumo antes de devolver un 503 reintentable; una espera breve y limitada serializa las ráfagas de agentes en lugar de devolver un 503 de inmediato. 0 restablece el rechazo inmediato. |
OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES |
4194304 (4 MB) |
src/shared/middleware/chatBodyAdmission.ts |
Presupuesto de bytes en cola para la espera de admisión: limita el total de bytes de cuerpos almacenados en búfer y retenidos en todo el proceso, de modo que la espera no pueda aumentar el uso del montón (#4380). Las esperas que superen el presupuesto reciben de inmediato un 503 reintentable. |
OMNIROUTE_CHAT_VIRTUAL_TTL_MS |
60000 (60 s) |
src/shared/middleware/chatBodyAdmission.ts |
Operación sin efecto obsoleta desde #10110: los canales de admisión por sesión se eliminaron en favor de un único presupuesto para todo el proceso. Se acepta por compatibilidad de configuración, pero se ignora. |
OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS |
64 |
src/shared/middleware/chatBodyAdmission.ts |
Operación sin efecto obsoleta desde #10110: los canales de admisión por sesión se eliminaron en favor de un único presupuesto para todo el proceso. Se acepta por compatibilidad de configuración, pero se ignora. |
OMNIROUTE_CHAT_VIRTUAL_LANES |
0 (desactivado) |
open-sse/services/admission/runtime.ts |
Canales virtuales adaptativos de admisión en tiempo de ejecución (#9654): interruptor principal de la compuerta adaptativa por inquilino (sistema 2). Es distinto de las variables obsoletas de canales por conexión anteriores (TTL_MS / MAX_SESSIONS, sin efecto desde #10110). Es una marca de funcionalidad del panel con el mismo nombre; la variable de entorno prevalece sobre la configuración del panel y requiere reiniciar. |
OMNIROUTE_RUNNOW_TIMEOUT_MS |
30000 |
src/app/api/jobs/[id]/run-now/route.ts |
Limita cuánto tiempo espera una llamada de ejecución inmediata a que termine un trabajo en curso antes de iniciar la ejecución en cola. |
ADOBE_FIREFLY_BROWSER_REFRESH |
habilitado | open-sse/services/adobeFireflySession.ts |
Mantiene actualizados el estado de IMS y el estado de riesgo del navegador mediante sesiones de Chrome CDP con ámbito de cuenta; establezca 0 para deshabilitarlo. |
ADOBE_FIREFLY_SESSION_DISK |
habilitado | open-sse/services/adobeFireflySession.ts |
Conserva las sesiones reparadas de Adobe en DATA_DIR; establezca 0 para mantener el estado solo en memoria. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
12000 |
open-sse/services/adobeFireflySession.ts |
Intervalo mínimo entre envíos de generación de Adobe Firefly. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
15000 |
open-sse/services/adobeFireflySession.ts |
Periodo de inactividad adicional después de cada tercer envío correcto a Adobe. |
ADOBE_FIREFLY_CHROME_HEADLESS |
0 |
open-sse/services/adobeFireflyBrowserLogin.ts |
Modo sin interfaz real solo para depuración; Adobe colligo suele rechazar la sesión de riesgo resultante. |
CHROME_PATH |
detección automática | open-sse/executors/cloudflare-playground.ts, open-sse/executors/chatgpt-web-codex.ts |
Ejecutable absoluto opcional de Chrome utilizado por los ejecutores controlados mediante navegador cuando la detección automática de la plataforma no es suficiente. |
TELEGRAM_BOT_TOKEN |
(sin establecer) | src/lib/telegram/config.ts |
Token de BotFather que habilita el webhook entrante y firma el initData de la Mini App. |
TELEGRAM_WEBHOOK_SECRET |
(sin establecer) | src/lib/telegram/config.ts |
Secreto compartido registrado mediante setWebhook y verificado con el encabezado X-Telegram-Bot-Api-Secret-Token en cada entrega de webhook. Es obligatorio para la ruta del webhook; si no está establecido, las entregas de webhook se rechazan con un 503. |
TELEGRAM_DEFAULT_MODEL |
auto/chat |
src/lib/telegram/chatProxy.ts |
Modelo utilizado para las respuestas de chat de Telegram. |
TELEGRAM_BOT_API_BASE |
https://api.telegram.org |
src/lib/telegram/config.ts |
Anulación de la URL base de la API del bot para proxies o servidores de la API del bot autoalojados. |
TELEGRAM_WEBHOOK_TIMEOUT_MS |
60000 |
src/lib/telegram/config.ts |
Tiempo de espera en milisegundos para las llamadas salientes a la API del bot. |
OMNIROUTE_OPTIONAL_PACK_TAR |
1 (habilitado) |
scripts/build/optionalPackStaging.mjs |
Establezca 0 para omitir la generación de archivos .tar.gz al preparar paquetes opcionales de ML/navegador para el árbol independiente de Electron (los directorios de paquetes y optional-packs.index.json se siguen generando). El flujo de trabajo de publicación de escritorio lo utiliza para reducir el tamaño de carga de los artefactos. |
ChatGPT Web (Codex)
Sección titulada «ChatGPT Web (Codex)»Valores predeterminados globales para el navegador sin interfaz y el túnel de herramientas saliente. Los valores de conexión establecidos en el panel tienen prioridad.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
CHATGPT_WEB_CODEX_CHROME_PATH |
(detección automática) | open-sse/executors/chatgpt-web-codex.ts |
Ruta explícita de Chrome/Chromium para la ejecución mediante npm, systemd y PM2. |
CHROME_PATH |
(detección automática) | open-sse/executors/chatgpt-web-codex.ts |
Alternativa compartida para especificar una ruta explícita de Chrome/Chromium. |
CHATGPT_WEB_CODEX_CDP_URL |
(sin establecer) | open-sse/executors/chatgpt-web-codex.ts |
Endpoint de CDP interno; Docker utiliza el sidecar en el puerto 9223. |
CDP_PROXY_TOKEN |
(sin establecer) | docker/chatgpt-web-codex-browser/cdp-proxy.mjs |
Si se establece, cada solicitud al sidecar del proxy de CDP debe incluir este valor en el encabezado X-Omni-Cdp-Token (#13679). Sin un valor, el proxy reenvía las solicitudes sin autenticación; en ese caso, la única protección es el aislamiento de red de la red de Compose chatgpt-web-codex-net. Genérelo con openssl rand -hex 32. |
CHATGPT_WEB_CODEX_TUNNEL_ID |
(sin establecer) | open-sse/executors/chatgpt-web-codex.ts |
ID global del túnel de OpenAI para las rondas locales de herramientas de Codex. |
CHATGPT_WEB_CODEX_RUNTIME_KEY |
(sin establecer) | open-sse/executors/chatgpt-web-codex.ts |
Clave de runtime global del túnel; nunca debe mostrarse en los registros. |
CHATGPT_WEB_CODEX_CONNECTOR_NAME |
OmniRoute Codex v2 |
open-sse/executors/chatgpt-web-codex.ts |
Nombre exacto del conector personalizado de ChatGPT recién creado para el puente MCP. |
CODEX_CHATGPT_WEB_HOME |
<DATA_DIR>/chatgpt-web-codex |
open-sse/vendor/codex-chatgpt-web/config.ts |
Directorio específico para el estado del navegador, del bróker y del túnel. |
CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS |
0 |
open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts |
Cuando se establece en 1, se capturan imágenes de diagnóstico del navegador en cada punto de control. |
CODEX_CHATGPT_WEB_LAUNCHER |
(sin establecer) | open-sse/vendor/codex-chatgpt-web/config.ts |
Ruta absoluta opcional a un binario de launcher persistente. |
CODEX_CHATGPT_WEB_BUN |
(detección automática) | open-sse/vendor/codex-chatgpt-web/config.ts |
Ruta absoluta opcional al binario del runtime de Bun. |
CODEX_WEB_GPT_BUN |
(sin establecer) | open-sse/vendor/codex-chatgpt-web/config.ts |
Alternativa heredada para CODEX_CHATGPT_WEB_BUN; las configuraciones nuevas utilizan el nombre canónico. |
Puente de OmniConductor
Sección titulada «Puente de OmniConductor»Consumidor SSE de larga duración que replica las tareas del hub de OmniConductor en el TaskManager A2A local (src/lib/conductor/). Activación opcional: el puente solo se inicia cuando se establece CONDUCTOR_HUB_URL. Solo del lado del servidor: el token del hub nunca debe llegar al navegador.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
CONDUCTOR_HUB_URL |
(vacío) | src/lib/conductor/boot.ts |
URL base del hub de OmniConductor (p. ej., http://127.0.0.1:7910). Sin establecer = puente deshabilitado. |
CONDUCTOR_HUB_TOKEN |
(vacío) | src/lib/conductor/boot.ts |
Credencial del hub para el flujo SSE; emita un par de tipo spokesperson en el hub (POST /v1/peers, administración). |
CONDUCTOR_ORCHESTRATOR_TOKEN |
(vacío) | src/lib/conductor/hubProxy.ts |
Credencial para la delegación de tareas entrantes de A2A al hub (POST /v1/tasks); recurre a CONDUCTOR_HUB_TOKEN cuando no está establecida. |
CONDUCTOR_SPOKESPERSON_URL |
http://127.0.0.1:7920 |
src/lib/conductor/faroProxy.ts |
URL base del servicio de portavoz (Faro) detrás del proxy de chat del panel (/api/conductor/ask). |
Programación con reconocimiento de cuotas
Sección titulada «Programación con reconocimiento de cuotas»Utilizada por open-sse/services/combo.ts y src/lib/quota/quotaScheduler.ts para comprobar el presupuesto de tokens antes de la solicitud. Activación opcional: el comportamiento de enrutamiento predeterminado no cambia cuando no está configurada.
| Variable | Valor predeterminado | Archivo de origen | Descripción |
|---|---|---|---|
OMNIROUTE_QUOTA_AWARE_ROUTING |
0 |
open-sse/services/combo.ts |
Cuando es 1, omite las conexiones cuyo presupuesto de tokens por ventana (rateLimitOverrides.tpm, tabla provider_quota_state) no puede cubrir el coste estimado de la solicitud antes del envío. Permite continuar en caso de error cuando no hay ningún presupuesto configurado. |
HagiCode
HagiCode es un espacio de trabajo de programación con agentes, flujos estructurados, ejecución multiagente y vistas de Hero Dungeon.
Convierte ideas en software útil con un flujo de trabajo con agentes más inteligente, rápido y ameno.

- SmartLos flujos estructurados convierten la intención en un itinerario ejecutable desde la idea hasta la entrega.
- EfficientLos flujos multiagente permiten avanzar en paralelo con la investigación, implementación y revisión.
- FunHero Dungeon hace que las largas sesiones de programación sean visuales y colaborativas.