Hermes Profiles: clonagem, skills e isolamento por agente

O que cada forma de criação realmente copia, o que fica habilitado e como manter Bots consistentes sem transformar todos numa mesma instalação acidental.

No Hermes, um profile não é apenas um nome diferente para o mesmo agente. É uma fronteira de estado baseada em HERMES_HOME, com configuração, credenciais, memória, sessões, skills e cron próprios. O gateway pode rodar como processo separado do perfil ou servir vários profiles por multiplexação; isso muda o processo supervisor, não a propriedade do estado. Perfis não herdam mudanças em tempo real. Eles começam por cópia, seed ou configuração compartilhada explícita — e depois divergem.

TL;DR hermes profile create nome cria um perfil fresco com as skills bundled sem copiar suas skills personalizadas do perfil base. --clone copia as skills instaladas no perfil de origem, além de config.yaml, .env e SOUL.md. --clone-all copia quase todo o estado, exceto histórico e artefatos de runtime. --no-skills e o Bot Mode Create empty criam um perfil sem bundled skills e impedem que atualizações futuras as reintroduzam; perfis existentes também podem usar hermes skills opt-out/opt-in. Exportação e distribuição Git são mecanismos de transporte diferentes. Nada disso cria herança viva: depois da criação, cada perfil administra seu próprio diretório.

Resposta direta às suas perguntas

Como o perfil nasce Recebe skills? Recebe skills personalizadas do perfil base? Fica “desativado”?
profile create nome Sim. Recebe uma cópia do catálogo bundled atual. Não. Não por padrão. As bundled ficam instaladas e habilitadas, salvo configuração de disabled.
profile create nome --clone Sim. Copia o diretório skills/ do perfil de origem. Sim, se estiverem instaladas dentro do skills/ daquele perfil. Não. O estado de enablement também vem da configuração clonada.
profile create nome --clone-all Sim, como parte da cópia ampla. Sim. Não. É uma cópia de estado, não uma lista de capacidades inativas.
profile create nome --no-skills Não recebe bundled skills. Não, porque não há perfil de origem sendo clonado. Não é “desativado”: é um perfil sem bundled skills e com opt-out persistente do seed.
Bot Mode: Fresh profile Sim. A UI atual identifica a opção como “Fresh profile (bundled skills)”. Não. As bundled ficam habilitadas por padrão.
Bot Mode: Create empty Não recebe bundled skills. Não. O perfil recebe o marcador equivalente a --no-skills.
A correção da hipótese Um perfil fresco não recebe “todas as skills instaladas e deixa tudo inativo”. Ele recebe o catálogo bundled padrão, normalmente habilitado. O que ele não recebe são as suas skills personalizadas, Hub, agent-created, externas ou específicas de projeto — a menos que você clone, instale ou configure uma fonte compartilhada.

O que é um profile no Hermes

O profile é uma fronteira de estado baseada em HERMES_HOME. O perfil default costuma ser ~/.hermes; um perfil nomeado fica em ~/.hermes/profiles/<nome>. Cada perfil tem sua própria combinação de:

  • config.yaml — modelo, provider, approvals, toolsets, memória e configurações de skills;
  • .env — chaves, tokens e outras credenciais do perfil;
  • SOUL.md — persona e instruções permanentes;
  • skills/ — skills bundled, Hub, agent-created e user-authored daquele perfil;
  • memories/ — memória persistente do perfil;
  • state.db e sessions/ — histórico e estado de conversas;
  • cron/, logs, plugins e estado do gateway.

O alias do perfil é apenas ergonomia. coder chat e hermes -p coder chat apontam para o mesmo HERMES_HOME. O isolamento não é uma herança dinâmica: se você editar a skill no perfil coder, a skill do perfil ops não muda automaticamente.

ID canônico e nome visível

display_name é identidade de apresentação, não um novo profile. Em especial, o profile default continua com ID canônico default, porque ele é a própria raiz ~/.hermes; renomeá-lo só altera o nome mostrado na UI, no roster e no comando de perfil. Referências como -p default, nomes de serviço e cron continuam usando default. Perfis nomeados podem ser renomeados de verdade, atualizando diretório, alias e serviço.

# Só muda a aparência do profile default.
hermes profile rename default Harumesu

# Renomeia um profile nomeado de fato.
hermes profile rename researcher research-bot
Perfil não é sandbox O perfil separa estado Hermes, mas não é uma barreira de filesystem. No backend local padrão, dois perfis podem executar como o mesmo usuário Unix e alcançar os mesmos diretórios. Para isolamento de arquivos, use permissões, containers, worktrees, backend de terminal e toolsets adequados.

Profiles e o processo de gateway

Isolamento de profile e isolamento de processo são decisões diferentes. O modo padrão pode manter um gateway separado por profile; opcionalmente, o profile default pode operar um multiplexador que atende vários profiles no mesmo processo.

# Opt-in no profile default; não execute isso sem revisar o impacto.
hermes config set gateway.multiplex_profiles true
hermes gateway restart

# Inspecionar um profile servido pelo multiplexador.
hermes status -p chamados
  • cada profile continua resolvendo sua própria config, skills, memória, SOUL, sessões e credenciais;
  • profiles secundários não devem iniciar um gateway próprio enquanto o multiplexador os serve;
  • webhooks e API server nomeados usam o prefixo /p/<profile>/;
  • a autenticação do prefixo é a do profile-alvo; a chave do default não deve funcionar por acidente no profile nomeado;
  • gateway.multiplex_profile_allowlist pode restringir quais profiles entram no conjunto servido;
  • gateway.profile_routes só tem efeito com multiplexação ligada e pode direcionar mensagens de um mesmo bot compartilhado por plataforma, guild, canal, thread ou chat para profiles diferentes; o match é mais específico primeiro e todos os campos declarados precisam coincidir. Sem match, permanece o comportamento default; com match explícito para profile inexistente ou fora da allowlist, o ingress é rejeitado em vez de cair silenciosamente no default.
  • o ganho é operacional — um supervisor e um processo —, não uma sandbox. Um crash do processo ou erro de configuração pode afetar vários profiles.

Para a topologia Mac + VPS, comece com o modo simples e processos sob o supervisor que você já observa. Só adote multiplexação quando o custo de vários gateways justificar a redução do isolamento de processo. O manual oficial de multi-profile gateways cobre allowlist, profile_routes e conflitos de plataformas port-binding.

O que --clone copia

--clone é o modo “comece parecido, mas tenha um perfil novo”. Ele copia o conjunto de configuração e capacidades do perfil de origem para o novo diretório.

hermes profile create chamados --clone

# Ou escolha uma origem específica.
hermes profile create chamados --clone-from default

Itens copiados

  • config.yaml, incluindo provider/modelo, lista de skills disabled, configurações de skills, toolsets, MCPs e outras preferências presentes no arquivo;
  • .env, portanto chaves e tokens podem ser copiados — este é um detalhe de segurança, não uma nota de rodapé;
  • SOUL.md;
  • todo o diretório skills/ do perfil de origem, incluindo bundled skills presentes, skills instaladas do Hub e skills criadas pelo agente ou pelo usuário;
  • arquivos de identidade de memória selecionados, como memories/MEMORY.md e memories/USER.md, conforme a implementação atual;
  • manifestos e estado local que estiverem dentro do diretório de skills, como .bundled_manifest, quando presentes.

A cópia de skills é física. O novo perfil não aponta para a pasta do perfil antigo nem consulta o antigo para decidir se uma skill existe. Depois do clone, os dois diretórios são independentes.

Isso é menor que --clone-all: o clone comum não leva todo o diretório de memória, cron jobs, plugins ou histórico. A implementação atual copia memories/MEMORY.md e memories/USER.md como identidade selecionada, mas mantém as sessões e o banco de histórico novos.

O que não significa “clone”

  • não copia skills de projeto em <repo>/.hermes/skills/ ou <repo>/.agents/skills/;
  • não copia o conteúdo de diretórios declarados em skills.external_dirs; o caminho pode ser copiado no config e continuar inválido no novo host;
  • não cria uma herança live do perfil base;
  • não transforma o novo perfil em uma sessão continuada do antigo;
  • não deve ser confundido com exportação portátil ou backup completo.
Credenciais Como --clone copia .env, use-o somente quando compartilhar credenciais for realmente desejado. Para um Bot com identidade ou permissões próprias, crie fresco e configure o perfil explicitamente, ou remova/rotacione os segredos herdados antes do primeiro gateway.

O que --clone-all acrescenta

--clone-all é uma cópia ampla do estado do perfil. É mais próximo de um snapshot operacional do que da criação normal de um Bot.

hermes profile create backup-chamados --clone-all
hermes profile create replica --clone-from chamados --clone-all

Ele inclui configuração, credenciais, persona, skills, memórias, cron jobs, plugins e demais dados do perfil, mas exclui o histórico específico da origem: state.db, sessões, backups, snapshots rápidos e checkpoints. Também remove arquivos de runtime como PID e estado transitório do gateway. Quando a origem é o perfil default, a implementação ainda exclui infraestrutura compartilhada como o checkout do Hermes, worktrees e outros artefatos que não devem ser recursivamente clonados.

Se o objetivo é transportar uma configuração para outra máquina, avalie hermes profile export. Exportação é desenhada como pacote portátil e remove credenciais; --clone-all é uma cópia local de trabalho e pode levar segredos. São ferramentas diferentes porque a humanidade descobriu, com atraso, que “backup” e “duplicar tudo” não são sinônimos.

Perfil fresco, --no-skills e Create empty

Perfil fresco comum

hermes profile create researcher

A criação prepara a estrutura do perfil e faz o seed das skills bundled. O catálogo bundled é o conjunto que vem do repositório Hermes. Skills opcionais oficiais, skills do Hub e skills que você criou em outro perfil não entram apenas porque o nome do novo perfil é diferente.

A skill é instalada na pasta do perfil e fica disponível no índice. Isso ainda não significa que o texto completo dela ficará no prompt de toda conversa: Hermes usa carregamento progressivo. O índice compacto aparece no contexto; o conteúdo completo é carregado quando a skill é invocada ou quando o agente decide que precisa dela.

Perfil sem bundled skills

hermes profile create dispatcher \
  --no-skills \
  --description "Coordena tarefas e não executa workflows especializados."

O Hermes cria um perfil sem bundled skills e grava o marcador .no-bundled-skills. Esse marcador é consultado no seed inicial, no hermes update e nos syncs de bundled skills. Portanto o perfil continua enxuto depois de atualizações futuras.

--no-skills é uma escolha de criação e não pode ser combinado com --clone, --clone-from ou --clone-all: clonar explicitamente copiaria skills da origem. Em um perfil já existente, o equivalente seguro é:

# Apenas bloqueia seed futuro; não apaga o que já existe.
hermes skills opt-out

# Reativa o seed bundled; --sync faz isso imediatamente.
hermes skills opt-in --sync

O opt-out não torna a pasta somente leitura nem impede instalar skills manualmente. A variante hermes skills opt-out --remove é destrutiva para bundled skills não modificadas e pede confirmação; skills editadas, locais ou do Hub são preservadas.

Nuance do clone O marcador .no-bundled-skills fica na raiz do perfil e não faz parte da lista de arquivos copiados por --clone. Portanto, clonar um perfil que nasceu com --no-skills pode copiar uma pasta skills/ vazia, mas voltar a receber bundled skills no próximo update. Se o novo perfil também deve ser vazio, crie-o diretamente com --no-skills ou use Create empty; não use clone como atalho.

No Bot Mode

Na janela New Agent, a UI atual apresenta:

  • Fresh profile (bundled skills) — equivale ao perfil fresco comum;
  • Create empty (skip bundled skills) — equivale ao caminho sem bundled skills;
  • Clone from — copia as capacidades instaladas no perfil escolhido da máquina-alvo.
Atenção ao valor inicial da UI Na build atual do Bot Mode, o draft de New Agent começa com cloneFrom = default. Portanto, se você quer começar realmente do zero, selecione explicitamente Fresh profile antes de criar. “Não abrir o Advanced” não é uma prova de que o perfil será fresco.

Ao criar um Bot remoto, a origem do clone é um perfil do backend remoto, normalmente o default daquela máquina. O perfil mac-dev do Mac não é uma origem válida para um Bot criado na VPS, a menos que você esteja usando explicitamente uma operação de export/import ou outra distribuição. O Desktop não teletransporta a pasta de skills entre backends por intuição.

O fluxo de criação do Bot também tem uma camada própria de credenciais: o Desktop atual pode compartilhar o pool OAuth/token do perfil principal por padrão, enquanto o clone CLI copia o .env e não deve ser tratado como cópia equivalente de auth.json. Gateways antigos podem copiar credenciais em vez de compartilhá-las. Antes de colocar um Bot em produção, confirme o escopo de provider, pool OAuth, .env e tokens de plataforma separadamente.

Instalada, habilitada e carregada: três estados diferentes

A palavra “ativa” costuma esconder três coisas distintas. Para diagnosticar um Bot, use esta tabela:

Estado Como reconhecer O que significa
Instalada Existe um SKILL.md no universo de skills visível ao perfil. O Hermes consegue descobrir e carregar a skill.
Habilitada A skill não aparece na lista skills.disabled do perfil. Ela aparece no índice normal e pode ser usada.
Carregada O conteúdo completo foi inserido na rodada por slash command, tool ou lógica do agente. A skill está efetivamente orientando aquele turno.

Em resumo: instalada não significa sempre carregada. Mas isso não quer dizer que esteja desabilitada. Skills são deliberadamente on-demand para evitar gastar tokens colocando centenas de procedimentos completos em toda chamada.

Como o enablement é armazenado

Cada perfil pode ter uma lista própria de skills desabilitadas em sua configuração. A regra atual é simples: skill instalada é considerada habilitada, a menos que seu nome esteja em skills.disabled. O editor de capacidades do Desktop lê essa lista e salva a substituição no perfil-alvo.

# Ver o perfil que será consultado.
hermes profile show chamados

# Listar skills do perfil ativo.
hermes -p chamados skills list

# Mostrar somente as habilitadas.
hermes -p chamados skills list --enabled-only

# Comparar com outro perfil.
hermes -p default skills list --enabled-only
hermes -p chamados skills list --enabled-only

Habilitar uma skill não liga automaticamente o toolset terminal, browser ou MCP. Skills, toolsets e servidores MCP são camadas diferentes de capacidade. Um Bot pode ter a skill de deploy instalada e ainda não possuir terminal; ou ter terminal sem ter a skill que explica o procedimento.

Como o Hermes administra skills em todos os perfis

Não existe um único catálogo vivo que force todos os Bots a serem iguais. O Hermes usa uma combinação de seed por perfil, manifest por perfil, configuração por perfil e fontes externas opcionais.

Repo Hermes bundled skills origem + hashes Perfil A skills/ + manifest disabled próprio Perfil B skills/ + manifest disabled próprio Fontes opcionais Hub · external_dirs · projeto · sync cada uma com regras próprias
Bundled skills são sincronizadas por perfil com manifest e proteção contra sobrescrita; customizações, enablement e fontes externas continuam escopados ao perfil.

Bundled skills e hermes update

As skills bundled vivem no repositório do Hermes e são semeadas em cada HERMES_HOME. O sync mantém um arquivo skills/.bundled_manifest com o hash de origem de cada skill naquele perfil.

Em cada atualização:

  • skill bundled nova — é copiada para o perfil que não optou por sair;
  • skill bundled sem alteração local — pode receber a versão nova;
  • skill bundled editada pelo usuário — é marcada como user-modified e não é sobrescrita;
  • skill bundled apagada pelo usuário — a ausência é respeitada e ela não é automaticamente ressuscitada;
  • perfil com .no-bundled-skills — não recebe seed bundled futuro.

O update sincroniza o conjunto bundled nos perfis instalados, mas não é um mecanismo para copiar skills customizadas de default para chamados. Para uma skill personalizada, escolha explicitamente clone, instalação, distribuição, diretório externo ou Skill Sync.

Na instalação verificada desta VPS, o Hermes usa método git e o caminho normal de hermes update percorre os profiles locais. Existe também um caminho de atualização por pacote/ZIP em que o sync pode ficar restrito ao HERMES_HOME ativo. Se a atualização vier por um supervisor ou imagem Docker, valide o método real antes de concluir que todos os profiles foram atualizados.

# Atualiza o código do Hermes e sincroniza bundled skills elegíveis.
hermes update

# Em um perfil específico, conferir a visão local.
hermes -p chamados skills list --source builtin

# Skills bundled que foram editadas e serão protegidas.
hermes -p chamados skills list-modified

# Ver o diff de uma bundled skill.
hermes -p chamados skills diff nome-da-skill

Curator não é sincronização

O Curator administra o ciclo de vida local das skills — uso, stale, archive e restauração — por perfil. Ele não baixa a versão upstream e não torna dois profiles iguais. Na política atual, bundled skills não usadas podem ser arquivadas quando curator.prune_builtins está habilitado; para uma frota em que o catálogo bundled deve permanecer estável, defina explicitamente em cada perfil:

hermes -p chamados config set curator.prune_builtins false
hermes -p ops-vps config set curator.prune_builtins false

Skills Hub continuam fora do Curator. Para atualizar Hub, use hermes skills check/update; para atualizar bundled, use hermes update. Três comandos, três responsabilidades. O Hermes não está tentando esconder isso — apenas não colocou um mapa na porta.

Quando usar hermes skills reset

Se você editou uma bundled skill e quer voltar ao fluxo normal de atualização, use reset. Sem --restore, o Hermes limpa o tracking de user-modified e preserva sua cópia atual para re-baseline. Com --restore, substitui a cópia pela versão bundled atual e destrói as alterações locais daquela skill.

# Preserva o conteúdo atual e libera o tracking para updates futuros.
hermes -p chamados skills reset <bundled-skill>

# Restaura a versão bundled atual — operação destrutiva para a skill.
hermes -p chamados skills reset <bundled-skill> --restore

O manifest é por perfil. Resetar a skill no perfil chamados não altera a mesma skill no perfil default ou em outro backend.

Tipos de skill e como cada um se comporta

Tipo Origem Entra num perfil fresco? É atualizado por hermes update? Como chega a outro perfil?
Bundled Repositório Hermes Sim, salvo --no-skills. Sim, com manifest e proteção contra edição. Seed normal, clone ou update.
Official optional optional-skills/ / catálogo official Não automaticamente. Não como seed bundled. Instalar explicitamente em cada perfil ou clonar um perfil que já a tenha.
Hub / GitHub / URL Registry externo Não. Use hermes skills check/update no perfil. Instalar por perfil, clone, distribuição ou diretório externo.
Agent-created / user-authored skill_manage ou arquivos locais Não. Não como bundled. Clone, export/distribution, external dir ou Skill Sync elegível.
External skills.external_dirs Só se o caminho estiver configurado e existir. Não é gerenciado pelo bundled sync. Configure o mesmo diretório em cada perfil; a pasta é compartilhada, não copiada.
Project-local .hermes/skills/ ou .agents/skills/ no repositório Não. Não. Git do projeto + hermes skills trust no host desejado.
Plugin-provided Plugin Hermes Depende do plugin e do perfil. Depende do plugin. Instalação/configuração do plugin, não clone de skills normal.

Gerenciar skills por perfil

A regra é sempre executar o comando no perfil que você quer inspecionar. O estado de skills não deve ser deduzido do perfil que está visível no Desktop ou do alias que você usou ontem.

# Inventário geral.
hermes profile list
hermes profile show chamados

# Skills do perfil chamados.
hermes -p chamados skills list
hermes -p chamados skills list --enabled-only
hermes -p chamados skills list --source builtin
hermes -p chamados skills list --source local
hermes -p chamados skills list --source hub

# Instalar ou atualizar no perfil chamados.
hermes -p chamados skills install <skill-id>
hermes -p chamados skills check
hermes -p chamados skills update

# A configuração de skills também é por profile.
hermes -p chamados config get skills --json

O Desktop usa a mesma autoridade do backend: Settings → Skills e o editor de capacidades de um Bot apontam para o perfil selecionado. Ao desmarcar uma skill, a UI salva a lista de desabilitadas naquele perfil. Ao instalar uma skill numa tela fixada a outro backend, a operação deve atingir o backend fixado; em builds antigas, confirme a conexão ativa antes de clicar em instalar.

Configuração não é enablement

Algumas skills têm parâmetros próprios, como chaves de API ou URLs. Esses valores ficam na configuração do perfil, em geral sob skills.config. Isso é diferente de habilitar ou desabilitar a skill.

  • Enablement: a skill está ou não na lista skills.disabled.
  • Skill config: valores necessários para a skill funcionar.
  • Toolset: ferramentas disponíveis ao agente, como terminal, web ou browser.
  • MCP: servidores e tools externos configurados para o perfil.

Clonar um perfil copia esses valores de configuração quando estão em config.yaml; isso não significa que as credenciais externas ou os binários necessários existam no novo host. Sempre valide com hermes doctor e uma execução real, sem inventar que “copiou, então funciona”.

Como compartilhar sem clonar tudo

Se você quer manter uma skill corporativa ou uma convenção de projeto igual em vários perfis, há alternativas melhores do que repetir clone a cada semana.

Diretórios externos

Configure uma pasta comum em cada perfil:

skills:
  external_dirs:
    - ~/.agents/skills
    - /opt/team-skills

Skills externas aparecem no índice e nos slash commands. Se o mesmo nome existir no diretório local do perfil, o local ganha precedência. Isso é compartilhamento vivo: se a pasta for gravável, um agente pode modificar a skill para todos os perfis que a apontam. Para uma biblioteca comum, prefira permissões de leitura e um processo explícito de publicação.

Skills no projeto

Um repositório pode carregar suas próprias skills em .hermes/skills/ ou .agents/skills/. Elas têm a maior precedência no projeto, mas o Hermes não as carrega automaticamente de um clone arbitrário. Confirme a confiança do projeto:

cd /caminho/do/projeto
hermes skills trust

# Para retirar a confiança.
hermes skills untrust

Essa estratégia é boa para procedimentos que pertencem ao código: release, testes, arquitetura e convenções do repositório. Não é o lugar para guardar segredo, token ou regra operacional geral da VPS. Depois da confiança, cada skill de projeto passa pelo scanner de segurança; conteúdo classificado como perigoso é colocado em quarentena e não entra no índice nem nos slash commands. Cron, API e ACP herdam a decisão de confiança, mas nunca pedem confirmação de forma interativa.

Distribuições de profile

Se você quer enviar um agente inteiro com SOUL, skills, cron e configuração versionados, use export/import para um movimento pontual ou uma distribuição baseada em Git para um agente que continuará recebendo versões. Exportação remove .env, auth.json e strings secretas; distribuição mantém memórias, sessões, autenticação e .env por máquina em vez de fingir que todos os hosts são um mesmo computador.

# Movimento pontual, sem credenciais.
hermes profile export chamados
hermes profile import ./chamados.tar.gz --name chamados

# Para uma distribuição versionada, use o fluxo de profile install/update.
hermes profile install github.com/<org>/<profile-repo> --alias
hermes profile update chamados

Em uma distribuição instalada, hermes profile update sobrescreve arquivos pertencentes à distribuição — como SOUL.md, skills/, cron/ e mcp.json — mas preserva memórias, sessões, autenticação e .env. O config.yaml também é preservado por padrão; use --force-config somente quando a substituição estiver explicitamente revisada. hermes profile info mostra a origem e a versão da distribuição.

Skill Sync entre dispositivos

hermes sync é outro sistema, não o mecanismo que mantém todos os profiles locais iguais. Ele foi desenhado para levar skills pessoais entre dispositivos e compartilhar skills com uma organização quando a conta tem acesso ao recurso.

hermes sync status
hermes sync enable minha-skill
hermes sync now
hermes sync disable minha-skill

A implementação atual aplica restrições importantes:

  • o recurso é opt-in e depende de gate de conta/base URL habilitados;
  • só skills agent-created/user-authored elegíveis entram no sync pessoal;
  • bundled skills e Hub-installed skills ficam fora desse fluxo;
  • o estado de opt-in é reconciliado entre dispositivos pelo manifesto remoto;
  • isso não transforma a skill em uma dependência live entre perfis locais nem sincroniza automaticamente as configurações de enablement, modelo, toolsets ou MCP de cada Bot.

A ressalva mais importante é o escopo: o Skill Sync remoto é indexado pelo owner da conta, não pelo nome do profile. Dois profiles que usam o mesmo owner podem publicar e puxar o mesmo conjunto de skills locais elegíveis. Portanto, ele pode misturar capacidades entre Bots se você ativar o recurso sem intenção explícita. Para perfis especializados, mantenha-o desligado ou use owners distintos; para compartilhar uma biblioteca controlada, prefira distribuição versionada ou external_dirs somente leitura.

Estado observado neste host Na probe de 26 de agosto de 2026, nesta VPS, hermes sync status retornou que o recurso ainda não está habilitado para a conta e que não há organização compartilhada aplicável. Portanto, atualmente o Skill Sync não é o mecanismo que está cuidando das suas skills; não conte com ele sem verificar o status em cada dispositivo.

Como isso aparece no Bot Mode

Bot Mode não cria uma segunda política de skills. Ele apresenta o profile como Bot e usa o backend do profile para listar, instalar e desabilitar capacidades.

  • New Agent → Fresh profile: recebe bundled skills do backend-alvo.
  • New Agent → Clone from: copia skills instaladas do perfil-alvo escolhido.
  • Create empty: cria sem bundled skills e mantém o opt-out futuro.
  • Edit Profile → Skills: altera enablement apenas no Bot/profile escolhido.
  • Capacidades: skills, toolsets e MCP têm controles separados.
  • Bot Chat: quando o perfil é gerenciado pelo Bot Mode, o backend pode injetar o protocolo de mensagens no chat canônico sem editar suas skills.

Se você cria um Bot chamado chamados a partir de default, ele começa com uma fotografia das capacidades de default. Se depois instala chamados-tjba somente em default, o Bot chamados não recebe a skill sozinho. Se você desabilita a skill em chamados, o perfil default continua habilitado. Essa assimetria é intencional: evita que uma mudança num especialista quebre outros agentes.

Recomendação para seus Bots

Para o seu uso com Mac e VPS, eu adotaria esta política:

Perfil/Bot Skills Política
mac-dev Bundled + coding + skills de projeto Local, focado em código e arquivos do Mac. Não precisa carregar skills de operação da VPS.
ops-vps Bundled mínimo + Docker/Linux/observabilidade Na VPS, com terminal e permissões adequados. Não clone credenciais do Mac sem necessidade.
chamados Clone inicial das skills relevantes ou perfil fresco + instalação explícita Depois da criação, tratar como agente especialista; revisar sua lista de skills e desabilitar ruído.
reviewer Skills de revisão e testes Perfil com capacidades de leitura e validação; não precisa herdar todas as skills de deploy.
dispatcher --no-skills ou conjunto mínimo Orquestra tarefas; não deve ter uma enciclopédia de procedimentos que não executa.

Crie um Bot clone quando você quer uma base inicial produtiva. Crie fresco quando quer uma fronteira de responsabilidade. Use Create empty quando quer um perfil mínimo e controlado. Não use clone-all para todos os Bots: isso replica credenciais, cron, plugins e configuração que provavelmente não pertencem ao novo papel.

Receitas práticas

Criar um especialista a partir de uma base

hermes profile create chamados \
  --clone-from default \
  --description "Atende o fluxo de chamados com regras e skills específicas."

hermes profile show chamados
hermes -p chamados doctor
hermes -p chamados skills list --enabled-only

Criar fresco e instalar somente o necessário

hermes profile create chamados \
  --description "Especialista em atendimento e triagem."

hermes -p chamados setup
hermes -p chamados skills list --source builtin
hermes -p chamados skills install <skill-especifica>
hermes -p chamados skills list --enabled-only

Criar Bot mínimo

hermes profile create dispatcher \
  --no-skills \
  --description "Orquestra e encaminha; não executa procedimentos especializados."

hermes -p dispatcher skills list
hermes -p dispatcher doctor

Comparar dois perfis sem misturar estado

for profile in default chamados; do
  printf '\n== %s ==\n' "$profile"
  hermes profile show "$profile"
  hermes -p "$profile" skills list --enabled-only
  hermes -p "$profile" config get skills --json
 done

Se quiser comparar em profundidade, exporte as listas para arquivos separados e faça um diff. Não compare apenas o número de skills: uma única skill de deploy com permissões amplas pode importar mais do que dezenas de skills de documentação.

Armadilhas comuns

  • “Fresh profile tem todas as minhas skills.” Não. Tem bundled skills; customizadas exigem clone, instalação ou fonte compartilhada.
  • “Skill instalada não está funcionando, então está desativada.” Pode apenas não ter sido carregada naquela rodada. Verifique skills.disabled e use a slash command.
  • “hermes update atualiza todos os meus Bots.” Ele mantém bundled skills elegíveis em todos os perfis, mas não distribui automaticamente suas skills customizadas.
  • “Desabilitei no Desktop e desliguei para sempre.” Você alterou o perfil-alvo. Outro profile continua com sua própria lista.
  • “External directory é cópia segura.” É compartilhamento de filesystem. Se for gravável, uma alteração pode afetar todos os perfis que o apontam.
  • “Clone copia o que está no projeto.” Skills project-local pertencem ao repositório e precisam ser confiadas no novo host.
  • “Clone é seguro porque é só configuração.” .env pode acompanhar o clone. Audite credenciais.
  • “Clone-all é a forma correta de criar qualquer Bot.” É uma cópia larga; pode levar cron, plugins e permissões que não combinam com o papel novo.
  • “O nome do Bot define o que ele pode fazer.” O que vale é o profile, seu HERMES_HOME, config, skills, toolsets, MCP e host.

Fontes e evidências consultadas

A implementação local foi consultada no branch main, revisão 68518c1f9bca11d9f5dbdf59ecf7e024cce057ba. A CLI reportou Hermes 0.20.5 (2026.8.19); os comandos de Profiles, Skills e Sync abaixo foram executados em 26 de agosto de 2026. O checkout informa commits disponíveis no upstream, portanto este snapshot é datado.

Documentação oficial

Código local confirmado

  • hermes_cli/profiles.py — cópia de skills/, arquivos de clone, marcador .no-bundled-skills, exclusão de histórico e seed por perfil.
  • hermes_cli/subcommands/profile.py — comandos de descrição, alias, rename, export/import e distribuição.
  • tools/skills_sync.py — manifest bundled, hashes, proteção de skills editadas e respeito a deleções.
  • hermes_cli/subcommands/skills.py — CLI de list, diff, reset, opt-out e opt-in.
  • tui_gateway/methods_profiles.py — snapshot de capacidades, skills.disabled, configuração por perfil e criação via Desktop/backend.
  • apps/desktop/src/plugins/hermes-bots/plugin.js — opções Fresh profile, Create empty, Clone from, configuração de skills e criação em backend remoto.
  • tools/skills_sync_client.py — Skill Sync pessoal, opt-in, elegibilidade e exclusão de bundled/Hub.

Comandos reais consultados nesta instalação

hermes profile --help
hermes profile create --help
hermes skills --help
hermes skills list --help
hermes sync --help
hermes sync status
hermes profile export --help
hermes profile install --help
hermes profile update --help
hermes skills opt-out --help
hermes --version

O estado local consultado indicou que o Skill Sync ainda não está habilitado para a conta desta VPS. A documentação descreve o recurso para quando ele estiver disponível, sem tratá-lo como se já estivesse administrando seus perfis.

A página de Hermes Bot Mode e Peer permanece focada em Bots, conexões, grupos e comunicação cross-machine. Esta página é a referência para a mecânica subjacente de Profiles e Skills.