Hermes Agent: o guia de referência para profissionais (2026)
# Um guia de referência para profissionais sobre o Hermes Agent, o agente de IA de código aberto e autoaprimorável da Nous Research: autenticação de provedores, arquivos de configuração, sistema de skills e execução como gateway de mensagens multiplataforma.
TL;DR: Hermes Agent é um agente de IA open source e autoaperfeiçoável da Nous Research. Ele funciona como uma CLI e como um gateway de mensagens multiplataforma, armazena em disco uma identidade durável e uma memória persistente, agrega skills que melhoram com o uso e funciona com qualquer provedor de LLM compatível com OpenAI — Nous Portal, OpenRouter, Anthropic, GitHub Copilot, z.ai, Kimi, MiniMax, DeepSeek, Qwen Cloud, Hugging Face, Google, xAI/SuperGrok ou seu próprio endpoint auto-hospedado.1219 A versão atual é a v0.21.7 (tag
v0.21.7, 11 de outubro de 2026), o quinto patch cumulativo da linha v0.21 e o primeiro a distribuir todos os canais pelo novo pipeline de versões estáveis do projeto; Novidades da v0.21.7 explica o que mudou, e as seções de versões seguintes estão organizadas da mais recente para a mais antiga.56 A parte mais difícil para a maioria dos novos usuários é a autenticação do provedor: o Hermes inclui 39 provedores em sua lista estática de seleção na tagv0.21.6e amplia automaticamente essa lista com 41 plugins de provedores integrados, além de endpoints personalizados e três caminhos distintos de autenticação (chave API no.env, OAuth por meio dehermes modelou endpoint personalizado noconfig.yaml).5355 O modelo de autenticação é a primeira coisa que você deve aprender — todo o restante depende do provedor que for resolvido.
O Hermes Agent funciona como um runtime completo de agente, não como um simples wrapper de chat. Ele lê seu sistema de arquivos, executa comandos em backends isolados por sandbox, extrai conteúdo da web, cria subagentes, executa tarefas cron agendadas, conversa pelo Telegram/Discord/Slack/WhatsApp/Signal/Email usando um único processo de gateway e cria suas próprias skills com base na experiência.1 A CLI é uma interface de terminal construída sobre um loop de conversação em run_agent.py; o gateway é um processo de longa duração que encaminha mensagens das plataformas de mensagens pelo mesmo loop de conversação.3
A diferença entre o uso casual e avançado do Hermes se resume a cinco sistemas. Domine-os e o Hermes se tornará um multiplicador de produtividade:
- Resolução de provedores: como os fluxos de autenticação são mapeados para chamadas de API
- Hierarquia de configuração:
config.yaml+.env+auth.json+SOUL.md+AGENTS.md - Sistema de ferramentas + toolsets: o que o agente pode fazer, com acesso controlado por plataforma
- Sistema de skills: memória procedural que o agente cria e desenvolve
- Gateway + cron + profiles: executar o Hermes onde você está presente, não apenas onde está fisicamente
Principais conclusões
- A autenticação do provedor tem três caminhos, não apenas um. Chave API no
.env, OAuth por meio dehermes model/hermes authou endpoint personalizado noconfig.yaml. Escolha o caminho adequado ao seu provedor, não o que parecer mais familiar. - Você pode trocar de provedor com um único comando.
hermes modelorienta você interativamente por todos os provedores compatíveis, incluindo logins com OAuth, enquanto/model provider:modelpermite trocar durante a sessão sem perder o histórico.2 - Dois arquivos formam a superfície de configuração editável pelo usuário.
~/.hermes/config.yamlarmazena as configurações e~/.hermes/.envarmazena os segredos.auth.json,SOUL.md,MEMORY.mdeskills/são gerenciados diretamente pelo Hermes — você pode editarSOUL.mdmanualmente, mas o restante é modificado pelo próprio agente.4 - O Hermes é o sucessor do OpenClaw. Se você estiver migrando,
hermes claw migrateimportará automaticamente mais de 30 categorias de estado.5 - Por padrão, as tarefas auxiliares usam seu modelo principal. Visão, classificação de aprovações, compressão e títulos de sessões são executados como chamadas “auxiliares” separadas de LLM e, nessa tag,
autoencaminha todas elas para seu modelo principal de chat — não há nada para configurar, mas essas tarefas secundárias podem gerar custos consideráveis em modelos de raciocínio caros. Quando isso for relevante, direcione cada slot deauxiliary.<task>para modelos rápidos e econômicos.434
Todas as seções abaixo se baseiam na documentação upstream em hermes-agent.nousresearch.com/docs e na árvore de código-fonte em github.com/NousResearch/hermes-agent. Toda afirmação factual tem uma nota de rodapé que aponta para a página upstream específica de onde foi extraída.
Escolha seu caminho
| O que você precisa | Acesse aqui |
|---|---|
| Instalar o Hermes | Instalação — instalador de uma linha ou etapas manuais |
| Entrar em um provedor | Autenticação e provedores — a seção que você veio procurar |
| Trocar de modelo durante a sessão | O comando hermes auth e Endpoints personalizados e auto-hospedados para consultar a sintaxe de /model |
| Executar uma LLM local | Endpoints personalizados e auto-hospedados — Ollama, vLLM, SGLang, llama.cpp, LM Studio |
| Conectar plataformas de mensagens | Gateway de mensagens — Telegram, Discord, Slack, WhatsApp, Signal, Google Chat, LINE, SimpleX Chat, ntfy, Buzz (28 na tabela comparativa da documentação) |
| Criar ou instalar uma skill | Sistema de skills — divulgação progressiva + hub de skills |
| Referência detalhada de todos os comandos da CLI | Continue lendo — e acesse diretamente Comandos da CLI |
Como o Hermes funciona: o modelo mental
O Hermes é estruturado em torno de um único loop de conversa que pode ser invocado por qualquer ponto de entrada. Os pontos de entrada são a CLI (cli.py), o gateway de mensagens (gateway/run.py), o adaptador ACP para integração com editores, o executor em lote e um servidor API.3 No fim, todos eles chamam AIAgent.run_conversation() em run_agent.py, que:
- Monta o prompt do sistema com base em
SOUL.md,MEMORY.md,USER.md, skills, arquivos de contexto e orientações sobre ferramentas por meio deagent/prompt_builder.py(a reorganização de setembro de 2026 o transferiu para o novo pacoteagent/)3 - Resolve o provedor de runtime por meio de
runtime_provider.py— é nesta etapa que são escolhidos sua autenticação, URL base e modo API3 - Chama o provedor usando um dos três modos API:
chat_completions,codex_responsesouanthropic_messages3 - Encaminha todas as chamadas de ferramentas retornadas por meio de
model_tools.pye do registro central de ferramentas (tools/registry.py)3 - Repete o processo até que o modelo produza uma resposta final e, então, salva a sessão no SQLite com FTS53
Entender esse loop é importante porque todos os recursos — personalidades, memória, skills, compressão e fallback — se conectam a uma dessas etapas. Quando você estiver lendo uma chave de configuração e se perguntando o que ela faz, a resposta geralmente será: “é um controle da etapa 1, 2, 3 ou 4 do loop acima”.
Núcleo independente de plataforma. Uma única classe AIAgent atende à CLI, ao gateway, ao ACP, ao processamento em lote e ao servidor API. As diferenças entre plataformas ficam no ponto de entrada, não no próprio agente.3 É por isso que os mesmos comandos slash funcionam no terminal e no Telegram — eles são encaminhados a partir de um COMMAND_REGISTRY compartilhado em hermes_cli/commands.py.6
A estrutura de diretórios é o sistema. O Hermes armazena tudo em ~/.hermes/ (ou em $HERMES_HOME para profiles que não sejam o padrão):4
~/.hermes/
├── config.yaml # Settings (model, terminal, TTS, compression, etc.)
├── .env # API keys and secrets
├── auth.json # OAuth provider credentials (Nous Portal, Codex, Anthropic)
├── SOUL.md # Primary agent identity (slot #1 in system prompt)
├── memories/ # Persistent memory (MEMORY.md, USER.md)
├── skills/ # Bundled + agent-created + hub-installed skills
├── cron/ # Scheduled jobs
├── sessions/ # Gateway session state
└── logs/ # agent.log, gateway.log, errors.log (secrets auto-redacted)
Cada arquivo acima tem uma função específica; não há sobreposição entre eles. Se você estiver procurando “onde o Hermes armazena X”, estará em um desses locais.
Novidades na v0.21.7 (o pacote de atualizações de 11 de outubro)
O Hermes Agent v0.21.7 (tag v0.21.7, datada de 11 de outubro de 2026 e publicada em 12 de outubro) é a versão atual, o quinto pacote incremental da linha v0.21.x. Ao contrário da v0.21.6, que disponibilizou apenas a tag e a imagem Docker, esta versão abrange todos os canais: o aplicativo para desktop (macOS com Apple silicon e Windows), as builds da Microsoft Store e MSIX, o instalador, Docker e Hermes Cloud. O período desde a v0.21.6 contém “740 commits sem merge” em “4.156 arquivos alterados”, “204 PRs mesclados” e “69 issues encerradas” (a comparação do GitHub contabiliza 777 commits com os merges). Mais uma vez, as notas selecionadas foram adiadas para a v0.22.0. Veja o que a versão documenta, conferido no código-fonte na tag:5657
- As instalações pelo código-fonte agora acompanham as versões publicadas com tags.
hermes updateem um checkout do repositório oficial avança para a versãovX.Y.Zpublicada mais recente, exatamente no commit correspondente, em vez de acompanhar todos os commits damain. Uma instalação que já esteja à frente da versão mais recente permanece onde está até a próxima versão, e o resolvedor nunca retrocede um checkout com base em uma suposição: se a relação for desconhecida (histórico raso, GitHub inacessível), o HEAD será mantido. Para continuar acompanhando todos os commits, executehermes update --set-channel main;--channel <name>substitui o canal em uma única execução (stableecanaryselecionam versões publicadas, enquantomainseleciona a ponta da branch). A escolha é registrada individualmente para cada instalação emupdate.installs, noconfig.yaml, usando como chave um id derivado do caminho da instalação (hermes update --install-ido exibe), pois um único~/.hermespode atender simultaneamente a uma instalação no host, um gateway Docker e o aplicativo para desktop. Forks, espelhos e origens em caminhos locais continuam acompanhando amain; as instalações da Store, MSIX e do aplicativo para desktop empacotado não mudam. - O aplicativo para desktop oferece o mesmo seletor. Em Configurações ▸ Sobre ▸ Atualizações, há uma nova linha Canal de atualização para instalações pelo código-fonte (“Versões estáveis” ou “Todos os commits”), e a caixa de diálogo de atualização informa o canal atual.
- O raciocínio é preservado ao retomar uma sessão. Blocos de pensamento assinados são reproduzidos após
hermes chat --resumee no turno seguinte do gateway quando o serviço upstream os valida, e os modelos de raciocínio do Bedrock Converse não rejeitam mais sessões retomadas. Uma assinatura rejeitada pelo serviço upstream recebe uma impressão digital e é removida das requisições reconstruídas, em vez de interromper a sessão. - As atualizações não falham mais atrás de determinados firewalls. Instalações na
mainnão buscam mais um registro de versão ao qual firewalls regionais respondem com o código 403. A verificação do canal stable usa seu token do GitHub quando houver um configurado (GITHUB_TOKENough auth login), tenta novamente sem autenticação quando um token é rejeitado e informa um limite de requisições do GitHub como tal, em vez de indicar “nenhuma versão”. - O Holographic deixa a árvore principal. Os únicos provedores de memória incluídos agora são ByteRover e RetainDB; o Holographic é instalado pelo catálogo de plugins (categoria da comunidade,
requires_hermes: ">=0.21.5"), e a migração automática o abrange da mesma forma que os outros seis. Consulte Provedores externos de memória. - O catálogo de plugins cresceu de 493 para 552 entradas, incluindo, segundo a versão, memory-shield, command-ledger, Memoria, Model Router, wyoming-voice-bridge, codex-account-switch e redline. Os plugins de provedores permanecem em 41 diretórios, e o seletor estático, em 39 linhas.
- Também segundo as notas da versão: os plugins podem executar ações integradas do Desktop (
ctx.runAction, por exemplo,view.showBrowser) e falar pelo balão do pet (ctx.pet.say); as requisições do Codex são feitas pelo núcleo, portanto os plugins nunca têm acesso ao token; uma skill instalada durante uma sessão fica disponível para o modelo sem reconstruir o prompt; Krea 2 Medium Turbo é a opção de imagem padrão para novos assinantes pagos, com fallback para FAL quando o Krea gerenciado recusa uma requisição; as atualizações do aplicativo para desktop estão mais rápidas; instalações fixadas fazem checkout apenas da referência fixada; e os marcadores de compactação são emitidos para o Relay (agent/relay_compaction.pyemite registroshermes.compactioncomo marcadores do NeMo Relay).
Para atualizar: o aplicativo para desktop se atualiza sozinho, e as instalações da Store são atualizadas pela Store; use hermes update ou o comando de uma linha do instalador para a CLI; Docker e Hermes Cloud obtêm nousresearch/hermes-agent:stable (ou :latest).56
O que há de novo na v0.21.6 (compilado de 8 de outubro)
O Hermes Agent v0.21.6 (tag v0.21.6, 8 de outubro de 2026) foi a versão atual de 8 a 11 de outubro, o quarto compilado enxuto da linha v0.21.x e o primeiro criado pelo novo pipeline de versões estáveis do projeto: “uma referência de tentativa, uma imagem Docker testada e uma tag de recibo na publicação”. Ele disponibiliza apenas a tag, a versão GitHub e a imagem Docker; o aplicativo para desktop, os pacotes Termux e a compilação da Microsoft Store permanecem nas versões atuais até a próxima versão agrupada. O intervalo desde a v0.21.5 é o maior até agora: “8.867 commits sem merge” em “8.342 arquivos alterados”, “2.106 PRs mesclados” e “3.027 issues encerradas” (a comparação no GitHub contabiliza 9.180 commits incluindo merges). As notas selecionadas foram novamente adiadas para a v0.22.0. A versão lista o que deixa sem documentação; cada item abaixo foi verificado no código-fonte na tag:5455
- Transcrição ao vivo enquanto você fala.
stt.streaming: truetransmite texto parcial durante a fala no CLI, na TUI e no Desktop. O recurso vem desativado por padrão, funciona com os provedores de STTopenai,xaieelevenlabs(stt.streaming_modelespecifica o único modelo com deltas durante a fala,gpt-live-transcribepara OpenAI) e recorre ao processamento por arquivo quando o streaming falha. - As interações por voz ganham seu próprio slot de modelo.
auxiliary.voice_chatencaminha uma interação falada (entrada de voz do CLI, uma conversa por voz no Desktop ou na TUI, uma mensagem de voz em uma plataforma de mensagens) para um modelo mais rápido que o principal da sessão, comreasoning_effort: nonepor padrão. A rota é vinculada depois que o prompt do sistema é criado e desfeita antes da sincronização de memória e da revisão em segundo plano. Se uma interação não couber no limite de compressão do modelo de voz, ela permanecerá no modelo principal. Consulte Modelos auxiliares. - Plugins de terceiros podem ser executados fora do processo.
plugins.isolation: host(o padrão éin_process) carrega plugins gerais em um processo host de plugins por profile e recusa qualquer outro caminho que importe código do usuário dentro do processo (provedores de categorias, profiles de provedores de modelos e APIs de plugins do dashboard); os plugins incluídos continuam sendo executados dentro do processo. Um plugin que trava ou apresenta falha derruba seu host, não o gateway. Consulte Sistema de plugins. - Mais quatro provedores de memória saem da árvore principal. Honcho, Mem0, OpenViking e Supermemory agora são instalados pelo catálogo de plugins (nível da comunidade, mantidos por seus fornecedores), juntando-se ao Hindsight; o conjunto incluído é formado por ByteRover, Holographic e RetainDB. A migração automática introduzida na v0.21.5 abrange todos os oito nomes. Consulte Provedores externos de memória.
- A camada de compatibilidade de plugins foi removida.
hermes_cli/plugin_compat.pyagora é um stub inerte,COMPAT_MANIFEST.mde os shims foram excluídos, eplugins.allow_deprecated_importsdeixou de existir; um plugin que ainda importa um caminho anterior à decomposição não consegue ser importado. Consulte Sistema de plugins. hermes statusprioriza o resumo. A saída padrão exibe uma linha por componente;--full(alias--all) mostra todas as seções, e--deepexecuta as verificações lentas. As notas da versão também mencionam uma flag--short; o parser dessa tag não tem essa opção, pois o resumo já é o padrão.- Pacotes de idiomas conectáveis e em camadas.
display.languageaceita qualquer id fornecido pelos catálogos incluídos (17 na tag), pelo diretório de sobreposição do profile ou por um pacote de idioma de plugin, ehermes config set display.language <id>detecta os plugins primeiro para aceitar um pacote recém-instalado. As strings do núcleo e da TUI são fornecidas em camadas separadas (locales/<lang>.yamlelocales/<lang>.tui.yaml, com 16 pacotes de TUI na tag). Consulte Localização. - Três novos plugins de provedores:
lmstudio,solsticeetencent-tokenhubelevamplugins/model-providers/de 38 para 41 diretórios; a lista estática do seletor permanece com 39 linhas. Os seletores do Nous e do OpenRouter adicionam GPT-6.1 Sol (com uma variante-pro), Claude Sonnet 5.5 e Claude Haiku 5.5, enquanto as listas deopenai-apie Bedrock adicionam GPT-6.1 Sol. Modelos locais:hermes modellista diretamente os modelos do Ollama, LM Studio e Ollama Cloud, e o runtime local incluído adiciona compilações CUDA do llama.cpp (llamacpp-cuda) para Linux x64 e arm64, segundo a versão. - As regras de aprovação ganham dois detectores. Um upload com curl ou wget (
-d,-F,-T) que inclua uma variável com nome relacionado a segredo ou um arquivo de credenciais, ou um arquivo de credenciais redirecionado por pipe para um desses comandos, é sinalizado como possível exfiltração; um caractere de controle Unicode invisível ou bidirecional em um comando é sinalizado como possível ofuscação, pois o que você aprova pode ser diferente do que será executado. - O cron continua funcionando quando o armazenamento não permite gravação. Um disco cheio ou um ponto de montagem somente leitura (ENOSPC, EROFS, EACCES) coloca o armazenamento do cron em modo degradado uma única vez, em vez de emitir um aviso a cada ciclo de 60 segundos, e tenta verificá-lo novamente no máximo uma vez por minuto.
hermes cron statusehermes doctorinformam essa condição (a versão também adiciona um aviso no canal principal). - A configuração do Discord verifica o token do bot e exibe o link de convite com os bits de permissão exigidos pelo adaptador, além de avisar quando o Message Content Intent continua desativado, pois o Discord recusa a conexão do bot sem ele. Consulte Gateway de mensagens.
- Também:
activate.fish, equivalente para fish ao script de ambiente de desenvolvimento./activate; uma definição unificada do fluxo de trabalho Kanban, segundo as notas da versão; e, listados pela versão, mas não incluídos na compilação para desktop desta versão, modelos favoritos e fixados no topo do seletor do Desktop, um indicador de uso antes que uma assinatura atinja seu limite, avisos sobre limites de taxa dos provedores que informam o motivo e até quando se aplicam, um seletor de escopo de diff no painel de revisão e a manutenção do dispositivo ativo durante a interação.
Correções de segurança, todas com os devidos créditos na versão: quatro problemas de autenticação do dashboard relatados pela Tenable Research (um cabeçalho X-Forwarded-For falsificado podia redefinir o limite de tentativas do login por senha e contornar o limite por IP; solicitações de login não autenticadas podiam gravar valores ilimitados no log de auditoria de autenticação; as rotas públicas /auth/ não tinham limite de tamanho do corpo; e o login nativo podia enviar códigos de acesso para um redirecionamento que não fosse de loopback, permitindo o sequestro da sessão); chamadas automáticas ao git (snapshots do workspace da sessão, worktrees de subagentes, kanban, limpeza de worktrees, hermes -w) podiam executar programas de filtro clean, smudge ou process definidos pela configuração de um repositório não confiável antes do primeiro prompt, e agora recusam a operação quando não é possível neutralizar os filtros; e um nome de exibição entre aspas no cabeçalho de e-mail From podia passar pela lista de permissões de e-mail como remetente autorizado, agora analisado com parseaddr após o desdobramento do cabeçalho (GHSA-rxqh-5572-8m77). Considere esta tag uma atualização relevante para a segurança de qualquer implantação de dashboard, gateway ou e-mail.5455
Atualização: hermes update ou o comando de instalação de uma linha; Docker e Hermes Cloud usam nousresearch/hermes-agent:stable (ou :latest).54
O que há de novo na v0.21.5 (compilado de 24 de setembro)
O Hermes Agent v0.21.5 (tag v2026.9.24, 24 de setembro de 2026) foi a versão atual de 24 de setembro a 8 de outubro, o terceiro compilado enxuto da linha v0.21.x: “Esta tag reúne os cerca de 460 PRs mesclados desde a v0.21.4 em uma versão estável com tag para consumidores downstream”. As notas selecionadas foram novamente adiadas para a v0.22.0. As mudanças voltadas aos operadores, verificadas no código-fonte na tag:5253
- A memória Hindsight sai da árvore principal. O provedor Hindsight incluído e o extra pip
hermes-agent[hindsight]foram removidos; agora o Hindsight é instalado pelo catálogo de plugins e mantido pela Vectorize; as notas da versão omitem essa mudança. Se a sua configuração definirmemory.provider: hindsight,hermes updateinstalará o plugin do catálogo na pasta inicial de cada profile que o mencionar, e a primeira inicialização do agente fará a instalação caso ele ainda esteja ausente, exceto sesecurity.allow_lazy_installsforfalse(nesse caso, executehermes plugins install hindsight). As configurações, as chaves de.enve os dados da memória permanecem intactos. Consulte Provedores externos de memória. gateway.multiplex_profiles: falsefoi descontinuado. O gateway altera essa opção paratrueno próprio arquivo e exibe um aviso em destaque uma única vez. Um profile nomeado que precise manter seu próprio gateway deve definirgateway.standalone: trueem seuconfig.yaml; para tirar do ar um profile atendido sem interromper o host,hermes -p <name> gateway stopagora o coloca em espera. Consulte Gateway de mensagens.- Novos modelos nos seletores do Nous e do OpenRouter: GPT-6 Sol e GPT-6 Luna (cada um com uma variante
-pro) e Claude Opus 5.5. - A compatibilidade de plugins permaneceu inalterada nesta tag:
plugins.allow_deprecated_imports: trueainda funcionava. A v0.21.6 remove a camada e a chave (consulte O que há de novo na v0.21.6).
Atualização: hermes update ou o comando de instalação de uma linha; as imagens Docker e Hermes Cloud são compiladas a partir de nousresearch/hermes-agent:v2026.9.24.52
O que há de novo na v0.21.4 (o segundo patch cumulativo)
O Hermes Agent v0.21.4 (tag v2026.9.21, 21 de setembro de 2026) é a segunda versão cumulativa deliberadamente enxuta da linha v0.21.x. Nas palavras da própria versão: “Versão de patch. Esta tag reúne os cerca de 1.800 PRs mesclados desde a v0.21.3 em uma versão estável com tag para consumidores downstream (imagens Docker, Hermes Cloud, implantações hospedadas).” O período desde a v0.21.3 inclui “5.071 commits sem merge” em “5.169 arquivos alterados”, “1.812 PRs mesclados” e “2.116 issues fechadas”. Pela contagem de commits, esse é o segundo maior intervalo entre tags da história do projeto, atrás apenas dos 5.139 da v0.21.1; pelo número de PRs mesclados, é o maior. O relato selecionado foi adiado novamente, nestes termos: “As notas de versão completas e selecionadas para este período serão publicadas com a v0.22.0, que documentará tudo a partir da v0.21.0” e “Nada deste período será omitido.” A nota apresenta o que deixa sem documentação, e cada item abaixo foi verificado no código-fonte da tag; quando um item altera uma seção permanente deste guia, o link aparece na própria linha.5051
- Um gateway por host, e o Desktop se conecta em vez de iniciar outro processo. A regra é um
hermes servee umhermes gateway runpor host e por usuário do sistema operacional, cada um multiplexando todos os profiles — algo imposto por uma nova camada singleton para todo o host: um bloqueio do host mantido durante toda a vida útil do processo vencedor e um registro de rendezvous contendo(pid, createTime), para que uma segunda invocação possa confirmar que o proprietário é o mesmo processo ativo e se conectar em vez de vincular uma segunda porta. A obsolescência é comprovada, nunca presumida, e o aplicativo Desktop aplica a mesma ideia do seu lado, conectando-se ao backend do host em execução em vez de iniciar outro. Gateway de mensagens apresenta os detalhes do funcionamento.51 - Os conectores se tornam uma única operação controlada pelo backend, com um único cartão de configuração. Uma chamada da ferramenta
manage_connectionscontrola uma máquina de estados de conexão baseada exclusivamente em dados no backend, e o Desktop, a TUI e o CLI a renderizam como o mesmo cartão de configuração: um campo para cada credencial ausente, com a ação do cartão bloqueada até que todos os campos obrigatórios contenham texto. Consulte a subseção sobre o plano gratuito da Nous.51 --format stream-json: execuções únicas legíveis por máquina.hermes chat -q ... --format stream-jsonemite um objeto JSON por linha da saída padrão para executores de CI e orquestradores: um eventosystem/init, seguido por deltastext/ eventostool_use/tool_resulte, por fim, um envelope terminalresultcontendo o código de saída, o texto final e as estatísticas de tokens. Os diagnósticos e o ID da sessão permanecem no stderr, a saída da ferramenta é limitada a 5.000 caracteres por evento, a flag implica--quiet, exige-qou--query-file(código de saída 2 sem uma dessas opções) e não pode ser combinada com--tui. A tabela de opções dehermes chatinclui a flag.51skills.auto_loadfixa skills em todas as sessões. Os nomes listados emskills.auto_loadnoconfig.yamlsão carregados integralmente em cada nova sessão — seja no CLI, na TUI, no gateway, no cron ou no API — e resolvidos uma única vez quando o prompt é criado pela primeira vez. O sistema de skills ganha uma subseção sobre skills fixadas.51- Uma opção
declinepara mensagens diretas não autorizadas.unauthorized_dm_behaviorganha um terceiro valor além depaireignore:declineenvia uma recusa educada e depois permanece em silêncio para esse remetente por 24 horas. Consulte Autorização e pareamento de usuários.51 mcp.discovery_concurrencylimita as conexões de descoberta do MCP. O padrão é 4;0= ilimitado. Todos os servidores configurados ainda se conectam, mas deixam de chegar ao mesmo tempo. Consulte Integração com MCP.51session_searchganha limites temporais e uma nova tentativa de recuperação. O formato de descoberta aceita limitesafter/before(ISO ou durações relativas como7d), e uma consulta com várias palavras sem resultados é repetida buscando QUALQUER termo, em vez do AND implícito do FTS5 entre todos os termos. Consulte Pesquisa de sessões.51hermes sessions set-journal-mode delete|wal: o conversor de journal offline. Este é o caminho de autoatendimento para umstate.dbpreso no modo de journal incorreto do SQLite — algo que antes exigia executar manualmentePRAGMA journal_mode=DELETE. Primeiro, interrompa o gateway, o dashboard e todos os CLI: o comando se recusa a prosseguir enquanto qualquer processo externo mantiver o banco de dados aberto, faz a troca sem aguardar que esses processos o liberem e depois verifica os bytes do cabeçalho do SQLite. O Windows não conta com verificação de processos que mantêm o arquivo aberto; por isso, nesse sistema, o comando se recusa a prosseguir até que você use--force, depois de interromper por conta própria todos os processos do Hermes. Agora, ohermes doctorindica esse comando. A linha dehermes sessionsem Comandos de nível superior inclui essa opção.51- Desktop: uma configuração de fonte, atualizações do engine com um clique e desinstalação de plugins. As configurações ganham um campo de família de fontes, persistido por profile em
desktop.font_family— ele substitui a fonte sem serifa do tema em toda a interface e no chat, a lista de sugestões começa com fontes voltadas à acessibilidade (OpenDyslexic, Atkinson Hyperlegible, Lexend) e um campo vazio deixa a escolha por conta do tema. O runtime gerenciado do modelo local exibe um botão “Atualizar engine” quando há uma atualização disponível, e uma atualização malsucedida permanece visível para que você possa tentar novamente diretamente. Além disso, o hub de Plugins permite desinstalar um plugin após uma caixa de diálogo de confirmação.51 - Catálogos de vídeo: LTX 2.5 e Kling O3. O plugin de vídeo da FAL adiciona
ltx-2.5(o modelo de áudio e vídeo open source da Lightricks: áudio nativo, conversão de imagem em vídeo de até 20 s / 4K, predefinições de movimento de câmera e categoria econômica — a fal rejeita clipes acima de 10 s em 1440p/2160p) ekling-o3(a família de ponta da Kuaishou, na categoria premium: narrativa nativa com várias tomadas, áudio opcional e duração de 3 a 15 s).51 - O catálogo de plugins se torna um diretório distribuído e um site. O diretório
plugin-catalog/do repositório passou de 9 entradas nav2026.9.14para 228 nesta tag — um YAML revisado por plugin, fixado em um SHA de commit exato — e o site da documentação agora gera uma página para cada plugin e autor, cada uma renderizando o README do plugin a partir do commit fixado. Os dez plugins da comunidade mencionados pela versão fazem parte do catálogo nessa tag. Sistema de plugins apresenta os detalhes.51 - E uma grande rodada de correções em isolamento de profiles/multiplexação, cron, kanban, Desktop e
state.db, mencionada pela versão apenas como uma categoria; caberá à v0.22.0 produzir o registro selecionado dessas correções.50
A reversão da compatibilidade de plugins ainda não entrou neste período. COMPAT_MANIFEST.md, compat_manifest.json e os shims de compatibilidade estão todos presentes na v2026.9.21; as únicas alterações em hermes_cli/plugin_compat.py nesse período são um cache de varredura válido para todo o processo (um gateway multiplexado descobre os plugins uma vez por profile atendido, e reanalisar o código-fonte de cada plugin custava cerca de 0,4 s por profile durante a inicialização) e caminhos de resultados no formato POSIX no Windows (#112576) — o bloqueio por data e a saída de emergência por booleano literal permanecem inalterados, portanto plugins.allow_deprecated_imports: true ainda permite o carregamento dos plugins afetados. O quadro de compatibilidade em Sistema de plugins apresenta o estado atual.42
O processo de atualização permanece o mesmo: hermes update (instalações via git) ou o instalador shell para novas instalações; as imagens Docker e do Hermes Cloud são geradas a partir desta tag (nousresearch/hermes-agent:v2026.9.21).50
O que há de novo na v0.21.3 (o patch de 14 de setembro)
O Hermes Agent v0.21.3 (tag v2026.9.14, 14 de setembro de 2026) representa mais três dias da main reunidos em uma nota com dois itens, publicada porque os agentes do Cloud são atualizados automaticamente para a tag de versão mais recente e as correções de login no gateway remoto precisavam chegar até eles. (1) As sessões remotas do dashboard não são mais revogadas por rajadas de atualização: agora, os dois caminhos de atualização no gateway (a validação de cookies e a rota bearer nativa do Desktop) consolidam solicitações simultâneas com o mesmo refresh token rotativo em uma única operação, impedindo que uma rajada causada pela retomada do Desktop reutilize no Portal um token já rotacionado, acione a detecção de reutilização e revogue toda a sessão — além disso, a atualização é executada fora do event loop, portanto um provedor de identidade lento não bloqueia mais /api/status. (2) Processos de longa duração deixam de criar identificadores de escrita duplicados para o state.db: leitores no gateway, no backend do dashboard/Desktop, no ACP e no CLI se conectam em modo somente leitura, enquanto os escritores no mesmo processo compartilham o identificador do registro. Estatísticas do período: “1.036 commits sem merge” em “2.642 arquivos alterados” e “338 PRs mesclados”. Todo o restante foi adiado de propósito: a versão especifica o que não está documentando (seletores de esforço de raciocínio em todos os seletores de modelos, PKCE do OAuth do OpenRouter, decodificação de HEIF/HEIC/AVIF, uma leva de itens no catálogo da FAL, tabelas coladas no Slack e o API das sessões de agentes, a recusa do WAL do state.db em sistemas de arquivos entre VMs e outros itens) e se compromete com o registro selecionado, nestes termos: “As notas de versão completas e selecionadas para este período serão publicadas com a v0.22.0, que documentará tudo a partir da v0.21.0” e “Nada deste período será omitido.”49
E o prazo da compatibilidade de plugins chegou conforme previsto. A remoção em 14 de setembro de 2026 anunciada pela v0.21.1 entrou em vigor como um bloqueio por data no código distribuído, não como uma reversão do código: na tag v2026.9.14, hermes_cli/plugin_compat.py contém COMPAT_REMOVAL_DATE = 2026-09-14, e removal_in_effect() retorna true a partir dessa data (ou assim que o arquivo de manifesto desaparece), portanto um plugin externo afetado passa a ser desativado no carregamento com o aviso em vermelho. O que ainda NÃO aconteceu: a reversão que realmente exclui os caminhos de importação antigos. COMPAT_MANIFEST.md, compat_manifest.json e os shims de compatibilidade continuam presentes na tag — e também na v2026.9.21 e na main em 22 de setembro —, motivo pelo qual plugins.allow_deprecated_imports: true ainda funciona como uma saída de emergência: os caminhos antigos continuam sendo resolvidos quando o carregador recebe permissão para prosseguir. Há duas armadilhas: a chave precisa ser um booleano YAML literal (o código aceita apenas o booleano True; uma string entre aspas como "true" ou "false" é tratada como não definida, conforme o comentário no código “Literal boolean only”), e essa saída de emergência deixa de funcionar assim que a reversão entrar, pois os próprios caminhos desaparecerão. O quadro de compatibilidade em Sistema de plugins apresenta o estado atual.4249
Novidades na v0.21.2 (a versão de correção do state.db)
O Hermes Agent v0.21.2 (tag v2026.9.11, 11 de setembro de 2026) existe, antes de tudo, para corrigir o que a v0.21.0 quebrou. As notas da versão são diretas: “A v0.21.0 trouxe uma grande reformulação do gerenciamento de conexões do armazenamento de sessões e, em algumas instalações, deixou o state.db vulnerável: processos de gravação secundários cancelavam os bloqueios uns dos outros, bancos de dados íntegros eram relatados como corrompidos e uma única linha inválida derrubava o sessions list. Esta versão resolve essa classe de problemas e reúne tudo o que chegou à main nos quatro dias desde a v0.21.1.” Ao contrário das notas deliberadamente breves da v0.21.1, estas documentam seus próprios destaques; as estatísticas do período são “947 commits sem merge” em “1.869 arquivos alterados” e “312 PRs integrados” de “140 colaboradores”, enquanto o registro selecionado de todo o ciclo v0.21.x continuará sendo responsabilidade da v0.22.0.48
- A campanha de confiabilidade do state.db: seis PRs, 44 issues encerradas. A recomendação das notas para operadores vem primeiro — e você também deve segui-la: se o seu
state.dbquebrou na 0.21.0 ou 0.21.1, executehermes doctor. Agora, ele distingue danos estruturais de danos no índice de busca de texto completo, em vez de chamar tudo de “corrupção de gravação no FTS”, e indicahermes sessions recover --inspect-only(offline, não destrutivo e vinculado ao profile; relata se as tabelas canônicas podem ser lidas sem criar um banco de dados de saída) quando uma reconstrução não é suficiente. O trabalho na causa raiz elimina todos os processos de gravação secundários no armazenamento: os gateways dos profiles gravavam o estado das salas hospedadas nostate.dbraiz a cada 5 segundos, e essa coordenação agora fica em umshared-state.dbdedicado, portanto os gateways dos profiles nunca abrem o armazenamento principal de sessões com permissão de gravação; o dashboard tenta primeiro abrir em modo somente leitura; a proteção do ciclo de vida do cron passa pelo registro de conexões rastreadas, em vez de usar umopen()direto em um banco de dados ativo (o que cancela os bloqueios POSIX do gateway — a receita clássica para corromper seu SQLite); edoctor --fixrecusa um checkpoint cuja segurança não consiga comprovar. Além dos processos de gravação: danos no índice FTS agora apenas limitam a busca, e o índice é reconstruído posteriormente, em vez de encerrar todo o turno com falha; uma linha corrompida não derruba maissessions list, a exportação nem os insights (linhas inválidas aparecem como?, acompanhadas de um aviso que identifica a sessão); as sessões nunca se vinculam ao banco de dados de outro profile nem o leem; e uma abertura somente leitura não adquire mais o bloqueio de gravação, então uma execução avulsa dohermespor trás de um gateway ocupado passou de uma espera de 4 a 20 segundos seguida de falha para 0,01 segundo.48 - Reforço do isolamento entre vários profiles. Desde a v0.19.0, este guia repete a afirmação do projeto de que o roteamento de profiles oferece a cada profile “configurações, skills, memória e segredos totalmente isolados”. Na v0.21.2, essa promessa ainda tinha brechas, agora corrigidas: bots de profiles secundários herdavam as listas de permissões do profile padrão, adaptadores podiam enviar credenciais ao host do profile padrão, servidores stdio MCP recebiam os segredos do cofre do profile padrão, a entrega via
MEDIA:podia anexar o.env,auth.jsonoustate.dbde outro profile, callbacks de webhook e do Feishu podiam se desviar do profile definido pelo roteamento, e profiles secundários podiam receber o bearer da Nous pertencente a outro profile por meio de memos por processo (#107609-#107630). Se você executa vários profiles em um único gateway multiplexado, esta é a versão em que a promessa de isolamento realmente se concretiza.48 - O cofre de credenciais que não expõe senhas. Agora, o agente pode fazer login, pagar e preencher endereços no navegador usando o 1Password, o Bitwarden ou o cofre local do Hermes sem jamais ver um segredo, enquanto os códigos de autenticação de dois fatores vêm de uma chave de autenticador salva (TOTP: uma semente base32 ou um URI
otpauth://totp; o HOTP baseado em contador é rejeitado) ou são solicitados na sua interface. Todos os backends fornecem ao agente a mesma estrutura — metadados de login e um identificador opaco com namespace (vault_no cofre local,op:,bw:), com a senha resolvida apenas no momento do preenchimento; gerenciadores externos permanecem bloqueados até você desbloqueá-los durante a sessão, e a senha mestra “nunca é um argumento de ferramenta, nunca aparece em argv e nunca é persistida”. Isso dá continuidade ao trabalho comSecretSourceda v0.19.0, que removeu as chaves API dos providers do.envem texto simples; agora, o cofre faz o mesmo com as credenciais de navegação do agente.48 - Um catálogo selecionado de plugins fixados por SHA.
hermes plugins browselista “todas as entradas do catálogo selecionado de plugins”,hermes plugins searchconsulta o catálogo ehermes plugins installresolve nomes do catálogo, além de URLs do Git eowner/repo.hermes plugins packcompleta o conjunto com “coleções declarativas e compartilháveis de plugins”: um únicohermes-pack.yamlfixa um conjunto de plugins em SHAs exatos de commits,pack installdistribui o trabalho para instalações fixadas comuns, mantendo o consentimento de recursos separado por plugin,pack exportgera um pack da instalação atual epack showfunciona como uma simulação. O bloco de comandos em Sistema de plugins inclui os novos subcomandos.48 - Plano gratuito da Nous e primeira inicialização guiada. Instalações novas já oferecem inferência e conectores gratuitos, com um único comando para fazer login;
/loginfunciona dentro de um chat; e as ferramentas de conectores (Gmail, Linear, Notion e as demais) podem ser encontradas por meio detool_search. A primeira inicialização guiada do aplicativo desktop fica condicionada aHERMES_GUEST_ONBOARDING=1, e somente o valor literal1a ativa: o próprio teste do aplicativo desktop confirma que'true','0'e um valor vazio mantêm o recurso desativado, enquanto a decisão de inicialização é registrada no ambiente do backend iniciado para que nenhum valor herdado seja aplicado indevidamente. Consulte Nous Tool Gateway.48 - As tempestades de inicialização do backend no aplicativo desktop acabaram. Antes, o Bot Mode iniciava ou se conectava a um backend por profile durante a inicialização e a cada atualização da lista, passar o cursor sobre a lista de Bots iniciava um backend por linha e trocar de profile podia iniciar uma cópia duplicada do backend principal. Tudo isso foi corrigido nesta versão.48
O processo de atualização continua o mesmo: hermes update em uma instalação existente ou o instalador via shell em uma instalação nova.48
Novidades da v0.21.1 (o patch cumulativo)
O Hermes Agent v0.21.1 (tag v2026.9.7, 7 de setembro de 2026) é deliberadamente enxuto: uma “versão de patch” que “reúne o estado atual da main desde a v0.21.0 para implantações com tag e consumidores downstream”. O texto apresenta as estatísticas do período — “5.139 commits sem merge em 4.364 arquivos alterados (+601.014 / -768.419)” e “632 PRs incorporados” — e deixa o restante da história para depois: “As notas de versão completas e organizadas deste período serão publicadas com a v0.22.0.” Isso faz deste o maior intervalo entre tags da história do projeto (nenhum intervalo anterior entre tags adjacentes supera os 2.790 commits sem merge de v2026.7.20..v2026.7.30), publicado com a menor nota de versão. Até que a v0.22.0 apresente o registro organizado, os seis grupos abaixo são o que muda na forma como você opera o Hermes nessa tag, cada um verificado no código-fonte.41
- A base de código foi decomposta, e o prazo de compatibilidade dos plugins termina em 14 de setembro. A decomposição de setembro de 2026 (PR nº 102117) dividiu os grandes módulos do repositório em arquivos especializados: um novo pacote
agent/contém os componentes internos do loop de conversa (214 módulos no nível superior, além de sete subpacotes;prompt_builder.pyagora fica emagent/prompt_builder.py, enquantorun_agent.pycontinua sendo a origem deAIAgent), os parsers de subcomandos da CLI foram movidos para um pacotehermes_cli/subcommands/(61 módulos), a lista estáticaCANONICAL_PROVIDERSfoi movida dehermes_cli/models.pyparahermes_cli/models_catalog_static.py(a lista em si não mudou: 39 entradas estáticas, ainda ampliadas automaticamente a partir dos 39 diretórios de plugins de provedores incluídos), edelegate_taskfoi dividido entre cerca de uma dúzia de módulostools/delegate_tool_*. Os caminhos internos de importação não são uma API estável, portanto um novoCOMPAT_MANIFEST.mdna raiz do repositório reexporta 1.148 nomes públicos “moved-lazy” a partir dos caminhos antigos de seus módulos, cada um emitindo umHermesPluginCompatWarninguma vez por nome em cada processo quando resolvido. A camada de compatibilidade era temporária, e sua remoção entrou em vigor conforme programado em 2026-09-14, seis dias após a tag — não como uma reversão de código, mas como uma restrição por data que já estava no código publicado. Desde essa data, um plugin de terceiros afetado não é carregado: o banner da CLI,hermes doctorehermes updateexibem um aviso vermelho que identifica o plugin desativado, o aplicativo para desktop mostra uma caixa de diálogo uma única vez, ehermes plugins listapresenta o motivo. Se você usa plugins externos, verifique-os:hermes plugins compat <path>exibe cadafile:linecom caminho antigo -> caminho novo e retorna o código 1 enquanto restar qualquer ocorrência (--jsonpara uma saída legível por máquina; execute sem argumentos para verificar todo o conjunto instalado). A saída de emergência para um plugin cujo autor ainda não se atualizou éplugins.allow_deprecated_imports: trueemconfig.yaml, e ela continua funcionando: a reversão que realmente exclui os caminhos de importação antigos ainda não havia sido incorporada em 22 de setembro (verificado até a tagv2026.9.21e namain), portanto os caminhos antigos continuam sendo resolvidos quando o loader tem permissão para prosseguir. Os detalhes das consequências estão em Novidades da v0.21.2 acima; a seção Sistema de plugins contém o quadro com o estado atual.42 - As conversas do gateway não são mais alternadas por temporizadores, em nenhuma circunstância. A documentação do ciclo de vida da sessão agora declara o contrato de forma explícita: “A inatividade e o tempo decorrido nunca alternam uma conversa.
/newe/resetcriam um limite explícito; a compactação de contexto continua gerenciando históricos longos. Configurações antigas de temporizador são ignoradas. O tipo de dadosSessionResetPolicyexistente é um dado de compatibilidade inerte, não uma política de runtime.” Os limites são explícitos e definidos pelo usuário; se você transferiu temporizadores de redefinição de sessão da era do OpenClaw por meio dehermes claw migrate, agora eles são dados inertes. Consulte Gateway de mensagens.43 - A autorização da MCP ganha um fluxo por código de dispositivo.
hermes mcp login <name>recebe--flow {browser,device}:browseré o fluxo PKCE existente,deviceé um login por código de dispositivo conforme a RFC 8628 para máquinas nas quais um callback do navegador não é prático, e a flag substitui a configuraçãooauth.flowdo servidor. O período também reforçou o restante da superfície de autenticação da MCP: a propriedade do profile é aplicada em todas as sessões da OAuth, caches de metadados malformados da OAuth são ignorados em vez de travar um servidor, e o aplicativo para desktop retransmite a OAuth da MCP por callbacks locais do cliente. Além disso,-t/--toolsetsagora também filtra quais servidores da MCP configurados chegam a ser iniciados, portanto uma execução pontual dehermes -z -t <toolsets>não inicializa a frio servidores desnecessários. O bloco de comandos de Integração com a MCP agora incluiloginereauth [--all], ambos anteriores a este período, mas ainda não documentados aqui.44 - A delegação passa a tratar o trabalho em segundo plano com transparência. Seis mudanças de confiabilidade em
delegate_task, todas verificadas no código-fonte da ferramenta de delegação na tag. (1) Por padrão, um lote em segundo plano retorna como UMA única conclusão; ativardelegation.independent_completionsdivide a chamada em unidades de conclusão: tarefas que compartilham um valor degroupsão reunidas e reportadas em conjunto, enquanto cada tarefa sem grupo é reportada separadamente conforme termina. O padrão é intencional — o código-fonte observa que uma enxurrada de conclusões por tarefa “fragmentava orquestradores que não tinham um plano para isso”. (2) Os processos em segundo plano de um filho são encerrados durante sua desmontagem, a menos que o filho os transfira ao pai comprocess_manage(action="handoff"); os processos restantes que não foram transferidos são identificados no resultado comoorphaned_processes, e processos filhos que terminaram sem nunca terem sido lidos aparecem comounread_completionscom o trecho final da saída. A posição adotada no projeto, segundo a docstring do código-fonte: o pai “precisa saber disso pelo runtime”, em vez de confiar na afirmação de um filho de que há um “watcher em execução”. (3)delegation.fallback_providerstorna-se uma superfície de configuração real:nullherda a cadeia do pai para filhos não fixados,[]desativa o fallback, e um filho fixado por provedor, endpoint ou modelo não recebe fallback, a menos que essa configuração declare um. (4) A cadeia de fallback do filho é resolvida pelo normalizador canônico, de modo que entradas malformadas são descartadas em vez de impedir a criação. (5) Uma falha no meio de uma unidade não perde mais os filhos concluídos: cada filho concluído de uma unidade com vários filhos é registrado de forma durável na própria linha da unidade e permanece no resultado recuperado como uma conclusão parcial. (6) Subagentes nunca herdam a camada de cache de prompts de 1 hora: um filho delegado passa para a camada de 5 minutos, porque a camada de 1 hora tem preço voltado a uma pessoa que se afasta, não a uma rajada de filhos paralelos.45 - Provedores e modelos. Os catálogos passam a incluir GPT-6 Astra e Astra Pro da OpenAI, com variantes de camada de velocidade
-fast/-flex(“preço 2x, camada prioritária” / “preço 0,5x, camada flex”) nos catálogos do Nous Portal e do OpenRouter. Na rota da OAuth do ChatGPT/Codex, o Astra é restrito por conta (somente a descoberta ativa no escopo da conta pode anunciá-lo) e recebe uma variante opcional-900kno seletor, que aumenta a janela anunciada de 272K para cerca de 900K, verificados ao vivo; o sufixo nunca é enviado na requisição. Junto com ele:anthropic/claude-fable-5.1,google/gemini-3.7-flashegemini-3.8-flash,qwen/qwen3.8-max-0902eqwen3.8-flash, além da família Muse Spark 1.3 da Meta (contexto de 1M, incluindo variantes para colaboradores) e um plugin de provedor de geração de imagensmuse-imageda Meta. O Tavily chega como backend de pesquisa/extração na web (TAVILY_API_KEY; o modo sem chave funciona quando o Tavily é selecionado por meio dehermes tools). Um runtime gerenciado do llama.cpp transforma os modelos locais em uma opção de primeira classe (binários oficiais, um únicollama-serversupervisionado e configuração com um clique no aplicativo para desktop), e provedores de processos externos fora do repositório recebem uma ramificação própria de resolução. Na prática: os catálogos remotos do seletor agora são atualizados a cada 20 minutos (model_catalog.ttl_minutes, padrão 20; a chave antigattl_hourssó é respeitada quando o usuário a definiu explicitamente).46 - Aplicativo para desktop: anote a página, controle a sessão. O navegador integrado ao aplicativo recebe um modo de comentários: clique em Annotate, depois clique em qualquer elemento (ou arraste para desenhar uma caixa) na página ativa e digite uma observação; os comentários salvos permanecem como pins numerados e nunca enviam uma interação por conta própria. Quando terminar, “Add N comments” envia o lote ao composer com uma captura de tela recortada por pin, e cada comentário de elemento inclui seu seletor da CSS, sua marcação e os estilos computados relevantes para o layout, para que o agente encontre o elemento no seu código-fonte em vez de tentar identificá-lo em uma imagem (senhas, valores ocultos e atributos com aparência de chave são ocultados antes que a marcação saia da página). Lotes maiores chegam agrupados por região da página, de modo que cerca de vinte comentários se transformam em poucos blocos de trabalho que normalmente alteram arquivos separados — o que torna seguro distribuí-los entre workers paralelos. Ao redor disso: controles estruturados de sessão e controles de automação de sessão, criação de sessões ao arrastar, uma tela de importação de sessões para transcrições de outros agentes de programação,
display.resume_last_session(padrão true: uma inicialização a frio reabre o último chat ou página), uma solicitação de consentimento na primeira abertura que oferecebrowser.use_real_profilequando um painel Browser é aberto com essa opção desativada, um catálogo integrado de skills opcionais em Capabilities -> Skills com instalação em um clique e uma nova localidade russa para a interface do aplicativo para desktop (os 17 catálogos de localidades da CLI permanecem inalterados).47
A atualização continua igual: hermes update em uma instalação existente ou o instalador via shell para instalações novas. Cabe à v0.22.0 apresentar o registro organizado deste período; os grupos acima são o que muda nessa tag.41
Novidades da v0.21.0 (The Pantheon Release)
Hermes Agent v0.21.0 (tag v2026.8.31, 31 de agosto de 2026) é a versão atual de recursos e o registro consolidado para o qual toda a sequência de atualizações v0.20.x vinha apontando: “Esta versão reúne tudo o que foi lançado nos patches de infraestrutura v0.20.1 a v0.20.6 — esses ciclos estão totalmente documentados aqui.” A proposta dá continuidade ao Herald: “A v0.20.0 transformou Hermes no arauto — ele falava e levava mensagens a outros agentes. Na v0.21.0, os deuses se reúnem.” Os números, na íntegra: “Desde a v0.20.0: cerca de 5.800 commits · cerca de 2.475 PRs incorporados · cerca de 5.680 arquivos alterados · cerca de 869.000 inserções · cerca de 135.000 exclusões · cerca de 2.100 issues encerradas · mais de 760 colaboradores”.35
A versão está organizada por área de recurso, assim como este resumo. Quando um recurso altera uma seção permanente deste guia, a indicação aparece em linha.
- Bot Mode: seus agentes se tornam uma sociedade, integrada ao produto. O Bot Mode deixa de ser o plugin
hermes-botsincluído no ciclo da v0.20.3 e passa a ser uma parte do aplicativo para desktop ativada por padrão. Cada profile de agente recebe um nome, um rosto de avatar determinístico com controles para gerar outro ou bloqueá-lo e um lugar em uma lista compartilhada; você cria conversas em grupo no estilo do Discord, nas quais vários bots e você conversam na mesma sala, menciona qualquer bot com @ pelo campo de mensagem e dá nomes e imagens às salas. O conjunto de recursos inclui cartões de mensagens entre agentes com identificação do remetente, avisos de entrega para quem envia, carregamento com renderização antecipada para retomadas instantâneas, um painel de rotinas e uma reformulação baseada no sistema de design do aplicativo. Nas palavras da própria versão: “Antes, ‘multiagente’ significava infraestrutura; agora, parece um aplicativo de chat cheio de colegas de trabalho.”35 hermes peer: mensagens diretas entre seus agentes. Qualquer agente Hermes pode enviar mensagens a qualquer outro usando seu identificador, entre diferentes profiles e gateways, pela CLI ou de dentro de uma conversa — peça ao seu bot de pesquisa para encaminhar as descobertas ao seu bot de programação e leia a resposta onde você estiver. “As respostas chegam ao Bot Chat canônico de cada agente, portanto as conversas entre agentes são persistentes e podem ser inspecionadas, em vez de serem enviadas e esquecidas.” O comandohermes peer(adicionar/listar/remover peers,dm) está na tabela de comandos de nível superior.35- Tarefas cron que se lembram. As tarefas agendadas deixam de ter memória curta: agentes cron carregam e atualizam a memória persistente como qualquer outro agente,
continuity=trueleva a saída de cada execução para a próxima, permitindo que um monitor elimine duplicatas com base no que já informou, cada tarefa recebe um bloco de notas persistente para rascunhos, tarefas no modo monitor ignoram totalmente a LLM quando nada mudou, o nível de raciocínio pode ser fixado por tarefa e a saída do cron pode chegar ao Bot Chat canônico de um bot, onde ele realmente responde. A seção tarefas agendadas (Cron) agora documenta o funcionamento de cada recurso no tag.3537 - Orquestração de subagentes em tempo real.
delegate_taskganha ações de controle: listar filhos em execução, redirecionar um deles durante o trabalho com uma correção de curso ou interrompê-lo antecipadamente e manter o resultado parcial. As saídas dos filhos podem ser validadas com um schema JSON, o custo de cada delegação aparece nos resultados e os limites padrão aumentam para 250 iterações por subagente e 10 filhos simultâneos (os limites unificados que substituírammax_async_childrenna v0.19.0).3538 - A central de comando do MCP. Os servidores MCP e o catálogo são reunidos em uma única página do aplicativo para desktop, com importação por arrastar e soltar no estilo “cole qualquer coisa”, verificações de integridade em segundo plano que avisam você para refazer a autenticação antes que uma chamada de ferramenta falhe, uma sobreposição de custos e uso da frota (estimativas de tokens do schema e uso de cada servidor nos últimos 30 dias) e deep links
hermes://que instalam um servidor MCP mediante confirmação explícita. Consulte integração com MCP.35 - Uma onda de recursos avançados para a CLI. Ctrl+P abre uma paleta de comandos com busca aproximada (também acessível por
/palette), o seletor de/modelfiltra os resultados enquanto você digita,/statusmostra o modo de raciocínio, as aprovações pendentes e o uso do contexto, e a barra de status pode exibir em tempo real a porcentagem de acertos do cache, a latência e os tokens por segundo, com controles individuais para cada campo. Além disso, há uma parada de emergência global, fixação e desafixação de sessões, textos de exemplo rotativos no campo de mensagem e mascotes no terminal. Uma observação sobre nomenclatura: a versão anuncia um verificador de aprovações em modo de simulação comohermes approval-check; nesse tag, o comando disponível éhermes approvals test— não existe um subcomandoapproval-check.3540 - O agente controla o navegador do aplicativo para desktop. O navegador integrado deixa de ser uma janela que o agente só consegue observar: Hermes pode navegar, clicar e ler diretamente, e as páginas podem ser abertas no navegador do sistema com menus de contexto completos para links.35
- Seis novos provedores e uma onda de novidades no catálogo de modelos. Meta Model API (Muse Spark), CommandCode, Tencent TokenPlan, Nebius Token Factory, Ramp Router e Actual Computer. Três deles (Meta AI, CommandCode e Actual Computer) chegaram em ciclos anteriores do conjunto de atualizações e já estavam na matriz de provedores; agora, a matriz também inclui Tencent TokenPlan, Nebius Token Factory e Ramp Router, além do novo SKU Alibaba Token Plan mencionado na documentação. Os catálogos passam a incluir GLM-5.3-Flash, qwen3.8-max/flash, Gemini 3.7 Flash, MiniMax M3 gratuito, Nemotron 3.5 Lightning e Muse Spark 1.2. Duas mudanças estruturais também acompanham a versão:
model_overridesnoconfig.yamlpermite ajustar a janela de contexto ou o preço de qualquer modelo sem esperar por uma nova versão, e agora os provedores podem ser distribuídos como pacotes instalados via pip e descobertos por entry points; um registro unificado de proteções de seleção também exibe avisos em todos os seletores quando um modelo é treinado com seus dados.3536 - Reforço de segurança em todas as áreas. Gravações em arquivos protegidos de instruções do agente (AGENTS.md, skills e armazenamentos de memória) agora sempre exigem aprovação, impedindo que um agente afetado por prompt injection reescreva silenciosamente suas próprias instruções permanentes; uma revisão ampla de redação de dados fecha brechas de vazamento de segredos em erros do terminal, leituras de
.env, checkpoints e logs ACP; o sistema de aprovação passa a reconhecer comandos destrutivos do Windows; as permissões concedidas no macOS continuam válidas após atualizações graças a uma identidade estável de assinatura TCC (hermes desktop --setup-tcc-identity); e a entrada do Blender no catálogo MCP e sua skill foram removidas após o comprometimento de uma dependência upstream. Consulte reforço de segurança para ver os detalhes correspondentes ao tag.3539 - Amadurecimento do gateway. Slack ganha cartões nativos em tempo real (respostas realmente transmitidas em streaming, além de cartões opcionais de planos e tarefas) e supressão de prévias de links enviados; Telegram recebe um seletor em linha que permite pesquisar todos os comandos e skills usando @botname, contornando o limite do menu de comandos do Telegram; o canal de retransmissão amadurece (inicialização nativa de plugins, operações de cartões em tempo real com streaming de rascunhos, segmentação por intervalo de sessão e restauração da conversão de voz em texto para mensagens de áudio); um socket de controle do gateway permite que consumidores da frota consultem o gateway e que atualizadores o pausem de forma controlada, em vez de encerrarem toda a árvore de processos; e o mecanismo de encerramento de turnos captura as stacks de workers travados quando o watchdog é acionado.35
- Uma onda de skills. Oito skills de produtividade recuperadas (document-to-action-items, meeting-action-items, email-inbox-triage, github-issue-to-pr, weekly-review-planning, competitor-news-monitor, product-price-monitor, social-media-content-calendar), clientes API derivados de HAR (“observe um site uma vez e depois chame diretamente sua API oculta, sem navegador”), publish-site, session-librarian, blocked-page-recovery, merge-reconciler, plan-interrogation e um linter consultivo de SKILL.md durante a criação.35
Revertidos neste ciclo (não incluídos na versão): tanto o modo Model Council (/council) quanto o context engine DCP foram implementados e depois revertidos; o servidor de gateway exclusivo para WS (#94245) foi incorporado e posteriormente revertido (#96118), portanto FastAPI continua no fluxo de inicialização do aplicativo para desktop — porém, a repetição de eventos com marcação sequencial (#94219) e a reconexão sem perdas do aplicativo para desktop por WebSocket FORAM incluídas. Electron voltou para a versão 40.10.2. Se a cobertura da comunidade sobre os ciclos da v0.20.x mencionou algum desses recursos, eles não estão nesta versão.35
O processo de atualização não mudou: use hermes update em uma instalação existente ou o instalador via shell para novas instalações. A subseção de consolidação abaixo da versão Herald continua sendo o registro, por tag, do que chegou em cada ciclo.35
Novidades da v0.20.0 (The Herald Release)
O Hermes Agent v0.20.0 (tag v2026.8.3, 3 de agosto de 2026) foi a versão com novos recursos antes que a v0.21.0 consolidasse todo o conjunto; a v0.20.1 (13 de agosto) e a v0.20.2 (16 de agosto) são tags de estabilização criadas sobre ela, e a v0.20.3 (tag v2026.8.16.2, publicada em 17 de agosto), a v0.20.4 (tag v2026.8.18, 18 de agosto), a v0.20.5 (tag v2026.8.19, publicada em 21 de agosto) e a v0.20.6 (tag v2026.8.27, 27 de agosto) mantêm a sequência de consolidações com janelas próprias que também incluem novos recursos — consulte a subseção abaixo. A janela desde a v0.19.0 abrange aproximadamente 3.650 commits, 1.400 PRs mesclados e 1.200 issues encerradas, com a participação de mais de 650 colaboradores.59
Três mudanças invalidam as orientações das versões anteriores deste guia. Leia-as antes de qualquer outra coisa:
- Agora, o Node 26 é obrigatório. O instalador fixa
NODE_VERSION="26"e recusa runtimes mais antigos com a mensagem “Node.js … is too old (Hermes requires Node >=26).” Os instaladores,healeupgradeaplicam essa exigência. Observe que a página de instalação do site da documentação ainda informa Node v22 — o script do instalador e as notas da versão são as fontes mais recentes e confiáveis.59 - pip e Homebrew foram descontinuados, não apenas depreciados. Literalmente: “brew + pip/PyPI wheel channels retired (shell installer / Docker / Nix are the supported channels).” Se você ainda usa uma instalação via pip ou brew, esse canal não recebe mais versões.59
- O limite padrão de iterações para chamadas de ferramentas passou de 90 para 500. Execuções autônomas longas deixaram de atingir uma barreira artificial, e todos os limites de pressão de orçamento abaixo são calculados com base no novo teto.
read_filetambém passa a usar 2.000 linhas por padrão, em vez de 500.59
O restante da versão:
- Voz conversacional. TTS por streaming com interrupção por voz e palavras de ativação processadas no dispositivo.59
- A2A v1.0. Um plugin de protocolo entre agentes, atendendo à solicitação de longa data da issue nº 514.59
- Webhooks de saída assinados. Antes,
hermes webhookaceitava apenas eventos de entrada; a v0.20.0 adiciona webhooks de ciclo de vida de saída assinados com HMAC para eventos de sessão, turno e ferramenta.59 - Citações fundamentadas. Uma nova skill com um modo de verificação de fatos.59
- Onda de recursos avançados para CLI.
!commandexecuta um comando shell imediatamente sem consumir um turno do modelo;/initexamina o projeto e cria ou atualiza umAGENTS.md;/diffmostra alterações preparadas, todas as alterações ou as alterações da sessão em qualquer interface;/contextdetalha o que está ocupando a janela de contexto;/focusoferece uma visualização com menos saída e permite recuperar linhas ocultas; Ctrl+S guarda um prompt parcialmente escrito.hermes import-agentmigra uma configuração de Claude Code ou Codex CLI com um único comando.59 - Novidades na área de segredos. Uma fonte de segredos baseada em comandos auxiliares que se integra a qualquer cofre, rotação de tokens com um único comando e erros de inicialização que indicam como agir, um cache emergencial criptografado e opcional para o Bitwarden, chaves injetadas pelo cofre com escopo definido por pasta inicial de cada profile e paridade de SecretRef
${env:VAR}entreconfig.yamle a configuração de MCP. O modelo de autenticação com três caminhos descrito abaixo permanece inalterado.59 - Inicialização mais rápida. A inicialização a frio de
hermes -wcaiu de aproximadamente 14s para 1,8s.59 - O desktop se tornou uma plataforma. Artefatos com cartões versionados e visualização dinâmica em sandbox, um SDK de plugins com o Kanban como plugin inaugural para desktop, uma tecla de atalho global para entrada rápida, várias janelas da interface gráfica, modo de backend remoto do SSH e login nativo conforme a RFC 8252.59
As consolidações v0.20.3, v0.20.4, v0.20.5 e v0.20.6 (17 a 27 de agosto)
Após a v0.20.0, o projeto adotou uma cadência de alta frequência para consolidações com tags, e elas foram além da estabilização. As quatro adiaram as notas selecionadas da mesma forma — cada uma declarou que “full curated release notes for this window will ship with v0.21.0” — e a v0.21.0 agora as entregou: Novidades da v0.21.0, acima, é o registro selecionado de todo esse período (a versão confirma que as janelas “are fully documented here”). Os blocos abaixo permanecem como o registro contemporâneo de cada tag — eles preservam o que foi incluído em cada uma, enquanto as notas selecionadas apresentam tudo em conjunto.58233035
v0.20.3 (cerca de 250 commits e 125 PRs desde a v0.20.2):
- Migração para SDK do MCP 2.x, com suporte ao protocolo sem estado de 2026-07-28. O Hermes migra para a geração atual de SDK do MCP e oferece compatibilidade com a revisão sem estado do protocolo.58
- O Bot Mode chega como um plugin incluído (
hermes-bots) que contém o protocolo central para integrantes da equipe.58 - Um plugin do provedor CommandCode passa a integrar o catálogo de provedores.58
- Contratos de runtime do Cua Driver 0.20 para uso do computador, além do reforço da propriedade do runtime de subprocessos do Python (isolamento de PYTHONHOME/PYTHONPATH).58
- Confiabilidade: autorrecuperação do agendador cron (recuperação de EMFILE, reconciliação de reivindicações obsoletas e reativação de tarefas travadas), correções de perda de dados na transferência entre sessões, autorrecuperação da conexão do desktop com o gateway remoto e uma série de melhorias transferidas para o ecossistema (verificação de segurança na instalação de plugins,
/worktree, preservação de edições manuais no/rollbacke leitura de arquivos UTF-16).58
v0.20.4 (cerca de 146 commits e 74 PRs desde a v0.20.3):
- A superfície de vidro do desktop: acabamento em vidro fosco e transparência, com um seletor de efeito fosco e pré-seleção no macOS.58
- Uma barra lateral com abas SESSIONS|BOTS, com a opção de ocultar ou exibir cada bot, além de correções nos chats em grupo do Bot Mode (turnos prolongados dos participantes, renderização de Markdown e roteamento entre máquinas).58
- Verificação consultiva de nível 1 do NVIDIA SkillEvaluator ao instalar skills — verificações de licença e segurança são executadas quando você instala uma skill.58
- Reforço do envio de mídia por cron (timeout configurável, anexos em execuções manuais e exibição de execuções perdidas), correções na thread do loop de eventos e em contenções do SessionDB, transparência do
hermes updatequanto a branches estacionadas e notificações nativas do sistema operacional para o Kanban.58
v0.20.5 (cerca de 746 commits e 323 PRs desde a v0.20.4):
- A camada web sem chaves: a pesquisa na web funciona em instalações novas sem nenhuma chave de API — uma rotação gratuita entre 5 fornecedores com failover em anel.23
- Uma onda de refinamentos no CLI: seletor de
/modelcom busca aproximada, uma paleta de comandos acessível com Ctrl+P e um/statusmais completo.23 - O Bot Mode amadurece: threads em salas de grupo, resumos recolhíveis de conversas, avatares com rostos em formato de blob e anexos de PDF/arquivos com arrastar e soltar.23
- Ferramentas para frota e worktree: recibos do
hermes update,hermes update --plan(as notas da versão chamam isso de “fleet--planverification”; a flag pertence ahermes update, não a um comandofleet, e, conforme a ajuda do parser, ela “Show the update plan and exit without changing anything”) ehermes worktree list/prune.2327 - As tarefas cron ganham memória persistente e esforço de raciocínio por tarefa, além de controles de disciplina de execução e de travamento do runtime orientados pelas descobertas da avaliação do Composio, esclarecimento com várias perguntas, o provedor sem autenticação e independente do opencode e melhorias de desempenho no desktop (hidratação do Bot Mode com prioridade à primeira renderização e React Compiler nos dois renderizadores).23
v0.20.6 (tag v2026.8.27, 27 de agosto — cerca de 1.313 commits e 525 PRs desde a v0.20.5):
A própria versão se descreve claramente como uma “Patch release. This tag rolls up the ~525 PRs merged since v0.20.5 into a stable tagged release for downstream consumers”, e sua descrição situa a janela em cerca de 1.313 commits distribuídos por aproximadamente 1.557 arquivos (+177.113 / −21.682) — cerca de 525 PRs mesclados.30 Estes são os principais destaques dessa descrição:
- Navegação com profile real condicionada ao consentimento — a navegação local pode usar seu profile padrão do Chromium, com um fluxo no Windows para fechar o navegador após sua aprovação.30
- O Browser do desktop ganha sua própria janela no sistema operacional, além de um mecanismo gerenciado de atualização remota do SSH e uma barra de profiles da frota.30
- Expansão do catálogo remoto de MCP: mais de 50 servidores hospedados por fornecedores e verificados em operação, incluindo Cloudflare, Grafana Cloud, Better Stack e Railway.30
- Criptografia opcional via chaveiro do sistema operacional para segredos armazenados — sem mais solicitações do Chaves do macOS a cada inicialização.30
- Novos modelos nos seletores: GLM-5.3-Flash, MiniMax M3 gratuito e MiniMax H3 Max para vídeo.30
- Cache de resultados com TTL para
web_search/web_extractetool_searchcom várias consultas e redução de palavras aos seus radicais.30 - A compactação lean-tail agora é o padrão — a seção Compactação de contexto abaixo documenta a configuração disponível nessa tag.3031
- Os backends de terminal se tornaram extensíveis por plugins — consulte Backends de terminal.3032
- Transparência do atualizador e da frota: os atualizadores pausam os gateways por meio do socket de controle em vez de encerrar suas árvores de processos, e instalações gerenciadas por imagens ou pacotes recusam atualizações locais que não sejam seguras.30
- Confirmações duráveis de incidentes do cron com erros mais claros de divergência de código, controles para a pré-visualização de links no Slack e identidades de contêiner compartilhadas do Docker.30
O processo de atualização não mudou: hermes update em uma instalação existente ou o instalador shell para instalações novas.582330
Novidades da v0.19.0 (The Quicksilver Release)
O Hermes Agent v0.19.0 (tag v2026.7.20, 20 de julho de 2026) recebeu esse nome em homenagem à velocidade do próprio deus mensageiro: o eixo central da versão é a responsividade bruta, com uma redução de aproximadamente 80% no tempo até o primeiro token do primeiro turno em todas as plataformas. Em torno desse eixo estão o gerenciamento de cobranças pelo terminal, fontes de segredos em gerenciadores de senhas, aprovações inteligentes por padrão, subagentes observáveis e entrega de respostas à prova de falhas. O período desde a v0.18.0 é o maior da história do projeto: aproximadamente 2.245 commits, cerca de 1.065 PRs mesclados, aproximadamente 3.300 issues fechadas e mais de 450 colaboradores da comunidade.60
- Primeiro token aproximadamente 80% mais rápido, em todos os lugares. O tempo entre o envio a frio e o despacho caiu de cerca de 4,3 s para aproximadamente 0,9 s tanto no CLI quanto no gateway, na TUI, no desktop e no cron — a detecção de recursos do Discord saiu do caminho crítico, a sondagem do Ollama é ignorada para provedores conhecidos que não são Ollama e as operações bloqueantes foram removidas da inicialização do agente. A latência percebida também recebeu atenção especial: agora, por padrão, os modelos de raciocínio transmitem seu processo de pensamento ao vivo (
display.show_reasoningestá ON), e a caixa de resposta é renderizada a cada token, não a cada linha.60 - Ondas de melhorias na renderização do desktop e da TUI. O aplicativo para desktop passou por uma reformulação de desempenho com cerca de 20 PRs: uso de CPU 14 vezes menor no divisor de Markdown em streaming graças à análise léxica incremental por blocos, diffs virtualizados no painel de revisão, troca ágil de sessões em transcrições grandes e o fim das novas renderizações da barra lateral e das linhas de ferramentas a cada token. Agora, a TUI renderiza o Markdown transmitido de forma incremental, bloco por bloco.60
- As instalações via pip e Homebrew estão obsoletas. Ambos os métodos foram classificados como instalações “legadas sem suporte”, com remoção planejada. Essa remoção já ocorreu na v0.20.0 — os canais brew e pip/PyPI wheel foram desativados, restando o instalador shell, o Docker e o Nix como canais compatíveis.6059
- Os segredos podem vir do seu gerenciador de senhas. Uma nova interface conectável
SecretSourcebusca segredos no Bitwarden e no 1Password (referênciasop://) durante o carregamento, permitindo usar vários cofres simultaneamente, com precedência determinística, alertas de conflito e procedência por variável — as chaves do API não precisam mais ficar em um.envde texto simples. Outros provedores de cofres poderão ser adicionados futuramente como plugins.60 - As aprovações inteligentes agora são o padrão. Quando o Hermes quer executar um comando sinalizado, um revisor independente do LLM o avalia em vez de pedir sua confirmação para cada comando — e cada decisão abrange apenas aquele comando específico. Regras de negação definidas pelo usuário bloqueiam comandos correspondentes até mesmo no modo YOLO,
/deny <reason>transmite o motivo da sua recusa para que o agente ajuste sua abordagem, e a ação de aprovaçãopre_tool_calldo plugin (reintroduzida com chaves de regras) encaminha uma chamada de ferramenta para aprovação humana.60 - Gerenciamento de cobranças pelo terminal:
/subscriptione/topup. Gerencie seu plano do Nous Portal sem sair do terminal — consulte seu plano e o saldo restante, veja exatamente quanto custará um upgrade ou quando um downgrade entrará em vigor e aplique a alteração com a opção de desfazê-la. O aplicativo para desktop recebe uma aba equivalente de configurações de cobrança.60 - Acompanhe o trabalho dos subagentes e nunca perca uma resposta concluída. Os despachos de
delegate_taskretornam arquivos de transcrição ao vivo que você pode acompanhar comtail -fassim que os subagentes são iniciados — cada chamada de ferramenta, resultado e resposta transmitida, com um log legível para cada agente filho. As conclusões de delegações em segundo plano persistem após reinicializações, e as respostas finais do gateway são registradas em um registro de obrigações de entrega nostate.dbe reenviadas na próxima inicialização caso o gateway falhe durante o envio. A opção de configuraçãomax_async_childrenestá obsoleta em favor dos limites unificados de concorrência para delegações.60 - Um gateway, vários profiles. Um único gateway multiplexado que compartilha um token de bot pode encaminhar guildas, canais ou threads específicos para profiles diferentes — cada um com configurações, skills, memória e segredos totalmente isolados — com uma substituição por
GATEWAY_MULTIPLEX_PROFILES. O índice de roteamento foi transferido para ostate.db; agora,sessions.jsoné um espelho legado opcional.60 - Onda de provedores e modelos. O Fireworks AI chega com suporte de primeira classe (estimativa de custos e 2ª posição no seletor de provedores), acompanhado pelo DeepInfra e pelo Upstage Solar. Os catálogos recebem o GPT-5.6 (Sol/Terra/Luna + Pro, integrado de ponta a ponta), o grok-4.5 (GA), o kimi-k3 (com o kimi-k2.x descontinuado) e o Claude Sonnet 5 totalmente integrado. Uma flag
enabled: falsepor provedor e a configuraçãoexcluded_providersremovem provedores não utilizados dos seletores e da resolução de/model.60 - O esforço de raciocínio se torna ajustável. Os novos níveis de esforço
maxeultrachegam a todas as interfaces, com substituições por modelo nas configurações, esforço por slot nas predefinições de MoA (os consultores raciocinam intensamente, enquanto o sintetizador permanece rápido), esforço por tarefa para modelos auxiliares e um/reasoninglimitado à sessão no CLI.60 - Recursos do CLI e do MCP.
hermes sessions exportgera arquivos nos formatos Markdown, Quarto, HTML, somente prompt e rastreamento do Hugging Face, com uma opção--redactpara remover dados confidenciais;/model --oncepermite substituir o modelo por um turno; invocações de slash skills podem ser encadeadas (/skill-a /skill-b do XYZ);--safe-modeajuda na solução de problemas;hermes config get/unsetcompletam o gerenciamento de configurações;hermes servese torna um verdadeiro backend headless; e as ferramentas do MCP adotam a convenção de nomenclaturamcp__server__tool.60
Se você estiver atualizando a partir da v0.18.x, duas mudanças merecem atenção antes de qualquer outra: agora, instalações via pip ou Homebrew exibem um alerta de método legado sem suporte (migre para o instalador de uma linha), e max_async_children está obsoleto em favor dos limites unificados de concorrência para delegações. Todo o restante é incremental — os principais motivos para atualizar são a redução de aproximadamente 80% na latência do primeiro turno, as aprovações inteligentes e o registro de entregas que protege as respostas concluídas contra falhas.
Novidades da v0.18.0 (The Judgment Release)
O Hermes Agent v0.18.0 (tag v2026.7.1, 1º de julho de 2026) recebeu esse nome em referência ao julgamento: o agente verifica o próprio trabalho em vez de alegar que foi bem-sucedido, e você pode realmente inspecionar o raciocínio em conjunto. A versão também elimina todo o backlog P0/P1 — cerca de 692 itens de prioridade máxima resolvidos em 12 dias.22
- Mixture-of-Agents como modelo de primeira classe. Agora, o MoA pode ser selecionado como qualquer outro modelo em todas as interfaces, e o raciocínio em conjunto fica visível: a saída completa de cada modelo de referência é renderizada em seu próprio bloco identificado, com a resposta transmitida ao vivo — você pode acompanhar o conjunto raciocinando em vez de receber uma resposta mesclada e opaca.22
- Contratos de conclusão para
/goal. O agente verifica o próprio trabalho executando as verificações do projeto antes de informar que uma meta foi concluída, em vez de simplesmente alegar sucesso — o julgamento aplicado a si mesmo.22 /learn— transforme a descrição de qualquer coisa em uma skill. Transforme um fluxo de trabalho em uma skill reutilizável descrevendo-o; as skills geradas seguem automaticamente as convenções do CONTRIBUTING.md do repositório.22- Linha do tempo de
/journey. Um histórico visual da memória e das skills ao longo do tempo, com edição, além de um grafo de memória no desktop.22 - Distribuição de subagentes em segundo plano. Delegue várias tarefas executadas simultaneamente sem bloquear a conversa — o único subagente em segundo plano da v0.17.0 se transforma em uma frota.22
- Projects no desktop. Projects de programação de primeira classe, com um modelo de organização por projeto/repositório/lane.22
- Gateway com scale-to-zero. Os gateways podem entrar em estado de inatividade quando estão ociosos e coordenar o esvaziamento de tarefas para permitir implantações contínuas — algo importante para quem executa o Hermes como um serviço permanentemente ativo.22
- Suporte ao Google Vertex AI. Acesso ao Gemini por meio de contas de serviço do GCP, com atualização automática de tokens do OAuth2, passando a integrar o catálogo de provedores.22
- Comando de edição
/prompt. Abre o$EDITORpara você escrever prompts com várias linhas, em vez de ter que lidar com as limitações da linha de entrada.22
Se você estiver atualizando a partir da v0.17.x, nenhuma dessas mudanças afeta o CLI. Os principais motivos para atualizar são os contratos de conclusão (metas que verificam a própria execução), o MoA de primeira classe com conjuntos inspecionáveis e o /learn para registrar skills.
Novidades na v0.17.0 (The Reach Release)
O Hermes Agent v0.17.0 (tag v2026.6.19, 19 de junho de 2026) recebeu esse nome devido ao alcance que o agente passou a ter — novos canais de mensagens, novos provedores de modelos e controles mais avançados no desktop e no dashboard. A versão adiciona recursos à v0.16.x; a interface CLI permanece inalterada.21
- Novos canais de mensagens. Agora o iMessage funciona sem um Mac como relay por meio do Photon Spectrum (OAuth com código de dispositivo,
hermes photon login); a API do WhatsApp Business Cloud é um adaptador oficial da Meta que elimina a necessidade de um processo de bridge; o SimpleX ganha grupos, anexos nativos, agrupamento de texto e aceitação automática; e o Raft passa a ser incluído como um plugin de plataforma, com um design de canal de ativação que garante privacidade por contrato.21 - Novos modelos e provedores. O catálogo adiciona
z-ai/glm-5.2(contexto de 1M),anthropic/claude-fable-5,laguna-m.1,nemotron-3-ultraegrok-composer-2.5-fast(modelo do Cursor via OAuth da xAI, com contexto de 200k). O padrão da xAI mudou paragrok-build-0.1, e os modelos adaptativos da Anthropic agora seguem o contrato moderno de raciocínio (eles nunca enviam um camporeasoning).21 - Desktop e dashboard. O desktop adiciona subagentes em segundo plano, com “watch-windows” ao vivo que transmitem as atividades delegadas (
delegate_task(background=true)), um seletor de modelos no Composer, atalhos de teclado reconfiguráveis, notificações nativas do sistema operacional, rascunhos do Composer por thread, temas do VS Code Marketplace e uma interface em japonês e chinês tradicional. O dashboard adiciona um construtor completo de profiles (modelos/skills/MCPs sem editar oconfig.yaml), um seletor global de profile, um Skills Hub reformulado com verificação de segurança, Automation Blueprints (modelos parametrizados disponíveis em formulários, comandos de barra, conversas e documentação) e um login seguro que retorna 401 atrás da camada de proteção OAuth.21 - Skills e ferramentas. Agora o
image_generatepode editar e transformar uma imagem de origem, não apenas criar uma do zero, em todos os provedores de imagens compatíveis; a ferramentamemoryganhou um arrayoperationspara adicionar, substituir e remover itens em lote de forma atômica em uma única chamada; uma nova skillsimplify-codeexecuta em paralelo uma revisão e limpeza por três agentes, controlada por um nível de risco baseado na Cerca de Chesterton; e o booleanowrite_approvalsubstitui owrite_modede três estados.21 - Arquitetura. Os subagentes em segundo plano retornam imediatamente um identificador e reinserem o resultado como um novo turno; um handler de elicitação de MCP permite solicitar confirmação durante uma chamada de ferramenta, e as ferramentas MCP que se conectam posteriormente são disponibilizadas entre os turnos (sem comprometer o cache); o cron se torna um CronScheduler conectável, com um provedor de cron gerenciado Chronos; e um novo escopo Managed (
/etc/hermes) permite que um administrador fixe configurações que o usuário não pode alterar, junto a um relay Gateway-Gateway para topologias com vários gateways.21 - Novos comandos.
/version,/billing(faturamento interativo pelo terminal),hermes photon login(autenticação do iMessage) ehermes curator run --consolidate— agora a consolidação precisa ser ativada explicitamente, de modo que a curadoria rotineira em segundo plano não consuma tokens.21 - Segurança. A v0.17.0 corrige uma forma de contornar a lista de bloqueio de escapes de shell, adota o bloqueio seguro quando módulos de aprovação e adaptadores de gateway com políticas próprias estão ausentes, sanitiza o ambiente dos subprocessos de scripts executados por tarefas cron, oculta segredos nos dumps de debug das requisições, verifica configurações stdio de MCP em busca de padrões de exfiltração e atualiza urllib3 e PyJWT para corrigir CVEs.21
Se você estiver atualizando da v0.16.x, nada aqui quebra a interface CLI; são novos canais, modelos e interfaces em torno do mesmo agente. O iMessage sem relay, os adaptadores oficiais do WhatsApp e o escopo Managed para administradores são os principais motivos para atualizar.
Novidades na v0.16.0 (The Surface Release)
O Hermes Agent v0.16.0 (tag v2026.6.5, 5 de junho de 2026) recebeu esse nome pelas novas interfaces oferecidas ao agente centrado na CLI. O grande destaque é que o Hermes deixou de ser exclusivo do terminal.20
- Aplicativo nativo para desktop. O Hermes Desktop é um novo aplicativo Electron para macOS, Linux e Windows, com instalação em um clique e atualização automática pelo próprio aplicativo. Ele oferece uma janela de chat com streaming, arquivos por arrastar e soltar, colagem de imagens da área de transferência, uma paleta
Cmd+K, uma lista de sessões com arquivamento e pesquisa e um seletor de modelos na barra de status. Ele pode se conectar a um Hermes gateway remoto por uma WebSocket segura, com autenticação via OAuth ou nome de usuário e senha, hosts remotos específicos para cada profile e sessões simultâneas em vários profiles vinculadas por referências@sessionentre profiles. A interface para desktop também inclui uma tradução completa para chinês simplificado (简体中文) por meio de uma camada i18n tipada (display.language; o inglês continua sendo o padrão).20 - Painel administrativo no navegador. O dashboard web local evoluiu de uma visualização de status para um painel administrativo completo: um catálogo de MCP com controles para ativar e desativar, gerenciamento de credenciais, criação de webhooks e hooks, configuração de memória, controles do gateway e uma página de sistema que verifica antes de atualizar e oferece o Debug Share em um clique. Uma nova página Channels permite configurar pelo navegador todas as plataformas de mensagens do gateway (Telegram, Discord, Slack e as demais). Agora a autenticação é conectável: login com nome de usuário e senha, um provedor OIDC genérico auto-hospedado,
hermes dashboard registerpara um cliente OAuth auto-hospedado e rotação de sessões por refresh token.20 - Novos comandos de CLI e comandos de barra.
/undo [N]retrocede os últimos N turnos do usuário, com preenchimento prévio e exclusão reversível, e funciona na CLI, na TUI e nas plataformas de mensagens. Uma interface padrão configurável (clioutui) passa a estar disponível, com--clipara substituí-la; a TUI ganha um comando/modelunificado e uma sobreposição Sessions.hermes portalé um alias mais fácil de entender para o fluxo de integração do Nous Portal, que agora oferece os caminhos Quick Setup e Full Setup na primeira execução, e chegam dois diagnósticos:hermes prompt-sizeehermes sessions optimize.20 - Novos modelos e provedores. O seletor adiciona
deepseek-v4-flash,MiniMax-M3(contexto de 1M, provedores nativos da MiniMax),qwen3.7-plus(Nous + OpenRouter) egemini-3.5-flash(OAuth do Gemini + chave API). Um provedor OAuth nativo para o xAI Grok chega ao inicializador para desktop, o seletor de modelos passa a oferecer pesquisa aproximada em todas as interfaces, provedores com vários endpoints são agrupados em uma única linha e a atualização do catálogo passa de diária para horária.20 (Desde então, a v0.21.1 alterou novamente a frequência: os catálogos remotos do seletor são atualizados a cada 20 minutos,model_catalog.ttl_minutes.46) - Skills mais enxutas e divulgação progressiva. O conjunto padrão de skills deixou de incluir skills redundantes e obsoletas (o Spotify migrou para um plugin nativo, o Linear para
hermes mcp install lineare várias entradas desatualizadas foram removidas), transferiu mais delas para a categoria opcional e adicionou um filtro de relevânciaenvironments:no frontmatter (kanban/docker/s6), que mantém skills específicas de determinados contextos fora do índice até que sejam solicitadas.NVIDIA/skillsagora é uma fonte confiável padrão do Skills Hub, junto com OpenAI, Anthropic e HuggingFace. As ferramentas de MCP e de plugins ganharam divulgação progressiva (com escopo definido), e foi corrigido um bug de MCP que informava falsamente o sucesso da OAuth quando nenhum token era obtido.20 - Segurança. A v0.16.0 fixa uma versão corrigida do Starlette (≥1.0.1) contra a CVE-2026-48710 (BadHost), retira do event loop as verificações de URL contra SSRF em fluxos assíncronos, remove do ambiente dos subprocessos o bearer token de inferência do Bedrock, adiciona
bws_cache.jsonà proteção de leitura segura de arquivos, incluidocker restart/stop/killna lista de padrões perigosos e sanitiza caracteres Unicode invisíveis no conteúdo verificado das skills. A versão corrigiu 2 problemas P0 e 62 P1, dos quais 16 estavam relacionados à segurança.20
Se você estiver atualizando da v0.15.x, nada disso representa uma mudança incompatível na própria CLI; são novas interfaces e novos provedores em torno do mesmo agente. O aplicativo para desktop e o painel administrativo são os motivos para atualizar se você quiser disponibilizar o Hermes a usuários que não usam o terminal ou administrar um gateway remoto pelo navegador.
Novidades na v0.14.0 (The Foundation Release)
A v0.14.0 não gira em torno de um único recurso de destaque, mas da redução do esforço de configuração e da ampliação dos ambientes em que o Hermes pode ser executado.19 As principais mudanças operacionais:
- A instalação e a inicialização estão mais leves.
pip install hermes-agentfunciona pelo PyPI, adaptadores pesados são instalados sob demanda no primeiro uso e o fluxo de inicialização adia trabalho suficiente para reduzir o tempo de partida a frio em aproximadamente 19 segundos. (Desde então, a v0.19.0 descontinuou as instalações via pip — consulte Instalação.) - Assinaturas podem se transformar em endpoints API locais.
hermes proxytransforma provedores baseados em OAuth, como Claude Pro, ChatGPT Pro e SuperGrok, em um endpoint local compatível com a OpenAI para ferramentas como Codex, Aider, Cline e Continue. - O alcance do gateway aumenta. LINE e SimpleX Chat passam a integrar o gateway (a tabela de comparação de plataformas da documentação relaciona 28 plataformas na tag
v2026.8.31; a seção Gateway de mensagens explica o que esse número inclui), o Microsoft Teams recebe integração completa, a recuperação retroativa do histórico do Discord fica ativada por padrão e os promptsclarifydo Telegram e do Discord passam a usar botões nativos. - A verificação após a escrita melhora. Depois das edições, o Hermes pode exibir, antes do turno seguinte, resumos das alterações em arquivos por turno e diagnósticos semânticos do servidor de linguagem, aproximando-se de um trabalho de agente orientado por evidências.
- As ferramentas de desktop e mídia ficam mais abrangentes.
computer_usefunciona por meio do cua-driver para provedores que não sejam da Anthropic,video_generateé unificado por trás de backends conectáveis evision_analyzeenvia pixels brutos aos modelos que realmente conseguem enxergar.
Instalação
O instalador de uma linha é o método de instalação oficialmente compatível. Ele cuida do Python, uv, Node.js, ripgrep, ffmpeg, da clonagem do repositório, do ambiente virtual e do comando global hermes.7
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
As instalações via pip e Homebrew foram descontinuadas a partir da v0.19.0. O pacote PyPI introduzido na v0.14.0 (
pip install hermes-agent) e a fórmula do Homebrew agora são classificados como instalações “legadas sem suporte” — todas as interfaces exibem um aviso (sem bloquear a execução) quando o Hermes detecta uma delas, e está prevista a descontinuação da publicação no PyPI/Homebrew. Se você instalou via pip ou brew, migre para o instalador acima.60
Funciona no Linux, macOS, WSL2 e Android/Termux (o instalador detecta o Termux automaticamente e muda para um pacote testado para Android).7 O Windows nativo agora é uma plataforma Tier 1, e não mais a versão beta inicial lançada na v0.14.0 — instale-o com iex (irm https://hermes-agent.nousresearch.com/install.ps1). Uma ressalva que a documentação deixa explícita: o suporte ao macOS é exclusivo para Apple Silicon, e Macs com processadores Intel não são compatíveis.59 Historicamente, a v0.14.0 adicionou suporte nativo ao Windows em versão beta inicial por meio de um instalador PowerShell, mas o WSL2 continua sendo a recomendação mais segura para uso em produção até que a opção do Windows amadureça.19
Após a conclusão:
source ~/.bashrc # or ~/.zshrc
hermes # Start chatting
O único pré-requisito é o git. O instalador configura automaticamente o Python 3.11 por meio do uv (sem exigir sudo), o Node.js 26 (para automação do navegador e a integração com o WhatsApp), o ripgrep e o ffmpeg. O Node 26 é o requisito mínimo obrigatório desde a v0.20.0 — o instalador rejeita qualquer versão anterior e instala uma versão do Node gerenciada pelo Hermes.597
Verifique a instalação
hermes --version # Check version (global flag; there is no `version` subcommand)
hermes doctor # Diagnose config/dependency issues
hermes status # Show current configuration + auth state
hermes dump # Copy-pasteable setup summary for debugging
O hermes doctor informa exatamente o que está faltando e como corrigir.7 O hermes dump é o comando de diagnóstico que você deve colar em uma issue do GitHub ou em uma conversa no Discord ao pedir ajuda — ele gera um resumo em texto simples de toda a sua configuração, com os dados secretos ocultados.8
Instalação manual
Se você precisa de controle total — uma versão personalizada do Python, extras específicos ou integração com Nix/NixOS — o processo manual está documentado passo a passo no guia de instalação oficial.7 Principais extras opcionais que você pode combinar com uv pip install -e ".[<extras>]":
| Extra | O que adiciona |
|---|---|
all |
Tudo listado abaixo |
messaging |
gateway para Telegram e Discord |
cron |
Análise de expressões cron |
cli |
Interface de menu no terminal para o assistente de configuração |
modal |
Backend de execução na nuvem Modal |
voice |
Entrada de microfone CLI + reprodução de áudio |
tts-premium |
Vozes premium da ElevenLabs |
honcho |
Memória nativa para IA (integração com Honcho) |
mcp |
Suporte ao Model Context Protocol |
homeassistant |
Integração com Home Assistant |
acp |
Suporte à integração com editores via ACP |
slack |
Mensagens no Slack |
pty |
Suporte a terminal PTY (ferramentas CLI interativas) |
dev |
pytest e utilitários de teste |
termux |
Pacote testado para Android (inclui cron, cli, pty, mcp, honcho, acp) |
O comando de instalação no Termux é diferente — ele usa pip com um arquivo de restrições, e não uv pip:
python -m pip install -e ".[termux]" -c constraints-termux.txt
Isso ocorre porque .[all] no Android instala o faster-whisper por meio do extra voice, que depende de wheels do ctranslate2 que não são publicados para Android.7
Autenticação e provedores
Na tag v2026.9.7, hermes_cli/models_catalog_static.py contém 39 entradas estáticas de CANONICAL_PROVIDERS na linha 311 (a decomposição de setembro de 2026 moveu a lista para fora de hermes_cli/models.py; as entradas em si não mudaram, incluindo tencent-tokenplan da v0.21.0) e amplia automaticamente essa lista a partir de plugins/model-providers/ (39 diretórios incluídos; nove deles — actual, alibaba-coding-plan, commandcode, deepinfra, meta-ai, nebius-token-factory, opencode-free, router, upstage — não têm entrada estática e são incorporados pela extensão automática porque usam o tipo de autenticação padrão api_key). As tabelas da página de provedores da documentação incluem 45 provedores de nuvem e assinatura, além de uma linha para endpoint personalizado, e apresentam separadamente os servidores locais e auto-hospedados (Ollama, vLLM, SGLang, llama.cpp, LM Studio, LiteLLM, ClawRouter e qualquer endpoint compatível com OpenAI).26 Na tag v2026.9.24, a lista estática ainda contém 39 entradas, mas plugins/model-providers/ contém 38 diretórios: o provedor sem chave opencode-free foi removido em 18 de setembro porque o nível gratuito do OpenCode agora rejeita tráfego anônimo originado fora do próprio cliente.53 Na tag v0.21.6, a lista estática ainda tem 39 linhas e o número de diretórios chega a 41: lmstudio e tencent-tokenhub, que já tinham linhas estáticas, ganham diretórios de plugin, enquanto solstice, que não tem uma, entra pela extensão automática.55 Além disso, há endpoints personalizados e três caminhos de autenticação distintos. Veja toda a superfície de autenticação, organizada por caminho para você encontrar aquele que corresponde ao que tem disponível.
Os três caminhos de autenticação
Todos os provedores do Hermes se encaixam em um destes três padrões de autenticação:
Caminho 1 — chave de API no .env. Coloque sua chave em ~/.hermes/.env, e o Hermes a lerá na inicialização. Usado por OpenRouter, AI Gateway, z.ai/GLM, Kimi/Moonshot, MiniMax (e MiniMax China), Alibaba Cloud/DashScope, Kilo Code, OpenCode Zen, OpenCode Go, DeepSeek, Hugging Face, Google/Gemini e pela maioria dos provedores de terceiros.2 Desde a v0.19.0, a chave não precisa mais ficar em um arquivo de texto simples: uma interface conectável SecretSource pode buscar segredos no Bitwarden ou 1Password (referências op://) durante o carregamento, permitindo vários cofres simultaneamente, precedência determinística, avisos de conflito e rastreabilidade por variável — o .env continua sendo a alternativa. (Isso é diferente do token de inicialização do Bitwarden Secrets Manager da v0.15.0, que consolidava as chaves dos provedores em um único token; SecretSource substitui o próprio arquivo de texto simples, e futuros provedores de cofres podem ser adicionados como plugins.)60
Caminho 2 — OAuth via hermes model ou hermes auth. Inicia um fluxo de código de dispositivo, abre um navegador e armazena as credenciais em ~/.hermes/auth.json (também pode importar credenciais existentes de ferramentas como Claude Code ou Codex CLI). Usado por Nous Portal, OpenAI Codex (conta do ChatGPT), GitHub Copilot e Anthropic (Claude Pro/Max).2
Caminho 3 — endpoint personalizado no config.yaml. Para qualquer API compatível com OpenAI — Ollama, vLLM, SGLang, llama.cpp, LM Studio, proxy LiteLLM, Together AI, Groq, Azure OpenAI ou seu próprio servidor auto-hospedado. Configure uma vez em hermes model → Custom endpoint; depois, a configuração será persistida no config.yaml.2
A matriz completa de provedores
Esta matriz abrange os provedores apresentados nas tabelas da página de documentação, com o fluxo exato de configuração de cada um; o seletor na tag lista mais provedores do que a documentação (veja a contagem acima), e qualquer opção compatível com OpenAI pode ser usada pela linha de endpoint personalizado.226
| Provedor | Caminho de autenticação | Configuração |
|---|---|---|
| Nous Portal | OAuth | hermes model (login com OAuth, baseado em assinatura) |
| OpenAI Codex | OAuth | hermes model (código de dispositivo do ChatGPT, usa modelos Codex) |
| GitHub Copilot | OAuth ou token | hermes model (código de dispositivo de OAuth), ou COPILOT_GITHUB_TOKEN / GH_TOKEN / gh auth token |
| GitHub Copilot ACP | Subprocesso local | hermes model (requer o CLI copilot no PATH + copilot login) |
| Anthropic | OAuth ou chave de API | hermes model (dá preferência às credenciais do Claude Code), ou ANTHROPIC_API_KEY, ou token de configuração ANTHROPIC_TOKEN |
| OpenRouter | Chave de API | OPENROUTER_API_KEY em ~/.hermes/.env |
| AI Gateway (Vercel) | Chave de API | AI_GATEWAY_API_KEY em ~/.hermes/.env (provedor: ai-gateway) |
| z.ai / GLM (ZhipuAI) | Chave de API | GLM_API_KEY em ~/.hermes/.env (provedor: zai) |
| Kimi / Moonshot | Chave de API | KIMI_API_KEY em ~/.hermes/.env (provedor: kimi-coding). A v0.19.0 adiciona o kimi-k3 aos catálogos (o kimi-k2.x foi descontinuado).60 |
| MiniMax (global) | Chave de API | MINIMAX_API_KEY em ~/.hermes/.env (provedor: minimax) |
| MiniMax China | Chave de API | MINIMAX_CN_API_KEY em ~/.hermes/.env (provedor: minimax-cn) |
| Alibaba Cloud (Qwen) | Chave de API | DASHSCOPE_API_KEY em ~/.hermes/.env (provedor: alibaba, aliases: dashscope, qwen) |
| Kilo Code | Chave de API | KILOCODE_API_KEY em ~/.hermes/.env (provedor: kilocode) |
| OpenCode Zen | Chave de API | OPENCODE_ZEN_API_KEY em ~/.hermes/.env (provedor: opencode-zen) |
| OpenCode Go | Chave de API | OPENCODE_GO_API_KEY em ~/.hermes/.env (provedor: opencode-go) |
| DeepSeek | Chave de API | DEEPSEEK_API_KEY em ~/.hermes/.env (provedor: deepseek) |
| Hugging Face | Chave de API | HF_TOKEN em ~/.hermes/.env (provedor: huggingface, alias: hf) |
| Google / Gemini | Chave de API | GOOGLE_API_KEY ou GEMINI_API_KEY em ~/.hermes/.env (provedor: gemini) |
| Fireworks AI | Chave de API | Provedor de primeira classe com estimativa de custos e colunas de preços em cache no seletor de modelos; promovido à segunda posição nos seletores de provedores. Novo na v0.19.0.60 |
| DeepInfra | Chave de API | Provedor de primeira classe com uma integração reforçada. Novo na v0.19.0.60 |
| Upstage Solar | Chave de API | Provedor de primeira classe. Novo na v0.19.0.60 |
| xAI (Grok) | Provedor nativo / OAuth do SuperGrok | Provedor de primeira classe com acesso direto à API e catálogo de modelos (v0.9.0+). A v0.14.0 adiciona o OAuth do SuperGrok e amplia a janela de contexto do grok-4.3 para 1M em contas qualificadas.21619 A v0.17.0 adiciona grok-composer-2.5-fast (modelo do Cursor via OAuth da xAI, contexto de 200k) e altera o padrão da xAI para grok-build-0.1.21 A v0.19.0 promove o grok-4.5 à disponibilidade geral no catálogo.60 |
| Vozes personalizadas da xAI | Chave de API | Provedor de TTS com clonagem de voz. Novo na v0.13.0; configure em tts: no config.yaml e forneça a chave da xAI no .env.18 |
| Xiaomi MiMo | Provedor nativo | Provedor de primeira classe com assistente de configuração e catálogo de modelos. MiMo v2 Pro gratuito no Nous Portal para tarefas auxiliares (v0.9.0+).1615 |
| Google AI Studio | Chave de API | GOOGLE_API_KEY ou GEMINI_API_KEY em ~/.hermes/.env. Acesso direto ao Gemini com comprimentos de contexto detectados automaticamente pelo registro models.dev (v0.8.0+).15 |
| OAuth do Qwen (Portal) | OAuth | hermes model → “Qwen OAuth (Portal)” (provedor: qwen-oauth; login PKCE pelo navegador que reutiliza um login local do CLI do Qwen). Provedor de OAuth com suporte a solicitações pelo portal (v0.8.0+). O caminho do DashScope com chave de API acima foi renomeado de Alibaba Cloud para Qwen Cloud na v0.14.0; as chaves de configuração existentes continuam funcionando.151926 |
| OpenCode Free (removido) | Sem chave | Removido em 18 de setembro de 2026 e ausente das tags v2026.9.21 e v2026.9.24. Uma configuração que ainda especifique opencode-free, free ou opencode_free recebe um erro informando a remoção; mude para opencode-zen (pagamento conforme o uso, OPENCODE_ZEN_API_KEY) ou opencode-go (assinatura, OPENCODE_GO_API_KEY) via hermes model. O provedor havia sido adicionado no ciclo da v0.20.5 como “o provedor opencode-free sem autenticação”.2353 |
| API da OpenAI (direta) | Chave de API | OPENAI_API_KEY em ~/.hermes/.env (provedor: openai-api, OPENAI_BASE_URL opcional)26 |
| Google Vertex AI | OAuth2 / ADC | hermes model → “Google Vertex AI” (provedor: vertex; OAuth2 via JSON de conta de serviço ou Application Default Credentials, com cobrança no seu projeto do GCP)26 |
| Azure AI Foundry | Endpoint + chave | hermes model → “Azure AI Foundry” (provedor: azure-foundry; usa seu endpoint e sua chave do Azure OpenAI / Foundry; o seletor o descreve como “endpoint no estilo da OpenAI ou no estilo do Anthropic”)26 |
| AWS Bedrock | Credenciais da AWS | hermes model → “AWS Bedrock” (provedor: bedrock; cadeia padrão de credenciais da AWS via boto3, IAM ou chave de API; Claude, Nova, Llama, DeepSeek)26 |
| NVIDIA NIM / Build | Chave de API | NVIDIA_API_KEY em ~/.hermes/.env (provedor: nvidia; Nemotron e outros modelos hospedados no NIM em build.nvidia.com, ou um endpoint NIM local por meio da substituição da URL base)26 |
| Ollama Cloud | OAuth ou chave de API | hermes model → “Ollama Cloud” (provedor: ollama-cloud; cole OLLAMA_API_KEY e escolha entre os modelos descobertos hospedados na nuvem)26 |
| StepFun Step Plan | Chave de API | STEPFUN_API_KEY em ~/.hermes/.env (provedor: stepfun; modelos de agente e programação via API do Step Plan)26 |
| MiniMax (OAuth) | OAuth | hermes model → “MiniMax (OAuth)” (provider: minimax-oauth; login via PKCE no navegador para o Coding Plan, na região global ou da China)26 |
| Meta AI | Chave de API | MODEL_API_KEY em ~/.hermes/.env (provider: meta-ai; Meta Model API, família Muse Spark)26 |
| NovitaAI | Chave de API | NOVITA_API_KEY em ~/.hermes/.env (provider: novita; mais de 200 modelos, Model API, Agent Sandbox, GPU Cloud)26 |
| Arcee AI | Chave de API | ARCEEAI_API_KEY em ~/.hermes/.env (provider: arcee; aliases: arcee-ai, arceeai; modelos Trinity)26 |
| GMI Cloud | Chave de API | GMI_API_KEY em ~/.hermes/.env (provider: gmi; aliases: gmi-cloud, gmicloud). Use o ID exato do modelo retornado pelo endpoint /v1/models da GMI26 |
| Actual Computer | Chave de API ou daemon local | ACTUAL_API_KEY em ~/.hermes/.env para o relay hospedado ou ACTUAL_BASE_URL=http://127.0.0.1:8080 para o daemon local sem chave no loopback (provider: actual; aliases: actual-computer, actualcomputer, aci)26 |
| Tencent TokenHub | Chave de API | TOKENHUB_API_KEY em ~/.hermes/.env (provider: tencent-tokenhub; aliases: tencent, tokenhub, tencentmaas; Hy3 Preview)26 |
| CommandCode | Chave de API | COMMANDCODE_API_KEY em ~/.hermes/.env (provider: commandcode, alias commandcode-chat; modelos Claude via commandcode-anthropic, alias commandcode-claude). Funciona com os planos GOAT/Pro/Max/Provider, mas não com o plano Go de US$ 1, que não oferece acesso à API. O plugin foi lançado durante o ciclo da v0.20.3.5826 |
| Alibaba Cloud (Coding Plan) | Chave de API | DASHSCOPE_API_KEY (provider: alibaba-coding-plan, alias alibaba_coding); um SKU de cobrança separado, em um endpoint diferente do provider alibaba do DashScope26 |
| Tencent TokenPlan | Chave de API | TOKENPLAN_API_KEY em ~/.hermes/.env (provider: tencent-tokenplan, aliases: tokenplan, tencent-lkeap; prévia do Hy4 pelo endpoint Messages da Anthropic em api.lkeap.cloud.tencent.com). Novo na v0.21.0; o seletor reúne TokenHub e TokenPlan em uma única linha de exibição chamada “Tencent Hy”3536 |
| Nebius Token Factory | Chave de API | NEBIUS_API_KEY em ~/.hermes/.env (provider: nebius-token-factory; aliases: nebius, nebius-tf, tokenfactory). Novo na v0.21.03536 |
| Ramp Router | Chave de API | RAMP_ROUTER_API_KEY em ~/.hermes/.env (provider: router; aliases: ramp-router, ramp, router.com). O gateway LLM da Ramp, nativo para OpenAI Responses, em api.router.com, com um catálogo ativo específico da conta — os IDs de modelo válidos são os retornados por /v1/models para a sua chave, portanto o seletor os busca em vez de codificá-los diretamente. Novo na v0.21.03536 |
| Alibaba Cloud (Token Plan) | Chave de API | ALIBABA_TOKEN_PLAN_API_KEY em ~/.hermes/.env (provider: alibaba-token-plan; endpoint da China continental: alibaba-token-plan-cn) — o nível de tokens fixos do Model Studio, um terceiro SKU da Alibaba ao lado de alibaba e alibaba-coding-plan36 |
| Endpoint personalizado | config.yaml | hermes model → “Custom endpoint” (salvo em config.yaml). A lista de serviços compatíveis com OpenAI na documentação inclui Together AI, Groq, Cerebras (https://api.cerebras.ai/v1), Mistral, Azure OpenAI, LocalAI e Jan26 |
Desde a v0.19.0, você também pode ocultar os providers que não usa: uma flag enabled: false por provider e uma chave de configuração excluded_providers os removem dos seletores de /model e da resolução integrada de providers.60 |
Anthropic: três métodos de autenticação
A Anthropic tem sua própria seção porque o Hermes oferece três caminhos distintos para acessar a Claude, e escolher o correto faz diferença. Segundo a documentação original:2
# Method 1: API key (pay-per-token)
export ANTHROPIC_API_KEY=***
hermes chat --provider anthropic --model claude-sonnet-4-6
# Method 2: OAuth through hermes model (preferred)
# Uses Claude Code's credential store when available
hermes model
# Method 3: Manual setup-token (fallback/legacy)
export ANTHROPIC_TOKEN=***
hermes chat --provider anthropic
# Auto-detect Claude Code credentials
hermes chat --provider anthropic # reads Claude Code files automatically
Quando você escolhe a Anthropic OAuth pelo hermes model, o Hermes dá preferência ao armazenamento de credenciais do próprio Claude Code, em vez de copiar o token para ~/.hermes/.env. Isso permite que as credenciais atualizáveis da Claude continuem sendo atualizadas.2 Se você já usa o Claude Code na mesma máquina, esse é o caminho mais simples.
Para fixar a Anthropic permanentemente no config.yaml:
model:
provider: "anthropic"
default: "claude-sonnet-4-6"
--provider claude e --provider claude-code também funcionam como formas abreviadas de --provider anthropic.2
GitHub Copilot: dois modos
O Copilot é compatível com dois modos: API direta do Copilot (recomendado) e Copilot ACP (que inicia a CLI local do Copilot como um subprocesso).2
# Direct Copilot API
hermes chat --provider copilot --model gpt-5.4
# Copilot ACP (requires the Copilot CLI in PATH + an existing copilot login)
hermes chat --provider copilot-acp --model copilot-acp
A autenticação é verificada nesta ordem, conforme a documentação original:2
1. Variável de ambiente COPILOT_GITHUB_TOKEN
2. Variável de ambiente GH_TOKEN
3. Variável de ambiente GITHUB_TOKEN
4. Fallback para gh auth token na CLI
5. Login por código de dispositivo OAuth via hermes model
O tipo de token faz diferença. A API do Copilot não aceita Personal Access Tokens clássicos (ghp_*). Os tipos aceitos são tokens OAuth (gho_*), PATs refinados (github_pat_* com a permissão Copilot Requests) e tokens do GitHub App (ghu_*). Se o seu gh auth token retornar um token ghp_*, use hermes model para fazer a autenticação via OAuth.2
Providers chineses de IA (suporte nativo)
O Hermes oferece suporte integrado a z.ai/GLM, Kimi/Moonshot, MiniMax (endpoints globais e da China) e Alibaba Cloud, com IDs de provider dedicados.2
# z.ai / ZhipuAI GLM
hermes chat --provider zai --model glm-5 # Requires: GLM_API_KEY
# Kimi / Moonshot AI
hermes chat --provider kimi-coding --model kimi-for-coding # Requires: KIMI_API_KEY
# MiniMax (global)
hermes chat --provider minimax --model MiniMax-M2.7 # Requires: MINIMAX_API_KEY
# MiniMax (China)
hermes chat --provider minimax-cn --model MiniMax-M2.7 # Requires: MINIMAX_CN_API_KEY
# Alibaba Cloud / DashScope (Qwen)
hermes chat --provider alibaba --model qwen3.5-plus # Requires: DASHSCOPE_API_KEY
As URLs-base podem ser substituídas pelas variáveis de ambiente GLM_BASE_URL, KIMI_BASE_URL, MINIMAX_BASE_URL, MINIMAX_CN_BASE_URL ou DASHSCOPE_BASE_URL.2
A Z.AI detecta o endpoint automaticamente. Ao usar o provider z.ai/GLM, o Hermes testa vários endpoints (globais, da China e variantes para programação) para encontrar um que aceite a sua chave de API. O endpoint funcional é armazenado em cache automaticamente — a maioria dos usuários não precisa definir GLM_BASE_URL.2
A xAI (Grok) ativa automaticamente o cache de prompts. Quando a URL-base contém x.ai, o Hermes envia o cabeçalho x-grok-conv-id em todas as solicitações para direcioná-las ao mesmo servidor durante uma sessão de conversa, reutilizando prompts de sistema e o histórico armazenados em cache.2 É automático; nenhuma configuração é necessária.
O comando hermes auth
hermes auth é o comando de gerenciamento de credenciais para pools e credenciais OAuth.6
hermes auth # Interactive wizard
hermes auth list # Show all credential pools
hermes auth list openrouter # Show one provider's pool
hermes auth add openrouter --api-key sk-or-v1-xxx
hermes auth add anthropic --type oauth
hermes auth remove openrouter 2 # Remove by index
hermes auth reset openrouter # Clear cooldowns
Os pools de credenciais permitem alternar entre várias chaves de API ou tokens OAuth do mesmo provider — isso é útil para distribuir os limites de uso entre várias chaves sem alterar o código.6 Os comandos legados hermes login / hermes logout foram removidos; use hermes auth no lugar deles.6
Endpoints personalizados e auto-hospedados
O Hermes funciona com qualquer endpoint de API compatível com OpenAI. Se um servidor implementar /v1/chat/completions, você poderá direcionar o Hermes para ele.2
Configuração interativa (recomendada):
hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Enter: API base URL, API key, Model name
Configuração manual do config.yaml:
model:
default: your-model-name
provider: custom
base_url: http://localhost:8000/v1
api_key: your-key-or-leave-empty-for-local
As duas abordagens salvam as configurações no config.yaml, que é a fonte única da verdade para o modelo principal, o provider e a URL-base.2 As variáveis de ambiente legadas OPENAI_BASE_URL e LLM_MODEL não são mais lidas para configurar o modelo principal — use hermes model ou edite o config.yaml diretamente.2 (OPENAI_BASE_URL + OPENAI_API_KEY ainda são aceitas como fallback para o caminho auxiliar de roteamento provider: "main", portanto não as exclua sem verificar se você as usa nessa função.)4
Como alternar entre endpoints personalizados durante uma sessão:
/model custom:qwen-2.5 # Custom endpoint with explicit model
/model custom # Auto-detect the model from the endpoint
/model custom:local:qwen-2.5 # Named custom provider "local"
/model custom:work:llama3 # Named custom provider "work"
/model openrouter:claude-sonnet-4 # Back to a cloud provider
/model custom (sem nome de modelo, apenas o comando) consulta o endpoint /v1/models da sua API e seleciona automaticamente o modelo caso apenas um esteja carregado — útil para servidores locais que executam um único modelo.2
Servidores LLM locais (modelos de configuração)
A documentação upstream contém guias completos de configuração para Ollama, vLLM, SGLang, llama.cpp e LM Studio. Veja os principais comandos que você realmente executará. Cada um foi projetado para criar um endpoint funcional ao qual o Hermes possa se conectar.2
Ollama — o caminho local mais fácil, sem nenhuma configuração:
ollama pull qwen2.5-coder:32b
OLLAMA_CONTEXT_LENGTH=32768 ollama serve # Raise from 4k default
hermes model # Custom endpoint → http://localhost:11434/v1 → qwen2.5-coder:32b
Armadilha crítica do Ollama: por padrão, o Ollama usa janelas de contexto muito pequenas (4.096 tokens com menos de 24 GB de VRAM). Você precisa aumentá-las usando OLLAMA_CONTEXT_LENGTH ou um Modelfile — a API compatível com OpenAI não aceita o tamanho do contexto enviado pelo cliente, portanto o Hermes não pode configurá-lo para você.2 Para uso com agentes, defina pelo menos 16k–32k.
vLLM — servidor de GPU de alto desempenho:
pip install vllm
vllm serve meta-llama/Llama-3.1-70B-Instruct \
--port 8000 \
--max-model-len 65536 \
--tensor-parallel-size 2 \
--enable-auto-tool-choice \
--tool-call-parser hermes
O uso de ferramentas exige --enable-auto-tool-choice e --tool-call-parser <name>. Parsers compatíveis: hermes (Qwen 2.5, Hermes 2/3), llama3_json, mistral, deepseek_v3, deepseek_v31, xlam, pythonic. Sem essas flags, as chamadas de ferramentas retornarão como texto simples.2
SGLang — servidor rápido com RadixAttention para reutilização do cache de KV:
pip install "sglang[all]"
python -m sglang.launch_server \
--model meta-llama/Llama-3.1-70B-Instruct \
--port 30000 \
--context-length 65536 \
--tp 2 \
--tool-call-parser qwen
Armadilha do SGLang: o valor padrão de max_tokens é 128. Defina --default-max-tokens no servidor ou configure model.max_tokens no config.yaml se as respostas estiverem sendo cortadas.2
llama.cpp / llama-server — CPU e Metal no Apple Silicon:
./build/bin/llama-server \
--jinja -fa \
-c 32768 \
-ngl 99 \
-m models/qwen2.5-coder-32b-instruct-Q4_K_M.gguf \
--port 8080 --host 0.0.0.0
--jinja é obrigatório para chamar ferramentas. Sem essa opção, o llama-server ignora completamente o parâmetro tools, e o modelo tenta chamar as ferramentas escrevendo JSON no texto da resposta — algo que o Hermes não consegue interpretar como chamadas de ferramentas reais.2
LM Studio — aplicativo para desktop com interface gráfica:
Inicie o servidor pelo aplicativo LM Studio (aba Developer → Start Server) ou pela CLI: lms server start (inicia na porta 1234) e lms load qwen2.5-coder --context-length 32768.2 Depois, aponte hermes model para http://localhost:1234/v1.
Armadilha crítica do LM Studio: o LM Studio lê o tamanho do contexto nos metadados do modelo, mas muitos modelos GGUF informam valores padrão de 2048 ou 4096. Sempre defina explicitamente o tamanho do contexto nas configurações do modelo no LM Studio — clique no ícone de engrenagem ao lado do seletor de modelos, defina “Context Length” como pelo menos 16384 (de preferência, 32768) e recarregue o modelo.2
Provedores personalizados nomeados
Se você trabalha com vários endpoints personalizados (por exemplo, um servidor de desenvolvimento local e um servidor de GPU remoto), defina-os como provedores personalizados nomeados no config.yaml:2
custom_providers:
- name: local
base_url: http://localhost:8080/v1
# api_key omitted — Hermes uses "no-key-required" for keyless local servers
- name: work
base_url: https://gpu-server.internal.corp/v1
api_key: corp-api-key
api_mode: chat_completions # optional, auto-detected from URL
- name: anthropic-proxy
base_url: https://proxy.example.com/anthropic
api_key: proxy-key
api_mode: anthropic_messages # for Anthropic-compatible proxies
Depois, alterne entre eles durante a sessão usando a sintaxe tripla:
/model custom:local:qwen-2.5
/model custom:work:llama3-70b
/model custom:anthropic-proxy:claude-sonnet-4
Você também pode selecionar provedores personalizados nomeados no menu interativo de hermes model.2
Arquitetura de provedores extensível (v0.13.0+)
A v0.13.0 inclui uma ABC ProviderProfile e uma pasta plugins/model-providers/ para que provedores de inferência de terceiros possam ser adicionados sem modificar o núcleo.18 Se um provedor oferecer um modo de API compatível com OpenAI, Anthropic ou Codex, você poderá implementar uma subclasse de ProviderProfile que declare o caminho de autenticação, a URL base, o catálogo de modelos e os cabeçalhos de cache; o Hermes a resolve pelo mesmo caminho runtime_provider.py usado pelos provedores integrados. Essa é a mudança arquitetônica por trás da expansão de provedores na v0.13.0: em vez de editar o código principal para adicionar um provedor, você distribui um plugin.
Proxy local compatível com OpenAI (v0.14.0+)
hermes proxy expõe um endpoint local compatível com OpenAI, baseado no provedor OAuth no qual o Hermes já está conectado — Claude Pro, ChatGPT Pro, SuperGrok ou outro provedor compatível configurado.19 Isso significa que ferramentas que esperam uma API no estilo da OpenAI, incluindo Codex CLI, Aider, Cline, Continue ou scripts personalizados, podem reutilizar a autenticação do Hermes vinculada à sua assinatura sem precisar de uma chave de API separada. Trate o proxy como infraestrutura de desenvolvimento local: vincule-o de forma intencional, não o exponha amplamente e considere os termos específicos de cada provedor.
Detecção do tamanho do contexto
Segundo a documentação upstream, duas configurações são confundidas com frequência:2
context_length— a janela de contexto total (orçamento combinado de tokens de entrada e saída, por exemplo, 1.000.000 para Claude Opus 4.7 ou 200.000 para Sonnet 4.6). O Hermes usa esse valor para decidir quando compactar o histórico.model.max_tokens— o limite de saída (número máximo de tokens que o modelo pode gerar em uma única resposta). Não tem relação com o tamanho do histórico.
Defina context_length quando a detecção automática identificar incorretamente o tamanho da janela:
model:
default: "qwen3.5:9b"
base_url: "http://localhost:8080/v1"
context_length: 131072 # tokens
O Hermes usa uma cadeia de resolução com várias fontes para detectar as janelas de contexto: substituição na configuração → configuração por modelo do provedor personalizado → cache persistente → endpoint /models → /v1/models da Anthropic → API do OpenRouter → Nous Portal → models.dev (registro mantido pela comunidade com mais de 3.800 modelos) → valores padrão de contingência (128K).2 O sistema considera o provedor, portanto o mesmo modelo pode ter limites de contexto diferentes dependendo de quem o disponibiliza (por exemplo, claude-opus-4.6 oferece 1M diretamente pela Anthropic, mas 128K no GitHub Copilot).2
Roteamento inteligente de modelos: rotação de provedores e fallback
O Hermes não prende você a um único modelo de um único provedor. O roteamento inteligente de modelos é o conjunto de mecanismos que decide qual provedor e modelo realmente processará uma determinada solicitação: pools de credenciais distribuem a carga entre as chaves, um fallback configurado assume quando o provedor principal falha, e os slots auxiliares abaixo encaminham tarefas secundárias para modelos mais baratos, independentemente do seu modelo principal.26 Configure os três em conjunto – eles fazem a diferença entre um agente que fica paralisado por um limite de uso e outro que continua trabalhando.
Pools de credenciais. Quando você tiver várias chaves de API para o mesmo provedor, configure uma estratégia de rotação usando hermes auth. É assim que você distribui os limites de uso entre várias chaves.6
Modelo de fallback. Configure um provider:model de reserva para o qual o Hermes alternará automaticamente quando o modelo principal falhar (limites de uso, erros do servidor ou falhas de autenticação):2
fallback_model:
provider: openrouter # required
model: anthropic/claude-sonnet-4 # required
# base_url: http://localhost:8000/v1 # optional, for custom endpoints
# api_key_env: MY_CUSTOM_KEY # optional, env var name
O fallback troca o modelo e o provedor durante a sessão sem perder a conversa. Ele é acionado no máximo uma vez por sessão.2 Provedores compatíveis com fallback: openrouter, nous, openai-codex, copilot, copilot-acp, anthropic, huggingface, zai, kimi-coding, minimax, minimax-cn, deepseek, ai-gateway, opencode-zen, opencode-go, kilocode, alibaba, custom.2
Modelos auxiliares
Hermes usa modelos “auxiliares” para tarefas secundárias: análise de imagens (visão), classificação para aprovação de comandos perigosos, compactação de contexto, geração de títulos de sessões, inserção de tags de áudio TTS, correspondência de skills, despacho de ferramentas do MCP, a família de especificação/decomposição do Kanban e, desde a v0.21.6, interações por voz (auxiliary.voice_chat, que executa uma interação falada em um modelo mais rápido, com reasoning_effort: none por padrão, e mantém o modelo principal quando a solicitação não se encaixa no limite de compactação do modelo de voz).43455 Por padrão (auxiliary.*.provider: "auto"), todas as tarefas auxiliares são executadas no seu modelo de chat principal – o mesmo provider/model escolhido em hermes model. A documentação deixa claro que isso substituiu a antiga detecção automática de providers baratos: “Versões anteriores direcionavam usuários de agregadores (OpenRouter, Nous Portal) para uma opção padrão barata no lado do provider. Isso era inesperado… agora, auto usa o modelo principal para todos, e as configurações específicas por tarefa em config.yaml continuam tendo prioridade.”34 Você não precisa configurar nada para começar; a contrapartida é o custo – em modelos de raciocínio caros, as tarefas auxiliares geram gastos significativos, então direcione cada tarefa para modelos rápidos e baratos quando isso for importante.
Duas antigas tarefas auxiliares deixaram de usar um LLM: a extração da web (“web_extract e snapshots do navegador truncam conteúdos longos de forma determinística e armazenam o texto completo para paginação com read_file – sem envolver um LLM”) e a pesquisa de sessões (a ferramenta de formato único retorna o conteúdo do banco de dados diretamente). Os antigos blocos auxiliary.web_extract.* e auxiliary.session_search.* foram removidos das configurações padrão – valores remanescentes em um config.yaml existente são “resíduos inofensivos e ignorados” – e o slot flush_memories também não aparece nas configurações padrão dessa versão.34
Você pode configurar qual modelo e provider cada tarefa auxiliar usa. Todos os slots auxiliares usam as mesmas opções: provider, model, base_url (além de api_key, timeout, extra_body e um reasoning_effort específico por tarefa).434
auxiliary:
vision: # vision_analyze + browser screenshots
provider: "auto" # "auto" (= main model), "openrouter", "nous", "main", etc.
model: "" # e.g. "openai/gpt-4o", "google/gemini-2.5-flash"
base_url: "" # Custom OpenAI-compatible endpoint
api_key: "" # Falls back to OPENAI_API_KEY
timeout: 120
download_timeout: 30
approval: # dangerous-command approval classifier
provider: "auto"
model: ""
timeout: 30
compression: # summarizer -- legacy compression.summary_* keys migrate here (config v17)
provider: "auto"
model: ""
base_url: ""
timeout: 120
title_generation: # auto-generated session titles after the first exchange
enabled: true # set false to disable auto-titles
provider: "auto"
model: ""
language: "" # empty follows the conversation; e.g. "English" pins titles to one language
tts_audio_tags: { provider: "auto", model: "" } # Gemini 3.1 TTS hidden audio-tag insertion
skills_hub: { provider: "auto", model: "" } # skill matching and search
mcp: { provider: "auto", model: "" } # MCP tool dispatch
triage_specifier: { provider: "auto", model: "" } # hermes kanban specify: rough one-liner into a concrete spec, promoted to todo
kanban_decomposer: { provider: "auto", model: "" } # hermes kanban decompose: triage task into a graph of child tasks routed to specialist profiles
profile_describer: { provider: "auto", model: "" } # hermes profile describe --auto: 1-2 sentence profile descriptions
Outros slots especializados seguem o mesmo formato – goal_judge (avalia se o contrato de /goal foi cumprido), curator (o fork de revisão do uso de skills), background_review (o fork de autoaperfeiçoamento após a interação), review (o subagente revisor de /review), moa_reference e moa_aggregator (Mixture-of-Agents), memory_query_rewrite e monitor – e você não precisa editar o YAML manualmente: execute hermes model e escolha “Configurar modelos auxiliares” para usar um seletor interativo por tarefa.34
A opção de provider "main" significa “usar o mesmo provider do meu agente principal” – válida somente em auxiliary:, compression: e nas entradas principais de fallback (fallback_providers: ou o antigo fallback_model:). Ela não é válida na configuração model.provider do nível superior. Se você usa um endpoint personalizado compatível com OpenAI como modelo principal, defina provider: custom na seção model:.4
Por que isso importa: como auto já usa seu modelo principal, a antiga armadilha de “configure o OpenRouter ou as tarefas auxiliares perderão qualidade silenciosamente” não existe mais – agora, a contrapartida é o custo. Se o seu modelo principal for um modelo de raciocínio caro, direcione as tarefas secundárias mais frequentes para algo barato e rápido:
auxiliary:
vision:
provider: "openrouter"
model: "google/gemini-2.5-flash"
compression:
provider: "openrouter"
model: "google/gemini-2.5-flash"
Sistema de configuração
O Hermes tem um sistema de configuração em camadas. Entender a ordem de precedência é essencial, pois as camadas superiores substituem as inferiores, e uma dessas camadas é um registro global de provedores que você não pode ver no config.yaml.
Estrutura dos arquivos de configuração
Segundo a documentação oficial, estes são os arquivos que compõem uma configuração do Hermes:4
~/.hermes/
├── config.yaml # All settings (model, terminal, TTS, compression, memory, toolsets, ...)
├── .env # Secrets (API keys, bot tokens, passwords)
├── auth.json # OAuth provider credentials (Nous Portal, Codex, Anthropic)
├── SOUL.md # Primary agent identity (slot #1 in system prompt)
├── memories/ # Persistent memory (MEMORY.md, USER.md)
├── skills/ # Bundled + agent-created + hub-installed skills
├── cron/ # Scheduled jobs
├── sessions/ # Gateway session state
└── logs/ # agent.log, gateway.log, errors.log (secrets auto-redacted)
config.yaml vs .env — quando ambos estão definidos, o config.yaml prevalece para configurações que não sejam secretas.4 A regra é:
- Segredos (chaves API, tokens de bot, senhas) → .env
- Todo o restante (modelo, backend do terminal, configurações de compactação, limites de memória, toolsets) → config.yaml
Os segredos podem ser referenciados no config.yaml usando interpolação no estilo do shell:4
auxiliary:
vision:
api_key: ${GOOGLE_API_KEY}
base_url: ${CUSTOM_VISION_URL}
delegation:
api_key: ${DELEGATION_KEY}
Gerenciamento da configuração
hermes config # View current configuration
hermes config show # Same as above
hermes config edit # Open config.yaml in your editor
hermes config set KEY VAL # Set a specific value
hermes config get KEY # Print a single value (v0.19.0+)
hermes config unset KEY # Remove a key so the default applies again (v0.19.0+)
hermes config path # Print the config file path
hermes config env-path # Print the .env file path
hermes config check # Check for missing options (after updates)
hermes config migrate # Interactively add missing options
Exemplos:4
hermes config set model anthropic/claude-opus-4
hermes config set terminal.backend docker
hermes config set OPENROUTER_API_KEY sk-or-... # Saves to .env
hermes config check e hermes config migrate são os comandos que você deve executar após cada hermes update — eles detectam novas opções de configuração que ainda não estão no seu arquivo.6
Precedência da configuração
O Hermes carrega a configuração de várias fontes. Quando várias fontes definem o mesmo valor, aquela com maior prioridade prevalece:4
- Argumentos de CLI —
hermes chat --model anthropic/claude-sonnet-4(substituição válida apenas para essa execução) - Variáveis de ambiente — aplicadas na inicialização do processo
config.yaml— o arquivo principal de configurações.env— somente segredos- Valores padrão integrados — aplicados quando nenhuma outra fonte define um valor
As flags de CLI sempre prevalecem naquela execução específica. O config.yaml é a fonte da verdade de longo prazo.
Localização (v0.13.0+)
A v0.13.0 adicionou 7 idiomas às mensagens de CLI e do gateway: chinês (simplificado), japonês, alemão, espanhol, francês, ucraniano e turco.18 A v0.14.0 traduz todos os comandos do gateway e o dashboard web, adiciona mais 8 idiomas e eleva o total para 16.19 Na tag v2026.8.31, a árvore locales/ contém 17 catálogos de mensagens — inglês e mais 16 traduções (af, ar, de, es, fr, ga, hu, it, ja, ko, pt, ru, tr, uk, zh-hant, zh).33 No momento, a documentação está disponível apenas em zh-Hans, além do idioma original. O idioma é definido pelas variáveis de ambiente LC_ALL / LANG ou por uma chave locale: explícita no config.yaml. O inglês continua sendo o padrão e a fonte da verdade para qualquer texto ainda não coberto por uma tradução. A v0.21.6 torna os idiomas plugáveis: display.language aceita qualquer id fornecido pelos 17 catálogos incluídos, pelo diretório de sobreposição do profile ou por um pacote de idioma de plugin instalado, e hermes config set display.language <id> executa primeiro a descoberta de plugins para aceitar um pacote que você acabou de instalar; os textos do núcleo e da TUI ficam em camadas separadas (locales/<lang>.yaml e locales/<lang>.tui.yaml, com 16 pacotes de TUI na tag).55
Profiles — várias instâncias isoladas do Hermes
Os profiles oferecem várias instâncias isoladas do Hermes, cada uma com sua própria configuração, sessões, skills, memória e PID do gateway. É assim que você executa um “Hermes de trabalho” e um “Hermes pessoal” lado a lado sem que um veja o estado do outro.6
hermes profile list
hermes profile create work --clone # Clone from current profile
hermes profile use work # Set sticky default
hermes profile alias work --name h-work # Create wrapper script
hermes profile export work -o work-backup.tar.gz
hermes profile import work-backup.tar.gz --name restored
hermes -p work chat -q "Hello from work profile" # One-off without switching
Cada profile recebe seu próprio HERMES_HOME (~/.hermes-<name>/ por padrão), permitindo que vários profiles executem o gateway simultaneamente sem interferir uns nos outros.63
A partir da v0.21.2, o limite de isolamento é aplicado com mais rigor: um conjunto de correções eliminou vazamentos reais entre profiles em configurações com gateway multiplexado, nas quais profiles secundários podiam herdar as listas de permissões do profile padrão, enviar credenciais ao host dele, fornecer os segredos do cofre dele a servidores MCP via stdio ou anexar arquivos .env/auth.json/state.db de outro profile à entrega por MEDIA: (#107609-#107630). Se você multiplexa profiles, a v0.21.2 é a tag em que a promessa de isolamento passa a ser efetivamente cumprida — consulte Novidades da v0.21.2.48
Comandos do CLI
Esta seção é a referência prática dos comandos de nível superior do CLI. Para consultar a referência oficial derivada do código, veja a Referência de comandos do CLI.6
Opções globais
hermes [global-options] <command> [subcommand/options]
| Opção | Descrição |
|---|---|
--version, -V |
Exibe a versão e encerra |
--profile <name>, -p <name> |
Seleciona qual profile do Hermes usar |
--resume <session>, -r <session> |
Retoma uma sessão pelo ID ou título |
--continue [name], -c [name] |
Retoma a sessão mais recente (ou encontra um título correspondente) |
--worktree, -w |
Inicia em um git worktree isolado |
--in <dir> |
Entra em DIR antes de iniciar ou retomar. Combinado com --resume latest ou -c, seleciona a sessão mais recente do workspace de DIR, e a sessão permanece em DIR (ignora a restauração do diretório de trabalho registrado)27 |
--ignore-user-config |
Ignora ~/.hermes/config.yaml e usa os padrões integrados (as credenciais em .env ainda são carregadas)27 |
--ignore-rules |
Ignora a injeção automática de AGENTS.md, SOUL.md, .cursorrules, memória e skills pré-carregadas27 |
--tui |
Inicia a TUI moderna em vez do REPL clássico27 |
--cli |
Força o REPL clássico do prompt_toolkit (substitui display.interface=tui)27 |
--dev |
Com --tui: executa as fontes do TypeScript via tsx (ignora o build de dist)27 |
--yolo |
Ignora as solicitações de aprovação para comandos perigosos |
--safe-mode |
Flag de solução de problemas — inicia o Hermes em um modo seguro mínimo para isolar problemas de inicialização (v0.19.0+)60 |
--pass-session-id |
Inclui o ID da sessão no prompt de sistema do agente |
Comandos de nível superior
| Comando | Finalidade |
|---|---|
hermes chat |
Chat interativo ou de execução única |
hermes model |
Escolhe interativamente o provider e o modelo padrão |
hermes gateway |
Executa ou gerencia o gateway de mensagens |
hermes setup |
Assistente de configuração interativo |
hermes auth |
Gerencia credenciais — adiciona, lista, remove, redefine e define a estratégia |
hermes status |
Exibe o status do agente, da autenticação e das plataformas; desde a v0.21.6, apresenta por padrão um resumo em uma única tela, com --full (ou --all) para todas as seções e --deep para as verificações lentas |
hermes cron |
Inspeciona e avança o agendador cron |
hermes webhook |
Gerencia assinaturas dinâmicas de webhook |
hermes doctor |
Diagnostica problemas de configuração e dependências |
hermes dump |
Gera um resumo da configuração que pode ser copiado e colado para suporte/depuração |
hermes logs |
Exibe, acompanha e filtra logs do agente/gateway e logs de erros |
hermes config |
Exibe, edita, migra e consulta a configuração |
hermes pairing |
Aprova ou revoga códigos de pareamento de mensagens |
hermes skills |
Explora, instala, publica e audita skills |
hermes honcho |
Gerencia a memória entre sessões do Honcho. Condicionado ao plugin: a documentação informa que “subcomandos específicos de plugins (por exemplo, hermes honcho) são registrados automaticamente quando o provider correspondente está ativo”; portanto, ele não aparece em hermes --help, a menos que Honcho seja o provider de memória ativo6 |
hermes memory |
Configura o provider externo de memória |
hermes acp |
Executa o Hermes como um servidor ACP (integração com editores) |
hermes mcp |
Gerencia a configuração do servidor MCP; executa o Hermes como servidor MCP |
hermes plugins |
Gerencia plugins |
hermes tools |
Configura as ferramentas habilitadas por plataforma |
hermes sessions |
Explora, exporta, remove e exclui sessões. A v0.19.0 expande hermes sessions export para os formatos Markdown, Quarto, HTML, somente prompt e trace do Hugging Face, com uma etapa opcional --redact para remover segredos e filtros por idade/workspace/plataforma60; hermes sessions recover reconstrói os dados canônicos das sessões a partir de um state.db danificado em um banco de dados NOVO e separado, de forma offline e não destrutiva, enquanto --inspect-only informa se as tabelas canônicas podem ser lidas sem criar um banco (o caminho de recuperação indicado na v0.21.2)48; hermes sessions set-journal-mode delete\|wal (na janela da v0.21.4) converte um armazenamento entre WAL e rollback journal offline — recusa a operação enquanto qualquer processo externo mantiver o banco de dados ou um arquivo auxiliar aberto, faz a troca sem esperar que esses processos sejam encerrados, verifica em seguida os bytes 18/19 do cabeçalho do SQLite e aceita --db para um armazenamento que não seja o padrão. Primeiro, encerre o gateway, o dashboard e todos os CLI; no Windows, onde não há verificação dos processos que mantêm os arquivos abertos, o comando se recusa a prosseguir até que você encerre por conta própria todos os processos do Hermes e passe --force. O despacho é deliberadamente offline para que o comando nunca abra o armazenamento que está convertendo, e hermes doctor agora direciona para ele51 |
hermes insights |
Exibe análises de tokens/custos/atividade |
hermes claw |
Ferramentas auxiliares para migração do OpenClaw |
hermes profile |
Gerencia profiles (várias instâncias isoladas) |
hermes completion |
Imprime scripts de conclusão do shell (bash/zsh) |
hermes whatsapp |
Configura e faz o pareamento da ponte do WhatsApp |
hermes --version (-V) |
Imprime informações da versão. É uma flag global, não um subcomando: na tag v2026.8.31, o conjunto _BUILTIN_SUBCOMMANDS não contém uma entrada version, e o caminho rápido de inicialização reconhece somente --version / -V27 |
hermes update |
Atualiza uma instalação feita a partir do código-fonte e reinstala as dependências; desde a v0.21.7, um checkout oficial acompanha a versão publicada mais recente (--set-channel main para acompanhar cada commit, --channel <name> para uma execução e --install-id para imprimir o ID desta instalação) |
hermes uninstall |
Remove o Hermes do sistema (--full também exclui configurações/dados) |
hermes backup |
Backup completo de configurações, sessões, skills e memória (v0.9.0+)16 |
hermes import |
Restaura a partir de um arquivo de backup — para migrar entre máquinas ou reverter uma instalação (v0.9.0+)16 |
hermes dashboard |
Inicia o dashboard web local para gerenciar o agente pelo navegador (v0.9.0+)16 |
hermes serve |
Executa o servidor API de backend sem interface — desde a v0.19.0, ele não compila nem monta mais a interface web60 |
hermes debug share |
Faz upload de um relatório completo de depuração para um pastebin, permitindo compartilhá-lo durante a solução de problemas (v0.9.0+)16 |
hermes approvals |
Ferramentas de solicitação de aprovação: suggest analisa o histórico de aprovações e gera propostas para command_allowlist; test simula a decisão de aprovação de um comando sem executá-lo (“nunca o executa”, com --backend e --json). As notas da versão v0.21.0 apresentam essa simulação como hermes approval-check, mas não existe nenhum subcomando approval-check na tag v2026.8.31 — a interface disponível é hermes approvals test2740 |
hermes bundles |
Cria, lista e gerencia pacotes de skills (aliases para várias skills sob um único comando de barra /<name>)27 |
hermes checkpoints |
Inspeciona, remove ou limpa ~/.hermes/checkpoints/, o armazenamento oculto por trás de /rollback; execute sem argumentos para obter uma visão geral do status27 |
hermes computer-use |
Gerencia o backend Computer Use (cua-driver) (macOS/Windows/Linux)27 |
hermes console |
Abre o console seguro de comandos do Hermes27 |
hermes curator |
Manutenção de skills em segundo plano (curator): status, executar, pausar e fixar27 |
hermes egress |
Gerencia o firewall de saída iron-proxy, que injeta credenciais em sandboxes de terminal remotas (desabilitado por padrão)27 |
hermes fallback |
Gerencia providers alternativos, testados quando o modelo principal falha27 |
hermes hooks |
Inspeciona e gerencia hooks de scripts do shell: list, test <event>, revoke e doctor (bit de execução, allowlist, divergência de mtime, validade do JSON e duração da execução sintética)27 |
hermes import-agent |
Importa uma configuração do Claude Code (~/.claude) ou do Codex CLI (~/.codex) para o Hermes27 |
hermes desktop (alias gui) |
Compila e inicia o aplicativo desktop nativo em Electron27 |
hermes kanban |
Quadro de colaboração entre vários profiles (tarefas, links e comentários), com quadros, um grafo de swarm (swarm: workers paralelos → verificador → sintetizador) e um dispatcher27 |
hermes login / hermes logout |
Obsoleto. Use hermes auth para gerenciar credenciais, hermes model para selecionar um provider ou hermes setup para a configuração completa27 |
hermes lsp |
Gerenciamento do Language Server Protocol: status, list, install <server>, install-all e restart (encerra os clientes LSP em execução; a próxima edição os inicia novamente)27 |
hermes migrate |
Migra configurações de modelos descontinuados ou configurações obsoletas27 |
hermes moa |
Configura slots de provider/modelo do Mixture of Agents (predefinições nomeadas que podem ser selecionadas no seletor de modelos)27 |
hermes journey (aliases learning, memory-graph) |
Linha do tempo das skills aprendidas e memórias ao longo do tempo27 |
hermes monitoring |
Inspeciona o monitoramento do gateway (exportação de integridade e diagnósticos); status exibe as configurações, o estado da exportação e a postura de remoção de dados confidenciais27 |
hermes pause / hermes resume |
Parada de emergência: pause interrompe os despachos de cron/kanban e novos turnos do gateway; resume retoma as operações27 |
hermes peer |
Mensagens diretas entre bots em diferentes máquinas: add, list e remove gerenciam gateways Hermes pares, enquanto dm envia uma mensagem a um agente em um deles e imprime a resposta27 |
hermes pets |
Explora, instala e seleciona mascotes animados do petdex27 |
hermes portal |
Configura o Nous Portal (login, seleção de modelo e Tool Gateway): login (padrão), info, open, tools; veja Nous Tool Gateway2728 |
hermes project |
Gerencia projetos (workspaces nomeados com várias pastas): cria, lista, exibe, adiciona/remove pastas, renomeia, define a pasta principal, usa, arquiva, restaura e vincula um quadro kanban27 |
hermes proxy |
Proxy local compatível com OpenAI para providers do OAuth: start, status, providers27 |
hermes prompt-size |
Exibe uma análise por bytes do prompt de sistema e dos schemas das ferramentas; funciona offline27 |
hermes send |
Envia uma mensagem a uma plataforma configurada sem loop do agente e sem LLM (scripts, tarefas cron, CI)27 |
hermes skin |
Lista, troca e ajusta skins (list, use, set)27 |
hermes slack |
Ferramentas auxiliares de integração com o Slack: manifest imprime ou grava um manifesto de aplicativo do Slack com todos os comandos do gateway registrados como comandos de barra nativos27 |
hermes sync |
Skill Sync entre dispositivos e com sua equipe: status, pull, push, now, enable, disable, device, propose27 |
hermes whatsapp-cloud |
Configura a integração do WhatsApp Business Cloud com o API (diferente da ponte hermes whatsapp do Baileys para contas pessoais)27 |
hermes worktree |
Audita e recupera git worktrees e branches mescladas acumuladas. list (aliases ls, audit; o padrão) classifica cada árvore por idade, tamanho, decisão e motivo; prune remove árvores seguras e exclui branches locais totalmente mescladas. Ambos aceitam --repo <root>; prune acrescenta --dry-run (exibe o plano sem alterar nada), --trees-only e --branches-only. Ele nunca exclui alterações rastreadas sem commit, commits exclusivos que não foram enviados ou árvores em uso; rascunhos que contêm apenas arquivos não rastreados são arquivados em ~/.hermes/archive/worktree-prune/ antes da remoção27 |
hermes secrets |
Gerencia fontes externas de segredos (Bitwarden, 1Password) para carregar chaves do API na inicialização do processo27 |
hermes security |
Auditoria da cadeia de suprimentos (OSV.dev) para o venv, os plugins e os servidores MCP (audit)27 |
hermes verify |
Detecta a receita de execução de um projeto e faz um smoke test27 |
hermes chat — O principal ponto de entrada
Executar hermes sem argumentos leva você ao chat interativo. hermes chat é a forma explícita com opções:6
hermes chat -q "Summarize the latest PRs" --oneshot # Answer and exit (without --oneshot, a TTY seeds an interactive session)
hermes chat --provider openrouter --model anthropic/claude-sonnet-4.6
hermes chat --toolsets web,terminal,skills # Enable specific toolsets
hermes chat --quiet -q "Return only JSON" # Programmatic mode
hermes chat --worktree -q "Review repo and open a PR"
Principais opções:
| Opção | Descrição |
|---|---|
-q, --query "..." |
Consulta a executar. Alterado na v0.21.0: em um TTY real, agora inicia uma sessão interativa (enviada literalmente como o primeiro turno); combinado com --oneshot ou -Q, ou em um ambiente que não seja TTY, responde e encerra — o comportamento anterior de execução única40 |
--query-file PATH |
Lê a única consulta de um arquivo em vez da linha de comando (- lê stdin). Nada é interpretado pelo shell, portanto aspas, $(...) e acentos graves chegam literalmente; mutuamente exclusivo com -q51 |
--oneshot |
Com -q/--query-file: responde à consulta e encerra (comportamento legado de consulta única). Implícito quando a entrada/saída padrão não é TTY e com -Q/--quiet40 |
-m, --model <model> |
Substitui o modelo nesta execução |
-t, --toolsets <csv> |
Habilita um conjunto de toolsets separados por vírgulas |
--provider <provider> |
Força um provider (veja a lista completa) |
-s, --skills <name> |
Pré-carrega uma ou mais skills para esta sessão |
-v, --verbose |
Saída detalhada |
-Q, --quiet |
Modo programático (sem banner, indicador de carregamento ou prévias) |
--format <fmt> |
Formato de saída do modo de consulta única (-q ou --query-file): text (padrão) imprime a resposta final como texto simples; stream-json emite eventos JSON delimitados por novas linhas (JSONL) — um evento system/init, deltas de text, eventos tool_use/tool_result e, por fim, um envelope result terminal com o código de saída, o texto final e as estatísticas de tokens. stream-json implica --quiet, exige -q ou --query-file (encerra com código 2 sem um deles) e não pode ser combinado com --tui; os diagnósticos e o ID da sessão permanecem em stderr, e a saída das ferramentas é limitada a 5.000 caracteres por evento (janela da v0.21.4)51 |
--resume <session> |
Retoma uma sessão diretamente pelo chat |
--worktree |
Cria um git worktree isolado |
--checkpoints |
Habilita checkpoints do sistema de arquivos antes de alterações destrutivas |
--yolo |
Ignora as solicitações de aprovação |
--source <tag> |
Tag de origem da sessão (padrão: cli; use tool para integrações) |
--max-turns <N> |
Número máximo de iterações de chamada de ferramentas por turno da conversa (padrão: 500 desde a v0.20.0, ou agent.max_turns na configuração)40 |
hermes setup — Assistente completo
Executa o assistente completo de configuração ou vai diretamente para uma seção:6
hermes setup # Full wizard
hermes setup model # Provider and model only
hermes setup terminal # Terminal backend only
hermes setup gateway # Messaging platforms only
hermes setup tools # Tool enable/disable per platform
hermes setup agent # Agent behavior only
hermes setup --non-interactive
hermes setup --reset # Reset config to defaults before setup
hermes logs — Consulta estruturada de logs
hermes logs é mais poderoso que tail -f nos arquivos de log porque permite filtrar simultaneamente por nível, ID da sessão e intervalo de tempo.6
hermes logs # Last 50 lines of agent.log
hermes logs -f # Follow in real time
hermes logs gateway -n 100 # Last 100 lines of gateway.log
hermes logs --level WARNING --since 1h # Warnings from the last hour
hermes logs --session abc123 # Filter by session ID substring
hermes logs errors --since 30m -f # Follow errors.log from 30m ago
hermes logs list # List all log files with sizes
Os arquivos de log ficam em ~/.hermes/logs/:6
- agent.log — toda a atividade do agente (chamadas do API, despacho de ferramentas, ciclo de vida das sessões, INFO+)
- errors.log — somente avisos e erros (um subconjunto filtrado de agent.log)
- gateway.log — atividade do gateway de mensagens (conexões com plataformas, despacho, webhooks)
A rotação é automática por meio do RotatingFileHandler do Python — procure por agent.log.1, agent.log.2 etc.6
hermes doctor — Diagnóstico
hermes doctor [--fix] é o primeiro comando que você deve executar quando algo não estiver funcionando. Ele verifica a validade da configuração, a presença de dependências, a disponibilidade das chaves do API, o status dos serviços e pode tentar fazer reparos automáticos com --fix.6
Para compartilhar os diagnósticos com outra pessoa, use hermes dump — ele produz um resumo compacto em texto simples, com as chaves do API ocultadas, pronto para colar em uma issue do GitHub ou em uma conversa no Discord.6
Comandos de barra
Os comandos de barra são executados dentro de uma sessão de chat ativa (CLI ou plataforma de mensagens). Eles são encaminhados por meio de um COMMAND_REGISTRY compartilhado em hermes_cli/commands.py, por isso a maioria dos comandos funciona da mesma forma em todas as interfaces.9
Controle da sessão
| Comando | Descrição |
|---|---|
/new (alias /reset) |
Inicia uma nova sessão |
/clear |
Limpa a tela e inicia uma nova sessão |
/history |
Mostra o histórico da conversa |
/save |
Salva a conversa atual |
/retry |
Tenta novamente a última mensagem |
/undo |
Remove a última troca entre usuário e assistente |
/title <name> |
Define um título para a sessão atual |
/compress |
Comprime manualmente o contexto da conversa |
/rollback [number] |
Lista ou restaura checkpoints do sistema de arquivos |
/stop |
Encerra todos os processos em segundo plano em execução |
/status |
Mostra informações sobre a sessão, o modelo, os tokens e o contexto — desde a série de versões v0.20.5, também exibe o modo de raciocínio, as aprovações pendentes e o uso do contexto4035 |
/queue <prompt> |
Coloca um prompt na fila para o próximo turno. Atenção: /q é usado tanto por /queue quanto por /quit; o último registro prevalece e, na prática, /q é interpretado como /quit — sempre digite /queue por extenso.9 |
/resume [name] |
Retoma uma sessão nomeada anteriormente |
/statusbar (alias /sb) |
Ativa ou desativa a barra de status de contexto/modelo |
/background <prompt> (alias /bg) |
Executa um prompt em uma sessão separada em segundo plano |
/btw <question> |
Faz uma pergunta paralela temporária (sem ferramentas e sem persistência) |
/plan [request] |
Carrega a skill plan incluída para criar um plano em vez de executar |
/branch [name] (alias /fork) |
Cria uma ramificação da sessão atual |
/goal <target> |
Mantém o agente focado em um objetivo para que ele continue trabalhando na tarefa entre os turnos. O padrão de loop do Ralph como recurso de primeira classe. Orçamento de turnos configurável. Novidade na v0.13.0.18 |
/subgoal <criterion> |
Adiciona critérios de sucesso a um /goal ativo sem reiniciar o loop. Novidade na v0.14.0.19 |
/handoff <target> |
Transfere a sessão ativa — mensagens, chamadas de ferramentas e contexto — para outro modelo, persona ou profile. Novidade na v0.14.0.19 |
/worktree [new [name]\|list\|prune [--dry-run]] |
Inspeciona, cria ou recupera worktrees isoladas do git sem sair da sessão. new cria uma worktree em .worktrees/ no repositório e move a sessão para ela; list mostra a lista; prune realiza a mesma recuperação assistida que hermes worktree prune e, segundo a documentação, “nunca altera a árvore em que a sessão está sendo executada”27 |
Configuração e modelo
| Comando | Descrição |
|---|---|
/config |
Mostra a configuração atual |
/model [model-name] |
Mostra ou altera o modelo atual |
/provider |
Mostra os provedores disponíveis e o provedor atual |
/personality [name] |
Define uma sobreposição de personalidade |
/verbose |
Alterna entre os modos de exibição do progresso das ferramentas |
/reasoning |
Gerencia o esforço e a exibição do raciocínio. A v0.19.0 adiciona os níveis de esforço max e ultra e torna /reasoning específico da sessão, além de permitir substituições de esforço por modelo e por slot de MoA na configuração60 |
/skin |
Mostra ou altera o skin/tema da interface |
/voice [on\|off\|tts\|status] |
Ativa ou desativa o modo de voz do CLI |
/yolo |
Ativa ou desativa o modo YOLO (ignora solicitações de aprovação). Desde a v0.19.0, regras de bloqueio definidas pelo usuário ainda impedem comandos correspondentes, mesmo no modo YOLO60 |
/fast |
Ativa ou desativa o Fast Mode — processamento prioritário para modelos da OpenAI e Anthropic (v0.9.0+)16 |
/debug |
Executa um diagnóstico rápido em todas as plataformas (v0.9.0+)16 |
/subscription |
Gerencia seu plano do Nous Portal pelo terminal — plano e limite restante, prévia do custo de upgrade/downgrade e aplicação com opção de desfazer (v0.19.0+)60 |
/topup |
Adiciona crédito ao seu saldo do Nous Portal sem sair do terminal (v0.19.0+)60 |
O comando /model é a principal ferramenta para trocar de provedor durante uma sessão:9
/model # Show current model and options
/model claude-sonnet-4 # Switch model (auto-detect provider)
/model zai:glm-5 # Switch provider:model
/model custom:qwen-2.5 # Use model on custom endpoint
/model custom # Auto-detect model from custom endpoint
/model custom:local:qwen-2.5 # Named custom provider
/model openrouter:anthropic/claude-sonnet-4 # Back to cloud
A v0.19.0 adiciona /model --once — uma substituição de modelo válida por um único turno que retorna automaticamente ao modelo anterior depois da resposta.60 Desde a série de versões v0.20.5, o seletor de /model também oferece busca aproximada: ele filtra os resultados enquanto você digita.2335
Ferramentas, skills e informações
| Comando | Descrição |
|---|---|
/tools [list\|disable\|enable] [name...] |
Gerencia as ferramentas da sessão atual |
/toolsets |
Lista os toolsets disponíveis |
/browser [connect\|disconnect\|status] |
Gerencia a conexão CDP com o Chrome local |
/skills |
Pesquisa, instala, inspeciona ou gerencia skills |
/cron |
Gerencia tarefas agendadas |
/reload-mcp |
Recarrega os servidores MCP definidos em config.yaml |
/plugins |
Lista os plugins instalados |
/help |
Mostra todos os comandos |
/usage |
Mostra o uso de tokens, o custo e a duração |
/insights |
Mostra análises de uso (últimos 30 dias) |
/platforms |
Mostra o status das plataformas de mensagens |
/profile |
Mostra o nome e o diretório inicial do profile ativo |
/palette |
Abre a paleta de comandos com busca aproximada (também Ctrl+P) — pesquise qualquer comando e skill por aproximação. Lançado na série de versões v0.20.54035 |
Comandos de barra dinâmicos para skills
Cada skill instalada é exposta automaticamente como um comando de barra:9
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/excalidraw # Just the skill name loads it and lets the agent ask what you need
Desde a v0.19.0, as chamadas de skills por comandos de barra podem ser empilhadas: /skill-a /skill-b do XYZ carrega as duas skills em ordem no mesmo turno, com preenchimento automático e texto fantasma para os nomes encadeados.60
Você também pode definir comandos rápidos no config.yaml, associando um nome curto a um prompt mais longo:9
quick_commands:
review: "Review my latest git diff and suggest improvements"
deploy: "Run the deployment script at scripts/deploy.sh and verify the output"
morning: "Check my calendar, unread emails, and summarize today's priorities"
Depois, digite /review, /deploy ou /morning no CLI.
Correspondência por prefixo
Os comandos aceitam correspondência por prefixo: digitar /h é interpretado como /help, enquanto /mod é interpretado como /model. Quando um prefixo é ambíguo, prevalece o primeiro registro na ordem do registry. Nomes completos de comandos e aliases registrados sempre têm prioridade sobre correspondências por prefixo.9
Comandos específicos para plataformas de mensagens
Alguns comandos funcionam somente em plataformas de mensagens (Telegram, Discord, Slack, WhatsApp, Signal, Email, Home Assistant):9
/status— mostra informações da sessão (não é mais exclusivo das plataformas de mensagens; consulte Controle da sessão)/sethome(alias/set-home) — marca o chat atual como a página inicial da plataforma/approve [session|always]— aprova um comando perigoso pendente/deny [reason]— rejeita um comando perigoso pendente. Desde a v0.19.0,/deny <reason>transmite o motivo da sua recusa ao agente para que ele ajuste a abordagem em vez de tentar novamente sem entender o problema60/update— atualiza o Hermes Agent para a versão mais recente/commands [page]— permite navegar por todos os comandos e skills (com paginação)
E alguns são exclusivos do CLI: /skin, /tools, /toolsets, /browser, /config, /cron, /skills, /platforms, /paste, /statusbar, /plugins.9
Ferramentas e toolsets
O Hermes vem com um amplo registro de ferramentas integradas que abrange pesquisa na web, automação de navegador, execução no terminal, edição de arquivos, memória, delegação, treinamento de RL, entrega de mensagens, integração com o Home Assistant e muito mais.10 As ferramentas são organizadas em toolsets lógicos que podem ser ativados ou desativados em cada plataforma.
Categorias de alto nível
| Categoria | Exemplos | Descrição |
|---|---|---|
| Web | web_search, web_extract |
Pesquisar na web e extrair o conteúdo de páginas |
| Terminal e arquivos | terminal, process, read_file, patch |
Executar comandos e manipular arquivos |
| Navegador | browser_navigate, browser_snapshot, browser_vision |
Automação interativa do navegador com texto e visão |
| Mídia | vision_analyze, video_analyze, video_generate, image_generate, text_to_speech |
Análise e geração multimodais. video_analyze prioriza o Gemini, com suporte extensível a provedores multimodais compatíveis (v0.13.0+). A v0.14.0 adiciona o video_generate unificado, com backends de provedores conectáveis, e envia os pixels brutos pelo vision_analyze quando o modelo ativo oferece recursos de visão.1819 |
| Orquestração de agentes | todo, clarify, execute_code, delegate_task |
Planejamento, esclarecimento, execução de código e delegação para subagentes |
| Uso do computador | computer_use |
Controle do desktop por meio do backend cua-driver; a v0.14.0 permite que isso funcione com provedores compatíveis com visão que não sejam Anthropic.19 |
| Memória e recuperação | memory, session_search |
Memória persistente + pesquisa em sessões |
| Automação e entrega | cronjob, send_message |
Tarefas agendadas e envio de mensagens |
| Integrações | ha_*, ferramentas do MCP, rl_* |
Home Assistant, MCP, treinamento de RL |
Os nomes comuns de toolsets incluem web, terminal, file, browser, vision, image_gen, moa, skills, tts, todo, memory, session_search, cronjob, code_execution, delegation, clarify, homeassistant e rl.10
Gerenciamento de ferramentas
hermes chat --toolsets "web,terminal" # Use specific toolsets
hermes tools # Interactive per-platform tool config
hermes tools --summary # Print enabled-tools summary
As ferramentas também podem ser ativadas ou desativadas durante uma sessão por meio de /tools disable <name> e /tools enable <name>, o que reinicia a sessão para que o novo conjunto de ferramentas entre em vigor.9
Backends de terminal
A ferramenta de terminal inclui sete backends de execução integrados — e, desde a v0.20.6, esse conjunto pode ser ampliado por plugins, assim como o seletor de provedores (veja abaixo):1024
| Backend | Caso de uso |
|---|---|
local |
Executar na sua máquina (padrão) — desenvolvimento e tarefas confiáveis |
docker |
Contêineres isolados — segurança e reprodutibilidade |
ssh |
Servidor remoto — sandbox, mantendo o agente longe do próprio código |
singularity |
Contêineres de HPC — computação em cluster sem root |
modal |
Execução em nuvem serverless |
daytona |
Workspace de sandbox na nuvem — ambiente remoto persistente de desenvolvimento |
vercel_sandbox |
MicroVM na nuvem do Vercel Sandbox — execução em nuvem com persistência do sistema de arquivos baseada em snapshots. Instale hermes-agent[vercel], defina terminal.vercel_runtime (node24, node22 ou python3.13) e autentique-se com VERCEL_TOKEN, VERCEL_PROJECT_ID e VERCEL_TEAM_ID; por padrão, a raiz do workspace remoto é /vercel/sandbox24 |
Alterne entre os backends com hermes config set terminal.backend <name> ou no config.yaml:
terminal:
backend: docker # or: local, ssh, singularity, modal, daytona, vercel_sandbox
cwd: "." # Working directory
timeout: 180 # Command timeout in seconds
Backends de plugins (v0.20.6+). Fornecedores externos de sandboxes não precisam mais fazer parte do repositório principal: um plugin registra um TerminalEnvironmentProvider no momento do carregamento por meio de PluginContext.register_terminal_environment_provider, e o nome registrado passa a ser selecionável em terminal.backend exatamente como um backend integrado. Os nomes dos backends integrados são reservados — o registro rejeita provedores cujo nome entre em conflito com um backend presente no repositório — e um backend registrado participa automaticamente de todas as interfaces principais (o seletor de backends do hermes setup, o status das verificações no dashboard, as verificações do hermes doctor, o tratamento de caminhos/cwd em contêineres e a remoção de segredos), pois o núcleo consulta o registro em cada ponto de classificação em vez de usar uma lista fixa de nomes.32
Backend SSH (recomendado para segurança — o agente não consegue modificar o próprio código):10
terminal:
backend: ssh
# In ~/.hermes/.env
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa
Backend Docker:
terminal:
backend: docker
docker_image: python:3.11-slim
Recursos do contêiner (aplicável a docker, singularity, modal e daytona):10
terminal:
container_cpu: 1
container_memory: 5120 # MB (default 5GB)
container_disk: 51200 # MB (default 50GB)
container_persistent: true # Persist filesystem across sessions
Com container_persistent: true, os pacotes instalados, arquivos e configurações persistem entre as sessões.10
Todos os backends de contêiner são executados com reforço de segurança: sistema de arquivos raiz somente leitura (Docker), todas as capacidades do Linux removidas, exceto DAC_OVERRIDE, CHOWN e FOWNER, sem escalonamento de privilégios, limites de PID (256 processos), isolamento completo de namespaces e workspace persistente por meio de volumes.10
Processos em segundo plano
A ferramenta de terminal oferece suporte à execução em segundo plano com gerenciamento explícito de processos:10
terminal(command="pytest -v tests/", background=true)
# Returns: {"session_id": "proc_abc123", "pid": 12345}
process(action="list") # Show all running processes
process(action="poll", session_id="proc_abc123") # Check status
process(action="wait", session_id="proc_abc123") # Block until done
process(action="log", session_id="proc_abc123") # Full output
process(action="kill", session_id="proc_abc123") # Terminate
process(action="write", session_id="proc_abc123", data="y") # Send input
O modo PTY (pty=true) permite usar ferramentas CLI interativas, como Codex e Claude Code.10
Sudo
Se um comando precisar de sudo, o Hermes solicitará sua senha (que ficará em cache durante a sessão). Você também pode definir SUDO_PASSWORD em ~/.hermes/.env.10
Kanban multiagente (v0.13.0+)
A v0.13.0 transforma a colaboração multiagente em um recurso fundamental: um quadro Kanban durável que acompanha tarefas, status e identidade dos workers entre agentes e reinicializações.18 É o quadro que faz com que um swarm de workers do Hermes realmente conclua o trabalho em vez de travar em transferências interrompidas.
| Mecanismo | O que faz |
|---|---|
| Heartbeats | Cada worker envia pulsos enquanto é responsável por uma tarefa. A ausência de um heartbeat marca o worker como suspeito e libera a tarefa para ser retomada. |
| Retomada | Outro worker pode assumir uma tarefa abandonada, com todo o estado da tarefa e o resultado parcial anterior. |
| Detecção de zumbis | Workers que encerram sem marcar uma tarefa como concluída são automaticamente impedidos de assumir novos trabalhos, evitando que o swarm acumule identidades inativas. |
| Gate contra alucinações | Se o resultado não passar pelo gate, a tarefa volta ao quadro com o motivo registrado, em vez de ser marcada como concluída. |
max_retries por tarefa |
Permite substituir o limite padrão de tentativas em uma tarefa que você sabe ser frágil. |
| Quadros para vários projetos | Uma única pasta home do Hermes pode hospedar vários quadros independentes. |
O quadro Kanban combina naturalmente com /goal (loop Ralph com objetivo bloqueado) no lado do objetivo e com a ferramenta delegate_task existente para a semântica de spawn. O resultado é um padrão de swarm no qual todos os agentes compartilham uma única fonte confiável sobre o que fazer em seguida, quem está fazendo e o que está travado.
O que é um swarm do Hermes?
Um swarm é formado por vários workers do Hermes executados em paralelo sobre um único quadro Kanban compartilhado. Não é um subsistema separado que você precisa ativar — é o que o quadro torna possível. O quadro oferece algo que os agentes paralelos não conseguem fornecer sozinhos: uma resposta única e confiável para qual tarefa devo assumir agora e alguém já está trabalhando nela?
A v0.15.0 elevou esse padrão a uma topologia oficialmente compatível, adicionando a topologia de swarm para a coordenação de workers paralelos, a decomposição automática de um objetivo de alto nível em subtarefas, as substituições de modelo por tarefa, as tarefas agendadas e o gerenciamento de worktrees, para que workers paralelos não entrem em conflito no mesmo checkout.63
| Problema em uma configuração multiagente ingênua | O que o quadro faz em vez disso |
|---|---|
| Dois workers assumem a mesma tarefa | A propriedade da tarefa é reivindicada, com a identidade do worker registrada |
| Um worker falha no meio de uma tarefa e o trabalho desaparece | O heartbeat expira, e a tarefa é retomada com o resultado parcial anterior |
| Um worker que falhou continua “retendo” tarefas para sempre | A detecção de zumbis o impede de assumir novos trabalhos |
| Um modelo caro para cada subtarefa | Substituições de modelo por tarefa — modelos baratos para subtarefas mecânicas |
| Workers paralelos editam os mesmos arquivos | O gerenciamento de worktrees isola o checkout de cada worker |
Na prática, funciona assim: dê um objetivo ao swarm, deixe a decomposição automática dividi-lo em tarefas no quadro
e permita que os workers assumam, executem e retornem os resultados. O limite de tentativas é definido por tarefa (max_retries),
portanto, uma única subtarefa frágil não consome toda a tolerância da execução. Como o quadro é
durável, um swarm sobrevive a reinicializações — os workers se reconectam e retomam o trabalho a partir do mesmo estado.
Um swarm só é tão bom quanto a sua decomposição. O quadro coordena os workers, mas não transforma em bom um objetivo mal dividido. Tarefas que compartilham estado oculto ainda entrarão em conflito, com worktrees ou sem elas.
Sistema de skills
Skills são documentos de conhecimento sob demanda que o agente pode carregar quando necessário. Eles seguem um padrão de divulgação progressiva para minimizar o uso de tokens e são compatíveis com o padrão aberto agentskills.io.11
Todos os skills ficam em ~/.hermes/skills/ — o diretório principal e a fonte da verdade. Em uma instalação nova, os skills incluídos são copiados do repositório. Skills instalados pelo hub e criados pelo agente também ficam nesse diretório.11
Divulgação progressiva
Level 0: skills_list() → [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) → Full content + metadata (varies)
Level 2: skill_view(name, path) → Specific reference file (varies)
O agente só carrega o conteúdo completo do skill quando realmente precisa dele.11
Formato do SKILL.md
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux] # Optional — restrict to OS platforms
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # Conditional activation
requires_toolsets: [terminal] # Conditional activation
config: # Config.yaml settings
- key: my.setting
description: "What this controls"
default: "value"
prompt: "Prompt for setup"
---
# Skill Title
## When to Use
Trigger conditions for this skill.
## Procedure
1. Step one
2. Step two
## Pitfalls
- Known failure modes and fixes
## Verification
How to confirm it worked.
Ativação condicional
Os skills podem ser exibidos ou ocultados dependendo das ferramentas disponíveis. Isso é especialmente útil para skills de fallback — alternativas gratuitas ou locais que só devem aparecer quando uma ferramenta premium não estiver disponível:11
| Campo | Comportamento |
|---|---|
fallback_for_toolsets |
O skill fica oculto quando os toolsets listados estão disponíveis |
fallback_for_tools |
Igual ao anterior, mas verifica ferramentas individuais |
requires_toolsets |
O skill fica oculto quando os toolsets listados não estão disponíveis |
requires_tools |
Igual ao anterior, mas verifica ferramentas individuais |
Exemplo: o skill integrado duckduckgo-search usa fallback_for_toolsets: [web]. Quando você define FIRECRAWL_API_KEY, o toolset web fica disponível e o agente usa web_search — o skill do DuckDuckGo permanece oculto. Sem a chave API, o skill do DuckDuckGo aparece automaticamente como fallback.11
Skills gerenciados pelo agente
O agente pode criar, atualizar e excluir seus próprios skills por meio da ferramenta skill_manage. Essa é a memória procedural do agente — quando ele descobre um fluxo de trabalho não trivial, salva a abordagem como um skill para reutilizá-la no futuro.11
Quando o agente cria skills:11 - Depois de concluir com sucesso uma tarefa complexa (mais de 5 chamadas de ferramentas) - Quando encontrou erros ou becos sem saída e descobriu o caminho que funciona - Quando o usuário corrigiu sua abordagem - Quando descobriu um fluxo de trabalho não trivial
Ações:11
| Ação | Uso |
|---|---|
create |
Criar um skill do zero |
patch |
Fazer correções pontuais (opção preferencial — usa menos tokens) |
edit |
Fazer grandes reformulações estruturais |
delete |
Remover completamente um skill |
write_file |
Adicionar ou atualizar arquivos de suporte |
remove_file |
Remover um arquivo de suporte |
Hub de skills
Navegue, pesquise, instale e gerencie skills de registros online:611
hermes skills browse # Browse all hub skills
hermes skills browse --source official # Browse official optional skills
hermes skills search kubernetes # Search all sources
hermes skills search react --source skills-sh # Search skills.sh directory
hermes skills inspect openai/skills/k8s # Preview before installing
hermes skills install openai/skills/k8s # Install with security scan
hermes skills install skills-sh/anthropics/skills/pdf --force
hermes skills check # Check for upstream updates
hermes skills update # Reinstall changed hub skills
hermes skills audit # Re-scan installed hub skills
hermes skills uninstall k8s
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills tap add myorg/skills-repo # Add custom GitHub source
Fontes integradas ao hub:11
| Fonte | Exemplo | Observações |
|---|---|---|
official |
official/security/1password |
Skills opcionais distribuídos com o Hermes (confiança integrada) |
skills-sh |
skills-sh/vercel-labs/agent-skills/vercel-react-best-practices |
Diretório público de skills da Vercel |
well-known |
well-known:https://mintlify.com/docs/.well-known/skills/mintlify |
Descoberta baseada em URL para sites que publicam /.well-known/skills/index.json |
github |
openai/skills/k8s |
Instalações diretas de repositório/caminho do GitHub |
clawhub |
— | Marketplace de skills de terceiros |
lobehub |
— | Conversão do catálogo de agentes do LobeHub |
browse-sh |
— | Fonte de skills do Browserbase |
Taps padrão do GitHub (podem ser explorados sem configuração): openai/skills, anthropics/skills, huggingface/skills, NVIDIA/skills, garrytan/gstack. A fonte claude-marketplace foi removida na v0.20.0; browse-sh a substituiu na lista de fontes.1159
Verificação de segurança
Todos os skills instalados pelo hub passam por um scanner de segurança que verifica exfiltração de dados, injeção de prompt, comandos destrutivos, sinais de comprometimento da cadeia de suprimentos e outras ameaças.11
Níveis de confiança:11
| Nível | Fonte | Política |
|---|---|---|
builtin |
Distribuído com o Hermes | Sempre confiável |
official |
optional-skills/ no repositório |
Confiança integrada, sem aviso de terceiros |
trusted |
Registros confiáveis (openai/skills, anthropics/skills) |
Política mais permissiva |
community |
Todas as demais fontes | Detecções não perigosas podem ser ignoradas com --force; veredictos dangerous continuam bloqueados |
--force pode ignorar bloqueios de política não perigosos para skills da comunidade. Ele não ignora um veredicto dangerous da verificação.11
Diretórios externos de skills
Você pode indicar ao Hermes diretórios adicionais de skills que serão verificados junto com o diretório local:11
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills
Os caminhos aceitam a expansão de ~ e a substituição de variáveis de ambiente ${VAR}. Diretórios externos são somente leitura — quando o agente cria ou edita um skill, ele sempre grava em ~/.hermes/skills/. O diretório local tem precedência quando existe um skill com o mesmo nome nos dois lugares.11
Skills fixados: skills.auto_load (janela da v0.21.4)
Os nomes de skills listados em skills.auto_load no config.yaml são fixados e carregados por completo em cada nova sessão – CLI, TUI, gateway, cron e API:51
skills:
auto_load:
- team-conventions
- deploy-checklist
A lista é resolvida uma única vez, quando o prompt do agente é criado pela primeira vez; um nome ausente ou desativado gera um aviso e é ignorado, sem causar falha na sessão, e HERMES_IGNORE_RULES (o mecanismo por trás de --ignore-rules) suprime a lista como ocorre com o restante do contexto injetado automaticamente. Esse é o complemento de instruções permanentes para -s/--skills, que pré-carrega skills apenas para uma sessão.51
Memória persistente
O Hermes tem uma memória limitada e selecionada que persiste entre sessões. Dois arquivos compõem a memória do agente, ambos armazenados em ~/.hermes/memories/:12
| Arquivo | Finalidade | Limite de caracteres |
|---|---|---|
MEMORY.md |
Anotações pessoais do agente — informações sobre o ambiente, convenções e aprendizados | 2.200 caracteres (~800 tokens) |
USER.md |
Perfil do usuário — preferências, estilo de comunicação e expectativas | 1.375 caracteres (~500 tokens) |
Ambos são inseridos no prompt do sistema como um snapshot imutável no início da sessão. O agente gerencia a própria memória por meio da ferramenta memory — add, replace ou remove.12
Padrão de snapshot imutável: a inserção no prompt do sistema é capturada uma única vez no início da sessão e nunca muda durante a sessão. Isso é intencional — preserva o cache de prefixo do LLM para melhorar o desempenho. As alterações feitas durante uma sessão são persistidas imediatamente no disco, mas só aparecem no prompt do sistema na sessão seguinte.12
O que salvar
Salve estas informações (o agente faz isso de forma proativa):12
- Preferências do usuário: “Prefiro TypeScript a JavaScript” → user
- Informações sobre o ambiente: “Este servidor executa Debian 12 com PostgreSQL 16” → memory
- Correções: “Não use sudo nos comandos do Docker, o usuário está no grupo docker” → memory
- Convenções: “O projeto usa tabulações, linhas com até 120 caracteres e docstrings no estilo Google” → memory
- Trabalho concluído: “O banco de dados foi migrado do MySQL para o PostgreSQL em 15 de janeiro de 2026” → memory
Não salve estas informações:12 - Informações triviais ou óbvias - Fatos que podem ser redescobertos facilmente - Despejos de dados brutos (grandes demais para a memória) - Informações temporárias específicas da sessão - Informações que já estão nos arquivos de contexto
Busca em sessões
Além de MEMORY.md e USER.md, o agente pode pesquisar conversas anteriores usando a ferramenta session_search. Todas as sessões de CLI e de mensagens são armazenadas no SQLite (~/.hermes/state.db) com busca de texto completo FTS5. Desde a reformulação da v0.15.0, a ferramenta não envolve nenhum LLM – ela retorna diretamente o conteúdo armazenado das conversas (nas palavras da fonte: a “ferramenta de formato único retorna diretamente o conteúdo do banco de dados”), o que a tornou 4.500 vezes mais rápida e eliminou seu custo de API.126334
| Recurso | Memória persistente | Busca em sessões |
|---|---|---|
| Capacidade | ~1.300 tokens no total | Ilimitada (todas as sessões) |
| Velocidade | Instantânea (no prompt do sistema) | Uma consulta FTS – sem chamada ao LLM desde a v0.15.0 |
| Caso de uso | Informações essenciais sempre disponíveis | Encontrar conversas anteriores específicas |
| Gerenciamento | Selecionada manualmente pelo agente | Automático — todas as sessões são armazenadas |
| Custo de tokens | Fixo por sessão (~1.300 tokens) | Sob demanda |
Duas adições do período da v0.21.4, ambas verificadas na tag v2026.9.21. Primeiro, limites de tempo: o formato de descoberta aceita after (um limite inferior inclusivo para o horário de início da sessão) e before (um limite superior exclusivo), cada um definido como uma data/data e hora ISO – um valor contendo apenas a data significa meia-noite UTC daquele dia – ou uma duração relativa (7d, 24h, 2w), destinados apenas a consultas que realmente mencionem um intervalo de tempo; sort continua sendo uma tendência de ranqueamento, não um limite. Segundo, uma nova tentativa de recuperação quando não há resultados: o AND implícito do FTS5 entre os termos significa que uma consulta parafraseada com várias palavras pode não encontrar uma frase armazenada que não contenha sequer uma dessas palavras. Portanto, quando a consulta exata e todas as alternativas por substring não retornam resultados, a busca consulta novamente o índice procurando QUALQUER termo, com a ordem de classificação priorizando as linhas que abrangem mais termos. Os resultados mantêm a semântica de correspondência exata (a nova tentativa só ocorre quando não há nenhum resultado), enquanto consultas com OR/NOT explícito, com um único termo ou encaminhadas para CJK permanecem inalteradas.51
Provedores externos de memória
Para uma memória persistente mais profunda, além de MEMORY.md e USER.md, o Hermes inclui dois plugins externos de memória na v0.21.7: RetainDB e ByteRover. Outros seis são instalados pelo catálogo de plugins: Holographic, que deixou a árvore principal na v0.21.7; Honcho, OpenViking, Mem0 e Supermemory, que saíram na v0.21.6; e Hindsight, que saiu na v0.21.5. Os seis são entradas da categoria comunitária mantidas por seus respectivos fornecedores.125557
O Hindsight fez parte da árvore principal até a v0.21.4 e foi transferido para o catálogo na v0.21.5, sob manutenção da Vectorize; Honcho, Mem0, OpenViking e Supermemory seguiram o mesmo caminho na v0.21.6, e Holographic na v0.21.7. As configurações existentes migram sozinhas: se memory.provider especificar um deles, hermes update instalará o plugin do catálogo em cada diretório inicial de profile que o especificar, e a primeira inicialização do agente fará a instalação caso ele ainda esteja ausente. Com security.allow_lazy_installs: false, a inicialização do agente apenas registra uma mensagem, então execute hermes plugins install <name> por conta própria. O plugin é instalado em ~/.hermes/plugins/<name>/ e adicionado a plugins.enabled; memory.provider, memory.hindsight.*, HINDSIGHT_API_KEY e seus dados de memória permanecem como estavam. Verifique com hermes memory status e hermes plugins list. O extra do pip hermes-agent[hindsight] foi removido.53
Os provedores externos funcionam em conjunto com a memória integrada (nunca a substituem) e adicionam recursos como grafos de conhecimento, busca semântica, extração automática de fatos e modelagem do usuário entre sessões:612
hermes memory setup # Pick a provider and configure it
hermes memory status # Check what's active
hermes memory off # Disable external provider (built-in only)
Somente um provedor externo pode estar ativo por vez. A memória integrada está sempre ativa.6
Retomada automática de sessão (v0.13.0+)
A v0.13.0 permite sobreviver a interrupções durante a execução do agente. O gateway retoma automaticamente as sessões interrompidas após uma reinicialização; as reinicializações com /update preservam o estado da sessão durante a atualização; recarregamentos de arquivos-fonte durante o desenvolvimento mantêm a sessão ativa, em vez de forçar uma nova.18 Na prática, trabalhos de longa duração no gateway e tarefas acionadas por cron não redefinem mais sua janela de contexto quando o processo é reiniciado.
Checkpoints v2 (v0.13.0+)
A persistência de estado foi reescrita na v0.13.0 como uma arquitetura de armazenamento único, com limpeza real, proteções de disco e nenhum repositório-sombra órfão.18 O sistema anterior de checkpoint acumulava estado no disco em profiles executados por longos períodos; o armazenamento v2 impõe um limite rígido ao armazenamento local de checkpoints e elimina a duplicação de registros responsável por esse crescimento. Nenhuma alteração de configuração é necessária para o usuário; a próxima gravação de checkpoint usará o caminho v2.
Personalidade e SOUL.md
SOUL.md é a identidade principal de uma instância do Hermes. Ele ocupa o espaço nº 1 no prompt do sistema, substituindo a identidade padrão definida diretamente no código.13
O Hermes cria automaticamente um SOUL.md padrão em ~/.hermes/SOUL.md (ou $HERMES_HOME/SOUL.md para profiles personalizados). Os arquivos existentes do usuário nunca são sobrescritos. O Hermes carrega o SOUL.md apenas do HERMES_HOME — ele não procura no diretório de trabalho atual. Isso torna a personalidade previsível entre diferentes projetos.13
O que incluir no SOUL.md
Use-o para orientações duradouras sobre voz e personalidade:13 - tom - estilo de comunicação - nível de objetividade - estilo padrão de interação - o que evitar no estilo - como o Hermes deve lidar com incertezas, discordâncias e ambiguidades
Use-o com menos frequência para:13 - instruções específicas de um único projeto - caminhos de arquivos - convenções do repositório - detalhes temporários do fluxo de trabalho
Esses itens pertencem ao AGENTS.md, não ao SOUL.md.
SOUL.md versus AGENTS.md
Esta é a distinção mais importante no gerenciamento da identidade do Hermes:13
SOUL.md — identidade, tom, estilo, padrões de comunicação e comportamento ligado à personalidade.
AGENTS.md — arquitetura do projeto, convenções de código, preferências de ferramentas, fluxos de trabalho específicos do repositório, comandos, portas, caminhos e observações sobre implantação.
Uma regra útil: se algo deve acompanhar você em todos os lugares, deve estar no SOUL.md. Se pertence a um projeto, deve estar no AGENTS.md.13
Personalidades integradas
O Hermes inclui personalidades integradas que você pode ativar com /personality:1333
| Nome | Descrição |
|---|---|
helpful |
Assistente amigável e de uso geral |
concise |
Respostas breves e objetivas |
technical |
Especialista técnico detalhista e preciso |
creative |
Pensamento inovador e fora do convencional |
teacher |
Educador paciente, com exemplos claros |
kawaii |
Expressões fofas, brilhos e entusiasmo |
catgirl |
Neko-chan com expressões felinas |
pirate |
Capitão Hermes, um bucaneiro especialista em tecnologia |
shakespeare |
Prosa de bardo com toque dramático |
surfer |
Jeito descontraído de surfista |
noir |
Narração de detetive durão |
uwu |
Fofura máxima com linguagem uwu |
philosopher |
Reflexão profunda sobre cada pergunta |
hype |
ENERGIA MÁXIMA |
Personalidades personalizadas no config.yaml:13
agent:
personalities:
codereviewer: >
You are a meticulous code reviewer. Identify bugs, security issues,
performance concerns, and unclear design choices. Be precise and constructive.
Depois, alterne com /personality codereviewer.
SOUL.md versus /personality
SOUL.md é a voz de base. /personality é uma camada aplicada no nível da sessão.13 Mantenha um SOUL.md padrão e pragmático; depois, use /personality teacher em uma conversa de tutoria ou /personality creative em um brainstorming.
Nous Tool Gateway (v0.10.0+)
Desde o Hermes Agent v0.10.0 (2026-04-16), assinantes pagos do Nous Portal têm acesso gerenciado a um conjunto selecionado de ferramentas usando as credenciais que já possuem no Portal — sem chaves API adicionais para gerenciar.65 O CLI do Hermes continua licenciado sob a licença MIT e totalmente open source. A mudança é que agora sua autenticação do Portal oferece acesso a mais do que apenas inferência de modelos.
O caminho mais rápido é hermes setup --portal, apresentado no README como “Um comando a partir de uma instalação nova”: ele faz seu login via OAuth, define o Nous como seu provedor e ativa o Tool Gateway. A partir daí, hermes portal gerencia essa integração. hermes portal login (o padrão quando nenhum subcomando é informado) executa o mesmo onboarding em uma única etapa; hermes portal info exibe o “resumo da autenticação do Portal + roteamento do Tool Gateway”; hermes portal open abre a página de assinatura no seu navegador padrão; hermes portal tools lista as ferramentas do gateway e indica quais são roteadas pelo Nous. hermes portal status continua disponível como um alias oculto para compatibilidade retroativa de info, e a referência do CLI na documentação dessa tag ainda apresenta o subcomando como status, portanto ambos funcionam.28
O que está incluído no gateway
| Ferramenta | Provedor | Caso de uso |
|---|---|---|
| Pesquisa na web | Firecrawl | Busca para agentes que precisam de informações atualizadas |
| Geração de imagens | FAL / FLUX 2 Pro | Gerar imagens diretamente sem configurar uma chave da FAL |
| Conversão de texto em fala | OpenAI TTS | Saída em áudio nos gateways de mensagens |
| Automação de navegador | Browser Use | Navegação e coleta de dados em modo headless |
Como funciona
O gateway é ativado separadamente para cada ferramenta por meio de um novo campo de configuração use_gateway. Se você tiver credenciais do Portal em hermes auth e ativar o gateway para uma ferramenta, as chamadas dessa ferramenta serão roteadas pelo Portal. Caso contrário, será usada sua chave API direta (se houver).
# config.yaml — per-tool gateway opt-in
tools:
web_search:
provider: firecrawl
use_gateway: true # route via Nous Portal subscription
image_generation:
provider: fal
use_gateway: true
Precedência em runtime: quando o gateway está disponível e uma ferramenta tem use_gateway: true, o Hermes dá preferência ao gateway, mesmo que você também tenha configurado uma chave API direta. Isso é importante para a cobrança — as chamadas do gateway consomem sua assinatura do Portal, não o saldo da sua chave API direta.
Como ativar o gateway
hermes model # select Nous Portal (OAuth flow)
hermes tools # per-platform tool picker integrates gateway tools
hermes status # confirms gateway/subscription detection
A assinatura é detectada automaticamente pelas credenciais OAuth do Portal que você já tem em hermes auth — não há uma etapa de login separada. Desde a v0.19.0, você também pode gerenciar a própria assinatura durante uma sessão: /subscription mostra seu plano e o saldo disponível, apresenta exatamente quanto custa um upgrade ou quando um downgrade entra em vigor e aplica a alteração com avisos de mudança agendada e opção para desfazer; /topup adiciona crédito. O aplicativo para desktop tem uma aba correspondente nas configurações de cobrança.60
Preços e acesso
Os preços e nomes dos planos são publicados na página de preços do Nous Portal (https://portal.nousresearch.com/pricing). Este guia não enumera os planos porque eles são responsabilidade do produto Portal, não do CLI do Hermes, e mudam independentemente das versões do Hermes. Cadastre-se em https://portal.nousresearch.com/ e consulte a página de preços para ver os planos atuais.
Plano gratuito do Nous e primeira inicialização guiada (v0.21.2+)
Desde a v0.21.2, uma instalação nova não precisa de um plano pago nem de uma chave API para fornecer um agente funcional: inferência e conectores gratuitos já vêm prontos para uso, com um único comando para fazer login, e /login inicia o processo dentro de um chat. As ferramentas dos conectores (Gmail, Linear, Notion e os demais) podem ser pesquisadas por meio de tool_search como qualquer outra ferramenta. O aplicativo para desktop adiciona uma primeira inicialização guiada controlada por HERMES_GUEST_ONBOARDING=1; apenas o valor literal 1 a ativa – o próprio teste do aplicativo para desktop confirma que 'true', '0' e um valor vazio a mantêm desativada, e a decisão tomada na inicialização é registrada no ambiente do backend iniciado para impedir que um valor herdado seja aplicado indevidamente.48
Desde o período de lançamento da v0.21.4, conectar esses conectores passou a ser uma única operação controlada pelo backend, em vez de uma lógica distribuída entre os frontends: uma chamada à ferramenta manage_connections aciona no backend uma máquina de estados de conexão baseada apenas em dados (com um prazo fixo de 300 segundos para a operação – deliberadamente, não é uma chave de configuração), e Desktop, TUI e CLI exibem o mesmo cartão de configuração. O cartão apresenta um campo para cada credencial ausente (nome, instrução, obrigatoriedade) e mantém sua ação desativada até que todos os campos obrigatórios contenham texto; o backend impõe em todos os frontends a mesma separação exclusiva para segredos.51
Aviso de descontinuação
- A variável de ambiente
HERMES_ENABLE_NOUS_MANAGED_TOOLSfoi removida na v0.10.0. Agora, as ferramentas gerenciadas são ativadas pelo campo de configuraçãouse_gatewayde cada ferramenta e condicionadas ao estado da sua assinatura do Portal.65
Contexto: o que esta versão não é
O CLI do Hermes Agent não exige uma assinatura. O projeto continua licenciado sob a licença MIT, e todos os recursos principais (CLI, skills, memória, gateway de mensagens, cron, MCP, dashboard local e BYOK para todos os provedores) funcionam de ponta a ponta sem que você precise pagar a ninguém. A v0.10.0 adiciona uma opção conveniente para usuários que já assinam o Nous Portal — ela não remove nada do caminho gratuito.
Gateway de mensagens
O Hermes pode ser executado como um processo de gateway de longa duração que se conecta a 28 plataformas de mensagens a partir de um único processo de gateway: Telegram, Discord, Slack, WhatsApp, Signal, SMS, Email, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, Weixin (WeChat), BlueBubbles (iMessage), QQBot, Microsoft Teams, Tencent Yuanbao, Google Chat, LINE, SimpleX Chat, Photon (iMessage), WhatsApp Cloud API, WeCom Callback, Raft, IRC, ntfy, Buzz e um adaptador genérico de Webhook.364171819 Esse total de 28 vem da tabela Platform Comparison da documentação na tag v2026.8.31; por baixo disso, gateway/config.py define 24 membros integrados do enum Platform (incluindo entradas que não são de chat, como local, api_server, webhook, msgraph_webhook e relay) e resolve qualquer outro nome sob demanda para um dos 22 diretórios de adaptadores incluídos em plugins/platforms/, portanto uma simples contagem do enum ou dos diretórios não corresponderá ao número da documentação.25 A v0.9.0 adicionou iMessage via BlueBubbles (registro automático de webhook, assistente de configuração e resiliência a falhas) e suporte nativo ao WeChat via iLink Bot API, com o modo de callback do WeCom para aplicativos empresariais.16 A v0.11.0 adicionou o QQBot.64 A v0.12.0 adicionou o Microsoft Teams e o Tencent Yuanbao.17 A v0.13.0 adicionou o Google Chat como a 20ª plataforma, usando a mesma arquitetura de adaptadores conectáveis; o IRC e o Microsoft Teams também foram migrados para o novo padrão de adaptadores, com hooks genéricos de plugin env_enablement_fn / cron_deliver_env_var.18 A v0.14.0 adiciona LINE e SimpleX Chat e conclui a stack do Microsoft Teams de ponta a ponta, com autenticação Graph, listener de webhook, runtime do pipeline e entrega de saída.19 A v0.17.0 (19 de junho de 2026) adiciona iMessage sem relay via Photon Spectrum (OAuth por código de dispositivo com hermes photon login — sem necessidade de Mac ou relay do BlueBubbles), o adaptador oficial do WhatsApp Business Cloud API (substituindo a exigência de um processo de bridge), grupos do SimpleX e anexos nativos, além do Raft como plugin de plataforma incluído.21 Outras duas aparecem na tabela da documentação sem destaque nas notas de versão: ntfy é um canal leve de push por pub-sub HTTP (assine um tópico pelo aplicativo móvel do ntfy, envie uma mensagem ao tópico para conversar com o agente e receba a resposta no celular; funciona com o servidor público ntfy.sh ou uma instância auto-hospedada, sem necessidade de SDK nem daemon), enquanto o Buzz conecta o Hermes a uma comunidade Buzz, a plataforma open source de colaboração entre pessoas e agentes da Block baseada no protocolo Nostr, invocando o CLI buzz para mensagens de saída e usando uma assinatura nativa WebSocket do Nostr para mensagens de entrada. Ambas são configuradas por meio de hermes gateway setup.25
Configuração
hermes gateway setup # Interactive platform configuration
hermes gateway install # Install as user service (systemd/launchd)
hermes gateway start # Start the installed service
hermes gateway stop
hermes gateway restart
hermes gateway status
hermes gateway run # Run in foreground (debugging)
A configuração interativa orienta você na conexão de cada plataforma: tokens de API, IDs de bots, mapeamentos de canais e listas de permissões.6 Desde a v0.21.6, a etapa do Discord verifica o token do bot, exibe um link de convite com os bits de permissão necessários para o adaptador e alerta sobre a opção Message Content Intent caso ela ainda esteja desativada, o que faz o Discord recusar a conexão do bot.5455
Como as mensagens fluem
Segundo a documentação de arquitetura do projeto original:3
Platform event → Adapter.on_message() → MessageEvent
→ GatewayRunner._handle_message()
→ authorize user
→ resolve session key
→ create AIAgent with session history
→ AIAgent.run_conversation()
→ deliver response back through adapter
Todas as plataformas de mensagens passam pelo mesmo loop de conversa AIAgent usado pelo CLI. É por isso que os comandos slash funcionam de forma idêntica nos dois lugares e que uma tarefa cron agendada no Telegram pode entregar sua saída ao Discord — a diferença entre as plataformas existe apenas nas extremidades.3
A v0.19.0 adiciona roteamento de mensagens baseado em profiles e entrega durável. Um único gateway multiplexado que compartilha um token de bot pode encaminhar guilds, canais ou threads específicos para profiles diferentes — cada um com configurações, skills, memória e segredos totalmente isolados — com uma substituição por GATEWAY_MULTIPLEX_PROFILES; além disso, uma série de melhorias de robustez impede que um único profile configurado incorretamente derrube todo o gateway. Internamente, o índice de roteamento foi movido para state.db (sessions.json agora é um espelho legado opcional), e as respostas finais são registradas em um ledger durável de obrigações de entrega em torno do envio pela plataforma — se uma resposta concluída for atingida por uma falha do gateway, ela será reenviada na próxima inicialização, em vez de ser perdida silenciosamente.60 O isolamento entre profiles roteados foi reforçado na v0.21.2, que corrigiu um conjunto de vazamentos entre profiles justamente nessa configuração multiplexada: listas de permissões herdadas, credenciais enviadas ao host do profile padrão, segredos do vault do profile padrão chegando a servidores MCP via stdio, anexos MEDIA: entre profiles e o bearer do Nous de um profile irmão permanecendo em memos por processo (#107609-#107630).48
A v0.21.1 torna os limites das conversas exclusivamente explícitos. A documentação do ciclo de vida das sessões na tag v2026.9.7 define o contrato em quatro frases: “A inatividade e o tempo de relógio nunca alternam uma conversa. /new e /reset criam um limite explícito; a compressão de contexto continua gerenciando históricos longos. A configuração legada de temporizadores é ignorada. O tipo de dados existente SessionResetPolicy contém dados inertes de compatibilidade, não uma política de runtime.” A suspensão explícita ainda cria um limite no próximo turno de entrada, a recuperação respeita limites finalizados em vez de reabri-los e a remoção motivada apenas por recursos mantém as conversas retomáveis. Se uma sessão no seu gateway parecer “nunca expirar”, agora esse é o comportamento esperado; alterne-a você mesmo com /new.43
Desde o período da v0.21.4, um segundo hermes gateway run se conecta ou recusa a execução em vez de fazer bind duplicado. A regra é um hermes serve e um hermes gateway run por host e usuário do sistema operacional, cada um multiplexando todos os profiles. Iniciar um gateway para um profile que o multiplexador em execução já atende apenas se conecta e encerra com código 0; se ele ainda não atender esse profile, o Hermes solicita uma nova varredura de profiles/ e se conecta assim que o profile for encontrado; se não for possível fazê-lo atender o profile, o comando recusa a execução em vez de iniciar silenciosamente um segundo gateway. Agora, --replace tem como alvo esse processo no host, independentemente do profile que o iniciou, e --force ignora totalmente a pergunta quando o proprietário está travado. Gateways independentes ainda coexistem: se o gateway em execução for o gateway independente (não multiplexado) de outro profile, o seu profile iniciará o próprio gateway ao lado dele, como antes, até que essa migração seja forçada (#109417). Se dois gateways forem iniciados ao mesmo tempo, aquele que perder o bloqueio do host será encerrado com o código 75, que todos os supervisores gerados pelo Hermes tentam novamente; nesse momento, o registro do vencedor já existe, então a nova tentativa se conecta ou recusa a execução conforme as regras acima. Os bloqueios e o registro de rendezvous ficam em $HERMES_GATEWAY_LOCK_DIR ou, se essa variável não estiver definida, em $XDG_STATE_HOME/hermes/gateway-locks (por padrão, ~/.local/state/hermes/gateway-locks), com escopo limitado ao usuário do sistema operacional; um registro cujo PID esteja inativo ou tenha sido reutilizado por outro processo é considerado obsoleto e ignorado, portanto uma falha do gateway não bloqueia a próxima inicialização. O aplicativo Desktop segue a mesma regra, conectando-se ao backend em execução no host em vez de iniciar um segundo.51
Desde a v0.21.5, a multiplexação não é mais opcional. gateway.multiplex_profiles tem um único valor válido, true: uma chave ausente é resolvida como ativada e gravada no config.yaml do profile padrão, enquanto um false explícito é reescrito no próprio arquivo como true, acompanhado de um aviso em destaque exibido uma vez nessa inicialização do gateway e novamente no resumo da próxima execução de hermes update. Dois controles substituem a antiga opção de desativação. Para colocar um profile offline sem interromper os bots de todos os outros, execute hermes -p <name> gateway stop: o host o estaciona (com um marcador profiles/<name>/gateway.parked), e hermes -p <name> gateway start o reativa; os botões Stop/Start do dashboard e do Desktop fazem o mesmo. Um profile nomeado que ainda precise de um gateway próprio define gateway.standalone: true no seu próprio config.yaml; o host nunca o atende, e seus comandos stop/start operam no processo dele. A documentação chama essa chave de “uma solução temporária de compatibilidade”, não de uma topologia compatível, e ela é ignorada com um aviso no profile padrão. Uma divisão entre usuários do sistema operacional ou um HERMES_HOME fora do diretório profiles/ da home padrão ainda exige --force.53
Autorização e pareamento de usuários
hermes pairing list # Show pending and approved users
hermes pairing approve <platform> <code>
hermes pairing revoke <platform> <user-id>
hermes pairing clear-pending
Os códigos de pareamento impedem que desconhecidos conversem com o seu gateway. Um usuário envia um código de pareamento pela plataforma de mensagens; você o aprova com hermes pairing approve e, a partir daí, esse usuário fica autorizado.6
unauthorized_dm_behavior determina o que a mensagem direta de um desconhecido recebe antes do pareamento: pair envia um código de pareamento por mensagem direta, ignore descarta a mensagem silenciosamente e decline, valor adicionado no período da v0.21.4, envia uma única recusa educada e depois permanece em silêncio para esse remetente por 24 horas (#88028). A recusa é deduplicada por plataforma e remetente, inclusive entre aliases, e seu texto vem de unauthorized_dm_decline_message (uma chave global; vazio significa usar a resposta integrada: “Olá! Sou um assistente pessoal e só posso conversar com meu proprietário, então não posso ajudar você diretamente. Desculpe!”). Defina o comportamento globalmente ou por plataforma, onde o assistente de configuração o grava:
# ~/.hermes/config.yaml
unauthorized_dm_behavior: decline # global; gateway.unauthorized_dm_behavior also works
unauthorized_dm_decline_message: "" # empty = built-in reply
platforms:
telegram:
unauthorized_dm_behavior: pair # per-platform value always wins
Quando nada está definido, o padrão efetivo depende das suas listas de permissões. Sem nenhuma configurada, ele é pair; assim que qualquer lista de permissões for definida (GATEWAY_ALLOWED_USERS ou uma variável de usuários permitidos, usuários permitidos em grupos ou chats de grupo permitidos de uma plataforma), ele passa a ser ignore, porque a lista de permissões indica um gateway deliberadamente restrito, e enviar códigos para contatos desconhecidos gera ruído e pode vazar informações (#9337). Um valor global ignore ou decline substitui essa regra, mas um pair global não pode fazer isso, pois é interpretado da mesma forma que o padrão; para manter o pareamento junto com uma lista de permissões, defina pair por plataforma. (A configuração dm_policy própria de um adaptador de plataforma, quando definida, é consultada antes da regra da lista de permissões.) Como o Email funciona como uma caixa de entrada, seu padrão é ignore, a menos que uma chave própria da plataforma o habilite; um valor global não se aplica a ele. hermes gateway setup oferece a opção de recusa como uma das respostas ao configurar uma plataforma sem uma lista de permissões.51
Tarefas agendadas (Cron)
O Hermes tem um sistema de cron nativo no qual os jobs são tarefas do agente, não comandos shell. Cada job agendado é executado por um novo AIAgent com o prompt configurado, skills opcionais anexadas e entrega os resultados a qualquer plataforma:36
hermes cron list
hermes cron create --prompt "Check HN for AI news and summarize" --schedule "0 9 * * *" --deliver telegram
hermes cron edit <id>
hermes cron pause <id>
hermes cron resume <id>
hermes cron run <id> # Trigger now on the next tick
hermes cron remove <id>
hermes cron status # Check if scheduler is running
hermes cron tick # Run due jobs once and exit
Ou crie um de forma conversacional em um chat de mensagens:
Every morning at 9am, check Hacker News for AI news and send me a summary on Telegram.
O agente configurará o job cron por meio de suas ferramentas. Os jobs ficam armazenados em JSON e persistem após reinicializações.3
A v0.21.0 deu memória e capacidade de julgamento aos jobs agendados. São quatro mecanismos, todos verificados na tag v2026.8.31:3537
- Continuidade.
continuity=trueinjeta em cada execução a saída mais recente do próprio job. Assim, um agente de reconhecimento ou monitoramento “acorda vendo o que relatou na última vez e pode eliminar duplicidades e continuar de onde parou” — a orientação injetada é “evitar repetir o que já foi relatado”, a primeira execução não muda e, internamente, a flag é armazenada como a entrada reservadaselfemcontext_from. Ative ou desative esse recurso comhermes cron create ... --continuityehermes cron edit <job_id> --continuity/--no-continuity.37 - Blocos de notas persistentes. Cada job recebe um pequeno espaço KV para anotações temporárias, como cursores, marcas d’água e listas de monitoramento (16 KB por valor, 64 KB por job — ele é injetado no prompt a cada execução, por isso os limites são intencionais), gravado por meio de
hermes cron notepad <job_id> set <key> <value>, que o agente em execução invoca usando sua ferramenta de terminal.37 - Modo de monitoramento. Um job pode anexar uma fonte econômica
monitor_script/monitor_url, executada primeiro a cada ciclo: uma saída inalterada (comparada byte por byte) impede completamente a execução do agente — sem chamada a LLM, sem entrega, apenas uma execução silenciosano_change— enquanto uma alteração injeta um bloco de diff e executa o agente normalmente. Gere uma saída estável nos scripts de monitoramento, senão cada ciclo parecerá uma alteração.37 - Nível de raciocínio por job e entrega no Bot Chat.
--reasoning-effortfixa o nível de raciocínio de um job (noneaultra), substituindo as configurações globais e específicas do modelo nas execuções desse job; edeliver=bot-chatenvia a saída para a sessão canônica do Bot Chat de um profile como uma mensagem recebida real, na qual o bot “executa tudo o que exige uma ação e responde no próprio chat”, em vez de um humano apenas ler um canal.37
Integração com MCP
O Hermes oferece suporte ao Model Context Protocol tanto como cliente quanto como servidor:6
Como cliente — conecte o Hermes a servidores MCP externos para ampliar seu conjunto de ferramentas:
hermes mcp add <name> --url https://example.com/mcp
hermes mcp add <name> --command npx --args "-y,@modelcontextprotocol/server-github"
hermes mcp list
hermes mcp test <name>
hermes mcp remove <name>
hermes mcp configure <name> # Toggle individual tool selection
hermes mcp login <name> # Force re-auth for an OAuth server (--flow browser|device)
hermes mcp reauth [--all] # Re-authenticate one OAuth server, or every one
Ou configure manualmente em config.yaml:14
mcp_servers:
github:
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxx"
Desde a v0.19.0, as ferramentas MCP são apresentadas ao modelo seguindo a convenção de nomes mcp__server__tool — cada nome de ferramenta inclui o nome do servidor, evitando conflitos quando dois servidores disponibilizam a mesma ferramenta — e as notificações de log do servidor MCP são exibidas em agent.log.60
A v0.21.1 adiciona um fluxo com código de dispositivo ao OAuth do MCP: hermes mcp login <name> aceita --flow {browser,device} — browser é o fluxo PKCE já existente, enquanto device é um login com código de dispositivo conforme a RFC 8628 para máquinas remotas ou sem interface gráfica — e a flag substitui a configuração oauth.flow do servidor. Essa mesma versão aplica a propriedade do profile durante toda a sessão de OAuth, ignora caches de metadados de OAuth inválidos em vez de travar um servidor e encaminha o OAuth do MCP no desktop por callbacks locais do cliente; -t/--toolsets agora também filtra quais servidores MCP configurados serão iniciados, portanto uma execução com escopo definido não perde tempo inicializando servidores desnecessários.44
A v0.21.0 transforma a interface de MCP do desktop em uma central de comando: os servidores e o catálogo são reunidos em uma única página, com importação do tipo “cole qualquer coisa” por arrastar e soltar, verificações de integridade em segundo plano que avisam sobre autenticações prestes a expirar antes que uma chamada de ferramenta falhe, uma sobreposição de custos e uso da frota mostrando estimativas de tokens do schema e o uso de cada servidor nos últimos 30 dias, além de deep links hermes:// que instalam um servidor MCP mediante confirmação explícita.35
A versão v0.21.4 adiciona mcp.discovery_concurrency (padrão 4; 0 = ilimitado, #117373): um limite para quantos servidores MCP configurados o processo de descoberta pode conectar simultaneamente. Todos os servidores ainda são conectados — o limite apenas impede que todos se conectem ao mesmo tempo — e um valor negativo ou que não seja inteiro gera um aviso no log e faz o sistema voltar ao padrão.51
Como servidor — disponibilize as conversas do Hermes para outros agentes:
hermes mcp serve
hermes mcp serve -v # Verbose
Compressão de contexto
O Hermes comprime automaticamente conversas longas para mantê-las dentro da janela de contexto do seu modelo. O sumarizador de compressão faz uma chamada separada a LLM — você pode direcioná-lo a qualquer provedor ou endpoint.4 Desde a v0.20.6, a política de preservação do trecho final usa lean por padrão (compression.tail_mode: lean) e, nessa tag, as opções de modelo, provedor e endpoint do sumarizador ficam em auxiliary.compression.*, em vez das antigas compression.summary_* — as chaves legadas são migradas automaticamente no primeiro carregamento (versão 17 da configuração).3031
compression:
enabled: true
threshold: 0.50 # Compress at this % of context limit
threshold_tokens: null # Optional absolute token cap -- trigger fires at the lower of ratio vs cap
target_ratio: 0.20 # Fraction of threshold to preserve as recent tail (legacy tail mode)
tail_mode: lean # Tail retention: "lean" (default) or "legacy"
protect_last_n: 20 # Min recent messages to keep uncompressed
protect_first_n: 3 # Non-system head messages pinned across compactions
auxiliary:
compression:
model: "" # Empty = main chat model; e.g. "google/gemini-3-flash-preview"
provider: "auto" # "auto", "openrouter", "nous", "codex", "main", etc.
base_url: null # Custom OpenAI-compatible endpoint (overrides provider)
O que tail_mode determina. legacy mantém literalmente um trecho final do tamanho definido por target_ratio — em configurações com janelas grandes ou limites elevados, isso acumula de 100 a 240 mil tokens por compactação. lean mantém literalmente um trecho final limitado a 2,5% da janela de contexto (mínimo de 10 mil, máximo de 25 mil) e transfere a continuidade para o resumo: um log detalhado da sessão, que preserva identificadores da região compactada (uma chamada ao sumarizador auxiliar por tentativa), um índice de âncoras extraído mecanicamente (números de PR, SHAs, caminhos e mensagens de erro — por regex, nunca parafraseados), todas as mensagens reais do usuário citadas literalmente e um ponteiro de recuperação session_search para que o agente possa acessar novamente qualquer conteúdo removido pelo resumo. Resultado medido pela documentação em sessões reais com 500 mil tokens: cerca de 49 mil tokens preservados, em vez de aproximadamente 162 mil. Resultados antigos de ferramentas dentro do trecho final lean são reduzidos a linhas únicas com um ponteiro de recuperação, e valores desconhecidos de tail_mode usam lean como fallback.31
auxiliary.compression.provider |
auxiliary.compression.base_url |
Resultado |
|---|---|---|
auto (padrão) |
não definido | Detecta automaticamente o melhor provedor disponível |
nous / openrouter / etc. |
não definido | Força esse provedor e usa sua autenticação |
| qualquer | definido | Usa diretamente o endpoint personalizado (o provedor é ignorado) |
O modelo de resumo precisa oferecer uma janela de contexto pelo menos tão grande quanto a do modelo principal, pois recebe toda a parte intermediária da conversa em uma única chamada — se a janela for menor, a chamada falhará e os turnos intermediários serão descartados sem um resumo.431
Avisos de pressão sobre o orçamento
Quando o agente trabalha em uma tarefa complexa com muitas chamadas de ferramentas, ele pode consumir seu orçamento de iterações (padrão: 500 turnos desde a v0.20.0, anteriormente 90) sem perceber. A pressão sobre o orçamento avisa automaticamente o modelo:4
| Limite | Nível | O que o modelo vê |
|---|---|---|
| 70% | Cuidado | [BUDGET: 350/500. 150 iterations left. Start consolidating.] |
| 90% | Aviso | [BUDGET WARNING: 450/500. Only 50 left. Respond NOW.] |
Timeouts de streaming
A conexão de streaming de LLM tem duas camadas de timeout que se ajustam automaticamente para provedores locais (localhost e IPs da LAN):4
| Timeout | Padrão | Provedores locais | Variável de ambiente |
|---|---|---|---|
| Timeout de leitura do socket | 120s | Aumentado automaticamente para 1800s | HERMES_STREAM_READ_TIMEOUT |
| Detecção de stream sem atividade | 180s | Desativada automaticamente | HERMES_STREAM_STALE_TIMEOUT |
| Chamada a API (sem streaming) | 1800s | Sem alteração | HERMES_API_TIMEOUT |
O timeout de leitura do socket é aumentado para 30 minutos em endpoints locais porque LLMs locais podem levar vários minutos para realizar o prefill de contextos grandes antes de produzir o primeiro token.4
Dashboard web local (v0.9.0+)
Um dashboard acessível pelo navegador para gerenciar o Hermes Agent localmente. Configure opções, monitore sessões, explore skills e gerencie seu gateway sem mexer nos arquivos de configuração nem no terminal.16 Inicie com hermes dashboard. Esse é o caminho de onboarding mais fácil para novos usuários que preferem uma GUI.
Monitoramento de processos em segundo plano (v0.9.0+)
watch_patterns permite definir padrões para monitorar a saída de processos em segundo plano e receber notificações em tempo real quando houver correspondência.16 Monitore erros, aguarde eventos específicos (“listening on port”) ou acompanhe logs de build — tudo sem polling. Combinado com notify_on_complete da v0.8.0 (que envia uma notificação quando uma tarefa em segundo plano é concluída), o Hermes agora tem uma camada completa de observabilidade para processos em segundo plano.15
Context engine conectável (v0.9.0+)
O gerenciamento de contexto agora é um slot conectável por meio de hermes plugins. Você pode usar context engines personalizados que controlam o que o agente vê a cada turno — com filtragem, resumo ou injeção de contexto específico do domínio.16 Isso desacopla a estratégia de contexto do loop principal do agente, permitindo personalizar o contexto por projeto ou domínio.
Backup e restauração (v0.9.0+)
hermes backup cria um arquivo completo com suas configurações, sessões, skills e memória. hermes import restaura os dados de um arquivo de backup.16 Use esses recursos para migrar entre máquinas, criar snapshots antes de grandes alterações ou compartilhar uma configuração confiável com colegas de equipe.
Compatibilidade com Termux e Android (v0.9.0+)
O Hermes é executado nativamente no Android por meio do Termux. Caminhos de instalação adaptados, otimizações da TUI para telas de dispositivos móveis, compatibilidade com backend de voz e o comando /image funcionam diretamente no dispositivo.16
Reforço de segurança (v0.13.0+)
A v0.13.0 corrigiu 8 problemas de segurança P0 e alterou um padrão em benefício do usuário.18 Em seguida, a v0.14.0 corrigiu outros 12 problemas P0 e 50 P1, incluindo proteção contra ataques de força bruta ao sudo e uso do sudo via stdin, correções para formas de contornar o bloqueio de comandos perigosos, sanitização de erros de ferramentas antes de reinjetá-los no modelo, autenticação de API de plugins do dashboard, cobertura contra SSRF no skills-hub e verificação de alertas da cadeia de suprimentos durante a instalação.19
| Correção | O que mudou |
|---|---|
| Ocultação de segredos ativada por padrão | Antes, era necessário ativá-la. Os logs e uploads do hermes debug share ocultam segredos, a menos que o recurso seja explicitamente desativado. A v0.12.0 havia desativado a ocultação por padrão após relatos de corrupção de payloads; a v0.13.0 voltou a ativá-la como opção básica mais segura. |
| Forma de contornar as restrições de DMs entre servidores do Discord (CVSS 8.1) | As listas de permissões de funções do Discord agora são específicas de cada servidor, eliminando uma brecha pela qual a função de um usuário em um servidor autorizava DMs em todos eles. |
| Restrições padrão do WhatsApp | O adaptador do WhatsApp rejeita desconhecidos por padrão e nunca responde em conversas do usuário consigo mesmo. |
| Janela de TOCTOU em MCP OAuth | Corrigida uma condição de corrida durante o salvamento de credenciais nos fluxos de MCP OAuth. |
TOCTOU no auth.json de CLI |
Corrigida uma janela de TOCTOU semelhante no gravador de credenciais do armazenamento de autenticação de CLI. |
| Proteção básica do navegador contra SSRF | O roteamento híbrido impõe uma proteção básica contra SSRF de metadados na nuvem para solicitações que tentam acessar 169.254.169.254 e endereços equivalentes. |
| Detecção de injeção de prompt em cron | Os prompts montados (inclusive o conteúdo de skills carregadas) são verificados em busca de injeções de prompt antes da execução do cron job. |
Ocultação de dados no hermes debug share |
Os uploads de compartilhamento de depuração ocultam o conteúdo dos logs no momento do upload, não apenas durante a gravação. |
Se você mantém uma implantação do Hermes, considere as versões v0.13.0 e v0.14.0 atualizações relevantes para a segurança, não apenas lançamentos de novos recursos. A v0.13.0 corrige a forma de contornar as restrições entre servidores do Discord e duas janelas de TOCTOU; a v0.14.0 adiciona outra rodada de reforços ao tratamento do sudo, à reinjeção de erros de ferramentas, aos APIs de plugins, à proteção contra SSRF no skills-hub e aos alertas sobre dependências.
A v0.21.0 adiciona uma quarta rodada. Gravações em arquivos protegidos de instruções do agente – AGENTS.md, CLAUDE.md, SOUL.md, .cursorrules, skills e armazenamentos de memória – agora sempre exigem aprovação. Assim, um agente que sofreu injeção de prompt não pode reescrever silenciosamente suas próprias instruções permanentes. Essa proteção vem ativada por padrão (security.protected_instruction_files: true, com uma lista de extensões de nomes-base no formato fnmatch em protected_instruction_extra_patterns), e o código-fonte identifica exatamente o vetor que ela elimina: “uma instrução injetada que edita AGENTS.md / CLAUDE.md / SOUL.md”, observando que os arquivos de instruções são carregados das árvores do cwd e, portanto, “qualquer AGENTS.md em um local do qual o agente possa ser executado posteriormente é um alvo ativo”.3539 A mesma versão corrige brechas de vazamento de segredos em erros do terminal, leituras de arquivos .env, checkpoints e logs de ACP; ensina ao sistema de aprovação os comandos e caminhos destrutivos do Windows; faz com que as permissões do macOS persistam após atualizações por meio de uma identidade estável de assinatura TCC (configuração única: hermes desktop --setup-tcc-identity, somente para macOS, requer openssl/security/codesign); remove a entrada do Blender no catálogo de MCP e a respectiva skill após o comprometimento de um componente upstream; e adiciona verificação de segurança Tier-1 às instalações de plugins.3539
A v0.21.6 adiciona uma quinta rodada. Quatro correções de autenticação do dashboard relatadas pela Tenable Research (falsificação de X-Forwarded-For para contornar o limite de tentativas de login, gravações ilimitadas na auditoria de autenticação geradas por solicitações não autenticadas, ausência de limite para o tamanho do corpo nas rotas públicas /auth/ e envio de códigos de login para um redirecionamento fora do loopback, o que permitia o sequestro da sessão), chamadas automáticas do git que não executam mais os programas de filtro clean, smudge ou process definidos por um repositório não confiável antes do primeiro prompt e um cabeçalho de e-mail From analisado com parseaddr para impedir que um nome de exibição entre aspas passe pela lista de permissões. Veja os detalhes em Novidades da v0.21.6.5455
Arquitetura para profissionais
Esta seção é voltada a quem quer entender o que acontece nos bastidores para poder depurar, estender ou analisar o desempenho. Ela sintetiza a documentação de arquitetura do projeto original.3
Pontos de entrada → AIAgent
Todos os pontos de entrada do Hermes acabam chamando AIAgent.run_conversation():
┌──────────────────────────────────────────────────────────────────┐
│ Entry Points │
│ │
│ CLI (cli.py) Gateway (gateway/run.py) ACP (acp_adapter/) │
│ Batch Runner API Server Python Library │
└──────────┬──────────────┬───────────────────────┬────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────┐
│ AIAgent (run_agent.py) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Prompt │ │ Provider │ │ Tool │ │
│ │ Builder │ │ Resolution │ │ Dispatch │ │
│ └──────┬──────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │
│ │ Compression │ │ 3 API Modes │ │ Tool Registry│ │
│ │ & Caching │ │ chat_compl │ │ 47 tools │ │
│ │ │ │ codex_resp │ │ 20 toolsets │ │
│ │ │ │ anthropic │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────────┘
Diagrama adaptado da documentação de arquitetura do projeto original.3
“47 tools / 20 toolsets” em comparação com “28 tools” no seu banner. A contagem de “47 tools” representa o registro total de tools do repositório original — todas as tools cujo código-fonte acompanha o Hermes, em todos os toolsets. A CLI que você estiver executando mostrará um número menor no banner de inicialização (a instalação usada para verificar este guia informa 28 tools / 89 skills). Isso não é um bug. Muitos toolsets são opcionais e precisam ser habilitados explicitamente em config.yaml, na seção toolsets: — adaptadores de plataformas de mensagens, automação de navegador, ferramentas mais pesadas de scraping etc. O total do registro indica “o que está disponível”; o número do banner indica “o que está habilitado no seu profile atual”. Confira quais toolsets estão ativos com hermes tools --list e habilite ou desabilite toolsets individualmente usando o bloco toolsets: em ~/.hermes/config.yaml (ou /tools list / /tools enable <name> / /tools disable <name> dentro de uma sessão em execução — remover uma tool reinicia a sessão para que o agente reconstrua seu manifesto de tools).
Os três modos de API
O Hermes abstrai as diferenças entre provedores em três modos de API, selecionados automaticamente durante a execução:3
| Modo de API | Usado por |
|---|---|
chat_completions |
OpenRouter, z.ai, Kimi, MiniMax, DeepSeek, Alibaba, a maioria dos endpoints personalizados, qualquer servidor compatível com OpenAI |
codex_responses |
OpenAI Codex (via OAuth do ChatGPT) |
anthropic_messages |
API da Anthropic (nativa), OAuth da Anthropic, proxies compatíveis com Anthropic |
O resolvedor runtime_provider.py mapeia tuplas (provider, model) para (api_mode, api_key, base_url) em mais de 18 provedores, gerenciando fluxos de OAuth, pools de credenciais e resolução de aliases.3
Fluxo de dados em uma sessão de CLI
User input → HermesCLI.process_input()
→ AIAgent.run_conversation()
→ agent.prompt_builder.build_system_prompt()
→ runtime_provider.resolve_runtime_provider()
→ API call (chat_completions / codex_responses / anthropic_messages)
→ tool_calls? → model_tools.handle_function_call() → loop
→ final response → display → save to SessionDB
Extraído da página de arquitetura do projeto original.3
Ordem de montagem do prompt
A pilha do prompt inclui:13
SOUL.md(identidade do agente — ou alternativa integrada, caso não esteja disponível)- Orientações de comportamento específicas para as tools
- Memória/contexto do usuário (
MEMORY.md,USER.md) - Orientações sobre skills
- Arquivos de contexto (
AGENTS.md,.cursorrules) - Data e hora
- Dicas de formatação específicas da plataforma
- Sobreposições opcionais do prompt de sistema, como
/personality
SOUL.md é a base — todo o restante é construído sobre ele.13
Armazenamento de sessões
Armazenamento de sessões baseado em SQLite, com pesquisa de texto completo FTS5. As sessões têm rastreamento de linhagem (relações pai/filho entre compactações), isolamento por plataforma e gravações atômicas com tratamento de contenção.3
Se o armazenamento apresentar problemas em uma instalação v0.21.x, use a v0.21.2 ou posterior: ela resolveu a classe de fragilidades do state.db da época da v0.21.0 (segundos processos de gravação cancelando os bloqueios uns dos outros, bancos de dados íntegros relatados como corrompidos e uma única linha inválida fazendo sessions list falhar) e transferiu a coordenação de salas hospedadas do armazenamento raiz para um shared-state.db dedicado, para que os gateways dos profiles nunca abram o armazenamento mestre de sessões com permissão de escrita. Agora, hermes doctor identifica separadamente danos estruturais e danos ao índice FTS; danos ao FTS degradam a pesquisa em vez de interromper a interação; e hermes sessions recover --inspect-only (offline, não destrutivo e vinculado ao profile) informa se a tabela canônica pode ser lida sem criar um banco de dados de saída — o subcomando já existia antes desse período, mas ainda não havia sido documentado aqui. Consulte Novidades da v0.21.2.48 Para um armazenamento preso no modo de journal incorreto do SQLite, o ciclo da v0.21.4 adicionou o conversor offline hermes sessions set-journal-mode delete|wal (consulte a linha hermes sessions em Comandos de nível superior).51
Sistema de plugins
Há três fontes de descoberta: ~/.hermes/plugins/ (usuário), .hermes/plugins/ (projeto) e pontos de entrada do pip. Os plugins registram tools, hooks e comandos de CLI por meio de uma API de contexto. Provedores de memória são um tipo especializado de plugin em plugins/memory/.3 Desde a v0.21.6, plugins.isolation: host (o padrão é in_process) mantém o código de plugins Python de terceiros fora do processo do Hermes: plugins gerais são carregados em um processo host de plugins por profile e se comunicam com o Hermes somente por meio de ctx; todos os demais caminhos que importariam código do usuário dentro do processo (provedores de categorias, profiles de provedores de modelos e APIs de plugins do dashboard) recusam a operação com uma justificativa explícita; e os plugins incluídos continuam sendo executados dentro do processo. Assim, se um plugin travar ou falhar, ele derrubará seu host, não o gateway.55 Desde a v0.21.2, também existe um catálogo selecionado de plugins, com hashes SHA fixados, que você pode consultar e usar para instalar plugins pelo nome, além de hermes plugins pack para “conjuntos de plugins declarativos e compartilháveis”: um único hermes-pack.yaml fixa um conjunto de plugins em SHAs de commits exatos; a instalação do pack se desdobra em instalações fixadas comuns; e o consentimento de capacidades continua sendo concedido individualmente para cada plugin.48
O ciclo da v0.21.4 transformou esse catálogo de uma interface de CLI em um artefato distribuído. O diretório plugin-catalog/ do repositório cresceu de 9 entradas em v2026.9.14 para 228 em v2026.9.21 — uma YAML revisada por plugin (nome, repositório, mantenedor, nível, categoria e capacidades), fixada em um SHA de commit exato de 40 caracteres, sendo que a presença no diretório constitui admissão — e foi publicado como plugin-catalog.json para a CLI (obtido em tempo real e armazenado em cache em ~/.hermes/cache/). Agora, o site da documentação gera uma página por plugin (/docs/plugins/<name>) e por autor (/docs/plugins/by/<slug>) com base nesses mesmos dados. Cada página renderiza o README do plugin obtido do commit fixado, nunca da ponta de uma branch, por meio de uma lista de permissões aplicada no momento da compilação que remove HTML brutos, com ordenação por adição/atualização baseada nas datas dos commits. Os dez plugins da comunidade citados na versão v0.21.4 são todos entradas do catálogo nessa tag, com seus slugs reais no catálogo: hermes-tailscale, hermes-ssh, shodan, hermes-terminal, hermes-rss (além de um rss-reader separado), hermes-resetwatch, done-bell, kiwi, cognee e web-octen. No aplicativo para desktop, a central de Plugins agora pode desinstalar um plugin mediante uma caixa de diálogo de confirmação — plugins do catálogo por meio de plugins.manage remove e plugins independentes para desktop por meio do carregador do Electron.51
hermes plugins # Interactive enable/disable UI
hermes plugins browse # List every curated plugin catalog entry (v0.21.2+)
hermes plugins search <query> # Search the curated plugin catalog (v0.21.2+)
hermes plugins install <name|repo> # Install from the curated catalog, a Git URL, or owner/repo
hermes plugins enable <name>
hermes plugins disable <name>
hermes plugins list
hermes plugins pack install <src> # Shareable SHA-pinned plugin sets; also: pack export, pack show (v0.21.2+)
Janela de compatibilidade (v0.21.1), agora expirada: plugins externos precisavam abandonar os caminhos de importação anteriores à decomposição até 14 de setembro de 2026. A decomposição de setembro de 2026 (PR #102117) realocou os componentes internos que os plugins costumavam importar, e uma camada temporária
COMPAT_MANIFEST.mdreexportou 1.148 nomes públicos movidos de seus módulos antigos, emitindo um aviso uma vez por nome em cada processo (HermesPluginCompatWarning). A remoção entrou em vigor conforme previsto em 14 de setembro de 2026 por meio de uma verificação de data no código distribuído (COMPAT_REMOVAL_DATEemhermes_cli/plugin_compat.py; não foi necessário reverter código): desde essa data, um plugin afetado é desabilitado — não carregado —, com um aviso vermelho no banner da CLI, emhermes doctorehermes update, uma caixa de diálogo exibida uma única vez no desktop e o motivo informado emhermes plugins list. Para autores:hermes plugins compat <path>ainda mostra cadafile:linecom caminho antigo -> caminho novo e encerra com código 1 enquanto restar qualquer ocorrência (adicione--jsonpara obter uma saída legível por máquina). Usuários presos a um plugin sem manutenção ainda podem definirplugins.allow_deprecated_imports: trueemconfig.yaml— o valor precisa ser um booleano YAML literal, não uma string entre aspas — e isso ainda funciona porque a reversão que exclui os caminhos antigos ainda não foi incorporada: o manifesto e os shims estão presentes emv2026.9.14,v2026.9.21,v2026.9.24e emmainaté 24 de setembro (o ciclo da v0.21.4 alterou o módulo de compatibilidade apenas para armazenar verificações de plugins em cache e normalizar caminhos do Windows; o ciclo da v0.21.5 não alterouhermes_cli/plugin_compat.pye removeu somente as entradas do manifesto referentes ao módulo Hindsight excluído). Essa saída de emergência deixa de funcionar assim que a reversão for incorporada, porque os próprios caminhos antigos desaparecem. Somente nomes públicos de nível superior estavam cobertos; nomes privados e pontos de substituição temporária usados em testes nunca fizeram parte da interface e não são restaurados.4253 Nav0.21.6, essa saída de emergência foi fechada: o manifesto, os shims, o verificadorhermes plugins compateplugins.allow_deprecated_importsforam removidos, ehermes_cli/plugin_compat.pyagora é um stub inerte, mantido para atualizadores que ainda são executados em checkouts mais antigos; um plugin que ainda importe um caminho anterior à decomposição não conseguirá ser importado.55
Princípios de design
Da página de arquitetura do projeto original:3
| Princípio | O que significa na prática |
|---|---|
| Estabilidade do prompt | O prompt de sistema não muda no meio da conversa. Nenhuma mutação que invalide o cache, exceto por ações explícitas do usuário (/model) |
| Execução observável | Toda chamada de tool fica visível para o usuário por meio de callbacks. Atualizações de progresso na CLI (indicador giratório) e no gateway (mensagens no chat) |
| Interrompível | Chamadas de API e a execução de tools podem ser canceladas durante o processamento por entradas do usuário ou sinais |
| Núcleo independente de plataforma | Uma única classe AIAgent atende à CLI, ao gateway, ao ACP, ao processamento em lote e ao servidor de API. As diferenças entre plataformas ficam no ponto de entrada |
| Baixo acoplamento | Subsistemas opcionais (MCP, plugins, provedores de memória e ambientes de RL) usam padrões de registro e controle por check_fn, não dependências rígidas |
| Isolamento de profiles | Cada profile recebe seu próprio HERMES_HOME, suas próprias configurações, memória, sessões e PID do gateway. Vários profiles são executados simultaneamente |
Migração do OpenClaw
Hermes Agent é o sucessor do OpenClaw. Se você estiver migrando de uma instalação existente do OpenClaw:65
hermes claw migrate --dry-run # Preview what would be migrated
hermes claw migrate --preset full # Full migration including API keys
hermes claw migrate --preset user-data --overwrite # User data only, no secrets
hermes claw migrate --source /custom/path # Non-default OpenClaw location
hermes claw migrate lê de ~/.openclaw por padrão (e também detecta automaticamente os diretórios legados ~/.clawdbot e ~/.moldbot) e grava em ~/.hermes.6
Importados diretamente (mais de 30 categorias): SOUL.md, MEMORY.md, USER.md, AGENTS.md, skills de 4 diretórios de origem, modelo padrão, provedores personalizados, servidores MCP, tokens e listas de permissões de plataformas de mensagens (Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost), padrões do agente (nível de raciocínio, compactação, atraso humano, fuso horário, sandbox), políticas de redefinição de sessão (agora inativas: desde a v0.21.1, os temporizadores nunca alternam uma conversa43), regras de aprovação, configurações de TTS, configurações do navegador, configurações de ferramentas, tempo limite de execução, lista de comandos permitidos, configuração do gateway e chaves API de 3 fontes.6
Arquivados para revisão manual: tarefas cron, plugins, hooks/webhooks, backend de memória (QMD), configuração do registro de skills, interface/identidade, registros de log, configuração multiagente, associações de canais, IDENTITY.md, TOOLS.md, HEARTBEAT.md, BOOTSTRAP.md.6
A resolução da chave API verifica três fontes na seguinte ordem de prioridade: valores da configuração → ~/.openclaw/.env → auth-profiles.json.6
Solução de problemas
“Nenhum provedor de inferência configurado. Execute ‘hermes model’ para escolher um provedor e um modelo”
Este é o primeiro erro encontrado em toda instalação nova: o Hermes ainda não identificou um provedor. A mensagem significa exatamente o que diz — nenhum dos três métodos de autenticação resultou em um provedor utilizável. Execute:
hermes model
O seletor interativo apresenta todos os provedores compatíveis, inclusive os fluxos de código de dispositivo OAuth (Nous Portal, GitHub Copilot, Anthropic, OpenAI Codex) e endpoints personalizados para servidores auto-hospedados. Se você esperava que um provedor já estivesse configurado, hermes doctor mostra quais credenciais o Hermes realmente consegue detectar. As causas mais comuns são uma chave API definida no lugar errado (ela deve ficar no .env ou ser configurada com hermes config set, não no perfil do shell), uma credencial OAuth expirada em ~/.hermes/auth.json ou um endpoint personalizado no config.yaml que perdeu seu base_url. Os métodos de autenticação são abordados em detalhes em Autenticação e provedores.27
“Chave API não definida”
Execute hermes model para configurar seu provedor de forma interativa ou hermes config set OPENROUTER_API_KEY your_key. O comando hermes doctor informará exatamente quais chaves estão faltando.7
“Limite de contexto: 2048 tokens” na inicialização (modelos locais)
O Hermes detecta automaticamente o tamanho do contexto pelo endpoint /v1/models do seu servidor, mas muitos servidores locais informam valores padrão baixos. Defina-o explicitamente no config.yaml:2
model:
default: your-model
provider: custom
base_url: http://localhost:11434/v1
context_length: 32768
As chamadas de ferramentas aparecem como texto em vez de serem executadas
Seu servidor não está com as chamadas de ferramentas ativadas ou o modelo não oferece suporte a elas por meio da implementação do servidor.2
| Servidor | Correção |
|---|---|
| llama.cpp | Adicione --jinja ao comando de inicialização |
| vLLM | Adicione --enable-auto-tool-choice --tool-call-parser hermes |
| SGLang | Adicione --tool-call-parser qwen (ou o parser apropriado) |
| Ollama | As chamadas de ferramentas são ativadas por padrão — verifique com ollama show <model> se o modelo oferece suporte a elas |
| LM Studio | Atualize para a versão 0.3.6 ou posterior e use um modelo com suporte nativo a ferramentas |
As respostas são interrompidas no meio da frase
Há duas causas possíveis:2
- Limite de saída baixo (
max_tokens) no servidor — o padrão do SGLang é 128 tokens por resposta. Defina--default-max-tokensno servidor ou configuremodel.max_tokensnoconfig.yaml. - Esgotamento do contexto — o modelo preencheu toda a janela de contexto. Aumente
model.context_lengthou ative a compactação de contexto no Hermes.
“Conexão recusada” do WSL2 para um servidor de modelos hospedado no Windows
O WSL2 usa um adaptador de rede virtual com sua própria sub-rede — localhost dentro do WSL2 se refere à máquina virtual Linux, não ao host Windows. Há duas opções:2
Rede espelhada (Windows 11 22H2 ou posterior): edite %USERPROFILE%\.wslconfig:
[wsl2]
networkingMode=mirrored
Depois, execute wsl --shutdown e reinicie. Agora, localhost funciona nos dois sentidos.
Alternativa com o IP do host (versões anteriores do Windows): obtenha o IP do host Windows dentro do WSL2 e use-o no lugar de localhost:
ip route show | grep -i default | awk '{ print $3 }'
# Use that IP as the base_url host
Você também precisa configurar o servidor de modelos para escutar em 0.0.0.0, não em 127.0.0.1 — defina OLLAMA_HOST=0.0.0.0 para o Ollama, adicione --host 0.0.0.0 para llama-server/SGLang ou ative “Serve on Network” no LM Studio.2
O limite de iterações ignora agent.max_turns
Se a linha de atividade exibir N/90 (ou outro limite desatualizado), enquanto o config.yaml especificar agent.max_turns: 500, a causa provável será uma linha HERMES_MAX_ITERATIONS obsoleta em ~/.hermes/.env: anteriormente, o assistente de configuração gravava o limite nos dois locais e, se a ponte de inicialização fosse interrompida devido a um erro anterior de análise da configuração, o valor fantasma do .env prevalecia silenciosamente. Desde a v0.21.1, hermes doctor detecta esse par conflitante, e hermes doctor --fix exclui a linha do .env, deixando o config.yaml como fonte autoritativa.41
Onde fica cada coisa?
hermes status e hermes dump são úteis aqui. hermes logs list mostra todos os arquivos de log e seus tamanhos. hermes config path exibe a localização do arquivo de configuração. hermes config env-path exibe a localização do .env.6
Perguntas frequentes
Qual é a diferença entre o Hermes Agent e o Claude Code?
O Claude Code é o CLI oficial da Anthropic, limitado aos modelos da Anthropic. O Hermes Agent é um framework de agente de código aberto da Nous Research que funciona com qualquer provedor compatível com a OpenAI — Nous Portal, OpenRouter, Anthropic, GitHub Copilot, z.ai, Kimi, MiniMax, DeepSeek, Hugging Face, Google ou seu próprio endpoint auto-hospedado.12 O Hermes também inclui um gateway de mensagens para Telegram/Discord/Slack/WhatsApp/Signal, recurso que o Claude Code não oferece.
Posso usar o Hermes com uma chave API da Anthropic?
Sim. Há três maneiras:2
- Defina
ANTHROPIC_API_KEYem~/.hermes/.enve executehermes chat --provider anthropic --model claude-sonnet-4-6 - Execute
hermes modele selecione Anthropic — o Hermes usará o armazenamento de credenciais do Claude Code quando estiver disponível - Defina manualmente um
ANTHROPIC_TOKEN(setup-token ou token OAuth) como alternativa
A opção 2 é a mais indicada se você já usa o Claude Code na mesma máquina — ela mantém atualizáveis as credenciais Claude que permitem renovação.
Como posso trocar de provedor sem perder minha conversa?
Use /model provider:model durante uma sessão. O histórico da conversa, a memória e as skills são mantidos:9
/model zai:glm-5
/model openrouter:anthropic/claude-sonnet-4
/model custom:local:qwen-2.5
Configurei a Anthropic, mas visão/web/compressão não funcionam
Nas versões atuais, isso praticamente não pode mais acontecer como antes. Por padrão (auxiliary.*.provider: "auto"), todas as tarefas auxiliares — visão, classificação de aprovações, compressão e títulos de sessões — são executadas pelo seu modelo de chat principal. Assim, uma configuração exclusiva da Anthropic atende a essas tarefas com o OAuth que já possui. O padrão antigo (Gemini Flash via OpenRouter → Nous → detecção automática do Codex, com degradação silenciosa quando nenhum deles estava configurado) não existe mais: “auto agora usa o modelo principal para todos, e as substituições específicas por tarefa em config.yaml continuam tendo precedência”.34
Se uma tarefa auxiliar ainda falhar, procure uma substituição explícita por tarefa que aponte para um provedor que você nunca configurou (auxiliary.<task>.provider / .model em config.yaml) ou chaves legadas desatualizadas: desde a tag v2026.8.31, o sumarizador de compressão é configurado como qualquer outro slot auxiliar — auxiliary.compression.provider — e as chaves legadas compression.summary_* são migradas automaticamente para esse local (versão 17 da configuração).31 A extração da web não é mais uma tarefa de LLM (“nenhum LLM envolvido”), portanto uma falha na sumarização da web não é um problema do modelo auxiliar nas versões atuais.34 Para vincular explicitamente uma tarefa ao seu provedor principal:
auxiliary:
vision: { provider: "main" }
compression: { provider: "main" }
Qual é a diferença entre SOUL.md e AGENTS.md?
SOUL.md define a identidade do seu agente — tom, estilo e padrões de comunicação. Ele fica em ~/.hermes/SOUL.md e acompanha você em todos os lugares. AGENTS.md é específico do projeto — arquitetura, convenções, comandos e caminhos — e fica no diretório do projeto.13 Se deve acompanhar você em todos os lugares, use SOUL.md. Se pertence a um projeto, use AGENTS.md.
Como posso executar várias instâncias do Hermes lado a lado?
Use profiles. Cada profile tem seu próprio HERMES_HOME, configurações, memória, sessões e PID do gateway:6
hermes profile create work --clone
hermes profile use work # Sticky default
hermes -p work chat -q "..." # One-off without switching
hermes profile alias work --name h-work # Wrapper script
O Hermes oferece suporte a LLMs locais?
Sim, por meio do caminho de endpoint personalizado. O Hermes funciona com qualquer servidor compatível com a OpenAI: Ollama, vLLM, SGLang, llama.cpp/llama-server, LM Studio, LocalAI, Jan ou um servidor próprio.2 Consulte Endpoints personalizados e auto-hospedados para ver a configuração específica de cada servidor.
Por que meu banner de inicialização mostra menos tools do que o guia afirma que o Hermes possui?
O guia menciona 47 tools/20 toolsets do registro de arquitetura do projeto upstream — esse é o número total de tools cujo código-fonte acompanha o Hermes em todos os toolsets. Sua instalação em execução mostra um número menor no banner (a instalação de referência usada neste guia informa 28 tools) porque o Hermes habilita apenas o conjunto padrão de toolsets na inicialização. Muitos toolsets precisam ser habilitados explicitamente: adaptadores do gateway de mensagens, automação de navegador, stacks de scraping mais pesados e várias integrações especializadas precisam ser listados em toolsets: no arquivo ~/.hermes/config.yaml antes de serem carregados. Total do registro = “o que está disponível se você habilitar”. Total do banner = “o que seu profile atual realmente carregou”. Use hermes tools --list para ver quais toolsets estão ativos e quais estão disponíveis, mas desabilitados. Ative ou desative toolsets individuais durante a execução com /tools enable <name> e /tools disable <name> (a desativação reinicia a sessão para que o agente reconstrua seu manifesto de tools com a nova estrutura).
Como o Hermes lida com o fallback de modelo quando meu provedor principal falha?
Configure um bloco fallback_model em config.yaml:2
fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4
Quando o provedor principal falha (limite de requisições, erro do servidor ou falha de autenticação), o Hermes troca para o fallback durante a sessão sem perder o histórico da conversa. Isso acontece no máximo uma vez por sessão.
O agente pode aprimorar as próprias skills ao longo do tempo?
Sim — essa é a parte de “autoaprimoramento” do Hermes Agent. O agente pode criar, atualizar e excluir skills por meio da tool skill_manage. Quando descobre um fluxo de trabalho não trivial, ele salva a abordagem como uma skill para reutilização futura.11 O agente cria skills após tarefas complexas (mais de 5 chamadas de tools), quando encontra erros e descobre o caminho que funciona, quando você corrige sua abordagem ou quando ele descobre um fluxo de trabalho não trivial.
Existe integração com IDE?
Sim — o Hermes pode ser executado como um servidor ACP (Agent Client Protocol) para VS Code, Zed e JetBrains:6
pip install -e '.[acp]'
hermes acp
Changelog
| Data | Alteração | Fonte |
|---|---|---|
| 2026-10-13 | Guia v1.25: Hermes v0.21.7 (tag v0.21.7, 11 de outubro) — quinto patch cumulativo, o primeiro distribuído em todos os canais (desktop, Store/MSIX, instalador, Docker, Cloud); notas selecionadas adiadas para a v0.22.0. Nova seção de novidades no início; o resumo aponta para ela. Cobertura aprofundada até o nível da tag: instalações pelo código-fonte acompanham os lançamentos com tag (hermes update --set-channel main para continuar acompanhando main, --channel, --install-id, registros por instalação em update.installs), seletor do canal Update no desktop, reprodução de raciocínio assinado ao retomar e raciocínio do Bedrock Converse, tratamento do erro 403 e de tokens na verificação da versão estável, Holographic movido para o catálogo (o núcleo mantém ByteRover e RetainDB), catálogo ampliado de 493 para 552. Atualizadas a linha hermes update da tabela de CLI e a seção de provedores externos de memória; a seção da v0.21.6 recebeu uma nova data. |
5657 |
| 2026-10-11 | Guia v1.24: Hermes v0.21.6 (tag v0.21.6, 8 de outubro) — quarto patch cumulativo, o primeiro do novo pipeline de versões estáveis (apenas tag, lançamento no GitHub e imagem Docker); notas selecionadas adiadas para a v0.22.0. Nova seção de novidades no início; o resumo aponta para ela. Cobertura aprofundada até o nível da tag: transcrição ao vivo com stt.streaming, slot auxiliary.voice_chat, plugins.isolation: host, mais quatro provedores de memória movidos para o catálogo (Honcho, Mem0, OpenViking e Supermemory; o núcleo mantém ByteRover, Holographic e RetainDB), remoção da camada de compatibilidade de plugins e de allow_deprecated_imports, hermes status agora mostra primeiro o resumo (--full, --deep; a tag não tem a flag --short), pacotes de idiomas conectáveis, plugins de provedores ampliados de 38 para 41, GPT-6.1 Sol e Claude Sonnet/Haiku 5.5 nos seletores, dois detectores de aprovação, degradação da integridade do armazenamento de cron, onboarding do Discord e correções de segurança para Tenable, git-filter e email-sender. Atualizadas as seções de modelos auxiliares, localização, a tabela de CLI, provedores externos de memória, Messaging Gateway, sistema de plugins, o quadro de compatibilidade e o reforço de segurança. |
5455 |
| 2026-09-24 | Guia v1.23: o bloco introdutório da v0.14.0, que permanecia acima da versão atual desde a primeira edição do guia, agora encerra o histórico de novidades como a seção mais antiga, seguindo a ordem da mais recente para a mais antiga usada no restante do histórico. Nenhuma alteração de conteúdo; agora o resumo passa diretamente dos principais pontos para a nota sobre as fontes e a seção Escolha seu caminho. | Estrutura do guia |
| 2026-09-24 | Guia v1.22: Hermes v0.21.5 (tag v2026.9.24, 24 de setembro) — terceiro patch cumulativo, com notas selecionadas adiadas para a v0.22.0. Nova seção de novidades no início; o resumo aponta para ela. Cobertura aprofundada até o nível da tag: Hindsight movido da árvore principal para o catálogo de plugins (ausente nas notas da versão), com migração automática; descontinuação de gateway.multiplex_profiles: false, estacionamento por profile e gateway.standalone; GPT-6 Sol/Luna e Claude Opus 5.5 nos seletores da Nous e do OpenRouter. A seção de provedores externos de memória agora lista sete provedores incluídos, além do Hindsight no catálogo. A seção Messaging Gateway ganhou um parágrafo sobre a opção de desativação removida. Quadro de compatibilidade verificado novamente na tag: plugin_compat.py permanece inalterado e a saída de emergência ainda funciona. Correção: há 38 plugins de provedores incluídos, não 39, e a linha OpenCode Free foi marcada como removida; ambas as alterações datam de 18 de setembro. |
5253 |
| 2026-09-23 | Guia v1.21: revisão de correção e legibilidade, ainda no Hermes v0.21.4 (tag v2026.9.21; nenhuma versão mais recente). A seção de novidades agora segue da mais recente para a mais antiga, a v0.21.3 ganhou uma seção própria e o resumo começa pela versão atual. Pareamento: decline é o único valor novo; o padrão efetivo passa a ser ignore quando qualquer lista de permissões é definida; o formato de YAML é platforms.<name>.unauthorized_dm_behavior ou a chave no nível superior. stream-json aceita --query-file, que ganhou uma linha na tabela de opções. set-journal-mode explica a regra de interromper tudo e a opção --force no Windows. O parágrafo sobre o singleton do host agora começa pelo comportamento para o operador. Removidas as frases sobre processos de gravação. |
5051 |
| 2026-09-22 | Guia v1.20: Hermes v0.21.4 (tag v2026.9.21, 21 de setembro) — o segundo patch cumulativo: “5.071 commits sem merge”, “5.169 arquivos alterados”, “1.812 PRs mesclados” e “2.116 issues encerradas” desde a v0.21.3, em uma nota breve que adia a cobertura selecionada para a v0.22.0. Nova seção de novidades abaixo do bloco da v0.21.3. Todos os cinco números de destaque foram reproduzidos exatamente no clone local no commit de medição indicado, 4b8a8134 (a tag adiciona um commit de lançamento: 5.072 sem merge; total de 5.173 na comparação com merges, igual ao API de comparação do GitHub); segunda maior janela entre tags já registrada, atrás dos 5.139 da v0.21.1 (essa afirmação foi verificada novamente e continua correta). A lista de itens intencionalmente não documentados da versão foi coberta SOMENTE após a verificação do código-fonte na tag, com cada item incluído em sua seção permanente: singleton do host (gateway/host_rendezvous.py: um hermes serve + um hermes gateway run por host, por usuário do sistema operacional, com bloqueio do host + registro de rendezvous e comprovação de atividade por (pid, createTime); host_attach.py com cinco resultados: ATTACH/RESCAN/REPLACE_HOST/REFUSE/START; metade do desktop em host-backend-attach.ts, na sequência ledger -> HTTP -> token -> WS, com um gate de inicialização no nível do host — a seção Messaging Gateway ganhou esse parágrafo); uma operação de conectores controlada pelo backend (tools/connectors/operation.py, “Dados puros, sem E/S”, prazo de 300 s deliberadamente não configurável, cartão de configuração manage_connections no desktop/TUI/CLI conforme o teste na tag — subseção do nível gratuito da Nous ampliada); --format stream-json (_parser.py:247-249 + hermes_cli/stream_json.py: system/init -> text/tool_use/tool_result -> um envelope result; exige -q, implica --quiet, rejeita --tui, limite de 5.000 caracteres para ferramentas — a tabela de opções do chat ganhou uma linha); skills.auto_load (config_defaults.py:1435, “fixadas como totalmente carregadas em cada nova sessão (CLI, TUI, gateway, cron, API)”, resolvido uma vez durante a montagem do prompt, nomes ausentes geram um aviso e são ignorados, HERMES_IGNORE_RULES suprime — nova subseção de skills fixadas); decline do gateway (gateway/config.py:139, uma recusa educada seguida de 24 h de silêncio conforme DECLINE_DEDUPE_SECONDS #88028, unauthorized_dm_decline_message, configuração por plataforma em platforms.<name>.extra, Email usa ignore por padrão — seção de pareamento ampliada); mcp.discovery_concurrency (config_defaults.py:526, padrão 4, 0 = ilimitado #117373, valores inválidos geram um aviso e voltam ao padrão, todos os servidores ainda se conectam — seção de MCP ampliada); session_search com after/before + nova tentativa flexível com OR (schema da ferramenta :708-725, limites inclusivos/exclusivos, ISO ou 7d/24h/2w; hermes_state_search.py:1151-1163, nova tentativa com QUALQUER termo quando não há resultados no índice unicode61, mantendo a semântica de correspondência exata; consultas com OR/NOT, termo único e CJK ficam de fora — seção de busca de sessões ampliada, e a afirmação desatualizada dessa seção sobre “resumo com Gemini Flash” foi CORRIGIDA para refletir o design único sem LLM da v0.15.0 conforme 34); hermes sessions set-journal-mode delete\|wal (subcommands/sessions.py:177 + sessions_cmd_journal_mode.py, autoatendimento offline para #100896, rejeita processos externos que estejam mantendo o arquivo aberto, verifica os bytes 18/19 do cabeçalho, doctor orienta a usá-lo — linha de sessões + seção de armazenamento de sessões ampliadas); onda do desktop (campo de fonte desktop.font_family substituindo --dt-font-sans do tema, sugestões priorizando acessibilidade; “Mecanismo de atualização” para atualizar o runtime com um clique e permitir nova tentativa visível em caso de falha; desinstalação pelo hub de plugins mediante confirmação via plugins.manage remove / carregador do Electron); catálogos de vídeo (plugins/video_gen/fal com ltx-2.5 + kling-o3 e strings de recursos da tag; linha na lista de referência de toolsets); expansão do catálogo de plugins (plugin-catalog/ passou de 9 para 228 entradas no período, admissão de YAML fixada por SHA, páginas de site por plugin/autor com READMEs de commits fixados por meio de um renderizador com lista de permissões, ordenação por adição/atualização com base nas datas dos committers; os dez plugins da comunidade citados na versão foram confirmados nos slugs reais hermes-tailscale/hermes-ssh/shodan/hermes-terminal/hermes-rss/hermes-resetwatch/done-bell/kiwi/cognee/web-octen — seção do sistema de plugins ampliada). A categoria de correções (isolamento de profile/multiplex, cron, kanban, desktop, state.db) foi MANTIDA para a análise da v0.22.0, conforme o próprio adiamento indicado pela versão. Estado de compatibilidade verificado novamente: a reversão que exclui caminhos AINDA não foi incorporada — manifesto + shims presentes em v2026.9.21 E em main no commit a53b42ddea (22 de setembro de 2026, obtido no mesmo dia); as alterações no período de plugin_compat.py são apenas um cache de varredura de plugins + caminhos do Windows no formato POSIX (#112576), a proteção contra booleanos literais mudou de :261-268 para :296-303 e ainda usa is True; a atualidade das informações foi renovada no tópico da v0.21.1, no bloco da v0.21.3, no quadro do sistema de plugins e em 42. Novas marcações em v2026.9.21: 39 provedores estáticos (contagem pela AST em models_catalog_static.py:311) e 39 pastas de plugins de provedores, ambos inalterados; a marcação da contagem de provedores no resumo mudou de v2026.9.14 para v2026.9.21; a expressão “versão atual” foi removida da v0.21.3. |
505142 |
| 2026-09-15 | Guia v1.19: Hermes v0.21.2 (tag v2026.9.11, 11 de set.) “The state.db Patch Release” + v0.21.3 (tag v2026.9.14, 14 de set.) e as consequências do prazo de compatibilidade de plugins. Nova seção de novidades abaixo da seção da v0.21.1. A v0.21.2 (“947 commits sem merge”, “312 PRs com merge”, “140 colaboradores”) começa com a campanha de confiabilidade do state.db (seis PRs, 44 issues: coordenação de salas hospedadas transferida do armazenamento raiz para shared-state.db — gateway/hosted_rooms.py:398-426 verificado no tag; o dashboard abre primeiro em modo somente leitura; proteção do cron pelo registro de conexões rastreadas; doctor --fix recusa checkpoints cuja segurança não pode ser comprovada; danos ao índice FTS degradam a busca em vez de encerrar o turno com falha; linhas corrompidas exibem ? em vez de fazer sessions list falhar; vinculação fixada ao profile; aberturas somente leitura deixam de adquirir o bloqueio de escrita, de 4–20 s para 0,01 s; mantida a orientação operacional da versão: primeiro hermes doctor, depois hermes sessions recover --inspect-only — parser em hermes_cli/subcommands/sessions.py:185-196, e o subcomando É ANTERIOR a essa janela (presente em v2026.8.31), portanto está documentado como recém-abordado, não como novo); reforço do isolamento entre vários profiles (#107609-#107630 corrigiu falhas reais na promessa de “isolamento total” mantida desde a v0.19.0 — listas de permissões herdadas, credenciais enviadas ao host do profile padrão, segredos do cofre enviados a servidores MCP por stdio, anexos MEDIA: entre profiles, tokens bearer da Nous entre profiles irmãos; notas com uma descrição transparente foram adicionadas em Profiles e no parágrafo sobre multiplexação do Messaging Gateway); o cofre de credenciais sem acesso a senhas (faça login, pague e preencha automaticamente usando 1Password, Bitwarden ou o cofre local por meio de identificadores com namespace que contêm apenas metadados, com a senha recuperada no momento do preenchimento; a senha mestra nunca é um argumento de ferramenta; TOTP gerado com uma chave de autenticador salva — agent/vault_backends/ + agent/vault_store.py:74-105 verificados no tag); o catálogo de plugins (hermes plugins browse/search + install integrado ao catálogo + pack install/export/show, fixados por SHA — subparsers verificados no tag; bloco de comandos do Plugin System atualizado); o plano gratuito da Nous + primeira inicialização guiada (inferência e conectores gratuitos, /login em um chat, HERMES_GUEST_ONBOARDING=1, em que SOMENTE o valor literal 1 habilita o recurso — guest-onboarding-flag.test.ts verificado; nova subseção em Nous Tool Gateway); e correções para tempestades de criação de processos no desktop. Pequeno bloco da v0.21.3 (“1.036 commits sem merge”, “338 PRs com merge”; tag criado para que agentes do Cloud com atualização automática o recebam): a atualização de token single-flight elimina a revogação de sessões causada por rajadas de atualização (commit 5dea46d13d, #110061), e identificadores duplicados de escrita no state.db foram eliminados (commit 939a2f64b4, #110934), ambos verificados somente na janela v2026.9.11..v2026.9.14; o adiamento informado pela própria versão foi citado (“As notas completas e selecionadas desta janela serão lançadas com a v0.22.0, que documentará tudo a partir da v0.21.0” … “Nada desta janela será ignorado”), e a lista de itens intencionalmente não documentados (seletores de esforço de raciocínio, PKCE do OpenRouter, HEIF/AVIF, a onda do FAL, API de Slack Agent Sessions, recusa de WAL entre VMs) foi mencionada na linha e RESERVADA para a análise da v0.22.0. As consequências do prazo de compatibilidade foram reescritas no passado no item de decomposição da v0.21.1, na caixa do Plugin System e em 42: a remoção entrou em vigor CONFORME PROGRAMADO por meio de uma condição de data, não de uma reversão de código (hermes_cli/plugin_compat.py:32 em v2026.9.14 define COMPAT_REMOVAL_DATE; removal_in_effect() em :86-90 retorna verdadeiro desde 2026-09-14), e os plugins afetados agora ficam desabilitados com o aviso vermelho — mas a reversão que exclui os caminhos de importação antigos NÃO foi incorporada (COMPAT_MANIFEST.md + compat_manifest.json + shims presentes no tag E em main no commit 5d59366010, obtido em 2026-09-15 às 12:55 PT), portanto plugins.allow_deprecated_imports: true ainda mantém os plugins afetados em funcionamento; somente o booleano literal (plugin_compat.py:261-268, is True — uma string entre aspas nunca ativa a exceção). Somente no changelog, verificado na versão ou no código-fonte: bots_require_mention do Telegram faz bots exigirem uma @menção, interrompendo loops entre bots; hermes -z --resume continua a sessão (-z = --oneshot, hermes_cli/_parser.py:113); verificações passivas de atualização acessam o GitHub API no máximo uma vez por dia, em vez de executar git fetch a cada 30 min (banner.py:129-131 em v2026.9.11, :136-139 em v2026.9.14); hermes backup -k/--keep mantém por padrão apenas os 3 arquivos zip mais recentes (subcommands/backup.py:24-26), e os backups de config.yaml ficam em uma única pasta limitada, backups/config/; as chaves de model_thresholds podem ser vinculadas ao provider no formato provider:substr (agent/context_compressor.py:1558-1567); --clone-all não copia mais tarefas cron (a flag pertence a hermes profile, subcommands/profile.py:24, NÃO a hermes cron); kanban promote recusa itens com tarefas principais não concluídas, e kanban_request_review rejeita profiles de revisores desconhecidos; /model e o modo automático auxiliar nunca cobram de um provider que você não selecionou nem mudam automaticamente para um sem credenciais; os seletores adicionam DeepSeek V4.1 Flash (Nous Portal + OpenRouter), GPT Image 2.5 e Opus 5 + Fable 5.1 ao seletor nativo da Anthropic; a retenção de debug share foi reduzida para 1 dia no fallback do dpaste. Novas medições em v2026.9.14: 39 providers estáticos (contagem AST de CANONICAL_PROVIDERS em models_catalog_static.py:314) e 39 pastas de plugins de providers, ambos sem alterações; o padrão de --max-turns agora é 500 em cli.py:404 (cli.py:400 em 41 continua correto para seu tag); model_catalog.ttl_minutes é 20 (config_defaults.py:1866); a afirmação de que a v0.21.1 tem a maior janela (5.139) continua verdadeira em comparação com as duas novas janelas (contagens locais de 959 e 1.037 commits sem merge); a referência da contagem de providers no TL;DR foi atualizada de v2026.9.7 para v2026.9.14. |
484942 |
| 2026-09-08 | Guia v1.18: Hermes v0.21.1 (tag v2026.9.7, 7 de setembro) — o patch de consolidação: o maior intervalo entre tags até agora (“5.139 commits sem merge”, “632 PRs mesclados”), acompanhado de uma nota de patch deliberadamente breve que adia as notas selecionadas para a v0.22.0. Nova seção de novidades acima da seção Pantheon, com seis grupos verificados nas fontes: a decomposição de setembro + o prazo de compatibilidade de plugins em 2026-09-14 (COMPAT_MANIFEST.md: 1.148 nomes movidos para carregamento lazy, HermesPluginCompatWarning uma vez por nome, o verificador hermes plugins compat, a válvula de escape plugins.allow_deprecated_imports; uma caixa sobre a janela de compatibilidade adicionada ao sistema de plugins), limites de conversa do gateway somente quando acionados explicitamente (SessionResetPolicy agora está inerte — Messaging Gateway atualizado, lista de migração do claw anotada), OAuth por código de dispositivo do MCP (hermes mcp login --flow device, RFC 8628; login e reauth --all adicionados ao bloco de comandos do MCP; propriedade do profile por meio de sessões de OAuth, caches de metadados malformados ignorados, callbacks locais do cliente para desktop, filtros -t na inicialização de servidores MCP), confiabilidade da delegação (unidades de conclusão por meio de delegation.independent_completions com group por tarefa, uma conclusão por chamada por padrão; transferência de processos em segundo plano com orphaned_processes e unread_completions identificados nos resultados; delegation.fallback_providers; cadeias de agentes filhos validadas pelo normalizador; resultados parciais resistentes a falhas; agentes filhos nunca herdam o nível de cache de 1 h — tudo lido no código-fonte da ferramenta de delegação na tag), provedores/modelos (GPT-6 Astra + Astra Pro com níveis fast/flex, restritos por conta no OAuth do Codex e com uma variante -900k opcional; claude-fable-5.1; gemini-3.7/3.8-flash; qwen3.8-max-0902; Muse Spark 1.3 + o plugin image_gen muse-image; busca/extração do Tavily; o runtime gerenciado do llama.cpp; provedores executados em processos externos; atualização do catálogo a cada 20 minutos por meio de model_catalog.ttl_minutes) e a onda para desktop (modo de comentários do navegador integrado ao aplicativo, levando seletor/marcação/estilos por anotação em lotes agrupados por região; controles estruturados de sessão + automação; arrastar para criar sessões; importação de sessões de transcrições externas; display.resume_last_session; consentimento para uso do profile real na primeira abertura; catálogo integrado de skills opcionais; localização do desktop em russo). Somente no changelog, verificado por commit ou nas fontes: confiabilidade do cron (transferência após reinicialização reforçada em três commits de correção verificados, deduplicação de entrega serializada com retenção no terminal, condição de corrida na criação de tarefas pausadas eliminada, mídia do cron no Discord encaminhada ao destino correto com falhas de upload relatadas, continuidade preservada durante ciclos silenciosos de auditoria), análise do shell para aprovações (escapes de separação e operandos argv0 do GNU env, limites de argv do env e de comentários do shell, corpos entre aspas de substituição de comandos mantêm seus limites de comando, approvals.deny dentro de contêineres isolados), o watchdog de atividade na inicialização do gateway (hermes_startup_watchdog.py; gateway.startup_watchdog com prazo de 300 s e encerramento forçado 75), resiliência do state.db (recuperação de achados perdidos com .recover do sqlite3, roteamento de FTS por like_scan, novo docs/state-db-recovery.md), desempenho (search_files executa ripgrep nativamente em hosts POSIX locais, transcrições dos agentes filhos de delegação excluídas do índice FTS de trigramas no schema v30, um cliente httpx compartilhado da OpenAI entre os fluxos principal e auxiliares), gateway.trust_env, o seletor /model do Slack Block Kit e a entrega de mídia em sandbox remoto (credenciais e links simbólicos para elas nunca saem da sandbox); a seção de solução de problemas ganha a verificação do doctor para o resquício obsoleto de HERMES_MAX_ITERATIONS. Recontagens na tag v2026.8.31 -> v2026.9.7: provedores estáticos 39 e pastas de plugins de provedores 39, ambos com entradas idênticas às da v0.21.0 — a afirmação da pré-análise de “38 estáticos, xai incorporado ao plugin” foi refutada na fonte (a tupla xai ainda está na lista estática; apenas o arquivo foi movido, hermes_cli/models.py -> hermes_cli/models_catalog_static.py:311); prompt_builder.py teve o caminho atualizado para agent/prompt_builder.py no modelo mental e no fluxo de dados da CLI; a afirmação da v0.16 sobre atualização horária do catálogo foi mantida restrita àquela versão, com a cadência de 20 minutos adicionada ao lado. Afirmações recorrentes verificadas novamente, sem alterações: a observação sobre o nome hermes approvals test, o padrão de 500 para --max-turns (cli.py:400 na tag; a docstring obsoleta que informa 60 não foi propagada), 2.000 linhas para read_file, limites de delegação de 250/10, compression.tail_mode: lean, Node 26, 17 localidades da CLI. |
41424344454647 |
| 2026-07-28 | Guia v1.12: Revisão de cobertura orientada pela demanda de busca — dois tópicos com boa conversão não tinham um título próprio como destino. Nenhum lançamento novo. O GSC mostra hermes swarm e hermes agent swarm convertendo entre 4,4% e 6,3% a partir de uma posição em torno de 8, e hermes smart model routing com 4,9% a partir da posição 6,7, embora nenhum dos termos tivesse uma seção: swarm aparecia apenas no texto do Kanban multiagente e em linhas do changelog, enquanto “smart model routing” só aparecia em uma nota de rodapé. Adicionada a seção O que é um swarm do Hermes? em Kanban multiagente — define swarm como trabalhadores paralelos atuando sobre um único quadro durável, documenta a topologia de swarm da v0.15.0, a decomposição automática, as substituições de modelo por tarefa, as tarefas agendadas e o gerenciamento de worktrees, além de apresentar em tabela a falha que cada mecanismo evita. Rotação e fallback de provedores foi renomeada para Smart Model Routing: rotação e fallback de provedores, com uma introdução que conecta pools de credenciais, modelo de fallback e roteamento auxiliar em um único sistema. Como nenhuma âncora tinha links internos, a renomeação não causa quebras. |
63 2 6 |
| 2026-08-31 | Guia v1.17: Hermes v0.21.0 “The Pantheon Release” (tag v2026.8.31, 31 de agosto) — a consolidação selecionada foi lançada. Nova seção de novidades acima da seção Herald, organizada pelas áreas de recursos do próprio lançamento: Bot Mode incluído e ativado por padrão no desktop (profiles nomeados, avatares determinísticos, conversas em grupo com @menções), mensagens diretas entre bots com hermes peer (as respostas chegam ao Bot Chat canônico de cada agente), continuidade do cron (continuity=true, blocos de notas duráveis, omissão de LLM no modo monitor, fixação do nível de esforço por tarefa — a seção Tarefas agendadas passa a incluir a mecânica dos quatro itens na tag), orquestração de subagentes em tempo real (delegate_task para listar/direcionar/interromper, saídas dos agentes filhos com schema JSON, padrões elevados para 250 iterações/10 agentes filhos simultâneos — verificado na fonte em config_defaults.py, em contraste com os valores obsoletos de 3/50 na página da documentação sobre delegação), a central de comandos do MCP (+ links de instalação hermes:// — seção do MCP atualizada), a onda de recursos da CLI (/palette + Ctrl+P e um /status com registro compartilhado adicionados às tabelas de comandos slash, /model com filtragem à medida que você digita documentado; o nome hermes approval-check das notas de lançamento demonstrado como hermes approvals test na tag — esse subcomando não existe), o navegador integrado ao aplicativo controlado pelo agente, a onda de provedores/modelos (seis novos provedores; a matriz ganha linhas para Tencent TokenPlan, Nebius Token Factory, Ramp Router e Alibaba Token Plan com variáveis de ambiente citadas da documentação; model_overrides; avisos sobre níveis de treinamento de dados; plugins de provedores via pip), a onda de segurança (gravações em AGENTS.md/skills/memory sempre exigem aprovação — security.protected_instruction_files: true e a restrição em tools/file_tools.py verificadas na tag; revisão de redação; cobertura de aprovações no Windows; hermes desktop --setup-tcc-identity; MCP do Blender removido — Reforço da segurança ganha uma quarta onda), amadurecimento do gateway, a onda de 8 skills e a lista de itens REVERTIDOS (Model Council /council, context engine DCP, servidor de gateway somente via WS — o replay com carimbo de sequência #94219 FOI lançado; Electron voltou para 40.10.2; o grep confirma que o guia nunca documentou nenhum dos recursos revertidos). A indicação de notas adiadas na subseção de consolidação está RESOLVIDA e agora aponta para a seção selecionada; os blocos de janela foram mantidos como registro de cada tag. Recontagens na tag v2026.8.27 -> v2026.8.31: provedores estáticos 38 -> 39 (+tencent-tokenplan), pastas de plugins de provedores 37 -> 39 (+nebius-token-factory, +router, ambos com auth_type="api_key"), linhas de provedores na documentação 41 -> 45; sem alterações e verificados novamente: 28 linhas de plataformas na documentação/24 membros do enum Platform (lista idêntica)/22 pastas de adaptadores, _BUILTIN_SUBCOMMANDS idêntico (73, peer presente desde as janelas de consolidação, sem version), 7 backends de terminal + registro de plugins (registro idêntico byte a byte), 14 personalidades e 17 localidades (listas idênticas/iguais byte a byte), padrão lean para compressão e lista de slots auxiliares, _startup_fast.py/portal_cli.py idênticos byte a byte. Divergência corrigida durante a verificação: hermes chat -q em um TTY agora inicia uma sessão interativa (o novo --oneshot restaura o comportamento de responder e sair), e o padrão de --max-turns na tabela de chat foi corrigido de 90 -> 500 conforme a ajuda do parser na tag. |
35363738394033 |
| 2026-08-27 | Guia v1.16: Hermes v0.20.6 (tag v2026.8.27, 27 de agosto) — quarta consolidação. A subseção de consolidação ganha sua quarta janela, conforme a própria descrição da versão (~1.313 commits em ~1.557 arquivos, +177.113 / −21.682 — ~525 PRs mesclados desde a v0.20.5): navegação com profile real condicionada a consentimento (profile padrão do Chromium, fluxo de fechamento com aprovação no Windows), o Browser do desktop em sua própria janela do sistema operacional, um mecanismo gerenciado de atualização remota do SSH e uma trilha de profiles para frotas, expansão do catálogo remoto de MCP (mais de 50 servidores hospedados por fornecedores e verificados em produção, incluindo Cloudflare, Grafana Cloud, Better Stack e Railway), criptografia opcional pelo chaveiro do sistema operacional para segredos armazenados, novos modelos no seletor (GLM-5.3-Flash, MiniMax M3 gratuito, MiniMax H3 Max video), cache de resultados com TTL para web_search/web_extract, tool_search com múltiplas consultas e stemming, atualizadores que pausam gateways pelo socket de controle, instalações gerenciadas por imagem/pacote que recusam atualizações inseguras no próprio local, confirmações de incidentes duráveis do cron, controles de expansão de links no Slack e identidades compartilhadas de contêineres Docker. Duas alegações da versão contradiziam seções existentes; ambas foram confirmadas no tag e corrigidas: a compressão lean-tail é o padrão (Context Compression reescrita com as chaves presentes no tag — tail_mode: lean, threshold_tokens, protect_first_n, ajustes do resumidor em auxiliary.compression.* com a migração automática da versão 17 da configuração; a observação invertida de solução de problemas foi corrigida) e os backends de terminal podem ser ampliados por plugins (reformulados como sete backends integrados mais um registro de plugins, no estilo do seletor de providers; os nomes integrados são reservados). As marcações no tag foram verificadas novamente e atualizadas de v2026.8.19 → v2026.8.27: 38 providers estáticos + 37 pastas de plugins de providers, 24 membros do enum Platform / 22 pastas de adaptadores / 28 linhas na tabela da documentação, nenhum subcomando version (73 entradas em _BUILTIN_SUBCOMMANDS, worktree presente), opções do parser e strings de ajuda entre aspas inalteradas, BUILTIN_PERSONALITIES ainda com 14 (helpful a hype); locales/ agora tem 17 catálogos (en + 16 traduções; contagem no tag adicionada). A main está EXATAMENTE no tag (ahead_by: 0, status idêntico). Também foi corrigida uma divergência encontrada durante a verificação: o padrão desatualizado do sistema auxiliar — agora, auto encaminha todas as tarefas auxiliares ao modelo principal do chat, em vez de usar a detecção Gemini Flash via OpenRouter → Nous → Codex; Auxiliary Models foi reescrita com a lista de slots presente no tag (title_generation, tts_audio_tags, triage_specifier, kanban_decomposer e profile_describer adicionados com descrições curtas baseadas nas fontes; os slots web_extract e session_search foram removidos upstream — nenhum deles usa mais um LLM — e flush_memories saiu dos padrões), e a entrada de solução de problemas exclusiva do Anthropic foi novamente fundamentada. A linha de instalação nova da versão usa a URL bruta do script GitHub; o guia mantém a URL canônica hermes-agent.nousresearch.com/install.sh. As notas selecionadas continuam prometidas para a v0.21.0. |
293031323334 |
| 2026-08-26 | Guia v1.15: CORREÇÃO — nenhuma versão nova (tag mais recente: v2026.8.19 / v0.20.5, 21 de agosto); as alegações existentes foram verificadas novamente no tag. Backends de terminal: seis → sete, com vercel_sandbox adicionado à tabela e ao comentário da configuração. Plataformas de mensagens: as contagens isoladas de “22” foram conciliadas com as 28 da tabela comparativa da documentação no tag, com a base de contagem declarada (24 membros integrados do enum Platform, 22 pastas de adaptadores incluídas) e ntfy e Buzz adicionados à lista do gateway. Providers: “~20 / ~22 de primeira classe” foi substituído pela contagem baseada nas fontes (38 entradas estáticas em CANONICAL_PROVIDERS, além da extensão automática por 37 plugins de providers incluídos; 41 linhas de serviços de nuvem/assinatura na página da documentação), a expressão “lista completa” foi removida, a linha do Qwen OAuth foi corrigida e 17 linhas foram adicionadas à matriz (OpenCode Free, OpenAI API direto, Vertex AI, Azure Foundry, Bedrock, NVIDIA NIM, Ollama Cloud, StepFun, MiniMax OAuth, Meta AI, NovitaAI, Arcee AI, GMI Cloud, Actual Computer, Tencent TokenHub, CommandCode e Alibaba Coding Plan). hermes version → hermes --version (não é um subcomando no tag). hermes honcho foi identificado como dependente de plugin. “fleet --plan” → hermes update --plan. Global Options ganha --in, --tui, --cli, --dev, --ignore-rules e --ignore-user-config; Top-Level Commands ganha 34 linhas de _BUILTIN_SUBCOMMANDS, incluindo hermes worktree list\|prune com suas flags; o comando de barra /worktree foi adicionado; hermes setup --portal e hermes portal login\|info\|open\|tools foram documentados. No momento da verificação, a main estava 1.104 commits à frente do tag (desde então, todos foram consolidados em v2026.8.27); as notas selecionadas estão prometidas para a v0.21.0. |
23242526272829 |
| 2026-08-24 | Guia v1.14: v0.20.5 (tag v2026.8.19, publicada em 21 de agosto). A subseção de consolidação ganha sua terceira janela (~746 commits / ~323 PRs desde a v0.20.4): a camada web sem chave (rotação gratuita entre 5 fornecedores com failover em anel — pesquisa na web em instalações novas sem nenhuma chave), aprimoramentos no CLI (seletor difuso de /model, paleta de comandos com Ctrl+P, /status mais detalhado), threads para salas de grupo no Bot Mode + resumos recolhíveis + arrastar e soltar PDFs/arquivos, hermes worktree list/prune, recibos de hermes update e verificação de --plan para frotas, memória persistente do cron com esforço de raciocínio por tarefa, proteções contra paralisação na disciplina de execução derivadas das descobertas da avaliação do Composio, o provider opencode-free sem autenticação e desempenho do desktop (hidratação priorizando a primeira renderização, React Compiler nos dois renderizadores). A v0.21.0 com todas as notas selecionadas ainda está pendente — resumos baseados na descrição da janela feita pela própria versão. A linhagem do cabeçalho foi atualizada. |
23 |
| 2026-08-20 | Guia v1.13: v0.20.3 (tag v2026.8.16.2, publicada em 17 de agosto) e v0.20.4 (tag v2026.8.18, 18 de agosto). Nova subseção em Herald Release: a sequência de consolidações agora traz recursos, não apenas estabilização. v0.20.3 (~250 commits / ~125 PRs): migração do SDK para MCP 2.x com suporte ao protocolo sem estado de 28 de julho de 2026, plugin Bot Mode incluído (hermes-bots) com o protocolo principal de colegas de equipe, plugin do provider CommandCode, contratos de runtime de uso do computador do Cua Driver 0.20, reforço da propriedade do runtime do Python, autorrecuperação do agendador cron, correções para perda de dados na transferência de sessões, adaptações do ecossistema (/worktree, preservação de edições manuais no /rollback, verificação de segurança na instalação de plugins). v0.20.4 (~146 commits / ~74 PRs): superfície de vidro/translúcida no desktop com seletor de efeito fosco, barra lateral com abas SESSIONS|BOTS e opção de ocultar/exibir cada bot, verificação consultiva de Tier 1 pelo NVIDIA SkillEvaluator nas instalações de skills (licença + segurança), reforço do envio de mídia pelo cron, transparência do hermes update sobre branches estacionadas. Ambas as versões informam que as notas selecionadas completas serão lançadas com a v0.21.0 — resumos baseados nas descrições das janelas feitas pelas próprias versões. A frase do cabeçalho e a linhagem dos tags foram atualizadas. |
58 |
| 2026-08-16 | Guia v1.12: v0.20.0 “The Herald Release” (3 de agosto, tag v2026.8.3), além dos tags de estabilização v0.20.1 (13 de agosto) e v0.20.2 (16 de agosto). Três correções ajustam instruções que não funcionam mais: Node 26 é obrigatório (o instalador fixa NODE_VERSION="26" e rejeita runtimes mais antigos — a linha Node v22 no site da documentação está desatualizada, portanto prevalecem o instalador e as notas da versão), pip e Homebrew foram descontinuados, em vez de apenas depreciados (“instalador shell / Docker / Nix são os canais compatíveis”), e o limite padrão de iterações passou de 90 → 500, invalidando todos os números da tabela de pressão sobre o orçamento. O comando de instalação foi corrigido para a URL canônica https://hermes-agent.nousresearch.com/install.sh. Superfície removida: a fonte de skills claude-marketplace não existe mais e foi substituída por browse-sh na lista de fontes; os taps padrão do GitHub agora são openai, anthropics, huggingface, NVIDIA e gstack. O gateway de mensagens foi recontado de 22 → 28 plataformas por meio da enumeração direta da tabela comparativa da documentação (a documentação não publica um total oficial). O Windows (nativo) é Tier 1, não uma versão beta inicial; o macOS é exclusivo para Apple Silicon. Uma nova seção aborda a própria versão: voz conversacional com interrupção de fala, A2A v1.0, webhooks de ciclo de vida de saída assinados, skill de citações fundamentadas, a onda do CLI com !//init//diff//context//focus e hermes import-agent, fonte de segredos do assistente de comandos, inicialização a frio do hermes -w de ~14s → ~1,8s e artefatos para desktop, além de um SDK de plugins. Confirmados como inalterados: os três caminhos de autenticação, a estrutura de ~/.hermes/, hermes update e a lista documentada de ferramentas. |
59 |
| 2026-07-21 | Guia v1.11: v0.19.0 “The Quicksilver Release” (20 de julho de 2026, tag v2026.7.20). Adicionada a seção “Novidades da v0.19.0”: redução de ~80% no TTFT do primeiro turno (envio a frio→despacho de ~4,3 s → ~0,9 s em CLI/gateway/TUI/desktop/cron), raciocínio transmitido ao vivo por padrão (display.show_reasoning ativado), onda de velocidade de ~20 PRs no desktop (markdown em streaming 14× mais rápido) + markdown incremental na TUI; instalações via pip/Homebrew descontinuadas (apenas aviso de “legado sem suporte”; remoção da publicação no PyPI/Homebrew planejada) — a seção Instalação e o resumo foram corrigidos para usar o instalador de uma linha; SecretSource conectável com provedores Bitwarden + 1Password (referências op://, vários cofres, precedência determinística, proveniência por variável); aprovações inteligentes por padrão (revisor LLM independente para cada comando sinalizado) + regras de negação definidas pelo usuário que continuam válidas no modo YOLO + /deny <reason> + escalonamento de aprovação do plugin pre_tool_call reimplementado; cobrança no terminal com /subscription + /topup + aba de cobrança no desktop (a afirmação de que não havia um comando de assinatura separado foi removida); transcrições de subagentes ao vivo + delegação durável em segundo plano + registro de obrigações de entrega no state.db; max_async_children descontinuado em favor de limites unificados de simultaneidade da delegação; roteamento de mensagens do gateway baseado em profile (um token de bot multiplexado → profiles isolados, GATEWAY_MULTIPLEX_PROFILES, índice de roteamento no state.db, sessions.json como espelho legado opcional); provedores/modelos: Fireworks AI (2ª posição no seletor), DeepInfra, Upstage Solar, GPT-5.6 (Sol/Terra/Luna + Pro) de ponta a ponta, grok-4.5 GA, kimi-k3 (kimi-k2.x removido), Claude Sonnet 5 totalmente integrado, enabled: false por provedor + excluded_providers, níveis max/ultra de esforço de raciocínio com substituições por modelo/slot de MoA e /reasoning com escopo de sessão; CLI/MCP: hermes sessions export (Markdown/Quarto/HTML/somente prompt/HF-trace, --redact), /model --once, invocações empilhadas de slash-skills, --safe-mode, hermes config get/unset, hermes serve realmente headless, nomenclatura MCP mcp__server__tool. Também registra as tags de patch que não haviam sido incluídas: v0.18.1 (tag v2026.7.7) e v0.18.2 (tag v2026.7.7.2), de 7 a 8 de julho de 2026 — pacotes cumulativos de patches de infraestrutura; a correção relevante da v0.18.2 remove a versão fixada do WhatsApp Baileys e passa a usar a 7.0.0-rc13 para builds Docker confiáveis. |
60 61 |
| 2026-07-16 | Adicionada uma primeira entrada de solução de problemas para o erro literal de inicialização “No inference provider configured. Run ‘hermes model’ to choose a provider and model” — motivada pela demanda de buscas; direciona para o seletor interativo, hermes doctor e os três caminhos de autenticação. Nenhuma alteração no produto. |
2 7 |
| 2026-07-01 | Guia v1.10: v0.18.0 “The Judgment Release” (1º de julho de 2026, tag v2026.7.1). Adicionada a seção “Novidades da v0.18.0”: backlog completo de P0/P1 concluído (~692 itens); Mixture-of-Agents como recurso de primeira classe, com saída do conjunto identificada por modelo e streaming ao vivo; contratos de conclusão — /goal verifica o próprio trabalho executando as verificações do projeto; /learn (descreva um fluxo de trabalho → skill reutilizável e em conformidade com CONTRIBUTING.md); /journey com linha do tempo de memória/skills + gráfico de memória no desktop; distribuição de subagentes em segundo plano (tarefas delegadas simultâneas); Desktop Projects (projeto/repositório/lane); gateway com redução de escala a zero e coordenação de drenagem; Google Vertex AI (Gemini por meio de contas de serviço do GCP, atualização automática de OAuth2); /prompt com editor \$EDITOR. Fonte: releases do hermes-agent. |
22 |
| 2026-06-21 | Guia v1.9: v0.17.0 “The Reach Release” (19 de junho de 2026, tag v2026.6.19). Adicionada a seção “Novidades da v0.17.0”. Mensagens: iMessage sem relay via Photon Spectrum (hermes photon login, OAuth por código de dispositivo), adaptador oficial da API do WhatsApp Business Cloud (sem bridge), grupos + anexos do SimpleX, plugin da plataforma Raft. Modelos: z-ai/glm-5.2 (1M), anthropic/claude-fable-5, laguna-m.1, nemotron-3-ultra, grok-composer-2.5-fast (OAuth da xAI, 200k); padrão da xAI → grok-build-0.1; os modelos adaptativos da Anthropic deixam de usar o campo reasoning. Desktop/dashboard: subagentes em segundo plano com janelas de acompanhamento ao vivo (delegate_task(background=true)), construtor completo de profiles, Skills Hub reformulado, Automation Blueprints, login 401 seguro, temas do VS Code Marketplace e interface em japonês + chinês tradicional. Skills/ferramentas: edição de imagem para imagem com image_generate, lote atômico de operations para memory, skill simplify-code, write_approval booleano (substitui write_mode). Arquitetura: manipulador de elicitação da MCP, CronScheduler conectável + Chronos, escopo Managed (/etc/hermes), relay entre Gateways. Comandos: /version, /billing, hermes curator run --consolidate (opcional). Segurança: bypass da lista de negação de escape de shell corrigido, adaptadores de aprovação/gateway que falham de forma segura, ambiente do cron sanitizado, segredos ocultados em dumps de depuração, filtragem de exfiltração no stdio da MCP, atualizações do urllib3 + PyJWT contra CVEs. |
21 |
| 2026-06-08 | Guia v1.8: v0.16.0 “The Surface Release” (5 de junho de 2026, tag v2026.6.5). O guia foi renomeado para v0.16 e recebeu a seção “Novidades da v0.16.0”. Destaque: o Hermes não está mais restrito ao terminal. Aplicativo nativo Hermes Desktop (Electron, macOS/Linux/Windows) com instalação em um clique, atualização automática no próprio aplicativo, chat em streaming, arrastar e soltar + colagem de imagens da área de transferência, paleta Cmd+K, arquivamento/pesquisa de sessões, seletor de modelo na barra de status, conexão a gateway remoto por WebSocket seguro (OAuth ou usuário/senha, hosts por profile, links @session entre profiles) e tradução completa para chinês simplificado por meio de i18n tipado. Painel administrativo no navegador (dashboard web → administração completa): ativação/desativação do catálogo da MCP, gerenciamento de credenciais, criação de webhooks/hooks, configuração de memória, controles do gateway, página Sistema com verificação antes da atualização + Debug Share, nova página Canais e autenticação conectável (usuário/senha, OIDC auto-hospedado, hermes dashboard register). Novos comandos: /undo [N] (CLI/TUI/mensagens), interface padrão configurável (cli/tui, --cli), /model unificado na TUI + sobreposição de Sessões, hermes portal, hermes prompt-size, hermes sessions optimize. Novos modelos: deepseek-v4-flash, MiniMax-M3 (contexto de 1M), qwen3.7-plus, gemini-3.5-flash; OAuth do Grok da xAI como recurso de primeira classe no inicializador do desktop; seletor de modelos com busca aproximada; atualização do catálogo a cada hora. Skills: conjunto padrão mais enxuto (Spotify → plugin nativo, Linear → hermes mcp install linear, skills obsoletas removidas), critério de relevância environments: (kanban/docker/s6), NVIDIA/skills como fonte confiável padrão, divulgação progressiva (com escopo) de ferramentas da MCP/plugins. Segurança: CVE-2026-48710 (Starlette BadHost) fixada em versão ≥1.0.1; verificações de SSRF fora do loop de eventos; token bearer do Bedrock removido do ambiente de subprocessos; leitura de bws_cache.json protegida; docker restart/stop/kill adicionados aos padrões perigosos; sanitização de Unicode invisível. Encerrados 2 P0 + 62 P1 (16 relacionados à segurança). |
20 |
| 2026-05-31 | Guia v1.7.1: v0.15.1 (29 de maio de 2026, 01:12 UTC) — patch Velocity. Hotfix lançado no mesmo dia após o Velocity; linha da tag fixada em v2026.5.29. Corrige o loop de recarregamento com erro 401 no dashboard que afetava implantações em modo loopback. O Docker não trata mais --insecure como implícito — defina HERMES_DASHBOARD_INSECURE=1 explicitamente para reativá-lo. Comandos simples da MCP (npx, npm, node) voltam a ser resolvidos corretamente dentro de contêineres Docker. Os indicadores de origem e a barra lateral de categorias da página Skills são renderizados. Os workers Kanban respondem ao SIGTERM corretamente, sem deixar processos órfãos. O catálogo do Skills.sh foi ampliado de 858 para 19.932 entradas por meio da descoberta via sitemap. 28 commits, 21 PRs mesclados, 9 colaboradores. v0.15.2 (29 de maio de 2026, 13:37 UTC) — patch de empacotamento do Velocity. Corrige as distribuições wheel e sdist para incluir os manifestos plugin.yaml, permitindo que instalações pelo PyPI funcionem sem carregar a árvore de código-fonte separadamente. Hotfix apenas de empacotamento, 4 colaboradores. |
62 |
| 2026-05-28 | Guia v1.7: adicionada a v0.15.0 (28 de maio de 2026) — versão Velocity (tag v2026.5.28). Destaque: uma enorme rodada de refatoração + novos elementos fundamentais de orquestração. Refatoração da base de código: run_agent.py foi reduzido em 76% (de 16.083 para 3.821 linhas), distribuídas entre 14 módulos coesos. Kanban multiagente v2: decomposição automática de objetivos de alto nível em subtarefas, topologia de swarm para coordenar workers em paralelo, substituições de modelo por tarefa, tarefas agendadas e gerenciamento de worktrees. Desempenho: redução de mais 1 segundo na inicialização a frio; 47% menos chamadas de função por conversa; session_search reformulado para ficar 4.500 vezes mais rápido, com a dependência de LLM removida (eliminando também o custo de API). Segurança: a defesa contra Promptware protege contra injeções de prompt da classe Brainworm em três pontos críticos de segurança; a integração com o Bitwarden Secrets Manager substitui várias chaves de API específicas de cada provedor por um único token de bootstrap. Pacotes de skills: carregue várias skills ao mesmo tempo com um único comando de barra. Orquestrador de sessões da TUI: gerenciamento de várias sessões em uma única janela do terminal. Novos provedores: Krea 2 (Medium/Large) e suporte ao plugin FAL para geração de imagens; a rodada de integração com xAI adiciona um plugin de pesquisa na web, OAuth upstream, detecção de modelos descontinuados e pausas naturais no TTS. Números: 1.302 commits, 747 PRs mesclados e 321 colaboradores da comunidade. Segundo as notas de versão de GitHub, uma atualização de correção lançada no mesmo dia ou no dia seguinte resolve o loop de recarregamento com erro 401 no dashboard, a variável de ambiente explícita --insecure de Docker, a resolução de comandos simples de MCP em Docker (npx, npm, node), a restauração da página de Skills, o tratamento de SIGTERM dos workers do Kanban e o catálogo completo de Skills com 19.932 entradas por meio do sitemap. |
63 |
| 2026-05-21 | Guia v1.6: adicionada a v0.14.0 (16 de maio de 2026) — versão Foundation. Destaque: uma base mais leve para instalação e execução, além de uma cobertura mais ampla de provedores, gateway, mídia e verificação. Foram adicionados SuperGrok OAuth com contexto de 1 milhão no grok-4.3, hermes proxy compatível com OpenAI para provedores de OAuth, x_search como recurso nativo, pip install hermes-agent, instalação preguiçosa de dependências, inicialização cerca de 19 segundos mais rápida, chamadas CDP do navegador 180 vezes mais rápidas, LINE + SimpleX Chat, totalizando 22 plataformas de mensagens, Microsoft Teams de ponta a ponta, /handoff, /subgoal, botões nativos de esclarecimento no Telegram/Discord, preenchimento retroativo do histórico do Discord, vision_analyze com pixels brutos, rodapé de verificação de alterações em arquivos a cada turno, diagnósticos semânticos de LSP a cada gravação, video_generate unificado, computer_use por meio do cua-driver para provedores que não sejam Anthropic, URLs clicáveis com OSC8, suporte ao Zed ACP Registry, roteador OpenRouter Pareto Code, NovitaAI, runtime do app-server do Codex, tap confiável huggingface/skills, 9 skills opcionais, ctx.llm / tool_override para plugins, pesquisa na web com Brave/DDGS, renomeação do Qwen Cloud, versão beta nativa para Windows e resolução de 12 problemas P0 / 50 P1. |
19 |
| 2026-05-07 | Guia v1.5: adicionada a v0.13.0 (7 de maio de 2026) — versão Tenacity. Destaque: um quadro Kanban multiagente robusto (heartbeat, recuperação de tarefas, detecção de processos zumbis, bloqueio de alucinações, max_retries por tarefa e quadros para vários projetos) que transforma swarms em um elemento fundamental nativo, em vez de um padrão de delegação. O novo comando /goal mantém o agente focado em um objetivo ao longo dos turnos (padrão de loop Ralph como comando de barra). Nova ferramenta video_analyze, com Gemini como primeira opção e suporte extensível a modelos compatíveis. Provedor de TTS com vozes personalizadas da xAI, incluindo clonagem de voz. i18n em 7 idiomas (zh-Hans, ja, de, es, fr, uk, tr) para mensagens de CLI e do gateway; documentação apenas em zh-Hans. Google Chat como a 20ª plataforma de mensagens, por meio do padrão de adaptadores conectáveis; IRC + Microsoft Teams migraram para o mesmo padrão. ProviderProfile ABC + plugins/model-providers/ para provedores de terceiros conectáveis sem alterações no núcleo. Retomada automática de sessões após reinicialização do gateway, /update e recarregamento de arquivos-fonte. Reescrita dos checkpoints v2 com armazenamento único, limpeza real e proteções de uso do disco. Oito correções de segurança P0: ocultação de segredos ativada por padrão, desvio de proteção em mensagens diretas entre servidores do Discord (CVSS 8.1), rejeição de desconhecidos + silenciamento de conversa consigo mesmo no WhatsApp, TOCTOU de MCP OAuth, TOCTOU de auth.json em CLI, proteção mínima contra SSRF no navegador, verificação de injeção de prompt no cron e ocultação de dados em hermes debug share. Lint após gravações para Python/JSON/YAML/TOML, modo no_agent do cron apenas para scripts, listas de permissões de plataforma no Slack/Telegram/Mattermost/Matrix/DingTalk e melhorias em MCP (transporte SSE, encaminhamento de OAuth, tags MEDIA de imagem). Números desde a v0.12.0: 864 commits, 588 PRs mesclados, 829 arquivos alterados, 295 colaboradores da comunidade e 282 problemas resolvidos (13 P0 e 36 P1). |
18 |
| 2026-05-06 | Guia v1.4: adicionada a v0.12.0 (30 de abril de 2026) — versão Curator. Destaque: um Curator autônomo em segundo plano, executado pelo ticker do cron do gateway (ciclo padrão de 7 dias), que avalia a biblioteca de skills com base em critérios definidos, remove skills obsoletas, consolida skills relacionadas e gera relatórios para cada execução — o Hermes faz a própria manutenção entre as sessões ativas. O loop de autoaperfeiçoamento foi aprimorado com avaliação baseada em critérios, preferência por atualizações ativas, herança adequada do runtime e toolsets com escopo restrito à memória e às skills. Quatro novos provedores de inferência: GMI Cloud, Azure AI Foundry, MiniMax OAuth e Tencent Tokenhub. LM Studio promovido a recurso nativo. Agora, os manifestos remotos do catálogo de modelos são atualizados automaticamente sem exigir novas versões. Duas novas plataformas de mensagens: Microsoft Teams (19ª, por meio da arquitetura conectável do gateway) e Tencent Yuanbao (18ª, com texto + mídia nativos). Spotify nativo por meio de PKCE OAuth, com skill incluída; plugin do Google Meet para chamadas e transcrições; provedor de TTS local Piper. ComfyUI v5 + TouchDesigner-MCP deixaram de ser opcionais e agora vêm incluídos por padrão. Novas skills: Humanizer, claude-design, design-md e airtable. Adições a CLI: modo de execução única hermes -z, verificação preliminar hermes update --check, comando de barra /reload-skills e estilos conectáveis para o indicador de atividade. O tempo visível de inicialização a frio da TUI caiu cerca de 57% graças à inicialização preguiçosa do agente e às importações preguiçosas. Segurança: ocultação de segredos desativada por padrão para evitar corrupção de payloads; lista de bloqueio rígida para comandos irrecuperáveis. Números: 1.096 commits, 550 PRs mesclados e 213 colaboradores da comunidade. |
17 |
| 2026-04-25 | Guia v1.3: adicionada a v0.11.0 (23 de abril de 2026) — versão Interface. Reescrita completa da TUI interativa em React/Ink, com um backend RPC de Python JSON (tui_gateway); compositor fixo, streaming em tempo real com suporte à área de transferência via OSC-52, teclas estáveis nos seletores, barra de status com cronômetro por turno e branch do git, confirmação para /clear, predefinição de tema claro e sobreposição para observar a criação de subagentes. Arquitetura de transporte conectável — conversão de formatos e transporte HTTP extraídos para agent/transports/, simplificando a integração dos provedores. AWS Bedrock nativo por meio do Converse API. Cinco novos caminhos de inferência: NVIDIA NIM, Arcee AI, Step Plan, Google Gemini CLI OAuth e Vercel ai-gateway. GPT-5.5 por meio do Codex OAuth — o novo modelo principal da OpenAI agora pode ser acessado pelo ChatGPT Codex OAuth sem uma chave de API separada. QQBot (17ª plataforma de mensagens) com configuração por leitura de código QR e streaming. Expansão dos recursos para plugins: comandos de barra, encaminhamento de ferramentas, bloqueio de execução e transformação de resultados. /steer <prompt> — orientações durante a execução que inserem uma nota, vista pelo agente em execução após a próxima chamada de ferramenta, sem interromper o turno nem invalidar o cache do prompt. Hooks de shell conectam scripts como hooks de ciclo de vida sem plugins de Python. O modo de entrega direta por webhook encaminha payloads diretamente para uma conversa da plataforma, sem passar pelo agente, permitindo distribuição para vários destinos. Delegação mais inteligente, com funções de orquestrador, profundidade configurável de criação de agentes e coordenação de arquivos. O dashboard ganhou um sistema de plugins, troca de tema em tempo real, i18n e responsividade para dispositivos móveis. Números desde a v0.9.0: 1.556 commits, 761 PRs mesclados, 1.314 arquivos alterados, 224.174 inserções e 29 colaboradores da comunidade. |
64 |
| 2026-04-16 | Guia v1.2: adicionada a v0.10.0 — Nous Tool Gateway. Assinantes dos planos pagos do Nous Portal agora têm acesso a ferramentas gerenciadas (pesquisa na web com Firecrawl, geração de imagens com FAL / FLUX 2 Pro, TTS da OpenAI e automação de navegador com Browser Use) sem chaves de API adicionais. Ativação individual por ferramenta por meio do novo campo de configuração use_gateway. Durante a execução, o gateway tem preferência sobre chaves diretas de API quando ambos estão configurados. A variável de ambiente HERMES_ENABLE_NOUS_MANAGED_TOOLS foi removida. O CLI do Hermes Agent continua com licença MIT e totalmente gratuito. |
65 |
| 2026-04-13 | Guia v1.1: adicionados recursos das versões v0.8.0 e v0.9.0. Dashboard web local, modo /fast, plataformas iMessage + WeChat (16 no total), monitoramento de processos em segundo plano (watch_patterns), context engine conectável, hermes backup/hermes import, Termux/Android, provedores xAI + MiMo + Google AI Studio + Qwen, comando /debug e ampla proteção de segurança. |
15 16 |
| 2026-04-10 | Guia v1.0: versão inicial cobrindo o Hermes Agent v0.7.0. Autenticação de provedores, configuração, CLI, comandos de barra, ferramentas, skills, memória, gateway, cron, MCP, compactação, arquitetura, migração do OpenClaw, solução de problemas e perguntas frequentes. | |
| — |
Referências
-
Nous Research, README do projeto “Hermes Agent” no GitHub. Fonte primária para a descrição do produto (agente que se aprimora sozinho, suporte a vários provedores, gateway de mensagens, backends de terminal, evolução de skills, agendador cron e delegação) e para o comando de uma linha da “Instalação rápida”. ↩↩↩
-
Nous Research, “Provedores de IA” na documentação do Hermes Agent. Fonte primária para a lista completa de provedores, os métodos de autenticação de cada provedor (OAuth do Nous Portal, código de dispositivo do Codex, tipos de token do Copilot no GitHub, três métodos de autenticação do Anthropic, provedores chineses de IA, roteamento do Hugging Face e endpoints personalizados), os três caminhos de autenticação (chave API no
.env, OAuth por meio dehermes modele endpoint personalizado noconfig.yaml), a sintaxe do comando de barra/model(incluindocustom:name:model), os modelos de configuração do Ollama/vLLM/SGLang/llama.cpp/LM Studio, as instruções de rede do WSL2, a cadeia de detecção do tamanho do contexto, a configuração do modelo de fallback, o roteamento inteligente de modelos e os provedores personalizados nomeados. Todos os nomes de variáveis de ambiente específicas de provedores, tipos de token, substituições da URL base e identificadores de modelos desta publicação vêm dessa página. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Arquitetura” no guia do desenvolvedor do Hermes Agent. Fonte primária para o diagrama de visão geral do sistema, a estrutura de diretórios, o fluxo de dados pelos caminhos de sessão e de mensagens do gateway do CLI, os três modos de API (
chat_completions,codex_responses,anthropic_messages), a resolução de provedores por meio deruntime_provider.py, a persistência de sessões por meio de SQLite + FTS5, a lista de plataformas do gateway de mensagens, as fontes de descoberta do sistema de plugins, o isolamento de profiles e os seis princípios de design. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Configuração” no guia do usuário do Hermes Agent. Fonte primária para a estrutura do diretório de configuração, a regra de
config.yamlem relação a.env(“config.yamlprevalece para configurações que não sejam secretas”), a cadeia de precedência da configuração (argumentos do CLI → env → config.yaml → .env → valores padrão), as configurações de compactação de contexto (blococompression.*comthreshold,threshold_tokens,target_ratio,tail_mode,protect_last_n,protect_first_n; o modelo/provedor/endpoint do sumarizador fica emauxiliary.compression.*desde a migração para a versão 17 da configuração), os limites de pressão do orçamento (cautela em 70%, alerta em 90%), os timeouts de streaming com ajuste automático para provedores locais e o bloco completo de configuração de modelos auxiliares (auxiliary:com slotsvision,web_extract,approval,compression,session_search,skills_hub,mcp,flush_memories). A restrição do provedor"main"aos slots auxiliares/de compactação/de fallback também vem dessa página. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Migrar do OpenClaw” nos guias do Hermes Agent. Fonte para o fluxo de migração do OpenClaw → Hermes. ↩↩
-
Nous Research, “Referência de comandos do CLI” na documentação de referência do Hermes Agent. Fonte primária para todos os comandos de nível superior do CLI documentados nesta publicação, incluindo
hermes chat,hermes model,hermes gateway,hermes setup,hermes auth,hermes status,hermes cron,hermes webhook,hermes doctor,hermes dump,hermes logs,hermes config,hermes pairing,hermes skills,hermes honcho,hermes memory,hermes acp,hermes mcp,hermes plugins,hermes tools,hermes sessions,hermes insights,hermes claw,hermes profile,hermes completion,hermes updateehermes uninstall. Todas as flags de subcomandos, descrições de opções, o comportamento do pool de credenciais, a sintaxe de filtragem de logs, as flags de migração do OpenClaw, os comandos de gerenciamento de profiles e os comandos de instalação de serviços desta publicação vêm dessa página. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Instalação” no guia de primeiros passos do Hermes Agent. Fonte primária para o comando de instalação de uma linha, o comportamento do instalador (pré-requisitos, suporte a plataformas, detecção automática do Termux e requisitos do Windows/WSL2), a tabela de extras opcionais, as etapas de instalação manual e os comandos de verificação. ↩↩↩↩↩↩↩↩↩
-
Nous Research, “Referência de comandos do CLI” — consulte especificamente a seção
hermes dump, que descreve o formato de saída do comando (cabeçalho, ambiente, identidade, modelo, terminal, chaves de API, recursos, serviços, carga de trabalho e substituições da configuração) e seu uso previsto para o compartilhamento de diagnósticos. ↩ -
Nous Research, “Referência de comandos de barra” na documentação de referência do Hermes Agent. Fonte primária para todos os comandos de barra listados nesta publicação, a arquitetura
COMMAND_REGISTRY, a divisão entre CLI e mensagens, os comandos de barra dinâmicos de skills, os comandos rápidos noconfig.yaml, o comportamento de correspondência por prefixo e os comandos exclusivos para mensagens (/status,/sethome,/approve,/deny,/update,/commands). ↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Ferramentas e toolsets” no guia do usuário do Hermes Agent. Fonte primária para a visão geral das categorias de ferramentas, os comandos de uso de toolsets, os sete backends de terminal (local, docker, ssh, singularity, modal, daytona, vercel_sandbox), a configuração de contêineres (cpu, memória, disco, persistência), o reforço de segurança dos contêineres, o gerenciamento de processos em segundo plano API e o suporte a sudo. ↩↩↩↩↩↩↩↩↩↩
-
Nous Research, “Sistema de skills” no guia do usuário do Hermes Agent. Fonte primária para a divulgação progressiva, o formato de
SKILL.md, as skills específicas de cada plataforma, a ativação condicional (fallback_for_toolsets,requires_toolsets,fallback_for_tools,requires_tools), as skills gerenciadas pelo agente por meio deskill_manage, os comandos do hub de skills e a lista de fontes (official,skills-sh,well-known,github,clawhub,claude-marketplace,lobehub), a verificação de segurança e os níveis de confiança, além dos diretórios externos de skills. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Memória persistente” no guia do usuário do Hermes Agent. Fonte primária para os limites de caracteres de
MEMORY.md/USER.md, o padrão de snapshot congelado, as ações da ferramenta de memória (add,replace,remove), o que salvar e o que ignorar, a comparação entre memória e pesquisa de sessões e os provedores externos de memória. Na tagv2026.9.24, a página complementar Provedores de memória (linha 9) informa que “o Hermes Agent vem com 7 plugins de provedores externos de memória” e acrescenta que “outros (como o Hindsight) estão disponíveis no catálogo de plugins”; na tag,plugins/memory/contémbyterover,holographic,honcho,mem0,openviking,retaindbesupermemory. ↩↩↩↩↩↩↩↩ -
Nous Research, “Personalidade e SOUL.md” no guia do usuário do Hermes Agent. Fonte primária para o comportamento de
SOUL.md(fica emHERMES_HOME, nunca é sobrescrito, ocupa o slot nº 1 no prompt do sistema e passa por uma verificação de segurança antes de ser incluído), a diferença entre SOUL.md e AGENTS.md, a lista de personalidades integradas (14 personalidades, dehelpfulahype), as personalidades personalizadas noconfig.yaml, o padrão de sobreposição de/personalitye a ordem completa de montagem da pilha de prompts. ↩↩↩↩↩↩↩↩↩↩↩↩ -
Nous Research, “Usar MCP com o Hermes” e Referência de configuração do MCP nos guias e na referência do Hermes Agent. Fonte para o formato de configuração
mcp_servers:noconfig.yaml, com os camposcommand,argseenv. ↩ -
Notas de lançamento do Hermes Agent v0.8.0. 8 de abril de 2026. Notificações automáticas de processos em segundo plano, MiMo v2 Pro gratuito no Nous Portal, troca de modelos em tempo real por meio de
/modelem todas as plataformas, provedor nativo do Google AI Studio, OAuth do Qwen, timeouts baseados em inatividade, botões de aprovação no Slack/Telegram, OAuth 2.1 PKCE do MCP, logs centralizados e expansão do sistema de plugins. ↩↩↩↩↩ -
Notas de versão do Hermes Agent v0.9.0. 13 de abril de 2026. Dashboard web local, Fast Mode (
/fast), iMessage via BlueBubbles, WeChat + WeCom, Termux/Android, monitoramento de processos em segundo plano (watch_patterns), providers nativos xAI + Xiaomi MiMo, context engine conectável, suporte unificado a proxy, reforço de segurança (correções para travessia de caminho, injeção de shell, SSRF e RCE),hermes backup/hermes import,/debug+hermes debug share, 16 plataformas compatíveis. 487 commits, 269 PRs mesclados e 24 colaboradores. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas de versão do Hermes Agent v0.12.0. 30 de abril de 2026. “A versão Curator.” Curator autônomo em segundo plano que avalia, remove e consolida a biblioteca de skills em um ciclo padrão de 7 dias executado pelo ticker de cron do gateway. Loop de autoaperfeiçoamento atualizado: avaliação baseada em rubricas, preferência por atualizações ativas, herança correta do runtime e toolsets com escopo limitado à memória e às skills. Quatro novos providers de inferência: GMI Cloud, Azure AI Foundry, MiniMax OAuth, Tencent Tokenhub. LM Studio promovido a recurso de primeira classe. Manifestos remotos do catálogo de modelos são atualizados automaticamente sem novos lançamentos. Duas novas plataformas de mensagens: Microsoft Teams (19ª, via arquitetura de gateway conectável) e Tencent Yuanbao (18ª, com suporte nativo a texto + mídia). Spotify nativo via PKCE OAuth com skill incluída; plugin do Google Meet para chamadas e transcrição; provider local de TTS Piper. ComfyUI v5 + TouchDesigner-MCP incluídos por padrão. Novas skills: Humanizer, claude-design, design-md, airtable. CLI: modo de execução única
hermes -z, verificação préviahermes update --check, comando de barra/reload-skills, estilos conectáveis de indicador de atividade. Inicialização a frio da TUI reduzida em cerca de 57% por meio de inicialização tardia. Segurança: ocultação de segredos desativada por padrão; lista rígida de bloqueio para comandos irrecuperáveis. Estatísticas desde a v0.11.0: 1.096 commits, 550 PRs mesclados e 213 colaboradores da comunidade. Veja também: tag da versão v2026.4.30. ↩↩↩ -
Notas de versão do Hermes Agent v0.13.0. 7 de maio de 2026. “A versão Tenacity.” Quadro Kanban multiagente com heartbeat, recuperação, detecção de zumbis, barreira contra alucinações,
max_retriespor tarefa e quadros para vários projetos. Comando de barra/goalpara fixação de objetivos entre turnos (primitiva do loop Ralph), com orçamento de turnos configurável. Ferramentavideo_analyze, priorizando Gemini e com extensibilidade multimodal compatível. Provider de TTS xAI Custom Voices com clonagem de voz. Internacionalização em 7 idiomas: zh-Hans, ja, de, es, fr, uk, tr (CLI + mensagens do gateway; documentação apenas em zh-Hans). Google Chat como 20ª plataforma de mensagens por meio de um padrão de adaptador conectável com hooks genéricos de pluginenv_enablement_fn/cron_deliver_env_var; IRC e Microsoft Teams migrados para o mesmo padrão. ABCProviderProfile+plugins/model-providers/para providers de terceiros conectáveis. Retomada automática de sessões após reinicialização do gateway,/updatee recarregamentos de arquivos-fonte. Reescrita dos checkpoints v2 com armazenamento único, remoção efetiva, proteções de disco e sem repositórios-sombra órfãos. Oito correções de segurança P0: ocultação de segredos ativada por padrão, bypass de mensagens diretas entre servidores do Discord (CVSS 8.1, listas de funções permitidas limitadas ao servidor), WhatsApp rejeita desconhecidos por padrão + nunca responde no chat consigo mesmo, TOCTOU ao salvar credenciais de MCP OAuth, TOCTOU deauth.jsonnos gravadores de credenciais de CLI, proteção básica contra SSRF de metadados de nuvem no roteamento híbrido do navegador, verificação de prompts montados pelo cron (incluindo o conteúdo das skills) contra injeção de prompt e ocultação do conteúdo dos logs no momento do upload pelohermes debug share. Outros itens importantes: linting após gravação para Python/JSON/YAML/TOML, modo watchdogno_agentsomente para scripts no cron, listas de permissões de plataformas no Slack/Telegram/Mattermost/Matrix/DingTalk, melhorias em MCP (transporte SSE, encaminhamento de OAuth, resultados de imagem como tags MEDIA). Estatísticas desde a v0.12.0: 864 commits, 588 PRs mesclados, 829 arquivos alterados, 295 colaboradores da comunidade e 282 issues encerradas (13 P0, 36 P1). ↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas de versão do Hermes Agent v0.14.0. 16 de maio de 2026. “A versão Foundation.” Desde a v0.13.0: 808 commits, 633 PRs mesclados, 1.393 arquivos alterados, 165.061 inserções, 545 issues encerradas (12 P0, 50 P1) e 215 colaboradores da comunidade. Adiciona SuperGrok OAuth com contexto de 1 milhão do grok-4.3,
hermes proxy,x_search, distribuição via PyPI, dependências carregadas sob demanda, cache de prompts Claude entre sessões por 1 hora, inicialização cerca de 19 segundos mais rápida, chamadas CDP do navegador 180 vezes mais rápidas, LINE e SimpleX Chat, totalizando 22 plataformas de mensagens,/handoff, botões nativos de esclarecimento, preenchimento retroativo do histórico do Discord,vision_analyzecom pixels brutos, rodapé verificador de alterações em arquivos a cada turno, diagnósticos semânticos de LSP,video_generateunificado,computer_usedo cua-driver, links OSC8, suporte ao Zed ACP Registry, roteador OpenRouter Pareto Code, NovitaAI, runtime do app-server Codex,huggingface/skills,ctx.llmde plugin,tool_override, busca com Brave/DDGS, reforço contra comandos perigosos,/subgoal, renomeação do Qwen Cloud, versão beta nativa para Windows, 16 localidades ao todo e amplas atualizações de documentação/testes. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.16.0, “The Surface Release”, tag
v2026.6.5, publicada em 6 de junho de 2026 às 00:55:58Z (data do tag de lançamento: 5 de junho de 2026); versão mais recente em 8 de junho de 2026. Novo Hermes Desktop nativo (Electron, macOS/Linux/Windows; conexão com gateway remoto por WebSocket seguro usando OAuth ou usuário/senha; hosts remotos por profile; links@sessionentre profiles; interface em chinês simplificado por meio de i18n tipada,display.language). O dashboard web foi expandido para um painel administrativo completo (controles para ativar ou desativar o catálogo de MCP, gerenciamento de credenciais, criação de webhooks/hooks, configuração de memória, controles do gateway, página System com verificação antes da atualização + Debug Share e página Channels; autenticação extensível, incluindo OIDC auto-hospedado ehermes dashboard register). Novos comandos:/undo [N], interface padrão configurável (cli/tui,--cli),/modelna TUI + sobreposição Sessions,hermes portal,hermes prompt-size,hermes sessions optimize. Novos modelos:deepseek-v4-flash,MiniMax-M3(contexto de 1M),qwen3.7-plus,gemini-3.5-flash; OAuth do xAI Grok; seletor com busca aproximada; atualização do catálogo a cada hora. Skills: conjunto padrão mais enxuto, filtro de relevânciaenvironments:,NVIDIA/skillscomo tap confiável padrão, apresentação progressiva de ferramentas, correção de falso sucesso de OAuth do MCP. Segurança: CVE-2026-48710 (Starlette BadHost) fixada em ≥1.0.1, verificações de SSRF removidas do event loop, token bearer do Bedrock removido do ambiente de subprocessos, leitura debws_cache.jsonprotegida, inclusão dedocker restart/stop/killnos padrões perigosos, sanitização de Unicode invisível; 2 P0 + 62 P1 encerrados (16 marcados como segurança). O enquadramento de marketing das notas de lançamento (contagens de PRs/commits, “nada disso existia há uma semana”) foi excluído; foram registrados apenas fatos concretos sobre recursos e versões vinculados ao tag. Verificação na sessão atual em 8 de junho de 2026. ↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.17.0, “The Reach Release”, tag
v2026.6.19, 19 de junho de 2026; versão mais recente em 21 de junho de 2026. Mensagens: iMessage via Photon Spectrum (OAuth por código de dispositivo,hermes photon login, sem retransmissão por Mac); adaptador oficial API do WhatsApp Business Cloud (substitui o processo de bridge); grupos do SimpleX, anexos nativos, envio de textos em lotes e aceitação automática; plugin de plataforma Raft incluído. Modelos/provedores:z-ai/glm-5.2(contexto de 1M),anthropic/claude-fable-5,laguna-m.1,nemotron-3-ultra,grok-composer-2.5-fast(OAuth da xAI, contexto de 200k); padrão da xAI →grok-build-0.1; modelos adaptativos do Anthropic usam o contrato moderno de raciocínio (sem o camporeasoning). CLI/comandos slash:/version,/billing,hermes photon login,hermes curator run --consolidate(opcional), interface gráfica dehermes model, clonagem de profiles. Desktop: janelas de monitoramento de subagentes em segundo plano (delegate_task(background=true)), seletor de modelos no Composer, atalhos reconfiguráveis, notificações nativas do sistema operacional, rascunhos por thread, temas do VS Code Marketplace, interface em japonês + chinês tradicional. Dashboard: criador completo de profiles, seletor global de profiles, reformulação do Skills Hub com verificação de segurança, Automation Blueprints, login seguro (401 protegido por OAuth). Skills/ferramentas: edição de imagem para imagem comimage_generateentre provedores, lote atômico deoperationsemmemory, skillsimplify-codepara revisão paralela,write_approvalbooleano substituiwrite_mode. Arquitetura: subagentes em segundo plano (o identificador é retornado imediatamente e o resultado retorna como um turno), manipulador de elicitação do MCP para confirmação durante uma chamada de ferramenta, ferramentas do MCP conectadas posteriormente são disponibilizadas entre os turnos, CronScheduler extensível + cron gerenciado pelo Chronos, escopo Managed (/etc/hermesfixado pelo administrador), retransmissão Gateway-Gateway. Segurança: eliminada a possibilidade de contornar a lista de bloqueio de escape do shell, comportamento fail-closed quando o módulo de aprovação e os adaptadores de gateway com política própria estão ausentes, ambiente dos scripts de tarefas cron sanitizado, segredos ocultados em dumps de depuração, metadados do host omitidos do status público, verificação de padrões de exfiltração no stdio do MCP, atualizações do urllib3 + PyJWT contra CVEs. O enquadramento de marketing do lançamento (contagens de commits/PRs) foi excluído. Verificação na sessão atual em 21 de junho de 2026. ↩↩↩↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.18.0 (tag
v2026.7.1), 1º de julho de 2026 — “The Judgment Release”. Revisão das pendências prioritárias (todos os P0/P1 encerrados, cerca de 692 itens em doze dias); Mixture-of-Agents selecionável como modelo de primeira classe em todas as interfaces, com a saída completa de cada modelo de referência renderizada em seu próprio bloco rotulado e transmissão da resposta ao vivo; contratos de conclusão para/goal(o agente verifica o próprio trabalho executando as verificações do projeto); comando/learn(transforma qualquer coisa em uma skill reutilizável a partir de uma descrição, com conformidade automática com CONTRIBUTING.md); linha do tempo visual de memória/skills em/journey, com edição e um grafo de memória no desktop; distribuição de tarefas entre subagentes em segundo plano (várias tarefas delegadas simultaneamente); Desktop Projects (modelo de projeto/repositório/lane); gateway com redução de escala a zero e coordenação de drenagem; suporte ao Google Vertex AI (Gemini por meio de contas de serviço do GCP, atualização automática do token OAuth2); comando/promptpara $EDITOR. Verificação na sessão atual em 1º de julho de 2026 (PST) na página de lançamentos do GitHub; a v0.18.0 é a versão mais recente. ↩↩↩↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.20.5 (tag
v2026.8.19, data de lançamento informada como 19 de agosto, publicada em 21 de agosto de 2026; obtida por meio do API do GitHub em 24 de agosto de 2026 — pré-lançamento: falso). Descrição literal do período: “~746 commits em ~1.250 arquivos (+111.500 / -20.701) — ~323 PRs mesclados, incluindo threads de salas em grupo do Bot Mode, resumos recolhíveis de conversas, avatares com rostos de blob e anexos de PDF/arquivos com recurso de arrastar e soltar; o nível web sem chaves (rotação gratuita entre 5 fornecedores com failover em anel, pesquisa na web em instalações novas sem nenhuma chave); uma onda de refinamentos no CLI (seletor aproximado de /model, paleta de comandos com Ctrl+P, /status mais completo); disciplina de execução e proteções contra travamentos em tempo de execução decorrentes das descobertas da avaliação do Composio; comprovantes dehermes updatee verificação de frota com--plan;hermes worktree list/prune; o provedor sem opencode e sem autenticação; esclarecimento com várias perguntas; melhorias de desempenho no desktop (hidratação do Bot Mode com renderização prioritária, spinners do compositor, React Compiler nos dois renderizadores); e tarefas cron com memória persistente e nível de esforço de raciocínio por tarefa.” O lançamento repete: “As notas de lançamento completas e selecionadas para este período serão publicadas com a v0.21.0.” ↩↩↩↩↩↩↩↩↩↩↩ -
Backends de terminal no tag
v2026.8.31(verificados novamente para a v1.17 do guia;agent/terminal_env_registry.pyé idêntico byte a byte à sua versão emv2026.8.31, os fatos descritos na docstring detools/terminal_tool.pypermanecem inalterados etools/environments/ainda contém os mesmos sete módulos de backend, agora junto de um auxiliarpath_utils.py): docstring do módulotools/terminal_tool.py, literalmente: “Uma ferramenta de terminal que executa comandos em ambientes locais, Docker, Modal, SSH, Singularity, Daytona e Vercel Sandbox” e, na lista de seleção de ambientes, a entradavercel_sandbox“Executar em sandboxes na nuvem do Vercel Sandbox”; o módulo de backendtools/environments/vercel_sandbox.pyexiste no tag junto dedaytona.py,docker.py,local.py,modal.py,singularity.pyessh.py. O README no tag: “Sete backends de terminal — local, Docker, SSH, Singularity, Modal, Daytona e Vercel Sandbox.” A página da documentação Tools & Toolsets (fontewebsite/docs/user-guide/features/tools.mdno tag) apresentavercel_sandboxem uma tabela como “microVM na nuvem do Vercel Sandbox” para “Execução na nuvem com persistência do sistema de arquivos baseada em snapshots”, mostra o comentário de configuração# or: docker, ssh, singularity, modal, daytona, vercel_sandboxe afirma: “Faça a autenticação com os três:VERCEL_TOKEN,VERCEL_PROJECT_IDeVERCEL_TEAM_ID. … Os runtimes compatíveis sãonode24,node22epython3.13; o Hermes usa/vercel/sandboxcomo raiz padrão do workspace remoto.” Emv2026.8.31, o pacotetools/environments/também contém infraestrutura compartilhada (base.pycom a ABCBaseEnvironment,file_sync.py,modal_utils.py,managed_modal.py); a docstring do pacote considera o Modal gerenciado um modo do Modal, não um oitavo backend: “O Modal também tem os modos direto e gerenciado pela Nous, selecionados por meio de terminal.modal_mode.” ↩↩↩ -
Número de plataformas de mensagens na tag
v2026.8.31(verificado novamente para o guia v1.17; idêntico ao dev2026.8.31— 28 linhas na tabela da documentação, os mesmos 24 membros do enumPlatforme as mesmas 22 pastas de adaptadores). A página da documentação do Messaging Gateway (fontewebsite/docs/user-guide/messaging/index.mdna tag) tem uma tabela “Comparação de plataformas” com 28 linhas: Telegram, Discord, Slack, Google Chat, WhatsApp, WhatsApp Cloud API, Signal, SMS, Email, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, WeCom Callback, Weixin, BlueBubbles, Photon (iMessage), QQ, Yuanbao, Microsoft Teams, LINE, ntfy, Raft, IRC, Buzz, SimpleX.gateway/config.pydefineclass Platform(Enum)com 24 membros explícitos (local,telegram,discord,whatsapp,whatsapp_cloud,slack,signal,mattermost,matrix,homeassistant,email,sms,dingtalk,api_server,webhook,msgraph_webhook,feishu,wecom,wecom_callback,weixin,bluebubbles,qqbot,yuanbao,relay) e documenta: “As plataformas de plugins usam membros dinâmicos criados sob demanda por_missing_(), permitindo quePlatform("irc")funcione sem modificar este enum.” A árvoreplugins/platforms/da tag contém 22 pastas de adaptadores:a2a buzz dingtalk discord email feishu google_chat homeassistant irc line matrix mattermost ntfy photon raft simplex slack sms teams telegram wecom whatsapp. Descrições das plataformas: a página do ntfy, literalmente: “ntfy é um serviço simples de notificações pub-sub baseado em HTTP. Ele funciona com o servidor público gratuito emntfy.shou com qualquer instância auto-hospedada… inscreva-se em um tópico pelo aplicativo móvel do ntfy, envie mensagens ao tópico para conversar com o agente e receba a resposta no seu telefone.” A página do Buzz, literalmente: “O adaptador Buzz conecta o Hermes a uma comunidade Buzz — a plataforma open source da Block para colaboração entre humanos e agentes, criada sobre o protocolo Nostr — e retransmite mensagens entre canais do Buzz (ou DMs) e o agente. O tráfego de saída executa o bináriobuzzCLI por meio do shell… a entrada usa uma assinatura nativa do Nostr WebSocket.” Ambas as páginas: “Executehermes gateway setupe escolha… para seguir uma configuração guiada.” ↩↩↩ -
Número de provedores na tag
v2026.8.31(verificado novamente para o guia v1.17; a v0.21.0 ALTEROU esses números em relação às 38 entradas estáticas, 37 pastas de plugins e 41 linhas da documentação dev2026.8.31).hermes_cli/models.pydeclaraCANONICAL_PROVIDERS: list[ProviderEntry]com 39 entradas estáticas (nous,fireworks,openrouter,moa,novita,lmstudio,anthropic,openai-codex,openai-api,alibaba,xai-oauth,xiaomi,tencent-tokenhub,tencent-tokenplan,nvidia,copilot,copilot-acp,huggingface,gemini,vertex,deepseek,xai,zai,kimi-coding,kimi-coding-cn,stepfun,minimax,minimax-oauth,minimax-cn,ollama-cloud,arcee,gmi,kilocode,opencode-zen,opencode-go,bedrock,azure-foundry,ai-gateway,qwen-oauth), seguidas pelo comentário “Estende automaticamente CANONICAL_PROVIDERS com qualquer provedor registrado em providers/ que ainda não esteja na lista acima. Adicionar plugins/model-providers// é suficiente para expor um novo provedor no seletor de modelos”; o loop ignora apenas os tipos de autenticaçãooauth_device_code,oauth_external,external_process,aws_sdk,copilotevertex(sem alterações). A árvoreplugins/model-providers/da tag contém 39 pastas de provedores (nebius-token-factoryerouterforam adicionados no intervalo da v0.21.0); os nove sem entrada estática (actual,alibaba-coding-plan,commandcode,deepinfra,meta-ai,nebius-token-factory,opencode-free,router,upstage) são todos resolvidos para o tipo de autenticaçãoapi_key— sete declaramauth_type="api_key"explicitamente (incluindo os dois novos plugins), enquantocommandcodeeopencode-freeherdamauth_type: str = "api_key"deproviders/base.py. A página da documentação de provedores de IA (fontewebsite/docs/integrations/providers.mdna tag) apresenta tabelas com 45 provedores nomeados, além de uma linha “Endpoint personalizado” (linhas adicionadas desdev2026.8.31: Ramp Router, Nebius Token Factory, Tencent TokenPlan, Alibaba Cloud (Token Plan) — citadas em 36); cada nome de variável de ambiente, slug de provedor, alias e observação sobre autenticação nas novas linhas da matriz foi extraído dessa tabela, incluindo “OpenCode Free | Sem chave — nenhuma chave API ou conta necessária (provedor:opencode-free, aliases:free,opencode_free). Selecione porhermes modelou/model free; as solicitações são enviadas anonimamente”, “Google Vertex AI | … OAuth2 por meio de JSON de uma conta de serviço ou ADC, com faturamento do GCP”, “AWS Bedrock | … cadeia padrão de credenciais da AWS via boto3” e “CommandCode | … Funciona com os planos GOAT/Pro/Max/Provider (mas não com o plano Go de US$ 1 — sem acesso a API)”. A linha do Meta AI vem do bloco de chave API de primeira classe da mesma página: “Meta Model API (família Muse Spark)…hermes chat --provider meta-ai --model muse-spark-1.2… Requer: MODEL_API_KEY”. Cerebras aparece apenas na tabela “Outros provedores compatíveis” da página (https://api.cerebras.ai/v1, “Inferência em chips em escala de wafer”), portanto está listado na linha de endpoint personalizado, e não como provedor de primeira classe. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Superfície de CLI na tag
v2026.8.31(verificada novamente para o guia v1.17; os textos citados da ajuda das opções globais e todos os fatos sobre_BUILTIN_SUBCOMMANDSpermanecem inalterados desdev2026.8.31— o frozenset é idêntico, com 73 entradas — enquantohermes_cli/_parser.pymudou apenas dentro dehermes chat, conforme documentado em 40). As opções globais e os respectivos textos de ajuda vêm dehermes_cli/_parser.py:--in(“Acessa DIR antes de iniciar ou retomar. Quando combinada com ‘–resume latest’ ou -c, seleciona a sessão mais recente do workspace de DIR, e a sessão permanece em DIR (ignora a restauração do diretório de trabalho registrado).”),--ignore-user-config(“Ignora ~/.hermes/config.yaml e usa os padrões integrados (as credenciais em .env ainda são carregadas)”),--ignore-rules(“Ignora a injeção automática de AGENTS.md, SOUL.md, .cursorrules, memória e skills pré-carregadas”),--tui(“Inicia a TUI moderna em vez do REPL clássico”),--cli(“Força o REPL clássico do prompt_toolkit (substitui display.interface=tui)”),--dev(“Com –tui: executa os arquivos-fonte de TypeScript via tsx (ignora a compilação de dist)”) e--version/-V(“Mostra a versão e encerra”).hermes_cli/_startup_fast.pyusa o caminho rápido apenas paraargv in (["--version"], ["-V"]), e o frozenset_BUILTIN_SUBCOMMANDSemhermes_cli/main.pynão contém nenhuma entradaversion; a Referência de comandos de CLI documentahermes --version(“Mostrar informações da versão”), mas nãohermes version. As descrições dos comandos são os textoshelp=do parser emhermes_cli/main.pyehermes_cli/subcommands/*.pyna tag (por exemplo,approvals: “Ferramentas de solicitação de aprovação (extraem propostas de listas de permissões do histórico)”;pause: “Parada de emergência: pausa o despacho de cron/kanban e novos turnos do gateway”;sync: “Skill Sync — sincroniza suas skills entre dispositivos e com sua equipe”;verify: “Detecta a receita de execução de um projeto e realiza um teste de fumaça”;login: “Obsoleto. Usehermes authpara gerenciar credenciais,hermes modelpara selecionar um provedor ouhermes setuppara fazer a configuração completa.”), conferidos com a tabela de comandos de nível superior da documentação.hermes update --planestá emhermes_cli/subcommands/update.py: “Mostra o plano de atualização e encerra sem alterar nada: o tipo de instalação (git/docker/nix), cada serviço Hermes em execução em todos os profiles, com seu supervisor e a versão do código em execução, além de como cada um será reiniciado. Somente leitura; seguro para uma frota em produção.”; não existe nenhum comandofleetem_BUILTIN_SUBCOMMANDS.hermes worktreeé registrado emhermes_cli/main.py(ajuda: “Audita e recupera worktrees do git e branches mescladas acumuladas”) comlist(aliasesls,audit; “Classifica cada árvore: idade, tamanho, veredito, motivo (ação padrão)”),prune(“Remove árvores seguras e exclui branches locais totalmente mescladas”),--repo,--dry-run(“Mostra o plano sem alterar nada”),--trees-only(“Remove apenas worktrees; não altera as branches locais”) e--branches-only(“Exclui apenas branches locais mescladas; não altera as worktrees”). O comando slash/worktreeé_handle_worktree_commandemhermes_cli/cli_commands_mixin.py(bloco de sintaxe:/worktree,/worktree new [name],/worktree list,/worktree prune [--dry-run]); a seção “Limpeza de worktrees” do guia do usuário de CLI acrescenta: “Dentro de uma sessão,/worktree prune [--dry-run]faz o mesmo (e nunca altera a árvore em que a sessão está sendo executada).” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Comandos do Nous Portal na tag
v2026.8.31(verificados novamente para o guia v1.17;hermes_cli/portal_cli.pyé idêntico byte a byte à sua versão emv2026.8.31). O README na tag, na seção “Ignore a coleta de chaves de API — Nous Portal”: “Um único comando após uma instalação limpa:hermes setup --portal… Isso faz seu login via OAuth, define Nous como seu provedor e ativa o Tool Gateway. Confira o que está conectado a qualquer momento comhermes portal info.”hermes_cli/portal_cli.pyregistraportal(ajuda: “Configura o Nous Portal (login, escolha do modelo, Tool Gateway); consulte tambémportal info”) comlogin(“Faz login no Nous Portal e o configura (padrão; onboarding em uma única etapa)”),info(“Mostra um resumo da autenticação do Portal e do roteamento do Tool Gateway”),open(“Abre a página de assinatura do Portal no navegador padrão”),tools(“Lista as ferramentas do Tool Gateway e quais são roteadas pela Nous”) e o comentário no código “statusmantido como alias oculto para compatibilidade retroativa deinfo.” A página da documentação do Tool Gateway mostrahermes setup --portal # Fresh install: Nous OAuth + set Nous as provider + turn on the Tool Gateway in one goehermes portal info # Portal auth + Tool Gateway routing summary; a Referência de comandos de CLI na mesma tag ainda documentahermes portal [status|open|tools]. ↩↩↩ -
Comparação de GitHub em API,
NousResearch/hermes-agent,v2026.8.19...main, consultada em 26 de agosto de 2026:ahead_by: 1104,behind_by: 0. A lista de lançamentos de API apresentav2026.8.19(Hermes Agent v0.20.5, publicado em 2026-08-21T12:16:39Z) como a tag mais recente, cujas notas declaram: “As notas completas e selecionadas deste ciclo serão lançadas com a v0.21.0, que documentará tudo a partir da v0.20.0.” Verificado novamente em 27 de agosto de 2026 com a nova tag:v2026.8.27...mainretornaahead_by: 0,behind_by: 0,status: identical— agoramainestá exatamente na tag v0.20.6. ↩↩ -
Notas de lançamento do Hermes Agent v0.20.6 (tag
v2026.8.27, data de lançamento declarada como 27 de agosto, publicada em 2026-08-27T12:06:53Z; consultada por meio da GitHub de API em 27 de agosto de 2026 — pré-lançamento: falso). Apresentação literal: “Lançamento de correção. Esta tag reúne os cerca de 525 PRs mesclados desde a v0.20.5 em um lançamento estável com tag para consumidores downstream (imagens de Docker, implantações hospedadas, instalações novas).” Descrição literal do ciclo: “Desde a v0.20.5 (v2026.8.19, marcada em 21 de agosto), este ciclo incorporou cerca de 1.313 commits em aproximadamente 1.557 arquivos (+177.113 / -21.682) — cerca de 525 PRs mesclados, incluindo navegação com profiles reais condicionada ao consentimento (use seu profile padrão do Chromium para navegação local, com fluxo de fechamento mediante aprovação no Windows); o Browser para desktop recebendo sua própria janela do sistema operacional, além de um mecanismo gerenciado de atualização remota de SSH e uma barra de profiles da frota; uma grande expansão do catálogo remoto de MCP (mais de 50 servidores hospedados por fornecedores e verificados em produção, incluindo Cloudflare, Grafana Cloud, Better Stack e Railway); cache de resultados com TTL para web_search/web_extract; compressão lean-tail como padrão; tool_search com múltiplas consultas e stemming; criptografia opcional pelo chaveiro do sistema operacional para segredos armazenados (sem mais solicitações do Chaves do macOS a cada inicialização); atualizadores pausando gateways pelo socket de controle em vez de encerrar suas árvores de processos; instalações gerenciadas por imagens/pacotes recusando atualizações locais inseguras (#91277 Fase 3); confirmações de incidentes persistentes do cron e falhas mais claras de divergência de código; controles de expansão de links do Slack; identidades compartilhadas de contêineres de Docker; backends conectáveis para ambientes de terminal; e novos modelos nos seletores (GLM-5.3-Flash, MiniMax M3 grátis, MiniMax H3 Max video).” O lançamento repete: “As notas completas e selecionadas deste ciclo serão lançadas com a v0.21.0, que documentará tudo a partir da v0.20.0 — destaques, áreas de recursos e créditos completos dos colaboradores. Nada deste ciclo foi omitido.” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Compressão na tag
v2026.8.31, verificada novamente nav2026.8.31para o guia v1.17:tail_mode: str = "lean", a validação("legacy", "lean"), o padrão"lean"de agent_init, a migração para a versão 17 da configuração e a observação abaixo sobre o comentário auxiliar desatualizado continuam válidos na nova tag (context_compressor.pyganhou um caminho de nova tentativa para a rota de resumo fixada, que não altera nenhum dos padrões citados).agent/context_compressor.pyusa como padrãotail_mode: str = "lean"emContextCompressor.__init__, com o comentário “Modo de cauda lean (#compaction-v2): ‘lean’ = pequena cauda de recência limitada + seção de resumo com mensagens do usuário literais + ponteiros de recuperação; ‘legacy’ = cauda de 0,20janela (comportamento em produção)” e a validaçãoself.tail_mode = tail_mode if tail_mode in ("legacy", "lean") else "lean".agent/agent_init.pylêcompression.tail_modecom o padrão"lean"; seu comentário quantifica os dois modos: “‘lean’ (padrão) mantém uma cauda literal limitada de 2,5%/10K-25K com mecanismos de ponteiros de recuperação… ‘legacy’ restaura a cauda literal anterior à #87326 de 0,20limite, que, em configurações com janelas grandes/limites elevados, acumula de 100K a 240K tokens por compactação.” A página da documentação de configuração (fontewebsite/docs/user-guide/configuration.mdna tag) mostra o blococompression:comenabled,threshold: 0.50,threshold_tokens: null,target_ratio: 0.20,tail_mode: lean(anotado nav2026.8.31: “‘lean’ (padrão — cauda limitada de 2,5%, 10K-25K, com um log detalhado da sessão + índice de âncoras + ponteiros de recuperação de session_search no resumo, tudo a partir de UMA chamada ao resumidor auxiliar; cerca de 3 vezes menos tokens retidos após a compactação) ou ‘legacy’ (cauda literal de 0,20×limite)”),protect_last_n: 20eprotect_first_n: 3; coloca os controles do resumidor emauxiliary.compression(model,provider,base_url); e observa: “Configurações mais antigas comcompression.summary_model,compression.summary_providerecompression.summary_base_urlsão migradas automaticamente paraauxiliary.compression.*no primeiro carregamento (versão 17 da configuração). Nenhuma ação manual é necessária.” A migração é_migrate_to_17emhermes_cli/config_migrations.py(“Versão 16 -> 17: remover as chaves legadas compression.summary_”). A página para desenvolvedores sobre compressão de contexto (fontewebsite/docs/developer-guide/context-compression-and-caching.mdna tag) listatail_modeem uma tabela com o padrãolean, afirma “Resultado em sessões reais com 500K tokens: cerca de 49K retidos contra cerca de 162K” e “Resultados antigos de ferramentas dentro da cauda lean são reduzidos a representações de uma linha com um ponteiro de recuperação”, além de incluir o alerta sobre o modelo de resumo (nav2026.8.31): “O modelo de resumo deve ter uma janela de contexto pelo menos tão grande quanto a do modelo do agente principal. … O compressor então descarta os turnos intermediários sem um resumo, perdendo silenciosamente o contexto da conversa.” (Um ponto desatualizado no upstream: a “Referência completa da configuração auxiliar” da página de configuração ainda descreve o espaçoauxiliary.compressioncomo “Tempo limite da compressão de contexto (separado da configuração compression.)”; o código de migração, o seletor auxiliar interativo dehermes modele a própria seção de compressão da página são as fontes mais recentes e consistentes entre si.) ↩↩↩↩↩↩↩ -
Backends de terminal conectáveis na tag
v2026.8.31(verificados novamente para o guia v1.17;agent/terminal_env_registry.pyé idêntico, byte por byte, à sua versão nav2026.8.31). Docstring do móduloagent/terminal_env_registry.py, literalmente: “Mapa central dos backends de terminal conectáveis registrados. Preenchido por plugins durante o carregamento por meio de PluginContext.register_terminal_environment_provider; consumido por tools.terminal_tool._create_environment” e “Os nomes dos backends integrados são reservados — register_provider rejeita um provider cujo nome entre em conflito com um deles, portanto um plugin nunca pode sobrepor as implementações docker/modal/… incluídas no repositório”; deliberadamente, “não há resolução do provider ativo aqui: o backend ativo é exatamente aquele indicado por TERMINAL_ENV / terminal.backend, assim como ocorre com os backends integrados.” Seu frozensetBUILTIN_BACKEND_NAMEScontém os sete backends mais o alias do modo internomanaged_modal: local, docker, singularity, modal, managed_modal, daytona, vercel_sandbox, ssh. A nova página da documentação Plugins de providers de ambiente de terminal (fontewebsite/docs/developer-guide/terminal-environment-plugin.mdna tag), literalmente: “O Hermes executa comandos shell por meio de um conjunto conectável de backends de terminal. Os backends integrados (local, Docker, Singularity, Modal, Daytona, Vercel Sandbox, SSH) ficam no repositório principal, em tools/environments/. Fornecedores terceirizados de sandboxes são integrados como plugins — um repositório de plugin independente instalado em ~/.hermes/plugins/, que registra um backend selecionado pelo usuário exatamente como um backend integrado, por meio de terminal.backend em config.yaml”; ela apresenta em uma tabela as áreas controladas por um provider registrado (encaminhamento de comandos, seletor de backend dohermes setup, status da sondagem no dashboard, verificações dehermes status/hermes doctor, dicas de ambiente no prompt do sistema, tratamento de caminhos/cwd do contêiner, remoção de secrets, isolamento de sandbox por sessão) e declara o objetivo do design: “Declarar essas flags no provider elimina a categoria clássica de bugs em que ‘o novo backend não foi incluído no ponto de classificação N’ — o núcleo consulta o registro em cada ponto, em vez de uma lista de nomes escrita diretamente no código.” ↩↩↩ -
Nova verificação completa na tag
v2026.8.31(guia v1.17). Locales: a árvorelocales/contém 17 catálogos de mensagens —en.yamlmais 16 traduções (af,ar,de,es,fr,ga,hu,it,ja,ko,pt,ru,tr,uk,zh-hant,zh) — idênticos aos dav2026.8.27. Personalidades:BUILTIN_PERSONALITIESemhermes_cli/personality.pycontém as mesmas 14 entradas, dehelpfulahype(helpful, concise, technical, creative, teacher, kawaii, catgirl, pirate, shakespeare, surfer, noir, uwu, philosopher, hype); o arquivo é idêntico, byte por byte, à sua versão nav2026.8.27. Contagens que MUDARAM na tag: 39 entradas estáticas emCANONICAL_PROVIDERS(eram 38) e 39 pastas emplugins/model-providers/(eram 37) — consulte 26 e 36. Contagens inalteradas: 24 membros do enumPlatform(lista de membros idêntica emgateway/config.py, que ganhou apenas um camporoom_link_urlno gateway), 22 pastas de adaptadores emplugins/platforms/, 28 linhas na tabela Comparação de plataformas da documentação;_BUILTIN_SUBCOMMANDScontém as mesmas 73 entradas (peereworktreepresentes, ainda semversione semapproval-check— o nome usado nas notas da versão parahermes approvals test);hermes_cli/_startup_fast.pyehermes_cli/portal_cli.pysão idênticos, byte por byte, às suas versões nav2026.8.27. ↩↩↩↩ -
Roteamento de modelos auxiliares na tag
v2026.8.31(verificado novamente para o guia v1.17; o bloco de padrões"auxiliary"na nova tag mantém exatamente a mesma lista de slots, notas de remoção e configurações que não são de slots, e as citações da documentação abaixo permanecem textualmente idênticas). A página da documentação de configuração (fontewebsite/docs/user-guide/configuration.mdna tag), literalmente: “Por padrão (auxiliary.*.provider: "auto"), o Hermes roteia todas as tarefas auxiliares para o seu modelo principal de chat — o mesmo provedor/modelo que você escolheu emhermes model. Você não precisa configurar nada para começar, mas saiba que, em modelos de raciocínio caros (Opus, MiniMax M2.7 etc.), as tarefas auxiliares geram um custo significativo.”; a observação “Por que ‘auto’ usa seu modelo principal”: “Versões anteriores direcionavam usuários de agregadores (OpenRouter, Nous Portal) para um padrão barato no lado do provedor. Isso era inesperado — usuários que pagavam por uma assinatura de agregador viam outro modelo processar seu tráfego auxiliar. Agora,autousa o modelo principal para todos, e as substituições específicas por tarefa emconfig.yamlcontinuam tendo prioridade.”; e, sobre extração da web: “(A extração da web não é uma tarefa auxiliar:web_extracte os snapshots do navegador truncam conteúdos longos de forma determinística e armazenam o texto completo para paginação comread_file— sem envolver LLM.)” A lista oficial de slots está no bloco de padrões"auxiliary"emhermes_cli/config_defaults.pyna tag: vision, compression, skills_hub, approval, review, mcp, title_generation, memory_query_rewrite, tts_audio_tags, triage_specifier, kanban_decomposer, profile_describer, goal_judge, curator, monitor, background_review, moa_reference e moa_aggregator (além das configurações que não são de slots transient_retries, free_only, openrouter_model e stream_only_base_urls); os slots incluemprovider,model,base_url,api_key,timeout,extra_bodye umreasoning_effortespecífico por tarefa. Notas de remoção no mesmo arquivo, literalmente: “web_extract não usa mais um LLM auxiliar — as páginas são truncadas e armazenadas com um ponteiro read_file (sem resumo), e os snapshots do navegador seguem o mesmo padrão. O antigo blocoauxiliary.web_extract.*foi removido daqui. Os valores existentes nos arquivos config.yaml dos usuários são resíduos inofensivos e ignorados.” e “session_search não usa mais um LLM auxiliar (PR #27590 — a ferramenta com formato único retorna diretamente o conteúdo do banco de dados)”; não existe uma chaveflush_memoriesno bloco. As descrições de uma linha dos slots são os comentários do mesmo arquivo (“Especificador de triagem — transforma uma descrição preliminar de uma linha na coluna Kanban Triage em uma especificação concreta e depois a promove paratodo. Acionado porhermes kanban specify”; “Decompositor do Kanban — decompõe uma tarefa de triagem em um grafo de tarefas filhas roteadas para profiles especializados de acordo com a descrição. Acionado porhermes kanban decomposee pelo despachante de decomposição automática do kanban”; “Descritor de profile — gera automaticamente uma descrição de 1 a 2 frases sobre as especialidades de um profile. Acionado porhermes profile describe <name> --autoe pelo botão de geração automática do dashboard”; “Avaliador de objetivo — avalia se a resposta mais recente de uma execução de /goal satisfaz o objetivo/contrato”; “Curador — fork de revisão do uso de skills”; “Revisão em segundo plano — o fork de autoaperfeiçoamento executado após o turno que decide se deve salvar uma memória/corrigir uma skill”), os comentários da referência completa da página de configuração (“Inserção oculta de tags de áudio do Gemini 3.1 TTS”; “Títulos de sessão gerados automaticamente. Quando o idioma está vazio, segue a conversa”;auxiliary.title_generation.enabled: falsedesativa os títulos automáticos) e a tabela de configuração da página da documentação do Kanban (“auxiliary.kanban_decomposer| Modelo que produz o grafo de tarefas (chamado por Decompose)”; “auxiliary.profile_describer| Modelo que gera automaticamente descrições de profiles (chamado porhermes profile describe --auto)”). Caminho interativo: executehermes modele escolha “Configurar modelos auxiliares” para acessar um seletor por tarefa (vision, title_generation, tts_audio_tags, compression, approval, triage_specifier, kanban_decomposer, profile_describer, delegation); a entrada Delegation é salva nodelegation.*de nível superior porque os subagentes “são agentes filhos completos, não chamadas LLM secundárias.” ↩↩↩↩↩↩↩↩↩↩↩ -
Notas da versão Hermes Agent v0.21.0, “The Pantheon Release”, tag
v2026.8.31, com data de lançamento declarada de 31 de agosto e publicada em 2026-08-31T19:29:49Z. Linha de estatísticas, literalmente: “Desde a v0.20.0: cerca de 5.800 commits · cerca de 2.475 PRs mesclados · cerca de 5.680 arquivos alterados · cerca de 869.000 inserções · cerca de 135.000 exclusões · cerca de 2.100 issues encerradas · mais de 760 colaboradores”. Apresentação, literalmente: “The Pantheon Release. A v0.20.0 transformou Hermes no arauto — ele falava e levava mensagens a outros agentes. Na v0.21.0, os deuses se reúnem.” e “Esta versão reúne tudo das tags de correção de infraestrutura v0.20.1–v0.20.6 — esses períodos estão totalmente documentados aqui.” Citações das áreas de recursos usadas acima, literalmente: Bot Mode — “Agora, o Bot Mode é uma parte integrada e ativada por padrão do aplicativo para desktop: cada profile de agente recebe um nome, um rosto de avatar determinístico (com controles para gerar outro ou bloqueá-lo) e um lugar em uma lista compartilhada” e “Antes, ‘multiagente’ significava infraestrutura; agora, parece um aplicativo de chat cheio de colegas de trabalho” (#87886, #88243, #89386, #96726);hermes peer— “As respostas chegam ao Bot Chat canônico de cada agente, por isso as conversas entre agentes são duráveis e podem ser inspecionadas, em vez de serem disparadas e esquecidas” (#88725, #88178, #91487); cron — “continuity=trueleva a saída de cada execução para a próxima (para que um monitor possa eliminar duplicatas comparando com o que já informou), cada tarefa recebe um bloco de notas durável, e as tarefas no modo monitor ignoram totalmente o LLM quando nada mudou” (#91447, #80774, #81139, #81138); delegation — “liste os agentes filhos em execução, redirecione um deles durante a execução com uma correção de rumo ou interrompa-o antes do fim e mantenha o resultado parcial. Adicione validação opcional dos resultados dos agentes filhos com o esquema JSON, exiba nos resultados o custo de cada delegation e aumente os valores padrão (250 iterações, 10 agentes filhos simultâneos)” (#85232, #81144, #81142, #86506, #86745); MCP — “deep linkshermes://que instalam um servidor MCP mediante confirmação explícita” (#87525-#87581); CLI — “Ctrl+P abre uma paleta de comandos com busca aproximada, o seletor/modelfiltra enquanto você digita,/statusmostra o modo de raciocínio, as aprovações pendentes e o uso do contexto, e a barra de status pode exibir em tempo real a porcentagem de acertos do cache, a latência e os tokens por segundo, com controles individuais para cada campo” (#90730, #90717, #90745, #98250, #98282, #97666); navegador — “Agora, o Hermes navega, clica e lê diretamente” (#90197, #89366); provedores — “O API do Meta Model (Muse Spark) chega como provedor integrado, junto com CommandCode, Tencent TokenPlan, Nebius Token Factory, Ramp Router e Actual Computer” (#88565, #88308, #97917, #97916, #97915 e recuperação de #79644/#26491); segurança — “Agora, arquivos protegidos com instruções para agentes (AGENTS.md, skills e armazenamentos de memória) sempre exigem aprovação de gravação, para que um agente vítima de injeção de prompt não consiga reescrever silenciosamente suas próprias instruções permanentes” (#81152), além da ampla revisão de remoção de dados sensíveis (#80965), da cobertura de aprovação no Windows (#84428), da identidade TCC (#95091) e da remoção do MCP do Blender (#83404). Seção de reversões, literalmente: “Modo Model Council (/council) — implementado e depois revertido; não está nesta versão.”; “Context engine DCP — implementado e depois revertido; não está nesta versão.”; “Servidor gateway somente por WS (#94245) — mesclado e depois revertido (#96118); FastAPI continua no caminho de inicialização do aplicativo para desktop. A reprodução de eventos com carimbo de sequência (#94219) FOI incluída.”; “O Electron voltou para a versão 40.10.2; a âncora do interpretador TCC foi removida (substituída pela abordagem de identidade de assinatura que foi incluída).” A seção de correções de bugs termina assim: “…e aproximadamente mais duas mil issues encerradas — nesse período, a média foi de cerca de 85 PRs mesclados por dia.” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Novos providers na tag
v2026.8.31.hermes_cli/models.pyrecebeProviderEntry("tencent-tokenplan", "Tencent TokenPlan", "Tencent TokenPlan (Hy4 preview via api.lkeap.cloud.tencent.com, Anthropic Messages)")(entrada estática nº 39), os modelos de catálogohy4-preview,hy3,hy3-previewe um grupo do seletor apenas para exibição"tencent": ("Tencent Hy", "Hy4 / Hy3 via TokenHub & TokenPlan", ["tencent-tokenhub", "tencent-tokenplan"]).plugins/model-providers/recebenebius-token-factory/erouter/, ambos declarandoauth_type="api_key", portanto a extensão automática os incorpora. A docstring do plugin router, literalmente: “Profile de provider para Ramp Router, o gateway de LLM da Ramp: um endpoint compatível com OpenAI Responses emhttps://api.router.com/v1, que encaminha cada solicitação entre providers upstream (OpenAI, Anthropic, xAI, Fireworks, …) e gerencia fallbacks e controles de gastos no servidor” … “Responses API é o protocolo nativo.” … “Os IDs de modelo válidos são os retornados porGET /v1/modelspara a chave (contas BYOK veem entradas adicionais), portanto este profile não inclui nenhumfallback_models— o seletor depende da busca em tempo real, seguindo a própria orientação do Router de nunca codificar nomes de modelos diretamente.” Na tag, a página da documentação sobre AI Providers apresenta 45 providers nomeados, além da linha Custom Endpoint; as quatro linhas adicionadas desdev2026.8.27, conforme publicadas: “Ramp Router |RAMP_ROUTER_API_KEYem~/.hermes/.env(provider:router; aliases:ramp-router,ramp,router.com; gateway nativo de Responses, catálogo em tempo real com escopo da conta)”; “Nebius Token Factory |NEBIUS_API_KEYem~/.hermes/.env(provider:nebius-token-factory; aliases:nebius,nebius-tf,tokenfactory)”; “Tencent TokenPlan |TOKENPLAN_API_KEYem~/.hermes/.env(provider:tencent-tokenplan, aliases:tokenplan,tencent-lkeap; endpoint de Anthropic Messages)”; “Alibaba Cloud (Token Plan) |ALIBABA_TOKEN_PLAN_API_KEYem~/.hermes/.env(provider:alibaba-token-plan; endpoint da China continental:alibaba-token-plan-cn) — modalidade de tokens com preço fixo do Model Studio”.model_overridesestá emhermes_cli/config_defaults.pyna tag ("model_overrides": {}; entradas explícitas emmodel_overrides.<provider>.<model_id>têm precedência sobre o catálogo, enquanto entradas_defaultpreenchem lacunas apenas para modelos não cobertos pelo catálogo). ↩↩↩↩↩↩↩↩ -
Continuidade de cron na tag
v2026.8.31. A página da documentação sobre cron (fontewebsite/docs/user-guide/features/cron.mdna tag), literalmente: “Definacontinuity=truepara que o job injete sua própria saída mais recente em cada execução. Em geral, jobs recorrentes iniciam cada execução sem memória — um agente que busca notícias relata novamente as mesmas matérias, e um monitor volta a alertar sobre a mesma condição. Com a continuidade ativada, o job desperta sabendo o que relatou da última vez e pode eliminar duplicatas e continuar de onde parou”; “Nas execuções seguintes, a saída anterior é adicionada no início com instruções de continuidade (‘evite repetir o que já foi relatado’) … Internamente, a flag é armazenada como a entrada reservadaselfemcontext_from.”; “Pelo CLI:hermes cron create "every 6h" "Scan for news" --continuity, e usehermes cron edit <job_id> --continuity/--no-continuitypara ativar ou desativar o recurso em um job existente. A mesma opção aparece no editor de cron do dashboard e na caixa de diálogo de rotinas do Bot Mode no desktop.” Nível de esforço por job, literalmente: “Um job pode fixar seu próprio nível de raciocínio, independentemente do modelo fixado: uma das opçõesnone,minimal,low,medium,high,xhigh,max,ultra. Quando definido, ele substitui tantoagent.reasoning_effortglobal quantoagent.reasoning_overridespor modelo nas execuções desse job”; defina comhermes cron create/edit --reasoning-effort high. Entrega pelo Bot Chat, literalmente: “bot-chatentrega a saída na sessão “Bot Chat” canônica de um profile como uma mensagem real … nesse caso, o destinatário é o próprio bot: ele recebe a saída como uma mensagem recebida, toma as providências necessárias e responde no chat.” Notepads: a docstring do módulocron/notepad.py— “Um pequeno espaço temporário de chave-valor que cada job cron pode usar para manter estado entre ativações agendadas (cursores, marcas d’água, listas de monitoramento)”, com limites de “MAX_VALUE_BYTES(16 KB)” e “MAX_JOB_TOTAL_BYTES(64 KB)” (“o notepad é injetado no prompt a cada execução, portanto um crescimento ilimitado aumentaria o prompt de cada ativação”), e “O caminho de gravação é o CLI (hermes cron notepad <job_id> set <key> <value>), invocado pelo agente em execução por meio de sua ferramenta de terminal; nenhuma ferramenta de modelo é adicionada.” Modo monitor: a docstring decron/monitor.py— “Suporte a cron no modo monitor — detecção de alterações com supressão por hash”, que anexa uma “fonte de monitoramento de baixo custo (monitor_scriptoumonitor_url)”; “sem alterações -> a execução do agente é totalmente suprimida (sem LLM, sem entrega); o ciclo é registrado como uma execução silenciosano_change”; “A saída é comparada como BYTES EXATOS — sem remoção de timestamps nem normalização de espaços em branco. Scripts de monitoramento devem produzir uma saída estável … ou cada ciclo parecerá uma alteração.”; “habilitador: #80774.” ↩↩↩↩↩↩↩ -
Orquestração de subagents em tempo real na tag
v2026.8.31. Na página da documentação sobre delegação (fontewebsite/docs/user-guide/features/delegation.mdna tag), “Direcionando um subagent em execução”: a interface de controle é{"action": "list"},{"action": "steer", "subagent_id": "sa-0-1a2b3c4d", "message": "focus on pricing instead"},{"action": "stop", "subagent_id": "sa-0-1a2b3c4d"}; literalmente: “listretorna os filhos ativos da conversa:subagent_id, objetivo, status,running_seconds,accepting_steere o caminho da transcrição em tempo real”; “stopencerra antecipadamente um filho no próximo limite de iteração; o resultado parcial ainda retorna à conversa como uma mensagem normal de conclusão”; as ações de controle têm “escopo limitado à própria árvore de processos iniciados pelo chamador — uma conversa nunca pode ver nem controlar os filhos de outra sessão — e nunca consomem o limite de criação de subagents por turno, portantostopcontinua funcionando mesmo depois de o limite ser atingido”; a entrega do direcionamento trata a condição de corrida com transparência (“Na fila não significa entregue, mas nunca é um sucesso fictício”, compending_steertransferido para os resultados emissed_steermarcado quando um filho termina primeiro). Valores padrão:hermes_cli/config_defaults.pydefinedelegation.max_iterations: 250(“limite de iterações por subagent (cada subagent recebe seu próprio orçamento, independente do max_iterations do pai)”) edelegation.max_concurrent_children: 10(“limite unificado de simultaneidade: máximo de filhos em paralelo por lote E máximo de unidades de delegação simultâneas em segundo plano (background=true) … (Substitui o max_async_children obsoleto.)”). Um ponto desatualizado no upstream: a própria página da documentação sobre delegação ainda diz “3 tarefas por padrão” e mostra “max_iterations: 50 … (padrão: 50)” em sua referência de configuração; oconfig_defaults.pydistribuído e as notas de versão (“valores padrão aumentados (250 iterações, 10 filhos simultâneos)”) são as fontes mais recentes e concordantes. ↩↩ -
Onda de segurança na tag
v2026.8.31. Arquivos de instruções protegidos: os padrões emhermes_cli/config_defaults.pydefinemsecurity.protected_instruction_files: True(comentário: “Gravações em arquivos de instruções do agente (AGENTS.md/CLAUDE.md/SOUL.md/…)”) junto comprotected_instruction_extra_patterns: [](fnmatch no nome-base);tools/file_tools.pyimplementa a barreira — “Arquivos de instruções protegidos do agente (barreira de aprovação que sempre solicita confirmação)” sobre_PROTECTED_INSTRUCTION_BASENAMES = frozenset({"agents.md", "claude.md", "soul.md", ".cursorrules", ...})— e descreve literalmente o modelo de ameaça: “vetor: uma instrução injetada que edita AGENTS.md / CLAUDE.md / SOUL.md” e “os arquivos de instruções do contexto do projeto são carregados a partir das árvores do cwd — qualquer AGENTS.md localizado em um lugar de onde o agente possa ser executado posteriormente é um alvo ativo.” Identidade do TCC:hermes desktop --setup-tcc-identityé implementado emhermes_cli/main.py—_desktop_macos_setup_tcc_identity(identity: str = "Hermes Local Signing"), “Configuração única parahermes desktop --setup-tcc-identity”, protegido por “(–setup-tcc-identity é exclusivo do macOS; ignorando)” e “(–setup-tcc-identity requer openssl, security e codesign …)”. A varredura de redação de dados (#80965, #80964, #81675, #81686, #88232), a cobertura de aprovação no Windows (#84428), a remoção do MCP do Blender (#83404) e a varredura de instalação de plugins de Tier 1 (#80728) são descritas nas notas de versão.35 ↩↩↩↩ -
Alterações na superfície de CLI na tag
v2026.8.31.COMMAND_REGISTRYemhermes_cli/commands.pyregistraCommandDef("palette", "Open the fuzzy command palette (also Ctrl+P)", "Info", ...)eCommandDef("status", "Show session, model, token, and context info", "Session", ...)—/statusé um comando de sessão do registro compartilhado, não exclusivo de mensagens. Não há uma entradaapproval-checkem_BUILTIN_SUBCOMMANDS(73 entradas, idênticas às dev2026.8.27); a simulação que as notas de versão da v0.21.0 chamam dehermes approval-check(#81137) éhermes approvals test— o texto de ajuda do parser emhermes_cli/subcommands/approvals.pynessa tag diz: “Simula o veredito de aprovação de um comando (sem nunca executá-lo)”, com--backend(“Tipo de backend do terminal a ser avaliado (padrão: local …”) e--json.hermes_cli/_parser.pymudou apenas dentro dehermes chat: a ajuda de-q/--queryagora diz “Consulta a ser executada. Em um TTY real, o prompt inicia uma sessão interativa (enviado literalmente como o primeiro turno); combinado com –oneshot ou -Q, ou em um ambiente sem TTY, ele responde e encerra.”; uma nova flag--oneshotdocumenta “Com -q/–query-file: responde à consulta e encerra (comportamento legado de consulta única), em vez de iniciar uma sessão interativa. Implícito em stdio sem TTY e com -Q/–quiet.”; e--max-turnsdocumenta “Número máximo de iterações de chamada de ferramentas por turno da conversa (padrão: 500 ou agent.max_turns na configuração)”. ↩↩↩↩↩↩↩↩↩ -
Notas de versão do Hermes Agent v0.21.1, tag
v2026.9.7, data de lançamento informada: 7 de setembro, publicada em 2026-09-07T22:17Z. O conteúdo é deliberadamente sucinto; literalmente: uma “Versão de correção” que “reúne o estado atual da main desde a v0.21.0 para implantações com tag e consumidores downstream”; estatísticas do período no momento da preparação: “5.139 commits sem merge em 4.364 arquivos alterados (+601.014 / -768.419)” e “632 PRs com merge”; e “As notas de versão completas e selecionadas para este período serão publicadas com a v0.22.0.” Verificação no clone local:git rev-list --count --no-merges v2026.8.31..v2026.9.7= 5.140 egit diff --shortstat= +601.018 / -768.423 — os números no conteúdo representam o snapshot anterior ao commit de lançamento, com uma diferença exatamente igual ao commit de lançamento; o maior período anterior entre tags adjacentes év2026.7.20..v2026.7.30, com 2.790 commits sem merge (todos os pares adjacentes a partir dev2026.3.12foram medidos no clone local). A verificação do doctor na entrada de solução de problemas está emhermes_cli/doctor_config.py:330-362nessa tag (_drift_max_iterations_ghost): umHERMES_MAX_ITERATIONSobsoleto no.envsobrepõeagent.max_turnsquando a ponte de inicialização é interrompida por um erro anterior de parsing da configuração (issue #17534), ehermes doctor --fixremove a linha do.env. Verificação da sessão atual em 8 de setembro de 2026. ↩↩↩↩↩ -
COMPAT_MANIFEST.mdna tagv2026.9.7(raiz do repositório, 3.869 linhas). Literalmente: “A decomposição de setembro de 2026 (PR #102117) dividiu os grandes módulos do Hermes Agent em arquivos com responsabilidades específicas”; “Os caminhos internos de importação não são uma API estável”; “Esta camada é temporária e será removida em 14 de setembro de 2026. Ela foi adicionada como um único commit e é removida revertendo esse commit.”; a tabela do que acontece (antes de 14 de setembro de 2026: aviso amarelo que identifica o plugin, a data ehermes plugins compat; o plugin “é carregado; cada resolução de caminho antigo emiteHermesPluginCompatWarninguma vez”; a partir de 14 de setembro de 2026: “aviso vermelho: plugin DESATIVADO” e “não carregado;hermes plugins listmostra o motivo”; Desktop: “modal exibido uma única vez”); a opção de escape, literalmente: “plugins.allow_deprecated_imports: truenoconfig.yamlmantém os plugins afetados em funcionamento após a data, até que a reversão realmente remova os caminhos.”; contagens por tipo: moved-lazy 1.148, import 592, restored-def 290, restored-helper 41, restored-import 17, module-stub 3, unrestorable 34; escopo: apenas nomes públicos de nível superior, “Os pontos de monkeypatch para testes também não são preservados.” Parser do verificador emhermes_cli/subcommands/plugins.py:104-112:hermes plugins compat [path] [--json], descrição literal: “Faz uma varredura estática de todos os plugins externos ativados em busca de importações de caminhos de módulos anteriores à decomposição (consulte COMPAT_MANIFEST.md) e exibe arquivo:linha, caminho antigo -> caminho novo. Encerra com código 1 quando algum plugin é afetado.” Estrutura da decomposição verificada nessa tag:agent/= 214 módulos de nível superior + 7 subpacotes (lsp,monitoring,pet,proxy_sources,secret_sources,transports,verify),hermes_cli/subcommands/= 61 módulos,CANONICAL_PROVIDERSemhermes_cli/models_catalog_static.py:311com 39 entradas cujos slugs são idênticos à lista dev2026.8.31emhermes_cli/models.py(incluindo a tupla estáticaxai;plugins/model-providers/ainda contém 39 pastas), o antigoprompt_builder.pyde nível superior foi removido (agora éagent/prompt_builder.py) erun_agent.pycontinua sendo o local deAIAgentna raiz. Situação posterior, verificada novamente para o guia v1.19 (15 de setembro de 2026): a remoção foi ativada na data prevista como uma barreira por data, não como uma reversão — na tagv2026.9.14,hermes_cli/plugin_compat.py:32defineCOMPAT_REMOVAL_DATE = _dt.date(2026, 9, 14),removal_in_effect()(linhas 86-90) retorna true a partir dessa data ou quando o arquivo de manifesto está ausente, eallow_deprecated_imports()(linhas 261-268) aceita apenas um booleano literal (a condição é... is True; comentário no código-fonte: “Apenas booleano literal”, portanto uma string YAML como"false"ou"no"nunca pode ativar o desvio posterior à remoção). A reversão que exclui os caminhos antigos NÃO foi aplicada:COMPAT_MANIFEST.md,compat_manifest.jsonehermes_cli/plugin_compat.pyestão todos presentes emv2026.9.14e namainno commit5d59366010(2026-09-15 12:55 PT, obtido no mesmo dia), portanto a opção de escape ainda resolve os caminhos antigos; ela deixa de funcionar assim que a reversão for aplicada. Verificado novamente para o guia v1.20 (22 de setembro de 2026): a reversão ainda não foi aplicada — os três arquivos estão presentes na tagv2026.9.21e namainno commita53b42ddea(commit feito em 22 de setembro de 2026, obtido no mesmo dia). Emv2026.9.21, a barreira e a condição permanecem essencialmente inalteradas:COMPAT_REMOVAL_DATEcontinua emplugin_compat.py:32,removal_in_effect()em :86 eallow_deprecated_imports()agora está em :296-303, com a mesma condição de booleano literal (... is True; o comentário agora diz “Apenas booleano literal: uma YAML"false"/"no"não deve ativar o desvio posterior à remoção.”). As únicas alterações no módulo durante o período da v0.21.4 tratam de desempenho e portabilidade: um cache de varredura para todo o processo, indexado pela assinatura de arquivo(relpath, mtime_ns, size)de cada pasta de plugin (um gateway multiplexado descobre os plugins uma vez por profile atendido, e refazer o parsing do código-fonte de cada plugin custava cerca de 0,4 s por profile no caminho de inicialização), além de caminhos de resultados no formato POSIX no Windows nativo (#112576); o próprio manifesto também removeu duas linhas relacionadas ao opencode (_OPENCODE_KEYLESS_EXTRA_SLUGS,is_opencode_zen_free_model) — nada estrutural. ↩↩↩↩↩↩↩↩↩ -
docs/session-lifecycle.mdna tagv2026.9.7, seção “6. Limites explícitos de conversa”, literalmente e na íntegra: “A inatividade e o tempo de relógio nunca alternam uma conversa./newe/resetcriam um limite explícito; a compactação de contexto continua gerenciando históricos longos. A configuração legada de temporizador é ignorada. O tipo de dadosSessionResetPolicyexistente é um dado inerte de compatibilidade, não uma política de runtime. A suspensão explícita ainda cria um limite no próximo turno recebido. A recuperação respeita limites explícitos e históricos já finalizados, em vez de reabri-los. A remoção apenas de recursos e a coleta de órfãos de WebSocket permitem que as conversas sejam retomadas.” ↩↩↩↩ -
Autorização de MCP na tag
v2026.9.7. Parser:hermes_cli/subcommands/mcp.py:55-66–login(“Forçar nova autenticação em um servidor MCP baseado em OAuth”) aceita--flowcom as opçõesbrowser/device, ajuda literal: “Fluxo de OAuth (substitui oauth.flow): PKCE no navegador ou código de dispositivo RFC 8628”;reauth(“Autenticar novamente um servidor MCP com OAuth, ou todos eles (–all)”) aceita um nome opcional mais--all. O fluxo de código de dispositivo foi incorporado durante esse período: commitf5afe8bd40“feat: autorizar servidores MCP com códigos de dispositivo do CLI”. Reforços de segurança relacionados, conforme o assunto dos commits feitos nesse período:f914c9b070“fix(mcp): impor a propriedade do profile em todas as sessões de OAuth”;f94307a7f7“fix: ignorar caches de metadados de OAuth de MCP malformados”;e3ba651b6d“fix(desktop): retransmitir OAuth de MCP por callbacks locais do cliente”. Inicialização filtrada por toolset:tools/mcp_tool_discovery.py:412-426– o filtro existe para que “hermes -z -t <toolsets>” possa “evitar a inicialização a frio de servidores de que o chamador não precisa”, e um filtro vazio ignora totalmente o carregamento de MCP. ↩↩↩ -
Confiabilidade da delegação na tag
v2026.9.7, consultada no código-fonte da ferramenta de delegação. Unidades de conclusão:tools/delegate_tool_dispatch.py:326-341(_units_of) – literalmente: “Desativado por padrão (delegation.independent_completions): a chamada inteira é UMA unidade e retorna como uma única mensagem. Uma enxurrada de conclusões por tarefa (um novo turno para cada uma) fragmentava orquestradores que não tinham um plano para isso.”; há uma unidade para cadagroupdistinto de tarefas (na ordem da primeira ocorrência), além de uma para cada tarefa sem grupo, e cada uma reentra na conversa por conta própria; commit feito nesse períodoc89f3b8800“fix(delegation): uma conclusão por chamada por padrão; unidades na fila não ficam mais paralisadas”. Transferência de processos em segundo plano: commit3c0d90e8ef“feat(delegation): subagentes transferem processos em segundo plano ao agente pai; processos restantes são identificados, não considerados confiáveis”; na tag,tools/delegate_tool_child_run.py:744-763(account_background_processes) registra no resultado os processos transferidos, lista os que ainda estão em execução e não foram transferidos comoorphaned_processese os que foram encerrados, mas nunca lidos, comounread_completions(com o final da saída) antes quecleanupos encerre; segundo a docstring, o agente pai “precisa saber disso pelo runtime”, em vez de confiar na alegação de um agente filho de que há um “monitor em execução”; o verbo de transferência éprocess_manage(action="handoff")(somente para agentes filhos), que alteraProcessSession.owner_task_idsob o bloqueio do registro por meio deprocess_registry.transfer_ownership(tools/AGENTS.md, seção Delegação, na tag). Superfície de fallback:delegation.fallback_providersemhermes_cli/config_defaults.py, comentário literal: “Para um agente filho sem fixação, null = herdar a cadeia do agente pai; [] = desativar o fallback. Um agente filho fixado por provider, endpoint ou model não recebe fallback, a menos que esta configuração declare um explicitamente.”; validação da cadeia emtools/delegate_tool_config.py:417-425(_resolve_child_fallback_chain): “Entradas malformadas são descartadas pelo normalizador canônico.” Durabilidade em caso de falha:tools/async_delegation.py:222-246registra de forma durável cada agente filho concluído de uma unidade com vários agentes filhos que ainda esteja em execução na própria linha da unidade ("partial": True), de modo que uma falha antes da conclusão da unidade preserva os agentes filhos concluídos. Camada de cache:tools/delegate_tool.py:106-112(_apply_child_cache_ttl), literalmente: “Um agente filho delegado nunca usa a camada de cache de 1h.”; um agente filho com_cache_ttl == "1h"é alterado para"5m". ↩↩ -
Providers e models na tag
v2026.9.7. Níveis do Astra:hermes_cli/models_catalog_static.py:22-25–openai/gpt-6-astra-fast“preço 2x, nível priority”,-flex“preço 0,5x, nível flex”, além de-pro-fast/-pro-flex;gpt-6-astrae-proficam emOPENROUTER_MODELSe não estão no conjunto de exclusão_OPENROUTER_ONLY, portanto o Nous Portal também os oferece. Restrição de acesso ao Astra e 900K:hermes_cli/codex_models.py:96-101(“O Astra tem acesso restrito por conta: somente o catálogo ativo com escopo de conta pode anunciá-lo”) eagent/model_metadata.py:1447-1462– o OAuth do Codex anuncia 272K,gpt-6-astraé elegível para 900K com o comentário “272K anunciados; entrada de 920.043 aceita, 1.000.043 rejeitada (teste ao vivo em 04/09/2026)”, eCODEX_CONTEXT_VARIANT_SUFFIX = "-900k"é um “sufixo de ativação usado apenas no seletor; nunca enviado pela rede” (o contexto do Astra no lado do OpenRouter é de 1.050.000, conformemodel_metadata.py:334). Novas entradas do catálogo no mesmo arquivo estático (linhas 30-42):anthropic/claude-fable-5.1,google/gemini-3.8-flashegemini-3.7-flash,qwen/qwen3.8-max-0902eqwen/qwen3.8-flash,meta/muse-spark-1.3e-contributor(contexto de 1M, conformeagent/model_metadata.py:349).muse-image:plugins/image_gen/meta-ai/__init__.py(“API do Meta Model (muse-image): compatível com OpenAI (https://api.meta.ai/v1)”, incluindo models comomuse-image-1.0). Tavily:hermes_cli/config_defaults.py:2522-2525, literalmente “Chave de API do Tavily para busca e extração na web nativas para IA (opcional – funciona sem chave quando o Tavily está selecionado)”, ferramentasweb_searcheweb_extract; o blocowebobserva que o Tavily “é habilitado opcionalmente sem chave por meio dehermes tools, não faz parte do ring”. Runtime gerenciado do llama.cpp: o pacotehermes_cli/local_runtime/(“Runtime gerenciado do llama.cpp”), o bloco de configuração emconfig_defaults.py:2327(“binários oficiais, um servidor supervisionado”; referência à documentaçãouser-guide/local-models) e a superfície para desktopapps/desktop/src/api/local-models.ts. Providers de processo externo:agent/auxiliary_client.py:4740-4799(_resolve_external_process_branch, “providersexternal_processde PROVIDER_REGISTRY, servidos por meio do profile registrado correspondente”, indexados pelo profile registrado “para que um provider ACP externo ao projeto” seja resolvido). Frequência de atualização do catálogo: migração de configuração 39 -> 40 emhermes_cli/config_migrations.py:622-627(“model_catalog.ttl_hours -> ttl_minutes (padrão 20)”, mensagem ao usuário “O catálogo de models agora é atualizado a cada 20 minutos (model_catalog.ttl_minutes)”), comhermes_cli/model_catalog.pyrespeitando ottl_hourslegado “somente quandottl_minutesainda estiver no valor padrão”. ↩↩↩ -
Onda do Desktop na tag
v2026.9.7. Modo de comentários:website/docs/user-guide/desktop.mdna tag, estrutura textual literal: “clique em Annotate na barra do navegador de pré-visualização, depois clique em qualquer elemento (ou arraste uma caixa) na página aberta e digite uma observação; cada comentário salvo permanece como um marcador numerado na página”; “Salvar um marcador nunca envia um turno”; “Add N comments anexa ao compositor uma captura de tela recortada por marcador e um prompt curto que identifica cada comentário”; “Cada comentário de elemento inclui seu seletor CSS, seu markup e os estilos computados relevantes para o layout, para que o agente possa encontrar o elemento no seu código-fonte em vez de tentar adivinhá-lo pela imagem”; “Valores de campos de senha e ocultos, além de qualquer atributo que pareça uma chave ou um token, são ocultados na página antes que o markup saia dela”; “Lotes maiores chegam agrupados conforme a parte da página em que cada comentário está, assim, cerca de vinte comentários se transformam em poucos blocos de trabalho, em vez de uma tarefa para cada um”; “como os grupos são subárvores separadas do DOM, geralmente alteram arquivos diferentes, o que torna seguro repassá-los a workers paralelos”. Commits dentro dessa janela:10f2a20966“feat(desktop): adiciona o modo de comentários ao navegador do aplicativo”;e4bda3ff77“feat(desktop): comentários do navegador incluem o seletor, o markup e os estilos do elemento”; controles de sessão8cb2bcc8c1“expõe controles estruturados de sessão” +bfddf556bf“hidrata controles estruturados de sessão” +dffd8d62c2“adiciona controles de automação de sessão”;6b1e12c7f4“arraste para criar sessões a partir de New session, grupos de projeto + controles e profile”;9186e3ebc5“visualização de importação de sessão para transcrições de agentes de programação externos”;a1c25d393a“catálogo integrado de skills opcionais em Capabilities → Skills, com instalação em um clique”; locale russoa922dad9d8“feat(desktop): adiciona o locale russo (ru)” +269e5bde33(registrarunos testes/documentos de locale;apps/desktop/src/i18n/ru.tsé novo nessa janela, enquantolocales/do CLI continua com 17 catálogos).display.resume_last_session:hermes_cli/config_defaults.py:777, padrãoTrue, comentário literal “O Desktop reabre o último chat/página na inicialização a frio (também em Settings → Appearance).” Consentimento para profile real:apps/desktop/src/app/chat/right-rail/real-profile-consent-dialog.tsx(“Prompt de consentimento exibido na primeira abertura para navegação com profile real”, mostrado quando um painel Browser é aberto enquantobrowser.use_real_profileestá desativado; aceitar grava a mesma chave de configuração usada pelo controle de Capabilities, “Not now” silencia o prompt durante a execução do aplicativo e “Don’t show again” mantém essa preferência entre inicializações). ↩↩ -
Notas da versão Hermes Agent v0.21.2, “A versão de correção do state.db”, tag
v2026.9.11, data de lançamento informada como 11 de setembro, publicada em 2026-09-11T19:20Z. Contextualização literal: “a v0.21.0 trouxe uma grande reformulação do gerenciamento de conexões do armazenamento de sessões e, em algumas instalações, deixou ostate.dbfrágil: segundos processos de gravação cancelavam os locks uns dos outros, bancos de dados íntegros eram identificados como corrompidos e uma única linha inválida fazia osessions listfalhar.” Estatísticas medidas no commit04dd80a977: “947 commits sem merge”, “1.869 arquivos alterados”, “312 PRs mesclados”, “140 colaboradores” (verificação no clone local:git rev-list --count --no-merges v2026.9.7..v2026.9.11= 959 — o número no corpo corresponde a um snapshot anterior ao lançamento, seguindo o mesmo padrão da v0.21.1). Título literal da campanha: “campanha de confiabilidade do state.db (seis PRs, 44 issues encerradas)” (PRs #108076, #108082, #108130, #108086, #108074, #108067); orientação literal de atualização: “executehermes doctorprimeiro; agora ele identifica corretamente danos estruturais e de índice e indicahermes sessions recover --inspect-only(vinculado ao profile) quando uma reconstrução não é suficiente.” Verificação do código-fonte na tag: estado das salas hospedadas removido do armazenamento raiz emgateway/hosted_rooms.py:398-426—default_db_pathdireciona gateways de profile para “oshared-state.dbcompartilhado da RAIZ, em vez dostate.dbmestre”, e sua docstring aponta o vetor recorrente de corrupção por múltiplos processos de gravação observado em uma frota de 6 gateways (03/09/2026) como o motivo pelo qual gateways de profile jamais devem abrir o armazenamento mestre de sessões para gravação. Parser dehermes sessions recoveremhermes_cli/subcommands/sessions.py:185-196, com o texto de ajuda literal de--inspect-only: “Apenas relata a legibilidade da tabela canônica; não cria um banco de dados de saída”; o subcomando é anterior a essa janela (já estava presente emhermes_cli/main.pynav2026.8.31), mas ainda não havia sido documentado neste guia. Cofre de credenciais: docstring deagent/vault_backends/__init__.py(“Backends de login para o cofre de credenciais do navegador”; identificadores são separados por namespace de backend para que as ferramentas do navegador façam o roteamento sem alterações de schema; gerenciadores externos permanecem bloqueados até serem desbloqueados em cada sessão; a senha mestra “nunca é um argumento de ferramenta, nunca é argv e nunca é persistida”),agent/vault_backends/base.py(umLoginBackend“lista metadados de login (nunca segredos) e resolve UMA senha no momento do preenchimento”) eagent/vault_store.py:74-105(chaves de autenticação apenas como seeds em base32 ou URIsotpauth://totp, HOTP baseado em contador rejeitado e códigos gerados portotp_now); os backendslocal.py,onepassword.py,bitwarden.pyeagent/secret_sources/{onepassword,bitwarden,command}.pyestão todos presentes na tag. Subparsers do catálogo de plugins emhermes_cli/subcommands/plugins.py: texto de ajuda deinstall“Instala um plugin do catálogo selecionado, de uma URL Git ou de owner/repo”,search“Pesquisa no catálogo selecionado de plugins do Hermes”,browse“Lista todas as entradas do catálogo selecionado de plugins”,pack“Conjuntos declarativos e compartilháveis de plugins (hermes-pack.yaml)”, cominstall/export/show. Onboarding de convidados emapps/desktop/electron/guest-onboarding-flag.test.ts: título literal do teste ‘guestOnboardingEnabled: exatamente “1” no ambiente ou –guest-onboarding em argv ativa o plano gratuito’; a suíte confirma que'true','0'e um valor vazio ficam todos desativados e quedesktopBackendSpawnEnv“registra a decisão de inicialização por último e nunca permite o vazamento de um valor herdado”. Grupo de issues de reforço para múltiplos profiles #107609-#107630, conforme listado na versão. Verificação da sessão atual em 15 de setembro de 2026. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas da versão Hermes Agent v0.21.3, tag
v2026.9.14, data de lançamento informada como 14 de setembro, publicada em 2026-09-14T16:04Z. Objetivo literal: a tag “existe para que as correções de login no gateway remoto abaixo cheguem aos agentes na nuvem, que são atualizados automaticamente para a tag de versão mais recente.” Estatísticas medidas no commit9b419a2d3c: “1.036 commits sem merge”, “2.642 arquivos alterados”, “338 PRs mesclados” (verificação no clone local:git rev-list --count --no-merges v2026.9.11..v2026.9.14= 1.037, novamente por causa do commit de lançamento). Os 2 itens documentados foram verificados no clone local e aparecem apenas nesta janela: commit5dea46d13d“fix(dashboard-auth): uma única atualização single-flight para o bloqueio por cookie e a rota nativa, fora do event loop” (#110061, corrige #55712; em conjunto com hermes-portal#1209 do Portal, um horizonte móvel de 30 dias de inatividade com uma tolerância de 5 minutos para o token rotacionado) e commit939a2f64b4“fix: processos de longa duração deixam de criar identificadores duplicados de gravação no state.db” (#110934, corrige #100896 e #103339). Adiamento literal: “As notas completas e selecionadas desta janela serão publicadas com a v0.22.0, que documentará tudo a partir da v0.21.0” e “Nada nesta janela será ignorado”; a lista da versão deixada propositalmente sem documentação inclui solicitações JSON-RPC do servidor para o cliente, além de um registro de contratos de comunicação Pydantic, seleção do nível de esforço de raciocínio em todos os seletores de modelo, PKCE de OAuth do OpenRouter, decodificação de HEIF/HEIC/AVIF, reformulação do modelo par Honcho, adições ao catálogo FAL (Wan 3.0, Kling 3.0 / Kling Image v3, MiniMax H3 Max Turbo, Gemini Omni Flash 1.1, Meta Muse), tabelas coladas no Slack e o API das Agent Sessions, correções de isolamento de profiles multiplexados e de atividade do gateway, além da recusa do WAL do state.db em sistemas de arquivos entre VMs — tudo reservado para a análise da v0.22.0, conforme a própria contextualização da versão. Verificação da sessão atual em 15 de setembro de 2026. ↩↩↩ -
Notas de lançamento do Hermes Agent v0.21.4, tag
v2026.9.21, data de lançamento declarada de 21 de setembro, publicada em 2026-09-21T18:10:55Z. Objetivo, na íntegra: “Lançamento de correção. Este tag reúne os cerca de 1.800 PRs incorporados desde a v0.21.3 em uma versão estável com tag para consumidores downstream (imagens Docker, Hermes Cloud, implantações hospedadas). As notas completas e selecionadas deste período foram adiadas para a v0.22.0.” Estatísticas medidas no commit4b8a8134009a: “5.071 commits sem merge” em “5.169 arquivos alterados” (+312.961 / -62.855), “1.812 PRs incorporados” e “2.116 issues fechadas” — as verificações em clone local reproduzem exatamente os cinco números (git rev-list --count --no-merges v2026.9.14..4b8a8134= 5.071;git diff --shortstat= 5.169 arquivos, +312.961 / -62.855; o commit do tagd337b736aa“chore(release): v0.21.4 (v2026.9.21)” é filho de4b8a8134, resultando em 5.072 commits sem merge e 5.173 no total com merges, e o API de comparação do GitHub parav2026.9.14...v2026.9.21informatotal_commits: 5173, ahead_by: 5173, behind_by: 0). Classificação dos períodos (verificada novamente para a versão 1.21 do guia, em 23 de setembro): por commits sem merge entre cada par de tagsv2026.*adjacentes,v2026.8.31..v2026.9.7(5.140 incluindo seu commit de lançamento) lidera, ev2026.9.14..v2026.9.21(5.072) está em segundo lugar, à frente dev2026.7.20..v2026.7.30(2.790); pelos PRs incorporados declarados nos lançamentos, 1.812 é o maior número entre todas as notas consolidadas de um único período (v0.21.1: “632 PRs incorporados”; v0.19.1: “cerca de 1.000+ PRs”; os “cerca de 2.475” da v0.21.0 abrangem os seis tags v0.20.x desde a v0.20.0, portanto não representam um único período entre tags). Adiamento, na íntegra: “As notas de lançamento completas e selecionadas deste período serão publicadas com a v0.22.0, que documentará tudo a partir da v0.21.0” e “Nada deste período foi omitido.” A lista de itens intencionalmente não documentados menciona o bloqueio singleton do gateway + registro de rendezvous, com o Desktop se conectando ao backend do host em execução; a operação de conectores controlada pelo backend, com seu cartão de configuração para Desktop/TUI/CLI;--format stream-json;skills.auto_load; o seletor de fonte do chat/UI do Desktop + atualizações do engine local com um clique + desinstalação pelo hub de Plugins; o comportamentodeclinepara DMs não autorizadas;mcp.discovery_concurrency; os limites after/before desession_search+ nova tentativa de recuperação com OR mais flexível;hermes sessions set-journal-mode; LTX 2.5 e Kling O3 nos catálogos de vídeo; páginas do site do catálogo para cada plugin/autor, com READMEs fixados por commit e ordenação por adição/atualização; “uma dúzia de novos plugins da comunidade no catálogo (tailscale, ssh, shodan, terminal, rss, resetwatch, done-bell, kiwi, cognee, Octen)” (forma abreviada usada no lançamento; as entradas do catálogo nesse tag sãohermes-tailscale,hermes-ssh,shodan,hermes-terminal,hermes-rss,hermes-resetwatch,done-bell,kiwi,cognee,web-octen); e “uma grande série de correções de isolamento de profile/multiplex, cron, kanban, Desktop e state.db”. Para atualizar:hermes update(instalações via git) ou o comando de instalação em uma linha; “Docker / Hermes Cloud: as imagens são criadas a partir deste tag (nousresearch/hermes-agent:v2026.9.21)”. Verificação da sessão atual em 22 de setembro de 2026. ↩↩↩↩↩↩ -
Itens divulgados na v0.21.4 verificados no código-fonte na tag
v2026.9.21(guia v1.20, 22 de setembro de 2026; acréscimos às regras do operador no guia v1.21, 23 de setembro). Singleton do host: docstring degateway/host_rendezvous.py– “Ponto de encontro singleton em todo o host: um lock + um registro por ROLE para cada usuário do sistema operacional”; “exatamente UMhermes servee UMhermes gateway runpor host, cada um multiplexando todos os profiles”; um lock de host via flock/msvcrt, “mantido durante toda a vida útil do processo vencedor”, mais um registro de ponto de encontro para que uma segunda invocação possa “comprovar que se trata do mesmo processo ativo e ANEXAR-SE, em vez de vincular uma segunda porta”; “A obsolescência é comprovada, nunca presumida” por meio de(pid, createTime)(“um cliente que está se anexando jamais deve acessar a porta de um PID reutilizado”); raiz dos locks em$HERMES_GATEWAY_LOCK_DIRou, caso contrário,$XDG_STATE_HOME/hermes/gateway-locks, com escopo limitado ao usuário do sistema operacional (gateway/status.py:308-324: umXDG_STATE_HOMErelativo é ignorado e o fallback é~/.local/state). Fluxo do operador:_host_attach_or_noneemgateway/run.py:5466-5499exibe a mensagem de anexação e encerra com código 0 em caso deATTACH, recusa em caso deREFUSE, envia--replacepara “o processo do HOST, independentemente de qual diretório pessoal o iniciou” em caso deREPLACE_HOSTe pula a pergunta com--force(“a saída de emergência do operador quando o proprietário está travado ou fornecendo informações falsas”);_claim_host_gateway_role(gateway/run.py:5331-5346) faz o perdedor da disputa pelo lock encerrar comEX_TEMPFAIL(75), pois “Todos os supervisores que geramos repetem a tentativa após o código 75 e, na nova tentativa, o registro do proprietário já existe”. Cinco resultados emgateway/host_attach.py:ATTACH,RESCAN->ATTACH(rescan-profilespelo socket de controle),REPLACE_HOST,REFUSE(“Nunca inicie silenciosamente uma segunda instância”),START(gateways independentes por profile coexistem “até que essa migração seja forçada (#109417)”). Parte do Desktop:apps/desktop/electron/host-backend-attach.ts(“Anexa-se ao backend Hermes em execução no host (somente multiplexação, parte do Desktop)”; a sequência de E/S lê o registro de inicialização da raiz da máquina, valida um candidato por “prontidão HTTP -> token da sessão atendida -> autenticação WebSocket” e mantém “uma trava no nível do host para que dois aplicativos iniciados ao mesmo tempo produzam um único backend, não dois”;HOST_SPAWN_GATE_STALE_MS = 60_000). Operação do conector: texto literal detools/connectors/operation.py:1: “Uma operação de conexão controlada pelo backend para cada chamada demanage_connections. Dados puros, sem E/S.”;OPERATION_DEADLINE_SECONDS = 300.0com o comentário “Não é uma chave de configuração: permitir que o usuário ajustasse a espera, ainda que com limites, era uma armadilha (a PR1 chegou a incluir isso, mas não foi incorporada)”; a ferramenta registrada comomanage_connections(tools/connectors/tool.py:16,48,113);required_envpor destino “({name, prompt, required}); o card exibe um campo para cada entrada e retém sua ação até que todas as entradas obrigatórias contenham texto”; o card das três interfaces mencionado emtests/hermes_cli/test_mcp_catalog_env_boundary.py:330(“O backend do card do conector (card de configuração do Desktop/TUI/CLI) faz a mesma separação exclusiva de segredos”). stream-json:hermes_cli/_parser.py:247-249no parser do chat –--formatcom as opçõestext/stream-json, padrãotext, texto de ajuda literal: “‘stream-json’ emite eventos JSON delimitados por novas linhas (JSONL), implica –quiet e não pode ser combinado com –tui”; docstring do módulohermes_cli/stream_json.py: “um objeto JSON por linha do stdout …system/init-> deltas detext/tool_use/tool_result-> um enveloperesultfinal (código de saída, texto final, estatísticas de tokens). Os diagnósticos e osession_idpermanecem no stderr”,_TOOL_OUTPUT_CAP = 5000, saída 2 nas combinações proibidas,stream_json_requestedemhermes_cli/stream_json.py:23aceitaqueryouquery_fileantes de encerrar com código 2 (o ponto de entrada do Fire emcli.py:1703-1705verifica a consulta já resolvida);--query-file PATHemhermes_cli/_parser.py:218-222, em um grupo mutuamente exclusivo com-q(texto de ajuda literal: “Lê a única consulta de um arquivo em vez da linha de comando (‘-’ lê stdin). Seguro para qualquer texto: nada é interpretado pelo shell”), lido por_read_query_file(hermes_cli/main.py:1735-1762), presente desde a tagv2026.8.19; testes de contrato emtests/hermes_cli/test_stream_json.py(incluindo “nunca deve chegar ao stdout no modo stream-json”). skills.auto_load:hermes_cli/config_defaults.py:1435, padrão[], comentário literal: “Nomes de skills fixados como totalmente carregados em toda nova sessão (CLI, TUI, gateway, cron, API). Resolvidos uma vez quando o prompt do agente é criado pela primeira vez; nomes ausentes/desabilitados geram um aviso e são ignorados; HERMES_IGNORE_RULES suprime a lista, como ocorre com os demais contextos injetados automaticamente.” decline:gateway/config.py:137-139– comentário literal: “‘pair’ envia um código de pareamento por DM, ‘ignore’ descarta silenciosamente, ‘decline’ envia uma única recusa educada e depois permanece em silêncio para esse remetente durante gateway.pairing.DECLINE_DEDUPE_SECONDS (#88028)”,UNAUTHORIZED_DM_BEHAVIORS = {"pair", "ignore", "decline"}, campo com padrão"pair"(:626),unauthorized_dm_decline_messagevazio ->DEFAULT_UNAUTHORIZED_DM_DECLINE_MESSAGE(a resposta citada na seção sobre pareamento);DECLINE_DEDUPE_SECONDS = 24 * 3600e registros de data e hora de recusa que consideram aliases emgateway/pairing.py:37,565-576; resolução por plataforma e padrão do Email emget_unauthorized_dm_behavior(gateway/config.py:803-809, “Como o Email tem formato de caixa de entrada, seu padrão é"ignore", a menos que o própriounauthorized_dm_behaviorhabilite outro comportamento (um padrão global não faz isso)”). A própria chave, compair/ignoree a regra do Email, é anterior a esse período (presente emv2026.9.14,gateway/config.py:564,736-742; introduzida pela #1919 em março de 2026); apenasdeclineé novo. Padrão efetivo:_get_unauthorized_dm_behavioremgateway/authz_mixin.py:699-740, com a ordem descrita em sua docstring: “configuração explícita por plataforma; Email -> “ignore”; configuração global explícita diferente do padrão; dm_policy do adaptador (pairing -> “pair”, allowlist/disabled -> “ignore”); qualquer allowlist configurada -> “ignore” …; caso contrário, “pair”” (#9337), sendo que a configuração global só é consultada quando!= "pair". Estrutura de YAML: as chaves por plataforma emplatforms.<name>são promovidas paraPlatformConfig.extra(gateway/config.py:456-460, #10206), a chave no nível superior ougateway.unauthorized_dm_behavioraninhada é conectada porgateway/config_loader.py:39-46,102, ehermes gateway setupgravaplatforms.<name>.unauthorized_dm_behaviorpor meio dewrite_platform_config_field(hermes_cli/config.py:2061-2069;hermes_cli/gateway_setup_wizard.py:182-184,219-249, opção “Recusar educadamente remetentes desconhecidos (mensagem única, seguida de silêncio)”). A mensagem de recusa é somente global (gateway/run_inbound.py:139). discovery_concurrency: padrão 4 emhermes_cli/config_defaults.py:526;tools/mcp_tool_discovery.py:27-40(“mcp.discovery_concurrencysubstitui esse valor, 0 = ilimitado (#117373)”; um valor não inteiro ou negativo registra “não é um inteiro não negativo; usando %d” e aplica o padrão); semântica de limite, não de bloqueio, fixada portests/tools/test_mcp_tool.py:2813(“limita conexões simultâneas (ainda concorrentes, todos os servidores” se conectam). Limites e nova tentativa de session_search:tools/session_search_tool.py:578,621-635,708-725–afteré o “Limite inferior inclusivo para a hora de início da sessão. Data/data e hora ISO (por exemplo, 2026-06-01) ou duração relativa (7d, 24h, 2w = nos últimos N)”,beforeé o “Limite superior exclusivo para a hora de início da sessão. Data/data e hora ISO (um valor contendo somente a data representa a meia-noite UTC daquele dia) ou duração relativa (7d = há mais de uma semana)”, ambos são “Apenas parte da estrutura de descoberta”, com “a ordenação é um viés de classificação, não um limite”, e os novos parâmetros foram “acrescentados apósdetail” para preservar a estabilidade do schema; nova tentativa com OR flexibilizado emhermes_state_search.py:1151-1163, comentário literal: “o AND implícito entre os termos faz uma consulta parafraseada com várias palavras não encontrar uma frase armazenada quando falta até mesmo UMA palavra … Depois que a consulta exata e todos os fallbacks de substring não retornarem resultados, repita a busca no índice unicode61 fazendo a correspondência de QUALQUER termo. … Só é acionada quando não há resultados, portanto as correspondências preservam a semântica de correspondência exata; consultas com OR/NOT explícito, um único termo ou encaminhadas para CJK não são alteradas”; suíte dedicadatests/hermes_state/test_search_or_relaxed_fallback.py. set-journal-mode: parser emhermes_cli/subcommands/sessions.py:177, texto de ajuda literal: “Converte state.db offline entre journal_mode=WAL e DELETE (com todos os processos que o utilizam interrompidos)”; docstring dehermes_cli/sessions_cmd_journal_mode.py– o caminho de autoatendimento offline para #100896 (antes dele, “a única saída de emergência era executar manualmente o comando não documentadoPRAGMA journal_mode=DELETE”), “recusa enquanto QUALQUER processo externo mantiver o arquivo ou um arquivo auxiliar aberto (foreign_state_db_holders), altera o modo sem esperar que os processos liberem o arquivo (_set_journal_mode_no_wait) e depois verifica os bytes 18/19 do cabeçalho que o SQLite grava para o modo”; dispatch marcado como “offline: não deve abrir o armazenamento que está convertendo” (hermes_cli/sessions_cmd.py:982);hermes doctorrecomenda seu uso com--dbpara armazenamentos fora do padrão (hermes_cli/doctor_platform.py:148,163). Descrição literal do parser: “Execute isto com o gateway, o dashboard e todos os CLI interrompidos: o comando recusa enquanto qualquer processo mantiver o arquivo aberto, altera o modo e verifica o cabeçalho do arquivo”; texto de ajuda de--force: “Somente Windows: prossegue sem verificar os processos que mantêm o arquivo aberto (essa verificação não existe nessa plataforma), depois que você mesmo interromper todos os processos do Hermes” (hermes_cli/subcommands/sessions.py:176-189), aplicado em_refusal(sessions_cmd_journal_mode.py:40-44: “não é possível comprovar que o banco de dados está inativo no Windows – não há verificação dos processos que mantêm o arquivo aberto”). Atualizações do Desktop: campo de fonte emapps/desktop/src/app/settings/chat-font-setting.tsx(CONFIG_PATH = 'desktop.font_family', salvamento automático em 550 ms) comthemes/chat-font.ts(sugestões: OpenDyslexic, Atkinson Hyperlegible, Lexend, Inter, IBM Plex Sans, Source Sans 3, Noto Sans, Segoe UI e SF Pro Text; vazio significa usar a fonte do tema), aplicado porthemes/context.tsx:279, que substitui o token de tema--dt-font-sans; atualizações do mecanismo emapps/desktop/src/app/settings/local-models-settings.tsx+ teste (um botão “Atualizar mecanismo” quando o runtime local gerenciado informaupdate_available, acionandoinstallLocalRuntimecomo um jobruntime-installque relata o progresso; o teste “mantém uma atualização explícita com falha visível, oferecendo uma nova tentativa direta e sem modelos preparados”); desinstalação pelo hub de Plugins emapps/desktop/src/app/capabilities/plugins/plugins-tab.tsx+ teste (“só desinstala por meio de plugins.manage remove depois que a caixa de diálogo de confirmação é aceita”; plugins independentes do Desktop por meio deuninstallDiskPluginno carregador do Electron). Catálogos de vídeo:plugins/video_gen/fal/__init__.py:43-44,99-101–ltx-2.5(“LTX 2.5”, “Modelo open source de áudio e vídeo da Lightricks. Áudio nativo, até 20s/4K (i2v), predefinições de movimento de câmera.”, faixa econômica,lightricks/ltx-2.5/text-to-video/faste/image-to-video/fast, proporções 16:9/9:16, durações inteiras;:128“fal rejeita LTX 2.5 acima de 10s em 1440p/2160p”) ekling-o3(“Kling O3 (Standard)”, “Tecnologia de ponta da Kuaishou. Narrativa nativa em várias tomadas, áudio opcional, 3-15s.”, faixa premium, duração em string de 3 a 15, i2v deriva a proporção da imagem,generate_audioé um controle real); testes de payload emtests/plugins/video_gen/test_fal_plugin.py:641,681; linha no catálogo emwebsite/docs/reference/toolsets-reference.md:72. Expansão do catálogo:plugin-catalog/emv2026.9.14= 9 entradas +removed.yaml; emv2026.9.21= 228 entradas +removed.yaml; estrutura das entradas conformeplugin-catalog/hermes-tailscale.yaml(nome, repo,shade 40 caracteres hexadecimais, descrição, mantenedor,tier: community, categoria, docs_url, recursos); modelo de admissão e publicação emhermes_cli/plugin_catalog.py:4-10,33(“fixado em um SHA de commit exato com 40 caracteres. A presença no diretório É” a admissão;website/scripts/extract-plugins.pypublica/docs/api/plugin-catalog.json;LIVE_CATALOG_URLé buscada e armazenada em cache em~/.hermes/cache/plugin-catalog.json); páginas do site emwebsite/plugins/plugin-catalog-pages/index.js(“/docs/plugins/, uma página por entrada”, “/docs/plugins/by/, uma página por mantenedor”, “uma PR incorporada ao catálogo é a única maneira de uma página aparecer, mudar ou desaparecer”, e o site “se degrada, mas nunca falha”) ereadme.js(o README de cada entrada é renderizado “a partir do commit FIXADO” por meio de uma URL raw no sha, “nunca da ponta de uma branch”, portanto a página exibe exatamente o README que o revisor do catálogo leu; renderização no momento do build com allowlist, que remove HTML brutos, limite de 512 KB, hosts limitados a raw.githubusercontent.com e gitlab.com; desative comreadme: false); slugs de autores e registros de data de adição/atualização baseados na data do committer emwebsite/scripts/extract-plugins.py:80,142; todos os dez plugins da comunidade mencionados na versão estão presentes como entradas na tag, com os slugs listados em 50. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.21.5, tag
v2026.9.24, data de lançamento informada: 24 de setembro, publicado em 2026-09-24T10:09:38Z. Objetivo, literalmente: “Lançamento de correção. Este tag reúne os cerca de 460 PRs mesclados desde a v0.21.4 em uma versão estável com tag para consumidores downstream (imagens Docker, Hermes Cloud e implantações hospedadas). As notas completas e selecionadas deste período foram adiadas para a v0.22.0.” Estatísticas medidas no commit do tagf97608f178(“chore: release v0.21.5 (2026.9.24)”): “1.610 commits sem merge” em “4.828 arquivos alterados” (+164.132 / -149.440), “460 PRs mesclados” e “475 issues fechadas”. As verificações em um clone local reproduzem exatamente os números de commits e do diff (git rev-list --count --no-merges v2026.9.21..v2026.9.24= 1.610; 1.638 incluindo merges;git diff --shortstat= 4.828 arquivos, +164.132 / -149.440); as contagens de PRs e issues não foram verificadas de forma independente. A lista deliberadamente não documentada no corpo menciona GPT-6 “Sol/Terra/Luna” e Claude Opus 5.5 nos catálogos da Nous e do OpenRouter, operações de parar/iniciar/reiniciar por profile comgateway.standalonee uma onda de SDK de plugins para Desktop; ela não menciona Hindsight. Caminho de atualização, literalmente: “hermes update(instalações via git) ou execute novamente a linha única do instalador” e “as imagens são geradas a partir deste tag (nousresearch/hermes-agent:v2026.9.24)”. ↩↩↩ -
Itens da v0.21.5 verificados no código-fonte no tag
v2026.9.24(guia v1.22, 24 de setembro de 2026). Hindsight: o commit4cbf862abe“chore(memory): remove the bundled hindsight provider (moved to the plugin catalog)” (22 de setembro) é um ancestral do tag; no tag,plugins/memory/contém sete pastas de providers (byterover,holographic,honcho,mem0,openviking,retaindb,supermemory), em comparação com oito nav2026.9.21; o commit73c598e319“build: drop the hermes-agent[hindsight] extra” removeu esse extra depyproject.toml.plugin-catalog/hindsight.yaml:repo: https://github.com/vectorize-io/hindsight,maintainer: vectorize-io,tier: community,requires_hermes: ">=0.21.4". Migração: a docstring dehermes_cli/memory_provider_migration.py(linhas 1–14) menciona dois hooks, “hermes update” e “inicialização do agente”; a linha 75 exibe “O provider de memória ‘{name}’ foi removido do núcleo — seu plugin foi instalado a partir do catálogo”;recover_at_startup()(linha 110) “respeitasecurity.allow_lazy_installs”; ele é chamado emhermes_cli/update_cmd_deps.py:535-536eagent/agent_init.py:1315-1316. Efeitos no disco e comandos de verificação:memory-providers.md:482-490. Multiplex:hermes_cli/gateway_multiplex_mode.py, linha 10, “Umfalseexplícito foi DESCONTINUADO”, e linhas 43–44, “gateway.multiplex_profiles: false foi descontinuado e reescrito como true” (commitb936546561, 23 de setembro).gateway.standalone:hermes_cli/profiles.py:979-982, “O profile DEFAULT nunca é standalone — ele É o host — e emite um aviso uma vez por processo se a chave estiver definida nele” (commit0238c9d740). Estacionamento: commit4c342c05de“stop, start and restart one profile under the host multiplexer”;multi-profile-gateways.md:120-138, 233-244(“uma camada temporária de compatibilidade”; “gateway.standalonetem precedência”). Modelos:hermes_cli/models_catalog_static.py,OPENROUTER_MODELSnas linhas 32 e 36–37 (anthropic/claude-opus-5.5,openai/gpt-6-sol,-sol-pro,gpt-6-luna,-luna-pro); a listanousna linha 162 deriva dela. Nenhum ID de modelogpt-6-terraaparece nos catálogos de seleção do tag, portanto apenas Sol e Luna são listados aqui. Providers:CANONICAL_PROVIDERSna linha 314 é analisado como 39 entradas (contagem da AST, sem alterações);plugins/model-providers/contém 38 pastas tanto nav2026.9.21quanto nav2026.9.24, em comparação com 39 nav2026.9.14. O commit998f614c7f“feat(providers): remove the keyless opencode-free tier” (18 de setembro) excluiu o plugin; sua mensagem diz “O nível gratuito do OpenCode agora retorna HTTP 403 para tráfego anônimo fora do cliente OpenCode”.hermes_cli/auth.py:1255-1259mantém um erro paraopencode-free,freeeopencode_freeque direciona paraopencode-zeneopencode-go. Compatibilidade:COMPAT_MANIFEST.md,compat_manifest.jsonehermes_cli/plugin_compat.pyestão presentes no tag e namainemaa8a33d22d(24 de setembro).git diff v2026.9.21 v2026.9.24 -- hermes_cli/plugin_compat.pynão retorna alterações (COMPAT_REMOVAL_DATEna linha 32; a verificação “Apenas booleano literal” nas linhas 296–303). O par de manifests perdeu apenas as entradas excluídas deplugins.memory.hindsight(-7 / -12 linhas). ↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.21.6, tag
v0.21.6(o primeiro tag de lançamento que não segue o formatov2026.M.D), data de lançamento informada: 8 de outubro, publicado em 2026-10-08T11:51:57Z. Objetivo, literalmente: “Lançamento de correção. Este tag reúne os cerca de 2.100 PRs mesclados desde a v0.21.5 em uma versão estável com tag para Docker e Hermes Cloud. As notas completas e selecionadas deste período acompanham a v0.22.0.” Pipeline, literalmente: “Este é o primeiro lançamento produzido pelo novo pipeline de versões estáveis: uma referência de tentativa, uma imagem Docker testada e um tag de comprovante na publicação. Ele entrega o tag, esta versão do GitHub e a imagem Docker. Por enquanto, o aplicativo para Desktop, os pacotes do Termux e a Microsoft Store permanecem na versão atual e serão atualizados no próximo lançamento agrupado.” Estatísticas “Medidas no commit818c13be”: “8.867 commits sem merge” em “8.342 arquivos alterados” (+772.490 / -225.600), “2.106 PRs mesclados” e “3.027 issues fechadas”; a comparação do GitHubv2026.9.24...v0.21.6informa 9.180 commits incluindo merges (desta vez, os números do diff não foram reproduzidos localmente). A lista deliberadamente não documentada menciona, literalmente, “transcrição ao vivo enquanto você fala no CLI, TUI e Desktop (stt.streaming)”, “interações por voz falada encaminhadas para um modelo próprio (auxiliary.voice_chat), com o raciocínio desativado por padrão”, “plugins de terceiros executados em um host de plugins por profile (plugins.isolation: host)”, “umhermes statusque prioriza o resumo (--short,--full)”, “pacotes de idiomas conectáveis e em camadas no núcleo, Desktop e TUI”, “modelos locais emhermes model, além de llama.cpp CUDA no Linux x64 e arm64”, “flags de aprovação para uploads de credenciais e Unicode invisível em comandos do terminal”, “uma configuração do Discord que verifica o token do bot e exibe o link de convite”, “uma definição unificada de fluxo de trabalho Kanban”, “activate.fish”, “GPT-6.1 Sol e Claude Sonnet 5.5 / Haiku 5.5 nos catálogos” e os itens de Desktop citados na seção Novidades. Trechos literais das seções de segurança: “Agradecemos à Tenable Research por relatar os quatro problemas (TRA-725, TRA-726, TRA-727, TRA-728)”; “Chamadas automáticas do git (snapshot do workspace da sessão, worktrees de subagentes, kanban, limpeza de worktrees,hermes -w) podiam executar programas de filtroclean/smudge/processdefinidos pela própria configuração de um repositório não confiável, antes do primeiro prompt (#130661)”; “Um nome de exibição entre aspas no cabeçalhoFrom… poderia fazer com que a mensagem de um invasor passasse pela lista de permissões de e-mail como se fosse de um remetente autorizado (#125212)”. Caminho de atualização, literalmente: “Docker / Hermes Cloud:nousresearch/hermes-agent:stable(ou:latest). CLI (instalações via git):hermes updateou execute novamente a linha única do instalador.” ↩↩↩↩↩↩ -
Itens da v0.21.6 verificados no código-fonte na tag
v0.21.6(commit818c13be; guia v1.24, 11 de outubro de 2026). STT:hermes_cli/config_defaults.pydefine inicialmentestt.streaming: False(“texto parcial em tempo real durante a fala (openai/xai/elevenlabs); falha = caminho do arquivo”) estreaming_model: "gpt-live-transcribe"(“o único modelo com deltas no meio da fala”). Rota de voz:auxiliary.voice_chatusa por padrão um slot de 120 segundos com"reasoning_effort": "none"; a docstring deagent/voice_turn_route.pydiz: “Um turno de voz (entrada de voz do CLI, uma conversa de voz no Desktop/TUI, uma mensagem de voz em uma plataforma de mensagens) pode ser executado em um modelo mais rápido do que o modelo principal da sessão… Um turno cuja solicitação não caberia no limite de compactação do modelo de voz no início do turno é executado no modelo principal”. Isolamento:hermes_cli/plugin_isolation.py(“in_process(padrão) importa todos os plugins para o processo do Hermes…hostmantém o código de plugins de terceiros FORA dele: plugins gerais são carregados em um processo de host de plugins por profile… e se comunicam com o Hermes somente por meio dectx… Plugins incluídos são distribuídos com o Hermes e permanecem no processo”);config_defaults.pydefine inicialmenteplugins.isolation: "in_process". Memória:plugins/memory/contémbyterover,holographiceretaindb(sete diretórios nav2026.9.24);plugin-catalog/honcho.yaml(plastic-labs),mem0.yaml(mem0ai),openviking.yaml(volcengine) esupermemory.yaml(supermemoryai) são todostier: community;hermes_cli/memory_provider_migration.pydefine_LEFT_COREcom os oito nomes (“Provedores que eram incluídos no núcleo. O consentimento automático abrange somente estes”). Compatibilidade: a docstring dehermes_cli/plugin_compat.pydiz: “essa camada e o scanner que informava quais plugins ainda a utilizavam foram removidos”;compat_report()retorna{};allow_deprecated_importsnão aparece em nenhum lugar da árvore;COMPAT_MANIFEST.mdecompat_manifest.jsonnão existem. Status:hermes_cli/subcommands/status.pydefine--full/--all(“Mostrar todas as seções (chaves ocultadas) em vez do resumo de uma tela”) e--deep(“implica –full”), mas não--short. Idioma:hermes_cli/config_language.py(“O conjunto aceito éagent.i18n.supported_languages(): catálogos incluídos, o diretório de sobreposição do profile e todos os pacotes de idioma dos plugins carregados”);locales/contém 17 arquivos<lang>.yamle 16 arquivos<lang>.tui.yaml. Provedores:plugins/model-providers/contém 41 diretórios (38 nav2026.9.24; foram adicionadoslmstudio,solsticeetencent-tokenhub);CANONICAL_PROVIDERSemhermes_cli/models_catalog_static.pytem 39 linhas nas duas tags; sua listaOPENROUTER_MODELSadicionaanthropic/claude-sonnet-5.5,anthropic/claude-haiku-5.5,openai/gpt-6.1-soleopenai/gpt-6.1-sol-pro, nenhum deles presente nav2026.9.24. Aprovações: regras detools/approval_detection.py: “fazer upload de um arquivo secreto ou de credenciais via curl/wget (possível exfiltração)”, “enviar um arquivo de credenciais por pipe para um upload via curl/wget (possível exfiltração)” e “caractere de controle Unicode invisível ou bidirecional (possível ofuscação)”. Cron:cron/store_health.py(“Estado degradado de um armazenamento cron sem permissão de escrita (ENOSPC, EROFS, EACCES)… cada diretório de armazenamento recebe UM registro na memória…probe_storetambém é o quehermes cron statusehermes doctorusam”). Discord:plugins/platforms/discord/onboarding.py(invite_url(),INVITE_PERMISSION_BITS; “Message Content Intent desativada (caso contrário, o Discord recusa a conexão do bot)”). Filtros do Git:tools/subagent_worktree.py(“O checkout executa o filtro smudge com o nome do repositório; ignore o isolamento quando ele não puder ser neutralizado”) por meio dehermes_cli._subprocess_compat.noninteractive_repo_git_env, ehermes_cli/worktree_ops.py(“recusar quando eles não puderem ser neutralizados”). E-mail:plugins/platforms/email/adapter.py(“Usa parseaddr, não uma regex do primeiro <…> (GHSA-rxqh-5572-8m77); o desdobramento do RFC 5322 é feito primeiro”). Autenticação do dashboard:hermes_cli/dashboard_auth/request_utils.py(“Nunca analise aqui oX-Forwarded-Forfornecido pelo cliente”). Runtime local:hermes_cli/local_runtime/binaries.pymapeia"cuda"parallamacpp-cuda;hermes_cli/models_local.pyabrange Ollama, LM Studio e Ollama Cloud.activate.fishfica na raiz do repositório (“A versão para fish de ./activate”). A definição do fluxo de trabalho Kanban e os itens do Desktop não foram verificados no código-fonte. ↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.21.7, tag
v0.21.7, data de lançamento informada como 11 de outubro, publicada em 2026-10-12T05:53:41Z; o commit da tag é71d34bad“fix(release): a renderização da tabela de builds recebe suas credenciais do R2 e não pode bloquear o lançamento” (2026-10-12T03:17:10Z). Objetivo na íntegra: “Lançamento de correção. Esta tag reúne os cerca de 204 PRs incorporados desde a v0.21.6 em uma versão estável para o aplicativo desktop (macOS Apple silicon, Windows), a Microsoft Store e o MSIX, o instalador, Docker e o Hermes Cloud. As notas completas e selecionadas deste período acompanham a v0.22.0.” Estatísticas “Medidas no commit1fd18277”: “740 commits sem merge” em “4.156 arquivos alterados” (+86.775 / -26.980), “204 PRs incorporados” e “69 issues encerradas”; a comparação do GitHubv0.21.6...v0.21.7informa 777 commits com merges. Itens sobre instalação pelo código-fonte na íntegra: “Uma instalação pelo código-fonte do repositório oficial passa a usar a versãovX.Y.Zpublicada mais recente, em vez de cada commit damain. Uma instalação que já seja mais recente que a última versão permanece onde está e aguarda a próxima; nada é revertido. Para continuar acompanhando todos os commits:hermes update --set-channel main. Forks e mirrors continuam acompanhando amain. As instalações da loja, via MSIX e incluídas no desktop não mudaram.”; “Configurações ▸ Sobre ▸ Atualizações tem um seletor de Canal de atualização (Versões estáveis / Todos os commits) para instalações pelo código-fonte, e a caixa de diálogo de atualização agora mostra qual canal você está usando.”; “O pensamento assinado é reproduzido apóshermes chat --resumee no turno seguinte do gateway, e os modelos de raciocínio do Bedrock Converse não são mais rejeitados em sessões retomadas.”; “As instalações namainnão buscam mais um registro de lançamento ao qual firewalls regionais poderiam responder com 403. A verificação estável usa seu token do GitHub quando algum está definido (GITHUB_TOKENough auth login) e informa um limite de requisições do GitHub como tal.” A lista intencionalmente não documentada citactx.runAction,ctx.pet.say, “solicitações do Codex feitas pelo núcleo para que os plugins nunca armazenem o token”, “skills instaladas durante a sessão que chegam ao modelo sem reconstruir o prompt”, “Krea 2 Medium Turbo como canal de imagem padrão para novos assinantes pagos, com fallback para FAL quando o Krea gerenciado recusa uma solicitação”, atualizações mais rápidas do desktop, “instalações fixadas que fazem checkout somente da versão fixada”, “marcadores de compactação emitidos para o Relay” e os plugins memory-shield, command-ledger, Memoria, Model Router, wyoming-voice-bridge, codex-account-switch e redline. Caminho de atualização na íntegra: “Aplicativo desktop: atualiza-se sozinho. As instalações pela Microsoft Store são atualizadas pela Store. CLI:hermes updateou execute novamente o comando de uma linha do instalador. Docker / Hermes Cloud:nousresearch/hermes-agent:stable(ou:latest).” ↩↩↩↩ -
Itens da v0.21.7 verificados no código-fonte na tag
v0.21.7(commit71d34bad; guia v1.25, 13 de outubro de 2026). Canais:hermes_cli/subcommands/update.pydefine--set-channel CHANNEL(“Persiste o canal de atualização para ESTA instalação (registrado por instalação em config.yaml, em update.installs)… Checkouts do código-fonte oficial usam ‘stable’ por padrão (a versão vX.Y.Z publicada mais recente, no commit exato); ‘main’ acompanha a branch do código-fonte”),--channel CHANNEL(“Acompanha CHANNEL somente nesta execução… ‘stable’ e ‘canary’ selecionam versões publicadas; ‘main’, a ponta da branch. Apenas instalações pelo código-fonte”) e--install-id;hermes_cli/update_channel.py(“Um único config.yaml atende a várias instalações (host + gateway do docker + desktop montam por bind o mesmo~/.hermes), portanto, uma chaveupdate.channelglobal para o diretório home NÃO É SEGURA e não existe”; “Checkouts oficiais não configurados acompanhamstable; forks e mirrors permanecem emmain”;_tracks_official_origin: “Forks, mirrors e origens de caminhos locais não publicam versões oficiais”);hermes_cli/source_releases.py(“Resolve versões promovidas do código-fonte, sem jamais inferir a publicação por uma tag do Git”;_head_containing: “Um padrão não escolhido nunca deve retroceder um checkout com base em uma suposição; portanto, uma relação desconhecida (histórico shallow, GitHub inacessível) mantém HEAD”; um erro 403 de “WAFs regionais” “não pode interromper” a verificação; “Uma falha de transporte informa sua causa (um limite de requisições não significa ‘nenhuma versão’)”; “um token rejeitado aciona uma nova tentativa anônima”; a redação sobreGITHUB_TOKENegh auth loginpertence à versão). Desktop:apps/desktop/src/app/settings/update-channel-row.tsxeapps/desktop/src/i18n/en_update_channel.ts(título “Canal de atualização”; “Stable instala apenas versões publicadas. Every commit acompanha a branch main à medida que as alterações são incorporadas.”; opções “Versões stable” e “Todos os commits”). Raciocínio:agent/anthropic_thinking_policy.py(“Rotas cujos blocos de raciocínio carregam assinaturas verificadas pelo upstream: elas reproduzem blocos assinados”);agent/anthropic_thinking_replay.py(“Persistimos apenas as impressões digitais dos valores opacos rejeitados de assinatura/dados e, depois, filtramos esses blocos de cada cópia reconstruída da requisição. Isso é necessário para além da nova tentativa imediata, pois a seleção de contexto e a retomada do processo podem reconstruir posteriormente a partir do histórico canônico”);agent/bedrock_adapter.py(“Raciocínio doreasoning_detailspersistido… O Converse exige o raciocínio antes de toolUse”; “Reprodução do raciocínio por modelo no Converse”). Memória:plugins/memory/contémbyterovereretaindb(três diretórios nav0.21.6);plugin-catalog/holographic.yaml(repo: https://github.com/itpartypattaya/hermes-plugin-holographic,tier: community,requires_hermes: ">=0.21.5");_LEFT_COREemhermes_cli/memory_provider_migration.pyainda lista os oito nomes. Catálogo:plugin-catalog/contém 552 entradas de YAML (493 nav0.21.6, de acordo com o conteúdo de GitHub API). Sem alterações na tag: 41 diretórios de providers, 39 linhas estáticas, 17 catálogos de locale do core e 16 da TUI,hermes_cli/plugin_compat.pycomo um stub de 22 linhas,hermes statusapenas com--full/--alle--deep. Ações do desktop:apps/desktop/src/contrib/plugin.tsdocumentactx.runAction?.('view.showBrowser'); Relay:agent/relay_compaction.py(“Emite registroshermes.compactioncomo marcas do NeMo Relay na pilha de escopos da sessão proprietária”). Não foram localizados no código-fonte e foram obtidos nas notas da versão:ctx.pet.say, as requisições ao Codex feitas pelo core, skills no meio da sessão, Krea como padrão e FAL como fallback, o checkout da instalação fixada e as atualizações mais rápidas do desktop. ↩↩↩ -
Notas da versão v0.20.3 do Hermes Agent (tag
v2026.8.16.2, data de lançamento informada como 16 de agosto, publicada em 17 de agosto de 2026) e notas da versão v0.20.4 (tagv2026.8.18, 18 de agosto de 2026); ambas obtidas por meio de GitHub API em 20 de agosto de 2026 (prerelease: false). Texto literal da v0.20.3: “a migração do SDK para MCP 2.x e o suporte ao protocolo stateless de 2026-07-28, o plugin Bot Mode (hermes-bots) incluído com o protocolo central de colegas de equipe, o plugin do provider CommandCode, o reforço do isolamento da propriedade do runtime de Python em subprocessos (isolamento de PYTHONHOME/PYTHONPATH), os contratos de runtime do Cua Driver 0.20 para uso do computador.” Texto literal da v0.20.4: “o trabalho de superfícies de vidro/translucidez no desktop (vidro fosco, seletor de desfoque, pré-seleção no macOS), a barra lateral com abas SESSIONS|BOTS e a opção de ocultar/exibir cada bot, … a verificação consultiva de Tier 1 do NVIDIA SkillEvaluator nas instalações de skills (verificações de licença + segurança).” Ambas as versões: “As notas completas e selecionadas das versões deste período serão publicadas com a v0.21.0.” ↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas da versão v0.20.0 do Hermes Agent, “The Herald Release”, tag
v2026.8.3, 3 de agosto de 2026, com as tags de estabilização v2026.8.13 e v2026.8.16. Texto literal da versão: “Node 26 obrigatório em todos os instaladores/heal/upgrade”; “canais brew + wheel do pip/PyPI descontinuados (instalador shell / Docker / Nix são os canais compatíveis)”; “limite padrão de iterações 90 → 500”; “fonte claude-marketplace removida”. A versão mínima do Node foi confirmada de forma independente no código-fonte do instalador em scripts/install.sh —NODE_VERSION="26"e a verificação “Node.js $(node –version) é muito antigo (Hermes exige Node >=26)” —, que também documenta em seu comentário de cabeçalho o comando canônico de uma linhacurl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash. Observe o conflito: a página de instalação da documentação ainda informa Node v22 e está desatualizada em relação a ambos. Níveis de plataforma obtidos em suporte a plataformas; fontes de skills e taps padrão obtidos em skills; a contagem de 28 plataformas foi derivada pela enumeração da tabela comparativa em mensagens, que não publica um total oficial. Tudo foi obtido e verificado em 16 de agosto de 2026. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.19.0, “The Quicksilver Release”, tag
v2026.7.20, 20 de julho de 2026; versão mais recente em 21 de julho de 2026. Estatísticas desde a v0.18.0: cerca de 2.245 commits, aproximadamente 1.065 PRs mesclados, cerca de 3.300 issues encerradas e mais de 450 colaboradores da comunidade. Eixo de desempenho: redução de cerca de 80% no TTFT do primeiro turno, com o tempo entre envio a frio e despacho caindo de aproximadamente 4,3 s para 0,9 s em CLI/gateway/TUI/desktop/cron (PR nº 59332); raciocínio transmitido ao vivo por padrão, comdisplay.show_reasoningativado e renderização da resposta token por token (PR nº 59389); onda de desempenho no desktop com cerca de 20 PRs, incluindo markdown em streaming 14 vezes mais rápido; markdown incremental na TUI. Instalações via pip/Homebrew foram descontinuadas e agora exibem apenas o aviso “unsupported legacy”, com a remoção da publicação no PyPI/Homebrew planejada (PR nº 57225). Interface conectávelSecretSourcecom provedores Bitwarden e 1Password, referênciasop://, vários cofres, precedência determinística e procedência por variável (PR nº 59498). Aprovações inteligentes por padrão (revisor LLM independente para cada comando sinalizado), regras de bloqueio definidas pelo usuário que continuam válidas no modo YOLO e/deny <reason>(PRs nº 62661, nº 59164, nº 54518); escalonamento de aprovação pelopre_tool_callde plugins reintegrado (PR nº 60504). Cobrança no terminal com/subscription+/topup+ aba de cobrança no desktop (PR nº 51639). Arquivos de transcrição ao vivo de subagentes + delegação durável em segundo plano (PRs nº 67479, nº 63494); registro de obrigações de entrega nostate.db(PR nº 67181);max_async_childrendescontinuado em favor de limites unificados de concorrência da delegação (PR nº 56955). Roteamento do gateway baseado em profiles +GATEWAY_MULTIPLEX_PROFILES+ índice de roteamento movido parastate.db, comsessions.jsoncomo espelho legado opcional (PRs nº 64835, nº 65700, nº 60589, nº 59203). Provedores/modelos: suporte nativo ao Fireworks AI na posição nº 2 do seletor (PR nº 62593), DeepInfra, Upstage Solar, GPT-5.6 Sol/Terra/Luna + Pro de ponta a ponta (PR nº 61616), grok-4.5 em disponibilidade geral, kimi-k3 (kimi-k2.x descontinuado), Claude Sonnet 5 totalmente integrado,enabled: falsepor provedor +excluded_providers(PR nº 67971); níveismax/ultrade esforço de raciocínio, com substituições por modelo/slot de MoA e/reasoninglimitado à sessão (PRs nº 62650, nº 64458). CLI/MCP:hermes sessions exportpara Markdown/Quarto/HTML/somente prompt/rastreamento do HF com--redact(PR nº 60186),/model --once(PR nº 67113), invocações empilhadas de slash-skills (PR nº 57987),--safe-mode,hermes config get/unset(PR nº 65540),hermes serverealmente headless (PR nº 55923), nomenclatura MCPmcp__server__tool(PR nº 52750). O enquadramento de marketing do lançamento foi excluído; itens revertidos durante o período (firewall de saída iron-proxy, skill dynamic-workflow e provider-actions de memória) não foram deliberadamente registrados como entregues. Verificação na sessão atual em 21 de julho de 2026. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Tag de lançamento do Hermes Agent v0.18.1 e tag de lançamento da v0.18.2, 7–8 de julho de 2026. Pacotes cumulativos de correções de infraestrutura na linha v0.18; a correção relevante da v0.18.2 remove a fixação da versão do WhatsApp Baileys para usar a 7.0.0-rc13 e garantir builds Docker confiáveis. As duas janelas de correção foram incorporadas às notas de lançamento da v0.19.0 e estão totalmente documentadas nelas. ↩
-
Notas de lançamento do Hermes Agent v0.15.1 e notas de lançamento do Hermes Agent v0.15.2. A v0.15.1 (29 de maio de 2026, 01:12 UTC) é o hotfix Velocity lançado no mesmo dia: correção do loop de recarregamento com erro 401 no dashboard em modo loopback; Docker agora exige
HERMES_DASHBOARD_INSECURE=1explícito; comandos MCP sem caminho (npx,npm,node) são resolvidos em contêineres Docker; os indicadores de origem e a barra lateral de categorias da página Skills foram restaurados; workers do Kanban respondem ao SIGTERM; o catálogo do Skills.sh cresceu de 858 para 19.932 entradas por meio do sitemap. 28 commits, 21 PRs mesclados e 9 colaboradores. A v0.15.2 (29 de maio de 2026, 13:37 UTC) é um hotfix exclusivo de empacotamento que inclui manifestosplugin.yamlnas distribuições wheel e sdist para que instalações pelo PyPI funcionem sem carregamento externo do código-fonte. 4 colaboradores. ↩ -
Notas de lançamento do Hermes Agent v0.15.0 e a página de lançamentos do Hermes Agent. “The Velocity release”, tag
v2026.5.28. Estatísticas: 1.302 commits, 747 PRs mesclados e 321 colaboradores da comunidade. Refatora 76% dorun_agent.py(de 16.083 para 3.821 linhas distribuídas entre 14 módulos). Adiciona a plataforma Kanban multiagente (decomposição automática, topologia de swarm, substituições de modelo por tarefa, tarefas agendadas e gerenciamento de worktrees).session_searchfoi reformulado e ficou 4.500 vezes mais rápido, com a dependência LLM removida. Defesa contra promptware e injeções de prompt da classe Brainworm em três pontos críticos de segurança. A integração com o Bitwarden Secrets Manager substitui várias chaves API específicas de cada provedor por um único token de bootstrap. Pacotes de skills permitem carregar várias skills com um único comando de barra. Orquestrador de sessões na TUI para gerenciar várias sessões em uma única janela do terminal. Suporte ao Krea 2 (Medium/Large) e ao plugin FAL para geração de imagens. Uma rodada de integração com a xAI adiciona um plugin de pesquisa na web, OAuth upstream, detecção de modelos descontinuados e pausas naturais de TTS na saída de voz. Uma versão de correção mencionada no GitHub resolve o loop de recarregamento com erro 401 no dashboard, a exigência da variável de ambiente explícitaHERMES_DASHBOARD_INSECURE=1para o uso de--insecureno Docker, a resolução de comandos MCP sem caminho (npx,npm,node) no Docker, a renderização da página Skills, o tratamento de SIGTERM pelos workers do Kanban, o catálogo completo de Skills com 19.932 entradas por meio do sitemap e um pequeno lote de correções envolvendo entrega de.md, segurança das sondagens do gateway, ocultação de URLs da web, capacidade de visão dos workers do Kanban e padrões de observação retrospectiva. ↩↩↩↩ -
Notas de lançamento do Hermes Agent v0.11.0. 23 de abril de 2026. “The Interface release” — reescrita completa do CLI interativo em React/Ink, com um backend Python JSON-RPC (
tui_gateway); arquitetura de transporte conectável (agent/transports/); suporte nativo ao AWS Bedrock pela API Converse; cinco novos caminhos de inferência (NVIDIA NIM, Arcee AI, Step Plan, Google Gemini CLI OAuth, Vercel ai-gateway); GPT-5.5 via Codex OAuth; QQBot como a 17ª plataforma de mensagens, com configuração por leitura de código QR; superfície de plugins ampliada (comandos de barra, despacho de tools, bloqueio de execução e transformação de resultados);/steer <prompt>para orientar o agente durante a execução, injetando contexto após a próxima chamada de tool sem invalidar o cache de prompts; hooks de shell para eventos do ciclo de vida sem plugins Python; modo de entrega direta por webhook, que encaminha payloads diretamente para o chat de uma plataforma; delegação mais inteligente, com funções de orquestrador + profundidade configurável de spawn + coordenação de arquivos; sistema de plugins do dashboard, troca de tema em tempo real, i18n e responsividade para dispositivos móveis. Estatísticas desde a v0.9.0: 1.556 commits · 761 PRs mesclados · 1.314 arquivos alterados · 224.174 inserções · 29 colaboradores da comunidade. Veja também: tag de lançamento GitHub do Hermes Agent v0.11.0. ↩↩↩ -
Notas de lançamento do Hermes Agent v0.10.0. 16 de abril de 2026. “O lançamento do Tool Gateway.” Integração com o Nous Tool Gateway para assinantes pagos do Nous Portal — acesso gerenciado à pesquisa na web do Firecrawl, à geração de imagens do FAL / FLUX 2 Pro, ao TTS da OpenAI e à automação de navegador do Browser Use sem chaves API adicionais. Ativação individual por ferramenta por meio do novo campo de configuração
use_gateway. Durante a execução, o gateway tem prioridade sobre as chaves API diretas quando ambos estão configurados. Integração completa comhermes toolsehermes status. Substitui a variável de ambiente obsoletaHERMES_ENABLE_NOUS_MANAGED_TOOLS. Implementação de @jquesnelle (emozilla). O CLI do Hermes Agent continua sob a licença MIT e totalmente open source; o gateway é uma integração com o produto de assinatura existente do Portal, não um paywall para o CLI. Veja também: Nous Portal para consultar os preços das assinaturas e se cadastrar. ↩↩↩