Do curl ao bot respondendo no Telegram: instalação completa do agente open-source da Nous Research, documentada tela a tela durante uma instalação real — com cada decisão explicada.
O script instala as dependências que faltarem, clona o repositório, cria o ambiente virtual, registra o comando global hermes e, ao final, já emenda no assistente de configuração.
Item
Usuário normal
Como root
Código
~/.hermes/hermes-agent/
/usr/local/lib/hermes-agent/
Comando
~/.local/bin/hermes
/usr/local/bin/hermes
Dados e config
~/.hermes/
/root/.hermes/
💡 Prefira instalar com seu usuário normal (sem root). Funciona como root — esta instalação de exemplo foi assim —, mas tudo fica preso na conta do root.
02Tela: modo de setup
Logo após instalar, a primeira escolha. Navegue com ↑↓ e confirme com ENTER:
hermes setup
How would you like to set up Hermes? ↑↓ navigate ENTER/SPACE select ESC cancel→ (•) Quick Setup (Nous Portal) — free OAuth login, no API keys (recommended)
(o) Full setup — configure every provider, tool & option yourself
(o) Blank Slate — everything off except the bare minimum
Quick Setup (Nous Portal) ✅ — login OAuth gratuito, sem nenhuma API key. Já sai com modelo configurado (300+ disponíveis) e as ferramentas ativadas. É a opção "funciona em 2 minutos".
Full setup — pra quem já tem chaves próprias (OpenRouter, OpenAI, Anthropic, qualquer endpoint) e quer configurar item por item.
Blank Slate — tudo desligado, só o mínimo. Pra servidores onde se quer superfície mínima.
Nada aqui é definitivo: depois dá pra trocar tudo com hermes model, hermes tools ou rodando hermes setup de novo.
03Login no Nous Portal
O Quick Setup abre um link do Nous Portal pra autenticar via OAuth no navegador. Lá você escolhe o plano — o Free já serve: dá acesso aos modelos gratuitos e ao Tool Gateway. Depois de logar, o terminal continua sozinho.
⚠️ Se for copiar o link manualmente pro navegador, cuidado pra não colar texto de volta no terminal sem querer — o campo de busca da próxima tela captura tudo que for digitado (e aí a lista mostra "No matches"; Ctrl+U limpa).
04Tela: escolher o modelo padrão
Aparece uma lista grande de modelos com preços por milhão de tokens:
hermes setup — select default model
Select default model: In Out Cache ★ = on sale★ anthropic/claude-fable-5 $8.00 $40.00 $0.80 -20%★ anthropic/claude-sonnet-5 $1.60 $8.00 $0.16 -20%★ openai/gpt-5.6-terra $2.00 $12.00 $0.20 -20%★ deepseek/deepseek-v4-flash $0.06 $0.12 $0.01 -20%...— Upgrade at https://portal.nousresearch.com for paid models —Search:BACKSPACE edit Ctrl+U clear ESC stop
In / Out — preço por milhão de tokens de entrada / saída
Cache — preço do token de entrada cacheado (conversas longas ficam mais baratas)
★ e -20% — modelo em promoção
Modelos com preço são pagos — consomem créditos do portal
No plano free, digite free na busca pra filtrar os modelos 100% gratuitos (sufixo :free, desconto -100%):
Versão rápida especializada em finanças — evite como padrão geral
laguna-s-2.1:free (Poolside)
Focado em código
Escolha sugerida:upstage/solar-pro4:free. Troca-se a qualquer momento com hermes model ou /model dentro do chat.
05Tela: ferramentas gratuitas
O pool de ferramentas do Tool Gateway — serviços externos que o agente usa sem você precisar de conta ou API key em nenhum deles (o portal intermedeia). SPACE marca/desmarca, ENTER confirma:
hermes setup — tool pool
Your free Nous tool pool — pick the tools to enable:→ [✓] Web search & extract (Firecrawl)[✓] Image generation (FAL)
[✓] Speech-to-text (OpenAI Whisper)
[✓] Browser automation (Browser Use)
Web search & extract — pesquisa na internet e extração de páginas. Essencial.
Image generation — geração de imagens via FAL.ai.
Speech-to-text — transcrição de áudio; importante pro bot (áudios do Telegram) e modo voz.
Browser automation — o agente controla um navegador real. Único que instala algo pesado (Chromium).
Recomendação: deixar tudo marcado. Ferramenta ligada só é usada quando a tarefa pede. Pra mudar depois: hermes tools.
06Tela: terminal backend
Define onde o agente executa os comandos de shell que ele decidir rodar:
hermes setup — terminal backend
Select terminal backend:
(o) Local — run directly on this machine (default)
(o) Docker — isolated container with configurable resources
(o) Modal — serverless cloud sandbox
(o) SSH — run on a remote machine
(o) Daytona — persistent cloud development environment
(o) Vercel Sandbox — cloud microVM with snapshot persistence
(o) Singularity/Apptainer — HPC-friendly container
→ (•) Keep current (local)
Local — direto na máquina, sem isolamento. O agente mexe nos arquivos reais.
Docker — cada execução isolada num container. Mais seguro; exige Docker.
SSH — executa os comandos numa máquina remota (Hermes numa máquina operando outra).
Modal / Daytona / Vercel — sandboxes na nuvem; exigem conta nesses serviços.
Recomendação:Keep current (local). Pra começar numa VM dedicada, é o ideal.
⚠️ Rodando como root + backend local, o agente tem poder total na máquina. Pra adicionar isolamento depois: hermes config set terminal.backend docker.
07Tela: plataforma de mensagens?
hermes setup — messaging
Connect a messaging platform? (Telegram, Discord, etc.)→ (•) Set up messaging now (recommended)
(o) Skip — set up later with 'hermes setup gateway'
É o modo bot: falar com o agente pelo celular — mandar tarefas, receber respostas e áudios. Escolha Set up messaging now; se preferir terminar antes, Skip não perde nada (configura depois com hermes setup gateway).
08Tela: selecionar o Telegram
O Hermes fala com praticamente tudo — Telegram, WhatsApp, Discord, Slack, Signal, e-mail, SMS, Teams, Google Chat, Matrix, IRC, LINE, iMessage, WeChat, e até Home Assistant e ntfy. É seleção múltipla:
SPACE pra marcar [✓] — só posicionar a seta não seleciona!
ENTER pra confirmar
09Criar o bot do Telegram
hermes setup — telegram
◆ Telegram
How would you like to create your Telegram bot?
[1] Automatic (recommended)
Scan a QR code → confirm in Telegram → done.
No token copy-paste needed.
[2] Manual
Create a bot via @BotFather yourself and paste the token.
Choice [1/2] [1]:
[1] Automatic ✅ — o terminal mostra um QR code; escaneie, confirme no app, e o Hermes cria o bot e captura o token sozinho. O token nunca passa pela sua mão.
[2] Manual — você cria no @BotFather (/newbot) e cola o token. Use se o QR não renderizar (comum via SSH) ou se o bot já existe.
9.1 — O QR / link de pareamento
hermes setup — pairing
Contacting Hermes Telegram onboarding service...
✓ Pairing created
Rendering QR code...
Scan this QR code with your phone, or open the link below:
(Install 'qrcode' for a scannable QR code: pip install qrcode)Link: https://t.me/newbot/NousHostedHermesBot/hermes_xxxx_bot?name=...
Sem o pacote Python qrcode instalado, ele mostra só o link — abrir no navegador ou celular dá no mesmo resultado.
💡 Quer o QR desenhado no terminal? pip install qrcode antes do setup.
9.2 — Confirmando no Telegram
O Telegram abre o dialog Create Bot: o serviço da Nous pede permissão pra criar um bot em seu nome.
N
Create Bot
NousHostedHermesBot would like to create and manage a chatbot on your behalf.
Hermes Agent tutorial
@hermes_jq5aklx6rw5gvepn_bot
CancelCreate
Bot Name — nome de exibição, editável antes de criar (e depois via @BotFather → /setname)
Bot Username — endereço do bot (@..._bot), gerado automaticamente; não muda depois
Clique em Create e o terminal continua sozinho.
10✓ Installation Complete!
hermes setup — done
┌──────────────────────────────────┐
│ ✓ Installation Complete! │
└──────────────────────────────────┘📁 Your files:
Config: /root/.hermes/config.yaml
API Keys: /root/.hermes/.env
Data: /root/.hermes/cron/, sessions/, logs/
Code: /usr/local/lib/hermes-agent
🚀 Commands:
hermes Start chatting
hermes setup Configure API keys & settings
hermes config View/edit configuration
hermes gateway install Install gateway service (messaging + cron)
hermes update Update to latest version
⚡ 'hermes' was linked into /usr/local/bin — no shell reload needed.
Segredos: tokens do portal e do bot. Trate como senha!
cron/ sessions/ logs/
Tarefas agendadas, histórico de conversas, logs
Os comandos, traduzidos
Comando
Tradução
Pra que serve
hermes
Começar a conversar
Abre o chat com o agente no terminal. É o comando do dia a dia.
hermes setup
Configurar chaves e ajustes
Reabre o assistente completo (o mesmo desta instalação). Use pra trocar provedor, plano ou refazer algo.
hermes config
Ver/editar a configuração
Mostra a configuração atual; com hermes config set CHAVE VALOR altera um valor pontual sem abrir assistente.
hermes gateway install
Instalar o serviço do gateway
O pulo do gato pro bot: instala o Hermes como serviço do sistema, rodando 24/7 — o Telegram responde mesmo com o terminal fechado, e as tarefas agendadas (cron) executam sozinhas.
hermes update
Atualizar
Baixa e aplica a versão mais recente do Hermes.
E o aviso final significa: o comando hermesjá funciona agora, sem source ~/.bashrc.
11Primeiros testes
root@ubuntu26: ~
$ hermes # chat no terminal$ hermes doctor # diagnóstico, se algo estranhar
Prompts bons pra estrear o agente:
"Qual o uso de disco dessa máquina? Mostra os 5 diretórios maiores" — testa o terminal
"Pesquisa na web as novidades do MikroTik RouterOS e me resume" — testa a busca web
12Conhecendo a tela do chat
Rodando hermes, o chat abre com um banner cheio de informação:
hermes — chat
solar-pro4:free · Nous ResearchSession: 20260901_165010_e084a2Available Skillsautonomous-ai-agents: claude-code, codex, computer-use, ...
research: arxiv, competitor-news-monitor, llm-wiki
software-development: codebase-inspection, github, +9 more
23 tools · 54 skills · /help for commands⚠ 13 commits behind — run hermes update to update⚠ tirith security scanner enabled but not availableVocê: Está funcionando bem?
Hermes: Estou aqui e respondendo. Se quiser testar com alguma
tarefa específica — busca na web, um arquivo, código — é só mandar.
solar-pro4:free │ 14.9K/524.3K │ 3% │ 20 t/s
Toolsets e Skills — 23 ferramentas nativas e 54 skills de fábrica (o agente aprende novas com o uso — esse é o diferencial do Hermes)
Barra de status — 14.9K/524.3K | 3% é o uso da janela de contexto; 20 t/s a velocidade de geração
Aviso
Significado
13 commits behind
Existe versão mais nova; atualize quando quiser com hermes update
tirith ... not available
O scanner que analisa comandos perigosos não está instalado; o Hermes usa o modo mais simples (padrões). Nada quebra.
💡 hermes config set display.show_reasoning true mostra o raciocínio do modelo enquanto ele pensa.
13Bot no ar 24/7: o gateway
Até aqui o bot só responde com o Hermes aberto no terminal. Pra ficar sempre online, instala-se o gateway como serviço do systemd:
root@ubuntu26: ~
$ hermes gateway install
hermes gateway install — saída
Start the gateway now after installing the service? [Y/n]: y
Start the gateway automatically on login/boot with systemd? [Y/n]: y
Installing user systemd service to:
/root/.config/systemd/user/hermes-gateway.service
✓ User service installed and enabled!
Next steps:
hermes gateway start # Start the service
hermes gateway status # Check status
journalctl --user -u hermes-gateway -f # View logs
Enabling linger so the gateway survives SSH logout...
✓ Linger enabled — gateway will persist after logout✓ User service started
Traduzindo o que aconteceu:
Duas perguntas — iniciar agora? iniciar no boot? — responda y nas duas
Serviço instalado no systemd de usuário e habilitado
Linger ativado sozinho — sem isso, serviço de usuário morre no logout do SSH; com linger, sobrevive a logout e reboot
Serviço iniciado — bot no ar ✅
O serviço mantém o bot conectado, executa as tarefas agendadas (cron) e gerencia as outras plataformas de mensagem.
14Pareamento: quem pode usar o bot
Mande um "Oi" pro bot. Na primeira mensagem, ele não obedece — responde com um código:
Oi13:53 ✓✓
Hi~ I don't recognize you yet!
Here's your pairing code: DNZKR2T9
Ask the bot owner to run: hermes pairing approve telegram DNZKR2T913:53
Isso é um mecanismo de segurança: o bot é público no Telegram, mas só obedece usuários aprovados pelo dono. Ninguém usa seu agente — que tem acesso ao terminal da máquina! — sem sua autorização. No terminal, aprove:
root@ubuntu26: ~
$ hermes pairing approve telegram DNZKR2T9
saída
Approved! User Apolo (657431607) on telegram can now use the bot~
They'll be recognized automatically on their next message.
Pra autorizar outras pessoas (família, equipe do NOC), o ritual é o mesmo: a pessoa manda mensagem, recebe um código, e você aprova.
15Bot respondendo + home channel
Aprovado o pareamento, o bot conversa normalmente — e em português, se você falar em português. Junto vem o último aviso:
📬 No home channel is set for Telegram. A home channel is where Hermes delivers cron job results and cross-platform messages.
Type /sethome to make this chat your home channel, or ignore to skip.
13:54
Respondendo a: Tudo certo agora?
Oi! Sim, tá tudo funcionando por aqui. 😊
Precisa de alguma coisa específica? Posso ajudar com código, busca, escrita, organização, imagens... o que você precisar.
13:54
/sethome13:55 ✓✓
✅ Home channel set to Apolo (ID: 657431607).
Cron jobs and cross-platform messages will be delivered here.
13:55
O home channel é onde chegam as coisas que o agente faz por iniciativa própria — ex.: um relatório agendado ("todo dia às 8h me manda o resumo do Zabbix") cai ali. Digite /sethome no chat; pra mudar depois (ex.: pra um grupo da equipe), basta dar /sethome no outro chat.
16Vendo o agente trabalhar: modo verbose no Telegram
Por padrão, no Telegram você só recebe a resposta final — os comandos, leituras e buscas que o agente fez no meio ficam invisíveis. Mas dá pra ligar o progresso das ferramentas em tempo real: uma mensagem que vai se atualizando com cada comando shell, arquivo lido e busca feita, assim:
tool_progress_command true — habilita o comando /verbose dentro do Telegram (em mensageria ele vem desativado por padrão)
Depois disso, o /verbose no próprio chat alterna os níveis a qualquer momento:
Nível
O que aparece
off
Só a resposta final (o padrão)
new
Uma linha resumida por ferramenta nova
all
Ferramentas, comandos e progresso — o da imagem acima ✅
verbose
Tudo + argumentos e resultados detalhados
💡 Ótimo pra aprender (ver como o agente resolve) e pra auditar o que ele executa nos equipamentos. Pro uso normal, new é um bom meio-termo — o all enche o chat rapidinho.
🏁O que você montou
Em 15 passos, de uma VM Ubuntu limpa pra um agente de IA completo, rodando 24/7 e acessível pelo Telegram:
Hermes Agent instalado (comando hermes global)
Login gratuito no Nous Portal — sem API keys
Modelo padrão solar-pro4:free (custo zero)
Busca web, geração de imagem, transcrição e automação de navegador ativas
Bot do Telegram criado automaticamente, sem copiar token
Gateway como serviço systemd — sobrevive a logout e reboot
Pareamento aprovado — só usuários autorizados usam o bot
Home channel definido — entregas automáticas chegam no seu chat
Cola de comandos
referência rápida
hermes # chat no terminal
hermes -c # retomar última conversa
hermes model # trocar modelo
hermes tools # ligar/desligar ferramentas
hermes config edit # editar config no editor
hermes gateway status # estado do serviço do bot
journalctl --user -u hermes-gateway -f # logs do bot ao vivo
hermes pairing approve telegram CODIGO # autorizar novo usuário
hermes update # atualizar o Hermes
hermes doctor # diagnóstico
Próximos passos
Atualizar:hermes update (a instalação avisou que estava 13 commits atrás)
Testar pelo Telegram: peça algo que use a máquina — "qual o uso de disco? mostra os 5 maiores diretórios"
Criar uma tarefa agendada:"todo dia às 8h, verifica o disco e me manda um resumo" — o resultado chega no home channel
Explorar as skills:/help lista tudo; são 54 de fábrica e o agente aprende novas com o uso
Personalizar:/personality muda o jeito do bot; o SOUL.md define a personalidade permanente
Segurança: o ~/.hermes/.env guarda todos os tokens — trate como senha. Backend local + root = poder total; pra isolar: hermes config set terminal.backend docker
00Pré-requisitos
O instalador só precisa de git, curl e xz-utils já presentes. No Ubuntu/Debian:
O script instala as dependências que faltarem, clona o repositório, cria o ambiente virtual, registra o comando global hermes e, ao final, já emenda no assistente de configuração.
💡 Já instalou seguindo o guia da LLM gratuita? Não precisa reinstalar — rode hermes setup e siga daqui.
02Tela: modo de setup — escolha o Full setup
Aqui é onde este guia se separa do outro: em vez do Quick Setup, desça com ↓ até Full setup e confirme com ENTER — você vai configurar o provedor de LLM com a sua própria chave de API (OpenRouter, OpenAI, Anthropic ou qualquer endpoint compatível).
hermes setup
How would you like to set up Hermes? ↑↓ navigate ENTER/SPACE select ESC cancel
(o) Quick Setup (Nous Portal) — free OAuth login, no API keys
→ (•) Full setup — configure every provider, tool & option yourself
(o) Blank Slate — everything off except the bare minimum
03Tela: escolher o provedor de LLM
O Full setup abre uma lista com quase 40 provedores. Antes de escolher, entenda a diferença entre as duas formas de pagar:
Forma
Como funciona
API (chave)
Você cria uma chave no site do provedor e paga por token consumido (pré-pago ou pós-pago). Sem limite de plano — gastou, pagou. É o modelo clássico pra agentes.
Assinatura (subscription)
Usa o plano mensal fixo que você já paga no chat (ChatGPT Plus, Claude Pro...) via login OAuth. Custo previsível, mas com limites de uso do plano — e nem todo plano aguenta o consumo de um agente.
hermes setup — select provider
Select provider: ↑↓ navigate ENTER/SPACE select ESC cancel
(•) Nous Portal (300+ models with bundled tool use)→ (o) OpenRouter (Pay-per-use API aggregator)
(o) LM Studio (Local desktop app with built-in model server)
(o) Anthropic (Claude models via API key or Claude Code)
(o) OpenAI (ChatGPT/Codex subscription or direct OpenAI API)
(o) Google AI Studio (Native Gemini API)
(o) DeepSeek (V3, R1, coder, direct API)
(o) NVIDIA NIM (Nemotron models via build.nvidia.com)
(o) Ollama Cloud (Cloud-hosted open models)
(o) OpenCode (Zen pay-as-you-go, Go subscription, or free tier)
(o) Custom endpoint (enter URL manually)... (+27 provedores)
Os principais, explicados
Provedor
O que é
OpenAI ⭐
ChatGPT/Codex por assinatura ou API direta. O Codex funciona muito bem com a assinatura mensal — é o provedor usado neste tutorial e em todo o curso. Login OAuth com a conta do ChatGPT, sem criar chave.
Anthropic
Modelos Claude via chave de API ou Claude Code. Atenção: com a assinatura mensal (Claude Pro/Max) dificilmente vai funcionar bem pra uso em agente — os limites do plano estouram rápido. O caminho certo na Anthropic é a API ou a opção de gastos extras na assinatura.
Nous Portal
O provedor do guia gratuito: 300+ modelos e ferramentas embutidas num login só.
OpenRouter
Agregador pay-per-use: uma chave só dá acesso a centenas de modelos de todos os laboratórios. Ótimo pra testar vários modelos sem criar conta em cada um.
Google AI Studio
API nativa do Gemini — tem faixa gratuita generosa pra começar.
DeepSeek
API direta dos modelos DeepSeek — preço por token muito baixo.
LM Studio / Ollama
Modelos rodando na sua própria máquina (custo zero, privacidade total) — exige hardware bom.
Custom endpoint
Qualquer servidor compatível com a API da OpenAI — vale até pra um vLLM seu.
💡 Opções gratuitas ou quase: além do Nous Portal (guia da outra aba), o Google AI Studio tem free tier, o OpenCode tem plano free, o NVIDIA NIM dá créditos em build.nvidia.com, e LM Studio/Ollama rodam local de graça.
⚠️ Resumindo a escolha: tem assinatura do ChatGPT? Vá de OpenAI (Codex) — é a deste tutorial. Quer Claude? Use a API da Anthropic (ou gastos extras), não a assinatura pura. Quer flexibilidade de modelos? OpenRouter.
04OpenAI: assinatura ou API?
Escolhendo OpenAI, ele pergunta qual das duas formas usar:
hermes setup — OpenAI
Select OpenAI provider: ↑↓ navigate ENTER/SPACE select ESC cancel→ (•) ChatGPT or Codex Subscription
(o) OpenAI API
ChatGPT or Codex Subscription ✅ — usa a assinatura mensal que você já paga (Plus/Pro), via login OAuth. Sem criar chave, custo já incluso no plano. É a opção deste tutorial e do curso.
OpenAI API — chave de API da platform.openai.com, pagando por token. Use se preferir separar o consumo do agente da sua assinatura.
4.1 — Antes de logar: ativar o código de aparelho no ChatGPT
Como a VM não tem interface gráfica, o login da assinatura acontece por código de aparelho (device code) — e esse recurso vem desligado por padrão na sua conta. Ative antes, senão o login falha:
Abra o ChatGPT no navegador (chatgpt.com) → foto de perfil → Configurações
Menu Segurança e login
Desça até "Entrada segura com o ChatGPT"
Ligue a chave "Habilitar autorização por código de aparelho para o Codex"
Segurança e login
Entrada segura com o ChatGPT
Habilitar autorização por código de aparelho para o Codex
Usar o início de sessão com código de aparelho para ambientes remotos ou sem interface gráfica.
⚠️ O próprio ChatGPT avisa: códigos de aparelho podem ser alvo de phishing. Só digite códigos que você mesmo gerou no seu terminal, e nunca compartilhe um código de aparelho com ninguém.
05Login por código de aparelho
Confirmada a assinatura, o terminal inicia o login do Codex e mostra o passo a passo:
hermes setup — OpenAI login
Not logged into OpenAI Codex. Starting login...
Signing in to OpenAI Codex...
(Hermes creates its own session — won't affect Codex CLI or VS Code)
To continue, follow these steps:
1. Open this URL in your browser:
https://auth.openai.com/codex/device
2. Enter this code:
PITT-856OO
Waiting for sign-in... (press Ctrl+C to cancel)
Repare no aviso entre parênteses: o Hermes cria a própria sessão — não interfere no Codex CLI nem no VS Code, se você já usa.
Copie o linkhttps://auth.openai.com/codex/device e abra no navegador (pode ser no seu PC ou celular — não precisa ser na VM)
Faça login na conta do ChatGPT que tem a assinatura
Digite o código de 9 caracteres mostrado no terminal e clique em Continuar
>_
Use o seu código do aparelho para conceder acesso à CLI do Codex
Informe o código de 9 caracteres exibido no seu terminal
PITT-856OO
CancelarContinuar
A própria página repete o aviso de segurança: continue apenas se você iniciou esta sessão pelo terminal; se recebeu o link de outra pessoa, feche a aba. Autorizou? O terminal detecta sozinho e segue.
06Tela: escolher o modelo da assinatura
Logado, aparecem os modelos disponíveis no seu plano do ChatGPT:
A geração 5.6 da OpenAI vem em três camadas, como tamanhos de camiseta:
Modelo
Perfil
Preço API (in/out por Mtok)
gpt-5.6-sol ⭐
O topo de linha. Feito exatamente pro que um agente precisa: tarefas longas, planejamento, uso de ferramentas e persistência até terminar. É o modelo usado neste tutorial e em todo o curso.
$5 / $30
gpt-5.6-terra
O do dia a dia: equilíbrio entre qualidade e custo, nível do antigo GPT-5.5 pagando menos.
$2.50 / $15
gpt-5.6-luna
O rápido e barato, pra tarefas simples e em volume. É o que a própria OpenAI usa no auto-review do Codex.
$1 / $6
Variantes -900k — mesma inteligência, mas com a janela de contexto estendida (perto de 1 milhão de tokens, com compactação automática por volta dos 900 mil). Boas pra sessões muito longas; em compensação, consomem os limites do plano mais rápido.
gpt-5.5 / 5.4 / 5.4-mini — gerações anteriores, ainda disponíveis.
gpt-5.3-codex-spark — preview de latência baixíssima (mais de 1.000 tokens/s, contexto de 128k), feito pra codificação em tempo real.
Escolha do curso:gpt-5.6-sol (o primeiro da lista, já selecionado) → ENTER. Pra trocar depois: /model no chat.
07Daqui em diante, tudo igual ao guia gratuito
Com o modelo escolhido, o restante do setup é idêntico ao guia da LLM gratuita — as mesmas telas, as mesmas escolhas. Abaixo o resumo de cada uma; a explicação completa está na outra aba.
7.1 — Terminal backend: local
hermes setup — terminal backend
Select terminal backend:
(o) Local — run directly on this machine (default)
(o) Docker — isolated container with configurable resources
... (Modal, SSH, Daytona, Vercel, Singularity)→ (•) Keep current (local)
ENTER no Keep current (local) — o agente executa comandos direto na máquina. (Detalhes das outras opções no Passo 06 do guia gratuito.)
7.2 — Plataforma de mensagens: Telegram
hermes setup — platforms
Select platforms to configure: ↑↓ navigate SPACE toggle ENTER confirm→ [✓] Telegram (not configured)... (+26 plataformas: WhatsApp, Discord, Slack, Signal...)
Desça até Telegram, marque com SPACE (tem que aparecer o [✓]) e confirme com ENTER.
7.3 — Criar o bot: modo automático
Escolha [1] Automatic, abra o link/QR que aparecer, confirme o Create Bot no Telegram — o token vai direto pro Hermes. (Passo 09 do guia gratuito, com prints.)
7.4 — Instalação completa + bot 24/7
Aparece o ✓ Installation Complete! com os caminhos dos arquivos e os comandos principais (tabela traduzida no Passo 10 do guia gratuito). Depois, coloque o bot no ar como serviço:
root@ubuntu26: ~
$ hermes gateway install
Responda y nas duas perguntas — serviço systemd instalado, linger ativado, bot online mesmo após logout e reboot.
7.5 — Pareamento e home channel
Mande um "Oi" pro bot no Telegram → ele responde com um código de pareamento → aprove no terminal:
root@ubuntu26: ~
$ hermes pairing approve telegram SEU_CODIGO
E finalize mandando /sethome no chat do bot, pra ele virar o destino das entregas automáticas (cron e mensagens entre plataformas).
🏁O que você montou (versão LLM paga)
Hermes Agent instalado (comando hermes global)
Provedor OpenAI via assinatura ChatGPT/Codex — sem chave de API, custo já incluso no plano mensal
Autorização por código de aparelho ativada e login feito
Modelo padrão gpt-5.6-sol — o topo de linha pra trabalho agêntico, usado em todo o curso
Terminal backend local + bot do Telegram criado automaticamente
Gateway como serviço systemd (24/7) + pareamento aprovado + home channel definido
💡 Diferença prática pro guia gratuito: aqui o "cérebro" é o gpt-5.6-sol da sua assinatura — muito mais capaz que os modelos :free — mas as ferramentas (busca web, imagem, transcrição, navegador) do Tool Gateway da Nous não vêm junto; ative-as com hermes tools se quiser combinar as duas coisas (dá pra usar o Nous Portal só pras ferramentas e a OpenAI só pro modelo).
Além do terminal e do Telegram, o Hermes tem um dashboard web completo que roda na própria VM e você acessa de qualquer navegador da rede: chat com o agente, sessões, arquivos, modelos, logs, tarefas cron, skills, MCP, canais, pareamentos e configuração — tudo em interface gráfica.
01Criar as credenciais de acesso
A interface usa login e senha (basic auth) definidos no .env. Desde junho/2026, expor pra rede (0.0.0.0) exige autenticação configurada — sem isso o dashboard nem sobe público:
Troque o TroqueEstaSenhaForte123 por uma senha sua — vai ser o login da página. (Instalação sem root: use ~/.hermes/.env.)
02A pegadinha: serve ≠ dashboard
O instinto manda rodar hermes serve — mas ele é o backend headless (pra o app Desktop e API, sem página web). Se você acessar a porta no navegador, leva isto na cara:
navegador — http://10.0.0.12:9119
{"error":"Headless backend (hermes serve): web UI disabled —
use `hermes dashboard` for the browser UI."}
O próprio erro entrega a solução: a interface de navegador é outro comando, o hermes dashboard.
--host 0.0.0.0 — escuta em todas as interfaces (qualquer máquina da rede acessa; o padrão 127.0.0.1 seria só local)
--no-open — não tenta abrir navegador na VM (que não tem)
A primeira subida demora: ele compila a UI web. Nas próximas, --skip-build pula essa etapa.
💡 Deu erro de dependência? A UI web precisa de um extra do Python. Rode cd /usr/local/lib/hermes-agent && uv pip install -e ".[web,pty]" e tente de novo (o pty habilita a aba de Chat no navegador). E se o firewall ufw estiver ativo: ufw allow 9119/tcp.
04Acessar do navegador
De qualquer máquina da rede: http://IP-DA-VM:9119 → entre com o usuário e senha do Passo 01. A interface abre com o menu completo na lateral:
Dali dá pra conversar com o agente (mesmo modelo do terminal, com seletor de reasoning), gerenciar sessões e arquivos, ver logs, editar cron e skills, aprovar pareamentos e até atualizar o Hermes com um clique.
05Deixar rodando sempre (serviço systemd)
Diferente do gateway (que tem hermes gateway install), o dashboard ainda não tem instalador de serviço nativo — só --status e --stop pra gerenciar o processo vivo. Pra ele iniciar no boot e ressuscitar se cair, criamos o serviço na mão (a mesma receita que o gateway usa por baixo dos panos):
systemctl restart hermes-dashboard # reiniciar
journalctl -u hermes-dashboard -f # logs ao vivo
systemctl disable --now hermes-dashboard # desligar de vez
⚠️ Segurança: com 0.0.0.0, se a VM tiver IP público a interface do agente — que executa comandos como root! — fica exposta pra internet inteira, protegida só pela senha do basic auth. Em rede local/lab, tranquilo; com IP público, capriche na senha e considere restringir por firewall ou VPN (Tailscale).
O Hermes que sai da instalação é genérico. Esta aba mostra como moldar o agente: os arquivos de configuração, o SOUL.md (a alma dele), as personalidades — e um prompt pronto que faz o Hermes se auto-configurar como técnico de TI de infraestrutura, já com as skills do Fórum Telecom instaladas.
01O mapa dos arquivos de configuração
Tudo mora em ~/.hermes/ (na instalação root, /root/.hermes/):
Arquivo
O que controla
SOUL.md
Quem o agente É — identidade, tom, estilo. É a primeira coisa injetada no system prompt, em toda conversa, em qualquer plataforma.
config.yaml
Configuração geral: modelo padrão, backend de terminal, ferramentas, personalidades customizadas, aliases de modelo.
.env
Segredos: tokens, chaves de API, credenciais do dashboard. Trate como senha.
skills/
As skills instaladas — cada uma é uma pasta com um SKILL.md (e opcionalmente references/, templates/).
AGENTS.md(no projeto)
Contexto de projeto — fica no diretório do repositório/projeto, não no ~/.hermes. Arquitetura, convenções, o que não fazer. O Hermes também lê CLAUDE.md e .cursorrules se existirem.
💡 Regra de bolso da doc oficial: se a instrução vale em qualquer lugar, vai no SOUL.md; se pertence a um projeto, vai no AGENTS.md daquele projeto.
02SOUL.md — a alma do agente
O SOUL.md ocupa a posição nº 1 do system prompt: antes das ferramentas, da memória e das skills, o modelo lê quem ele é. O Hermes cria um padrão na instalação e nunca sobrescreve o seu — editar é seguro.
O que a documentação recomenda colocar (e não colocar):
✅ Pertence ao SOUL.md
❌ Não pertence
Tom e estilo de comunicação
Instruções de um projeto específico
Quão direto/cauteloso ser
Caminhos de arquivos e convenções de repo
Como lidar com incerteza
Detalhes de workflow temporário
O que evitar (bajulação, enrolação...)
Coisas que mudam toda semana
Pra editar na mão:
root@ubuntu26: ~
$ nano /root/.hermes/SOUL.md # edita — vale a partir da PRÓXIMA sessão (/new)
03Personalidades: o overlay temporário
Enquanto o SOUL.md é a voz permanente, o /personality aplica uma camada temporária por cima, só na sessão:
hermes — chat
Você: /personality technical → especialista técnico detalhadoVocê: /personality concise → respostas curtas e diretasVocê: /personality none → volta ao normal (SOUL.md puro)
Predefinidas: helpful, concise, technical, creative, teacher, philosopher, hype — e as zoeiras pirate, kawaii, catgirl, shakespeare, surfer, noir, uwu. 😄
Na prática: a mesma pergunta, 4 personalidades
Pergunta: "O ping pro gateway tá em 300ms, o que eu faço?"
/personality concise
Hermes: 1) `/ping 8.8.8.8` pra isolar se é o gateway ou a saída.
2) Checa CPU do roteador e tráfego na interface. 3) Se CPU alta,
procura loop ou flood. Provável: saturação de banda ou CPU.
/personality technical
Hermes: Latência de 300ms num gateway local indica fila (bufferbloat),
saturação do link ou CPU alta no equipamento. Diagnóstico em camadas:
(1) `/tool torch` na interface WAN pra ver quem consome banda;
(2) `/system resource monitor` — CPU acima de 80% sugere fastpath
desativado ou regra de firewall pesada; (3) teste com pacote de
1400 bytes e DF pra descartar fragmentação; (4) se MikroTik v7,
verifique se o queue type da interface é cake/fq_codel...
/personality teacher
Hermes: Ótima pergunta pra aprender diagnóstico! Pensa assim: ping
alto é como fila no mercado — ou tem gente demais (banda saturada),
ou o caixa tá lento (CPU do roteador). Vamos descobrir qual é o seu
caso? Primeiro, me diz: esse ping é da sua máquina pro gateway ou
do gateway pra internet? Isso muda tudo, e te explico por quê...
/personality pirate
Hermes: Arrr, marujo! 300ms é tempestade no convés! ⚓ Iça o
`/tool torch` e descobre que grumete tá devorando tua banda.
Se a CPU do leme passar de 80%, tem clandestino no porão —
provavelmente um loop amaldiçoado. Ao ataque! 🏴☠️
Criando as suas (config.yaml)
Personalidades customizadas entram no ~/.hermes/config.yaml — três exemplos prontos pro dia a dia de provedor:
~/.hermes/config.yaml
agent:
personalities:
plantao: >
Você está em modo plantão NOC. Respostas em 3 linhas no máximo,
só o essencial: causa provável, comando de verificação, ação.
Sem introdução, sem despedida. Português do Brasil.
cliente: >
Você está ajudando a explicar um problema técnico pra um CLIENTE
leigo. Zero jargão: nada de PPPoE, OLT, CCQ. Use analogias do
cotidiano, tom empático e paciente, e termine sempre com o
próximo passo concreto ("nosso técnico vai...").
professor-redes: >
Você está treinando um técnico júnior N1. Antes de dar a solução,
faça UMA pergunta que o leve a raciocinar. Depois explique o
conceito por trás (camada OSI envolvida, por que acontece).
Termine com um mini-desafio relacionado.
O uso: /personality plantao quando o bicho pega na madrugada, /personality cliente antes de redigir aquela mensagem pro assinante nervoso, /personality professor-redes pra treinar a equipe — e /personality none pra voltar ao normal.
04As skills de infra do Fórum Telecom
O Fórum Telecom mantém um repositório público com mais de 40 skills de operação de infraestrutura e telecom, prontas pro Hermes: github.com/clfigueiredo/hermes-infra-skills
Várias vêm com references/ (cheat-sheets de VRP/RouterOS, templates seguros de configuração, troubleshooting de ONU/ONT) — o agente consulta esses materiais na hora de agir. A instalação baixa só a pasta de skills de infra (forumtelecom/), sem o resto do repositório:
E dentro do chat: /reload-skills. Cada skill vira comando também — /mikrotik-ops, /zabbix-ops...
05O prompt de auto-configuração 🪄
Agora a mágica: em vez de fazer tudo na mão, peça pro próprio Hermes se configurar. Cole o prompt abaixo no chat (terminal, web ou Telegram) — ele reescreve o próprio SOUL.md como técnico de infra, clona o repositório, instala as skills e confirma:
prompt — cole no chat do Hermes
Configure você mesmo como meu assistente técnico de TI especializado em
infraestrutura. Execute nesta ordem:
1. Reescreva o arquivo ~/.hermes/SOUL.md com esta identidade:
- Você é o assistente técnico de um profissional de TI com foco em
infraestrutura de redes e provedores de internet (ISP).
- Especialidades: MikroTik, Cisco, Huawei, OLTs GPON/EPON, Zabbix,
Grafana, Proxmox, Docker, VMware, firewalls (pfSense, OPNsense,
FortiGate), Active Directory e Linux.
- Estilo: direto e objetivo, sempre em português do Brasil, comandos
prontos pra copiar, explica em uma linha o que cada comando faz.
- Segurança: NUNCA execute comando destrutivo (reboot, reset, delete,
format, remoção de config) sem me pedir confirmação explícita antes.
Em equipamento de produção, prefira comandos de leitura
(show/print/display) e proponha backup antes de qualquer mudança.
- Incerteza: quando não tiver certeza, diga claramente e proponha
como verificar, em vez de chutar.
2. Instale as skills de infraestrutura do Fórum Telecom (baixe SÓ a
pasta forumtelecom, sem o resto do repositório):
- mkdir -p ~/.hermes/skills
- curl -L https://github.com/clfigueiredo/hermes-infra-skills/archive/main.tar.gz | tar -xz -C ~/.hermes/skills --strip-components=3 hermes-infra-skills-main/.hermes/skills/forumtelecom
3. Liste o conteúdo de ~/.hermes/skills/forumtelecom pra confirmar
que as skills foram instaladas.
4. Ao final, me mostre o novo SOUL.md, me lembre de rodar
/reload-skills e inicie uma sessão nova, e resuma em 5 linhas
o que você agora sabe operar.
Depois que ele terminar, feche o ciclo você mesmo:
hermes — chat
Você: /reload-skills → carrega as 40+ skills novasVocê: /new → sessão nova, já com o SOUL.md de técnico de infraVocê: /skills → confere a lista instalada
💡 Teste de fogo: na sessão nova, pergunte "como você me ajudaria num rompimento de fibra com 200 clientes off?" — a resposta deve vir seca, em pt-BR, citando OLT, Zabbix e plano de ação. Se vier genérica demais, revise o SOUL.md.
5.1 — Variação: SOUL.md em modo livre 🔓
O prompt acima cria um agente cauteloso — bom pra produção. Mas em lab, homelab ou VM de estudo, ficar confirmando cada ação cansa. Se quiser um agente com autonomia total, troque o item "Segurança" do prompt por este:
trecho alternativo — modo livre
- Autonomia: você tem liberdade TOTAL pra operar este ambiente.
Pode alterar configurações, criar e excluir arquivos, VMs,
containers, regras de firewall e usuários, reiniciar serviços
e equipamentos (reboot) sem pedir confirmação. Aja primeiro
e me reporte depois, num resumo do que foi feito.
- Ainda assim, faça backup/export da configuração antes de
mudanças grandes — não pra me perguntar, mas pra poder
desfazer se algo der errado.
- Só me consulte antes de uma ação IRREVERSÍVEL sem backup
possível (formatar disco, apagar o único backup, resetar
equipamento de fábrica).
E tem um segundo cadeado: mesmo com o SOUL.md liberado, o portão de aprovação do próprio Hermes continua segurando comandos perigosos. Pra soltar de verdade:
hermes — chat
Você: /approvals off → desliga a confirmação de comandos perigosos— ou —Você: /approvals smart → meio-termo: só pede nos realmente críticosVocê: /yolo → alterna o modo YOLO (mesmo efeito do off)
⚠️ Modo livre + backend local + root = o agente pode fazer QUALQUER coisa na máquina, incluindo se destruir junto. Use essa combinação só em ambiente que você pode perder (lab, VM com snapshot). Em produção com clientes pendurados, fique no modo cauteloso — ou no máximo /approvals smart.
⚠️ O SOUL.md só vale a partir da próxima sessão (por isso o /new), e o Hermes tem um portão de aprovação pra escritas de skills/memória — se ele pedir aprovação durante a instalação, use /skills pending e /skills approve (ou confirme no chat).
Se o agente vai operar seus equipamentos via SSH, ele precisa das senhas — e colar senha no chat é péssima ideia (fica no histórico, no log, na sessão). O Cofre de Senhas Hermes resolve isso: um inventário local de equipamentos onde a senha fica criptografada e o Hermes usa a credencial sem nunca vê-la.
Interface pra cadastrar nome, IP, porta, usuário SSH, marca e senha de cada equipamento (SQLite local)
Criptografia
Senhas em AES-256-GCM, com a chave guardada separada do banco
Login protegido
Hash scrypt, CSRF, rate limit e cabeçalhos de segurança
Conector SSH
O Hermes executa comandos no equipamento e a senha é descriptografada só dentro do processo do conector — nunca aparece no chat nem na linha de comando
Validação de host
Exige validar o fingerprint SSH do equipamento antes de conectar (anti man-in-the-middle)
Integração Hermes
Instala a skill equipment-registry-ops e adiciona uma política obrigatória no SOUL.md (com backup do seu)
02O AGENTS.md como contrato de instalação
Este repositório é um exemplo real do conceito da aba Personalidade & Skills: o AGENTS.md dele não descreve um projeto de código — é um contrato que o Hermes deve seguir ao instalar. Entre as regras:
Ler o SKILL.md e o SECURITY.mdantes de executar qualquer coisa
Inspecionar o scripts/install.py — "não rode código não revisado às cegas"
Manter o bind padrão 127.0.0.1; rede privada só com autorização explícita; nunca expor à internet
Nunca pedir senha (admin ou de equipamento) pelo chat — o administrador define interativamente
Nunca transmitir equipment.db, encryption.key, backups ou logs com credenciais
Ou seja: quando você mandar o Hermes instalar, ele mesmo lê essas regras e se comporta.
03Mandando o Hermes instalar
Cole no chat (terminal, web ou Telegram):
prompt — cole no chat do Hermes
Clone o repositório https://github.com/clfigueiredo/cofre-senha-hermes
e instale este projeto seguindo o AGENTS.md, sem expor credenciais.
Mantenha a interface em localhost, salvo se eu autorizar
explicitamente acesso pela rede privada.
O agente vai revisar os arquivos e rodar python3 scripts/install.py, que é idempotente e faz tudo:
Valida a presença do uv e instala as dependências travadas (uv.lock)
Roda os testes automatizados antes de instalar
Instala o comando equipment-registry
Inicializa o armazenamento privado (~/.local/share/equipment-registry/, permissões 0700/0600)
Instala a skill equipment-registry-ops no perfil Hermes ativo
Adiciona a política obrigatória ao SOUL.md, preservando backup do seu
💡 Depois de instalar, abra uma sessão nova (/new) pra skill e a política carregarem. Pra deixar o cofre como serviço permanente, peça o install com --service (usa systemd --user).
Abra http://127.0.0.1:8787/setup e crie a senha administrativa (ou equipment-registry init no terminal, interativo). Nunca envie essa senha pelo chat — nem pro Hermes. Rodar init de novo é recusado; só --force redefine de propósito.
Acessando de outra máquina? Como o cofre fica em localhost por segurança, use um túnel SSH: ssh -L 8787:127.0.0.1:8787 root@IP-DA-VM e abra http://127.0.0.1:8787 no seu navegador.
05O uso no dia a dia
Cadastrados os equipamentos, o fluxo seguro que o Hermes usa:
referência
equipment-registry list # inventário, SEM senhas
equipment-registry fingerprint 'SW-CORE-01' # chave SSH que o equipamento apresenta
equipment-registry trust-host-key 'SW-CORE-01' --fingerprint 'SHA256:...' # confia após validar
equipment-registry run 'SW-CORE-01' --command 'show version' # executa via conector
equipment-registry backup --output ~/backups/cofre-$(date +%Y%m%d) # backup consistente (WAL-safe)
Na prática, com a skill carregada, você só conversa: "Hermes, roda um show version no SW-CORE-01" — ele consulta o cofre, conecta via conector e te traz a saída. A senha nunca passou pelo chat.
⚠️ Limites que o próprio projeto documenta: a criptografia não protege contra quem obtiver banco + chave juntos — faça backup criptografado dos dois em conjunto e nunca os publique. O padrão é 127.0.0.1; expor pra LAN privada exige flags explícitas de aceite de risco, e internet jamais. Pra ambientes de alta criticidade, o README recomenda um gerenciador de segredos dedicado.
Um Hermes só dá conta de muita coisa — mas às vezes você quer vários agentes diferentes na mesma máquina: um bot de NOC no Telegram, um de atendimento no WhatsApp, um pessoal. É pra isso que existem os perfis: cada um é um Hermes completo e isolado.
01O que um perfil isola
Cada perfil tem seu próprio diretório de dados e nada vaza entre eles:
Isolado por perfil
Na prática
Modelo e provedor
Um perfil no gpt-5.6-sol pago, outro no solar-pro4:free
SOUL.md e memória
Personalidades e histórias completamente diferentes
Skills
O bot de NOC com as skills de infra; o de atendimento só com atendimento-isp-n1-n2
Credenciais
Tokens de bot, OAuth e chaves separados (.env próprio)
Plataformas de mensagem
Cada perfil conecta nas suas — um no Telegram, outro no WhatsApp
Sessões, cron e kanban
Históricos e agendamentos independentes
02Comandos de perfil
referência
hermes profile create NOME # cria um perfil novo
hermes profile list # lista todos (marca o ativo)
hermes profile use NOME # define o perfil padrão
hermes profile rename VELHO NOVO # renomeia preservando os dados
hermes profile export NOME # empacota num arquivo portátil (backup/migração)
hermes profile import ARQUIVO # restaura um perfil exportado
hermes profile delete NOME # apaga perfil e diretório
E o truque do dia a dia — a flag -p roda qualquer comando num perfil específico sem trocar o padrão:
root@ubuntu26: ~
$ hermes -p noc chat # abre o chat do perfil "noc"$ hermes -p atendimento model # troca o modelo só do "atendimento"$ hermes -p noc gateway status # status do gateway do "noc"
(Também existe a variável HERMES_PROFILE=nome pra scripts. Prioridade: -p > variável > padrão do profile use.)
03O caso clássico: um bot por plataforma
Cada perfil roda o próprio gateway, como serviço separado (hermes-gateway-<perfil>.service). Então montar um agente no Telegram e outro no WhatsApp é assim:
root@ubuntu26: ~
# Bot 1: NOC no Telegram$ hermes profile create noc
$ hermes -p noc setup # modelo, ferramentas...$ hermes -p noc gateway setup # marca só o Telegram$ hermes -p noc gateway install # serviço 24/7 deste perfil# Bot 2: atendimento no WhatsApp$ hermes profile create atendimento
$ hermes -p atendimento setup
$ hermes -p atendimento gateway setup # marca só o WhatsApp$ hermes -p atendimento gateway install
Gerenciando a frota inteira:
referência
hermes gateway list # todos os perfis e se o gateway de cada um roda (PID)
hermes gateway --all start # sobe todos os gateways
hermes gateway --all restart # reinicia todos (útil após hermes update)
hermes gateway --all stop # para todos
04Exemplo de arquitetura pra um provedor
Perfil
Plataforma
Modelo
Skills / SOUL.md
noc
Telegram (equipe)
gpt-5.6-sol
Skills de infra do Fórum Telecom, SOUL.md técnico direto, cofre de senhas
atendimento
WhatsApp (clientes)
gpt-5.6-terra
atendimento-isp-n1-n2 + sgp-api, SOUL.md empático e sem jargão
adm
Telegram (gestor)
solar-pro4:free
agenda-ops + financeiro-ops, relatórios diários por cron
Três agentes, três públicos, três personalidades — na mesma VM, sem um enxergar os dados do outro.
💡 Extras úteis:/profile no chat mostra qual perfil está ativo; hermes dashboard --isolated abre a interface web restrita ao perfil ativo (sem visibilidade cruzada); e hermes profile export gera um arquivo que você importa em outra máquina — ótimo pra migrar um bot pronto pro servidor do cliente.
⚠️ Cada gateway ativo é um processo consumindo memória, e cada perfil conversa com o provedor de LLM por conta própria — perfis demais no mesmo plano de assinatura esgotam os limites mais rápido. Comece com dois ou três.
O Telegram é o caminho mais fácil, mas no Brasil quem manda é o WhatsApp — e o Hermes conecta nele também. Tem dois jeitos de configurar: pedindo pro próprio Hermes (o mais fácil) ou manual pelo shell. E antes de tudo, uma escolha importante de modalidade.
01As 3 modalidades (e o risco que você precisa conhecer)
Modalidade
Como funciona
Pra quem
Número dedicado via QR Code ⭐
Um chip/número só pro bot; o Hermes emula um WhatsApp Web (ponte Baileys, não oficial) — você escaneia um QR e pronto
Uso privado/lab — a recomendada pra começar
Seu WhatsApp pessoal (auto-chat)
O agente responde só na conversa com você mesmo, no seu próprio número
Teste rápido, usuário único
WhatsApp Business Cloud API
API oficial da Meta — exige conta Business verificada e webhook público
Atendimento comercial, produção
⚠️ O aviso que o próprio Hermes dá: a conexão por QR Code usa integração não oficial, com risco de restrição/banimento da conta pela Meta. Por isso: use número dedicado (nunca o seu pessoal em modo bot), não dispare mensagens em massa, e só responda conversas que o usuário iniciou. Pra atendimento comercial de verdade, prefira a API oficial.
02Caminho 1 — pedindo pro próprio Hermes 🪄
O jeito mais elegante: como o agente opera a própria máquina, ele configura a própria integração. Manda no chat (aqui foi pelo Telegram):
Olha só, vamos subir o whatsapp aqui no perfil?21:04 ✓✓
❓ Podemos adicionar o WhatsApp ao perfil default, mantendo o Telegram. Qual modalidade você quer? A conexão por QR Code usa uma integração não oficial, com risco de restrição da conta; para atendimento comercial, prefira a API oficial.
1. Número dedicado via QR Code, para uso privado (Recommended)
2. Meu WhatsApp pessoal, somente conversa comigo mesmo
3. WhatsApp Business Cloud API oficial
21:05
121:05 ✓✓
Repara que ele mesmo: mantém o Telegram junto (as plataformas convivem no mesmo perfil), explica o risco, e oferece as 3 modalidades. Escolhida a opção, ele ajusta a configuração e te entrega o QR Code pra escanear — no celular do número dedicado: WhatsApp → Configurações → Aparelhos conectados → Conectar aparelho.
💡 Se o QR vier quebrado no chat, peça: "me manda o QR como imagem" — ou use o caminho manual abaixo, que mostra o QR no terminal.
03Caminho 2 — manual pelo shell
O assistente dedicado cuida de tudo (pergunta o modo e desenha o QR no terminal):
root@ubuntu26: ~
$ hermes whatsapp
Ou, por baixo dos panos, a configuração fica no ~/.hermes/.env:
~/.hermes/.env
WHATSAPP_ENABLED=true
WHATSAPP_MODE=bot # bot = número dedicado · self = auto-chat pessoal
WHATSAPP_ALLOWED_USERS=5599999999999 # números autorizados (DDI+DDD+número), ou * pra todos
E ajustes finos no ~/.hermes/config.yaml:
~/.hermes/config.yaml
whatsapp:
unauthorized_dm_behavior: ignore # ignora desconhecidos (em vez de oferecer pareamento)
send_read_receipts: false # não marca como lido
Depois de escanear o QR, reinicie o gateway pra plataforma subir junto do serviço:
Sessão persistente: fica em ~/.hermes/platforms/whatsapp/session — proteja como senha (chmod 700); quem tiver esses arquivos "é" o seu WhatsApp. Pra reparear (trocou de número, sessão caiu): hermes whatsapp de novo.
Áudio dos dois lados: transcreve automaticamente os áudios recebidos (Whisper) e pode responder em áudio
Streaming: a resposta vai sendo editada em tempo real na mensagem; textos longos são divididos em blocos de 4.096 caracteres
Extras nativos: enquetes (/send-poll — o agente até faz perguntas de esclarecimento como enquete!) e localização (/send-location)
Home channel e pareamento funcionam igual ao Telegram: /sethome no chat, hermes pairing approve whatsapp CODIGO no terminal
Problema
Solução
QR não renderiza no terminal
Terminal com pelo menos 60 colunas de largura
Sessão não persiste
Verifique permissão de escrita no diretório da sessão
Parou depois de update do WhatsApp
hermes update + reparear com hermes whatsapp
💡 Combinando com a aba Perfis: o cenário ideal de provedor é o WhatsApp no perfil de atendimento (skill atendimento-isp-n1-n2, SOUL.md sem jargão) e o Telegram no perfil de NOC — cada bot com seu número, seu público e seu gateway.
Toda conversa com o agente vive dentro de uma janela de contexto (a "memória de curto prazo" do modelo). Quando ela enche, o Hermes compacta sozinho: resume o começo da conversa pra abrir espaço — e nesse resumo, detalhes se perdem sem você ficar sabendo. Esta aba mostra como assumir o controle: desativar a compactação automática e ser avisado no Telegram ao chegar em 50%.
01Como a compactação funciona (e o que ela come)
Por padrão, ao atingir 50% do limite de contexto o Hermes resume as mensagens antigas, preservando as 20 mais recentes e as 3 iniciais. É útil pra sessões infinitas — mas numa sessão de trabalho técnico (aquele troubleshooting longo com outputs de equipamento), o resumo pode engolir exatamente o detalhe que você ia precisar.
Pra acompanhar o consumo a qualquer momento, no chat:
hermes — chat
Você: /context → gráfico do uso da janela (com /context all: custo por skill)Você: /status → resumo da sessão, incluindo tokensVocê: /compress → compacta AGORA, manualmente, na hora que VOCÊ escolher
E o próprio Hermes já avisa nativamente quando a pressão sobe: barra ciano a partir de ~60% do limiar, amarela em ~85%.
02Desativando a compactação automática
root@ubuntu26: ~
$ hermes config set compression.enabled false
$ hermes gateway restart
Ajustes mais finos (no config.yaml, se preferir calibrar em vez de desligar):
~/.hermes/config.yaml
compression:
enabled: true
threshold: 0.50 # compacta ao atingir 50% do limite (suba pra 0.80 se quiser)
protect_last_n: 20 # mensagens recentes que nunca são resumidas
protect_first_n: 3 # mensagens iniciais fixadas
⚠️ Com a compactação desligada, a sessão que encher o contexto trava ou começa a errar — a responsabilidade de dar /compress ou /new na hora certa passa a ser sua. É exatamente pra isso que serve o vigia abaixo.
03O vigia de 50% — construído pelo próprio Hermes 🪄
Aqui o pulo do gato do curso: em vez de configurar na mão, pedimos pro agente construir a própria automação. O pedido, direto no Telegram:
criar um aviso para informar a sessão longa 50% e também não compactar sem avisar23:40 ✓✓
Respondendo a: Show, só me avisa quando a sessão chegar em 50%
Pronto, vigia ativo. Configuração final:
Monitor de sessão longa
– Cron: roda a cada 10 min, sem LLM (custo zero de tokens)
– Script: /root/.hermes/scripts/context_watch.py — lê o state.db em modo somente-leitura, estima os tokens da sessão ativa e compara com a janela do modelo
– Alertas: dispara no chat ao cruzar 50%, depois 75% e 90% — uma única vez por nível por sessão (ao abrir /new os níveis rearmam)
– Silêncio = tudo bem: sem nada a reportar, nenhuma mensagem é enviada
23:41
⚠️ Sessão longa: contexto estimado em ~N tokens (X% da janela). Compactação automática está desativada. Opções: /compress, /new ou continuar. ↑ a mensagem que chega ao cruzar 50% (testada com disparo forçado)23:42
Repare na arquitetura que ele escolheu sozinho — e que é a certa: cron sem LLM (script Python puro, custo zero), leitura somente-leitura do banco de sessões, alerta uma vez por nível (sem spam) e silêncio quando está tudo bem.
O prompt pra reproduzir no seu Hermes:
prompt — cole no chat do Hermes
Desative a compactação automática de contexto e crie um monitor de
sessão longa: um cron a cada 10 minutos, SEM usar LLM (script Python
puro, custo zero), que leia o banco de sessões em modo somente-leitura,
estime os tokens da sessão ativa e me avise AQUI no chat ao cruzar
50%, 75% e 90% da janela de contexto — uma única vez por nível por
sessão, rearmando quando eu abrir /new. Se não houver nada a reportar,
não envie nada. Na mensagem de alerta, lembre as opções: /compress,
/new ou continuar. Ao final, teste com um disparo forçado e me mostre
a mensagem.
💡 Limitações honestas (que o próprio agente declarou): a estimativa é por caracteres÷4, com margem de ~±15% — suficiente pra um aviso de 50%; e com granularidade de 10 min, o alerta pode chegar alguns minutos depois de cruzar o limiar. Pra precisão exata, o /context continua sendo a fonte da verdade.
💡 Recebeu o aviso? Suas opções: /compress here 10 (resume o passado preservando as 10 trocas recentes na íntegra), /save md + /new (arquiva a conversa e começa limpa), ou seguir mesmo assim até o próximo alerta.
Dentro do chat (terminal ou Telegram), digite / pra ver os comandos disponíveis — ou Ctrl+P pra abrir a paleta com busca. Abaixo, todos os comandos traduzidos, nas categorias da documentação oficial.
💡 Atalho de prefixo: não precisa digitar o comando inteiro — /h vira /help, /mod vira /model. E qualquer skill instalada também vira comando: /gif-search, /github...
Nenhum comando encontrado com esse filtro.
📌Sessão
Comando
O que faz
/new[nome]alias: /reset
Inicia uma sessão nova (ID e histórico zerados), com título opcional. Acrescente now ou -y pra pular a confirmação.
/clear
Limpa a tela e começa uma sessão do zero.
/history
Mostra o histórico da conversa atual.
/save<json|md|html> [arquivo]
Exporta a conversa atual pra arquivo (JSON, Markdown ou HTML).
/promptalias: /compose
Escreve o próximo prompt no seu editor de texto ($EDITOR), em Markdown, e envia ao salvar. Ótimo pra prompts longos.
/retry
Reenvia a última mensagem (tenta de novo a resposta).
/undo[N]
Desfaz as últimas N trocas de mensagem (padrão 1) e deixa pronto pra reescrever.
/title[nome]
Dá um título à sessão atual (facilita achar depois).
/compress[here [N] | focus tema]
Resume a conversa pra liberar espaço na janela de contexto; here N preserva as N trocas mais recentes na íntegra.
/rollback[número]
Lista ou restaura checkpoints do sistema de arquivos — desfaz alterações que o agente fez em arquivos.
/diff[staged|all|session]
Mostra as mudanças git feitas na sessão (--stat pro resumo).
/snapshotalias: /snap
Cria, restaura ou limpa snapshots do estado; sem argumento, lista todos.
/stop
Interrompe o turno atual e mata os processos em segundo plano.
/queue<prompt>alias: /q
Enfileira um prompt pro próximo turno, sem interromper o que está rodando.
/steer<texto>
Injeta uma orientação no meio do turno em andamento (entra após a próxima ferramenta) — "corrige o rumo" sem parar.
/goal<texto>
Define uma meta permanente que o agente persegue entre turnos; subcomandos status, pause, resume, clear.
/subgoal<texto>
Adiciona um critério à meta ativa; remove N e clear gerenciam.
/heartbeatevery <intervalo> <prompt>alias: /hb
Prompt recorrente automático (ex.: a cada 30m, "verifica os alertas do Zabbix").
/refine[foco]
Roda agora a revisão de auto-aprimoramento de memórias e skills do agente.
/review[instruções]
Dispara um subagente revisor independente pra avaliar o trabalho recente.
/moa<prompt>
Roda um prompt pelo preset Mixture of Agents (vários modelos combinados).
/resume[nome]
Retoma uma sessão anterior pelo nome.
/sessionsalias no TUI: /switch
Navegador interativo de sessões anteriores pra retomar qualquer uma.
/branch[nome]alias: /fork
Ramifica a sessão atual pra explorar um caminho alternativo sem perder o original.
/bg<prompt>
Roda um prompt numa sessão separada em segundo plano.
/btw<pergunta>
Pergunta paralela rápida sobre a conversa, sem interromper o trabalho atual.
/status
Info da sessão: modelo, provedor, perfil, ID, diretório, tokens, estado do agente.
/context[all]alias: /ctx
Gráfico do uso da janela de contexto; all detalha o custo por skill/toolset.
/agentsalias: /tasks
Mostra agentes ativos e tarefas rodando.
/worktree[new [nome]|list]
Cria ou inspeciona worktrees git isoladas (o agente trabalha numa cópia do repo).
/handoff<plataforma>
Transfere a sessão atual pra uma plataforma de mensagens — começa no terminal, continua no Telegram.
/journeyaliases: /learning, /memory-graph
Abre a linha do tempo de aprendizado do agente (o que ele aprendeu com o uso).
/redraw
Força o redesenho da interface (recupera de bagunça visual no terminal).
/egress[status]
Status do proxy de saída de rede do Docker.
⚙️Configuração
Comando
O que faz
/config
Mostra a configuração atual.
/model[modelo]
Mostra ou troca o modelo. Flags: --global (permanente), --session (só esta sessão), --once (só a próxima resposta), --provider.
/personality[nome]
Aplica uma personalidade (pirate, kawaii...); none volta ao normal.
/reasoning[nível]
Esforço de raciocínio: none → minimal → low → medium → high → xhigh → max → ultra; show/hide exibe ou oculta o raciocínio.
/verbose
Alterna o detalhe do progresso das ferramentas: off → new → all → verbose.
/focus[on|off]
Modo foco: reduz a saída visual pra ficar só o essencial.
/fast[normal|fast]
Modo rápido (processamento prioritário do provedor, quando disponível).
/skin
Mostra ou troca o tema visual do CLI.
/voice[on|off|tts]
Modo voz: falar com o agente e/ou ouvir as respostas em áudio.
/wake[on|off]
Ativa a escuta da palavra de ativação "Hey Hermes".
/yolo
Modo YOLO: pula as confirmações de comandos perigosos. Use com muito cuidado.
/approvals[manual|smart|off]
Política de aprovação de comandos perigosos (manual, inteligente ou desligada).
/busy[queue|steer|interrupt]
O que fazer se você mandar mensagem enquanto o agente trabalha: enfileirar, orientar ou interromper.
/statusbaralias: /sb
Liga/desliga a barra de status (contexto/modelo) no rodapé.
/battery[on|off]
Indicador de "bateria" colorido do contexto restante.
/timestamps[on|off]
Mostra horário [HH:MM] nas mensagens e no /history.
/indicator[kaomoji|emoji|...]
Estilo do indicador de "pensando" do TUI.
/footer[on|off]
Rodapé com metadados de runtime nas respostas do gateway.
/export[perfil]
Empacota o perfil num .tar.gz compartilhável (backup/migração).
/import<arquivo.tar.gz>
Instala um arquivo de perfil como novo perfil.
/codex-runtime[auto|on|off]
Liga/desliga o runtime do Codex app-server.
🧰Ferramentas & Skills
Comando
O que faz
/tools[list|enable|disable]
Lista, liga ou desliga ferramentas específicas.
/toolsets
Lista os conjuntos de ferramentas disponíveis.
/skills[browse|pending|approve...]
Busca, instala e gerencia skills; revisa e aprova as que o agente quer gravar.
/learn<fonte>
Ensina o agente: destila uma skill reutilizável de um diretório, URL, fluxo de trabalho ou anotações.
/memory[pending|approve|reject]
Revisa e aprova/rejeita as memórias que o agente quer gravar.
/bundles
Lista os pacotes (bundles) de skills configurados.
Revisa automações que o próprio agente sugeriu criar.
/blueprint[nome]alias: /bp
Cria automações a partir de modelos prontos (templates de cron).
/curator[status|run|pin|archive]
Manutenção automática das skills em segundo plano.
/plan[tarefa]
Escreve um plano de implementação em Markdown (sem executar nada).
/init[notas]
Gera ou atualiza o AGENTS.md a partir de um scan do repositório.
/browser[connect|status]
Gerencia a conexão com o Chromium local (automação de navegador).
/kanban<ação>
Quadro kanban de colaboração entre perfis/agentes (list, show, create...).
/reload-mcp
Recarrega os servidores MCP do config.yaml.
/reload-skills
Re-escaneia ~/.hermes/skills/ em busca de skills novas/removidas.
/reload
Recarrega as variáveis do .env na sessão atual.
/plugins
Lista os plugins instalados e o status de cada um.
/pet[list|slug]
Adota ou troca o mascote (petdex) do CLI. 🐾
/hatch<descrição>
Gera um mascote novinho a partir de uma descrição em texto.
ℹ️Informações
Comando
O que faz
/help[filtro]
Lista todos os comandos por categoria; /help voz filtra por texto.
/paletteatalho: Ctrl+P
Paleta de comandos com busca fuzzy — digita, filtra, Enter insere.
/usage
Uso de tokens, custos por categoria, duração da sessão e limites da conta.
/insights
Análises de uso dos últimos 30 dias.
/topup
Mostra o saldo Nous e abre o gerenciamento de créditos no portal.
/subscriptionalias: /upgrade
Vê o plano Nous atual e troca pelo navegador.
/version
Versão do Hermes, build e info do ambiente.
/whoami
Seu nível de acesso aos comandos (admin/usuário).
/profile
Perfil ativo e seu diretório home.
/platformsalias: /gateway
Status do gateway e das plataformas de mensagem conectadas.
/update
Atualiza o Hermes pra versão mais recente.
/paste
Anexa a imagem que está na área de transferência.
/image<caminho>
Anexa um arquivo de imagem local ao próximo prompt.
/copy[N]
Copia a última resposta (ou a N-ésima) pra área de transferência.
/debug
Envia um relatório de debug (sistema + logs) e devolve links compartilháveis.
/quitalias: /exit
Sai do CLI. Com --delete, apaga permanentemente o histórico da sessão.
💬Exclusivos do modo bot (Telegram etc.)
No Telegram/Discord/WhatsApp, quase todos os comandos acima também funcionam — e estes são só de lá:
Comando
O que faz
/sethomealias: /set-home
Define o chat atual como home channel — destino dos resultados de cron e mensagens entre plataformas.
/topic[off|help]
Só no Telegram: modo multi-sessão por tópicos no chat.
/approve[session|always]
Aprova e executa um comando perigoso pendente.
/deny
Rejeita o comando perigoso pendente.
/platform<list|pause|resume>
Opera as plataformas do gateway: pausar/retomar adaptadores.
/commands[página]
Navega todos os comandos e skills, paginado (bom pro celular).
/restart
Reinicia o gateway graciosamente (espera as execuções ativas terminarem).
/start
Comando padrão do protocolo do Telegram; primeiro contato com o bot.
⚠️ Comandos destrutivos pedem confirmação:/new, /reset, /clear, /undo e /quit --delete abrem um modal (Aprovar / Sempre aprovar / Cancelar). Pra pular: acrescente now ou -y — ex.: /reset now.