Pular para o conteúdo principal

Documentação oficial desta página · v0.20.6

Segredos

O Hermes consegue puxar chaves de API de gerenciadores de segredo externos na inicialização do processo, em vez de guardá-las em ~/.hermes/.env. O token de acesso ao gerenciador fica no .env; todas as outras chaves de provedor (OpenAI, Anthropic, OpenRouter etc.) podem ficar no gerenciador e girar de forma centralizada.

Suportados:

  • Bitwarden Secrets Manager — CLI bws, instalada sob demanda; o plano gratuito funciona.
  • 1Password — referências op:// pela CLI oficial op; autenticação por conta de serviço ou sessão do aplicativo.
  • Comando auxiliar — qualquer cofre com linha de comando (keepassxc-cli, secret-tool, pass, scripts próprios), por um comando configurado por você que imprime linhas CHAVE=VALOR.

Várias fontes ao mesmo tempo​

Dá para habilitar mais de uma fonte simultaneamente — por exemplo, um projeto do Bitwarden da equipe ao lado de um plugin de cofre pessoal. As fontes se combinam por variável, numa escada de precedência determinística:

  1. Seu .env e o shell vencem, por padrão. Uma fonte só substitui um valor existente quando o override_existing: true dela estiver definido (o Bitwarden usa true por padrão, para a rotação central funcionar).
  2. Fontes mapeadas vencem fontes em massa. Uma fonte em que você liga variáveis a referências explicitamente (um mapa env:) passa na frente de uma fonte que injeta um projeto inteiro de forma implícita, independentemente da ordem.
  3. A primeira fonte vence. Dentro do mesmo formato, a ordem da lista opcional secrets.sources (ou a ordem de registro) decide. Reivindicações posteriores de uma variável já tomada são puladas — com aviso na inicialização, nunca em silêncio.

O override_existing nunca deixa uma fonte sobrescrever uma variável que outra fonte já reivindicou, e nenhuma fonte consegue sobrescrever o token de acesso de outra (o BWS_ACCESS_TOKEN, por exemplo).

secrets:
sources: [bitwarden] # ordem explícita, opcional
bitwarden:
enabled: true
project_id: "..."

Toda credencial injetada por uma fonte é rotulada com a origem — os fluxos de configuração e o hermes model mostram (from Bitwarden) ao lado das chaves detectadas, então você sempre sabe de onde veio cada valor.

Perfis e cofres compartilhados​

Dois botões no nível do orquestrador tornam um cofre compartilhado seguro entre perfis:

  • secrets.preserve_existing — uma lista de nomes de variável cujo valor no .env ou no shell sempre vence, mesmo contra uma fonte com override_existing: true. Use para segredos de plataforma que mudam por perfil de propósito (o FEISHU_APP_SECRET, por exemplo), enquanto todo o resto gira de forma centralizada:

    secrets:
    preserve_existing: [FEISHU_APP_SECRET, TELEGRAM_BOT_TOKEN]
  • Apelido por perfil (ligado por padrão; secrets.profile_alias: false desliga) — quando o Hermes roda sob um perfil nomeado, um segredo do cofre chamado FOO_<PERFIL> (só com sufixos de credencial: *_API_KEY, *_TOKEN, *_SECRET, *_KEY, *_PASSWORD) também preenche o FOO canônico. Guarde TELEGRAM_BOT_TOKEN_MILLA no projeto compartilhado e os adaptadores do perfil milla — que leem o nome fixo TELEGRAM_BOT_TOKEN — recebem o valor certo sozinhos. Uma variável que o cofre fornece direto pelo nome canônico sempre vence o apelido.

Os dois valem para todas as fontes — as que vêm junto e as de plugin — porque vivem no orquestrador, não nos backends.

Acrescentar o seu backend​

Gerenciadores de segredo de terceiros vêm como plugins avulsos, não como mudanças no núcleo. Um backend herda de agent.secret_sources.base.SecretSource (um método obrigatório: fetch(cfg, home_path) -> FetchResult) e se registra com ctx.register_secret_source(MinhaFonte()) no register(ctx) do plugin. O orquestrador cuida de precedência, conflito, tempo limite e procedência — a sua fonte só busca. Guia completo, com as regras do contrato, o auxiliar de segurança para subprocessos e o kit de conformidade: Plugins de Fonte de Segredos.

O conjunto que vem junto é fechado de propósito (mesma política dos provedores de memória): Bitwarden e 1Password ficam no repositório. Todo o resto — Infisical, Proton Pass, HashiCorp Vault, AWS Secrets Manager, chaveiros do sistema — pertence a repositórios de plugin; compartilhe no Discord da Nous Research (#plugins-skills-and-skins).