* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
642 KiB
Environment Variables Reference (Português (Portugal))
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Referência completa de todas as variáveis de ambiente reconhecidas pelo OmniRoute. Para obter um modelo de início rápido, consulte
.env.example.
Important
Todas as variáveis documentadas aqui também têm de constar em
.env.example, e todas as variáveis em.env.exampletêm de constar aqui.npm run check:env-doc-syncvalida esta correspondência em cada commit e na CI. Para omitir intencionalmente uma variável, adicione-a à lista de permissões emscripts/check/check-env-doc-sync.mjs.
Índice
- 1. Segredos obrigatórios
- 2. Armazenamento e base de dados
- 3. Rede e portas
- 4. Segurança e autenticação
- 5. Sanitização de entradas e proteção de PII
- 6. Políticas de ferramentas e encaminhamento
- 7. URLs e sincronização com a nuvem
- 8. Proxy de saída
- 9. Integração de ferramentas de CLI
- 10. Integrações internas de agentes e MCP
- 11. Credenciais de fornecedores OAuth
- 12. Substituições de User-Agent dos fornecedores
- 13. Compatibilidade de impressão digital da CLI
- 14. Fornecedores de chaves de API
- 15. Definições de tempo limite
- 16. Registo
- 17. Otimização da memória
- 18. Sincronização de preços
- 19. Sincronização de modelos (desenvolvimento)
- 20. Definições específicas dos fornecedores
- 21. Estado do proxy
- 22. Depuração
- 23. Integração com o GitHub
- 24. Sandbox de competências (v3.8.0+)
- 27. Feed do Radar (alojamento próprio)
- Cenários de implementação
- Auditoria: variáveis removidas/inativas
1. Segredos obrigatórios
Estes têm de ser definidos antes da primeira execução. Sem eles, a aplicação recusará iniciar ou funcionará com predefinições inseguras.
| Variável | Obrigatória | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|---|
JWT_SECRET |
Sim | (nenhuma) | src/lib/auth |
Assina/verifica todos os cookies de sessão do painel de controlo (JWT). Gere com openssl rand -base64 48. |
API_KEY_SECRET |
Sim | (nenhuma) | src/lib/db/apiKeys.ts |
Chave de encriptação AES para os valores das chaves de API armazenados no SQLite. Gere com openssl rand -hex 32. |
INITIAL_PASSWORD |
Sim | CHANGEME |
Script de inicialização | Define a palavra-passe inicial de administrador do painel de controlo (corresponde à predefinição de .env.example — mantida obviamente insegura para forçar uma alteração). Altere antes da primeira utilização. Após iniciar sessão, altere-a através de Painel de controlo → Definições → Segurança. |
OMNIROUTE_WS_BRIDGE_SECRET |
Sim (produção) | (não definida) | src/app/api/internal/codex-responses-ws/route.ts |
Segredo partilhado para a ponte WebSocket interna do Codex Responses. Autentica os pedidos da ponte entre o relay WS do Electron/browser e o OmniRoute. ⚠️ OBRIGATÓRIO em produção — quando não está definido, todos os pedidos da ponte WS são rejeitados. Gere com openssl rand -base64 32. |
OMNIROUTE_SW_BUILD_ID |
Não | (SHA do git) | next.config.mjs, scripts/build/assembleStandalone.mjs |
ID explícito de invalidação da cache do service worker para a shell da PWA (#11779); primeiro na cadeia de resolução. |
SOURCE_VERSION |
Não | (não definida) | next.config.mjs, scripts/build/assembleStandalone.mjs |
Segundo na cadeia — definido pelos sistemas de compilação PaaS (por exemplo, ao estilo do Heroku) como o commit implementado. |
NEXT_PUBLIC_SW_BUILD_ID |
Não | (derivada) | src/shared/components/PwaRegister.tsx |
Valor público em tempo de compilação que o cliente utiliza para registar /sw.js?v=…; derivado dos dois valores acima e, em seguida, do SHA do git. |
OMNIROUTE_PEER_STAMP_TOKEN |
Não (automática) | (automática por arranque) | src/server/authz/policies/management.ts |
Segredo por processo que comprova que a marca de IP do peer fidedigno veio do próprio servidor HTTP do OmniRoute (scripts/dev/peer-stamp.mjs). O middleware authz só confia na localidade do pedido (controlo por loopback/LAN das rotas LOCAL_ONLY) quando a marca inclui este token. Gerado automaticamente em cada arranque — deixe-o por definir; defina-o apenas para configurações multiprocesso que tenham de partilhar a marca. |
Comandos de geração
# Gerar os quatro segredos de uma só 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 submeta ficheiros
.envcom segredos reais para o controlo de versões. O.gitignorejá exclui.env, mas confirme antes de enviar.
2. Armazenamento e Base de Dados
O OmniRoute utiliza SQLite (através de better-sqlite3) para toda a persistência. Estas variáveis controlam a localização, a encriptação e o ciclo de vida dos dados.
| Variável | Predefinição | Ficheiro de Origem | Descrição |
|---|---|---|---|
DATA_DIR |
~/.omniroute/ |
src/lib/db/core.ts |
Diretório raiz da base de dados SQLite, das cópias de segurança e dos ficheiros de dados. Substitua-o para volumes Docker ou caminhos personalizados. |
OMNIROUTE_ALLOW_DEFAULT_DATA_DIR |
(não definida) | src/lib/dataPaths.ts |
Mecanismo de exceção para a proteção de DATA_DIR em testes/avaliações (#10428). Os testes e as sondas de avaliação/impressão do Node (-e/--eval/-p/--print, incluindo as formas --eval=/--print=) sem DATA_DIR são redirecionados para um diretório temporário descartável, para que não possam abrir a base de dados real do operador; defina como 1 para voltar a utilizar o diretório real. |
OMNIROUTE_BUILD_SHA |
(não definida) | src/lib/monitoring/buildSha.ts |
SHA do Git do artefacto em execução. Registado por npm run build:release; pode ser injetado em contentores distribuídos sem o sentinela dist/BUILD_SHA. Exposto como system.buildSha em /api/monitoring/health. |
OMNIROUTE_RELEASE_REF |
origin/main |
scripts/build/buildProvenance.ts |
Referência relativamente à qual o mecanismo de proveniência do empacotamento do artefacto verifica o SHA da compilação (#10427). |
OMNIROUTE_ALLOW_CANARY_BUILD |
(não definida) | scripts/build/buildProvenance.ts |
Defina como 1 para permitir o empacotamento de uma compilação cujo SHA não se encontra na linha de lançamento, registando-a como uma versão canário deliberada em vez de fazer falhar a validação (#10427). |
OMNIROUTE_SMOKE_API_KEY |
(não definida) | scripts/ops/deploy-canary.mjs |
Chave de API para a sonda de teste rápido da implementação canário, enviada como Authorization: Bearer para /v1/chat/completions. Utilizada apenas pelo script de implementação (#10429), nunca pelo servidor. Não está relacionada com as variáveis OMNIROUTE_SMOKE_* da infraestrutura opcional de testes rápidos da CLI (RUN_CLI_SMOKE=1, OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS em tests/integration/upstream-cli-smoke.int.test.ts) — consulte Integrações da CLI → Verificação rápida real. |
OMNIROUTE_BUILDING |
(não definida) | src/lib/buildPhase.ts |
Sinal da fase de compilação (#10060): definido como 1 por scripts/build/build-next-isolated.mjs e herdado por todos os processos de trabalho de compilação iniciados, para que a camada da base de dados devolva uma implementação simulada sem operações em vez de carregar o complemento nativo better-sqlite3 (que termina abruptamente o processo de trabalho ao sair). Nunca é definido para o servidor em execução. |
OMNIROUTE_SKIP_NATIVE_DEP_CHECK |
0 |
scripts/check/check-native-deps.mjs |
Defina como 1 para ignorar a verificação prévia opcional de dependências nativas em árvores de dependências fornecidas externamente menos comuns. Isto não permite compilar quando falta uma dependência; utilize apenas quando as dependências nativas são fornecidas por um mecanismo externo. |
OMNIROUTE_DATA_DIR |
(não definida) | open-sse/executors/promptql/threadSticky.ts |
Alias de recurso para DATA_DIR, verificado apenas quando DATA_DIR não está definida. Utilizado para localizar a cache de sessões persistentes por thread do executor PromptQL no disco (<dir>/promptql-thread-sessions.json); se nenhuma das variáveis estiver definida, a cache permanece apenas em memória (não é persistida entre reinícios). |
OMNIROUTE_PLUGINS_DIR |
(não definida) | src/lib/plugins/scanner.ts |
Diretório que o analisador de plugins em tempo de execução lê — e raiz na qual o gestor de plugins efetua as instalações — substituindo a predefinição derivada do diretório pessoal (#11827). Aponte-o para a árvore de plugins montada através de bind mount no Docker/K8s, em vez de mover HOME apenas para relocalizar o caminho de análise (HOME também rege todos os outros comportamentos relativos ao diretório pessoal). Não definida = ~/.omniroute/plugins, ou /tmp/.omniroute/plugins quando o processo não exporta qualquer diretório pessoal — evitando assim a não deteção silenciosa que esta variável elimina. O diretório resolvido é registado uma vez no arranque como scanner.dir_resolved, juntamente com a entrada selecionada. Apenas no lado do servidor: os plugins de comandos da CLI mantêm o seu próprio OMNIROUTE_PLUGIN_PATH (secção 9). |
STORAGE_ENCRYPTION_KEY |
(vazio = desativado) | src/lib/db/encryption.ts |
Chave AES para a encriptação integral da base de dados SQLite em repouso. Gere-a com openssl rand -hex 32. |
STORAGE_ENCRYPTION_KEY_VERSION |
v1 |
scripts/build/bootstrap-env.mjs, electron/main.js |
Etiqueta de versão da chave de encriptação. Incremente-a ao efetuar a rotação da chave para permitir a desencriptação de cópias de segurança antigas. |
DISABLE_SQLITE_AUTO_BACKUP |
false |
src/lib/db/backup.ts |
Quando definido como true, ignora as cópias de segurança de rotina/anteriores à escrita do ficheiro SQLite (guardar/limpar preços de models.dev, escritas nas definições). As cópias de segurança manuais e anteriores ao restauro continuam a ser executadas. Não desativa o instantâneo de segurança durável obrigatório do executor de migrações nem a proteção contra migrações em massa para uma BD persistente existente. As cópias de segurança não manuais são limitadas a, no máximo, uma a cada 60 minutos. Em Definições → Armazenamento no painel, a cópia de segurança automática de rotina pode ser desativada de forma independente. |
OMNIROUTE_CRYPT_KEY |
(não definido) | src/lib/db/encryption.ts |
Alias legado de STORAGE_ENCRYPTION_KEY. Aceite como alternativa quando a variável principal não está presente. |
OMNIROUTE_API_KEY_BASE64 |
(não definido) | src/lib/db/encryption.ts |
Alias legado (formato codificado em Base64) aceite como alternativa. É descodificado automaticamente antes da utilização. |
OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS |
(não definido) | src/lib/db/core.ts |
Substitui o intervalo da verificação periódica do estado do SQLite (ms). Quando não está definido, os valores predefinidos são derivados de NODE_ENV. |
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS |
21600000 (6 h) |
src/lib/db/walMaintenance.ts |
Substitui o intervalo periódico de wal_checkpoint(TRUNCATE) (ms). O checkpoint automático nunca reduz o próprio ficheiro WAL, e um servidor de execução prolongada nunca fecha a respetiva BD. 0 desativa esta funcionalidade. |
OMNIROUTE_WAL_PASSIVE_INTERVAL_MS |
300000 (5 min) |
src/lib/db/walMaintenance.ts |
Substitui o intervalo frequente de wal_checkpoint(PASSIVE) (ms). Mantém reduzido o número de tramas WAL pendentes, para que o TRUNCATE periódico nunca copie no thread principal um volume acumulado de vários GB. 0 desativa esta funcionalidade. |
OMNIROUTE_WAL_GUARD_MAX_MB |
256 |
src/lib/db/walMaintenance.ts |
Quando uma execução PASSIVE deteta que o ficheiro WAL excede este tamanho, muda imediatamente para wal_checkpoint(TRUNCATE), em vez de aguardar pela execução de baixa frequência. |
OMNIROUTE_PRESSURE_SELF_RESTART |
false |
open-sse/utils/resourcePressure.ts |
Defina como 1/true/yes/on para terminar o processo após se manter uma pressão crítica sobre os recursos durante OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS, permitindo que um supervisor (systemd Restart=always, política de reinício do Docker) reponha um processo limpo, em vez de devolver respostas 503 indefinidamente. |
OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS |
120000 (2 min) |
open-sse/utils/resourcePressure.ts |
Período durante o qual a pressão crítica deve persistir antes de ser acionada a saída para reinício automático. |
OMNIROUTE_SQLJS_WASM_PATH |
(deteção automática) | src/lib/db/adapters/sqljsAdapter.ts |
Caminho explícito (absoluto ou relativo ao cwd) para sql-wasm.wasm ao utilizar o adaptador alternativo WASM sql.js. Quando não está definido, é detetado automaticamente através das dependências do pacote e das disposições candidatas. |
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS |
21600000 (6 h) |
src/lib/db/core.ts |
Substitui o intervalo periódico de wal_checkpoint(TRUNCATE) (ms). O checkpoint automático nunca reduz o próprio ficheiro WAL, e um servidor de execução prolongada nunca fecha a respetiva BD. 0 desativa esta funcionalidade. |
OMNIROUTE_BATCH_RETENTION_DAYS |
30 |
src/lib/db/cleanup.ts |
Número de dias durante os quais os checkpoints, os ficheiros de entrada/saída/erro referenciados e a linha de uma tarefa terminal (concluída/com falha/cancelada/expirada) da Batch API são conservados pela limpeza automática antes da eliminação. Só produz efeitos depois de BATCH_AND_FILE_AUTO_CLEANUP_ENABLED ser ativado; corresponde ao período de retenção dos resultados da Batch API da própria OpenAI. Não afeta a rota DELETE /api/v1/batches/delete-completed acionada pelo operador, que, por conceção, permanece incondicional (sem filtro de antiguidade). |
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED |
false |
src/lib/db/cleanup.ts |
Quando definido como true, permite que a limpeza automática elimine tarefas terminais da Batch API (e os respetivos pontos de controlo) que tenham ultrapassado OMNIROUTE_BATCH_RETENTION_DAYS e limpe o conteúdo BLOB dos ficheiros carregados que tenham ultrapassado o respetivo expires_at. Desativado por predefinição: todas as instalações existentes mantêm estes dados exatamente como antes até que um operador opte pela ativação. É também um sinalizador de funcionalidade editável no painel — consulte docs/reference/FEATURE_FLAGS.md → Runtime. |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts, src/lib/db/healthCheck.ts |
Defina como 1 para ignorar por completo a verificação do estado da BD durante o arranque. Útil para tarefas de curta duração e testes de integração. |
OMNIROUTE_FORCE_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts |
Defina como 1 para forçar a ativação do ciclo de verificação do estado da BD, mesmo quando seria normalmente ignorado (por exemplo, em tarefas de curta duração). |
OMNIROUTE_SKIP_POSTINSTALL |
0 |
scripts/postinstall.mjs |
Defina como 1 para ignorar o aquecimento do runtime nativo durante npm install. Útil em instalações de CI/sem interface, nas quais o sqlite já está compilado. |
OMNIROUTE_MIGRATIONS_DIR |
(deteção automática) | src/lib/db/migrationRunner.ts |
Substitui o diretório analisado pelo executor de migrações. Útil ao distribuir migrações incluídas em compilações personalizadas. |
OMNIROUTE_EXTRA_MIGRATIONS_DIRS |
(não definido) | src/lib/db/migrationRunner/extraDirs.ts |
Diretórios de migração adicionais, sob a forma de entradas namespace=dir separadas pelo delimitador de caminhos da plataforma (por exemplo, ee=/opt/app/enterprise/db/migrations). Os ficheiros aí encontrados são registados como <namespace>-<number>, para que uma distribuição que inclua as suas próprias migrações nunca colida com os intervalos numéricos do projeto de origem. Uma entrada malformada, um espaço de nomes inválido ou um diretório inexistente provoca um erro durante o arranque, em vez de ignorar silenciosamente o esquema. |
OMNIROUTE_MAX_PENDING_MIGRATIONS |
50 |
src/lib/db/migrationRunner.ts |
Limite de segurança para um número elevado de migrações pendentes (#3416). O arranque é interrompido se existirem mais migrações pendentes do que este valor numa BD existente (protege contra uma tabela de controlo apagada). Aumente-o para restaurar uma cópia de segurança mais antiga; defina como 0 para desativar a verificação. |
OMNIROUTE_INSTALL_UPGRADE_WORKDIR |
(<repo>/.install-upgrade) |
scripts/check/check-install-upgrade.mjs |
Diretório de trabalho para a barreira de lançamento check:install-upgrade. Requer aproximadamente 12 GB (duas árvores de instalação de ~3 GB mais o ficheiro tar), pelo que não deve ser executada num tmpfs pequeno — no executor autoalojado, /tmp é um tmpfs de 12 GB suportado por RAM e a barreira esgotou-o, truncando o pacote. |
OMNIROUTE_SPEND_FLUSH_INTERVAL_MS |
(predefinição no código) | src/lib/spend/batchWriter.ts |
Intervalo de descarga (ms) para o gravador de despesas/custos em lote. Valores mais baixos reduzem a agregação de escritas; valores mais altos reduzem a contenção na BD. |
OMNIROUTE_SPEND_MAX_BUFFER_SIZE |
(predefinição no código) | src/lib/spend/batchWriter.ts |
Número máximo de entradas de despesas em memória intermédia antes de uma descarga forçada. Aumente-o em implementações com QPS elevado; reduza-o quando limitar a utilização de memória for mais importante. |
OMNIROUTE_PROXY_FETCH_DEBUG |
(não definido) | open-sse/utils/proxyFetch.ts |
Defina como "true" para emitir registos de depuração [ProxyFetch] no caminho de reencaminhamento da Vercel. Desativado por predefinição para evitar a exposição de informações de encaminhamento. |
PROXY_LOG_INCLUDE_IPS |
false |
src/lib/proxyLogger.ts |
Defina como "true" ou "1" para incluir os IPs do cliente/de saída e o prefixo da conta na linha detalhada [ProxyEgress] do registo do processo. Mantém-se DESATIVADO por predefinição para que o registo do processo não exponha IPs nem o prefixo da conta. |
OMNIROUTE_DEBUG |
(não definido) | bin/cli/commands/quota.mjs |
Defina como 1 para imprimir no stderr diagnósticos de temporização por pedido ([omniroute] GET <path> completed in Nms) a partir dos comandos de quota da CLI. |
OMNIROUTE_HEALTHCHECK_PATH |
(automático) | scripts/dev/healthcheck.mjs |
Caminho explícito sondado pela verificação do estado de funcionamento do contentor. Quando não está definido, a sonda deriva-o de OMNIROUTE_BASE_PATH; defini-lo volta a ativar o endpoint de monitorização aprofundada. |
OMNIROUTE_DEBUG_COMPLETION |
(não definido) | bin/cli/commands/completion.mjs |
Defina como qualquer valor não vazio para emitir diagnósticos [omniroute completion] a partir dos caminhos da cache de conclusão da shell da CLI (leitura/atualização/escrita). Desativado por predefinição — essas caches falham silenciosamente para que uma cache em falta/danificada nunca impeça a conclusão com a tecla Tab. |
BATCH_RETRY_DURATION_MS |
86400000 (24 h) |
open-sse/services/batchProcessor.ts |
Período máximo de novas tentativas para itens individuais do lote (ms). Os itens que excedam esta duração são marcados como falhados. |
BATCH_BACKOFF_BASE_MS |
5000 |
open-sse/services/batchProcessor.ts |
Atraso base (ms) para o recuo exponencial nas novas tentativas de itens do lote. |
BATCH_BACKOFF_MAX_MS |
3600000 (1 h) |
open-sse/services/batchProcessor.ts |
Limite máximo (ms) para o recuo exponencial entre novas tentativas de itens do lote. |
BATCH_MAX_CONCURRENT |
1 |
open-sse/services/batchProcessor.ts |
Número máximo de lotes processados em simultâneo. Aumente-o para melhorar o débito; mantenha-o baixo para evitar picos de pedidos que excedam os limites de taxa. |
Important
Antes de alterar uma base de dados persistente existente, o executor de migrações publica um instantâneo completo, endereçado pelo conteúdo, em
DATA_DIR/db_backups/. A publicação requer um sistema de ficheiros que suporte ligações físicas sem substituição no mesmo sistema de ficheiros, bem como sincronização durável de ficheiros. Os sistemas POSIX também requerem a sincronização de diretórios; no Windows, o Node pode rejeitar identificadores de diretório, pelo que o OmniRoute descarrega os dados do ficheiro publicado e trata a sincronização da entrada de diretório como uma operação de melhor esforço. Se oDATA_DIRmontado não puder fornecer essas garantias, o arranque falha de forma segura antes de aplicar uma migração. MovaDATA_DIRpara um volume que suporte essas primitivas; não utilizeDISABLE_SQLITE_AUTO_BACKUPpara contornar a segurança da migração.
Cenários
| Cenário | Configuração |
|---|---|
| Desenvolvimento local | Mantenha todos os valores predefinidos. A BD encontra-se em ~/.omniroute/omniroute.db. |
| Docker | DATA_DIR=/data + monte um volume em /data. |
| Encriptação em repouso | Defina STORAGE_ENCRYPTION_KEY + mantenha cópias de segurança da chave! Perdê-la = perder dados. |
| CI/Testes | DATA_DIR=/tmp/omniroute-test — efémero, sem necessidade de encriptação. |
3. Rede e Portas
| Variável | Predefinição | Ficheiro de Origem | Descrição |
|---|---|---|---|
PORT |
20128 |
src/lib/runtime/ports.ts |
Porta principal para a IU do Painel e os endpoints da API (modo de porta única). |
OMNIROUTE_BASE_PATH |
(vazio = raiz) | next.config.mjs, scripts/docker/ensure-docker-base-path.mjs |
Subcaminho do URL para disponibilizar o OmniRoute através de um proxy inverso (define o basePath do Next.js; os redirecionamentos de autenticação têm em conta o basePath). Por exemplo, /omniroute. No Docker, o valor é incorporado durante o docker build (ARG OMNIROUTE_BASE_PATH); as imagens pré-compiladas para a raiz podem aplicar um valor diferente em tempo de execução, uma única vez no arranque do contentor, antes de o Next.js iniciar. Defina NEXT_PUBLIC_BASE_URL como a origem pública, incluindo o mesmo subcaminho. |
NEXT_PUBLIC_OMNIROUTE_BASE_PATH |
(vazio = raiz) | src/shared/hooks/useDisplayBaseUrl.ts |
Cópia de OMNIROUTE_BASE_PATH visível no navegador, incorporada durante a compilação para que a apresentação do endpoint no painel mostre https://host/omniroute/v1 em vez de https://host/v1. Quando não está definida, recorre a OMNIROUTE_BASE_PATH. Volte a compilar após a alteração (o basePath do Next é definido durante a compilação). |
DASHBOARD_ALLOW_EMBED |
(não definida = nunca enquadrável) | next.config.mjs, scripts/build/dashboardEmbed.mjs |
Ativa explicitamente a incorporação das páginas HTML num iframe. Quando não está definida, todas as rotas incluem frame-ancestors 'none' + X-Frame-Options: DENY. Defina como vscode para disponibilizar as páginas (painel, início de sessão, documentação e página inicial) com frame-ancestors 'self' vscode-webview: e sem X-Frame-Options, permitindo que o Simple Browser do VS Code as apresente (modo dashboardOpen: "editor" do OmniCopilot). A superfície da API (/api, /v1, /v1beta, /a2a, /healthz, aliases ao nível da raiz) mantém os cabeçalhos restritivos em ambos os casos. Apenas vscode é reconhecido — 1/true não ativa esta opção. Em tempo de compilação: volte a compilar após a alteração (docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode para imagens; defini-la numa instalação pré-compilada não produz qualquer efeito). |
API_PORT |
(não definida) | src/lib/runtime/ports.ts |
Quando definida, disponibiliza a API de proxy /v1/* nesta porta separada. |
API_HOST |
0.0.0.0 |
src/lib/runtime/ports.ts |
Endereço de escuta da porta da API. |
DASHBOARD_PORT |
(não definida) | src/lib/runtime/ports.ts |
Quando definida, disponibiliza a IU do Painel nesta porta separada. |
OMNI_MAX_CONCURRENT_CONNECTIONS |
0 (desativado) |
src/sse/utils/backpressure.ts |
Limita as ligações de chat simultâneas em curso; os pedidos que excedam o limite recebem 503 com Retry-After. Um número inteiro positivo ativa a proteção; um valor não definido ou 0 desativa-a. |
OMNIROUTE_INSTANCE_ID |
(não definida) | src/shared/resilience/peerRouting.ts |
ID estável e exclusivo deste gateway ao encadear instâncias do OmniRoute. Ativa verificações de ciclos de encaminhamento entre pares nos pedidos recebidos. Caracteres permitidos: letras, algarismos, ., _, : e -; máximo de 64 caracteres. |
OMNIROUTE_PEER_URLS |
(não definido) | src/shared/resilience/peerRouting.ts, open-sse/executors/base.ts |
URLs base do OmniRoute, separadas por vírgulas, que podem receber X-OmniRoute-Peer-Trace. Apenas os URLs upstream explicitamente incluídos na lista de permissões recebem metadados de pares; todos os outros fornecedores permanecem inalterados. |
OMNIROUTE_PEER_MAX_HOPS |
4 |
src/shared/resilience/peerRouting.ts |
Número máximo de instâncias do OmniRoute anteriormente visitadas aceite num pedido encadeado (1-32). Instâncias repetidas ou um limite esgotado devolvem HTTP 508 Loop Detected. |
PROD_DASHBOARD_PORT |
20130 |
docker-compose.prod.yml |
Porta publicada no anfitrião para o Painel no modo de produção do Docker. |
PROD_API_PORT |
20131 |
docker-compose.prod.yml |
Porta publicada no anfitrião para a API no modo de produção do Docker. |
OMNIROUTE_PORT |
(não definido) | src/lib/runtime/ports.ts |
Tem precedência sobre PORT quando é executado no Electron ou noutros wrappers. |
LIVE_WS_PORT |
20129 |
src/server/ws/liveServer.ts |
Porta do servidor WebSocket de monitorização em tempo real. |
LIVE_WS_HOST |
127.0.0.1 |
src/server/ws/liveServer.ts |
Endereço de escuta do servidor WebSocket em tempo real. Defina como 0.0.0.0 para o expor na LAN (configure também LIVE_WS_ALLOWED_ORIGINS). |
LIVE_WS_ALLOWED_ORIGINS |
(não definido) | src/server/ws/liveServer.ts |
Origens adicionais, separadas por vírgulas, autorizadas a abrir uma ligação WebSocket em tempo real. As origens de loopback do painel já são permitidas por predefinição. |
LIVE_WS_ALLOWED_HOSTS |
(não definido) | src/server/ws/liveServerAllowList.ts |
Nomes de anfitrião adicionais, separados por vírgulas, permitidos para origens WebSocket em tempo real. Ao contrário de LIVE_WS_ALLOWED_ORIGINS (URLs de origem completos), corresponde apenas à parte do anfitrião — útil para configurações de LAN/Tailscale. |
NEXT_PUBLIC_LIVE_WS_PUBLIC_URL |
(não definido) | src/hooks/useLiveDashboard.ts |
URL público do WebSocket do painel em tempo real (no lado do browser). Defina-o quando colocar o servidor WS atrás de um proxy inverso ou de um Cloudflare Tunnel (por exemplo, wss://ws.my-ai.com/live-ws); o browser estabelece aí a ligação, em vez de usar ws://hostname:20132. A parte do caminho também é utilizada como caminho de atualização do WebSocket (predefinição: /live-ws). |
OMNIROUTE_ENABLE_LIVE_WS |
true |
src/server/ws/liveServer.ts e scripts/start-ws-server.mjs |
Defina como 0 ou false para desativar o servidor WebSocket em tempo real (ativado por predefinição e associado ao loopback). Opção de CI/harness que desativa o script auxiliar autónomo do WebSocket em tempo real. |
RELAY_IP_PER_MINUTE |
30 |
src/app/api/v1/relay/chat/completions/route.ts |
Limite de taxa de retransmissão por (token, IP), em pedidos/minuto. Em memória, por instância. 0 ou um valor negativo desativa o controlo da dimensão de IP (o limite da base de dados por token continua a aplicar-se). |
NODE_ENV |
production |
Núcleo do Next.js | Controla o nível de detalhe dos registos, a colocação em cache, a exposição de detalhes de erros e as otimizações do Next.js. |
OMNIROUTE_USE_TURBOPACK |
1 (Turbopack — predefinição no código) |
package.json / Next.js 16 |
O Turbopack é o bundler predefinido para npm run dev e npm run build (compilações 2–3× mais rápidas, segundo testes de desempenho). Defina como 0 para voltar ao webpack no Windows, em caso de incompatibilidades com bindings nativos/com o bundler, ou em máquinas com RAM limitada — sabe-se que as compilações de produção do Turbopack nesta linha de versões do Next.js (16.2.x) atingem picos de utilização de memória muito superiores aos do webpack em grafos de módulos de grandes dimensões (a correção de libertação de memória do Turbopack no Next 16.3 ainda não é estável); a alternativa com webpack atinge picos muito inferiores. Consulte #6409. |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
(não definida) | src/lib/db/core.ts / src/lib/db/healthCheck.ts |
Defina como 1 para ignorar a verificação de integridade do SQLite no arranque. Útil para um arranque mais rápido com bases de dados de grandes dimensões. |
NOTIFY_SOCKET |
(não definida) | systemd (protocolo sd_notify) | Definida pelo systemd quando o processo é executado numa unidade de serviço com integração sd_notify; o OmniRoute lê-a (consulte OMNIROUTE_DISABLE_SD_NOTIFY) para enviar notificações READY/WATCHDOG. Nunca deve ser definida pelo utilizador. |
OMNIROUTE_DISABLE_SD_NOTIFY |
(não definida) | scripts/dev/systemd-notify.mjs |
Defina como 1 para desativar o sd_notify do systemd (Type=notify / WatchdogSec=), mesmo durante a execução numa unidade do systemd. Fora do systemd, o notificador não efetua qualquer operação, independentemente desta definição. |
CREDENTIAL_HEALTH_CHECK_INTERVAL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/scheduler.ts |
Intervalo (ms) do agendador de verificação do estado das credenciais em segundo plano. Mínimo: 10000 (10 s). |
CREDENTIAL_HEALTH_CACHE_TTL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/cache.ts |
TTL (ms) do estado de funcionamento das credenciais em cache. |
OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK |
false |
src/lib/credentialHealth/scheduler.ts |
Defina como 1 ou true para desativar os testes periódicos em segundo plano das ligações aos fornecedores. Os fornecedores de pesquisa (SEARCH_VALIDATOR_CONFIGS em src/lib/providers/validation/searchProviders.ts, por exemplo, tavily-search) são sempre excluídos da verificação — a sua «validação» é uma consulta real faturada pelo fornecedor, pelo que nunca são sujeitos a verificações periódicas do estado (#9970). |
HOST |
0.0.0.0 |
scripts/dev/run-next.mjs |
Endereço de associação para o servidor de desenvolvimento/inicialização do Next.js. Substitui o valor predefinido 0.0.0.0 quando definido. |
HOSTNAME |
127.0.0.1 |
scripts/dev/run-next-playwright.mjs |
Endereço de associação utilizado pelo executor do Playwright ao iniciar o Next.js. A predefinição é 127.0.0.1 para testes herméticos. Não utilize com omniroute serve — utilize antes OMNIROUTE_SERVER_HOST (as shells POSIX definem automaticamente HOSTNAME como o nome da máquina; .env não o pode substituir). |
OMNIROUTE_SERVER_HOST |
0.0.0.0 |
bin/cli/commands/serve.mjs |
Endereço de associação para omniroute serve. Evita conflitos com a variável HOSTNAME da shell POSIX (sempre definida pelo bash/zsh como o nome da máquina). Quando não está definida, utiliza 0.0.0.0. (#6194) |
Modos de Porta
┌─────────────────────────── Porta única (predefinição) ─────────────────────┐
│ PORT=20128 │
│ → Painel: http://localhost:20128 │
│ → API: http://localhost:20128/v1/chat/completions │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Portas separadas ────────────────────────────────┐
│ DASHBOARD_PORT=20128 │
│ API_PORT=20129 │
│ API_HOST=0.0.0.0 │
│ → Painel: http://localhost:20128 │
│ → API: http://0.0.0.0:20129/v1/chat/completions │
│ Caso de utilização: expor a API à LAN, restringindo o Painel ao localhost. │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Docker em produção ─────────────────────────────┐
│ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │
│ → Mapeia as portas do contentor para as portas do anfitrião em │
│ docker-compose.prod.yml. │
└─────────────────────────────────────────────────────────────────────────────┘
4. Segurança e Autenticação
| Variável | Predefinição | Ficheiro de Origem | Descrição |
|---|---|---|---|
MACHINE_ID_SALT |
endpoint-proxy-salt |
src/lib/auth |
Salt combinado com identificadores de hardware para criar a impressão digital da máquina. Altere-o em cada implementação para garantir o isolamento. |
OMNIROUTE_CLI_SALT |
(não definido = salt aleatório por instalação, guardado em <DATA_DIR>/cli-token-salt.json) |
src/lib/machineToken.ts |
Salt HMAC para derivar o token de autenticação local da CLI. A definição deste valor roda todos os tokens da CLI na máquina e tem sempre prioridade sobre o salt guardado. Consulte docs/security/CLI_TOKEN.md. |
AUTH_COOKIE_SECURE |
false |
src/lib/auth |
Define o atributo Secure nos cookies de sessão. Tem de ser true durante a execução atrás de HTTPS. |
REQUIRE_API_KEY |
false |
middleware da API | Quando definido como true, todos os pedidos de proxy para /v1/* têm de incluir uma chave de API válida. |
ALLOW_API_KEY_REVEAL |
false |
src/shared/constants/featureFlagDefinitions.ts |
Permite revelar os valores completos das chaves de API na interface do Painel. Configurável através dos Sinalizadores de Funcionalidades do Painel; representa um risco de segurança em instâncias partilhadas. |
NO_LOG_API_KEY_IDS |
(vazio) | src/lib/compliance/index.ts |
IDs de chaves de API, separados por vírgulas, que não são sujeitos ao registo de pedidos (conformidade com o RGPD). |
DEFAULT_RATE_LIMIT_PER_DAY |
(não definido = ilimitado) | src/shared/utils/apiKeyPolicy.ts |
Orçamento de pedidos diário de contingência aplicado às chaves de API cuja coluna rate_limits é nula. Não definido ou vazio: sem limite implícito (#2289, #11017). 0 é equivalente (ilimitado). Um número inteiro positivo N ativa N/dia, 5N/semana e 20N/mês. Valores não vazios e malformados recorrem aos limites legados de 1000/dia, 5000/semana e 20000/mês. |
MAX_BODY_SIZE_BYTES |
10485760 (10 MB) |
src/shared/middleware/bodySizeGuard.ts |
Tamanho máximo permitido para o corpo do pedido. Rejeita cargas úteis que excedam este limite. |
OMNIROUTE_CHAT_LARGE_BODY_BYTES |
262144 (256 KB) |
src/shared/middleware/chatBodyAdmission.ts |
Os corpos reais dos pedidos que atinjam ou excedam este limiar obtêm a concessão atómica local ao processo para admissão de cargas pesadas antes da análise do JSON (percurso BYTE, incluindo POST /v1/responses). Aplica-se a mesma alternativa de margem saudável de #10437 usada para cargas estruturalmente pesadas; continua limitada por OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110, para que o problema #7849 não volte a ocorrer. |
OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES |
52428800 (50 MB) |
src/shared/middleware/chatBodyAdmission.ts |
Limite rígido das rotas de chat, aplicado aos bytes lidos durante a ingestão limitada, incluindo pedidos com Content-Length ausente, inválido ou fraudulento; os pedidos que excedam o limite recebem 413. |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT |
(não definido — sem limite de número de pedidos) | src/shared/middleware/chatBodyAdmission.ts |
#503-fanout: este limite legado de NÚMERO de pedidos só se aplica agora quando é explicitamente definido. Quando não é definido (a predefinição), a admissão de conversas pesadas é, em alternativa, controlada por OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES — um orçamento de BYTES derivado automaticamente, dimensionado a partir do limite real de memória do processo em um processo (uma heap V8). Dois pedidos /v1/responses sobrepostos com ~750 mil tokens abortam heaps de ~12 GiB (#7849) — um aviso relativo ao orçamento de memória, não um máximo rígido de produto de 2. Um processo saudável (heap abaixo do rácio de rejeição) PODE admitir mais pedidos /v1/responses longos em simultâneo através de OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM. Dezenas de clientes SSE de longa duração (40–50) dependem da heap + OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110, não de um «máximo de 2». Aumentar este valor sem critério para «utilizar o anfitrião» reintroduz o problema #7849. Multiplique as heaps com N DATA_DIRs independentes (#11024); nunca utilize replicas>1 num único ficheiro SQLite. |
OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES |
(derivado automaticamente) | src/shared/middleware/admissionBudget.ts |
#503-fanout: substituição do orçamento de bytes de ingestão derivado automaticamente (25% do limite mais restritivo de memória V8/cgroup, dividido por uma amplificação transitória de 8x). Os valores derivados e explícitos são limitados ao intervalo de 8 MiB–2 GiB. Um corpo maior do que o orçamento efetivo falha imediatamente com 413 body_exceeds_budget; a contenção entre corpos que poderiam ser processados individualmente continua a permitir nova tentativa com 503. A existência de 40–50 clientes SSE longos em simultâneo depende deste orçamento + heap, não de um «máximo de 2» rígido. Consulte chatAdmission.maxInflightBytes / budgetSource / pressureSeverity em /api/monitoring/health antes de efetuar ajustes. |
OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO |
0.75 |
src/shared/middleware/chatBodyAdmission.ts |
Rácio de rejeição por pressão da heap (heapUsed / heap_size_limit) para a admissão pesada por BYTES e ESTRUTURA (#10183, #10268, #10437). Um pedido pesado simultâneo que ultrapasse OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT só é rejeitado com o erro 503, que permite nova tentativa, quando a heap TAMBÉM se encontra neste rácio ou acima dele; numa heap saudável, é admitido através da margem de capacidade saudável. |
OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT (predefinição 1) |
src/shared/middleware/chatBodyAdmission.ts |
Capacidade adicional limitada para o caminho rápido de heap saudável (#10437), tanto para ESTRUTURA como para BYTES (admitChatRequest, incluindo corpos ≥ OMNIROUTE_CHAT_LARGE_BODY_BYTES). Sem este limite, todos os pedidos efetuados enquanto o sistema estivesse ocupado, mas com uma heap saudável, contornariam a admissão sem qualquer teto. Quando este número de concessões simultâneas estiver ativo através do caminho de heap saudável, os pedidos adicionais efetuados enquanto o sistema está ocupado passam para o MESMO caminho de espera limitada/rejeição utilizado sob pressão real da heap. 0 desativa totalmente este desvio. |
OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT |
200 |
src/shared/middleware/chatBodyAdmission.ts |
Número de mensagens que classifica um pedido de conversa como pesado, mesmo quando o respetivo corpo está abaixo do limiar de bytes. |
OMNIROUTE_CHAT_HEAVY_TOOL_COUNT |
64 |
src/shared/middleware/chatBodyAdmission.ts |
Número de ferramentas que classifica um pedido de conversa como pesado, mesmo quando o respetivo corpo está abaixo do limiar de bytes. |
OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS |
32000 |
src/shared/middleware/chatBodyAdmission.ts |
Estimativa conservadora de tokens baseada no tamanho das cadeias de carateres que classifica um pedido como pesado; trata-se de uma aproximação do custo de admissão, não da tokenização utilizada pelo fornecedor para faturação. |
OMNIROUTE_CHAT_HARD_MAX_MESSAGES |
0 (desativado) |
src/shared/middleware/chatBodyAdmission.ts |
Limite opcional e explícito do histórico de conversas. Está desativado por predefinição: o número de mensagens é uma política da implementação, não uma propriedade universal de um pedido, e aplicar aqui um limite rejeita conversas com um erro terminal 413 antes de o pipeline de compressão poder torná-las processáveis. O crescimento da heap é limitado por OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT e pela rejeição por pressão da heap. Defina um valor positivo em implementações com memória limitada que necessitem de um teto rígido; os pedidos em excesso recebem então um erro estruturado 413 a indicar que é necessária compactação. |
OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES |
67108864 (64 MB) |
open-sse/handlers/chatCore/nonStreamingResponseBody.ts |
Limite rígido para uma resposta upstream sem streaming armazenada integralmente em memória. Quando este limite é ultrapassado, o leitor upstream é cancelado e o pedido falha rapidamente, em vez de aumentar uma cadeia de carateres sem limites até esgotar a heap. |
OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES |
768 |
open-sse/handlers/chatCore/responseHeaders.ts |
Número máximo de bytes transmitidos dos cabeçalhos da resposta upstream. Quando o orçamento é excedido, os cabeçalhos de menor prioridade (por exemplo, cabeçalhos x-codex-* personalizados e x-oai-request-id) são eliminados para respeitar os limites comuns de cabeçalhos de proxies inversos. Defina um valor superior para reencaminhar mais metadados upstream, à custa de um tamanho maior dos cabeçalhos da resposta. |
CORS_ORIGIN |
(não definido) | src/server/cors/origins.ts |
Lista de permissões CORS legada para uma única origem. Prefira CORS_ALLOWED_ORIGINS para novas implementações. O CORS destina-se apenas a clientes da API no navegador de origem cruzada; as escritas autenticadas no painel utilizam pedidos da mesma origem juntamente com proteção CSRF associada à sessão. |
CORS_ALLOWED_ORIGINS |
(não definido) | src/server/cors/origins.ts |
Lista de permissões CORS separada por vírgulas. Não é enviado nenhum carácter universal, a menos que CORS_ALLOW_ALL=true seja explicitamente configurado. |
CORS_ALLOW_ALL |
false |
src/server/cors/origins.ts |
Mecanismo de exceção apenas para desenvolvimento que permite devolver qualquer Origin do navegador. Não o ative em implementações partilhadas ou de produção. |
OUTBOUND_SSRF_GUARD_ENABLED |
true |
src/shared/network/outboundUrlGuard.ts |
Bloqueia chamadas a fornecedores que tenham como destino intervalos de endereços IP privados, de loopback ou link-local. Desative apenas em ambientes de teste isolados. |
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS |
false |
src/shared/network/outboundUrlGuard.ts |
Permite URLs de fornecedores que apontem para redes privadas/locais (localhost, 192.168.x.x, 10.x.x.x, etc.). OBRIGATÓRIO para fornecedores autoalojados (LM Studio, Ollama, vLLM, Llamafile, Triton, SearXNG). Quando definido como false, o painel rejeita a validação de URLs locais. |
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS |
true |
src/shared/network/outboundUrlGuard.ts |
Permite adicionar/validar fornecedores em endereços locais/privados (127.0.0.1, localhost, LAN, intervalos privados) — limitado ao caminho de validação do fornecedor. Predefinição: true (local em primeiro lugar); defina como false para impor o bloqueio estrito apenas a endereços públicos. Os endpoints de metadados da nuvem (169.254.169.254, metadata.google.internal) permanecem bloqueados independentemente desta definição. (#5066) |
AUDIO_REMOTE_PROVIDER_NODES |
false |
src/app/api/v1/_shared/audioProviderNodes.ts |
Permite que as rotas /v1/audio/* (transcrições, voz, traduções) utilizem um nó de fornecedor compatível com OpenAI alojado fora de localhost. Desativado por predefinição — encaminhar áudio para um anfitrião remoto altera a identidade de saída e tem de ser uma decisão explícita do operador. Os nós de loopback/privados (localhost, 127.0.0.1, 172.16-31.x) são sempre permitidos e não são afetados. (#3963) |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
Quando o OIDC está ativado, desativa o início de sessão com palavra-passe para que os utilizadores apenas possam autenticar-se através do início de sessão único OIDC. O alias simples OIDC_DISABLE_PASSWORD_LOGIN também é aceite; o sinalizador de funcionalidade do painel com a mesma chave tem precedência. (#10889) |
OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
Alias simples de OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN (#10889). |
Lista de verificação de reforço da segurança
# Requisitos mínimos de segurança para produção:
AUTH_COOKIE_SECURE=true # Requer HTTPS
REQUIRE_API_KEY=true # Autentica todas as chamadas ao proxy
ALLOW_API_KEY_REVEAL=false # Nunca expõe chaves na interface do utilizador
CORS_ALLOWED_ORIGINS=https://your.domain.com
MAX_BODY_SIZE_BYTES=5242880 # Limite de 5 MB
5. Saneamento de entradas e proteção de PII
O OmniRoute fornece uma defesa em duas camadas: análise de injeções do lado dos pedidos e remoção de PII do lado das respostas.
⚠️ Limitações: Estas proteções são deteções heurísticas de melhor esforço, não uma firewall completa contra injeções de prompts nem um sistema DLP de PII. Podem produzir falsos positivos (prompts inofensivos de personas/RPG sinalizados) e falsos negativos (leetspeak, espaçamento, padrões não ingleses). Por si só, não são suficientes para garantir a conformidade. Ajuste os modos e teste-os com o seu tráfego antes de confiar neles.
Lado dos pedidos: proteção contra injeção de prompts
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
INPUT_SANITIZER_ENABLED |
true |
src/middleware/promptInjectionGuard.ts |
Ativa a análise das mensagens recebidas para detetar padrões de injeção de prompts. |
INPUT_SANITIZER_MODE |
warn |
src/middleware/promptInjectionGuard.ts |
Política de injeção: warn = apenas registar, block = rejeitar o pedido com 400. O modo legado redact não remove texto de injeção; utilize PII_REDACTION_ENABLED para reescrever PII nos pedidos. |
INJECTION_GUARD_MODE |
(não definido) | src/middleware/promptInjectionGuard.ts |
Nome alternativo legado de INPUT_SANITIZER_MODE — mesmo comportamento. |
INPUT_SANITIZER_BLOCK_THRESHOLD |
high |
src/shared/utils/injectionSeverity.ts |
Gravidade mínima rejeitada por MODE=block: high (predefinição), medium ou low. Os padrões de gravidade média são apenas observados, a menos que o limiar seja reduzido. |
INJECTION_GUARD_BLOCK_THRESHOLD |
(não definido) | src/shared/utils/injectionSeverity.ts |
Nome alternativo legado de INPUT_SANITIZER_BLOCK_THRESHOLD — mesmo comportamento. |
PII_REDACTION_ENABLED |
false |
src/lib/guardrails/piiMasker.ts |
Quando definido como true, oculta PII nos pedidos recebidos (independentemente do modo de injeção). |
CREDENTIAL_REDACTION_ENABLED |
false |
src/lib/guardrails/credentialMasker.ts |
Oculta padrões conhecidos de chaves de API/tokens secretos dos conteúdos dos pedidos e das respostas. Opcional; reflete PII_REDACTION_ENABLED. |
Lado das respostas: saneador de PII
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
PII_RESPONSE_SANITIZATION |
false |
src/lib/piiSanitizer.ts |
Analisa as respostas do LLM para detetar PII divulgadas antes de as devolver ao cliente. |
PII_RESPONSE_SANITIZATION_MODE |
redact |
src/lib/piiSanitizer.ts |
redact = ocultar PII, warn = apenas registar, block = descartar toda a resposta. |
Saneador de contexto de rotas tokenizadas do VS Code
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_VSCODE_SANITIZE_CONTEXT |
1 |
src/app/api/v1/vscode/contextSanitizer.ts |
Remove o contexto implícito do editor ativo (editorContext, activeEditor, currentFile, selection, openTabs…) dos pedidos para /v1/vscode/[token]/* e oculta o conteúdo de ficheiros sensíveis anexados explicitamente. Seguro por predefinição; defina como 0 para desativar. |
Cenários
| Cenário | Configuração |
|---|---|
| Conformidade empresarial | INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=block, PII_REDACTION_ENABLED=true, PII_RESPONSE_SANITIZATION=true (bloqueio de injeções + ocultação de PII nos pedidos/respostas; os modos são independentes) |
| Apenas monitorização | INPUT_SANITIZER_ENABLED=true, INPUT_SANITIZER_MODE=warn — regista, mas nunca bloqueia |
| Utilização pessoal | Deixe tudo desativado — sobrecarga nula |
6. Políticas de Ferramentas e Encaminhamento
| Variável | Predefinição | Ficheiro de Origem | Descrição |
|---|---|---|---|
TOOL_POLICY_MODE |
disabled |
src/lib/toolPolicy.ts |
Controla o acesso do LLM à chamada de ferramentas/funções. allowlist = apenas as ferramentas listadas, denylist = todas exceto as listadas, disabled = sem restrições. |
OMNIROUTE_PAYLOAD_RULES_PATH |
./config/payloadRules.json |
open-sse/services/payloadRules.ts |
Caminho para o ficheiro JSON de regras de manipulação do payload (ajustes a montante por modelo/protocolo). |
OMNIROUTE_PAYLOAD_RULES_RELOAD_MS |
5000 |
open-sse/services/payloadRules.ts |
Intervalo de recarregamento (ms) para o recarregamento em tempo real do ficheiro de regras do payload. Mínimo de 1000. |
OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS |
false |
open-sse/services/model.ts |
Opção voluntária: encaminha IDs de modelos claude-* sem prefixo provenientes de clientes Claude Code através da conta OAuth do Claude Code, em vez de exigir um prefixo de fornecedor. Os prefixos de fornecedor explícitos continuam a ter prioridade. Também pode ser configurado através de um seletor no painel, na página do fornecedor Claude. |
COMBO_CONCURRENCY_PER_MODEL |
3 |
open-sse/services/comboConfig.ts |
Limite de concorrência por modelo para combinações round-robin (#9100). O semáforo de combinações round-robin tinha um limite fixo de 3 pedidos simultâneos por modelo, sem possibilidade de substituição, colocando em série o tráfego com maior concorrência atrás desse limite. Validado como >= 1, limitado a <= 32. |
DISABLE_CONTEXT_WINDOW_CHECKS |
false |
open-sse/handlers/chatCore.ts |
Opção voluntária perigosa que ignora a verificação local da janela de contexto/dos tokens máximos de entrada do OmniRoute para pedidos diretos a um único modelo. Os fornecedores a montante continuam a aplicar os respetivos limites reais; a compressão do prompt e o limite de tokens de saída do próprio modelo permanecem ativos. A precedência efetiva é: substituição na base de dados de Feature Flags > variável de ambiente > predefinição; não é necessário reiniciar. |
OMNIROUTE_DISABLE_CONVERSATION_TRACKING |
(não definido) | open-sse/services/conversationTracker.ts |
Defina como 1 para deixar de recolher o histórico de conversas. resolveConversationId() devolve um resultado não monitorizado antes de ler o SQLite ou analisar o histórico de mensagens, abrangendo também os IDs de sessão fornecidos pelo cliente. O processamento das sessões de encaminhamento não é alterado e os registos existentes não são eliminados. Destina-se a implementações que não utilizam a vista de conversas do painel e pretendem impedir que a tabela de turnos continue a crescer. |
7. URLs e Sincronização na Cloud
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
BASE_URL |
http://localhost:20128 |
src/lib/cloudSync.ts |
URL do lado do servidor utilizada pelas tarefas internas de sincronização para chamar /api/sync/cloud. Mantenha-a como um URL de loopback/contentor, mesmo quando a aplicação é disponibilizada publicamente através de um proxy. |
CLOUD_URL |
(vazio) | src/lib/cloudSync.ts |
URL do endpoint de retransmissão na cloud (funcionalidade premium). |
CLOUD_SYNC_TIMEOUT_MS |
12000 |
src/lib/cloudSync.ts |
Tempo limite HTTP para pedidos de sincronização na cloud. |
OMNIROUTE_BUILD_PROFILE |
full |
Configuração de compilação do Webpack | Perfil de compilação (defina como minimal para excluir fisicamente os módulos privilegiados do bundle). |
OMNIROUTE_STANDALONE_DIR |
saída standalone .build/ | scripts/build/colocate-standalone.mjs |
Substituição, durante a compilação, do diretório de saída standalone utilizado pelo passo de colocação pós-compilação. Não é uma definição de tempo de execução. |
OMNIROUTE_CLOUD_SYNC_SECRET |
(vazio) | src/lib/cloudSync.ts |
Segredo partilhado utilizado para verificar a assinatura HMAC-SHA256 das respostas da Sincronização na Cloud. |
OMNIROUTE_CLOUD_SYNC_SECRETS |
false |
src/lib/cloudSync.ts |
Defina como true para permitir que o endpoint de Sincronização na Cloud substitua as credenciais locais. A predefinição é false. |
OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE |
false |
src/lib/cloudSync.ts |
Defina como true para rejeitar uma resposta não assinada da Sincronização na Cloud quando não estiver configurado nenhum segredo local (#13679). Uma assinatura presente é sempre verificada — e sempre rejeitada quando OMNIROUTE_CLOUD_SYNC_SECRET não está definido — independentemente deste sinalizador. Na v3.9, a predefinição passa a impor a assinatura. |
OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP |
false |
src/app/api/providers/zed/import/route.ts |
Defina como true para voltar ao comportamento de um único passo «importar tudo» da v3.8.5 sem confirmação do utilizador. |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
OAuth, Painel, sincronização | URL pública para o redirect_uri do OAuth, as ligações do Painel e os URLs públicos gerados. Defina-a como o URL público estável quando os callbacks do OAuth ou as ligações geradas para o browser tiverem de utilizar um anfitrião canónico de proxy inverso. |
NEXT_PUBLIC_CLOUD_URL |
(vazio) | Lado do cliente | Espelho do lado do cliente de CLOUD_URL. |
NEXT_PUBLIC_APP_URL |
(não definido) | src/shared/services/cloudSyncScheduler.ts |
Alternativa legada para NEXT_PUBLIC_BASE_URL. |
OMNIROUTE_PUBLIC_BASE_URL |
(não definido) | Resolvedor da origem pública, URLs de imagens | Origem do OmniRoute destinada ao browser e com prioridade máxima, utilizada para gerar URLs públicas e validar a origem do browser fora do dashboard. Defina esta variável quando o OpenWebUI ou outro relay aceder ao OmniRoute através de um URL interno, mas o browser do utilizador tiver de obter os conteúdos multimédia gerados a partir de uma origem de LAN, túnel ou pública. Não inclua /v1. |
OMNIROUTE_PROVIDER_MANIFEST_URL |
(não definido) | open-sse/config/providerPluginManifestUrl.ts |
URL absoluto do manifesto de plugins de fornecedores anunciado aos clientes sidecar. Quando não está definido, o OmniRoute deriva /api/v1/provider-plugin-manifest da origem do pedido ou de HOST/PORT. |
OMNIROUTE_PUBLIC_PROTOCOL |
http |
open-sse/config/providerPluginManifestUrl.ts |
Protocolo utilizado ao derivar o URL do manifesto de plugins de fornecedores a partir de HOST/PORT sem uma origem do pedido. Defina como https quando estiver por trás de um proxy público que termine TLS e não estiver definido um OMNIROUTE_PROVIDER_MANIFEST_URL explícito. |
OMNIROUTE_TRUST_PROXY |
(não definido) | src/server/origin/publicOrigin.ts |
Modo de confiança opcional para cabeçalhos reencaminhados de origem pública. Não definido = não confiar em Forwarded / X-Forwarded-* para decisões de segurança. true / loopback confia no anfitrião/protocolo reencaminhado apenas a partir de um proxy de loopback marcado com token. private / lan também confia em pares de proxy da LAN privada. Em produção, prefira um NEXT_PUBLIC_BASE_URL explícito. |
KIE_CALLBACK_URL |
(não definido) | open-sse/utils/kieTask.ts |
URL público de callback para tarefas assíncronas do kie.ai. Substituição com prioridade máxima, antes de OMNIROUTE_KIE_CALLBACK_URL e OMNIROUTE_PUBLIC_URL. |
OMNIROUTE_KIE_CALLBACK_URL |
(não definido) | open-sse/utils/kieTask.ts |
Designação alternativa de KIE_CALLBACK_URL. É utilizada como alternativa quando a variável principal não está definida. |
OMNIROUTE_PUBLIC_URL |
(não definido) | open-sse/utils/kieTask.ts |
Origem pública utilizada para compor URLs de callback assíncronos. Alternativa de prioridade mais baixa para callbacks do kie.ai; também utilizada como URL público genérico para outros relays. |
OMNIROUTE_CROF_USAGE_URL |
https://crof.ai/usage_api/ |
open-sse/services/usage.ts |
Endpoint de consulta da quota do CrofAI utilizado pela página Utilização. Substitua para relays / fixtures de teste. |
OMNIROUTE_OPENCODE_QUOTA_URL |
https://opencode.ai/zen/go/v1/usage |
open-sse/services/opencodeQuotaFetcher.ts |
Endpoint oficial de utilização do OpenCode Go, autenticado por chave de API, utilizado pela página Utilização. Substitua para relays / fixtures de teste. |
OPENCODE_SYNTHESIZE_CLI_HEADERS |
true |
open-sse/executors/opencode.ts |
Sintetiza cabeçalhos de identidade do OpenCode CLI (User-Agent, x-opencode-client/project, UUIDs de pedido/sessão) em pedidos a montante do opencode-go/zen que o cliente não tenha enviado, para que o Cloudflare os aceite no tráfego de saída de VPS (#6210/#5997). Ativado por predefinição desde #10571; desative com false/0/no/off. |
OPENCODE_USER_AGENT |
opencode |
open-sse/executors/opencode.ts |
User-Agent predefinido utilizado quando OPENCODE_SYNTHESIZE_CLI_HEADERS está ativado e não existe uma substituição <PROVIDER>_USER_AGENT por fornecedor. Aplicado apenas aos executores do opencode. |
OPENCODE_CLIENT |
desktop |
open-sse/executors/opencode.ts |
Valor do cabeçalho x-opencode-client sintetizado quando OPENCODE_SYNTHESIZE_CLI_HEADERS está ativado. |
OPENCODE_PROJECT |
global |
open-sse/executors/opencode.ts |
Valor para o cabeçalho x-opencode-project sintetizado quando OPENCODE_SYNTHESIZE_CLI_HEADERS está ativado. |
OMNIROUTE_OLLAMA_CLOUD_USAGE_URL |
https://ollama.com/settings |
open-sse/services/usage.ts |
URL das definições do Ollama Cloud utilizada para recolher dados de quotas. Substitua-a para retransmissores/fixtures de teste. |
OLLAMA_USAGE_COOKIE |
(não definido) | open-sse/services/usage.ts |
Cookie __Secure-session do Ollama Cloud utilizado para recolher dados de quotas da página de definições. É confidencial; quando estão configuradas várias contas, dê preferência ao campo correspondente a cada ligação no Dashboard. |
OLLAMA_CLOUD_USAGE_COOKIE |
(não definido) | open-sse/services/usage.ts |
Variável de ambiente alternativa para o cookie __Secure-session do Ollama Cloud. É confidencial; quando estão configuradas várias contas, dê preferência ao campo correspondente a cada ligação no Dashboard. |
OMNIROUTE_OLLAMA_USAGE_COOKIE |
(não definido) | open-sse/services/usage.ts |
Variável de ambiente alternativa para o cookie __Secure-session do Ollama Cloud, utilizada antes dos aliases mais curtos. É confidencial; quando estão configuradas várias contas, dê preferência ao campo correspondente a cada ligação no Dashboard. |
OMNIROUTE_CODEWHISPERER_BASE_URL |
https://codewhisperer.us-east-1.amazonaws.com |
open-sse/services/usage.ts |
Endpoint dos limites de utilização do CodeWhisperer (AWS Kiro). Substitua-o para retransmissores/fixtures de teste. |
Important
Ao implementar atrás de um proxy inverso (nginx, Caddy), defina
NEXT_PUBLIC_BASE_URLcomo o seu URL público estável (por exemplo,https://omniroute.example.com) quando os callbacks OAuth ou as ligações públicas geradas tiverem de utilizar esse nome de anfitrião. Sem esta definição, os callbacks OAuth podem falhar porque o redirect_uri não corresponde, e as ligações públicas geradas podem apontar para a origem interna do contentor.Mantenha
BASE_URLcomo um URL interno de loopback/contentor para tarefas de servidor para servidor. Não utilize umOrigindo navegador nem um nome de anfitrião público para pedidos internos ao próprio serviço que incluam credenciais.As operações de escrita autenticadas no Dashboard não exigem um URL base público estático: o Dashboard envia pedidos não seguros para a mesma origem com um token CSRF associado à sessão. O OmniRoute continua a centralizar a validação da origem pública para integrações de navegador que não utilizem o Dashboard: as variáveis de ambiente explícitas de URL público são consideradas fidedignas em primeiro lugar; os cabeçalhos
Forwarded/X-Forwarded-*em bruto são ignorados, a menos queOMNIROUTE_TRUST_PROXYesteja ativado e o peer de proxy imediato esteja identificado por token como fidedigno. Não utilize as definições de CORS para corrigir pedidos do Dashboard para a mesma origem; o CORS destina-se apenas a clientes de navegador de origem cruzada.
8. Proxy de saída
Encaminhe as chamadas para fornecedores LLM a montante através de um proxy HTTP ou SOCKS5 para controlo de saída, encaminhamento geográfico ou ocultação de IP.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
open-sse/executors |
Ativa o agente proxy SOCKS5 para chamadas a montante. Desative com false. |
NEXT_PUBLIC_ENABLE_SOCKS5_PROXY |
true |
Lado do cliente | Indica, no lado do cliente, a disponibilidade de SOCKS5. |
PROXY_SKIP_RECENTLY_FAILED |
false |
src/shared/utils/featureFlags.ts |
Flag de funcionalidade opcional (consulte FEATURE_FLAGS.md; uma substituição na BD do painel tem precedência). Os conjuntos de proxies e a rotação por conta deixam de voltar a disponibilizar um membro que tenha acabado de falhar (sondagem TCP recusada ou um erro 429 através do mesmo) durante um período que duplica a cada repetição, até um limite máximo. true (ou 1, yes) ativa esta opção. |
HTTP_PROXY |
(não definida) | Padrão do Node.js | Proxy HTTP para chamadas a montante. |
HTTPS_PROXY |
(não definida) | Padrão do Node.js | Proxy HTTPS para chamadas a montante. |
ALL_PROXY |
(não definida) | Padrão do Node.js | Proxy universal (suporta socks5://). |
OMNIROUTE_PROXY_ECHO_URL |
(não definida) | src/lib/proxyEchoTarget.ts |
Fixa num único URL o destino de eco de IP utilizado pelas sondagens de saída do proxy. Se não estiver definida, a sondagem tenta api64.ipify.org e depois api4.ipify.org, para que túneis apenas com IPv4 não sejam incorretamente indicados como inativos (#9694). |
NO_PROXY |
(não definida) | Padrão do Node.js | Nomes de anfitrião/IP separados por vírgulas que devem ignorar o proxy. |
OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS |
32 |
open-sse/utils/proxyDispatcher.ts |
Número máximo de sockets simultâneos por dispatcher de proxy HTTP/SOCKS em cache. Os fluxos SSE de longa duração, como o /v1/responses do Codex, necessitam de mais do que uma ligação quando vários pedidos partilham o mesmo proxy ao nível da conta. Os valores superiores a 256 são limitados. |
SOCKS_HANDSHAKE_TIMEOUT_MS |
10000 |
open-sse/utils/socksConnectorWithFamily.ts |
Tempo limite, em ms, para a negociação SOCKS5 (ligação). Aumente-o quando um único anfitrião de gateway residencial recebe um elevado nível de simultaneidade (por exemplo, 100 pedidos simultâneos) — a negociação real pode exceder 10 s num conjunto saturado, mesmo que o proxy esteja acessível, o que, de outra forma, é apresentado como um falso [Proxy Fast-Fail] Proxy unreachable. Limitado a 120000. |
PROXY_FAIL_OPEN |
false |
src/sse/handlers/chatHelpers.ts |
Quando definido como false (predefinição), um pedido cujo proxy atribuído não possa ser resolvido é recusado (falha fechada) em vez de recorrer a uma ligação direta — isto evita fugas do IP real. Defina como true para restaurar o comportamento de recurso legado DIRECT. |
ENABLE_TLS_FINGERPRINT |
false |
open-sse/executors |
Falsificar a impressão digital TLS utilizando wreq-js (imita o Chrome 124). Contorna bloqueios JA3/JA4. |
TLS_FINGERPRINT_PROVIDERS |
(não definido) | open-sse/utils/proxyFetch.ts |
Lista de fornecedores permitidos, separados por vírgulas, para o novo encaminhamento TLS através de proxy (open-sse/utils/proxyFetch.ts). Quando não definida, a ligação TLS direta mantém o comportamento legado; apenas estes fornecedores são encaminhados através da ponte de impressão digital do Chrome 124. |
OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS |
false |
open-sse/services/claudeTurnstileSolver.ts |
Permitir que o contexto do navegador Playwright do Claude Turnstile ignore erros de certificado HTTPS. |
Cenários
| Cenário | Configuração |
|---|---|
| SOCKS5 através de túnel SSH | ALL_PROXY=socks5://127.0.0.1:7890, ENABLE_SOCKS5_PROXY=true |
| Proxy HTTP empresarial | HTTP_PROXY=http://proxy.corp.com:3128, HTTPS_PROXY=http://proxy.corp.com:3128, NO_PROXY=localhost,internal.corp.com |
| Anti-impressão digital | ENABLE_TLS_FINGERPRINT=true — requer wreq-js (incluído) |
| Saída controlada/sem acesso direto | Mantenha PROXY_FAIL_OPEN=false (predefinição). Os pedidos falham de forma definitiva quando o proxy está indisponível, em vez de escaparem através de uma ligação direta. |
| Legado/desenvolvimento — permitir alternativa direta | PROXY_FAIL_OPEN=true. Restaura o comportamento anterior ao reforço de segurança: é utilizada uma ligação direta quando a resolução do proxy falha. |
Nota (desvio da validação da NVIDIA — #3226): O endpoint de validação da chave de API da NVIDIA fica bloqueado quando encaminhado através do fetch global corrigido para proxy/TLS (dispatcher undici → 504).
src/lib/providers/validation.ts::directHttpsRequest()contorna intencionalmente a correção de proxy para essa chamada de validação específica utilizandosafeOutboundFetch({ bypassProxyPatch: true }). Esta é uma exceção documentada e de âmbito limitado — não afeta a saída de conversação/utilização. O âmbito do desvio está fixado portests/unit/proxy-bypass-scope-guard-3226.test.ts.
9. Integração de ferramentas CLI
Controla a forma como o OmniRoute descobre e inicia sidecars CLI (Claude Code, Codex, etc.).
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
CLI_MODE |
auto |
src/shared/services/cliRuntime.ts |
auto = procurar no PATH do sistema; manual = utilizar apenas caminhos explícitos. |
CLI_EXTRA_PATHS |
(não definida) | src/shared/services/cliRuntime.ts |
Entradas PATH adicionais para a deteção de binários da CLI (separadas por dois pontos). |
CLI_CONFIG_HOME |
(não definida) | src/shared/services/cliRuntime.ts |
Substitui o diretório pessoal utilizado para ler as configurações da CLI (~/.claude, ~/.codex). Tem de ser absoluto e estar dentro do diretório pessoal do processo — ou, num contentor, ser um caminho montado por associação (é assim que /host-home funciona). Qualquer outro caminho reverte para o diretório pessoal. |
CLI_ALLOW_CONFIG_WRITES |
true |
src/shared/services/cliRuntime.ts |
Permite que o OmniRoute escreva ficheiros de configuração da CLI (atualização de tokens, dados de sessão). Defina como false para que todas as escritas na configuração da CLI falhem com um erro explícito de "escritas desativadas". |
CLI_CLAUDE_BIN |
claude |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Claude. |
CLI_CODEX_BIN |
codex |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Codex. |
CLI_DROID_BIN |
droid |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Droid. |
CLI_OPENCLAW_BIN |
openclaw |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI OpenClaw. |
CLI_CURSOR_BIN |
agent, depois cursor |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário do agente Cursor. Sem este caminho, a deteção tenta primeiro agent e, caso não o encontre, utiliza cursor. |
CLI_CLINE_BIN |
cline |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Cline. |
CLI_5DIVE_BIN |
5dive |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI 5dive. |
CLI_5DIVE_STATE_DIR |
/var/lib/5dive |
src/shared/services/cliRuntime.ts |
Diretório de estado do sistema do 5dive (perfis de autenticação pertencentes ao root); reflete a predefinição STATE_DIR do próprio 5dive. |
CLI_CONTINUE_BIN |
cn |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Continue. |
CLI_QODER_BIN |
qodercli |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Qoder. |
CLI_QWEN_BIN |
qwen |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Qwen Code. |
CLI_AIDER_BIN |
aider |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Aider. |
CLI_GOOSE_BIN |
goose |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Goose. |
CLI_GEMINI_BIN |
gemini |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Google Gemini — apenas para deteção e verificações de integridade no lado do servidor; omniroute run gemini resolve o binário gemini a partir do PATH do sistema. |
CLI_KILO_BIN |
kilocode |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Kilo Code. |
CLI_OPENCODE_BIN |
opencode |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI OpenCode. |
CLI_HERMES_BIN |
hermes |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário Hermes. Partilhado por ambas as entradas do catálogo (hermes e hermes-agent). |
CLI_FORGE_BIN |
forge |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI ForgeCode. |
CLI_JCODE_BIN |
jcode |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI jcode. |
CLI_DEEPSEEK_TUI_BIN |
deepseek-tui |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da TUI DeepSeek. |
CLI_CODEWHALE_BIN |
codewhale |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI CodeWhale. |
CLI_SMELT_BIN |
smelt |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Smelt. |
CLI_PI_BIN |
pi |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário Pi (pi-coding-agent). |
CLI_CRUSH_BIN |
crush |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Crush. |
CLI_OMP_BIN |
omp |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário do agente Oh My Pi (omp). |
CLI_LETTA_BIN |
letta |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário da CLI Letta. |
CLI_PRIME_AGENT_BIN |
prime-agent |
src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário Prime Agent (Prime Intellect). |
CLI_WINDSURF_BIN |
(nenhum) | src/shared/services/cliRuntime.ts |
Caminho personalizado para o binário Windsurf. O Windsurf é distribuído sem um comando predefinido — a deteção do binário permanece desativada até que esta opção seja definida. |
CLI_DEVIN_BIN |
devin |
open-sse/executors/devin-cli.ts |
Caminho personalizado para o binário da CLI Devin (v3.8.0). Utilizado pelo executor Windsurf/Devin. |
DEVIN_DESKTOP_VERSION |
3.6.27 |
open-sse/executors/devin-desktop.ts |
ide_version do Devin Desktop. As substituições têm de utilizar o formato x.y.z; os valores inválidos revertem para o valor predefinido verificado. |
DEVIN_DESKTOP_EXTENSION_VERSION |
1.48.2 |
open-sse/executors/devin-desktop.ts |
extension_version incluída do Codeium/language-server, distinta da ide_version do Desktop. As substituições têm de utilizar x.y.z; os valores inválidos utilizam o valor predefinido incluído. |
CLI_DEVIN_AGENTIC_BIN |
devin |
open-sse/executors/devin-cli-agentic.ts |
Substituição da CLI Devin exclusiva para a ponte agêntica. O executor aceita apenas o upstream ACP stdio local. |
DEVIN_AGENTIC_HOME |
(obrigatório) | open-sse/executors/devin-cli-agentic.ts |
Diretório pessoal isolado absoluto para o subprocesso Devin agêntico; os caminhos de ponte aceites são /home/bridge e caminhos .sandbox locais da tarefa (no Windows, C:\...\.sandbox\...). |
DEVIN_AGENTIC_ACP_TIMEOUT_MS |
120000 |
open-sse/executors/devin-cli-agentic.ts |
Duração máxima de um turno ACP do Devin antes de a ponte terminar o processo filho e devolver explicitamente um tempo limite. |
DEVIN_BRIDGE_MODEL |
devin-cli-agentic/swe-1-7 |
docker/devin-bridge/compose.yml |
Alias do modelo principal do Claude Code para a ponte isolada. O harness em execução substitui o exemplo por um modelo devolvido pela conta Devin atual. |
DEVIN_BRIDGE_SONNET_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias da ponte isolada utilizado quando o Claude Code solicita o seu modelo Sonnet predefinido. |
DEVIN_BRIDGE_OPUS_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias da ponte isolada utilizado quando o Claude Code solicita o seu modelo Opus predefinido. |
DEVIN_BRIDGE_HAIKU_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias da ponte isolada utilizado quando o Claude Code solicita o seu modelo Haiku predefinido. |
DEVIN_BRIDGE_SUBAGENT_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Alias da ponte isolada utilizado para os subagentes do Claude Code. |
DEVIN_SEAT_API_URL |
https://server.codeium.com |
open-sse/services/usage/devinCli.ts |
Substituição opcional para a API de gestão de licenças do Codeium utilizada pela quota da Devin CLI (GetUserStatus). |
AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Substituição por caminho absoluto para o binário da CLI Augment (Auggie) utilizado pelo fornecedor local auggie. Como alternativa, utiliza CLI_AUGGIE_BIN e, em seguida, procura no PATH. |
CLI_AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Substituição alternativa para o caminho do binário da CLI Augment (Auggie) (verificada após AUGGIE_BIN). |
ZCODE_BIN |
zcode |
open-sse/executors/zcode.ts |
Binário utilizado pelo cliente stdio do fornecedor local zcode. Como alternativa, utiliza zcode no PATH. |
ZCODE_ARGS |
— | open-sse/executors/zcode.ts |
Matriz JSON (≤16 cadeias de caracteres) de argumentos adicionais transmitidos ao binário zcode quando iniciado através de cliTools. |
ZCODE_CWD |
process.cwd() |
open-sse/executors/zcode.ts |
Diretório de trabalho do subprocesso do servidor de aplicações ZCode. |
ZCODE_PROVIDER_ID |
builtin:zai-coding-plan |
open-sse/executors/zcode.ts |
Substituição do ID do fornecedor enviado ao servidor de aplicações. |
ZCODE_SERVER_RUNTIME_ROOT |
~/.zcode/server |
open-sse/executors/zcode.ts |
Raiz do ambiente de execução do servidor de aplicações ZCode (onde se encontram o node e o zcode-server.cjs incluídos). |
ZCODE_SERVER_NODE |
<runtimeRoot>/node |
open-sse/executors/zcode.ts |
Executável do Node utilizado para alojar o servidor de aplicações ZCode. |
ZCODE_SERVER_ENTRY |
<runtimeRoot>/zcode-server.cjs |
open-sse/executors/zcode.ts |
Script de entrada utilizado para alojar o servidor ZCode. |
ZCODE_STARTUP_TIMEOUT_MS |
10000 |
open-sse/executors/zcode.ts |
Tempo limite de arranque (ms) após o qual se considera que o início de um servidor de aplicações ZCode falhou. |
ZCODE_RPC_TIMEOUT_MS |
30000 |
open-sse/executors/zcode.ts |
Tempo limite de RPC por pedido (ms) para uma chamada ao servidor de aplicações ZCode. |
ZCODE_TURN_TIMEOUT_MS |
120000 |
open-sse/executors/zcode.ts |
Duração máxima (ms) de um turno do ZCode antes de o supervisor exceder o respetivo tempo limite. |
ZCODE_POLL_INTERVAL_MS |
250 |
open-sse/executors/zcode.ts |
Intervalo de consulta (ms) para a conclusão de um turno do ZCode. |
HERMES_HOME |
~/.hermes |
src/lib/cli-helper/config-generator/hermesHome.ts |
Diretório base do Hermes Agent onde o OmniRoute lê/escreve a configuração da Hermes CLI. Corresponde à variável de ambiente definida no Windows pelo instalador PowerShell do Hermes (%LOCALAPPDATA%\hermes). |
Sincronização automática de perfis da CLI
Estes sinalizadores de funcionalidade são opcionais e estão desativados por predefinição. Também podem ser ativados ou desativados a partir do painel de controlo CLI Code.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
Após a sincronização dos modelos de um fornecedor, reescreve automaticamente os ficheiros de perfil ~/.codex/*.config.toml a partir do catálogo atual. Requer CLI_ALLOW_CONFIG_WRITES; nunca altera a configuração ativa/predefinida do Codex, a autenticação, as definições do Codex-lb nem a escolha do fornecedor. |
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
Após a sincronização dos modelos de um fornecedor, reescreve automaticamente os ficheiros de perfil do Claude Code ~/.claude/profiles/<name>/settings.json a partir do catálogo atual. Requer CLI_ALLOW_CONFIG_WRITES; nunca altera a configuração ativa/predefinida do Claude, a autenticação nem a escolha do fornecedor. |
Exemplo do Docker
# Monte os binários do anfitrião no contentor e indique ao OmniRoute onde se encontram:
CLI_EXTRA_PATHS=/host-cli/bin
CLI_CONFIG_HOME=/host-home
CLI_ALLOW_CONFIG_WRITES=true
CLI_CLAUDE_BIN=/host-cli/bin/claude
CLI_CONFIG_HOME só tem efeito quando o caminho é efetivamente montado por bind a partir do
anfitrião — combine-o com montagens como ~/.codex:/host-home/.codex:rw (consulte o
perfil host em docker-compose.yml). Um caminho que não esteja dentro da pasta pessoal
do utilizador do contentor nem seja uma montagem bind é ignorado, porque qualquer escrita nesse
local seria descartada quando o contentor fosse recriado.
A imagem é executada como USER node, pelo que um /root não montado não é uma
substituição válida.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_CONTAINER |
(automático) | src/shared/utils/containerEnv.ts |
Força a deteção de contentor a estar ativa (1/true) ou inativa (0/false). Só é necessário em ambientes de execução que a deteção automática não identifica. |
OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE |
false |
src/shared/services/cliRuntime.ts |
Permite, ainda assim, que as ferramentas de CLI escrevam a configuração num caminho não montado do contentor. O equivalente na CLI é --allow-container-write. |
Auxiliares do binário de CLI (omniroute)
Estas variáveis ajustam o comportamento do próprio binário de CLI omniroute (e não a deteção de
sidecar acima).
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_LANG |
(sistema) | bin/cli/i18n.mjs |
Força o idioma da saída da CLI. Localidade BCP-47 (por exemplo, en, pt-BR). Substitui as variáveis de ambiente da localidade do sistema (LC_ALL, LC_MESSAGES). |
OMNIROUTE_SHOW_LOG |
(não definida) | bin/cli/runtime/processSupervisor.mjs |
Defina como 1 para encaminhar stdout/stderr do servidor para o terminal no modo supervisionado. Equivale à opção --log em omniroute serve. |
OMNIROUTE_CLI_TOKEN |
(não definida) | bin/cli/api.mjs |
Token de autenticação de máquina injetado como cabeçalho x-omniroute-cli-token. Gerado automaticamente na tarefa 8.12. |
OMNIROUTE_HTTP_TIMEOUT_MS |
30000 |
bin/cli/api.mjs |
Tempo limite HTTP por tentativa (ms) para pedidos da CLI → servidor. |
OMNIROUTE_READY_TIMEOUT_MS |
60000 |
bin/cli/utils/pid.mjs |
Tempo máximo (ms) que a CLI aguarda pelo endpoint de estado do servidor antes de apresentar um aviso de tempo limite. Útil para arranques a frio lentos (por exemplo, no Windows). Também pode ser definido através de --ready-timeout. |
OMNIROUTE_VERBOSE |
0 |
bin/cli/api.mjs |
Defina como 1 para apresentar diagnósticos de novas tentativas/recuo em stderr durante os comandos da CLI. |
OMNIROUTE_PLUGIN_PATH |
(não definida) | bin/cli/plugins.mjs |
Diretório personalizado para a deteção de plugins da CLI (pacotes omniroute-cmd-*). Quando não está definida, a predefinição é ~/.omniroute/plugins/. Apenas para a CLI — nunca chega ao analisador de plugins do lado do servidor, que é indicado por OMNIROUTE_PLUGINS_DIR (secção 2). |
10. Integrações internas de agentes e MCP
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_BASE_URL |
deteção automática | open-sse/mcp-server/server.ts |
URL explícito para as ferramentas MCP/A2A acederem ao OmniRoute. Substitui a deteção automática do localhost. |
OMNIROUTE_API_KEY |
(não definido) | Módulos MCP/A2A | Chave de API para chamadas internas de ferramentas MCP e competências A2A. |
OMNIROUTE_API_KEY_ID |
(não definido) | open-sse/mcp-server/audit.ts |
ID da chave para atribuição no registo de auditoria MCP. |
ROUTER_API_KEY |
(não definido) | Legado | Alias legado de OMNIROUTE_API_KEY. |
OMNIROUTE_A2A_HISTORY_RETENTION_DAYS |
30 |
src/lib/a2a/taskManager.ts |
Número de dias durante os quais o histórico de tarefas A2A é mantido na base de dados local antes de a limpeza diária eliminar uma linha. Se não estiver definido, não for numérico ou for <= 0, é utilizado o valor 30. |
OMNIROUTE_A2A_MEMORY_HITS |
1 |
src/lib/a2a/taskExecution.ts |
Interruptor de desativação para a funcionalidade de observabilidade de ocorrências na memória A2A. Defina como 0 para ignorar totalmente a consulta de recuperação da memória para uma tarefa; qualquer outro valor (incluindo não definido) mantém-na ativada. |
OMNIROUTE_ISSUE_AGENT_ENABLED |
false |
src/app/api/issue-agent/runs/route.ts |
Ativa o endpoint offline/local de triagem registada do Issue Agent. Mantenha-o desativado, exceto ao executar explicitamente fluxos de trabalho locais de triagem registada. |
OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS |
(não definido) | src/lib/issueAgent/execution.ts |
Tempo limite (ms) para uma única execução de triagem registada do Issue Agent. É limitado a um máximo interno; utiliza a predefinição incorporada quando não está definido ou é inválido. |
OMNIROUTE_CONTEXT |
(contexto ativo) | bin/cli/program.mjs, bin/cli/api.mjs |
Contexto/perfil do modo remoto da CLI para comandos omniroute; substitui o contexto ativo no armazenamento local de contextos. Equivalente a --context <name>. |
OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED |
0 |
bin/cli/contexts.mjs |
Desativa o backend opcional keytar do porta-chaves do sistema operativo para credenciais de contexto da CLI. Quando ativado, as credenciais permanecem no modo 0600 de config.json e a CLI emite um aviso único de alternativa; destina-se à utilização deliberada em ambientes headless/contentores. |
OMNIROUTE_MCP_ENFORCE_SCOPES |
true |
open-sse/mcp-server/server.ts |
Impõe controlo de acesso baseado em âmbitos nas chamadas de ferramentas MCP. |
OMNIROUTE_MCP_SCOPES |
(todos) | open-sse/mcp-server/server.ts |
Âmbitos separados por vírgulas: admin, combos, health, models, routing, budget, metrics, pricing, memory, skills. |
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS |
false |
open-sse/mcp-server/descriptionCompressor.ts |
Comprime as descrições das ferramentas MCP antes de serializar o manifesto. Valores de ativação: 1, true, on. |
OMNIROUTE_MCP_DESCRIPTION_COMPRESSION |
rtk |
open-sse/mcp-server/descriptionCompressor.ts |
Algoritmo/perfil de compressão. Valores de desativação: 0, false, off. |
OMNIROUTE_MCP_FETCH_TIMEOUT_MS |
10000 |
open-sse/mcp-server/fetchTimeout.ts |
Limite de cancelamento (ms) para leituras de gestão internas do servidor MCP (estado, resiliência, combinações, quota, utilização). |
OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS |
60000 |
open-sse/mcp-server/fetchTimeout.ts |
Limite de tempo para cancelamento (ms) em saltos MCP que aguardam um fornecedor (route_request, web_search, web_fetch). |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
src/lib/localCorpus/configured.ts |
Número máximo de instâncias do índice do corpus local mantidas em cache na memória (LRU, uma por diretório raiz indexado). Limitado a um mínimo de 1. |
MODEL_SYNC_INTERVAL_HOURS |
24 |
src/shared/services/modelSyncScheduler.ts |
Intervalo de sincronização do catálogo de modelos, em horas. |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
src/lib/usage/providerLimits.ts |
Intervalo de consulta dos limites de taxa e das quotas do fornecedor. |
PROVIDER_LIMITS_SYNC_SPACING_MS |
1500 |
src/lib/usage/providerLimits.ts |
Intervalo (ms) entre obtenções consecutivas de quotas OAuth numa sincronização em massa; as ligações OAuth são consultadas uma de cada vez para evitar sobrecarregar um serviço a montante. 0 desativa este comportamento (execução simultânea). |
OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS |
250 |
open-sse/services/quotaFetchThrottle.ts |
Intervalo mínimo (ms) entre obtenções consecutivas de quotas a montante no caminho de verificação prévia/monitorização por pedido; espaça as chamadas de rede simultâneas para impedir que muitas contas num só IP sobrecarreguem o serviço a montante. Integrado nos mecanismos de obtenção de quotas do Codex (/wham/usage), DeepSeek, Bailian (em ambos os locais de obtenção), OpenCode e Crof (#6009, #6911). O caminho genérico de encaminhamento usage.ts::getUsageForProvider (github/glm/minimax/nanogpt/xai/etc.) ainda não está abrangido — é acompanhado separadamente. Os acertos da cache não são afetados. 0 desativa; limitado ao intervalo 0..5000. |
PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS |
5000 |
src/lib/usage/providerLimits.ts |
Atraso (ms) antes de atualizar os limites do fornecedor após um evento de utilização real, dando à API de quotas a montante tempo para registar o consumo. |
OMNIROUTE_LOGIN_BROWSER_PATH |
deteção automática | open-sse/services/adobeFireflyBrowserLogin.ts |
Caminho absoluto para um executável do Chrome ou Edge instalado no sistema, utilizado para o início de sessão interativo no Adobe Firefly e a renovação fora do ecrã. |
ADOBE_FIREFLY_BROWSER_REFRESH |
ativado | open-sse/services/adobeFireflySession.ts |
Mantém atualizados o IMS e o estado de risco do navegador através de sessões Chrome CDP associadas à conta. Defina como 0 para desativar a renovação pelo navegador. |
ADOBE_FIREFLY_SESSION_DISK |
ativado | open-sse/services/adobeFireflySession.ts |
Mantém as sessões Adobe reparadas em DATA_DIR após reinícios do processo. Defina como 0 para manter as sessões apenas na memória. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
12000 |
open-sse/services/adobeFireflySession.ts |
Intervalo mínimo, em milissegundos, entre submissões de geração do Adobe Firefly; 0 desativa o intervalo. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
15000 |
open-sse/services/adobeFireflySession.ts |
Período de espera adicional, em milissegundos, após cada terceira submissão bem-sucedida à Adobe. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
8000 |
open-sse/services/adobeFireflyClient.ts |
Atraso base de recuo, em milissegundos, após respostas 408 transitórias da Adobe; combinado com o intervalo entre submissões ao longo de, no máximo, cinco tentativas. |
OMNIROUTE_DISABLE_BACKGROUND_SERVICES |
false |
src/instrumentation-node.ts |
Desativa todos os serviços em segundo plano (sincronização, preços e atualização de modelos). Útil para CI/testes. |
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS |
(não definido) | src/lib/config/runtimeSettings.ts |
Força a ativação das tarefas em segundo plano quando são detetados testes automatizados. Defina como 1 para substituir a heurística de teste. |
OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS |
600000 |
src/lib/jobs/budgetResetJob.ts |
Cadência de verificação da reposição do orçamento (ms). Mínimo de 10000. |
OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS |
60000 |
src/lib/quota/connectionRecovery.ts |
Cadência da recuperação proativa do período de espera das ligações (ms): revalida as ligações cujo rate_limited_until transitório terminou, fora do caminho crítico dos pedidos. Mínimo 5000. |
OMNIROUTE_DISABLE_CONNECTION_RECOVERY |
false |
src/lib/quota/connectionRecovery.ts |
Desativa o agendador de recuperação proativa do período de espera das ligações (a recuperação diferida em getProviderCredentials continua a aplicar-se). |
OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS |
1800000 |
src/lib/jobs/reasoningCacheCleanupJob.ts |
Cadência da limpeza da cache de raciocínio (ms). Mínimo 60000. |
OMNIROUTE_REASONING_MIN_BUDGET |
não definido (desativado) | open-sse/services/reasoningTokenBuffer.ts |
Limite mínimo opcional para os orçamentos de saída de modelos de raciocínio: o max_tokens do chamador no intervalo [256, floor) é aumentado até ao limite mínimo (limitado pelo máximo de saída do modelo). Não definido = os orçamentos dos clientes nunca são aumentados (#9507). |
OMNIROUTE_LOG_EXPORT_CRON |
0 * * * * |
src/lib/jobs/logExportJob.ts |
Expressão cron (UTC) para a tarefa de exportação dos registos de chamadas, que esvazia todos os destinos de exportação de registos ativados. |
OMNIROUTE_CONFIG_HOT_RELOAD_MS |
5000 |
src/lib/config/hotReload.ts |
Intervalo de consulta (ms) para o recarregamento dinâmico da configuração. Valores inferiores a 1000 são rejeitados. |
OMNIROUTE_DISABLE_REDIS_AUTH_CACHE |
(ativado) | src/lib/db/apiKeys.ts |
Defina como 1 para ignorar a cache de autenticação de chaves de API suportada pelo Redis (força leituras da base de dados). |
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
0 |
open-sse/services/compression/engines/rtk/filterLoader.ts |
Confia nas regras de filtragem de projetos RTK geridas pelo utilizador sem verificações rigorosas de assinaturas. |
OMNIROUTE_LITE_MAX_TOOL_LENGTH |
2000 |
open-sse/services/compression/lite.ts |
Limite de caracteres para o truncamento proativo dos resultados de ferramentas pelo Lite quando lite.maxToolLength não está definido. Intervalo 256–1000000. A definição do painel tem precedência sobre esta variável de ambiente. |
OMNI_COMPRESSION_WORKERS |
2 |
open-sse/services/compression/compressionWorkerPool.ts |
Número máximo de workers RTK/Caveman síncronos em simultâneo; as tarefas excedentes aguardam segundo a ordem FIFO. |
OMNI_COMPRESSION_WORKER_TIMEOUT_MS |
120000 |
open-sse/services/compression/compressionWorkerPool.ts |
Tempo limite por tarefa, em milissegundos. Os workers cujo tempo limite seja excedido são terminados e o pedido prossegue sem alterações. |
OMNI_COMPRESSION_WORKER_IDLE_MS |
60000 |
open-sse/services/compression/compressionWorkerPool.ts |
Período de inatividade, em milissegundos, antes de um worker de compressão não utilizado ser terminado. |
COMPRESSION_PIPELINE_BREAKER_ENABLED |
false |
open-sse/services/compression/pipelineEngineBreaker.ts |
Interruptor principal opcional do disjuntor por motor do pipeline encadeado T02. Adesão opcional (desativado por predefinição) — quando ativado, um motor que gera erros repetidamente entre pedidos é ignorado (falha em modo aberto) durante um período de espera; desativado = comportamento legado idêntico ao nível dos bytes. |
COMPRESSION_PIPELINE_BREAKER_THRESHOLD |
3 |
open-sse/services/compression/pipelineEngineBreaker.ts |
Número de falhas consecutivas entre pedidos antes de o disjuntor de um motor abrir. |
COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS |
30000 |
open-sse/services/compression/pipelineEngineBreaker.ts |
Número de milissegundos durante os quais um motor com o disjuntor aberto permanece ignorado antes de uma tentativa em estado semiaberto. |
COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR |
2 |
open-sse/services/compression/engines/ccr/index.ts |
Rampa de feedback da recuperação CCR T08/H8: cada recuperação anterior de um bloco armazenado aumenta linearmente o seu minChars efetivo (o conteúdo recuperado com frequência é menos comprimido; >=3 recuperações = nunca comprimido). 1 desativa a rampa (omissão binária apenas no limiar). |
COMPRESSION_CCR_DURABLE_STORE |
true |
open-sse/services/compression/engines/ccr/index.ts |
Armazenamento durável de blocos CCR (#9061). Complementa o armazenamento em memória com SQLite, para que um bloco sobreviva à expulsão LRU, ao TTL, a um reinício ou a uma recuperação realizada noutra instância. Defina como false para manter os blocos apenas em memória. Os blocos com mais de 512 KB e os ambientes de execução na nuvem permanecem apenas em memória, independentemente desta definição. |
COMPRESSION_PREFIX_FREEZE_ENABLED |
false |
open-sse/services/compression/prefixFreeze.ts |
Interruptor principal do congelamento de prefixos observado pela utilização T08/H5. Adesão opcional (desativado por predefinição) — quando ativado, um prompt de sistema observado >= ao limiar é tratado como um prefixo estável que pode ser colocado em cache e é preservado durante a compressão, mesmo para fornecedores que a heurística de cache estático não deteta (o congelamento apenas preserva, nunca altera). |
COMPRESSION_PREFIX_FREEZE_THRESHOLD |
3 |
open-sse/services/compression/prefixFreeze.ts |
Número de observações de um prompt de sistema antes de este ser tratado como um prefixo estável congelado. |
OMNIROUTE_BOOTSTRAPPED |
false |
src/app/(dashboard)/dashboard/page.tsx |
Definido como true pelo script de inicialização após a configuração inicial. Controla a visibilidade do assistente de configuração. |
OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE |
0 |
open-sse/executors/antigravity.ts |
Mecanismo de recurso: permite que o corpo do pedido substitua o campo de projeto do Antigravity. |
ANTIGRAVITY_CREDITS |
off |
open-sse/services/antigravityCredits.ts |
Política de créditos do Google One AI: off nunca injeta créditos, retry injeta-os uma vez após um erro 429 de quota elegível e always injeta-os no primeiro pedido. |
ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS |
0 |
open-sse/translator/request/openai-to-gemini.ts |
Permite que o tradutor de pedidos do Antigravity ignore a validação rigorosa da assinatura de pedidos da CLI quando o serviço a montante recusa assinaturas reais (modo de depuração/CLI obsoleta). Um valor diferente de zero ativa esta operação de contorno. |
AGY_TOKEN_FILE |
~/.gemini/antigravity-cli/antigravity-oauth-token |
src/app/api/providers/agy-auth/apply-local/route.ts |
Substitui o caminho do ficheiro de token da CLI do Antigravity (agy) para a importação do início de sessão local com deteção automática. |
Ponte OAuth da CLI (interna)
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_SERVER |
deteção automática | src/lib/oauth/config/index.ts |
URL do servidor para a ponte de autenticação CLI↔OmniRoute. |
OMNIROUTE_TOKEN |
(não definido) | src/lib/oauth/config/index.ts |
Token de autenticação para a ponte da CLI. |
OMNIROUTE_USER_ID |
cli |
src/lib/oauth/config/index.ts |
ID de utilizador para sessões da ponte da CLI. |
SERVER_URL |
(não definido) | src/lib/oauth/config/index.ts |
Nome alternativo antigo de OMNIROUTE_SERVER. |
CLI_TOKEN |
(não definido) | src/lib/oauth/config/index.ts |
Nome alternativo antigo de OMNIROUTE_TOKEN. |
CLI_USER_ID |
(não definido) | src/lib/oauth/config/index.ts |
Nome alternativo antigo de OMNIROUTE_USER_ID. |
11. Credenciais do fornecedor OAuth
Credenciais integradas para desenvolvimento em localhost. Para implementações remotas, registe as suas próprias credenciais na consola de programador de cada fornecedor.
| Variável | Fornecedor | Notas |
|---|---|---|
CLAUDE_OAUTH_CLIENT_ID |
Claude Code (Anthropic) | Cliente público — não é necessário qualquer segredo. |
CLAUDE_CODE_REDIRECT_URI |
Claude Code | Substitui o URI de redirecionamento. Predefinição: https://platform.claude.com/oauth/code/callback |
CODEX_OAUTH_CLIENT_ID |
Codex / OpenAI | Cliente público. |
GEMINI_OAUTH_CLIENT_ID |
Gemini (Google) | Requer o _SECRET correspondente. |
GEMINI_OAUTH_CLIENT_SECRET |
Gemini (Google) | — |
KIMI_CODING_OAUTH_CLIENT_ID |
Kimi Coding (Moonshot) | Cliente público. |
ANTIGRAVITY_OAUTH_CLIENT_ID |
Antigravity (Google) | Requer o _SECRET correspondente. |
ANTIGRAVITY_OAUTH_CLIENT_SECRET |
Antigravity (Google) | — |
GITHUB_OAUTH_CLIENT_ID |
GitHub Copilot | Cliente público. |
GHE_COPILOT_OAUTH_CLIENT_ID |
GHE Copilot | Substituição opcional para o ID de cliente OAuth do GitHub Enterprise Copilot. Quando não está definido, recorre à predefinição pública de GITHUB_OAUTH_CLIENT_ID. |
WINDSURF_API_KEY |
Windsurf / Devin (v3.8) | Chave de API alternativa utilizada por open-sse/executors/devin-cli.ts quando não está disponível uma credencial por ligação. Opcional. |
CLI_DEVIN_BIN |
Devin CLI (v3.8) | Caminho personalizado para o binário da Devin CLI (devin). Resolvido por open-sse/executors/devin-cli.ts. |
GITLAB_DUO_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | ID de cliente OAuth para o GitLab Duo. Registe uma aplicação em https://gitlab.com/-/profile/applications com o URI de redirecionamento <NEXT_PUBLIC_BASE_URL>/callback e os âmbitos api, read_user, openid, profile, email. Recorre a GITLAB_OAUTH_CLIENT_ID. |
GITLAB_DUO_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | Segredo do cliente OAuth para o GitLab Duo. Opcional — o fluxo PKCE não requer um segredo. Recorre a GITLAB_OAUTH_CLIENT_SECRET. |
GITLAB_DUO_BASE_URL |
GitLab Duo (v3.8) | Substitui o URL base do GitLab (GitLab autoalojado). A predefinição é https://gitlab.com. Recorre a GITLAB_BASE_URL. |
GITLAB_BASE_URL |
GitLab Duo (v3.8) | Alternativa legada para GITLAB_DUO_BASE_URL. Utilizada quando a variante _DUO_ não está definida. |
GITLAB_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | Alternativa legada para GITLAB_DUO_OAUTH_CLIENT_ID, utilizada por src/lib/oauth/constants/oauth.ts. |
GITLAB_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | Alternativa legada para GITLAB_DUO_OAUTH_CLIENT_SECRET, utilizada por src/lib/oauth/constants/oauth.ts. |
QODER_OAUTH_CLIENT_SECRET |
Qoder | — |
QODER_OAUTH_AUTHORIZE_URL |
Qoder | Defina para ativar o OAuth do Qoder. |
QODER_OAUTH_TOKEN_URL |
Qoder | — |
QODER_OAUTH_USERINFO_URL |
Qoder | — |
QODER_OAUTH_CLIENT_ID |
Qoder | — |
QODER_PERSONAL_ACCESS_TOKEN |
Qoder | Alternativa de chave de API direta (ignora o OAuth). |
QODER_CLI_WORKSPACE |
Qoder | ID da área de trabalho para a CLI do Qoder. |
OMNIROUTE_QODER_WORKSPACE |
Qoder | Alias para QODER_CLI_WORKSPACE. |
QODER_CLI_CONFIG_DIR |
Qoder | Substitui o diretório de configuração da CLI do Qoder (sessão PAT isolada, evitando substituir um início de sessão no browser). |
BLACKBOX_WEB_VALIDATED_TOKEN |
Blackbox Web | Token tk do frontend a enviar como validated em /api/chat. Necessário quando o Blackbox impõe a correspondência de tokens; caso contrário, o OmniRoute recorre a um UUID aleatório. Consulte o issue #2252. |
VISION_BRIDGE_BASE_URL |
Mecanismo de proteção Vision Bridge | URL base compatível com OpenAI para chamadas do vision bridge não relacionadas com o Anthropic. Por predefinição, utiliza a variável de ambiente legada do URL do OpenAI ou api.openai.com. Aponte para o ciclo interno /v1 do OmniRoute ou para qualquer endpoint compatível com OpenAI (compatibilidade do Gemini com OpenAI, OpenRouter). Issue #2232. Quando o URL é o próprio /v1 do OmniRoute, o subpedido de descrição envia x-omniroute-admission-bypass: internal e autentica-se com a credencial resolvida do ciclo interno (sentinela sk_omniroute no modo local, ou OMNIROUTE_API_KEY / ROUTER_API_KEY — #1350), para que as implementações com REQUIRE_API_KEY=true funcionem. |
VISION_BRIDGE_API_KEY |
Mecanismo de proteção Vision Bridge | Chave de API para o URL acima. Substitui as variáveis de ambiente do OpenAI/Google específicas de cada fornecedor para chamadas do vision bridge não relacionadas com o Anthropic. Os modelos Anthropic mantêm o seu caminho de chave Anthropic dedicado. Issue #2232. |
Warning
- Aceda a Google Cloud Console → Credenciais
- Crie um ID de cliente OAuth 2.0 (tipo: "Aplicação Web")
- Adicione o URL do seu servidor como URI de redirecionamento autorizado
- Substitua os valores das credenciais em
.env.
12. Substituições do User-Agent do fornecedor
Substitua o cabeçalho User-Agent enviado a cada fornecedor a montante. Este valor é resolvido dinamicamente em tempo de execução pela classe base do executor:
process.env[`${PROVIDER_ID}_USER_AGENT`]
Fonte:
open-sse/executors/base.ts→buildHeaders()
| Variável | Valor predefinido | Quando atualizar | |
|---|---|---|---|
CLAUDE_USER_AGENT |
claude-cli/2.1.258 (external, cli) |
Quando a Anthropic lançar uma nova versão da CLI | |
CLAUDE_DISABLE_TOOL_NAME_CLOAK |
false |
executors/base.ts + executors/cliproxyapi.ts |
Defina como 1/true para encaminhar literalmente para a Anthropic os nomes de ferramentas de harnesses de terceiros em ambos os caminhos destinados à Anthropic (OAuth nativo e CLIProxyAPI). Por predefinição, o executor atribui deterministicamente aliases a nomes de ferramentas que não sejam do Claude Code (mapeamento canónico do Claude Code, quando existir; caso contrário, PascalCase) e reverte-os na resposta através de _toolNameMap, para que harnesses com ferramentas em snake_case não sejam recusados por serem identificados como clientes de terceiros. Apenas para depuração. |
CODEX_USER_AGENT |
codex-cli/0.142.0 (Windows 10.0.26200; x64) |
Quando a OpenAI atualizar a CLI do Codex | |
CODEX_CLIENT_VERSION |
0.131.0 |
Substituir a versão do cliente Codex independentemente da cadeia completa do UA | |
CLAUDE_CODE_CLIENT_VERSION |
2.1.258 |
Substituir a versão anunciada do Claude Code independentemente de CLAUDE_USER_AGENT. A Anthropic restringe alguns modelos com base neste valor (#12417). |
|
GITHUB_COPILOT_CLI_VERSION |
1.0.81-6 |
Substituir a versão anunciada da CLI do Copilot independentemente de GITHUB_USER_AGENT |
|
GITHUB_USER_AGENT |
GitHubCopilotChat/0.54.0 |
Quando o GitHub Copilot Chat for atualizado | |
ANTIGRAVITY_USER_AGENT |
antigravity/2.0.1 darwin/arm64 |
Quando o IDE Antigravity for atualizado | |
KIRO_USER_AGENT |
AWS-SDK-JS/3.0.0 kiro-ide/1.0.0 |
Quando o IDE Kiro for atualizado | |
KIRO_OAUTH_CLIENT_ID |
kiro-cli |
Substituir o clientId (ID público) do código de dispositivo social do Kiro |
|
KIRO_VERIFY_FULL_CRC |
false |
Adesão: validação CRC completa por trama no fluxo de eventos do Kiro (depuração de fluxos corrompidos) | |
QODER_USER_AGENT |
Qoder-Cli |
Quando a CLI do Qoder for atualizada | |
CURSOR_USER_AGENT |
Cursor/3.3 |
Quando o Cursor for atualizado |
Tip
Pode adicionar substituições do User-Agent para qualquer fornecedor utilizando o padrão
{PROVIDER_ID}_USER_AGENT. O executor constrói dinamicamente o nome da variável de ambiente.
13. Compatibilidade de impressão digital da CLI
Quando ativado, o OmniRoute reordena os cabeçalhos HTTP e os campos do corpo JSON para corresponder à assinatura exata das ferramentas CLI oficiais. Isto reduz o risco de sinalização da conta, preservando simultaneamente o seu IP de proxy.
Origem: open-sse/config/cliFingerprints.ts, open-sse/executors/base.ts
Por fornecedor
| Variável | Ativação | Efeito |
|---|---|---|
CLI_COMPAT_CODEX |
=1 |
Imita a assinatura dos pedidos da CLI Codex |
CLI_COMPAT_CLAUDE |
=1 |
Imita a assinatura dos pedidos do Claude Code |
CLI_COMPAT_GITHUB |
=1 |
Imita a assinatura dos pedidos do GitHub Copilot |
CLI_COMPAT_ANTIGRAVITY |
=1 |
Imita a assinatura dos pedidos do Antigravity |
CLI_COMPAT_CURSOR |
=1 |
Imita a assinatura dos pedidos do Cursor |
CLI_COMPAT_KIMI_CODING |
=1 |
Imita a assinatura dos pedidos do Kimi Coding |
CLI_COMPAT_KILOCODE |
=1 |
Imita a assinatura dos pedidos do Kilo Code |
CLI_COMPAT_CLINE |
=1 |
Imita a assinatura dos pedidos do Cline |
Global
| Variável | Ativação | Efeito |
|---|---|---|
CLI_COMPAT_ALL |
=1 |
Ativa a compatibilidade de impressão digital para todos os fornecedores de uma só vez. |
Substituições da identidade da CLI Kimi Coding
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
KIMI_CLI_VERSION |
1.36.0 |
src/lib/oauth/providers/kimi-coding.ts |
Substitui a versão da CLI Kimi enviada durante as chamadas OAuth/API. |
KIMI_CODING_DEVICE_ID |
(predefinição obtida) | src/lib/oauth/providers/kimi-coding.ts |
Substitui o ID de dispositivo Kimi obtido e utilizado nos cabeçalhos do cliente. |
Note
Esta funcionalidade funciona em conjunto com as substituições de User-Agent (§12). O sistema de impressão digital gere a ordenação dos cabeçalhos e dos campos do corpo, enquanto as substituições de User-Agent gerem a cadeia UA específica. Ambos podem ser ativados de forma independente.
14. Fornecedores de chaves de API
Chaves de API para fornecedores que utilizam autenticação direta. Configuração preferencial: Painel → Fornecedores → Adicionar chave de API.
A configuração através de variáveis de ambiente é uma alternativa para implementações Docker ou sem interface gráfica.
Padrão reconhecido: {PROVIDER_ID}_API_KEY
| Variável | Fornecedor |
|---|---|
DEEPSEEK_API_KEY |
DeepSeek |
NVIDIA_API_KEY |
NVIDIA NIM |
JINA_AI_API_KEY |
Jina AI (API Foundation + recurso ao Reader) |
JINA_API_KEY |
Jina AI (alias de JINA_AI_API_KEY) |
GEMINI_API_KEY |
Gemini (Google AI Studio) embeddings + recurso ao chat |
GOOGLE_API_KEY |
Gemini (alias de GEMINI_API_KEY) |
Note
As entradas estáticas
${PROVIDER}_API_KEYpara Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius e Qianfan foram removidas na v3.8.0 porque o runtime já não as lê — esses fornecedores dependem exclusivamente do Painel /data/provider-credentials.json/ da base de dados encriptada. Consulte a secção Auditoria: variáveis removidas/inativas no final deste documento para conhecer o procedimento de migração.
Tip
As chaves configuradas através do Painel são armazenadas de forma encriptada no SQLite e têm precedência sobre as variáveis de ambiente.
Jina: os embeddings
jina-ai/…, bem como rerank, classify, segment ejina-search, não faturam uma chave de ambiente do cluster quando existe uma ligaçãojina-ai(oujina-readerpartilhada) no painel —getProviderCredentialsutiliza preenchimento prioritário.JINA_AI_API_KEY/JINA_API_KEYsão utilizadas apenas quando não existe uma chave utilizável no painel. Os registos de chamadas atribuem o recurso à variável de ambiente comoconnection_id=env:JINA_AI_API_KEY. O cartão Reader (jina-reader,r.jina.ai) nunca serve/v1/embeddingsnem/v1/rerank.Gemini:
gemini/gemini-embedding-2(aliasgoogle/gemini-embedding-2) utiliza primeiro a ligaçãogeminido painel.GEMINI_API_KEY/GOOGLE_API_KEYsão utilizadas apenas quando não existe uma chave utilizável no painel. Os registos de chamadas atribuem o recurso à variável de ambiente comoconnection_id=env:GEMINI_API_KEY. O tráfego multimodal nativo utilizax-goog-api-keycom:embedContent/:batchEmbedContents— N itens OpenAI eminputtornam-se N vetores.
15. Definições de Tempo Limite
Todos os valores são expressos em milissegundos. Resolução centralizada em src/shared/utils/runtimeTimeouts.ts.
Hierarquia de Tempos Limite
REQUEST_TIMEOUT_MS (substituição global)
├─→ FETCH_TIMEOUT_MS (chamadas a fornecedores a montante, predefinição: 600000)
│ ├─→ FETCH_HEADERS_TIMEOUT_MS (herda de FETCH_TIMEOUT_MS)
│ ├─→ FETCH_BODY_TIMEOUT_MS (herda de FETCH_TIMEOUT_MS)
│ ├─→ TLS_CLIENT_TIMEOUT_MS (herda de FETCH_TIMEOUT_MS)
│ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (independente, predefinição: 10000)
│ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (independente, predefinição: 15000)
│ ├── FETCH_CONNECT_TIMEOUT_MS (independente, predefinição: 30000)
│ └── FETCH_KEEPALIVE_TIMEOUT_MS (independente, predefinição: 4000)
├─→ STREAM_IDLE_TIMEOUT_MS (herda de REQUEST_TIMEOUT_MS, predefinição: 600000)
├─→ STREAM_ACTIVE_TIMEOUT_MS (independente, predefinição: 1260000; 0 desativa)
├─→ STREAM_READINESS_TIMEOUT_MS (herda de REQUEST_TIMEOUT_MS, predefinição: 80000)
├─→ STREAM_READINESS_MAX_TIMEOUT_MS (limita as extensões adaptativas de prontidão, predefinição: 180000)
└─→ API_BRIDGE_PROXY_TIMEOUT_MS (herda de REQUEST_TIMEOUT_MS, predefinição: 30000)
├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (derivado, predefinição: 300000)
├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (predefinição: 60000)
├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (predefinição: 5000)
└── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (predefinição: 0 = desativado)
| Variável | Predefinição | Descrição |
|---|---|---|
REQUEST_TIMEOUT_MS |
(não definido) | Atalho global — substitui as predefinições de FETCH_TIMEOUT_MS e STREAM_IDLE_TIMEOUT_MS. |
FETCH_TIMEOUT_MS |
600000 |
Tempo limite total do pedido HTTP para chamadas a fornecedores a montante. |
STREAM_IDLE_TIMEOUT_MS |
600000 |
Período máximo de silêncio entre bytes em bruto provenientes do serviço a montante antes de abortar. Os modelos com raciocínio prolongado raramente pausam durante >90 s. |
STREAM_ACTIVE_TIMEOUT_MS |
1260000 |
Duração máxima total de um fluxo SSE ativo; nunca é reiniciada por bytes provenientes do serviço a montante e é independente de REQUEST_TIMEOUT_MS. Derivada do maior timeoutMs por modelo no registo (1200000, Codex), acrescido de uma margem de 60000, para que um modelo autorizado a utilizar todo o seu orçamento nunca seja interrompido a meio da resposta. Defina como 0 para desativar. |
OMNIROUTE_SSE_COMMENTS |
(desativado) | Indica se o OmniRoute pode emitir linhas de comentário SSE : (por exemplo, o sinal periódico : keepalive e os rodapés de metadados x-omniroute-*). Desativado por predefinição (#10524), pois os clientes estritamente compatíveis com OpenAI executam JSON.parse em cada linha SSE e falham ao encontrar comentários :; os sinais periódicos data: não são afetados. Defina como on/true/1/yes para voltar a ativar. Utilizado por open-sse/utils/sseHeartbeat.ts. |
STREAM_READINESS_TIMEOUT_MS |
80000 |
Tempo para receber o primeiro evento SSE que não seja um ping. Herda REQUEST_TIMEOUT_MS quando este está definido. |
STREAM_READINESS_MAX_TIMEOUT_MS |
180000 |
Janela adaptativa máxima de prontidão para o primeiro evento em pedidos de streaming de grande dimensão, com utilização intensiva de ferramentas ou com elevado nível de raciocínio. |
OMNIROUTE_AGENT_GOAL_POLICY_ENABLED |
true |
Interruptor de emergência para a heurística /goal. Defina como false/0/off para desativar totalmente a deteção — os tempos limite de prontidão e a recuperação do fluxo nunca são aumentados pelo corpo/cabeçalhos do pedido, mitigando a amplificação de tempos limite controlada pelo cliente. |
OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS |
600000 |
Janela máxima de prontidão para o primeiro evento em execuções de agente /goal detetadas ou pedidos forçados com x-omniroute-agent-goal. |
OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY |
true |
Ativa automaticamente a recuperação antecipada do fluxo para execuções de agente /goal detetadas. Defina como false/0/off para desativar a adesão específica de objetivo. Isto apenas pode ADICIONAR recuperação à predefinição do operador — nunca substitui uma desativação explícita nas definições de STREAM_RECOVERY_ENABLED/BD. |
OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS |
true |
Remove eventos SSE codex.* não padronizados (por exemplo, codex.rate_limits) que fazem com que responses.stream() do SDK da OpenAI falhe com um erro 502. ATIVADO por predefinição (#11014). Defina como 0/false/no/off para os reencaminhar. |
OMNIROUTE_CODEX_APPSERVER_WS |
(não definido) | Transporte do app-server Codex de ativação opcional. Ponto final WebSocket (ws:///wss://) de um sidecar local codex app-server. Quando definido em conjunto com um token, os pedidos Codex são encaminhados por JSON-RPC para o sidecar em vez de utilizarem a API HTTP Responses. Também pode ser definido por ligação através de providerSpecificData.codexAppServerUrl. Utilizado por open-sse/executors/codex/appServerConfig.ts. |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN |
(não definido) | Token de capacidade/bearer incorporado apresentado ao app-server. Substituição por ligação: providerSpecificData.codexAppServerToken. |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE |
(não definido) | Caminho para um ficheiro que contém o token de capacidade do app-server (de codex app-server --ws-token-file). Utilizado quando OMNIROUTE_CODEX_APPSERVER_WS_TOKEN não está definido. Substituição por ligação: providerSpecificData.codexAppServerTokenFile. |
OMNIROUTE_CODEX_APPSERVER_CWD |
/tmp |
Diretório de trabalho no qual é executado o turno do app-server. Substituição por ligação: providerSpecificData.codexAppServerCwd. |
OMNIROUTE_CODEX_APPSERVER_APPROVAL |
(não definido) | Política de aprovação transmitida ao turno do app-server (por exemplo, never, on-request). Substituição por ligação: providerSpecificData.codexAppServerApprovalPolicy. |
OMNIROUTE_CODEX_APPSERVER_SANDBOX |
(não definido) | Política de sandbox transmitida ao turno do app-server (por exemplo, read-only, workspace-write, danger-full-access). Quando não está definida, o executor utiliza workspace-write por predefinição (reforçado; anteriormente danger-full-access). Substituição por ligação: providerSpecificData.codexAppServerSandbox. |
OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE |
false |
Aprova automaticamente os pedidos de aprovação do próprio app-server (execução de comandos/ficheiros/permissões no anfitrião). Desativado por predefinição — os pedidos são automaticamente recusados; as chamadas de ferramentas do harness não são afetadas (percorrem o encaminhamento separado item/tool/call). Aceita true/1/yes. Substituição por ligação: providerSpecificData.codexAppServerAutoApprove. |
FETCH_HEADERS_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
Tempo para receber os cabeçalhos da resposta. |
OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS |
30000 (30s) |
Tempo máximo de espera pelo início da resposta (ms) para cada tentativa direta sem proxy. Um timeout provoca uma nova tentativa, uma vez, num socket novo; defina como 0 para desativar o limite e manter o comportamento anterior. |
FETCH_BODY_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
Tempo para receber o corpo completo da resposta. |
FETCH_CONNECT_TIMEOUT_MS |
30000 |
Timeout para o estabelecimento da ligação TCP. |
FETCH_KEEPALIVE_TIMEOUT_MS |
4000 |
Timeout de inatividade do socket keep-alive. |
TLS_CLIENT_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
Timeout do proxy de impressão digital TLS (wreq-js). |
TLS_FIRST_BYTE_WATCHDOG_MS |
10000 |
Limita especificamente o tempo até ao primeiro byte do corpo no transporte de impressão digital TLS do wreq-js; TLS_CLIENT_TIMEOUT_MS, por si só, não consegue detetar um corpo bloqueado, uma vez que é resolvido assim que os cabeçalhos chegam (#12656). Um timeout cancela o leitor wreq e recorre ao dispatcher direto/proxy; 0 desativa o watchdog. |
RESPONSES_FIRST_BYTE_TIMEOUT_MS |
15000 |
Apenas para o executor OpenCode e apenas enquanto a feature flag OPENCODE_RESPONSES_STALL_ROTATION estiver ativa (desativada por predefinição): limita a espera pelo primeiro byte do corpo de uma resposta Responses transmitida em streaming após os respetivos cabeçalhos (#13484). Um fluxo Responses começa com response.created, pelo que a ausência de dados para além desta janela constitui um bloqueio: a conta entra em período de arrefecimento e o pedido roda uma vez para a conta seguinte; um segundo bloqueio falha imediatamente. 0 desativa a proteção, mesmo com a flag ativa. |
API_BRIDGE_PROXY_TIMEOUT_MS |
30000 |
Timeout do salto de proxy para pedidos da ponte /v1. |
FIRECRAWL_BASE_URL |
https://api.firecrawl.dev |
Direciona o executor de obtenção de conteúdos Web do Firecrawl para uma instância alojada pelo utilizador (chave de API opcional fora da cloud). |
FIRECRAWL_TIMEOUT_MS |
30000 |
Timeout por pedido para o executor de obtenção de conteúdos Web do Firecrawl. |
API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS |
300000 |
Timeout global do pedido no servidor para a ponte. |
API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS |
60000 |
Tempo para enviar os cabeçalhos da resposta através da ponte. |
API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS |
5000 |
Timeout de inatividade do keep-alive da ponte. |
API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS |
0 |
Timeout do socket não processado (0 = desativado). |
SHUTDOWN_TIMEOUT_MS |
30000 |
Período de tolerância após SIGTERM/SIGINT antes da saída forçada. |
OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS |
120000 |
Valor de contingência utilizado por src/shared/utils/fetchTimeout.ts quando FETCH_TIMEOUT_MS não está definido. |
OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS |
8000 |
Timeout (ms) para as predefinições validationRead e modelsProbe em src/shared/network/safeOutboundFetch.ts. Aumente-o para endpoints lentos (Cerebras, Cloudflare AI, Groq), para evitar alternâncias frequentes entre ativo/erro no painel. Recorre a 8000ms para valores inválidos (<1000) ou não numéricos. |
OMNIROUTE_RELAY_FETCH_TIMEOUT_MS |
25000 |
Timeout de fetch específico do relay em open-sse/utils/proxyFetch.ts (#9158). Um relay bloqueado tem de falhar antes do timeout do cliente/agente (~30s), para que os autores das chamadas vejam uma falha específica do relay em vez de um timeout genérico do serviço a montante. Limitado a 29000 para garantir que é sempre acionado primeiro. |
OMNIROUTE_RETRY_BACKOFF_MS |
10 |
Intervalo de espera partilhado entre novas tentativas para os fluxos de tentativa única adicional direta/relay/proxy em open-sse/utils/proxyFetch.ts (#9158). 0 = repetir imediatamente. |
OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS |
60000 |
Timeout nativo do pedido wreq-js (claudeTlsClient.ts). |
OMNIROUTE_CLAUDE_TLS_GRACE_MS |
10000 |
Período de tolerância do prazo-limite absoluto de JS adicionado ao timeout nativo. |
OMNIROUTE_PPLX_TLS_TIMEOUT_MS |
30000 |
Timeout nativo do pedido wreq-js (perplexityTlsClient.ts). |
OMNIROUTE_PPLX_TLS_GRACE_MS |
10000 |
Período de tolerância do prazo-limite absoluto de JS adicionado ao timeout nativo. |
OMNIROUTE_PPLX_SEARCH_HINT |
0 (desativado) |
Acrescenta "Tem uma pesquisa Web integrada. Responda diretamente às perguntas utilizando os resultados da pesquisa." à mensagem de sistema do autor da chamada (perplexity-web/protocol.ts). Desativado por predefinição — o Perplexity pesquisa de qualquer forma, e a frase aparece nas respostas como metacomentário para clientes de programação. Defina como 1/true/yes/on para restaurar. |
OMNIROUTE_GROK_TLS_TIMEOUT_MS |
60000 |
Tempo limite do pedido nativo do wreq-js (grokTlsClient.ts). |
OMNIROUTE_GROK_TLS_GRACE_MS |
10000 |
Período de tolerância do prazo-limite absoluto do JS acrescentado ao tempo limite nativo. |
OMNIROUTE_NOTION_TLS_TIMEOUT_MS |
30000 |
Tempo limite do pedido nativo do wreq-js (notionTlsClient.ts); notion-web aumenta-o por pedido para 180000 em gerações longas. |
OMNIROUTE_NOTION_TLS_GRACE_MS |
10000 |
Período de tolerância do prazo-limite absoluto do JS acrescentado ao tempo limite nativo. |
OMNIROUTE_BROWSER_POOL |
on |
Pool partilhado de browsers Playwright para conversação com cookies Web suportada por browser (browserPool.ts); defina como off para desativar. |
OBSCURA_BIN |
auto-detect |
Caminho para o binário obscura utilizado como motor principal pelo pool de browsers e pelo executor do Cloudflare Playground (open-sse/services/obscura.ts); detetado automaticamente no PATH do sistema quando não está definido. |
OBSCURA_CDP_ENDPOINT |
(não definido) | Aponta para uma instância do Obscura já em execução (http://host:port), em vez de iniciar uma; o módulo não é responsável por esse processo (open-sse/services/obscura.ts). |
OBSCURA_PORT |
porta livre aleatória |
Porta explícita para o obscura serve iniciado; é escolhida automaticamente uma porta livre quando não está definida (open-sse/services/obscura.ts). |
WEB_COOKIE_USE_BROWSER |
0 |
Encaminha um pedido de conversação com cookies Web para o percurso suportado por browser (browserBackedChat.ts); 1 para ativar. |
KIMI_WEB_BASE_URL |
https://www.kimi.ai |
URL base do executor Kimi Web (Connect-RPC internacional do kimi.ai) (kimi-web.ts); substitua apenas para endpoints de espelho/proxy. |
KIMI_WEB_CHAT_URL |
<KIMI_WEB_BASE_URL>/apiv2/kimi.gateway.chat.v1.ChatService/Chat |
Endpoint completo de conversação para o executor Kimi Web (kimi-web.ts). |
OMNIROUTE_LOGIN_BROWSER_PATH |
(detetado automaticamente) | Caminho para um executável do Chrome/Edge do sistema para o início de sessão interativo no browser do Adobe Firefly (adobeFireflyBrowserLogin.ts); substitui a deteção automática específica de cada SO. |
OMNIROUTE_STANDALONE_DIR |
saída autónoma .build/ | Substituição, durante a compilação, do diretório de saída autónomo utilizado pelo passo de colocação conjunta posterior à compilação (scripts/build/colocate-standalone.mjs); ferramentas de compilação, não de tempo de execução. |
As tentativas de destinos combinados herdam o tempo limite resolvido do pedido a montante (FETCH_TIMEOUT_MS, ou
REQUEST_TIMEOUT_MS quando este fornece o valor predefinido da obtenção). Defina targetTimeoutMs numa combinação,
nos valores predefinidos da combinação ou numa substituição do fornecedor apenas para tornar a contingência da combinação mais rápida; os valores acima do
tempo limite atual a montante são limitados ao tempo limite a montante.
comboTimeoutMs é um orçamento cronológico separado para toda a combinação, abrangendo os destinos de contingência.
Deixe-o não definido ou defina-o como 0 para manter a iteração ilimitada (o mecanismo de interrupção de bloqueios de 10 minutos
COMBO_LOOP_SAFETY_TIMEOUT_MS continua a aplicar-se). Um valor positivo substitui esse
mecanismo de segurança para a combinação. Mantenha comboTimeoutMs superior a targetTimeoutMs para que a contingência
continue a ter tempo após um primeiro destino lento.
Limiares do disjuntor
Ajuste do disjuntor ao nível do fornecedor. Os valores predefinidos refletem os valores dimensionados utilizados desde a v3.6 para mais de 500 ligações.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD |
8 |
open-sse/config/constants.ts |
Limiar de falhas consecutivas para fornecedores OAuth antes de o disjuntor disparar. |
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS |
60000 |
open-sse/config/constants.ts |
Janela de reposição (ms) para o disjuntor de fornecedores OAuth. |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD |
12 |
open-sse/config/constants.ts |
Limiar de falhas consecutivas para fornecedores com chave de API. |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS |
30000 |
open-sse/config/constants.ts |
Janela de reposição (ms) para o disjuntor de fornecedores com chave de API. |
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD |
2 |
open-sse/config/constants.ts |
Limiar de falhas consecutivas para fornecedores locais (Ollama, LM Studio, ...). |
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS |
15000 |
open-sse/config/constants.ts |
Janela de reposição (ms) para o disjuntor de fornecedores locais. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD |
10 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: falhas dentro da janela antes de todo o fornecedor OAuth entrar em período de espera. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS |
900000 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: janela móvel de contagem de falhas (ms) para fornecedores OAuth. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS |
300000 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: período de espera (ms) após ser atingido o limiar do fornecedor OAuth. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD |
5 |
open-sse/config/constants.ts |
O fornecedor OAuth entra no estado DEGRADED ao atingir este número de falhas. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER |
8 |
open-sse/config/constants.ts |
Multiplicador máximo de escalada de resetTimeout para fornecedores OAuth. |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT |
2 |
open-sse/config/constants.ts |
O fornecedor OAuth escala após este número de ciclos em estado aberto. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD |
15 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: falhas dentro da janela antes de todo o fornecedor com chave de API entrar em período de espera. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS |
1800000 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: janela móvel de contagem de falhas (ms) para fornecedores com chave de API. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS |
600000 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: período de espera (ms) após ser atingido o limiar do fornecedor com chave de API. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD |
7 |
open-sse/config/constants.ts |
O fornecedor com chave de API entra no estado DEGRADED ao atingir este número de falhas. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER |
4 |
open-sse/config/constants.ts |
Multiplicador máximo de escalada de resetTimeout para fornecedores com chave de API. |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT |
3 |
open-sse/config/constants.ts |
O fornecedor com chave de API escala após este número de ciclos em estado aberto. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD |
2 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: falhas antes de todo o fornecedor local entrar em período de espera. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS |
300000 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: janela móvel de contagem de falhas (ms) para fornecedores locais. |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS |
60000 |
open-sse/config/constants.ts |
Disjuntor ao nível do fornecedor: período de espera (ms) após ser atingido o limiar do fornecedor local. |
PIN_DROP_BACKOFF_LEVEL |
2 |
open-sse/services/combo.ts |
Nível de recuo no qual o fornecedor de uma afixação da cache de contexto é considerado persistentemente indisponível e a afixação é removida para permitir a ativação pós-falha. |
PIN_DROP_GRACE_MS |
20000 |
open-sse/services/combo.ts |
Janela antioscilação (ms) que tolera períodos de espera transitórios breves antes de remover uma afixação da cache de contexto. |
Cenários
| Cenário | Configuração |
|---|---|
| Geração de código de longa duração | REQUEST_TIMEOUT_MS=900000 (15 min) |
| Limitar a duração total do fluxo | STREAM_ACTIVE_TIMEOUT_MS=1260000 (21 min) |
| Falha rápida para API de produção | API_BRIDGE_PROXY_TIMEOUT_MS=10000 |
| Modelos com raciocínio prolongado | STREAM_IDLE_TIMEOUT_MS=300000 (5 min entre blocos) |
16. Registo
O sistema de registo escreve tanto em stdout como em ficheiros de registo com rotação. Toda a configuração é lida por src/lib/logEnv.ts.
| Variável | Predefinição | Descrição |
|---|---|---|
APP_LOG_LEVEL |
info |
Nível mínimo de registo: debug, info, warn, error. |
APP_LOG_FORMAT |
text |
Formato de saída: text (legível por humanos) ou json (estruturado). |
APP_LOG_TO_FILE |
true |
Escreve os registos num ficheiro, além de stdout. |
APP_LOG_FILE_PATH |
logs/application/app.log |
Caminho do ficheiro de registo (relativo à raiz do projeto ou a DATA_DIR). |
APP_LOG_MAX_FILE_SIZE |
50M |
Tamanho máximo do ficheiro antes da rotação. Aceita: 50M, 1G, 512K ou bytes simples. |
APP_LOG_RETENTION_DAYS |
7 |
Número de dias durante os quais são mantidos os ficheiros de registo da aplicação sujeitos a rotação. |
APP_LOG_MAX_FILES |
20 |
Número máximo de cópias de segurança dos ficheiros de registo sujeitos a rotação. |
CALL_LOG_RETENTION_DAYS |
7 |
Número de dias durante os quais são mantidas na base de dados as entradas de registo de pedidos/chamadas. |
CALL_LOG_MAX_ENTRIES |
10000 |
Número máximo de entradas de registo de chamadas na memória intermédia. |
CALL_LOGS_TABLE_MAX_ROWS |
100000 |
Número máximo de linhas na tabela SQLite call_logs antes da eliminação. |
ENABLE_REQUEST_LOGS |
(não definido) | Força a ativação ou desativação do registo detalhado de pedidos, substituindo a definição do painel. |
MAX_PENDING_REQUEST_AGE_MS |
3600000 (1 hora) |
Idade máxima das entradas órfãs de registo de pedidos ativos antes da limpeza em memória. |
CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS |
false |
Armazena fragmentos de fluxo nos artefactos do pipeline quando call_log_pipeline_enabled=true. Opcional (true) — desativado por predefinição para poupar espaço em disco. |
CALL_LOG_PIPELINE_MAX_SIZE_KB |
512 |
Tamanho máximo, em KB, dos artefactos de registo de chamadas do pipeline quando call_log_pipeline_enabled=true. |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
Número máximo de linhas na tabela SQLite proxy_logs antes da eliminação. |
PROXY_LOG_INCLUDE_IPS |
false |
Inclui os IPs do cliente/de saída e os prefixos das contas nos registos da consola [ProxyEgress]. Os registos de proxy do painel/da base de dados mantêm todos os detalhes. |
APP_LOG_ROTATION_CHECK_INTERVAL_MS |
60000 (1 min) |
Frequência com que src/lib/logRotation.ts volta a verificar o tamanho do ficheiro de registo ativo. |
CHAT_LOG_TEXT_LIMIT |
65536 |
Comprimento máximo das cadeias de texto mantidas nos artefactos de registo de conversas (predefinição: 64 KB). |
CHAT_LOG_ARRAY_TAIL_ITEMS |
128 |
Número de itens da matriz mantidos a partir do fim ao truncar conteúdos de registo de conversas. |
CHAT_LOG_MAX_DEPTH |
6 |
Profundidade máxima de aninhamento antes de os conteúdos de registo de conversas serem truncados. |
CHAT_LOG_MAX_OBJECT_KEYS |
80 |
Número máximo de chaves de objeto mantidas nos conteúdos de registo de conversas (0 = ilimitado). |
CHAT_LOG_MAX_BODY_KB |
1024 |
Tamanho total, em KB, do corpo do pedido/resposta antes de este ser substituído por um resumo simples em vez da cópia completa. Aumente este valor se as conversas agênticas longas apresentarem um marcador de posição em vez das mensagens reais no painel. |
CHAT_DEBUG_FILE |
false |
Quando definido como verdadeiro, serializeArtifactForStorage ignora o truncamento baseado no tamanho. Apenas para depuração. |
17. Otimização da memória
| Variável | Predefinição | Descrição |
|---|---|---|
OMNIROUTE_MEMORY_MB |
automático (máquina física); 1024 na imagem Docker |
Limite recomendado da heap V8 (MB) para Docker/execução autónoma. Quando não está definido, é calibrado dinamicamente (~35% da RAM do sistema, limitado ao intervalo [512, 4096]); 512 é apenas o limite mínimo quando não é possível ler a memória total. Em run-standalone.mjs (Docker CMD), um valor explícito é acrescentado como --max-old-space-size e prevalece sobre um sinalizador de heap NODE_OPTIONS em conflito (o último sinalizador do V8 prevalece). omniroute serve continua a dar preferência a um valor de heap existente em NODE_OPTIONS (#5238). Não defina ambos com números diferentes — o processo regista um aviso que identifica ambos os valores e qual prevalece. A imagem Docker oficial define sempre 1024, pelo que a calibração nunca é executada aí. O /v1/responses do agente de programação necessita de 8192–12288, além de margem disponível no cgroup — consulte Guia do Docker — RAM em tempo de execução. |
PROMPT_CACHE_MAX_SIZE |
50 |
Número máximo de entradas de instruções de sistema em cache. |
PROMPT_CACHE_MAX_BYTES |
2097152 (2 MB) |
Tamanho total máximo da cache de instruções. |
PROMPT_CACHE_TTL_MS |
300000 (5 min) |
TTL das entradas da cache de instruções. |
SEMANTIC_CACHE_MAX_SIZE |
100 |
Número máximo de respostas com temperature=0 em cache. |
SEMANTIC_CACHE_MAX_BYTES |
4194304 (4 MB) |
Tamanho total máximo da cache semântica. |
SEMANTIC_CACHE_TTL_MS |
1800000 (30 min) |
TTL das entradas da cache semântica. |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
Raízes de corpus locais que mantêm simultaneamente um índice ativo na memória (src/lib/localCorpus/configured.ts). LRU: ao atingir o limite, o índice da raiz utilizada há mais tempo é removido e reconstruído na consulta seguinte. Limitado a um mínimo de 1; um valor não numérico reverte para a predefinição. |
STREAM_HISTORY_MAX |
50 |
Número máximo de eventos de fluxo recentes na memória intermédia da vista em direto do Painel. |
CONTEXT_LENGTH_DEFAULT |
128000 |
Limite máximo global de contexto usado como alternativa para modelos sem configuração explícita. |
USAGE_TOKEN_BUFFER |
100 |
Margem adicional de tokens reservada ao controlar quotas de utilização. |
Compressão
| Variável | Predefinição | Descrição |
|---|---|---|
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
não definido | Confia no .rtk/filters.json do projeto sem um hash .rtk/trust.json. Utilize apenas em desenvolvimento local controlado. |
Motor de memória (plano 21)
Custo no ciclo de eventos da memória, das competências e da atualização de tokens (#10349)
O OmniRoute é um único processo Node. A extração/obtenção de memória, a injeção de competências e a atualização de tokens dos fornecedores são executadas no mesmo ciclo de eventos que GET /healthz e o painel. Não são uma thread de trabalho.
| Trabalho | Código | Predefinição | Controlo pelo operador |
|---|---|---|---|
| Extração / recuperação de memória | src/lib/memory/ |
memoryEnabled no painel (ativado por predefinição) | Desative Definições → Memória. Não existe um interruptor de desativação separado através de variáveis de ambiente para além de desativar a funcionalidade nas definições. |
| Injeção de competências | src/lib/skills/injection.ts |
skillsEnabled no painel (ativado por predefinição) | Desative Definições → Memória/Competências (skillsEnabled). As opções de sandbox abaixo apenas limitam a execução depois de a injeção já estar ativada. |
| Renovação de tokens | src/sse/services/tokenRefresh.ts |
Ativada para fornecedores OAuth/web ligados | Desligue o fornecedor ou deixe que os tokens permaneçam válidos; atualmente, não existe uma variável de ambiente TOKEN_REFRESH=0. |
Se /healthz estiver lento numa máquina sem carga, desative primeiro a memória e as competências e, em seguida, verifique a carga do catálogo/compressão (#10303, #9685). Estas funcionalidades cedem a execução nos pontos de await, mas continuam a competir pela única thread.
Opções da camada de embeddings, do armazenamento vetorial e de reordenação para o subsistema de memória persistente (src/lib/memory/).
| Variável | Predefinição | Descrição |
|---|---|---|
MEMORY_EMBEDDING_CACHE_TTL_MS |
300000 (5 min) |
TTL da cache de embeddings em memória (por assinatura de origem/modelo/dimensão). |
MEMORY_EMBEDDING_CACHE_MAX |
1000 |
Número máximo de entradas LRU mantidas na cache de embeddings. |
MEMORY_TRANSFORMERS_MODEL |
Xenova/all-MiniLM-L6-v2 |
ID do repositório HF para o pipeline MiniLM local opcional de @huggingface/transformers (~23 MB int8, ~400 MB de RAM). |
MEMORY_STATIC_MODEL |
minishlab/potion-base-8M |
ID do repositório HF para o embedder estático de tabela de consulta potion/Model2Vec. Transferido de forma diferida para o diretório de cache. |
MEMORY_STATIC_CACHE_DIR |
<DATA_DIR>/embeddings |
Diretório utilizado para armazenar em cache os ficheiros do modelo potion estático. Quando não está definido, a predefinição é um diretório sob DATA_DIR. |
HF_HUB_ENDPOINT |
https://huggingface.co |
Substitui o URL base do Hugging Face Hub utilizado por staticPotion.ts (por exemplo, um endpoint espelho para configurações sem acesso à Internet). |
MEMORY_VEC_TOP_K |
20 |
Top-K predefinido utilizado pela pesquisa vetorial por força bruta de sqlite-vec em src/lib/memory/vectorStore.ts. |
MEMORY_RRF_K |
60 |
Constante k de Reciprocal Rank Fusion para recuperação híbrida FTS5 + vetorial (receita sqlite-vec). |
VECTOR_STORE_DISABLE_VEC |
false |
Ponto de teste/diagnóstico em getVectorStore() (src/lib/memory/vectorStore.ts): quando definido como true, força o armazenamento vetorial a null (simula um ambiente cloud/WASM sem sqlite-vec), reduzindo a recuperação de memória à pesquisa por palavras-chave FTS5. Deixe por definir em produção. |
NOTION_API_KEY |
(não definido) | Chave de API para o backend Notion (utilizada pela predefinição de backend conhecido de genericBackend.ts). |
NOTION_API_URL |
https://api.notion.com/v1 |
URL base da API do Notion (pode ser substituído para alternativas ao Notion alojadas localmente). |
OBSIDIAN_API_KEY |
(não definido) | Chave de API para o backend Obsidian Vault (utilizada pela predefinição de backend conhecido de genericBackend.ts). |
OBSIDIAN_API_URL |
http://localhost:27123 |
URL base da API do Obsidian Vault (pode ser substituído para um cofre remoto). |
MEMORY_TYPED_DECAY_ENABLED |
false |
Interruptor principal da degradação de memória tipificada TV6. Adesão explícita (desativado por predefinição) — a limpeza elimina as memórias degradadas. Quando está desativado, access_count/last_accessed_at são apenas telemetria e nada é eliminado. |
MEMORY_TYPED_DECAY_EPISODIC_DAYS |
30 |
TTL (dias) após o qual uma memória episodic não utilizada se degrada. 0 também torna as memórias episódicas imunes. Os tipos duradouros (factual/procedural/semantic) são sempre imunes. O relógio de degradação é reiniciado com base em last_accessed_at. |
MEMORY_TYPED_DECAY_ACCESS_IMMUNITY |
3 |
Uma memória injetada >= este número de vezes torna-se imune à degradação, independentemente do tipo. 0 desativa a imunidade por acesso. |
MEMORY_TYPED_DECAY_SWEEP_INTERVAL |
0 (desativado) |
Intervalo (segundos) para a limpeza periódica opcional da degradação em src/lib/memory/typedDecay.ts. 0/não definido = sem limpeza periódica. Requer adesão explícita dupla: também exige MEMORY_TYPED_DECAY_ENABLED=true. |
OMNIROUTE_STRICT_SYSTEM_PROVIDERS |
(não definido) | IDs de fornecedores separados por vírgulas (sem distinção entre maiúsculas e minúsculas) que aceitam uma mensagem system apenas no índice 0 (src/lib/memory/injection.ts). Para estes, a inserção de memória a meio do array, segura para a cache, não é segura em conversas com vários turnos, pelo que a memória é combinada/adicionada no início como a primeira mensagem de sistema. A predefinição inclui apenas xiaomi-mimo/mimo; acrescente endpoints compatíveis com OpenAI alojados localmente (por exemplo, Qwen3.5+/3.6) cujo modelo de chat imponha a mesma restrição de uma única mensagem de sistema inicial. |
Exemplo de Docker com pouca RAM
128 destina-se apenas ao painel. Os agentes de programação neste heap apresentam FATAL ERROR durante pedidos longos a /v1/responses. Não utilize este exemplo como gateway para Claude/Codex/Grok.
OMNIROUTE_MEMORY_MB=128
PROMPT_CACHE_MAX_SIZE=20
PROMPT_CACHE_MAX_BYTES=524288 # 512 KB
SEMANTIC_CACHE_MAX_SIZE=25
SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MB
STREAM_HISTORY_MAX=10
18. Sincronização de preços
Sincronização automática dos dados de preços dos modelos a partir de fontes externas.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
PRICING_SYNC_ENABLED |
false |
src/lib/pricingSync.ts |
Sincronização periódica de preços opcional. |
PRICING_SYNC_INTERVAL |
86400 (24h) |
src/lib/pricingSync.ts |
Intervalo de sincronização, em segundos. |
PRICING_SYNC_SOURCES |
litellm |
src/lib/pricingSync.ts |
Fontes de dados separadas por vírgulas. |
Sincronização do ELO da Arena
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
ARENA_ELO_SYNC_ENABLED |
true |
src/shared/constants/featureFlagDefinitions.ts |
Sincronização periódica do ELO da tabela classificativa da Arena AI, configurável nas funcionalidades experimentais do Painel ou com false para a desativar. |
MODELS_CATALOG_PREFIX_MODE |
dual |
src/shared/constants/featureFlagDefinitions.ts, src/app/api/v1/models/catalog.ts |
Forma do prefixo utilizada nos identificadores de modelos em GET /v1/models. dual anuncia tanto o prefixo curto do alias como o prefixo canónico do fornecedor para cada modelo (retrocompatibilidade — aproximadamente duplica o catálogo); alias emite um identificador por modelo; canonical emite apenas o prefixo completo do identificador do fornecedor (os fornecedores cujo alias já é o identificador canónico mantêm a sua única entrada). Os clientes podem substituir esta definição em cada pedido com ?prefix=alias. Consulte API_REFERENCE. |
ARENA_ELO_SYNC_INTERVAL |
86400 (24h) |
src/lib/arenaEloSync.ts |
Intervalo de sincronização, em segundos. |
Fornecedor do Playground do PromptQL (não oficial/experimental)
Ponte de sessão GraphQL obtida por engenharia inversa para prompt.ql.app (src/shared/constants/providers/web-cookie.ts). Todas as opções são facultativas — as predefinições apontam para os endpoints públicos do playground; substitua-as apenas para uma implementação do PromptQL autoalojada/alternativa.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
PROMPTQL_GRAPHQL_ENDPOINT |
https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql |
open-sse/executors/promptql.ts |
Endpoint GraphQL utilizado para operações de chat/sessão. |
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 o saldo/a utilização de créditos. |
PROMPTQL_TOKEN_REFRESH_URL |
https://auth.pro.ql.app/ddn/project/token |
open-sse/executors/promptql.ts |
Endpoint utilizado para tentar atualizar o token. |
PROMPTQL_POLL_TIMEOUT_MS |
180000 |
open-sse/executors/promptql.ts |
Tempo máximo (ms) para consultar thread_events antes de expirar. |
Fornecedor Web HyperAgent (Não oficial/Experimental)
Ponte de sessão obtida por engenharia inversa para hyperagent.com (src/shared/constants/providers/web-cookie.ts). Opcional — a predefinição aponta para o endpoint público de faturação/utilização; substitua-a apenas para uma implementação HyperAgent autoalojada/alternativa.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
HYPERAGENT_USAGE_URL |
https://hyperagent.com/api/settings/billing/usage |
open-sse/services/usage/hyperagent.ts |
Endpoint utilizado para obter blocos de créditos de faturação/utilização. |
Quotas de utilização do Kilo Code
Consulta do saldo pessoal em USD e da utilização do Kilo Pass para o fornecedor Kilo Code. Opcional — a predefinição aponta para a API pública do Kilo; substitua-a apenas para um relay/fixture de teste. A autenticação utiliza o token de acesso OAuth existente da ligação.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
KILO_API_URL |
https://api.kilo.ai |
open-sse/services/usage/kilocode.ts |
URL base utilizado para obter o saldo pessoal do Kilo Code e a utilização do Kilo Pass. |
Fornecedor Web Adobe Firefly (Não oficial/Experimental)
Atualização de sessão controlada pelo browser para o fornecedor Web Adobe Firefly
(open-sse/services/adobeFireflyBrowserLogin.ts, open-sse/services/adobeFireflySession.ts,
open-sse/services/adobeFireflyClient.ts). Opcional — todas as predefinições estão otimizadas para uma instalação
normal em computador.
Removido em #9255. O antigo runtime do Chrome associado através de CDP (adobeFireflyChromeRuntime.ts) foi substituído por um serviço de início de sessão no browser com Playwright, e as respetivas opções deixaram de existir. As variáveis ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART, bem como ADOBE_FIREFLY_LOGIN_WAIT_MS e ADOBE_FIREFLY_FORTER_WAIT_MS, não são lidas em nenhum ponto da base de código — defini-las não produz qualquer efeito.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
ADOBE_FIREFLY_CHROME_HEADLESS |
0 |
open-sse/services/adobeFireflyBrowserLogin.ts |
Defina como 1 para utilizar o Chrome verdadeiramente sem interface gráfica (não funciona para geração; apenas para depuração). |
ADOBE_FIREFLY_BROWSER_REFRESH |
1 |
open-sse/services/adobeFireflySession.ts |
Adesão/desativação do aquecimento proativo do browser. 0 desativa o aquecimento proativo (a recuperação de erros 408 a meio de um lote continua a aplicar-se). |
ADOBE_FIREFLY_SESSION_DISK |
1 |
open-sse/services/adobeFireflySession.ts |
Defina como 0 para desativar a persistência da sessão do Adobe Firefly no disco. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
(não definido) | open-sse/services/adobeFireflySession.ts |
Intervalo mínimo (ms) imposto entre envios sucessivos, substituindo a predefinição incorporada. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
(não definido) | open-sse/services/adobeFireflySession.ts |
Intervalo adicional (ms) acrescentado após um lote bem-sucedido, substituindo a predefinição incorporada. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
(não definido) | open-sse/services/adobeFireflyClient.ts |
Atraso base (ms) antes do envio de um pedido de geração, substituindo a predefinição incorporada. |
19. Sincronização de modelos (Desenvolvimento)
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
MODELS_DEV_SYNC_ENABLED |
(não definida) | src/lib/modelsDevSync.ts |
Substituição rígida para a sincronização de preços do models.dev. Não definida = respeita Definições > IA (modelsDevSyncEnabled). 0/false/off/no prevalece sobre a BD e ignora tanto a sincronização periódica como as análises SQL/JSON de getModelsDevPricing() (recuperação quando o painel está bloqueado no mesmo ciclo de eventos). 1/true/on/yes força a ativação da sincronização. Guardar/limpar preços continua a chamar backupDbFile("pre-write"), que não efetua qualquer operação durante a limitação de 60 minutos ou com DISABLE_SQLITE_AUTO_BACKUP. |
MODELS_DEV_SYNC_INTERVAL |
86400 (24 h) |
src/lib/modelsDevSync.ts |
Intervalo de sincronização do catálogo de modelos durante o desenvolvimento, em segundos. |
CONTEXT_WINDOW_RECONCILE_INTERVAL |
86400 (24 h) |
src/lib/contextWindowResolver.ts |
Intervalo (segundos) para o reconciliador autocorretivo da janela de contexto (5004): fixa as janelas declaradas pelo fornecedor, obtidas através da deteção em /models, como substituições auto:discovery quando divergem do catálogo. Defina como 0 para desativar. Reutiliza dados já sincronizados (sem nova obtenção); nunca substitui substituições manual. |
20. Definições específicas do fornecedor
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OPENROUTER_CATALOG_TTL_MS |
86400000 (24 h) |
src/lib/catalog/openrouterCatalog.ts |
TTL da cache do catálogo de modelos do OpenRouter. |
MODEL_CATALOG_INCLUDE_NAMES |
true |
src/shared/constants/featureFlagDefinitions.ts |
Inclui campos name de apresentação nas respostas de /v1/models. Desative para clientes que esperem apenas IDs. |
CATALOG_BUILD_TIMEOUT_MS |
8000 (8 s) |
src/app/api/v1/models/catalogCache.ts |
Limite de espera no percurso a frio para uma reconstrução agregada do catálogo através de GET /v1/models (#12627). Em caso de tempo limite, é devolvida uma última resposta 200 válida, caso exista. |
OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS |
2592000000 (30 dias) |
src/lib/db/models/activeSyncedCatalog.ts |
Período após o qual a lista de modelos sincronizada de uma ligação deixa de ser autoritativa para o encaminhamento, recorrendo então ao registo (#12849). As linhas sem carimbo de data/hora são consideradas obsoletas. |
NANOBANANA_POLL_TIMEOUT_MS |
120000 |
open-sse/handlers/imageGeneration.ts |
Tempo máximo de espera por tarefas de geração de imagens do NanoBanana. |
NANOBANANA_POLL_INTERVAL_MS |
2500 |
open-sse/handlers/imageGeneration.ts |
Frequência de consulta do estado das tarefas do NanoBanana. |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
8000 |
open-sse/services/adobeFireflyUpscale.ts |
Atraso base da espera exponencial entre novas tentativas de submissão de aumento de resolução ao Adobe Firefly. |
AWS_REGION |
(não definido) | src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts |
Região utilizada para construir pontos finais do AWS Bedrock (Kiro, áudio). |
AWS_DEFAULT_REGION |
(não definido) | src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts |
Valor de contingência quando AWS_REGION não está definido. |
CLOUDFLARE_ACCOUNT_ID |
(não definido) | open-sse/executors/cloudflare-ai.ts |
ID da conta do Cloudflare Workers AI. |
CLOUDFLARE_PLAYGROUND_CHROME_PATH |
(não definido) | open-sse/executors/cloudflare-playground.ts |
Caminho completo para o binário do Chrome para computador do executor do Cloudflare AI Playground, utilizado quando a verificação da assinatura do modo sem interface bloqueia o Chromium incluído no Playwright. |
CLOUDFLARE_API_BASE |
https://api.cloudflare.com/client/v4 |
src/app/api/settings/proxy/cloudflare-deploy/route.ts |
Substitui a base da API REST do Cloudflare utilizada pelo implementador do relé Workers do conjunto de proxies (#4640 / 9router#1360). |
NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx |
Nome predefinido do projeto do worker sugerido na janela modal «Implementar relé» do conjunto de proxies. |
NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
Defina como false para ocultar a opção de relé do Cloudflare Workers no separador Conjunto de proxies. |
CLOUDFLARED_BIN |
deteção automática | src/lib/cloudflaredTunnel.ts |
Caminho personalizado para o binário cloudflared. |
CLOUDFLARED_PROTOCOL |
http2 |
src/lib/cloudflaredTunnel.ts |
Protocolo de transporte do túnel: http2 (predefinição), quic ou auto. |
CLOUDFLARED_CONFIG |
(não definido) | src/lib/cloudflaredTunnel.ts |
Caminho para um config.yml do cloudflared gerido localmente (com tunnel:, credentials-file:, ingress:). Quando definido, o OmniRoute executa tunnel --config <path> run (túnel com nome) em vez de um túnel rápido efémero. |
CLOUDFLARED_HOSTNAME |
(da entrada de configuração) | src/lib/cloudflaredTunnel.ts |
Substituição do nome de anfitrião público do túnel com nome (por exemplo, ai.example.com), comunicado como publicUrl/apiUrl. Quando não está definido, é lido a partir do primeiro nome de anfitrião de ingress da configuração. |
DENO_DEPLOY_API_BASE |
https://api.deno.com/v2 |
src/app/api/settings/proxy/deno-deploy/route.ts |
Substitui a base da API REST do Deno Deploy utilizada pelo implementador do relay do conjunto de proxies (#4643 / 9router#1437). |
NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT |
omniroute-deno-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx |
Nome predefinido da aplicação Deno Deploy sugerido na janela modal «Deploy Relay» do conjunto de proxies. |
NEXT_PUBLIC_DENO_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
Defina como false para ocultar a opção de relay do Deno Deploy no separador Proxy Pool. |
SEARCH_CACHE_TTL_MS |
300000 (5 min) |
open-sse/services/searchCache.ts |
TTL da colocação em cache das respostas da API de pesquisa (Perplexity, Brave, etc.). |
ENABLE_CC_COMPATIBLE_PROVIDER |
false |
src/shared/utils/featureFlags.ts |
Apresenta a interface experimental de fornecedores compatíveis com CC para relays exclusivos do Claude Code. |
NINEROUTER_HOST |
127.0.0.1 |
open-sse/executors/ninerouter.ts |
Substitui o anfitrião no qual a instância incorporada do 9router escuta. |
NINEROUTER_PORT |
20130 |
open-sse/executors/ninerouter.ts |
Substitui a porta na qual a instância incorporada do 9router escuta. |
EMBED_WS_PROXY_HOST |
127.0.0.1 |
src/lib/services/embedWsProxy.ts |
Anfitrião de associação para o proxy WebSocket do serviço incorporado (apenas loopback por predefinição). |
EMBED_WS_PROXY_PORT |
20131 |
src/lib/services/embedWsProxy.ts |
Porta do servidor proxy WebSocket do serviço incorporado. |
CLIPROXYAPI_HOST |
127.0.0.1 |
open-sse/executors/cliproxyapi.ts |
Anfitrião da ponte CLIProxyAPI (integração legada). |
CLIPROXYAPI_PORT |
5544 |
open-sse/executors/cliproxyapi.ts |
Porta da ponte CLIProxyAPI. |
CLIPROXYAPI_API_KEY |
(vazio) | open-sse/handlers/chatCore/cliproxyapiCredentials.ts |
Chave de contingência do plano de dados quando a definição cliproxyapi_api_key está ausente. |
CLIPROXYAPI_MANAGEMENT_KEY |
(vazio) | src/lib/services/cliproxyAccountHealth.ts |
Chave de gestão para leituras do estado de funcionamento das contas a partir de uma instância CLIProxyAPI gerida externamente. |
CLIPROXYAPI_CONFIG_DIR |
~/.cli-proxy-api |
src/lib/versionManager/processManager.ts |
Diretório de configuração da CLIProxyAPI. |
CLIPROXY_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interface do anfitrião na qual o docker-compose publica o sidecar cliproxyapi (#12578). O respetivo volume de dados contém credenciais OAuth/API do fornecedor e a imagem fixada não tem qualquer substituição de api-keys do plano de dados baseada em variáveis de ambiente (apenas um config.yaml montado), pelo que 0.0.0.0 expõe um serviço que contém credenciais a toda a LAN. |
MUX_SERVICE_PORT |
8322 |
src/lib/services/bootstrap.ts |
Substitui a porta na qual o daemon incorporado de orquestração de agentes Mux (coder/mux) escuta (sempre em 127.0.0.1). |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Anfitrião de associação/ligação do serviço incorporado Dario (apenas loopback por predefinição). |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Porta do serviço incorporado Dario. |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Anfitrião de associação/ligação do serviço incorporado Dario (apenas loopback por predefinição). |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Porta do serviço incorporado Dario. |
LOCAL_HOSTNAMES |
(vazio) | open-sse/config/providerRegistry.ts |
Nomes de anfitrião adicionais, separados por vírgulas, tratados como «locais» (nomes de serviços Docker, etc.). |
ENABLE_CC_COMPATIBLE_PROVIDER destina-se apenas a relays de terceiros que aceitam exclusivamente clientes Claude Code. O OmniRoute reescreve os pedidos para que esses relays os aceitem. Se apenas pretende utilizar a CLI do Claude Code, ou se não tem a certeza do que são estes relays, mantenha esta opção desativada e adicione, em alternativa, um fornecedor normal compatível com Anthropic.
21. Estado dos Proxies
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
src/lib/proxyHealth.ts |
Tempo limite da verificação rápida de estado. |
PROXY_LATENCY_WINDOW_HOURS |
3 |
src/lib/db/proxies.ts |
Janela temporal (em horas) para calcular a latência média dos proxies candidatos na estratégia de agrupamento otimizada para a latência. |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
src/lib/proxyHealth.ts |
TTL da cache de resultados da verificação de estado. |
PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS |
2000 |
src/lib/proxyHealth.ts |
TTL da cache para sondagens de estado de proxies que falharam. Mantenha este valor inferior a PROXY_HEALTH_CACHE_TTL_MS para que tempos limite transitórios dos proxies sob concorrência elevada sejam repetidos rapidamente, sem desativar a falha rápida para proxies efetivamente inativos. |
PROXY_HEALTH_ENABLED |
true |
src/lib/proxyHealth/scheduler.ts |
Defina como false para desativar o agendador de estado dos proxies em segundo plano, que sonda periodicamente os proxies registados. |
PROXY_HEALTH_INTERVAL_MS |
600000 |
src/lib/proxyHealth/scheduler.ts |
Intervalo de varrimento do agendador de estado em segundo plano, em ms (mínimo de 60000). |
PROXY_HEALTH_TEST_URL |
https://httpbin.org/ip |
src/lib/proxyHealth/probeTarget.ts |
Alvo da sonda de acessibilidade utilizado pelo agendador e pelo endpoint /api/settings/proxies/auto-test. Aponte-o para um URL interno/alojado localmente para evitar o valor público predefinido. |
PROXY_HEALTH_TEST_CONCURRENCY |
10 |
src/lib/proxyHealth/probeTarget.ts |
Número de sondas iniciadas em simultâneo por lote, partilhado pelo agendador e pelo endpoint /api/settings/proxies/auto-test. O mínimo é 1 e o máximo é 50. |
PROXY_HEALTH_TEST_STAGGER_MS |
100 |
src/lib/proxyHealth/probeTarget.ts |
Atraso em ms entre o início de duas sondas dentro de um lote. Sem este atraso, todo o lote é enviado ao mesmo tempo e um IP de saída partilhado pode acionar o limite de pedidos de um alvo. Defina como 0 para desativar o espaçamento; o máximo é 5000. |
PROXY_HEALTH_USE_PROVIDER_TARGET |
true |
src/lib/proxyHealth/providerProbeTarget.ts |
Defina como "false" para deixar de sondar o anfitrião real do fornecedor atribuído a um proxy (GET /models, sem chave de API) e utilizar sempre PROXY_HEALTH_TEST_URL. |
PROXY_HEALTH_AUTO_DEACTIVATE |
false |
src/lib/proxyHealth/statusPolicy.ts |
Quando definido como false (predefinição), as sondas automáticas de acessibilidade (o agendador + o botão "Testar tudo" de /api/settings/proxies/auto-test) são apenas de leitura e nunca alteram o estado de um proxy — apenas o operador o define como ativo/inativo, para que uma sonda instável não possa deixar um proxy atribuído inutilizável (#6246). Defina como true para restaurar o comportamento anterior de testar e definir o estado. |
PROXY_POOL_EGRESS_OBSERVATION |
false |
src/shared/utils/featureFlags.ts |
Sinalizador de funcionalidade de ativação opcional (consulte FEATURE_FLAGS.md; uma substituição na BD do painel tem precedência). true (ou 1, yes) apresenta a observação apenas de leitura da saída do conjunto sob um conjunto de proxies no painel (IPs de saída distintos, ligações e o maior número observado por trás de um IP nas últimas 24 h, com base no registo do proxy). Nunca é utilizado para encaminhamento. |
PROXY_AUTO_REMOVE |
false |
src/lib/proxyHealth/scheduler.ts |
Defina como true para permitir que o agendador remova automaticamente proxies após falhas consecutivas repetidas. |
PROXY_AUTO_REMOVE_AFTER |
3 |
src/lib/proxyHealth/scheduler.ts |
Número de falhas consecutivas antes de o agendador remover automaticamente um proxy (quando PROXY_AUTO_REMOVE=true). |
PROXY_AUTO_DISABLE |
false |
src/lib/proxyHealth/scheduler.ts |
Defina como true para permitir que o agendador desative de forma reversível (estado dead, nunca eliminado) um proxy após falhas consecutivas repetidas, em vez de o remover. Alternativa não destrutiva a PROXY_AUTO_REMOVE: o proxy é imediatamente excluído da resolução do conjunto/rotação (o filtro de estado ativo utilizado pela resolução do conjunto de âmbito já o exclui) e é automaticamente reativado assim que voltar a passar nas sondagens. Partilha o limiar PROXY_AUTO_REMOVE_AFTER. Se ambos os sinalizadores forem true, PROXY_AUTO_REMOVE prevalece. |
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK |
false |
src/shared/constants/featureFlagDefinitions.ts |
Permite que os fluxos de validação OAuth e de fornecedores ignorem um proxy fixado e estabeleçam ligação diretamente quando as pré-verificações de acessibilidade do proxy falham. A precedência efetiva é: substituição da BD de Sinalizadores de Funcionalidades > variável de ambiente > predefinição. |
RATE_LIMIT_MAX_WAIT_MS |
30000 (30 s) |
open-sse/services/rateLimitManager.ts |
Tempo máximo de espera perante um erro 429 antes de o pedido falhar. |
RATE_LIMIT_EXECUTION_MAX_WAIT_MS |
600000 (10 min) |
open-sse/services/rateLimitManager.ts |
Limite máximo de tempo durante o qual um pedido admitido pode permanecer em execução antes de a respetiva reserva de limite de taxa expirar — dissociado do limite de espera na fila para que o início lento da obtenção em gateways não incrementais não esgote o tempo limite (#12027). |
RATE_LIMIT_MAX_QUEUE_DEPTH |
0 (desativado) |
open-sse/services/rateLimitManager.ts |
Limite de admissão na fila: rejeita com um erro 429 queue_full assim que este número de pedidos já estiver na fila. 0 = ilimitado (predefinição). |
RATE_LIMIT_AUTO_ENABLE |
(não definido) | open-sse/services/rateLimitManager.ts |
Força a ativação/desativação automática da salvaguarda de limite de taxa, independentemente da definição persistida no Painel. Aceita true/1/on para forçar a ativação e false/0/off para forçar a desativação. |
PROVIDER_COOLDOWN_ENABLED |
(não definido → desativado) | open-sse/services/providerCooldownTracker.ts |
Ativa opcionalmente o controlo global, entre pedidos, do período de espera de fornecedores/ligações. DESATIVADO por predefinição (sobrepõe-se ao Período de Espera da Ligação/Disjuntor do Fornecedor). Aceita true/1/on para ativar. |
PROVIDER_COOLDOWN_MIN_MS |
5000 |
open-sse/services/providerCooldownTracker.ts |
Período de espera mínimo (ms) antes de voltar a tentar um fornecedor/uma ligação que tenha falhado. Aumenta exponencialmente com falhas consecutivas. Utilizado apenas quando PROVIDER_COOLDOWN_ENABLED está ativo. |
PROVIDER_COOLDOWN_MAX_MS |
300000 (5 min) |
open-sse/services/providerCooldownTracker.ts |
Limite máximo do período de espera (ms) antes de um fornecedor/uma ligação com falha voltar a ser tentado, independentemente das circunstâncias. Utilizado apenas quando PROVIDER_COOLDOWN_ENABLED. |
STREAM_RECOVERY_ENABLED |
(não definido → desativado) | src/lib/resilience/settings.ts (valor inicial) → open-sse/services/streamRecovery.ts (lógica) |
O que faz: recuperação transparente de streams ascendentes truncados (port do free-claude-code). Retém a janela SSE inicial até STREAM_RECOVERY.HOLDBACK_MS (750 ms), para que um corte pré-confirmação — que ocorre antes de qualquer byte chegar ao cliente — seja reaberto e repetido de forma invisível. Quando ativar: fornecedores/streams ascendentes instáveis que são frequentemente truncados com 0 bytes no início do stream; mantenha DESATIVADO se não puder tolerar até 750 ms adicionais no tempo até ao primeiro token em todos os streams. Aceita true/1/on. Define o valor inicial da definição persistente de Resiliência; depois de definida, prevalece a definição do Dashboard. |
STREAM_RECOVERY_MIDSTREAM_ENABLED |
(não definido → desativado) | src/lib/resilience/settings.ts (valor inicial) → open-sse/services/streamRecovery.ts (lógica) |
O que faz: continuação a meio do stream (Fase 4.4) — após um truncamento pós-confirmação (os bytes já chegaram ao cliente), efetua um novo pedido com o texto parcial como preenchimento prévio do assistente e concatena o sufixo em falta. Apenas para streams de texto simples compatíveis com OpenAI; nunca é acionada enquanto estiver em curso uma chamada de ferramenta. Quando ativar: gerações longas que são interrompidas a meio da resposta e caso aceite que a parte final recuperada chegue de uma só vez, em vez de token a token. Independente de STREAM_RECOVERY_ENABLED (perfil de risco diferente). Aceita true/1/on. |
STREAM_THROUGHPUT_WATCHDOG_ENABLED |
(não definido → desativado) | src/lib/resilience/settings.ts → open-sse/services/throughputWatchdog.ts |
Monitor de débito de saída útil para streams ativos, de ativação opcional. Deteta streams que continuam a enviar blocos, mas permanecem abaixo da taxa configurada de saída do assistente; sinais de atividade, eventos de utilização, deltas vazios e fases de ferramentas/raciocínio não são interpretados como progresso. Separado dos tempos limite por inatividade e dos prazos rígidos. |
STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
Período de tolerância antes da avaliação do débito, limitado a 0–600000 ms. |
STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
Janela móvel de saída útil, limitada a 1000–600000 ms; é necessária uma janela completa antes da interrupção. |
STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND |
4 |
src/lib/resilience/settings/normalize.ts |
Taxa mínima de bytes UTF-8 da saída do assistente (estimativa conservadora de tokens), limitada a 1–1000000. |
STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES |
1 |
src/lib/resilience/settings/normalize.ts |
Amostra mínima diferente de zero de saída útil considerada mensurável, limitada a 1–1000000 bytes. |
HEALTHCHECK_STAGGER_MS |
3000 |
src/lib/tokenHealthCheck.ts |
Intervalo de escalonamento (ms) entre as verificações do estado dos tokens dos fornecedores durante o arranque. |
HEALTHCHECK_JITTER_MIN_MS |
500 |
src/lib/tokenHealthCheck.ts |
Variação aleatória mínima (ms) adicionada a HEALTHCHECK_STAGGER_MS entre as verificações do estado dos tokens dos fornecedores, para evitar picos de pedidos (Problema #1220). |
HEALTHCHECK_JITTER_MAX_MS |
5000 |
src/lib/tokenHealthCheck.ts |
Variação aleatória máxima (ms) adicionada a HEALTHCHECK_STAGGER_MS entre as verificações do estado dos tokens dos fornecedores, para evitar picos de pedidos (Problema #1220). |
HEALTHCHECK_BATCH_SIZE |
20 |
src/lib/tokenHealthCheck.ts |
Tamanho do lote de verificações simultâneas para a análise de integridade dos tokens no arranque; valores maiores verificam mais ligações em paralelo, enquanto valores menores reduzem a carga em rajada (Problema #7875, regressão de #7719). |
REQUEST_RETRY |
2 |
src/sse/services/cooldownAwareRetry.ts |
Número de novas tentativas automáticas em respostas de cooldown específicas do modelo antes de devolver o erro ao cliente. |
MAX_RETRY_INTERVAL_SEC |
30 |
src/sse/services/cooldownAwareRetry.ts |
Intervalo máximo de espera progressiva (segundos) entre novas tentativas após cooldown. Limitado por este valor, independentemente do Retry-After a montante. |
HEADROOM_URL |
http://localhost:8787 |
src/lib/headroom/detect.ts |
URL do proxy de poupança de tokens Headroom. Por predefinição, o ciclo de vida do painel (api/headroom/*) inicia uma CLI headroom-ai local na interface de loopback; substitua apenas para apontar para um proxy sidecar Docker externo. |
Constantes de ajuste da recuperação de streams
O comportamento de retenção da recuperação é ajustado por constantes codificadas diretamente em
open-sse/config/constants.ts (STREAM_RECOVERY), apresentadas aqui como referência —
alterá-las requer uma edição do código, não uma variável de ambiente:
STREAM_RECOVERY.HOLDBACK_MS = 750— durante quanto tempo a janela SSE inicial é retida para que uma interrupção prematura possa ser novamente tentada antes de qualquer byte ser enviado ao cliente.STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536— limite máximo absoluto da janela retida; é efetuada a confirmação (esvaziamento + passagem direta) assim que este número de bytes é acumulado, independentemente do temporizador.STREAM_RECOVERY.EARLY_RETRY_MAX = 4— número máximo de reaberturas transparentes do stream a montante enquanto a retenção ainda não tiver sido confirmada.
Limite de taxa por janela deslizante e por fornecedor (sem variável de ambiente): o mecanismo de fallback do limite de taxa por janela deslizante e por fornecedor, portado do FCC, existe no código (
open-sse/services/providerDefaultRateLimit.ts, ligado através deopen-sse/services/rateLimitManager.ts), mas é distribuído com um mapa predefinido vazio e atualmente não possui nenhuma variável de ambiente para operadores — é ativado apenas através de um hook de teste / uma edição do código. Intencionalmente, não consta da tabela acima. O limitador de retransmissão por(token, IP)que possui um parâmetro de configuração éRELAY_IP_PER_MINUTE(§3 Rede e portas).
22. Depuração
Caution
Estas variáveis produzem uma saída detalhada e podem expor dados sensíveis. Nunca as ative em produção.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
CURSOR_DEBUG |
(não definida) | open-sse/executors/cursor.ts |
Defina como 1 para ativar registos detalhados do executor do Cursor (segmentos SSE descodificados, etc.). |
CURSOR_STREAM_DEBUG |
(não definida) | open-sse/executors/cursor.ts |
Alias retrocompatível de CURSOR_DEBUG. |
CURSOR_DUMP_FILE |
(não definida) | open-sse/executors/cursor.ts |
Caminho de ficheiro opcional que recebe os segmentos brutos descodificados do Cursor quando CURSOR_DEBUG=1. |
CURSOR_STREAM_TIMEOUT_MS |
300000 |
open-sse/executors/cursor.ts |
Tempo limite de inatividade do fluxo (ms) para o executor do Cursor. |
CURSOR_KV_GRACE_MS |
2000 |
open-sse/executors/cursor.ts |
Período de tolerância (ms) após um terminador suave kv_after_text do compositor quando ainda existem bytes em memória intermédia — dá tempo a uma chamada de ferramenta exec_mcp subsequente para concluir a respetiva trama. |
CURSOR_TOOL_DIRECTIVE |
ativada (!== "0") |
open-sse/executors/cursor.ts |
Diretiva de confirmação de ferramenta que faz com que o composer-2.5 emita chamadas de ferramentas de forma fiável. Defina como 0 para desativar. |
OMNIROUTE_SYSTEM_INSTRUCTION_APPEND |
(não definida) | open-sse/translator/request/claude-to-openai.ts, open-sse/translator/response/openai-to-claude.ts |
Texto de instrução do sistema definido pelo operador, anexado à mensagem do sistema APÓS a tradução (injeção pós-tradução), chegando aos caminhos codex/Responses e /v1/messages. Também é utilizado como prefixo da diretiva removido dos blocos de preâmbulo do sistema repetidos. Deixe por definir para desativar. |
CURSOR_IMAGE_FETCH_TIMEOUT_MS |
15000 |
open-sse/utils/cursorImages.ts |
Tempo limite de obtenção por imagem (ms) para entradas visuais image_url remotas. |
CURSOR_STATE_DB_PATH |
(detetada) | open-sse/utils/cursorVersionDetector.ts |
Substitui a pesquisa da base de dados de estado do Cursor IDE utilizada para detetar a versão do IDE. |
CURSOR_AGENT_CLI_VERSION |
(detetar / fixar) | open-sse/utils/cursorAgentCliVersion.ts |
ID da compilação da CLI do Agent (YYYY.MM.DD-<hash>) para x-cursor-client-version: cli-… no Agent Run. |
CURSOR_AGENT_BIN |
(não definida) | open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Caminho para o binário do Cursor Agent utilizado para gerar imagens. Se não estiver definida, o processador utiliza providerSpecificData.agentBin e, em seguida, PATH. |
CURSOR_IMG_TIMEOUT_MS |
210000 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Tempo total por imagem (ms) para tarefas de imagem do Cursor Agent. |
CURSOR_IMG_MAX_CONCURRENT |
2 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Limite de simultaneidade do posto partilhado para tarefas de imagem do Cursor. |
CURSOR_IMG_MODEL |
pedido / auto |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Substitui --model da CLI do Cursor para tarefas de imagem. |
UC_IMAGE_POLL_INTERVAL_MS |
2000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
Intervalo de consulta de resultados da geração de imagens da UC (uncensored.com) (ms). |
UC_IMAGE_POLL_TIMEOUT_MS |
60000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
Tempo total limite da consulta de resultados da geração de imagens da UC (ms). |
UC_VIDEO_POLL_INTERVAL_MS |
3000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
Intervalo de consulta de resultados da geração de vídeos da UC (uncensored.com) (ms). |
UC_VIDEO_POLL_TIMEOUT_MS |
300000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
Tempo total limite da consulta de resultados da geração de vídeos da UC (ms). |
CURSOR_DATA_DIR |
(detetado) | open-sse/utils/cursorAgentCliVersion.ts |
Substitui o diretório de dados da CLI do Cursor Agent (…/versions/<id>); é a mesma variável utilizada pelo agente oficial. |
CURSOR_TOKEN |
(não definida) | scripts/ad-hoc/cursor-tap.cjs |
Token de portador direto do Cursor utilizado pelas ferramentas de desenvolvimento. |
OMNIROUTE_LOG_REQUEST_SHAPE |
desativado (ativação explícita através de "1") |
src/app/api/v1/chat/completions/route.ts |
Regista marcadores de tipo e comprimento do conteúdo para payloads grandes de conversação quando definido como "1". Desativado por predefinição para reduzir o ruído dos registos. |
DEBUG_RESPONSES_SSE_TO_JSON |
(não definida) | open-sse/handlers/responseTranslator.ts |
Defina como true para registar detalhes da tradução SSE→JSON da Responses API. |
DEBUG_CLAUDE_NONSTREAM |
(não definida) | open-sse/handlers/responseTranslator.ts |
Defina como true para expor segmentos textContent vazios no caminho de tradução de respostas do Claude (apenas para depuração). |
NEXT_PUBLIC_OMNIROUTE_E2E_MODE |
(não definida) | Estrutura de testes E2E | Defina como true para ativar o modo de teste E2E (autenticação menos restritiva, mecanismos de teste). |
23. Integração com o GitHub
Permita que os utilizadores comuniquem problemas diretamente a partir do Dashboard.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
GITHUB_ISSUES_REPO |
(não definido) | src/app/api/v1/issues/report/route.ts |
Repositório no formato owner/repo. |
GITHUB_ISSUES_TOKEN |
(não definido) | src/app/api/v1/issues/report/route.ts |
Token de acesso pessoal do GitHub com o âmbito issues:write. |
GITHUB_TOKEN |
(não definido) | triagem de problemas/auxiliares do agente na cloud | Token genérico de acesso ao GitHub utilizado como alternativa a GITHUB_ISSUES_TOKEN e pelos auxiliares do agente na cloud em src/lib/cloudAgent/*. |
Cenários de Implementação
Para obter orientações de SRE sobre o backend de retransmissão (comportamento de ts/bifrost/auto, posicionamento de 9router face ao CLIProxyAPI e estratégia de contingência para elevado débito), consulte Estratégia do Backend de Retransmissão.
Desenvolvimento Local Mínimo
JWT_SECRET=$(openssl rand -base64 48)
API_KEY_SECRET=$(openssl rand -hex 32)
INITIAL_PASSWORD=dev123
PORT=20128
NODE_ENV=development
Produção com Docker
JWT_SECRET=<generated>
API_KEY_SECRET=<generated>
INITIAL_PASSWORD=<generated>
STORAGE_ENCRYPTION_KEY=<generated>
DATA_DIR=/data
PORT=20128
API_PORT=20129
NODE_ENV=production
AUTH_COOKIE_SECURE=true
REQUIRE_API_KEY=true
NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
BASE_URL=http://localhost:20128
OMNIROUTE_MEMORY_MB=8192
CORS_ORIGIN=https://your-frontend.example.com
Ambiente Isolado / CI
JWT_SECRET=test-jwt-secret-for-ci
API_KEY_SECRET=test-api-key-secret-for-ci
INITIAL_PASSWORD=testpass
NODE_ENV=production
OMNIROUTE_DISABLE_BACKGROUND_SERVICES=true
APP_LOG_TO_FILE=false
VPS com Proxy Inverso (nginx + Cloudflare)
JWT_SECRET=<generated>
API_KEY_SECRET=<generated>
STORAGE_ENCRYPTION_KEY=<generated>
PORT=20128
AUTH_COOKIE_SECURE=true
REQUIRE_API_KEY=true
NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
BASE_URL=http://127.0.0.1:20128
CORS_ORIGIN=https://omniroute.example.com
ENABLE_TLS_FINGERPRINT=true
CLI_COMPAT_ALL=1
24. Sandbox de Skills (v3.8.0+)
Limites e controlos de segurança aplicados quando a framework Skills (src/lib/skills/) executa automatizações definidas pelo utilizador num ambiente isolado.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
SKILLS_SANDBOX_TIMEOUT_MS |
10000 (10 s) |
src/lib/skills/builtins.ts |
Limite de tempo real por execução para código de skills no sandbox. Limite rígido; qualquer execução mais longa é terminada. |
SKILLS_EXECUTION_TIMEOUT_MS |
(recorre a SKILLS_SANDBOX_TIMEOUT_MS) |
src/lib/skills/ |
Limite de tempo da orquestração de skills de alto nível. Defina-o acima de SKILLS_SANDBOX_TIMEOUT_MS para permitir fluxos com vários passos. |
SKILLS_MAX_FILE_BYTES |
1048576 (1 MB) |
src/lib/skills/builtins.ts |
Número máximo de bytes que uma skill pode ler de um único ficheiro no sandbox. |
SKILLS_MAX_HTTP_RESPONSE_BYTES |
256000 (250 KB) |
src/lib/skills/builtins.ts |
Número máximo de bytes capturados de uma única resposta HTTP numa skill. |
SKILLS_MAX_SANDBOX_OUTPUT_CHARS |
100000 |
src/lib/skills/builtins.ts |
Limite rígido de carateres de stdout/stderr devolvidos por uma invocação do sandbox. |
SKILLS_SANDBOX_NETWORK_ENABLED |
false |
src/lib/skills/builtins.ts |
Defina como 1/true para permitir ligações de saída a partir do sandbox. Por predefinição, é isolado por segurança. |
SKILLS_ALLOWED_SANDBOX_IMAGES |
(vazio) | src/lib/skills/builtins.ts |
Lista de imagens de contentor permitidas para execução no sandbox, separadas por vírgulas. Vazio significa apenas a predefinição integrada. |
SKILLS_SANDBOX_DOCKER_IMAGE |
(predefinição integrada) | src/lib/skills/ |
Imagem de contentor utilizada ao iniciar um sandbox baseado em Docker. Substitua-a para fixar uma imagem base personalizada e reforçada. |
SKILLS_SANDBOX_RUNTIME |
auto |
src/lib/skills/sandbox.ts, src/lib/skills/containerProvider.ts |
Runtime de contentores para o isolamento de skills: auto | docker | apple | wsl | orbstack | podman. auto seleciona o melhor runtime instalado para o SO anfitrião (Apple Container/OrbStack no macOS, WSL Container no Windows, Podman no Linux), recorrendo ao Docker como alternativa. |
Caution
Ativar
SKILLS_SANDBOX_NETWORK_ENABLED=trueabre um caminho de saída para código arbitrário de skills. Combine esta opção comOUTBOUND_SSRF_GUARD_ENABLED=truee uma política rigorosa deCORS_ORIGIN/proxy em implementações partilhadas.
25. Quotas de fornecedores, túneis, cópias de segurança e diversos do runtime
Endpoints de quotas de fornecedores, túneis de rede (Tailscale, Ngrok, proxy de depuração MITM), o pool de saída 1Proxy, cópias de segurança da base de dados e pequenas substituições específicas de funcionalidades referenciadas pela camada do executor ou por scripts.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
REDIS_URL |
redis://localhost:6379 |
src/shared/utils/rateLimiter.ts |
String de ligação ao Redis para o backend do limitador de taxa. |
ALIBABA_CODING_PLAN_HOST |
(host de produção) | open-sse/services/bailianQuotaFetcher.ts |
Substitui o host utilizado para obter as quotas do plano de programação do Alibaba Bailian. |
ALIBABA_CODING_PLAN_QUOTA_URL |
derivado do host | open-sse/services/bailianQuotaFetcher.ts |
Substituição do URL completo de quotas do Alibaba Bailian. |
QWEN_CLOUD_COOKIE |
(não definido) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Cookie da sessão da consola para o gateway de quotas do Token Plan pessoal do Qwen Cloud / Model Studio (a chave da API de inferência não consegue lê-lo). Copie o cabeçalho completo do pedido Cookie — contém login_qwencloud_ticket — de qualquer chamada a api.json para cs-data.qwencloud.com em home.qwencloud.com › Billing › Subscription (F12 › Network). É sensível e limitado à sessão; dê preferência ao campo qwenCloudCookie por ligação no Dashboard. |
QWEN_CLOUD_SEC_TOKEN |
(não definido) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Substituição manual de sec_token para o gateway da consola do Token Plan. É sensível; quando não está definido, o serviço de obtenção resolve-o a partir do HTML do dashboard utilizando o cookie. |
QWEN_TOKEN_PLAN_HOST |
https://cs-data.qwencloud.com |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Substituição do host do gateway para o serviço de obtenção de quotas do Token Plan pessoal (por exemplo, bailian-singapore-cs.alibabacloud.com para a consola do Model Studio). |
QWEN_TOKEN_PLAN_DASHBOARD_URL |
https://home.qwencloud.com/ |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
URL do dashboard utilizado para resolver sec_token a partir do HTML com sessão iniciada. |
ALIBABA_FREE_TIER_VISION_FE_PATH |
/costing-balance/free-quota-image-video |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Substituição do caminho do front-end da consola para obter a quota gratuita de visão/multimédia do Alibaba Model Studio. |
ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH |
/costing-balance/free-quota-multimodal |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Substituição do caminho do front-end da consola para obter a quota multimodal do nível gratuito do Alibaba Model Studio. |
ALIBABA_FREE_TIER_AUDIO_FE_PATH |
/costing-balance/free-quota-audio |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
Substituição do caminho do front-end da consola para obter a quota de áudio do nível gratuito do Alibaba Model Studio. |
ALIBABA_FREE_TIER_ALLOWLIST_PATH |
(não definido) | open-sse/services/alibabaFreeTierAllowlist.ts |
Caminho opcional para um ficheiro JSON local que substitui a lista de permissões incorporada de modelos de texto do nível gratuito da Alibaba. Se não estiver disponível, utiliza $DATA_DIR/alibaba-free-tier-allowlist.json e, em seguida, config/alibaba-free-tier-allowlist.json. |
CONTEXT_RESERVE_TOKENS |
1024 |
open-sse/services/contextManager.ts |
Tokens reservados para o resultado da conclusão ao calcular os limites do prompt. |
CONTEXT_KEEP_LATEST_IMAGES |
2 |
open-sse/services/contextManager.ts |
Número de imagens inline mais recentes a manter ao remover as mais antigas para caber na janela de contexto (#8560). |
MODEL_ALIAS_COMPAT_ENABLED |
ativado | open-sse/services/model.ts |
Ativa ou desativa a camada de compatibilidade legada de aliases de modelos utilizada por clientes mais antigos. |
OMNIROUTE_EMERGENCY_FALLBACK |
ativado | open-sse/services/emergencyFallback.ts |
Defina como false (ou 0) para desativar o mecanismo de contingência de emergência por esgotamento do orçamento, que redireciona os pedidos falhados para o modelo gratuito nvidia/openai/gpt-oss-120b. A precedência efetiva é: substituição na base de dados de Feature Flags > variável de ambiente > predefinição; se estiver indisponível, o serviço utiliza o valor não processado da variável de ambiente. |
COMMAND_CODE_CALLBACK_PORT |
(não definido) | src/app/api/providers/command-code/auth/shared.ts |
Porta local utilizada para callbacks ao estilo OAuth provenientes do auxiliar da CLI Command Code. |
COMMAND_CODE_VERSION |
0.33.2 |
open-sse/executors/commandCode.ts |
Valor enviado como cabeçalho x-command-code-version ao serviço a montante Command Code. Substitua-o para atualizar a versão da CLI. |
COMMANDCODE_API_URL |
https://api.commandcode.ai |
open-sse/services/usage/command-code.ts |
URL base do serviço a montante de utilização/quota do Command Code usado pela telemetria do coletor de quotas para smartphones. Substitua-a para utilizar uma API Command Code autoalojada/alternativa. |
MITM_LOCAL_PORT |
443 |
src/mitm/server.cjs |
Porta de escuta local para o proxy de depuração MITM. |
MITM_DISABLE_TLS_VERIFY |
0 |
src/mitm/server.cjs |
Defina como 1 para desativar a verificação TLS a montante (apenas para desenvolvimento). |
MITM_IDLE_TIMEOUT_MS |
60000 |
src/mitm/socketTimeouts.ts, src/mitm/server.cjs |
Tempo limite de inatividade do socket (ms) para ligações através do proxy; os sockets que permaneçam inativos além deste período são terminados para evitar fugas de túneis semiabertos. |
MITM_VERBOSE |
1 |
src/mitm/server.cjs, src/mitm/_internal/bypass.cjs |
Nível de detalhe dos registos de decisões de encaminhamento: 0 silencia-os; valores superiores registam mais decisões de bypass/encaminhamento. |
MITM_ROOT_CA_ENABLED |
false |
src/mitm/manager.ts |
Defina como true para aderir ao modelo de AC raiz + certificado folha por anfitrião (#6684). As instalações novas obtêm-no automaticamente; as instalações com um certificado folha legado de confiança preexistente mantêm o certificado SAN fixo legado, a menos que seja solicitada a adesão. |
MITM_CERT_MODE |
legacy |
src/mitm/manager.ts, src/mitm/server.cjs |
Definido PELO gestor MITM para o processo de proxy iniciado (root-ca | legacy) — reflete a decisão de migração do certificado; não se destina a ser definido manualmente. |
OMNIROUTE_NO_SUDO |
0 |
src/mitm/systemCommands.ts |
Defina como 1 (verdadeiro) para remover o sudo inicial dos comandos MITM de confiança em certificados — para implementações sem root/com espaços de nomes de utilizador, nas quais o operador confia manualmente na AC (por exemplo, através do mecanismo de certificados de AC adicionais do Node). |
SKIP_ANTIGRAVITY_DNS |
(não definido) | src/mitm/dns/provision.ts |
Defina como true para ignorar totalmente o aprovisionamento das entradas DNS em /etc/hosts para os nomes de anfitrião do proxy Antigravity — para contentores sem sudo/root disponível. |
OMNIROUTE_SKIP_DNS_WRITE |
(não definido) | src/mitm/dns/dnsConfig.ts |
Defina como 1 para ignorar a escrita no ficheiro hosts ao adicionar/remover entradas DNS — para ambientes de teste em sandbox ou só de leitura. |
OMNIROUTE_SKIP_SYSTEM_TRUST |
0 |
src/mitm/cert/install.ts, src/mitm/tproxy/caTrust.ts |
Proteção exclusiva para testes/CI: defina como 1 para tornar a instalação/desinstalação da confiança em certificados numa operação nula, garantindo que o conjunto de testes nunca altera o repositório de confiança do SO. Definido automaticamente pela configuração dos testes e pelos fluxos de trabalho de CI. |
CHANGELOG_BASE_REF |
(automático) | scripts/check/check-changelog-integrity.mjs |
Referência base explícita para a verificação que impede a eliminação do CHANGELOG (por predefinição, o branch base do PR em CI ou o release/v* mais elevado). |
FREE_PROXY_AUTO_SYNC_ENABLED |
false |
src/lib/freeProxyProviders/scheduler.ts |
Defina como true para ativar o agendador de sincronização automática em segundo plano do conjunto de proxies gratuitos. Requer ativação explícita e está desativado por predefinição. |
FREE_PROXY_AUTO_SYNC_INTERVAL_MS |
1800000 |
src/lib/freeProxyProviders/scheduler.ts |
Intervalo de sincronização automática em milissegundos (predefinição: 30 min). |
FREE_PROXY_1PROXY_ENABLED |
true |
src/lib/freeProxyProviders/oneproxy.ts |
Ativa a fonte de proxies gratuitos 1proxy. Defina como false para desativar. |
FREE_PROXY_1PROXY_API_URL |
(consulte oneproxy.ts) | src/lib/freeProxyProviders/oneproxy.ts |
Substituição do URL da API do 1proxy. |
FREE_PROXY_1PROXY_MAX |
500 |
src/lib/freeProxyProviders/oneproxy.ts |
Número máximo de proxies obtidos do 1proxy por sincronização. |
FREE_PROXY_1PROXY_MIN_QUALITY |
50 |
src/lib/freeProxyProviders/oneproxy.ts |
Limite mínimo da pontuação de qualidade para importações do 1proxy. |
FREE_PROXY_PROXIFLY_ENABLED |
true |
src/lib/freeProxyProviders/proxifly.ts |
Ativa a fonte de proxies gratuitos Proxifly. Defina como false para desativar. |
FREE_PROXY_PROXIFLY_QUANTITY |
100 |
src/lib/freeProxyProviders/proxifly.ts |
Número de proxies a obter por sincronização do Proxifly. |
FREE_PROXY_PROXIFLY_ANONYMITY |
elite |
src/lib/freeProxyProviders/proxifly.ts |
Filtro de nível de anonimato para o Proxifly (elite, anonymous, transparent). |
FREE_PROXY_IPLOCATE_ENABLED |
false |
src/lib/freeProxyProviders/iplocate.ts |
Ativar a fonte de proxies gratuitos IPLocate. Apenas mediante adesão explícita. |
FREE_PROXY_IPLOCATE_BASE_URL |
https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols |
src/lib/freeProxyProviders/iplocate.ts |
Substituição do URL base da lista de proxies do IPLocate. |
FREE_PROXY_WEBSHARE_ENABLED |
true |
src/lib/freeProxyProviders/webshare.ts |
Ativar a fonte do conjunto de proxies do Webshare. Defina como false para desativar; também requer que FREE_PROXY_WEBSHARE_API_KEY esteja definida. |
FREE_PROXY_WEBSHARE_API_KEY |
(nenhum) | src/lib/freeProxyProviders/webshare.ts |
Token da API da conta Webshare (Authorization: Token <key>). Obrigatório — o fornecedor permanece desativado sem este token. |
FREE_PROXY_WEBSHARE_API_URL |
https://proxy.webshare.io/api/v2/proxy/list/ |
src/lib/freeProxyProviders/webshare.ts |
Substituição do URL da API da lista de proxies do Webshare. |
FREE_PROXY_WEBSHARE_MAX |
500 |
src/lib/freeProxyProviders/webshare.ts |
Número máximo de proxies importados por sincronização do Webshare. |
NEXT_PUBLIC_VERCEL_RELAY_ENABLED |
true |
src/app/(dashboard)/…/ProxyPoolTab.tsx |
Mostrar/ocultar o botão Implementar Vercel Relay no separador Conjunto de Proxies. |
VERCEL_API_BASE |
https://api.vercel.com |
src/app/api/settings/proxy/vercel-deploy/route.ts |
Substituição do URL base da API da Vercel (para testes). |
NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/…/VercelRelayModal.tsx |
Nome predefinido do projeto, previamente preenchido no modal de implementação do Vercel Relay. |
TAILSCALE_BIN |
(deteção automática) | src/lib/tailscaleTunnel.ts |
Caminho explícito para o binário tailscale. |
TAILSCALED_BIN |
(deteção automática) | src/lib/tailscaleTunnel.ts |
Caminho explícito para o binário do daemon tailscaled. |
TAILSCALE_AUTHKEY |
(não definido) | src/lib/tailscaleTunnel.ts |
Chave de autenticação Tailscale pré-partilhada para executar tailscale up de forma não interativa / headless (transmitida através de --auth-key=). Quando não está definida, o início de sessão recorre ao URL de autenticação interativa no navegador. |
NGROK_AUTHTOKEN |
(não definido) | src/lib/ngrokTunnel.ts |
Autentica túneis ngrok de saída. |
DB_BACKUP_MAX_FILES |
20 |
src/lib/db/backup.ts |
Número máximo de ficheiros de cópia de segurança SQLite retidos pela limpeza de cópias de segurança manual/agendada. Os instantâneos de migração são endereçados por conteúdo e reutilizados para um estado idêntico da base de dados; não são eliminados durante a janela de migração simultânea. Substitui o valor guardado em Definições → Retenção de cópias de segurança da base de dados. |
DB_BACKUP_RETENTION_DAYS |
0 |
src/lib/db/backup.ts |
Idade máxima (em dias) retida pela limpeza de cópias de segurança manual/agendada. 0 desativa a eliminação com base na idade. Os instantâneos de migração não são eliminados durante a janela de migração simultânea. Substitui o valor guardado em Definições → Retenção de cópias de segurança da base de dados. |
OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS |
30000 |
src/lib/jobs/backupScheduleJob.ts |
Intervalo de execução (ms) da tarefa no servidor que executa backup-schedule.json. Deve manter-se bastante abaixo da granularidade de 1 minuto do cron; valores inferiores a 5000 ou que não possam ser analisados regressam ao valor predefinido 30000. |
CONTAINER_HOST |
docker |
scripts/check-permissions.sh |
Indicação do ambiente de execução de contentores para a verificação de permissões do ponto de entrada. Defina como podman para qualquer topologia Podman. Como o contentor não consegue determinar se o motor é local ou acedido através do Podman Machine, o aviso mantém-se neutro quanto à topologia e remete para contrib/podman/README.md. |
QUOTA_STORE_DRIVER |
sqlite |
src/lib/quota/storeFactory.ts |
Backend de armazenamento do consumo de quotas partilhadas: sqlite (predefinição) ou redis. |
QUOTA_STORE_REDIS_URL |
(não definido) | src/lib/quota/storeFactory.ts |
Cadeia de ligação ao Redis utilizada quando QUOTA_STORE_DRIVER=redis (por exemplo, redis://localhost:6379). |
QUOTA_SATURATION_THRESHOLD |
0.5 |
src/lib/quota/enforce.ts |
Rácio de saturação do conjunto (0..1); ao atingir ou ultrapassar este valor, o conjunto entra no modo estrito (sem empréstimos). |
QUOTA_SOFT_DEPRIORITIZE_FACTOR |
0.7 |
open-sse/services/combo.ts |
Multiplicador de pontuação (0..1) aplicado a um destino quando a política de quota flexível reduz a sua prioridade. |
STATUS_SOFT_DEPRIORITIZE_FACTOR |
0.5 |
open-sse/services/combo/autoStrategy.ts |
Multiplicador de pontuação (0..1) aplicado a um fornecedor esgotado (credits_exhausted/rate_limited) na pontuação de combinação automática quando o limite de quota prévio está DESATIVADO (#4540). |
QUOTA_CONSUMPTION_RETENTION_DAYS |
14 |
src/lib/db/quotaConsumption.ts |
Período de retenção (dias) dos grupos de quota_consumption antes da recolha de lixo (gcQuotaConsumption). |
QUOTA_PREFLIGHT_CUTOFF_ENABLED |
false |
src/lib/resilience/settings.ts |
Adesão opcional (DESATIVADA por predefinição): ativa o limite rígido de quota do encaminhamento automático, que elimina candidatos com quota baixa antes da pontuação. |
OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL |
false |
open-sse/services/autoCombo/virtualFactory.ts |
Adesão opcional (DESATIVADA por predefinição): quando um filtro auto/<category>:<tier> não corresponde a nenhum candidato ligado, restaura o comportamento anterior de recorrer ao conjunto completo (não filtrado), em vez de devolver um conjunto vazio. A predefinição DESATIVADA faz com que :free signifique «apenas o escalão gratuito». |
OMNIROUTE_CHAOS_MAX_PANEL |
5 |
open-sse/services/autoCombo/virtualFactory.ts |
Limite do tamanho do painel (restringido a 1–10) para a variante de difusão auto/*:chaos — um pedido é distribuído por, no máximo, este número de modelos de diferentes fornecedores. |
OMNIROUTE_CHAOS_MIN_PANEL |
(predefinição do motor) | open-sse/services/autoCombo/virtualFactory.ts |
Ajuste do tamanho mínimo do painel encaminhado para o processador de difusão caótica; se não for definido, mantém a predefinição do motor. |
OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS |
(predefinição do motor) | open-sse/services/autoCombo/virtualFactory.ts |
Tempo limite rígido (ms) para toda a distribuição pelo painel caótico; se não for definido, mantém a predefinição do motor. |
GROK_AUTH_PATH |
~/.grok/auth.json |
open-sse/services/grokQuotaFetcher.ts |
Caminho para o auth.json da CLI do Grok utilizado para obter a quota semanal do grok-web; substitua-o para testes ou para uma instalação não padrão da CLI. |
AGENTBRIDGE_UPSTREAM_CA_CERT |
(não definido) | src/mitm/manager.ts |
Certificado de AC adicional (PEM) considerado fidedigno para ligações TLS a montante do AgentBridge. |
INSPECTOR_BUFFER_SIZE |
1000 |
src/mitm/inspector/buffer.ts |
Número máximo de pedidos capturados mantidos no buffer circular do Inspetor de Tráfego. |
INSPECTOR_MAX_BODY_KB |
1024 |
src/mitm/inspector/buffer.ts |
Tamanho máximo do corpo do pedido/resposta capturado (KB) antes de ser truncado. |
INSPECTOR_HTTP_PROXY_PORT |
8080 |
src/mitm/inspector/httpProxyServer.ts |
Porta local para o proxy HTTP do Inspetor de Tráfego. |
INSPECTOR_HTTP_PROXY_AUTOSTART |
false |
src/mitm/inspector/httpProxyServer.ts |
Iniciar automaticamente o proxy HTTP do inspetor no arranque. |
INSPECTOR_TLS_INTERCEPT |
false |
src/lib/inspector/captureState.ts |
Ativar a interceção TLS (MITM) para o tráfego HTTPS capturado. |
INSPECTOR_LLM_HOSTS_EXTRA |
(não definido) | src/lib/inspector/captureState.ts |
Nomes de anfitrião adicionais (separados por vírgulas) tratados como endpoints de LLM para captura. |
INSPECTOR_MASK_SECRETS |
true |
src/mitm/inspector/buffer.ts |
Ocultar segredos (cabeçalhos de autenticação/chaves de API) no tráfego capturado. |
INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES |
30 |
src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts |
Minutos até que a proteção do proxy do sistema reverta automaticamente as definições de proxy do sistema operativo. |
INSPECTOR_INTERNAL_INGEST_TOKEN |
(automático) | src/app/api/tools/traffic-inspector/internal/ingest/route.ts |
Token que autentica a ingestão interna de capturas no inspetor. |
PLAYGROUND_COMPARE_MAX_COLUMNS |
4 |
src/app/(dashboard)/dashboard/playground/ |
Número máximo de colunas lado a lado no modo de comparação do Playground. |
PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL |
(não definido) | src/app/(dashboard)/dashboard/playground/ |
Modelo predefinido para a ação «melhorar prompt» do Playground (recorre ao modelo ativo quando não está definido). |
BIFROST_ENABLED |
1 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Interruptor principal de desativação do proxy sidecar Bifrost. Quando definido como 0, a rota devolve 503 com o cabeçalho X-Bifrost-Killswitch e o operador é redirecionado para o caminho TS. Utilize-o para desativar o sidecar sem voltar a implementar (incidente no router de nível 1, rotação de chaves). |
BIFROST_BASE_URL |
(não definido) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Quando definido, a rota do proxy sidecar Bifrost encaminha o tráfego de /v1/chat/completions para este gateway Go, em vez de o encaminhar para o processador de relay TS. Não definido → 503 com fallback. A barra final é removida. |
BIFROST_PORT |
8080 |
src/lib/services/bootstrap.ts |
Porta à qual o serviço incorporado Bifrost supervisionado se associa (127.0.0.1:<port>) quando o OmniRoute gere o ciclo de vida do sidecar Bifrost. A predefinição é 8080. |
BIFROST_API_KEY |
(não definido) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Chave de API para o gateway Bifrost (enviada como Authorization: Bearer ...). Se não estiver definida, a rota espera que o pedido contenha uma chave de API OmniRoute válida; esta chave destina-se apenas à autenticação do lado do gateway. |
BIFROST_STREAMING_ENABLED |
true |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Quando definida como true, a rota do sidecar Bifrost transmite as respostas através de SSE pelo gateway, em vez de utilizar o executor de streaming TS. Defina como 0 para forçar respostas JSON sem streaming através do gateway. |
BIFROST_TIMEOUT_MS |
30000 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Tempo limite por pedido ao encaminhar para o gateway Bifrost (ms). Quando o tempo limite é excedido, a rota devolve o caminho do relay TS através do cabeçalho X-Bifrost-Fallback. |
OMNIROUTE_BIFROST_KEY |
(não definido) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Alias de BIFROST_API_KEY (utilizado por scripts que leem o ambiente através de OMNIROUTE_*). BIFROST_API_KEY tem precedência quando ambos estão definidos. |
OMNIROUTE_RELAY_BACKEND |
ts / auto |
src/app/api/v1/relay/chat/completions/routingBackend.ts |
Backend de relay para /api/v1/relay/chat/completions: ts | bifrost | auto. ts = relay TypeScript (predefinição quando o Bifrost não está configurado); auto seleciona o Bifrost quando BIFROST_BASE_URL está definido e BIFROST_ENABLED ≠ 0, com fallback automático para TS se o sidecar estiver inacessível; bifrost força a utilização do Bifrost (modo estrito, sem fallback). A autenticação, a limitação de taxa, a proteção contra injeção e a lista de permissões são sempre executadas primeiro na rota Next. As respostas incluem X-Routing-Backend / X-Routing-Fallback / X-Routing-Fallback-Reason. |
RELAY_ROUTING_BACKEND |
(não definido) | src/app/api/v1/relay/chat/completions/routingBackend.ts |
Alias aceite para OMNIROUTE_RELAY_BACKEND (os mesmos valores ts | bifrost | auto). OMNIROUTE_RELAY_BACKEND tem precedência quando ambos estão definidos. |
OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS |
5000 |
src/app/api/v1/relay/chat/completions/bifrostCooldown.ts |
Período de espera (ms) após uma passagem pelo sidecar Bifrost falhar no modo auto, antes de o relay tentar novamente o sidecar; encaminha diretamente para o percurso TS enquanto durar o período de espera e, em seguida, tenta novamente. 0 desativa. Aplica-se apenas quando OMNIROUTE_RELAY_BACKEND=auto. |
OMNIROUTE_TLS_CERT |
(não definido) | bin/cli/commands/serve.mjs |
Caminho para um certificado TLS PEM para disponibilizar omniroute serve através de HTTPS (equivalente a --tls-cert). Tem de ser fornecido juntamente com OMNIROUTE_TLS_KEY; o servidor autónomo termina então o TLS no mesmo listener (wss:// continua a funcionar sem alterações). Não definido → HTTP simples. Fornecer apenas o certificado ou a chave, ou um caminho ilegível, regista um aviso e mantém o HTTP. |
OMNIROUTE_TLS_KEY |
(não definido) | bin/cli/commands/serve.mjs |
Caminho para a chave privada TLS PEM para o HTTPS de omniroute serve (equivalente a --tls-key). Tem de ser fornecida juntamente com OMNIROUTE_TLS_CERT. Consulte OMNIROUTE_TLS_CERT. |
OMNIROUTE_LOCAL_ENDPOINTS_ENABLED |
0 |
src/lib/security/localEndpoints.ts |
Interruptor principal para as rotas /api/local/*. Quando não está definido ou é 0, todas as rotas /api/local/* devolvem 503 em produção. Tem de ser 1 em implementações fora da interface de loopback para ativar o iniciador do Redis e iniciadores semelhantes de serviços locais com 1 clique. Proteção redundante com a classificação da proteção de rotas isLocalOnlyPath() (LOCAL_ONLY_API_PREFIXES em src/server/authz/routeGuard.ts). |
OMNIROUTE_LOCAL_ENDPOINTS_TOKEN |
(não definido) | src/lib/security/localEndpoints.ts |
Token Bearer para clientes de /api/local/* que não estejam na interface de loopback (por exemplo, a aplicação para computador). Quando definido, os pedidos provenientes de IPs que não sejam de loopback têm de incluir Authorization: Bearer <token>. Obrigatório quando OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1 em implementações fora da interface de loopback. |
OMNIROUTE_REDIS_CONTAINER_NAME |
omniroute-redis |
bin/cli/commands/redis.mjs |
Nome do contentor para o iniciador do Redis com 1 clique (omniroute redis up). Utilizado tanto pela CLI como pela interface gráfica RedisLauncherPanel. |
OMNIROUTE_REDIS_HOST_PORT |
6379 |
bin/cli/commands/redis.mjs |
Porta do anfitrião para o iniciador do Redis com 1 clique. Altere-a se o anfitrião já utilizar a porta 6379. A porta interna do contentor mantém-se como 6379. |
OMNIROUTE_REDIS_BIND_HOST |
127.0.0.1 |
bin/cli/commands/redis.mjs |
Interface do anfitrião na qual o iniciador do Redis com 1 clique publica o serviço. O iniciador executa o Redis SEM palavra-passe, pelo que associá-lo a 0.0.0.0 disponibiliza um Redis não autenticado a todos os anfitriões da sua LAN — só deve alargar esta associação se também definir uma palavra-passe na instância. |
REDIS_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interface do anfitrião na qual o docker-compose publica o sidecar Redis (#9286). O Redis do compose é executado sem requirepass; os contentores da aplicação acedem-lhe através da rede do compose (redis:6379) — a porta publicada existe apenas para ferramentas no anfitrião. 0.0.0.0 expõe um Redis não autenticado a toda a LAN. |
REDIS_PORT |
6379 |
docker-compose.yml |
Porta do anfitrião para o sidecar Redis do compose. |
APP_BIND_HOST |
127.0.0.1 |
docker-compose.yml, docker-compose.prod.yml |
Interface do anfitrião na qual o docker-compose publica as portas do dashboard/API/live-WS da própria aplicação (#12568). Com REQUIRE_API_KEY=false fornecido como predefinição em .env.example, 0.0.0.0 expõe o proxy LLM anónimo /v1 a toda a LAN/WAN — alargue o acesso apenas quando REQUIRE_API_KEY=true ou quando um proxy inverso a montante impuser a sua própria autenticação. |
QDRANT_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interface do anfitrião na qual o docker-compose publica o serviço auxiliar de memória Qdrant (#12578). Aplica-se o mesmo princípio de exposição à LAN que em REDIS_BIND_HOST. |
BIFROST_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
Interface do anfitrião na qual o docker-compose publica o serviço auxiliar de encaminhamento Bifrost (#12578). Aplica-se o mesmo princípio de exposição à LAN que em REDIS_BIND_HOST. |
REDIS_KEY_PREFIX |
omniroute: |
src/shared/utils/rateLimiter.ts |
Prefixo de espaço de nomes aplicado a todas as chaves Redis do OmniRoute (limitador de taxa, cache de autenticação, armazenamento de quotas, disjuntor de pré-aquecimento). Evita colisões de chaves quando a instância Redis é partilhada com outras aplicações (#11042). |
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
(não definido — mecanismo desativado) | src/lib/api/internalServiceAuth.ts |
Segredo partilhado para chamadas REST internas que preservam a identidade (#9260): os componentes do OmniRoute que chamam outras rotas locais do OmniRoute enviam-no como x-omniroute-internal-service-token, para que a identidade do autor original da chamada seja preservada. Comparado com timingSafeEqual. |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
(não definido) | src/lib/api/internalServiceAuth.ts |
Variante do token de serviço interno baseada num ficheiro de segredo: caminho para um ficheiro cujo conteúdo, após a remoção de espaços em branco no início e no fim, corresponde ao token. Apenas é consultada quando a variável em linha não está definida. |
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
src/lib/catalog/openrouterProviderStats.ts |
Enriquece a lista de fornecedores do dashboard com estatísticas de classificação semanal do OpenRouter (#9324). Ativada por predefinição; defina como false para ignorar totalmente a obtenção em segundo plano (não bloqueante e nunca fatal). |
OPENROUTER_PROVIDER_STATS_TTL_MS |
86400000 (24 h) |
src/lib/catalog/openrouterProviderStats.ts |
TTL da cache para o instantâneo das estatísticas de fornecedores do OpenRouter, em milissegundos. |
OMNIROUTE_REDIS_IMAGE |
redis:7-alpine |
bin/cli/commands/redis.mjs |
Imagem Redis utilizada pelo iniciador Redis de 1 clique. Substitua por redis:8-alpine ou por um espelho de registo privado, conforme necessário. |
QDRANT_HOST |
qdrant |
(perfil de cluster opcional) | Nome do anfitrião do serviço auxiliar Qdrant quando --profile memory está ativo. A predefinição aponta para o nome do serviço qdrant dentro da rede; substitua-o para uma implementação externa. Apenas é utilizado quando qdrantEnabled é true no código (src/lib/memory/vectorStore.ts:108). |
QDRANT_PORT |
6333 |
(perfil de cluster opcional) | Porta REST do sidecar do Qdrant. |
QDRANT_GRPC_PORT |
6334 |
(perfil de cluster opcional) | Porta gRPC do sidecar do Qdrant. Utilizada por bibliotecas de cliente que preferem gRPC a REST para operações de streaming. |
QDRANT_API_KEY |
(não definida) | (perfil de cluster opcional) | Chave de API opcional para o Qdrant Cloud ou uma instância on-prem com autenticação. Vazia → não é enviado qualquer cabeçalho api-key. |
QDRANT_COLLECTION |
omniroute-memory |
(perfil de cluster opcional) | Nome da coleção para os embeddings da memória de conversação do OmniRoute. Criada na primeira execução com as dimensões definidas em QDRANT_VECTOR_SIZE. |
QDRANT_EMBEDDING_MODEL |
text-embedding-3-small |
(perfil de cluster opcional) | Nome do modelo de embedding predefinido registado nos metadados da coleção do Qdrant. Os embeddings efetivos são gerados pelo fornecedor indicado pelo campo embeddingModel nas definições do OmniRoute. |
QDRANT_VECTOR_SIZE |
1536 |
(perfil de cluster opcional) | Dimensão do vetor de embedding. Tem de corresponder ao modelo utilizado para gerar os embeddings (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). |
QDRANT_HNSW_EF_CONSTRUCT |
128 |
(perfil de cluster opcional) | Precisão do índice HNSW durante a construção. Um valor mais elevado = construção mais lenta, pesquisa mais rápida. |
OMNIROUTE_ROTATION_ENABLED |
true |
open-sse/services/rotationConfig.ts |
Interruptor principal para a rotação de contas configurável pelo operador. Quando definido como false, nenhuma das classes OMNIROUTE_ROTATE_* abaixo aciona a mudança para outra conta (o estado principal desativado também bloqueia as classes 429/500/502, ativadas por predefinição). Permite que um front-end supervisor (por exemplo, a aplicação VibeProxy para computador) replique as respetivas regras de rotação no mecanismo de mudança de conta do backend. |
OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS |
0 |
open-sse/services/rotationConfig.ts |
Período de espera (segundos) aplicado a uma conta sujeita a limitação de taxa quando o serviço a montante não fornece uma indicação explícita de reposição. 0 = utilizar o período de espera predefinido do mecanismo em vez de uma substituição fixa. |
OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET |
true |
open-sse/services/rotationConfig.ts |
Reflexo da preferência do front-end «não marcar como sujeito a limitação de taxa sem uma hora de reposição». |
OMNIROUTE_ROTATE_ON_429 |
true |
open-sse/services/rotationConfig.ts |
Ativação da alternativa por estado para erros 429. Quando false (e OMNIROUTE_ROTATION_ENABLED=true), um erro 429 deixa de acionar a rotação de conta e é devolvido ao cliente. |
OMNIROUTE_ROTATE_429_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de erros 429 dentro de OMNIROUTE_ROTATE_429_WINDOW_SECONDS necessário antes de a conta ser rodada. 1 (predefinição) roda imediatamente, preservando o comportamento histórico. |
OMNIROUTE_ROTATE_429_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Janela deslizante (segundos) durante a qual os erros 429 são contabilizados para OMNIROUTE_ROTATE_429_THRESHOLD. |
OMNIROUTE_ROTATE_ON_500 |
true |
open-sse/services/rotationConfig.ts |
Ativação da alternativa por estado para erros de servidor 5xx (excluindo 502, que tem a sua própria classe). Quando false, estes erros deixam de acionar a rotação de conta. |
OMNIROUTE_ROTATE_500_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de erros 5xx dentro de OMNIROUTE_ROTATE_500_WINDOW_SECONDS necessário antes de a conta ser rodada. 1 (predefinição) roda imediatamente. |
OMNIROUTE_ROTATE_500_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Janela deslizante (segundos) durante a qual os erros 5xx são contabilizados para OMNIROUTE_ROTATE_500_THRESHOLD. |
OMNIROUTE_ROTATE_ON_502 |
true |
open-sse/services/rotationConfig.ts |
Ativação da alternativa por estado para erros 502 (gateway inválido). Quando false, os erros 502 deixam de acionar a rotação de conta. |
OMNIROUTE_ROTATE_502_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de erros 502 dentro de OMNIROUTE_ROTATE_502_WINDOW_SECONDS necessário antes de a conta ser rodada. 1 (predefinição) roda imediatamente. |
OMNIROUTE_ROTATE_502_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Janela deslizante (segundos) durante a qual os erros 502 são contabilizados para OMNIROUTE_ROTATE_502_THRESHOLD. |
OMNIROUTE_ROTATE_ON_400 |
false |
open-sse/services/rotationConfig.ts |
Adesão opcional (DESATIVADA por predefinição): quando true, um erro 400 simples (pedido inválido) também aciona a rotação de conta. Esta opção é apenas aditiva — nunca bloqueia o comportamento existente do motor, em que um erro 400 com texto de limite de taxa/quota continua a recorrer à alternativa, independentemente deste sinalizador. |
OMNIROUTE_ROTATE_400_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
Número de erros 400 dentro de OMNIROUTE_ROTATE_400_WINDOW_SECONDS necessário antes de a conta ser alternada (consultado apenas quando OMNIROUTE_ROTATE_ON_400=true). |
OMNIROUTE_ROTATE_400_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
Janela deslizante (segundos) durante a qual os erros 400 são contabilizados para OMNIROUTE_ROTATE_400_THRESHOLD. |
Agendador de aquecimento do Claude
Aquecimento controlado por cron para ligações OAuth da Anthropic com adesão ativa, para que a janela de limite de pedidos de 5 horas seja aberta por um pedido trivial agendado, em vez de pelo primeiro pedido real (#8848). O agendador permanece desativado, a menos que OMNIROUTE_WARMUP_ENABLED tenha um valor verdadeiro e a ligação esteja assinalada em settings.claudeWarmup.connections; uma lista de ligações vazia significa que nenhuma ligação é aquecida, mesmo com a variável de ambiente ativada.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_WARMUP_ENABLED |
(não definida → desativado) | src/lib/warmupScheduler.ts |
Interruptor principal do agendador de aquecimento. Aceita 1/true/yes/on (sem distinção entre maiúsculas e minúsculas e com espaços removidos). Qualquer outro valor, ou a ausência de valor, mantém o agendador desativado. |
OMNIROUTE_WARMUP_CRON |
0 7 * * * |
src/lib/warmupScheduler.ts |
Expressão cron de cinco campos para a execução do aquecimento, avaliada em America/Los_Angeles (o fuso horário de reposição da Anthropic), independentemente do relógio do anfitrião. |
OMNIROUTE_WARMUP_CONCURRENCY |
3 |
src/lib/warmupScheduler.ts |
Número de ligações aquecidas em paralelo por execução. Limitado ao intervalo 1-10; um valor não numérico utiliza 3 como alternativa. |
OMNIROUTE_WARMUP_MODEL |
claude-3-5-haiku-20241022 |
src/lib/warmupScheduler.ts |
Modelo utilizado no pedido de aquecimento. Substitua-o apenas se a predefinição não estiver disponível no seu plano; escolha o modelo mais barato que ainda abra a janela. |
Sessões VNC de início de sessão no navegador e alias do diretório de dados
Chromium+VNC em contentor utilizado para a captura interativa de credenciais de início de sessão no navegador (/api/vnc-session), juntamente com um alias DATA_DIR legado. Tudo é opcional — as predefinições de VNC destinam-se à imagem omniroute-vnc-chromium:local incluída e apenas são substituídas para utilizar uma imagem de contentor ou portas personalizadas, ou para ajustar o ciclo de vida.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
Etiqueta da imagem Docker para o contentor de início de sessão Chromium+VNC. Compile docker/vnc-browser/chromium ou defina esta variável para uma imagem personalizada. |
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
Binário do ambiente de execução de contentores utilizado para iniciar o contentor VNC (por exemplo, defina como podman). |
OMNIROUTE_VNC_CONTAINER_VNC_PORT |
3000 |
src/lib/vncSession/manifest.ts |
Porta VNC/noVNC exposta no interior do contentor. |
OMNIROUTE_VNC_CONTAINER_CDP_PORT |
9223 |
src/lib/vncSession/manifest.ts |
Porta do Chrome DevTools Protocol no interior do contentor. |
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR |
/config |
src/lib/vncSession/manifest.ts |
Caminho do diretório do perfil do Chromium no interior do contentor. |
OMNIROUTE_VNC_PROFILE_DIR |
$HOME/.omniroute/browser-login-profiles |
src/lib/vncSession/manifest.ts |
Diretório do anfitrião que contém os perfis persistentes de início de sessão no navegador. |
OMNIROUTE_VNC_IDLE_MS |
600000 (10 min) |
src/lib/vncSession/manifest.ts |
Tempo limite de inatividade (ms) após o qual uma sessão VNC inativa é eliminada. |
OMNIROUTE_VNC_MAX_MS |
1800000 (30 min) |
src/lib/vncSession/manifest.ts |
Limite máximo absoluto (ms) da duração de uma única sessão VNC. |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
Número máximo de sessões VNC simultâneas. |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
Tempo limite (ms) de espera até que o navegador em contentor esteja pronto para CDP. |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
Tempo limite (ms) para recolher a sessão/os cookies capturados após a conclusão do início de sessão. |
OMNIROUTE_VNC_CHROMIUM_ARGS |
--remote-debugging-port=9222 --no-first-run --no-default-browser-check |
src/lib/vncSession/manifest.ts |
Parâmetros adicionais da linha de comandos transmitidos ao Chromium em contentor. |
OMNIROUTE_VNC_NETWORK |
omniroute-vnc-browser-login |
src/lib/vncSession/manifest.ts |
Rede Docker dedicada à qual o contentor de início de sessão VNC se liga (#12571), em vez da ponte predefinida, para que os contentores irmãos não consigam aceder à respetiva porta de ponte CDP. |
VIBEPROXY_DATA_DIR |
(não definido) | open-sse/services/notionThreadSessions.ts |
Nome alternativo legado para DATA_DIR, verificado apenas quando DATA_DIR e OMNIROUTE_DATA_DIR não estão definidos. Localiza a cache de sessões de tópicos Web do Notion (<dir>/notion-web-thread-sessions.json). |
26. Infraestrutura de Testes e E2E
Utilizada por scripts/dev/run-next-playwright.mjs, scripts/dev/smoke-electron-packaged.mjs,
scripts/dev/run-ecosystem-tests.mjs e scripts/build/uninstall.mjs. Deixe todos os
valores abaixo por definir em implementações de produção.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_E2E_BOOTSTRAP_MODE |
auth |
scripts/dev/run-next-playwright.mjs |
Modo de inicialização E2E (auth, fresh, reuse) para o executor do Playwright. |
OMNIROUTE_E2E_PASSWORD |
recorre a INITIAL_PASSWORD |
scripts/dev/run-next-playwright.mjs |
Palavra-passe de administrador injetada no ambiente do Playwright. |
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
Desativa a consulta periódica da verificação de integridade local durante as execuções do Playwright. |
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
Desativa o ciclo de verificação de integridade dos tokens OAuth durante os testes. |
OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS |
(não definida) | src/lib/tokenHealthCheck.ts |
Fornecedores separados por vírgulas excluídos da verificação proativa de atualização de tokens (por exemplo, codex,openai). Alternativa direcionada à desativação total da verificação de integridade — os fornecedores com TTL curto continuam a ser atualizados, enquanto os fornecedores em cascata permanecem apenas reativos. |
OMNIROUTE_HIDE_HEALTHCHECK_LOGS |
true |
scripts/dev/run-next-playwright.mjs |
Suprime as mensagens da verificação de integridade no stdout do Playwright. |
OMNIROUTE_PLAYWRIGHT_SKIP_BUILD |
0 |
scripts/dev/run-next-playwright.mjs |
Ignora a compilação de produção do Next.js antes de o Playwright iniciar (otimização de CI). |
OMNIROUTE_SKIP_UNINSTALL_HOOK |
0 |
scripts/build/uninstall.mjs |
Ignora o hook de desinstalação do OmniRoute (utilizado pela CI para manter node_modules intacto). |
ECOSYSTEM_SERVER_WAIT_MS |
180000 |
scripts/dev/run-ecosystem-tests.mjs |
Tempo de espera (ms) para que o servidor fique operacional antes de executar testes de ecossistema/protocolo. |
ELECTRON_SMOKE_URL |
http://127.0.0.1:20128/login |
scripts/dev/smoke-electron-packaged.mjs |
URL na qual a infraestrutura de testes de fumo do Electron espera que a aplicação empacotada esteja disponível. |
ELECTRON_SMOKE_TIMEOUT_MS |
45000 |
scripts/dev/smoke-electron-packaged.mjs |
Tempo limite total (ms) antes de a infraestrutura de testes de fumo desistir. |
ELECTRON_SMOKE_SETTLE_MS |
2000 |
scripts/dev/smoke-electron-packaged.mjs |
Período de estabilização (ms) após o carregamento da página. |
ELECTRON_SMOKE_APP_EXECUTABLE |
(automático) | scripts/dev/smoke-electron-packaged.mjs |
Caminho explícito para o executável empacotado do Electron. |
ELECTRON_SMOKE_DATA_DIR |
(diretório temporário) | scripts/dev/smoke-electron-packaged.mjs |
Diretório de dados para a execução dos testes de fumo do Electron. |
ELECTRON_SMOKE_KEEP_DATA |
0 |
scripts/dev/smoke-electron-packaged.mjs |
Defina como 1 para preservar o diretório de dados do teste de fumo após a execução. |
ELECTRON_SMOKE_STREAM_LOGS |
0 |
scripts/dev/smoke-electron-packaged.mjs |
Defina como 1 para transmitir os registos do Electron para stdout durante a execução. |
ELECTRON_SMOKE_COLD_RESTART |
0 |
scripts/dev/smoke-electron-packaged.mjs |
#7592: reinicia com o mesmo diretório de dados e confirma que o segundo arranque seleciona o controlador SQLite nativo. |
CLI_DEVIN_BIN |
(pesquisa no PATH) | open-sse/executors/devin-cli.ts |
Substitui o caminho do binário da CLI do Devin. |
Pipeline de tradução da documentação
Utilizado por scripts/i18n/run-translation.mjs (o comando npm run i18n:run).
As cinco variáveis não estão definidas por predefinição — defina-as em .env apenas nas máquinas
que devem poder executar o tradutor da documentação.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_TRANSLATION_API_URL |
(não definida) | scripts/i18n/run-translation.mjs |
URL base compatível com a OpenAI para o backend de tradução. |
OMNIROUTE_TRANSLATION_API_KEY |
(não definida) | scripts/i18n/run-translation.mjs |
Token Bearer para o backend de tradução (nunca é registado). |
OMNIROUTE_TRANSLATION_MODEL |
(não definida) | scripts/i18n/run-translation.mjs |
ID do modelo, por exemplo, gpt-4o-mini ou cx/gpt-5.4-mini. |
OMNIROUTE_TRANSLATION_TIMEOUT_MS |
60000 |
scripts/i18n/run-translation.mjs |
Tempo limite por pedido, em milissegundos. |
OMNIROUTE_TRANSLATION_CONCURRENCY |
4 |
scripts/i18n/run-translation.mjs |
Pedidos de tradução em paralelo ao processar vários ficheiros/idiomas. |
27. Feed do Radar (Alojamento Próprio)
Extensão opcional controlada pela flag de funcionalidade RADAR_ENABLED (desativada por predefinição — uma flag de
funcionalidade ativada através das Definições/BD, e não uma variável de ambiente; consulte
docs/frameworks/RADAR.md).
As primeiras quatro variáveis abaixo são substituições opcionais para um feed autoalojado ou derivado e
para os fluxos de chaves de apoiantes. A quinta, RADAR_ADMIN_URL, é uma ligação separada, sem valor predefinido, para o
painel de operações privado do proprietário. Consulte docs/frameworks/RADAR.md para obter a documentação
completa do módulo e a respetiva
sequência integral de ativação e configuração guiada.
O leitor genérico de anúncios da página inicial/registo de alterações não é configurado através de uma variável
de ambiente e não depende da flag de funcionalidade RADAR_ENABLED. Este lê apenas através de
GET o URL público de news.json do repositório, declarado em src/shared/utils/releaseNotes.ts;
os IDs de dispensa permanecem no armazenamento local do navegador.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
RADAR_FEED_URL |
https://radar.omniroute.online |
src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts |
URL base partilhado pelos feeds, assinados separadamente, de catálogo, referências, ofertas para apoiantes e Intel. Substitua-o para apontar para um serviço autoalojado ou derivado. |
RADAR_FEED_PUBKEY |
(chave predefinida fixada) | src/lib/radar/pinnedKeys.ts |
Chave pública Ed25519 (SPKI DER em base64 ou PEM) utilizada para verificar as assinaturas de um feed personalizado. |
RADAR_CONTRIBUTOR_CLAIM_URL |
https://radar.omniroute.online/auth/github |
src/lib/radar/links.ts |
URL aberto pelo botão "Sou colaborador" do painel (fluxo de reivindicação de chave de apoiante através do GitHub OAuth). |
RADAR_SUPPORTER_PLANS_URL |
https://radar.omniroute.online/planos |
src/lib/radar/links.ts |
URL aberto pelo botão "Apoiar o projeto" do painel (página de pagamentos/planos). |
RADAR_ADMIN_URL |
(não definido) | src/lib/radar/links.ts |
Ligação ao painel de operações privado, exclusiva do proprietário. HTTPS é obrigatório, exceto para um reencaminhamento SSH de loopback HTTP; valores não definidos ou inválidos não criam qualquer item de navegação. |
Auditoria: Variáveis Removidas / Obsoletas
As seguintes variáveis apareciam em versões anteriores de .env.example, mas não têm referências em tempo de execução na base de código atual. Foram removidas:
| Variável | Motivo |
|---|---|
STORAGE_DRIVER=sqlite |
Nunca é lida por qualquer ficheiro de código-fonte. SQLite é o único driver suportado — não é necessária qualquer seleção. |
INSTANCE_NAME=omniroute |
Presente em documentação/modelos de ambiente antigos, mas não utilizada em tempo de execução. Poderá regressar numa futura funcionalidade de múltiplas instâncias. |
SQLITE_MAX_SIZE_MB=2048 |
Não é referenciada no código-fonte. O tamanho da base de dados não é limitado artificialmente. |
SQLITE_CLEAN_LEGACY_FILES=true |
Não é referenciada no código-fonte. A limpeza de ficheiros legados foi provavelmente removida. |
CLI_ROO_BIN |
Não está registada em src/shared/services/cliRuntime.ts. |
CLI_KIMI_CODING_BIN |
Não está registada em src/shared/services/cliRuntime.ts (o Kimi Coding utiliza OAuth, não um binário da CLI). |
IFLOW_OAUTH_CLIENT_ID / IFLOW_OAUTH_CLIENT_SECRET |
Não são referenciadas em nenhuma parte do código-fonte. |
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 |
Removidas na v3.8.0. O runtime deixou de ler estas variáveis de ambiente — as credenciais provêm do Dashboard / data/provider-credentials.json / base de dados encriptada. |
CURSOR_PROTOBUF_DEBUG |
Removida na v3.8.0. O executor do Cursor utiliza CURSOR_DEBUG / CURSOR_STREAM_DEBUG (consulte a secção §22). |
CLI_COMPAT_KIRO |
Removida na v3.8.0. O Kiro está em CLI_COMPAT_OMITTED_PROVIDER_IDS — a respetiva opção não tem efeito. |
QIANFAN_API_KEY |
Removida juntamente com outros stubs de chaves de API de fornecedores não utilizados na v3.8.0. |
Correções dos valores predefinidos
| Variável | Valor antigo em .env.example |
Valor predefinido real no código | Correção |
|---|---|---|---|
APP_LOG_RETENTION_DAYS |
90 |
7 |
✅ Valor enganador removido; 7 documentado como predefinição |
CALL_LOG_RETENTION_DAYS |
90 |
7 |
✅ Valor enganador removido; 7 documentado como predefinição |
Regeneração da configuração do OpenCode (ferramenta ad hoc)
Utilizada por scripts/ad-hoc/regen-opencode-config.ts para regenerar um opencode.json
com valores exatos de limit.context e limit.output obtidos da instância do
OmniRoute em execução. Nenhuma destas variáveis é necessária para o funcionamento normal — o script
é apenas uma ferramenta para programadores.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_URL |
http://localhost:20128 |
scripts/ad-hoc/regen-opencode-config.ts |
URL base da instância do OmniRoute a consultar para /v1/models. |
OMNIROUTE_KEY |
(não definida) | scripts/ad-hoc/regen-opencode-config.ts |
Chave de API para autenticação no endpoint /v1/models do OmniRoute. Se não estiver definida, utiliza OPENCODE_API_KEY. |
OPENCODE_API_KEY |
(não definida) | scripts/ad-hoc/regen-opencode-config.ts |
Chave de API ao estilo do OpenCode (sk-...) escrita no opencode.json regenerado. Se não estiver definida, utiliza OMNIROUTE_KEY. |
Ferramenta ad hoc de avaliação offline da compressão
Utilizada por scripts/compression-eval/index.ts, a CLI de avaliação offline da compressão.
Não é necessária para o funcionamento normal — destina-se apenas a ferramentas de desenvolvimento.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_EVAL_CREDENTIALS |
{} (vazio) |
scripts/compression-eval/index.ts |
Credenciais JSON fornecidas pelo operador para o fornecedor utilizado pela CLI de avaliação offline da compressão (analisadas com JSON.parse). Deixe por definir para uma execução de teste. |
Sessões de navegador VNC
Utilizadas por src/lib/vncSession/manifest.ts para configurar sessões do Chromium sem interface gráfica baseadas em Docker para fornecedores de automatização de navegadores. Todas são opcionais — as predefinições são apresentadas abaixo.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
Caminho para o binário do Docker utilizado para iniciar contentores VNC. |
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
Imagem Docker para o contentor VNC do Chromium. |
OMNIROUTE_VNC_CHROMIUM_ARGS |
(opções incorporadas) | src/lib/vncSession/manifest.ts |
Argumentos adicionais da CLI do Chromium transmitidos ao navegador dentro do contentor. |
OMNIROUTE_VNC_CONTAINER_VNC_PORT |
3000 |
src/lib/vncSession/manifest.ts |
Porta VNC dentro do contentor. |
OMNIROUTE_VNC_CONTAINER_CDP_PORT |
9223 |
src/lib/vncSession/manifest.ts |
Porta do Chrome DevTools Protocol dentro do contentor. |
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR |
/config |
src/lib/vncSession/manifest.ts |
Diretório do perfil dentro do contentor. |
OMNIROUTE_VNC_PROFILE_DIR |
(não definida) | src/lib/vncSession/manifest.ts |
Diretório no anfitrião para perfis persistentes do navegador. |
OMNIROUTE_VNC_IDLE_MS |
600000 |
src/lib/vncSession/manifest.ts |
Tempo limite de inatividade (ms) antes de uma sessão VNC ser recolhida. |
OMNIROUTE_VNC_MAX_MS |
1800000 |
src/lib/vncSession/manifest.ts |
Duração máxima da sessão (ms). |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
Número máximo de sessões VNC simultâneas. |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
Tempo limite para o navegador ficar pronto (ms). |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
Tempo limite para recolha/limpeza (ms). |
OMNIROUTE_VNC_NETWORK |
omniroute-vnc-browser-login |
src/lib/vncSession/manifest.ts |
Rede Docker dedicada à qual o contentor se liga (#12571), fora da ponte predefinida. |
VIBEPROXY_DATA_DIR |
(não definida) | open-sse/services/notionThreadSessions.ts |
Diretório para persistência das sessões de conversação do Notion. |
Autenticação de serviços internos
| Variável | Predefinição | Descrição |
|---|---|---|
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
– | Token inline para autenticação serviço a serviço do plano de gestão. |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
– | Caminho para um ficheiro que contém o token de serviço interno (preferível em contentores; substitui a variável inline). |
Estatísticas de fornecedores do OpenRouter
| Variável | Predefinição | Descrição |
|---|---|---|
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
Defina como false para não obter estatísticas por fornecedor do OpenRouter para enriquecimento do catálogo. |
OPENROUTER_PROVIDER_STATS_TTL_MS |
3600000 |
TTL da cache (ms) para as estatísticas obtidas dos fornecedores do OpenRouter. |
Associação do Redis incorporado
| Variável | Predefinição | Descrição |
|---|---|---|
REDIS_BIND_HOST |
127.0.0.1 |
Endereço de escuta do serviço Redis incorporado. |
REDIS_PORT |
6379 |
Porta do serviço Redis incorporado. |
OMNIROUTE_REDIS_BIND_HOST |
– | Substituição específica do OmniRoute para o endereço de escuta do Redis incorporado. |
24. Adições da versão v3.8.50
Estas definições foram introduzidas após a captura anterior do contrato de ambiente.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_CHAT_ADMISSION_QUEUE_MS |
2000 |
src/shared/middleware/chatBodyAdmission.ts |
Tempo máximo de espera por uma vaga de admissão para conversações pesadas antes de devolver um 503 que permite nova tentativa; uma espera curta e limitada serializa os picos de agentes em vez de devolver imediatamente um 503. 0 repõe a rejeição imediata. |
OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES |
4194304 (4 MB) |
src/shared/middleware/chatBodyAdmission.ts |
Limite de bytes em fila para a espera de admissão: limita o total de bytes de corpos armazenados em memória intermédia e retidos em todo o processo, para que a espera não amplifique a heap (#4380). As esperas que excedam o limite recebem imediatamente um 503 que permite nova tentativa. |
OMNIROUTE_CHAT_VIRTUAL_TTL_MS |
60000 (60 s) |
src/shared/middleware/chatBodyAdmission.ts |
Operação sem efeito, obsoleta desde #10110: as vias de admissão por sessão foram removidas em favor de um único limite para todo o processo. Aceite para compatibilidade de configuração; ignorada. |
OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS |
64 |
src/shared/middleware/chatBodyAdmission.ts |
Operação sem efeito, obsoleta desde #10110: as vias de admissão por sessão foram removidas em favor de um único limite para todo o processo. Aceite para compatibilidade de configuração; ignorada. |
OMNIROUTE_CHAT_VIRTUAL_LANES |
0 (desativado) |
open-sse/services/admission/runtime.ts |
Vias virtuais adaptativas de admissão em tempo de execução (#9654): interruptor principal do controlo adaptativo por inquilino (sistema 2). Distinto das variáveis obsoletas de vias por ligação acima (TTL_MS / MAX_SESSIONS, sem efeito desde #10110). Sinalizador de funcionalidade com o mesmo nome no painel; a variável de ambiente prevalece sobre a substituição do painel; requer reinício. |
OMNIROUTE_RUNNOW_TIMEOUT_MS |
30000 |
src/app/api/jobs/[id]/run-now/route.ts |
Limita o tempo durante o qual uma chamada de execução imediata aguarda por uma tarefa em curso antes de iniciar a execução em fila. |
ADOBE_FIREFLY_BROWSER_REFRESH |
ativado | open-sse/services/adobeFireflySession.ts |
Mantém atualizados os estados do IMS e de risco do navegador através de sessões Chrome CDP ao nível da conta; defina como 0 para desativar. |
ADOBE_FIREFLY_SESSION_DISK |
ativado | open-sse/services/adobeFireflySession.ts |
Mantém as sessões Adobe reparadas em DATA_DIR; defina como 0 para manter o estado apenas em memória. |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
12000 |
open-sse/services/adobeFireflySession.ts |
Intervalo mínimo entre submissões de geração ao Adobe Firefly. |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
15000 |
open-sse/services/adobeFireflySession.ts |
Período de inatividade adicional após cada terceira submissão bem-sucedida à Adobe. |
ADOBE_FIREFLY_CHROME_HEADLESS |
0 |
open-sse/services/adobeFireflyBrowserLogin.ts |
Modo verdadeiramente sem interface gráfica, apenas para depuração; normalmente, o Adobe colligo rejeita a sessão de risco resultante. |
CHROME_PATH |
deteção automática | open-sse/executors/cloudflare-playground.ts, open-sse/executors/chatgpt-web-codex.ts |
Executável absoluto opcional do Chrome utilizado pelos executores controlados pelo navegador quando a deteção automática da plataforma é insuficiente. |
TELEGRAM_BOT_TOKEN |
(não definido) | src/lib/telegram/config.ts |
Token do BotFather que ativa o webhook de entrada e assina o initData da Mini App. |
TELEGRAM_WEBHOOK_SECRET |
(não definido) | src/lib/telegram/config.ts |
Segredo partilhado registado através de setWebhook e verificado em relação ao cabeçalho X-Telegram-Bot-Api-Secret-Token em cada entrega de webhook. Obrigatório para o caminho do webhook; se não estiver definido, as entregas de webhook são recusadas com 503. |
TELEGRAM_DEFAULT_MODEL |
auto/chat |
src/lib/telegram/chatProxy.ts |
Modelo utilizado para respostas de conversação no Telegram. |
TEGRAM_BOT_API_BASE |
https://api.telegram.org |
src/lib/telegram/config.ts |
Substituição do URL base da Bot API para proxies ou servidores Bot API autoalojados. |
TELEGRAM_WEBHOOK_TIMEOUT_MS |
60000 |
src/lib/telegram/config.ts |
Tempo limite, em milissegundos, para chamadas de saída à Bot API. |
OMNIROUTE_OPTIONAL_PACK_TAR |
1 (ativado) |
scripts/build/optionalPackStaging.mjs |
Defina como 0 para ignorar a emissão de arquivos tar .tar.gz durante a preparação de pacotes opcionais de ML/navegador para a árvore autónoma do Electron (os diretórios dos pacotes e optional-packs.index.json continuam a ser produzidos). Utilizado pelo fluxo de trabalho de lançamento para ambiente de trabalho para reduzir o tamanho do carregamento dos artefactos. |
ChatGPT Web (Codex)
Predefinições globais para o navegador sem interface gráfica e para o túnel de ferramentas de saída. Os valores de ligação definidos no painel têm prioridade.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
CHATGPT_WEB_CODEX_CHROME_PATH |
(deteção automática) | open-sse/executors/chatgpt-web-codex.ts |
Caminho explícito do Chrome/Chromium para execução com npm, systemd e PM2. |
CHROME_PATH |
(deteção automática) | open-sse/executors/chatgpt-web-codex.ts |
Alternativa comum para um caminho explícito do Chrome/Chromium. |
CHATGPT_WEB_CODEX_CDP_URL |
(não definido) | open-sse/executors/chatgpt-web-codex.ts |
Endpoint CDP interno; o Docker utiliza o sidecar na porta 9223. |
CDP_PROXY_TOKEN |
(não definido) | docker/chatgpt-web-codex-browser/cdp-proxy.mjs |
Se estiver definido, todos os pedidos ao sidecar de proxy CDP têm de incluir este valor no cabeçalho X-Omni-Cdp-Token (#13679). Sem um valor, o proxy reencaminha os pedidos sem autenticação — nesse caso, apenas o isolamento da rede Compose chatgpt-web-codex-net oferece proteção. Gere-o com openssl rand -hex 32. |
CHATGPT_WEB_CODEX_TUNNEL_ID |
(não definido) | open-sse/executors/chatgpt-web-codex.ts |
ID global do túnel OpenAI para rondas locais das ferramentas Codex. |
CHATGPT_WEB_CODEX_RUNTIME_KEY |
(não definido) | open-sse/executors/chatgpt-web-codex.ts |
Chave de runtime global do túnel; nunca a inclua nos registos. |
CHATGPT_WEB_CODEX_CONNECTOR_NAME |
OmniRoute Codex v2 |
open-sse/executors/chatgpt-web-codex.ts |
Nome exato do conector personalizado do ChatGPT recém-criado para a ponte MCP. |
CODEX_CHATGPT_WEB_HOME |
<DATA_DIR>/chatgpt-web-codex |
open-sse/vendor/codex-chatgpt-web/config.ts |
Diretório dedicado para o estado do navegador, broker e túnel. |
CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS |
0 |
open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts |
Quando definido como 1, são capturadas imagens de diagnóstico do navegador em cada ponto de controlo. |
CODEX_CHATGPT_WEB_LAUNCHER |
(não definido) | open-sse/vendor/codex-chatgpt-web/config.ts |
Caminho absoluto opcional para um binário de launcher persistente. |
CODEX_CHATGPT_WEB_BUN |
(deteção automática) | open-sse/vendor/codex-chatgpt-web/config.ts |
Caminho absoluto opcional para o binário do runtime Bun. |
CODEX_WEB_GPT_BUN |
(não definido) | open-sse/vendor/codex-chatgpt-web/config.ts |
Alternativa legada para CODEX_CHATGPT_WEB_BUN; as novas configurações utilizam o nome canónico. |
Ponte OmniConductor
Consumidor SSE de longa duração que replica tarefas do hub OmniConductor no A2A TaskManager local (src/lib/conductor/). Funcionalidade opcional — a ponte só é iniciada quando CONDUCTOR_HUB_URL está definida. Apenas no lado do servidor: o token do hub nunca deve chegar ao navegador.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
CONDUCTOR_HUB_URL |
(vazio) | src/lib/conductor/boot.ts |
URL base do hub OmniConductor (por exemplo, http://127.0.0.1:7910). Não definida = ponte desativada. |
CONDUCTOR_HUB_TOKEN |
(vazio) | src/lib/conductor/boot.ts |
Credencial do hub para o feed SSE — emita um par do tipo spokesperson no hub (POST /v1/peers, administrador). |
CONDUCTOR_ORCHESTRATOR_TOKEN |
(vazio) | src/lib/conductor/hubProxy.ts |
Credencial para delegação de tarefas A2A→hub recebidas (POST /v1/tasks); recorre a CONDUCTOR_HUB_TOKEN quando não definida. |
CONDUCTOR_SPOKESPERSON_URL |
http://127.0.0.1:7920 |
src/lib/conductor/faroProxy.ts |
URL base do serviço de porta-voz (Faro) subjacente ao proxy de chat do painel (/api/conductor/ask). |
Agendamento com reconhecimento de quotas
Utilizado por open-sse/services/combo.ts e src/lib/quota/quotaScheduler.ts para verificações do orçamento de tokens antes do pedido. Funcionalidade opcional — o comportamento de encaminhamento predefinido permanece inalterado quando não está definida.
| Variável | Predefinição | Ficheiro de origem | Descrição |
|---|---|---|---|
OMNIROUTE_QUOTA_AWARE_ROUTING |
0 |
open-sse/services/combo.ts |
Quando definida como 1, ignora ligações cujo orçamento de tokens por janela (rateLimitOverrides.tpm, tabela provider_quota_state) não consegue suportar o custo estimado do pedido antes do envio. Prossegue em caso de falha quando não existe um orçamento configurado. |