Pular para o conteúdo
OmniRoute source

Feature Flags (Português (Brasil))

Uma feature flag é uma alternância nomeada (booleana ou enum) cujo valor pode ser alterado em tempo de execução e persistido no banco de dados, sem exigir uma nova implantação do processo. Cada flag é descrita por uma FeatureFlagDefinition com uma key, label, description, category, defaultValue, type e uma indicação requiresRestart.

O valor efetivo de uma flag é resolvido por resolveFeatureFlag() com esta precedência (a mais alta prevalece):

  1. Substituição no banco de dados — um valor armazenado na tabela key_value sob o namespace feature_flags (definido pelo painel ou pela API REST).
  2. Variável de ambiente — process.env[<KEY>], caso esteja definida e não esteja vazia.
  3. Valor padrão da definição — o defaultValue de featureFlagDefinitions.ts.

Uma flag booleana é considerada habilitada quando seu valor efetivo é "true", "1" ou "yes" (consulte isFeatureFlagEnabled()).

[!NOTE] A maioria das flags também possui uma variável de ambiente correspondente com o mesmo nome, documentada em ENVIRONMENT.md. A substituição da flag no banco de dados tem precedência sobre essa variável de ambiente. Uma flag com requiresRestart: true é persistida imediatamente, mas só é lida novamente na inicialização do processo — alterná-la exibe um banner “Reiniciar servidor” no painel.


77 flags em 6 categorias. Padrão é a definição padrão — o valor usado quando nem uma substituição de DB nem uma variável de ambiente estão presentes.

Chave Tipo Padrão Descrição
REQUIRE_API_KEY boolean false Exige uma chave de API para todas as requisições de entrada.
INPUT_SANITIZER_ENABLED boolean true Habilita a sanitização de entrada para todas as requisições.
INJECTION_GUARD_MODE enum off Modo de proteção contra injeção de prompt. Valores: off, warn, block, redact.
PII_REDACTION_ENABLED boolean false Redige PII de requisições (independente de INPUT_SANITIZER_MODE).
PII_RESPONSE_SANITIZATION boolean false Sanitiza PII de respostas do provedor.
PII_RESPONSE_SANITIZATION_MODE enum redact Modo para sanitização de resposta de PII. Valores: redact, warn, block, off.
OUTBOUND_SSRF_GUARD_ENABLED boolean true Bloqueia requisições de saída para faixas de IP privadas/internas.
ALLOW_API_KEY_REVEAL boolean false Permite que usuários autenticados do painel revelem chaves de API armazenadas em vez de apenas ver valores mascarados.
AUTH_LOG_INCLUDE_ACCOUNT_ID boolean false Inclui o prefixo da conta nas linhas de log de AUTENTICAÇÃO (por exemplo, “Usando a conta <provedor>: abc12345…”). Desabilitado por padrão para que os identificadores de conta sejam redigidos de logs de processo compartilhados/multi-tenant. Independente do Modo de Depuração; ativar o Modo de Depuração não revela isso.
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN boolean false Quando o OIDC está habilitado, desabilita o login por senha para que os usuários possam se autenticar apenas via OIDC Single Sign-On. Quando desabilitado (padrão), tanto o login por senha quanto o OIDC estão disponíveis.
Key Type Default Restart Description
ENABLE_TLS_FINGERPRINT boolean false ✓ Habilitar o modo furtivo (stealth mode) de impressão digital TLS (TLS fingerprint).
AUDIO_REMOTE_PROVIDER_NODES boolean false Permitir que as rotas /v1/audio/* usem nós de provedores compatíveis com OpenAI hospedados fora do localhost. Desativado por padrão — o roteamento de áudio para um host remoto altera a identidade de saída (egress identity) e deve ser uma decisão explícita do operador. Nós de loopback são sempre permitidos e não são afetados.
RERANK_REMOTE_PROVIDER_NODES boolean false Permitir que POST /v1/rerank (e a etapa de reclassificação de loopback do mecanismo de memória) use nós de provedores compatíveis com OpenAI hospedados fora do localhost. Desativado por padrão — o roteamento para um host remoto altera a identidade de saída (egress identity) e deve ser uma decisão explícita do operador. Nós de loopback são sempre permitidos; nós remotos também devem passar pela política de URL de saída do provedor.
PROXY_AUTO_SELECT_ENABLED boolean false Quando nenhum proxy é atribuído a uma conexão, seleciona automaticamente o primeiro proxy funcional do registro. Desativado por padrão (caso contrário, qualquer proxy do registro torna-se um fallback global — #3332).
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK boolean false Permitir que os fluxos de validação de provedor e OAuth ignorem um proxy fixado e se conectem diretamente quando as pré-verificações de acessibilidade do proxy falharem. Desativado por padrão porque isso pode alterar o IP de saída (egress IP).
NETWORK_ROTATION_SHARED_EGRESS_GUARD boolean true Em caso de exceção de rede (timeout, conexão recusada/redefinida) para um executor de rotação multi-conta, quando a conta com falha não possui um proxy dedicado, aplica um curto período de espera (cooldown) e pula outras contas sem proxy pelo restante da requisição, em vez de tentar cada uma delas. Ativado por padrão (seguro: sem alteração de IP de saída, apenas reduz a latência/risco de cooldown em contas de saída compartilhada). Desative para restaurar a propagação imediata no primeiro erro sem proxy.
ROTATION_ATTRIBUTION boolean false A rotação do opencode registra qual conta atendeu ou foi pulada (apenas IDs mascarados, nunca IDs de conta completos) e vincula as entradas de log do proxy à sua requisição, para que o operador possa distinguir contas puladas de contas não utilizadas. Desativado por padrão.
PROXY_SKIP_RECENTLY_FAILED boolean false Pools de proxy e a rotação por conta do opencode param de servir novamente um proxy que acabou de falhar (sonda TCP recusada ou um 429 recebido através dele) por um período por processo que dobra a cada repetição, até um limite. Nenhum status de proxy é gravado; com cada candidato deixado de lado, a escolha permanece inalterada. Desativado por padrão.
PROXY_POOL_EGRESS_OBSERVATION boolean false Mostra, sob um pool de proxy no painel, quantos IPs de saída observados atenderam seus membros nas últimas 24 horas e quantas conexões os utilizaram. Somente leitura, calculado a partir do log do proxy, nunca usado para roteamento. Desativado por padrão.
OPENCODE_RESPONSES_STALL_ROTATION boolean false Para o executor OpenCode, observe o primeiro byte do corpo de uma resposta de Respostas transmitida (janela: RESPONSES_FIRST_BYTE_TIMEOUT_MS, padrão 15000). Um fluxo de Respostas 2xx que permanece silencioso após a janela é tratado como travado: a conta é resfriada e a requisição é rotacionada para a próxima conta uma vez; um segundo travamento falha rapidamente. Desativado por padrão: fluxos travados mantêm a espera atual até o tempo limite de prontidão do fluxo.
OPENCODE_USER_BLOCKED_ROTATION boolean false Executor OpenCode: em um 403/451 que contenha uma recusa de user_blocked (não geo, não uma rejeição de impressão digital do Cloudflare), resfrie a conta recusada e rotacione para a próxima conta no máximo uma vez por requisição; uma segunda recusa é retornada como está, sem uma marca de sucesso. Desativado por padrão: contornar um bloqueio de usuário upstream pode parecer evasão e espalhar a sinalização pela frota.
OPENCODE_TRANSIENT_FAILOVER_BACKOFF boolean false Rotação OpenCode: após duas falhas upstream transitórias consecutivas (5xx ou um 400 vazio), pause antes da próxima conta — 1.5s dobrando a cada falha adicional, limitado a 6s por pausa e 10s por requisição, ignorado em caso de desconexão do cliente; o corpo falho é liberado antes da espera. Desativado por padrão: o failover permanece imediato.
OPENCODE_PARK_AND_RESUME boolean false Rotação OpenCode: estacione a requisição após 429s transitórios repetidos (ou um novo marcador de sobrecarga do pool) com um heartbeat, então reproduza uma perna limitada de até 3 contas sequenciais em vez de distribuir para toda a frota. Desativado por padrão: cada 429 rotaciona para a próxima conta exatamente como antes.
FLUSH_EMPTY_RETRY_ENABLED boolean false Em turnos de streaming traduzidos, quando o turno upstream não contém conteúdo utilizável (conclusão apenas de raciocínio ou zero blocos valiosos), emita novas tentativas limitadas através do caminho de credenciais normal (até STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX) antes que algo seja exposto ao cliente. Desativado por padrão: turnos vazios mantêm o comportamento atual (200 vazio ou 502 com conteúdo vazio).
OPENCODE_RATE_LIMITED_429_EARLY_STOP boolean false Rotação OpenCode: pare a onda de contas no primeiro 429 classificado como um limite de taxa real (Retry-After analisável, ou um corpo que nomeia um limite de taxa/uso) e retorne esse 429 upstream inalterado. 429s não classificados continuam rotacionando. Desativado por padrão: o nível gratuito é limitado por IP de saída (#9611), então cada 429 rotaciona e uma onda exaurida retorna o último 429 upstream.
MITM_DISABLE_TLS_VERIFY boolean false ✓ Desabilita a verificação de certificado TLS para o proxy MITM. Perigo.
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS boolean false Permite URLs de provedor que apontam para redes privadas/internas.
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS boolean true Permite adicionar/validar provedores em endereços locais/privados (127.0.0.1, localhost, LAN). Ativado por padrão (local-first); desative para bloqueio estrito apenas público. Metadados da nuvem permanecem bloqueados.
ENABLE_CC_COMPATIBLE_PROVIDER boolean false ✓ Habilita o modo de provedor compatível com Claude Code.
Chave Tipo Padrão Descrição
TOOL_POLICY_MODE enum disabled Modo de aplicação da política de uso de ferramentas. Valores: disabled, warn, block.
RATE_LIMIT_AUTO_ENABLE boolean false Habilita automaticamente a limitação de taxa com base nos padrões de uso.
DISABLE_CONTEXT_WINDOW_CHECKS boolean false Ignora a verificação local da janela de contexto / token de entrada máximo do OmniRoute para solicitações diretas de modelo único. Os limites upstream ainda se aplicam.
CAPABILITY_FILTER_ENABLED boolean false Rejeita solicitações antes do despacho quando o modelo de destino não possui as capacidades necessárias (visão, ferramentas, saída estruturada, janela de contexto). Protege solicitações diretas de provedor único que ignoram o filtro de compatibilidade da camada combinada.
RADAR_ENABLED boolean false Habilita o módulo OmniRoute Radar (telas de feed do catálogo e sincronização). Desativado por padrão; a habilitação apenas desbloqueia a interface do usuário — a sincronização de dados permanece uma opção separada.
Key Type Default Restart Descrição
UNIVERSAL_CONTEXT_HANDOFF_ENABLED boolean true Gerar e injetar resumos de conversas quando o roteamento combinado troca de modelos. Desative para tratar as trocas de modelo de forma independente e evitar solicitações de handoff em segundo plano para todos os combos existentes e futuros.
RESPONSES_PASSTHROUGH_DROP_COMMENTARY boolean true Remover itens de saída da fase de comentários internos dos fluxos de passagem da API Responses antes de encaminhar para os clientes. Desative para receber comentários brutos do upstream.
OMNIROUTE_MCP_ENFORCE_SCOPES boolean true Aplicar restrições de escopo ao acesso à ferramenta MCP.
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS boolean false Comprimir descrições de ferramentas MCP para reduzir o uso de tokens.
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS boolean false Habilitar o processamento de tarefas em segundo plano em tempo de execução.
OMNIROUTE_DISABLE_BACKGROUND_SERVICES boolean false ✓ Desabilitar todos os serviços em segundo plano (atualização de cota, sincronização, etc).
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS boolean false Confiar nos filtros RTK de nível de projeto sem validação.
OMNIROUTE_ENABLE_LIVE_WS boolean true ✓ Inicia o servidor WebSocket do painel em tempo real na importação (porta 20132 por padrão).
OMNIROUTE_CODEX_WS_ENABLED boolean true Permite que o Codex use o transporte Responses-over-WebSocket. Quando desativado, o Codex retorna às Respostas HTTP.
OMNIROUTE_CODEX_APP_SERVER_ENABLED boolean true Permite que o Codex use o transporte JSON-RPC WebSocket do servidor de aplicativos local (codexTransport=app-server). Quando desativado, as conexões que optaram pelo app-server retornam a outros transportes do Codex.
OMNIROUTE_EMERGENCY_FALLBACK boolean true Encaminha solicitações com orçamento esgotado para o provedor/modelo de fallback de emergência gratuito. (Veja Fallback de Orçamento de Emergência abaixo.)
STREAM_RECOVERY_ENABLED boolean false Habilita a nova tentativa antecipada transparente para fluxos SSE upstream truncados antes que quaisquer bytes de resposta cheguem ao cliente.
STREAM_RECOVERY_MIDSTREAM_ENABLED boolean false Permite que a recuperação de fluxo solicite novamente e junte uma resposta depois que os bytes já tiverem chegado ao cliente.
STREAM_RECOVERY_TOOLCALL_ORDER_FIX boolean false Torna a continuação no meio do fluxo segura para chamadas de ferramenta: nunca retoma um fluxo cortado depois que uma chamada de ferramenta foi emitida (em andamento ou já finalizada com finish_reason tool_calls), e fecha após uma continuação vazia em vez de gastar todo o orçamento. Desativado: comportamento de lançamento.
STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED booleano false Faz failover uma vez para uma conexão irmã quando um fluxo SSE fecha antes de emitir qualquer quadro útil e a tentativa limitada na mesma conexão é esgotada; sem uma conexão irmã utilizável, o 502 STREAM_EARLY_EOF original é retornado. Desativado por padrão: o early-EOF permanece terminal após a tentativa na mesma conexão.
MODEL_CATALOG_INCLUDE_NAMES booleano true Inclui campos de nome amigáveis para exibição nas respostas de /v1/models. Desative para clientes que esperam apenas IDs de modelo.
MODELS_CATALOG_PREFIX_MODE enum dual Controla como os IDs de modelo são prefixados em /v1/models. ‘dual’ (padrão) emite prefixos de alias e de ID de provedor canônico para compatibilidade com versões anteriores. ‘alias’ emite apenas o prefixo de alias curto (por exemplo, ds-web/model, não deepseek-web/model). ‘canonical’ emite apenas o prefixo de ID de provedor completo. Valores: dual, alias, canonical.
ARENA_ELO_SYNC_ENABLED booleano true Habilita a sincronização periódica do ELO do placar de líderes da Arena AI para classificações de inteligência de modelo.
EXPOSE_CC_DISCOVERY_ALIASES booleano false Anuncia IDs espelho claude/&lt;provider&gt;/&lt;model&gt; em /v1/models para que a descoberta de modelos do gateway Claude Code liste modelos não-Claude. Nível global do portão de três níveis (a variável de ambiente prevalece sobre a substituição do painel). Veja configuração do Claude Code.
NO_THINKING_ALIAS_ENABLED booleano true Chave mestra para os aliases de gateway no-think/<provider>/<model>. Ativado (padrão): /v1/models anuncia uma variante “sem pensamento” para cada modelo Claude elegível capaz de pensar, e um ID no-think/ enviado em uma requisição é resolvido de volta para o modelo real com o raciocínio suprimido. Desativado: nenhuma variante é anunciada e um ID no-think/ é tratado como qualquer outro ID de modelo desconhecido. O opt-in/opt-out ModelSpec.noThinkingAlias por modelo ainda se aplica enquanto esta opção estiver ativada.
OMNIROUTE_DISABLE_THINKING_LEVEL_VARIANTS booleano false Desabilita a geração de variantes de nível de pensamento (por exemplo, -low, -medium, -high) no catálogo /v1/models.
OMNIROUTE_CHAT_VIRTUAL_LANES booleano false ✓ Habilita faixas de admissão virtuais adaptativas por locatário para despacho de provedor (#9654): o pico de um locatário não causa mais 503 em outro. A variável de ambiente OMNIROUTE_CHAT_VIRTUAL_LANES prevalece sobre esta substituição do painel; as alterações entram em vigor na reinicialização do servidor.
EXPOSE_FUNCTIONAL_GATEWAY_MIRRORS boolean false Anuncia IDs de espelho &lt;gateway-alias&gt;/&lt;model&gt; em /v1/models para modelos cujo proprietário canônico não possui credencial ativa, mas um gateway de passagem com uma credencial ativa os roteia. Aviso: adiciona entradas de catálogo para todos os clientes quando ativado globalmente.
NEWAPI_AGGREGATOR_BALANCE boolean false Habilita a detecção de saldo para nós compatíveis com agregadores New-API / One-API / Sub2API. Quando ativado, nós compatíveis com a flag de agregador definida reportarão seu saldo no painel e no roteamento de pré-verificação de cota.
SERVER_OWNED_TOOL_LOOP_ENABLED boolean false Continua chamadas de ferramentas não-streaming de propriedade do servidor até que o modelo retorne uma resposta utilizável pelo cliente.
SEARCH_STATS_HIDE_DELETED_CONNECTIONS boolean false Estatísticas de pesquisa e pesquisas recentes contam apenas provedores que ainda possuem uma conexão ativa (provedores sem chave, como duckduckgo-free, sempre contam). Desativado mantém todas as linhas de pesquisa retidas com um ID de provedor.
FREE_BADGE_REQUIRES_PROVIDER_FREE_TIER boolean false Páginas de provedores do painel: mostra o selo ‘Grátis’ apenas em sinais que o provedor honra — descarta a heurística de nome de exibição, campos ‘grátis’ não-booleanos e sufixos :free em provedores registrados sem um nível gratuito documentado. Desativado mantém a regra histórica do selo.
RETRY_AFTER_PROVENANCE_ENABLED boolean false Em respostas agregadas 429/503 indisponíveis, omite Retry-After quando nenhum tempo de nova tentativa futuro concreto é conhecido (em vez de um 1s sintético), adiciona error.retry_after_provenance (signal | none), e permite que caminhos de drenagem combinados leiam dicas de nova tentativa em prosa de corpos JSON e de texto simples upstream. O campo aparece apenas em respostas construídas por unavailableResponse(); outros corpos 429/503 permanecem inalterados.
PROTECTED_PRIORITY_INFRA_502_ENABLED boolean false Quando um alvo combinado de prioridade marcado como ‘fallback-only-on-quota-exhaustion’ interrompe a combinação por uma causa que comprovadamente não é cota (disjuntor do provedor aberto, salto de latência preditiva), responde 502 em vez do 503 que parece cota. Bloqueio, resfriamento, indisponibilidade, exaustão e limites de concorrência mantêm 503.
MISTRAL_AMBIGUOUS_401_SOFT_LOCKOUT boolean false Um Mistral 401 puro ({"detail":"Unauthorized"}, sem sinal de autenticação explícito) é idêntico para uma chave revogada e para cota esgotada. Quando ativado, ele resfria a conexão em vez de estacioná-la como expired, no máximo 3 vezes por hora por conexão; a próxima a estaciona, então uma chave revogada ainda converge. Desativado por padrão: cada Mistral 401 puro estaciona a conexão como antes.
XAI_OAUTH_LIVE_MODEL_DISCOVERY boolean false Busca o catálogo de modelos xAI ao vivo para conexões xai-oauth de https://api.x.ai/v1/models usando o token de portador OAuth, em vez da semente estática congelada. Desativado por padrão: xai-oauth continua servindo a semente estática inalterada. Em qualquer erro de resolução, a descoberta retorna à semente (não verificado se x.ai aceita um portador OAuth neste endpoint).
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED boolean false Permite que a varredura de limpeza automática exclua trabalhos da API Batch em estado terminal (concluídos/falhados/cancelados/expirados) com mais de OMNIROUTE_BATCH_RETENTION_DAYS, juntamente com seus pontos de verificação por linha, e limpe o conteúdo BLOB de arquivos carregados após seu próprio expires_at. Desativado por padrão: cada instalação existente mantém esses dados exatamente como antes até que um operador opte por ativá-lo. A rota DELETE /api/v1/batches/delete-completed acionada pelo operador não é afetada de qualquer forma — é um contrato de API público separado e incondicional.
ANTIGRAVITY_ACCOUNT_LEASE_ENABLED boolean false Reserva a conta Antigravity selecionada para o ciclo de vida de streaming da requisição que a escolheu, para que uma nova tentativa concorrente ou a entrega de credenciais não possa escolher novamente uma conta já comprometida com um fluxo em andamento. A reserva é limitada a (conexão, modelo upstream chamável), então uma conta ainda pode servir dois modelos diferentes ao mesmo tempo. Quando todas as contas elegíveis já estão alugadas para esse modelo, a requisição retorna um 503 estruturado antigravity_pool_busy com um Retry-After limitado em vez de sobrecarregar uma conta ocupada. Desativado por padrão: a seleção de contas permanece exatamente como antes, e nenhuma reserva é feita.
Chave Tipo Padrão Reiniciar Descrição
CLI_COMPAT_ALL boolean false ✓ Habilita o modo de compatibilidade para todos os clientes CLI.
MODEL_ALIAS_COMPAT_ENABLED boolean false Habilita a camada de compatibilidade de alias de modelo.
PRICING_SYNC_ENABLED boolean false Habilita a sincronização automática de dados de preços (também requer a variável de ambiente PRICING_SYNC_ENABLED).
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES boolean false Após uma sincronização de modelo de provedor, reescreve automaticamente os arquivos de perfil ~/.codex/*.config.toml do catálogo ativo. Nunca altera a configuração ativa/padrão do Codex. Desativado por padrão.
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES boolean false Após uma sincronização de modelo de provedor, reescreve automaticamente os perfis de código Claude ~/.claude/profiles/&lt;name&gt;/settings.json do catálogo ativo. Nunca altera a configuração ativa/padrão do Claude. Desativado por padrão.
Chave Tipo Padrão Descrição
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK boolean false Desabilita o endpoint de verificação de saúde da instância local.
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK boolean false Desabilita a verificação de saúde de validação de token.
SKILLS_SANDBOX_NETWORK_ENABLED boolean false Habilita o acesso à rede no ambiente sandbox de habilidades.
PROXY_HEALTH_BLOCKED_RESETS_STREAK boolean false Na varredura de saúde do proxy, uma sonda que o alvo recusou (401/403/429) redefine a sequência de falhas consecutivas do proxy. Desativado por padrão: uma recusa permanece neutra (#10654). Um 5xx permanece inconclusivo de qualquer forma; uma recusa nunca remove, desabilita ou reativa um proxy.
DB_HEALTHCHECK_STARTUP_DEFERRED_ENABLED boolean false Executa a verificação de integridade/saúde do DB na inicialização depois que o servidor começa a aceitar requisições (via setImmediate) em vez de bloquear a inicialização até que seja concluída (#13717). Desativado por padrão: a inicialização bloqueia exatamente como antes deste PR.

[!NOTA] INPUT_SANITIZER_BLOCK_THRESHOLD e seu alias legado INJECTION_GUARD_BLOCK_THRESHOLD ajustam o modo block de INJECTION_GUARD_MODE, mas são variáveis de ambiente simples lidas por src/shared/utils/injectionSeverity.ts, não feature flags: eles não têm substituição de DB e nem alternância no painel. Veja ENVIRONMENT.md.

[!NOTA] A coluna Restart marca flags com requiresRestart: true — o valor é persistido instantaneamente, mas só entra em vigor após o processo ser recarregado. Flags de enumeração rejeitam qualquer valor fora do seu conjunto permitido (validado no lado do servidor tanto em setFeatureFlagOverride() quanto no manipulador REST PUT).


Navegue até Painel → Configurações → Feature Flags (/dashboard/settings/feature-flags). A grade (src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx) suporta:

  • Pesquisa por chave ou descrição, e filtro por categoria (além de uma visualização sintética Requer Reinício).
  • Um alternador para flags booleanas e uma lista suspensa para flags de enumeração (src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx).
  • Um selo de origem por flag — DB, ENV, ou DEF — mostrando de onde o valor efetivo veio.
  • Um botão Redefinir (mostrado apenas para flags com origem DB) para remover a substituição, e um botão Redefinir Todas as Substituições na parte inferior.
  • Um banner Reiniciar Servidor quando uma flag requiresRestart é alterada.

Todas as operações passam por uma única rota: src/app/api/settings/feature-flags/route.ts. Cada método requer uma sessão de painel autenticada (caso contrário, 401).

Retorna cada flag com seu valor efetivo, origem e um resumo.

{
"flags": [
{
"key": "REQUIRE_API_KEY",
"label": "Require API Key",
"description": "Require an API key for all incoming requests",
"category": "security",
"type": "boolean",
"enumValues": null,
"defaultValue": "false",
"effectiveValue": "false",
"source": "default", // "db" | "env" | "default"
"requiresRestart": false,
"warningLevel": "caution",
},
// ... all 77 flags
],
"summary": {
"total": 56,
"active": 0,
"inactive": 0,
"overriddenByDb": 0,
"overriddenByEnv": 0,
},
}

Define ou remove uma única substituição. Corpo: { key: string; value?: string }. Omitir value remove a substituição (restaurando o valor do ambiente / padrão).

Janela do terminal
# Define uma substituição de DB
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY","value":"true"}'
# Remove a substituição (sem "value")
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY"}'

A resposta ecoa o novo effectiveValue/source, o previousValue/ previousSource, e requiresRestart. Chaves desconhecidas e valores de enumeração fora do intervalo são rejeitados com 400.

Limpa todas as substituições do DB de uma vez, restaurando cada flag para seu valor de ambiente / padrão. Retorna { cleared: &lt;count&gt;, message: "..." }.

[!NOTE] Flags com requiresRestart: true só entram em vigor após um recarregamento do processo. O fluxo de reinício do painel chama POST /api/restart e então consulta GET /api/health/ping até que o servidor esteja novamente ativo.


OMNIROUTE_EMERGENCY_FALLBACK (categoria runtime, padrão true) controla o caminho de fallback gratuito emergencial em open-sse/services/emergencyFallback.ts. Quando habilitado, as solicitações que esgotam seu orçamento são encaminhadas para um provedor/modelo de fallback gratuito em vez de falharem imediatamente. Defina-o como false (ou 0) — por meio do botão de alternância no dashboard, de uma substituição no DB ou da variável de ambiente OMNIROUTE_EMERGENCY_FALLBACK — para desabilitar o comportamento e permitir que solicitações cujo orçamento foi esgotado falhem. (Disponibilizado como um botão de alternância no dashboard nos PRs #3741 / #3752.)



Código-fonte do OmniRoute (a58000c7685f)

HagiCode

HagiCode é um ambiente de programação com agentes, fluxos estruturados, execução multiagente e visualizações Hero Dungeon.

Transforme ideias em software útil com um fluxo de trabalho com agentes mais inteligente, rápido e agradável.

Interface principal do HagiCode no tema claro
  • SmartFluxos estruturados transformam intenções em um caminho executável da ideia à entrega.
  • EfficientFluxos multiagente mantêm pesquisa, implementação e revisão em andamento simultaneamente.
  • FunO Hero Dungeon torna longas sessões de programação mais visuais e colaborativas.
Acessar HagiCode