hermes peer: deixe seus agentes trocarem DMs entre profiles e máquinas


Seu agente de pesquisa acabou de encontrar a resposta que você perseguia há uma hora — e agora você está prestes a fazer o trabalho mais tedioso da computação multi-agente: copiar o texto de uma janela de chat, trocar para o agente de codificação, colar e torcer para a formatação sobreviver. A v0.21.0 incluiu um comando que remove esse passo por completo: hermes peer permite que qualquer agente do Hermes envie mensagem a qualquer outro agente pelo handle, entre profiles e gateways — a partir da CLI ou de dentro de uma conversa. Seu bot de pesquisa pode entregar as descobertas direto ao seu bot de codificação, e a resposta volta para onde você pode lê-la.

O que hermes peer realmente faz

hermes peer é mensagem direta bot-a-bot entre gateways do Hermes. Em vez de você ser o mensageiro, um agente envia uma mensagem ao endereço de outro agente — <peer> ou <peer>/<agent> — e a mensagem é entregue na Bot Chat canônica daquele agente: a conversa durável que todo agente mantém para o tráfego bot-a-bot. Conversas entre agentes são inspecionáveis e persistentes, não fire-and-forget. É o gêmeo entre máquinas do hermes -p <bot> chat, funcionando sobre o API server de cada gateway.

Pré-requisitos

O peer para quem você envia mensagem precisa ser um gateway do Hermes com a plataforma api_server habilitada — é essa a superfície com a qual hermes peer fala. A API_SERVER_KEY dele é a credencial que você registra localmente; ela fica armazenada em ~/.hermes/.env, então a chave em si nunca é digitada num arquivo de config nem numa mensagem de chat.

Configure um peer

hermes peer add spark --url http://spark.lan:8377 --key <API_SERVER_KEY> --note "homelab gateway"
hermes peer list

hermes peer add (alias set) registra o gateway; hermes peer list (alias ls) mostra o que você tem; hermes peer remove spark (alias rm) o exclui. Se o seu peer roda vários profiles (um gateway multiplexado), você endereça um específico com uma barra: spark/researcher.

Envie uma mensagem

hermes peer dm spark "disk status on the homelab?"

hermes peer dm <peer>[/<agent>] "<mensagem>" entrega a mensagem na Bot Chat do agente remoto e imprime a resposta assim que o agente responde. Passe a mensagem pelo stdin se preferir (hermes peer dm spark < long-task.txt), ou use --json quando quiser saída legível por máquina para scripts.

Tarefas longas: run, status, stop

DMs bloqueiam até a resposta chegar — ótimo para perguntas rápidas, errado para uma análise de 20 minutos. Para isso, hermes peer tem um trio assíncrono:

hermes peer run spark "analyze this full log" --idempotency-key ticket-123
hermes peer status spark run_abc123
hermes peer stop spark run_abc123

hermes peer run inicia o turno de forma assíncrona e retorna um run ID. A --idempotency-key torna as novas tentativas seguras: se o seu script perder a resposta e reenviar com a mesma chave, o peer não executa a tarefa duas vezes. hermes peer status lê o progresso e a saída final da execução; hermes peer stop a cancela e devolve o que já existe.

Scripts com exit codes

O comando mantém exit codes amigáveis para scripts: 0 = ok, 1 = erro de entrega/peer, 2 = erro de uso. Combinado com --json, você pode ligar mensagens bot-a-bot à sua própria automação — um agente monitor que chama um agente de codificação, um job noturno que entrega o relatório a um bot de briefing, um vigia do homelab que te manda um DM quando o disco enche.

Onde isso se encaixa no cenário multi-agente

hermes peer complementa os group chats do Bot Mode (vários bots + você numa sala, embutidos no app desktop na v0.21.0) — o Bot Mode é a superfície social, hermes peer é a linha direta entre agentes em máquinas diferentes. Para trabalho paralelo dentro de uma sessão, a orquestração ao vivo de subagents continua sendo a ferramenta. E se você está ligando saída de cron a bots, o fix de entrega profile-own-bot é a peça complementar que garante que cada profile entregue pela própria identidade.