Como rodar vários perfis do Hermes Agent em um só gateway na VPS e pausar um perfil sem derrubar os outros

Ilustração de um gateway central distribuindo conexões para vários perfis do Hermes Agent numa VPS
Resposta rápida

No modo multiplexado, o gateway do perfil default vira o único processo de entrada e encaminha cada mensagem ao perfil dono, com as credenciais e a config daquele perfil. Ele liga sozinho quando há dois ou mais perfis e nenhum bloqueio, ou na hora se você define gateway.multiplex_profiles true no perfil default. Para pausar um bot sem derrubar os outros, use hermes -p <nome> gateway stop, que estaciona o perfil, e depois start ou restart para trazer ele de volta

Fala aí, beleza? Se tu já tem um bot pessoal no Telegram e um agente de código como perfis separados do Hermes Agent, uma hora surge a dúvida: como deixar os dois online na mesma VPS sem virar uma bagunça de processos 😛

Este guia é só sobre a operação. A parte conceitual de perfis está no guia sobre o que é o Hermes Agent, e a instalação aparece no passo a passo para instalar o Hermes Agent no Windows

Os comandos daqui seguem a documentação oficial de multi-profile gateways, consultada em 28 de outubro de 2026

Um processo por perfil ou gateway multiplexado: qual a diferença

No modo multiplexado, o gateway do perfil default é o único processo de entrada e atende as mensagens de todos os perfis da máquina

A alternativa é rodar um processo por perfil, e isso pesa na operação quando tu tem muitos perfis ou trabalha com containers

Pensa numa recepção de prédio: em vez de cada empresa ter a própria portaria, um porteiro só recebe todo mundo e encaminha cada visita pro andar certo 🙂

E como ele sabe pra onde mandar?

O gateway default lista todos os perfis, sobe as plataformas habilitadas de cada um usando as credenciais do próprio perfil e entrega cada mensagem ao perfil dono

Cada turno roda com a config, as skills, a memória, o SOUL e as chaves de provedor do perfil que recebeu a mensagem

As credenciais NUNCA são compartilhadas entre perfis

Cada perfil continua morando na pasta dele, em ~/.hermes/profiles/<nome>, com config, skills, plugins e histórico próprios, como explica a documentação de profiles

O que você precisa antes de multiplexar os perfis

Antes de ligar o modo multiplexado, confere esta lista:

  • Hermes Agent instalado, com dois ou mais perfis em ~/.hermes/profiles/<nome> (a documentação fala em "dois ou mais perfis" como condição pra ativação automática, sem detalhar se o perfil default entra nessa contagem)
  • Uma credencial de bot diferente para cada perfil, porque um token de plataforma só pode atender um gateway
  • Nenhum perfil secundário rodando o próprio gateway por fora (gateway.standalone é tratado numa seção própria mais abaixo, com as ressalvas sobre esse ajuste)
  • Ingress /p/<perfil>/ configurado para as plataformas que precisam de porta

Pra deixar o gateway de pé o tempo todo, o natural é rodar numa VPS

Aqui a minha indicação é a VPS da Hostinger com o template Hermes Agent (link de afiliado da Hostinger)

O motivo é bem prático: o template Docker sobe em um clique, oferece mensagens em várias plataformas e suporte a mais de 200 modelos de LLM, incluindo endpoints da OpenRouter, OpenAI, Anthropic e personalizados

Os planos ainda têm o Docker Manager, que mostra os logs dos containers e atualiza em um clique, e isso ajuda MUITO na hora de investigar por que um perfil ficou sem atendimento

Se liga em dois detalhes:

  • O Managed Hermes Agent da Hostinger é outro produto, sem servidor pra administrar. Este guia trata da VPS com template Docker, onde tu cuida do ambiente
  • O setup do perfil (ex.: coder setup) é onde a chave de API do provedor de LLM, o modelo e os tokens do gateway são configurados

Outro ponto: não ficou confirmado se o template já vem com o multiplexador ligado nem como o boot multiplexado se comporta dentro desse container específico, então confere tudo pelo hermes gateway status no seu ambiente

Passo a passo: ativar o gateway multiplexado e pausar um perfil

Bora ver na prática?

  1. Cheque os bloqueios antes de ativar

Rode a verificação em modo simulação:

hermes gateway migrate --multiplex --dry-run

Se encontrar o mesmo segredo de plataforma em dois perfis locais, como o TELEGRAM_BOT_TOKEN, ela se recusa a migrar e informa quais perfis e qual variável estão envolvidos

Erro comum deste passo: copiar o mesmo token de bot pra dois perfis. Cada bot pertence a um perfil só

  1. Ative o modo multiplexado

Tu tem dois caminhos

O primeiro é deixar gateway.multiplex_profiles sem valor definido. Um valor unset é tratado como pedido: o gateway default decide a cada boot e só liga o multiplexado quando existem pelo menos dois perfis e nenhum bloqueio ativo

O segundo é forçar, porque um true explícito liga sem passar pela verificação prévia:

hermes config set gateway.multiplex_profiles true

Ou, no config.yaml do perfil default:

gateway:
  multiplex_profiles: true

Depois disso, reinicie o gateway do perfil default

Erro comum deste passo: colocar a flag no config de um perfil nomeado. Quem é dono do multiplexador é o perfil default, então é lá que ela vale

  1. Confirme se está multiplexando
hermes gateway status

Se o gateway ficou standalone, o status mostra uma caixa de aviso informando que só o perfil default está sendo atendido, junto com os perfis sem atendimento e o motivo do bloqueio

A mesma caixa aparece no resumo do hermes update, e o dashboard mostra um banner equivalente

Com dois ou mais perfis configurados, se nenhum aviso desses aparecer, o gateway está rodando como multiplexador =) (numa instalação com um perfil só não existe aviso nenhum, mas aí também não há multiplexação pra falar, já que a condição mínima não foi atingida)

Erro comum deste passo: esquecer um perfil secundário com gateway próprio ainda ativo por fora. Isso basta pra ativação automática ficar em standalone

  1. Estacione um perfil sem derrubar os outros

Quer tirar o agente de código do ar e deixar o bot pessoal rodando? Faz assim:

hermes -p <nome> gateway stop

Em um host multiplexado, o stop de um perfil nomeado estaciona o perfil em vez de matar o processo do host

Pra conferir:

hermes -p <nome> gateway status

O status informa parked enquanto o marcador existir

  1. Retome o perfil
hermes -p <nome> gateway start

O restart também funciona: num perfil estacionado sem gateway próprio ativo, ele se comporta como start, tira do estacionamento e o perfil volta a ser atendido pelo host

hermes -p <nome> gateway restart

Rode o hermes -p <nome> gateway status de novo e confirme que o parked sumiu

Por que o modo multiplexado não ligou e onde o aviso aparece

Quando o gateway.multiplex_profiles está unset, a verificação prévia que decide a ativação automática (a mesma do hermes gateway migrate --multiplex) mantém o modo standalone em três situações:

  • Um perfil secundário ainda roda o próprio gateway por fora
  • Dois perfis têm a mesma credencial de bot, por exemplo o TELEGRAM_BOT_TOKEN
  • Existe uma plataforma que precisa de porta sem ingress /p/<perfil>/

E onde tu fica sabendo disso?

O aviso é bem visível: uma caixa no início do gateway mostra os perfis que ficaram sem atendimento, o bloqueio e a correção

A mesma caixa aparece no resumo do hermes update e no hermes gateway status, e o dashboard exibe um banner, com o motivo também disponível via /api/status, no campo multiplex_standalone_reason

O que acontece com token duplicado?

Dois gateways standalone com o mesmo token disputam o long-poll, ou seja, brigam pelas mesmas mensagens. Já um gateway multiplexado estaciona o adaptador duplicado

Antes da migração, o dry-run barra a duplicata, como tu viu no passo 1

Pra prevenir: um bot por perfil, sempre, e o dry-run antes de colocar um perfil novo no ar

E se eu não quiser a migração automática?

Hoje true é o único valor aceito para gateway.multiplex_profiles: um false explícito é reescrito pelo próprio gateway para true, com um aviso único mostrado nessa reescrita (no start e também no resumo do próximo hermes update)

Se tu precisa manter um perfil específico fora do multiplexador, a saída sustentada pela documentação é declarar gateway.standalone: true no config.yaml desse perfil, como mostra a seção mais abaixo. Esse ajuste é tratado pela documentação como um shim de compatibilidade temporário, não como a forma recomendada de desligar a migração automática em definitivo

O que o arquivo gateway.parked faz e o que ele não apaga

O gateway.parked é um marcador em profiles/<nome>/gateway.parked que deixa o perfil offline no host e continua valendo depois de reiniciar o host

Ele é gravado antes de o host parar os adaptadores do perfil e tirar os cron jobs dele dos próximos ticks

O conteúdo é ignorado, um arquivo vazio basta

E a parte que tranquiliza: ele NÃO apaga o perfil, as sessões nem os jobs agendados

Tome cuidado com um detalhe: o marcador registra intenção, não estado de execução

Com o marcador presente, o status lê o estado de execução antes e mostra o PID de um gateway ativo (iniciado com --force) ao lado do marcador. Então não assume que parked significa "nada rodando" 🙂

Quando usar gateway.standalone (e por que é só temporário)

O gateway.standalone: true no config.yaml do próprio perfil nomeado (profiles/<nome>/config.yaml) é um ajuste de compatibilidade temporário, não a topologia recomendada

gateway:
  standalone: true

Com ele, o host deixa de atender esse perfil e nunca grava gateway.parked pra ele, e esse perfil passa a rodar o próprio gateway sem --force

No perfil default, essa mesma chave é ignorada, com um aviso

Fica a ressalva: não há confirmação de que declarar gateway.standalone: true num perfil nomeado livre esse perfil de contar como bloqueio na verificação prévia que decide se o multiplexado liga sozinho. A mesma verificação lista qualquer perfil secundário com gateway próprio ativo como motivo pra manter o host em standalone, e a documentação não deixa claro se esse ajuste é tratado como exceção. Então, se tu usa esse recurso, confirma o resultado com hermes gateway status em seguida

Qual a diferença pra estacionar?

Parked é pausa: o perfil continua dentro do multiplexador, só que offline

Standalone é tirar o perfil do multiplexador e voltar pro esquema de um processo por perfil. Os dois marcadores nunca valem para o mesmo perfil ao mesmo tempo

Hermes Desktop: acompanhando os perfis por uma interface

Se tu prefere acompanhar os perfis por uma interface em vez de só terminal, existe o Hermes Desktop. A documentação trata a conexão com instâncias em outras máquinas num guia próprio, separado deste aqui, que é sobre multiplexar perfis dentro da mesma VPS

Bora conhecer o app:

Conteúdo complementar do Hora de Codar para conhecer o canal; não é uma demonstração específica desta notícia ou versão.

Próximo passo: manter o gateway estável na VPS

Cria o hábito de rodar hermes gateway status depois de cada hermes update

Se aparecer a caixa de aviso de standalone, tu pega o bloqueio na hora, antes de descobrir que um bot parou de responder haha

Na VPS, usa o Docker Manager pra acompanhar os logs do container e aplicar as atualizações

Se tu ainda vai montar o servidor, dá pra começar pela VPS Hostinger com template Hermes e configurar o provedor de LLM e a chave de API no setup do perfil

Depois é estacionar e retomar perfis conforme a necessidade, sem derrubar ninguém

Até o próximo post!

Perguntas frequentes

Dá pra multiplexar perfis que estão em VPS diferentes?

Não. Cada perfil mora em ~/.hermes/profiles/<nome> na mesma máquina, e é o gateway default dessa máquina que multiplexa todos. Numa VPS diferente existe outra instalação, outro perfil default e outro multiplexador, então não dá pra misturar perfis de hosts distintos num gateway só.

Posso estacionar mais de um perfil ao mesmo tempo?

Sim. Cada hermes -p <nome> gateway stop estaciona só aquele perfil, gravando o próprio gateway.parked na pasta dele, sem afetar o host nem os outros perfis. Dá pra rodar o comando em vários perfis nomeados e deixar só o que interessa no ar.


Quer aprender mais sobre inteligência artificial e programação na prática? Conheça o canal Hora de Codar no YouTube e acompanhe os próximos vídeos.

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Formações

Formação Claude Code

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 48min

Blog | Mais populares