# OmniRoute — Dashboard Features Gallery (Português (Brasil)) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇱 [nl](../../../nl/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇷🇺 [ru](../../../ru/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇱 [nl](../../../nl/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇷🇺 [ru](../../../ru/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) Guia visual de todas as seções do painel do OmniRoute. > 📅 **Última atualização:** 2026-06-28 — **v3.8.40** --- ## ✨ Destaques da v3.8.0 O ciclo v3.7.x → v3.8.0 adicionou roteamento automático sem configuração, novos provedores, fluxos OAuth, maior resiliência e uma experiência de CLI muito mais completa. Confira abaixo os principais recursos — detalhes completos mais adiante neste documento e nas especificações vinculadas. - 🤖 **Combo automático / Roteamento automático sem configuração** — use os prefixos `auto/coding`, `auto/fast`, `auto/cheap`, `auto/offline`, `auto/smart`, `auto/lkgp`, `auto/chaos`. Baseado em um mecanismo de pontuação de 16 fatores e 6 **pacotes de modo** selecionados (ship-fast, cost-saver, quality-first, offline-friendly, reliability-first, chaos-mode) - 🆕 **Provedor Command Code** (#2199) — registro de primeira classe com catálogo de modelos e acompanhamento de cota - 🆕 **Provedor Z.AI** — novo provedor de nível gratuito com rótulos de cota - 🎬 **Expansão de mídia do KIE** — catálogo ampliado, incluindo modelos de geração de vídeo - 🔐 **Autenticação do Devin** — o Desktop importa uma chave de API existente do Devin; a CLI usa credenciais locais de `devin auth login` - 🆓 **8 novos provedores gratuitos** — LLM7, Lepton, UncloseAI, BazaarLink, Completions, Enally, FreeTheAi, Command Code - 🎯 **Roteamento por níveis W1–W4 com reconhecimento de manifesto** — os manifestos dos provedores determinam a seleção ponderada de níveis - 🎨 **Paridade completa do Cursor com a OpenAI** — chamadas de ferramentas, streaming e gerenciamento de sessões de ponta a ponta - 📊 **Uso do plano Cursor Pro** — dados de cota e ciclo exibidos no painel de limites dos provedores - ⚡ **Detalhamento por nível de serviço / Análises do nível rápido do Codex** — visibilidade do consumo por nível - 📌 **Roteamento persistente por sessão** — as sessões do Codex permanecem vinculadas à mesma conta entre as interações - 🔊 **Aprimoramentos de TTS do Inworld** — catálogos de vozes, streaming e melhorias de latência - 🔑 **Autenticação headless do Kiro** — login por meio do armazenamento SQLite local do `kiro-cli`, sem necessidade de navegador - 📉 **Monitoramento de cotas e limites do DeepSeek** — uso diário/mensal exibido no painel - 🔄 **Estratégia de roteamento com reconhecimento de redefinição** — os combos agora priorizam contas cuja janela de cota será redefinida primeiro - ⏱️ **`fallbackDelayMs`** e **detecção dinâmica de limite de ferramentas** — controle mais preciso do tempo de fallback + limites de quantidade de ferramentas por provedor - 🔧 **Degradação do modo em segundo plano (Responses API)** — alterna para o modo síncrono com um aviso estruturado quando um serviço upstream não oferece suporte a consultas em segundo plano - 🚦 **Classificação de erro 429 por provedor** + opção `useUpstream429BreakerHints` — comportamento mais preciso do disjuntor usando indicações upstream de limite de taxa - 🩺 **Painel de cooldowns de modelos** — observe bloqueios por modelo e reabilite-os manualmente pela interface - 🔒 **Detecção dinâmica de certificados MITM no Linux** — funciona no Debian/Ubuntu, Fedora/RHEL, Arch e outras distribuições - 💻 **Conjunto de aprimoramentos da CLI** — mais de 20 comandos, incluindo `omniroute providers`, `omniroute combos`, `omniroute doctor`, `omniroute setup` - 🔍 **Descoberta de modelos de embedding do Qdrant** — sondagem automática de modelos do armazenamento vetorial - 🔑 **Chaves de API / chaves Bearer com escopo `manage`** — execute operações administrativas de forma programática por meio da API - 🏥 **Análises de integridade dos destinos de combos** + **construtor estruturado de combos** — integridade por destino e construtor de interface para montar etapas `(provider, model, connection)` - 🤝 **Provedor OAuth do GitLab Duo** — login com credenciais do GitLab - 🧠 **Cache de repetição de raciocínio** — persistência híbrida em memória + SQLite de rastros de raciocínio 📚 **Documentos relacionados:** [Framework de Skills](../frameworks/SKILLS.md) · [Sistema de memória](../frameworks/MEMORY.md) · [Agentes na nuvem](../frameworks/CLOUD_AGENT.md) · [Webhooks](../frameworks/WEBHOOKS.md) · [Cache de repetição de raciocínio](../routing/REASONING_REPLAY.md) --- ## 🔌 Provedores Gerencie conexões com provedores de IA: provedores OAuth (Claude Code, Codex), provedores de chave de API (Groq, DeepSeek, OpenRouter) e provedores gratuitos (Qoder, Kiro). As contas Kiro incluem acompanhamento do saldo de créditos — créditos restantes, limite total e data de renovação visíveis em Painel → Uso. As conexões do OpenRouter podem armazenar um `preset` por conexão nas Configurações Avançadas. Quando definido, o OmniRoute o envia como o campo de nível superior da solicitação do OpenRouter, por exemplo, `"preset": "email-copywriter"`, a menos que a solicitação do cliente já tenha fornecido seu próprio `preset`. ![Painel de Provedores](../screenshots/01-providers.png) --- ## 🎨 Combos Crie combos de roteamento de modelos com 19 estratégias públicas: priority, weighted, round-robin, context-relay, fill-first, p2c (escolhas de potência de dois), random, least-used, cost-optimized, reset-aware, reset-window, headroom, strict-random, auto, lkgp (último provedor conhecido como funcional), context-optimized, cache-optimized, **fusion** (distribui a solicitação para um painel de modelos em paralelo e, em seguida, sintetiza uma única resposta por meio de um juiz) e **pipeline**. Cada combo encadeia vários modelos com fallback automático e inclui modelos rápidos e verificações de prontidão. Melhorias recentes nos combos: - **Criador de combos estruturado** — crie cada etapa selecionando o provedor, o modelo e a conta/conexão exata - **Suporte a provedores repetidos** — reutilize o mesmo provedor várias vezes em um combo, desde que a tupla `(provider, model, connection)` seja exclusiva - **Integridade dos destinos do combo** — as superfícies de análise e integridade agora distinguem destinos/etapas individuais do combo, em vez de agrupar tudo em strings de modelo - **Ordenação de camadas compostas** — `defaultTier -> fallbackTier` agora influencia a ordem de execução/fallback em tempo de execução das etapas de nível superior do combo - **Modelos de prompt do sistema** — o `system_message` do combo oferece suporte, no lado do servidor, aos placeholders `{{MODEL_ID}}`, `{{PROVIDER_ID}}`, `{{ACCOUNT}}` e `{{FINGERPRINT}}`, expandidos com base no destino efetivamente roteado imediatamente antes do envio. Eles são incluídos em uma lista de permissões e não são recursivos; placeholders desconhecidos permanecem literais; valores vazios são expandidos como vazios; prompts de sistema do cliente nunca são reescritos. `{{FINGERPRINT}}` é resolvido somente para provedores gratuitos baseados em fingerprint com uma fingerprint fixada ou alternada automaticamente — em outros casos, ele é expandido como vazio (por exemplo, conexões de fingerprint única, provedores não fp). A expansão abrange o loop de envio padrão, round-robin e sessões fixadas de cache de contexto; as estratégias fusion, chaos, pipeline e nested-execute ainda não expandem placeholders. ![Painel de Combos](../screenshots/02-combos.png) --- ## 📊 Análises Análises abrangentes de uso, com consumo de tokens, estimativas de custo, mapas de calor de atividade, gráficos de distribuição semanal e detalhamentos por provedor. ![Painel de Análises](../screenshots/03-analytics.png) --- ## 🏥 Integridade do Sistema Monitoramento em tempo real: tempo de atividade, memória, versão, percentis de latência (p50/p95/p99), estatísticas de cache, estados do circuit breaker dos provedores, sessões ativas com monitoramento de cota e integridade dos destinos dos combos. ![Painel de Integridade](../screenshots/04-health.png) --- ## 🔧 Playground do Tradutor Quatro modos para depurar traduções da API: **Playground** (conversor de formatos), **Testador de Chat** (solicitações ao vivo), **Bancada de Testes** (testes em lote) e **Monitor ao Vivo** (fluxo em tempo real). ![Playground do Tradutor](../screenshots/05-translator.png) --- ## 🎮 Playground de Modelos _(v2.0.9+)_ Teste qualquer modelo diretamente pelo painel. Selecione o provedor, o modelo e o endpoint, escreva prompts com o Monaco Editor, acompanhe as respostas em tempo real, interrompa durante o fluxo e visualize métricas de tempo. --- ## 🎨 Temas _(v2.0.5+)_ Temas de cores personalizáveis para todo o painel. Escolha entre 7 cores predefinidas (Coral, Azul, Vermelho, Verde, Violeta, Laranja, Ciano) ou crie um tema personalizado selecionando qualquer cor hexadecimal. Compatível com os modos claro, escuro e do sistema. --- ## ⚙️ Configurações Painel abrangente de configurações com **7 abas**: - **Geral** — Armazenamento do sistema, gerenciamento de backups (exportação/importação do banco de dados) - **Aparência** — Seletor de tema (escuro/claro/sistema), temas de cores predefinidos e cores personalizadas, visibilidade do log de integridade, controles de visibilidade dos itens da barra lateral e dos separadores de grupos, controles de visibilidade dos túneis de endpoint - **IA** — Recursos do assistente de IA, predefinições de roteamento padrão (Combinação Automática `auto/coding`, `auto/fast`, `auto/cheap`, `auto/smart`), cache de reprodução de raciocínio e opções para ativar ou desativar habilidades/memória - **Segurança** — Proteção de endpoints da API, bloqueio de provedores personalizados, filtragem de IP, informações da sessão - **Roteamento** — Aliases de modelos, degradação de tarefas em segundo plano, roteamento por níveis baseado em manifesto (W1–W4), `fallbackDelayMs`, roteamento persistente por sessão - **Resiliência** — Persistência de limites de taxa, ajuste do disjuntor, desativação automática de contas banidas, monitoramento da expiração de provedores, limite de transferência do **Context Relay** e configuração do modelo de resumo, classificação de erros 429 por provedor e opção `useUpstream429BreakerHints`, períodos de espera dos modelos - **Avançado** — Substituições de configuração, trilha de auditoria de configuração, modo de degradação de fallback, degradação do modo em segundo plano para a Responses API ![Painel de Configurações](../screenshots/06-settings.png) --- ## 🔧 Ferramentas de CLI Configuração com um clique para ferramentas de programação com IA: Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor e Factory Droid. Inclui aplicação e redefinição automatizadas de configurações, perfis de conexão e mapeamento de modelos. ![Painel de Ferramentas de CLI](../screenshots/07-cli-tools.png) --- ## 🤖 Agentes de CLI _(v2.0.11+)_ Painel para descobrir e gerenciar agentes de CLI. Exibe uma grade com 16 agentes integrados (Codex, Claude, Goose, OpenClaw, Aider, OpenCode, Cline, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp, **Windsurf**, **Devin CLI**, **Kimi Coding**, **Command Code**) com: - **Status da instalação** — Instalado / Não encontrado, com detecção da versão - **Indicadores de protocolo** — stdio, HTTP etc. - **Agentes personalizados** — Registre qualquer ferramenta de CLI por meio de um formulário (nome, binário, comando de versão, argumentos de inicialização) - **Correspondência de impressão digital da CLI** — Opção por provedor para corresponder às assinaturas de solicitações da CLI nativa, reduzindo o risco de banimento e preservando o IP do proxy - **Autenticação local do Devin** — O Devin CLI usa `devin auth login`; nenhum fluxo OAuth pelo navegador é necessário --- ## 🔗 Retransmissão de Contexto _(v3.5.5+)_ Uma estratégia combinada que preserva a continuidade da sessão quando ocorre uma rotação de contas no meio da conversa. Antes que a conta ativa tenha sua cota esgotada, o OmniRoute gera, em segundo plano, um resumo estruturado para a transferência. Depois que a solicitação seguinte é direcionada para outra conta, o resumo é injetado como uma mensagem do sistema para que a nova conta continue com todo o contexto. Configurável por meio de definições globais ou no nível da combinação: - **Limite para Transferência** — Percentual de uso da cota que aciona a geração do resumo (padrão: 85%) - **Máximo de Mensagens para o Resumo** — Quantidade do histórico recente a ser condensada - **Modelo de Resumo** — Modelo de substituição opcional para gerar o resumo da transferência Atualmente, oferece suporte à rotação de contas do Codex. Consulte a [documentação sobre Retransmissão de Contexto](../architecture/ARCHITECTURE.md). --- ## 🗜️ Compressão de Prompts _(v3.7.9+)_ Contexto e Cache agora disponibiliza páginas dedicadas para Caveman, RTK e Combinações de Compressão: - **Caveman** — Pacotes de regras sensíveis ao idioma, pré-visualização, controles do modo de saída e análises - **RTK** — Compressão sensível a comandos para saídas de shell, git, testes, compilação, pacotes, Docker, infraestrutura, JSON e rastreamento de pilha - **Combinações de Compressão** — Pipelines nomeados, como `rtk -> caveman`, atribuídos a combinações de roteamento; o cálculo combinado padrão alcança uma média de `~89%` e uma economia de contexto elegível de `78-95%` quando ambos os mecanismos são aplicados - **Recuperação da saída bruta** — Ponteiros opcionais e editados para a saída bruta do RTK, destinados à depuração de falhas de compressão Consulte o [Guia de Compressão](../compression/COMPRESSION_GUIDE.md), a [Compressão RTK](../compression/RTK_COMPRESSION.md) e os [Mecanismos de Compressão](../compression/COMPRESSION_ENGINES.md). --- ## 🛡️ Reforço de Segurança do Proxy _(v3.5.5+)_ Aplicação abrangente da configuração de proxy em todo o pipeline de solicitações: - **Verificação da Integridade do Token** — A atualização do OAuth em segundo plano agora resolve a configuração de proxy para cada conexão, evitando falhas em ambientes que exigem proxy - **Validação da Chave de API** — A validação da chave do provedor (`POST /api/providers/validate`) é encaminhada por meio de `runWithProxyContext`, respeitando as configurações de proxy globais e no nível do provedor - **Correção do Dispatcher do undici** — Os dispatchers de proxy usam a implementação de fetch do próprio undici, em vez do fetch integrado do Node, corrigindo erros `invalid onRequestStart method` no Node.js 22 - **Detecção da Versão do Node.js** — A página de login detecta proativamente versões incompatíveis do Node.js (24+) e exibe um banner de aviso com instruções para usar o Node 22 LTS --- ## 📧 Mascaramento de Privacidade de E-mails _(v3.5.6+)_ Por padrão, os e-mails das contas OAuth são mascarados (por exemplo, `di*****@g****.com`) para evitar exposição acidental ao compartilhar capturas de tela ou gravar demonstrações. Use Configurações → Aparência → Visibilidade do e-mail da conta para exibir ou mascarar globalmente os e-mails completos das contas nas telas de provedores, combinações, logs, cotas e playground. --- ## 👁️ Controle de Visibilidade de Modelos _(v3.5.6+)_ A lista de modelos da página do provedor agora inclui: - **Barra de pesquisa/filtro em tempo real** — Encontre rapidamente modelos específicos - **Controle de visibilidade por modelo** (ícone 👁) — Os modelos ocultos ficam esmaecidos e são excluídos do catálogo `/v1/models` - **Indicador de contagem de ativos** (`N/M ativos`) — Mostra rapidamente quantos modelos estão habilitados em relação ao total --- ## 🔧 Reparo de variáveis de ambiente do OAuth _(v3.6.1+)_ Ação "Reparar variáveis de ambiente" com um clique para provedores OAuth, que restaura variáveis de ambiente ausentes e corrige o estado de autenticação corrompido. Acessível em `Painel → Provedores → [Provedor OAuth] → Reparar variáveis de ambiente`. Detecta e repara automaticamente: - Credenciais de cliente OAuth ausentes - Entradas corrompidas no arquivo de variáveis de ambiente - Sanitização do caminho de backup --- ## 🗑️ Desinstalação / Desinstalação completa _(v3.6.2+)_ Scripts de remoção limpa para todos os métodos de instalação: | Comando | Ação | | ------------------------ | --------------------------------------------------------------------------------------------------------- | | `npm run uninstall` | Remove o aplicativo do sistema, mas **mantém seu banco de dados e suas configurações** em `~/.omniroute`. | | `npm run uninstall:full` | Remove o aplicativo E **apaga permanentemente todas as configurações, chaves e bancos de dados**. | --- ## 🖼️ Mídia _(v2.0.3+)_ Gere imagens, vídeos e músicas pelo painel. Compatível com OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open e MusicGen. --- ## 📝 Logs de solicitações Registro de solicitações em tempo real, com filtragem por provedor, modelo, conta e chave de API. Exibe códigos de status, uso de tokens, latência e detalhes da resposta. ![Logs de uso](../screenshots/08-usage.png) --- ## 🌐 Endpoint da API Seu endpoint de API unificado, com detalhamento dos recursos: Chat Completions, Responses API, Embeddings, geração de imagens, reclassificação, transcrição de áudio, conversão de texto em fala, moderações e chaves de API registradas. Há suporte para Cloudflare Quick Tunnel, Tailscale Funnel, ngrok Tunnel e proxy na nuvem para acesso remoto. ![Painel do endpoint](../screenshots/09-endpoint.png) --- ## 🔑 Gerenciamento de chaves de API Crie, delimite o escopo e revogue chaves de API. Cada chave pode ser restrita a modelos/provedores específicos, com acesso completo ou permissões somente de leitura. Gerenciamento visual de chaves com acompanhamento de uso. --- ## 📋 Log de auditoria Rastreamento de ações administrativas, com filtragem por tipo de ação, autor, destino, endereço IP e data/hora. Histórico completo de eventos de segurança. --- ## 🖥️ Aplicativo para desktop Aplicativo desktop Electron nativo para Windows, macOS e Linux. Execute o OmniRoute como um aplicativo independente, com integração à bandeja do sistema, suporte offline, atualização automática e instalação com um clique. Principais recursos: - Verificação da disponibilidade do servidor (sem tela em branco na inicialização a frio) - Bandeja do sistema com gerenciamento de portas - Política de Segurança de Conteúdo - Bloqueio de instância única - Atualização automática ao reiniciar - Interface condicional por plataforma (botões de janela do macOS e barra de título padrão do Windows/Linux) - Empacotamento reforçado da compilação do Electron — o `node_modules` vinculado simbolicamente no pacote independente é detectado e rejeitado antes do empacotamento, evitando dependência em tempo de execução da máquina de compilação (v2.5.5+) - **Encerramento normal** — o `before-quit` do Electron encerra o Next.js corretamente, evitando bloqueios do banco de dados SQLite WAL (v3.6.2+) 📖 Consulte [`electron/README.md`](../../electron/README.md) para obter a documentação completa. --- ## 🌐 Ponte WebSocket V1 _(v3.6.6+)_ O OmniRoute agora oferece suporte a **clientes WebSocket compatíveis com a OpenAI** por meio do endpoint de upgrade `/v1/ws`. O servidor personalizado `scripts/dev/v1-ws-bridge.mjs` encapsula o Next.js e atualiza conexões WS para sessões completas de streaming bidirecional. A autenticação usa a mesma chave de API ou o mesmo cookie de sessão das solicitações HTTP. Principais comportamentos: - Upgrade de WS validado por `src/lib/ws/handshake.ts` antes que a conexão seja estabelecida - Streams encerrados corretamente ao fechar a sessão ou em caso de erro no serviço upstream - Funciona simultaneamente com o fluxo de streaming HTTP+SSE existente --- ## 🔑 Tokens de sincronização e pacote de configuração _(v3.6.6+)_ O acesso por vários dispositivos e operadores externos agora é possível por meio de **tokens de sincronização com escopo definido**: - **`POST /api/sync/tokens`** — Emite um novo token de sincronização (com escopo definido e expiração opcional) - **`DELETE /api/sync/tokens/:id`** — Revoga um token - **`GET /api/sync/bundle`** — Baixa um snapshot JSON versionado da configuração, identificado por ETag (autenticado somente com um token de sincronização). As configurações de autenticação, como a senha do painel, são removidas, mas as credenciais dos provedores e as chaves de API são incluídas; portanto, trate o arquivo como um segredo O pacote de configuração é criado por `src/lib/sync/bundle.ts`. Os consumidores comparam o cabeçalho de resposta `ETag` para detectar alterações sem baixar novamente todo o conteúdo. Pela CLI, `omniroute sync bundle --token ` (ou `OMNIROUTE_SYNC_TOKEN`) salva o pacote em um arquivo acessível somente pelo proprietário. --- ## 🧠 Predefinição GLM Thinking _(v3.6.6+)_ O **GLM Thinking (`glmt`)** agora é um provedor de primeira classe registrado: máximo de 65 536 tokens de saída, orçamento de raciocínio de 24 576, tempo limite padrão de 900 s, formato de API compatível com Claude e sincronização de uso compartilhada com a família GLM. A **contagem híbrida de tokens** também chega na v3.6.6: quando um provedor compatível com Claude disponibiliza `/messages/count_tokens`, o OmniRoute o chama antes de requisições grandes, com fallback gradual para estimativa. --- ## 🛡️ Busca de saída segura e proteção contra SSRF _(v3.6.6+)_ Todas as chamadas de validação de provedores e descoberta de modelos agora passam por uma proteção de saída em duas camadas: 1. **Proteção de URL** (`src/shared/network/outboundUrlGuard.ts`) — Primeiro, verifica o nome do host ou o endereço IP literal do destino exatamente como foi informado; no modo somente público, o wrapper de busca segura também resolve o nome e recusa endereços privados. Por padrão, ele bloqueia endpoints de metadados de nuvem — toda a faixa 169.254.0.0/16, além dos nomes de host de metadados conhecidos; `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` também bloqueia hosts privados e de loopback; `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` (ou a variável legada `OUTBOUND_SSRF_GUARD_ENABLED=false`) desativa as verificações. Um valor salvo pelo controle de alternância de uma flag no painel tem precedência sobre sua variável, e os provedores locais integrados ignoram a proteção durante a validação da chave. Consulte `docs/reference/ENVIRONMENT.md`. 2. **Wrapper de busca segura** (`src/shared/network/safeOutboundFetch.ts`) — Aplica a proteção de URL, normaliza os tempos limite e repete erros transitórios com recuo exponencial. As violações da proteção são apresentadas como `URL_GUARD_BLOCKED` — HTTP 503 por meio de `getSafeOutboundFetchErrorStatus` (400 na rota de descoberta de modelos) — e bloqueios genuínos de SSRF durante a validação são registrados no log de auditoria como eventos `provider.validation.ssrf_blocked`. --- ## 🔄 Novas tentativas cientes do período de espera _(v3.6.6+)_ As requisições de chat agora são **repetidas automaticamente** quando um provedor upstream retorna um período de espera específico do modelo. Configurável por meio de `REQUEST_RETRY` (padrão: 2) e `MAX_RETRY_INTERVAL_SEC` (padrão: 30 s). O aprendizado de cabeçalhos de limite de taxa foi aprimorado para `x-ratelimit-reset-requests`, `x-ratelimit-reset-tokens` e `Retry-After` — o estado do período de espera de cada modelo fica visível no painel Resilience. --- ## 📋 Auditoria de conformidade v2 _(v3.6.6+)_ O log de auditoria foi expandido com paginação baseada em cursor, enriquecimento do contexto da requisição (ID da requisição, agente do usuário, IP), eventos estruturados de autenticação, eventos CRUD de provedores com contexto das diferenças e registro de validações bloqueadas por SSRF. Novos eventos emitidos por `src/lib/compliance/providerAudit.ts`.