Hermes Agent: profiles, multiuso e dois gateways
Um guia prático para separar um Hermes para você e outro para seu filho, compartilhando apenas modelo e provider, sem misturar memória, skills e sessões.
Quando duas pessoas usam o mesmo Hermes, o ponto central não é “como abrir duas conversas”, mas como isolar estado. No Hermes, quem define esse isolamento é o profile. E quando a conversa sai do terminal e entra em Telegram ou outras plataformas, a pergunta seguinte passa a ser: um gateway só basta ou faz sentido ter dois gateways independentes?
Estado atual desta instalação
Antes de decidir uma arquitetura, vale olhar o estado real da instância que está rodando agora.
$ hermes profile show default
Profile: default
Path: /home/hermes/.hermes
Model: gpt-5.4 (openai-codex)
Gateway: running
Skills: 100
.env: exists
SOUL.md: exists
$ hermes gateway list
Gateways:
✓ default (current) — PID 2372440
Hoje, portanto, existe um único profile operacional: default. E existe um único gateway em execução, ligado a esse profile.
O que um profile isola de verdade
A documentação oficial do Hermes é explícita: um profile é outro Hermes home. Isso significa que cada profile ganha seu próprio diretório com seus próprios arquivos de estado.
config.yaml.envSOUL.md- memórias
- sessões
- skills
- cron jobs
- logs
- estado do gateway
Em termos simples: profile não é só um “nome” ou um “atalho”. É outra identidade operacional do Hermes.
Profile não é sandbox
Vale marcar uma distinção importante que a documentação também faz: profile não é isolamento de filesystem. Ele isola estado do Hermes, não permissões do usuário Linux.
Então, se ambos os perfis rodam com o mesmo usuário do sistema e com backend local, os dois perfis ainda têm o mesmo alcance de arquivos que esse usuário já possui. O que muda é o contexto do Hermes, não o privilégio do processo.
terminal.cwd, containerização, outro usuário Linux ou outro backend.
O que significa “compartilhar apenas model/provider”
No seu caso, a intenção é boa: aproveitar o mesmo modelo e o mesmo provider, mas sem compartilhar o resto. Na prática, isso quer dizer:
- compartilhar: configuração de modelo, provider e, possivelmente, credenciais do provider;
- não compartilhar: memória, skills criadas, sessões, cron jobs, gateway state, bot tokens e possivelmente
SOUL.md.
Esse desenho é totalmente compatível com profiles. A questão é escolher a forma de criação do profile novo.
Opção 1: profile novo em branco e copiar só o necessário
Essa é a opção mais limpa e a que mais combina com o seu objetivo declarado.
hermes profile create filho
filho config set model.default gpt-5.4
filho config set model.provider openai-codex
# depois configurar apenas o que quiser compartilhar
Vantagens:
- não herda memórias nem sessões;
- não herda skills pessoais suas por acidente;
- não herda cron jobs;
- não copia tokens de gateway automaticamente;
- fica claro o que foi compartilhado e o que não foi.
Desvantagem: exige um pouco mais de configuração manual. Mas, no seu caso, isso é quase uma vantagem, porque reduz o risco de vazamento de contexto entre vocês dois.
Opção 2: --clone e depois podar o que não deve ser compartilhado
A documentação oficial diz que hermes profile create work --clone copia config.yaml, .env e SOUL.md, mas deixa memória e sessões novas. Isso é útil quando você quer começar “parecido” com o profile atual.
hermes profile create filho --clone
# depois editar ~/.hermes/profiles/filho/.env
# e ajustar ~/.hermes/profiles/filho/SOUL.md se necessário
Vantagens:
- mais rápido para começar;
- já leva model/provider;
- já leva boa parte da configuração que funciona.
Riscos:
- copia o
.envinteiro, então pode levar tokens de Telegram, Discord e outros canais; - copia o
SOUL.md, então a personalidade inicial pode ficar muito parecida com a sua; - pode acabar copiando mais integração do que você gostaria.
--clone faz sentido quando você quer um perfil “quase igual” ao atual e tem disciplina para limpar o que não deve permanecer. Para pai e filho, isso pode funcionar, mas exige revisão cuidadosa do .env e do SOUL.md.
Opção 3: --clone-all
Essa opção não combina com o seu objetivo. A própria documentação descreve --clone-all como cópia completa: config, API keys, memórias, histórico de sessões, skills, cron jobs, plugins e mais.
Para criar um Hermes do seu filho, isso é quase o oposto do que você quer. Só seria útil se a meta fosse um snapshot completo para backup ou fork operacional temporário.
Um gateway só ou dois gateways?
Aqui está a decisão arquitetural mais importante para o caso de multiuso familiar.
A documentação oficial de profiles é direta: cada profile roda seu próprio gateway como processo separado, com seu próprio bot token. Além disso, o Hermes possui um mecanismo de token lock: se dois perfis tentarem usar o mesmo token de bot ao mesmo tempo, o segundo é bloqueado com erro claro.
Em outras palavras: dois profiles com dois gateways simultâneos pedem dois tokens/bots distintos quando você está falando da mesma plataforma, como Telegram.
Opção A: um bot / um gateway / um profile compartilhado
Essa é a solução mais simples de operar, mas a mais fraca em isolamento.
- um único bot no Telegram;
- um único gateway rodando;
- um único profile;
- duas pessoas podem falar com o mesmo bot em chats diferentes.
Isso pode funcionar tecnicamente, mas não é o ideal para o seu objetivo, porque profile, skills, cron, personalidade e várias decisões globais continuam compartilhados.
O isolamento de sessões por chat ajuda, mas não substitui o isolamento de profile.
Opção B: dois profiles e um gateway para cada um
Essa é a arquitetura que melhor respeita o requisito de “compartilhar apenas model/provider”.
defaultcontinua sendo o seu profile;filhovira um novo profile;- cada um tem suas próprias sessões, memórias, skills e gateway state;
- cada um usa seu próprio bot/token, se ambos forem operar por Telegram;
- o modelo/provider pode ser igual nos dois.
hermes profile create filho
filho setup
filho gateway install
filho gateway start
No seu cenário, essa é a recomendação principal.
Opção C: dois profiles, mas só um deles com gateway
Existe um meio-termo interessante: você continua usando o default com gateway e cria um profile filho que, por enquanto, é usado só via CLI ou TUI.
- seu profile: CLI + Telegram;
- profile do filho: CLI apenas, ou TUI local;
- modelo/provider iguais;
- sem necessidade imediata de novo token de bot.
Essa opção é útil se você quer validar primeiro a separação de contexto antes de também investir em outro bot/gateway.
Opção D: um bot só, mas usando um profile distinto apenas para o filho em outro momento
Outra alternativa prática é operar em fases:
- criar o profile do filho já isolado;
- testá-lo via CLI;
- depois, se fizer sentido, criar um segundo bot e ativar um segundo gateway.
Isso reduz a chance de mudar muita coisa ao mesmo tempo.
Minha recomendação para o seu caso
Como você disse que quer compartilhar apenas modelo e provider, eu recomendo este desenho:
Em termos de equilíbrio entre simplicidade e isolamento, isso costuma ser o melhor ponto.
Matriz rápida de opções
| Opção | Isolamento | Complexidade | Serve ao objetivo? |
|---|---|---|---|
| Mesmo profile, mesmo gateway | baixo | baixa | fraco |
| Dois profiles, filho via CLI | alto | média | bom para começar |
| Dois profiles, dois gateways, dois bots | muito alto | média | melhor opção |
--clone-all |
muito baixo para este caso | baixa | não recomendado |
Comandos úteis para esse desenho
hermes profile list
hermes profile show default
hermes gateway list
hermes profile create filho
hermes -p filho chat
hermes -p filho doctor
hermes -p filho config
hermes -p filho gateway status
hermes profile create filho --clone
hermes profile show filho
# depois revisar ~/.hermes/profiles/filho/.env
# e ~/.hermes/profiles/filho/SOUL.md
hermes -p filho gateway install
hermes -p filho gateway start
hermes gateway list
Fechamento
O Hermes já nasce com uma ideia boa para multiuso: separar estado por profile. Para o seu caso, isso encaixa muito bem. Você preserva a sua identidade operacional no default, cria uma identidade limpa para o seu filho e decide, com calma, se ele também precisa de um gateway próprio agora ou só depois.
Se a pergunta for “qual a melhor solução técnica para pai e filho usando o mesmo servidor?”, a resposta curta é: dois profiles, mesmo modelo/provider, estados separados; e, se ambos usarem Telegram, dois gateways com dois bots distintos.