Documentação oficial desta página · v0.20.6
Perfis: vários agentes na mesma máquina
Rode vários agentes Hermes independentes no mesmo computador — cada um com configuração, chaves de API, memória, sessões, skills e estado de gateway próprios.
O que é um perfil
Um perfil é um diretório Hermes separado. Cada perfil tem o próprio config.yaml, .env,
SOUL.md, memórias, sessões, skills, tarefas de cron e banco de estado. Perfis servem para rodar
agentes separados com propósitos diferentes — um assistente de código, um bot pessoal, um agente de
pesquisa — sem misturar estado.
Nunca aponte dois processos de agente para o mesmo perfil (o mesmo diretório do Hermes). Os dois gravam memória automaticamente, e cada um carrega o que o outro escreveu no próprio prompt de sistema no início da sessão — então dois escritores num diretório só vão empilhar estado até aquilo deixar de ser qualquer coisa que você configurou. Perfis existem exatamente para evitar isso; agentes que precisam de memória compartilhada devem usar um provedor externo de memória.
Ao criar um perfil, ele vira um comando automaticamente. Crie um perfil chamado coder e você já
tem coder chat, coder setup, coder gateway start e assim por diante.
Começando
hermes profile create coder # cria o perfil e o comando "coder"
coder setup # configura chaves de API e modelo
coder chat # começa a conversar
É isso. O coder agora é um perfil Hermes próprio, com configuração, memória e estado dele.
Criar um perfil
Jeito mais rápido: rode hermes setup --portal dentro do perfil novo, para ligar modelos e
ferramentas de uma vez. Veja
Nous Portal.
Perfil em branco
hermes profile create meubot
Cria um perfil novo, já com as skills embutidas. Rode meubot setup para configurar chaves de API,
modelo e tokens de bot.
Se você pretende usar esse perfil como trabalhador do kanban (ou quer que o orquestrador do kanban
mande trabalho para ele), passe --description "<papel>" na criação, para o orquestrador saber no
que ele é bom:
hermes profile create pesquisador --description "Lê código-fonte e documentação externa, escreve os achados."
Dá para definir ou gerar a descrição depois, com hermes profile describe — veja o
guia do Kanban para o modelo completo de roteamento.
Clonar só a configuração (--clone)
hermes profile create trabalho --clone
Copia o config.yaml, o .env, o SOUL.md e as skills do perfil atual para o novo. Mesmas chaves,
mesmo modelo, mesmas capacidades, mas sessões e memória zeradas. Edite
~/.hermes/profiles/trabalho/.env para chaves diferentes, ou
~/.hermes/profiles/trabalho/SOUL.md para outra personalidade.
Clonar tudo (--clone-all)
hermes profile create backup --clone-all
Copia tudo — configuração, chaves, personalidade, todas as memórias, skills, tarefas de cron,
plugins. Um retrato completo em funcionamento. O histórico de cada perfil fica de fora (histórico de
sessões, state.db, backups/, state-snapshots/, checkpoints/) — isso pertence ao perfil de
origem e pode chegar a dezenas de GB. Para um backup completo, com histórico, use
hermes profile export ou hermes backup.
Clonar de um perfil específico
hermes profile create trabalho --clone-from coder
O --clone-from <origem> escolhe o perfil de origem diretamente e já implica clonar configuração,
skills e SOUL. Combine com --clone-all quando quiser uma cópia completa daquela origem:
hermes profile create trabalho-backup --clone-from coder --clone-all
Com o Honcho ligado, as operações de clone criam automaticamente um par de IA dedicado ao perfil novo, compartilhando o mesmo espaço de trabalho do usuário. Cada perfil constrói as próprias observações e identidade. Veja Honcho — multiagente e perfis.
Usando perfis
Comandos por apelido
Todo perfil ganha um comando em ~/.local/bin/<nome>:
coder chat # conversa com o agente coder
coder setup # configura o coder
coder gateway start # sobe o gateway do coder
coder doctor # confere a saúde do coder
coder skills list # lista as skills do coder
coder config set model.default anthropic/claude-sonnet-4
O apelido funciona com qualquer subcomando do hermes — por baixo, é só hermes -p <nome>.
A opção -p
Também dá para escolher o perfil explicitamente, em qualquer comando:
hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "olá" # funciona em qualquer posição
Padrão fixo (hermes profile use)
hermes profile use coder
hermes chat # agora vai para o coder
hermes tools # configura as ferramentas do coder
hermes profile use default # volta
Define um padrão, então os comandos hermes simples vão para aquele perfil. Como o
kubectl config use-context.
Saber onde você está
A CLI sempre mostra qual perfil está ativo:
- Prompt:
coder ❯em vez de❯ - Banner: mostra
Profile: coderna abertura hermes profile: mostra nome, caminho, modelo e situação do gateway
Perfis, espaços de trabalho e sandbox
Perfis costumam ser confundidos com espaços de trabalho ou sandboxes, mas são coisas diferentes:
- Um perfil dá ao Hermes um diretório de estado próprio:
config.yaml,.env,SOUL.md, sessões, memória, logs, tarefas de cron e estado de gateway. - Um espaço de trabalho, ou diretório de trabalho, é onde os comandos de terminal começam. Isso
é controlado à parte, por
terminal.cwd. - Um sandbox é o que limita o acesso ao sistema de arquivos. Perfis não colocam o agente em sandbox.
No backend de terminal padrão, o local, o agente continua tendo o mesmo acesso ao sistema de
arquivos que a sua conta de usuário. Um perfil não o impede de acessar pastas fora do diretório do
perfil.
Se você quer que um perfil comece numa pasta de projeto específica, defina um terminal.cwd
absoluto e explícito no config.yaml daquele perfil:
terminal:
backend: local
cwd: /caminho/absoluto/para/o/projeto
Usar cwd: "." no backend local significa "o diretório de onde o Hermes foi aberto", não "o
diretório do perfil".
Vale notar também:
- O
SOUL.mdpode orientar o modelo, mas não impõe fronteira de espaço de trabalho. - Mudanças no
SOUL.mdvalem numa sessão nova. Sessões abertas ainda podem estar usando o prompt antigo. - Perguntar ao modelo "em que diretório você está?" não é um teste confiável de isolamento. Se você
precisa de um diretório inicial previsível para as ferramentas, defina o
terminal.cwd.
Rodando gateways
Cada perfil roda o próprio gateway, num processo separado e com token de bot próprio:
coder gateway start # sobe o gateway do coder
assistente gateway start # sobe o gateway do assistente (outro processo)
Tokens diferentes
Cada perfil tem o próprio .env. Configure um token de Telegram, Discord ou Slack diferente em
cada:
# tokens do coder
nano ~/.hermes/profiles/coder/.env
# tokens do assistente
nano ~/.hermes/profiles/assistente/.env
Proteção: trava de token
Se dois perfis usarem o mesmo token de bot por acidente, o segundo gateway é bloqueado com um erro claro, nomeando o perfil em conflito. Vale para Telegram, Discord, Slack, WhatsApp e Signal.
Serviços persistentes
coder gateway install # cria o serviço hermes-gateway-coder no systemd/launchd
assistente gateway install # cria o serviço hermes-gateway-assistente
Cada perfil ganha o próprio nome de serviço. Eles rodam de forma independente.
Os gateways por perfil são supervisionados pelo
s6-overlay (o PID 1 do container), então
hermes profile create <nome> registra automaticamente um serviço s6 em
/run/service/gateway-<nome>/. O hermes -p <nome> gateway start/stop/restart chama o s6-svc em
vez de criar um processo solto — falhas reiniciam sozinhas e o docker restart preserva o conjunto
de gateways que estava rodando. Detalhes em
supervisão de gateway por perfil.
Configurar perfis
Cada perfil tem o próprio:
config.yaml— modelo, provedor, conjuntos de ferramentas, todas as opções.env— chaves de API, tokens de botSOUL.md— personalidade e instruções
coder config set model.default anthropic/claude-sonnet-4
echo "Você é um assistente de código focado." > ~/.hermes/profiles/coder/SOUL.md
Se quiser que esse perfil trabalhe num projeto específico por padrão, defina também o terminal.cwd
dele:
coder config set terminal.cwd /caminho/absoluto/para/o/projeto
Pelo painel
O painel web é uma superfície de máquina, capaz de gerenciar a
configuração, as chaves, as skills, os MCPs e o modelo de qualquer perfil, pelo seletor na
barra lateral — não é preciso um painel por perfil. O coder dashboard abre o painel da máquina
com o perfil coder já selecionado. A aba de conversa do painel também segue o seletor, abrindo a
conversa no diretório do perfil escolhido.
Atenção: "Set as active" na página de Perfis do painel é o padrão fixo para execuções futuras de
CLI e gateway (o mesmo que hermes profile use) — para editar um perfil pelo painel, use o
seletor.
Atualizar
O hermes update puxa o código uma vez (compartilhado) e sincroniza as skills embutidas novas em
todos os perfis, automaticamente:
hermes update
# → Code updated (12 commits)
# → Skills synced: default (up to date), coder (+2 new), assistant (+2 new)
Skills modificadas por você nunca são sobrescritas.
Gerenciar perfis
hermes profile list # mostra todos os perfis e a situação de cada um
hermes profile show coder # detalhes de um perfil
hermes profile rename coder dev-bot # renomeia (atualiza apelido e serviço)
hermes profile export coder # empacota em coder.tar.gz (compartilhável; sem chaves)
hermes profile import coder.tar.gz # instala um arquivo como perfil novo
Na conversa, os dois últimos existem como /export e /import — e no aplicativo desktop como
⌘K → Export/Import profile…. Veja compartilhar um perfil.
Dar nome ao perfil padrão
O identificador interno do perfil padrão é sempre default — ele não pode ser renomeado de verdade,
porque ~/.hermes é a raiz da instalação. Renomeá-lo define, na prática, um nome de exibição,
que as interfaces mostram no lugar do identificador:
hermes profile rename default Harumesu # Unicode funciona: 小助手
O nome de exibição aparece em hermes profile list e show, no comando /profile, no painel e no
aplicativo desktop (inclusive na lista do Bot Mode). É só apresentação: -p default, nomes de
serviço, tarefas de cron e todas as outras referências continuam usando o identificador canônico
default. Ele fica gravado como display_name em ~/.hermes/profile.yaml; apague essa linha para
voltar. Perfis com nome também podem ter um display_name (que sobrevive a uma renomeação de
verdade), mas nesses o rename continua renomeando o perfil em si.
Apagar um perfil
hermes profile delete coder
Isso para o gateway, remove o serviço do systemd/launchd, remove o comando e apaga todos os dados do perfil. Você vai precisar digitar o nome do perfil para confirmar.
Use --yes para pular a confirmação: hermes profile delete coder --yes.
Não dá para apagar o perfil padrão (~/.hermes). Para remover tudo, use hermes uninstall.
Autocompletar no shell
# Bash
eval "$(hermes completion bash)"
# Zsh
eval "$(hermes completion zsh)"
Acrescente a linha ao seu ~/.bashrc ou ~/.zshrc para o autocompletar ficar permanente. Ele
completa nomes de perfil depois do -p, os subcomandos de perfil e os comandos de topo.
Como funciona por dentro
Perfis usam a variável de ambiente HERMES_HOME. Quando você roda coder chat, o script define
HERMES_HOME=~/.hermes/profiles/coder antes de abrir o hermes. Como mais de 119 arquivos do código
resolvem caminhos por get_hermes_home(), o estado do Hermes passa a viver no diretório do perfil
sozinho — configuração, sessões, memória, skills, banco de estado, PID do gateway, logs e tarefas de
cron.
Isso é separado do diretório de trabalho do terminal. A execução de ferramentas começa em
terminal.cwd (ou no diretório de abertura, quando cwd: "." no backend local), não
automaticamente no HERMES_HOME.
Em instalações no próprio sistema, os subprocessos de ferramenta mantêm o HOME real do seu usuário
por padrão, para as credenciais de CLI que já existem em ~ continuarem funcionando em todos os
perfis. O isolamento dos dados do perfil vem do HERMES_HOME, não de mudar o HOME. Backends de
container continuam usando {HERMES_HOME}/home para estado persistente de ferramenta, e quem
precisa de configuração de ferramenta estritamente separada por perfil pode optar por
terminal.home_mode: profile.
Isso significa duas coisas fáceis de confundir:
HERMES_HOMEé a fronteira do perfil. Ele controla a configuração do Hermes, o.env, a memória, as sessões, as skills, os logs, as tarefas de cron, o estado do gateway e os outros dados do Hermes.HOMEé o diretório do usuário no sistema operacional, que as CLIs externas esperam. Em instalações no próprio sistema, o Hermes o mantém como o diretório real por padrão, para ferramentas comogit,ssh,gh,az,npm, Claude Code e Codex encontrarem as mesmas credenciais que usam no seu shell normal.
O custo é que, por padrão, os perfis compartilham o estado de CLI no nível do usuário. Se você
precisa de identidades separadas por perfil, defina terminal.home_mode: profile no config.yaml
daquele perfil. Nesse modo o Hermes abre os subprocessos com HOME={HERMES_HOME}/home; aí você
precisa criar ou ligar, dentro do diretório do perfil, o ~/.ssh, o ~/.gitconfig, o
~/.config/gh, as autenticações das CLIs de nuvem, as do Claude e do Codex, o estado do npm e
arquivos parecidos.
O Hermes também expõe o HERMES_REAL_HOME aos subprocessos, para os scripts ainda encontrarem o
diretório real da conta quando o home_mode: profile estiver ativo.
O perfil padrão é simplesmente o próprio ~/.hermes. Não é preciso migrar nada — instalações
existentes funcionam igual.
Compartilhar um perfil
Um perfil que você montou numa máquina pode ir para outra — sua própria estação, o notebook de um colega, ou a comunidade. Dois caminhos:
Mandar um arquivo. O /export empacota o perfil num .tar.gz — skills, memória, persona,
tarefas de cron, plugins, configurações e, no desktop, o tema e o layout. As chaves de API são
removidas. Quem recebe roda o /import.
# Na conversa, rode /export, entregue o arquivo, e a pessoa roda /import nele
hermes profile export coder
hermes profile import ./coder.tar.gz --name coder
Publicar uma distribuição. Empacote o perfil como repositório git, para quem recebe instalar com um comando e puxar atualizações versionadas depois. Leva o SOUL, a configuração, as skills, as tarefas de cron e as conexões MCP; credenciais, memórias e sessões ficam em cada máquina.
# Instalar um agente inteiro de um repositório git
hermes profile install github.com/voce/research-bot --alias
# Atualizar depois, quando o autor publicar uma versão nova (mantém memórias e .env)
hermes profile update research-bot
Use um arquivo de exportação para uma entrega única ou uma mudança de máquina; use uma distribuição para um agente que você vai continuar publicando. Veja Distribuir um Agente Inteiro para os dois — a tabela de comparação, a autoria, a publicação, a semântica de atualização e o modelo de segurança.