Você quer um agente de IA que possa receber mensagens pelo celular, que continue rodando depois que você fechar o notebook e volte sozinho após uma reinicialização? O Hermes Agent faz isso: ele funciona como um gateway com o qual você conversa pelo Telegram e, uma vez configurado corretamente, reinicia sozinho após uma falha ou queda de energia.
Montei a mesma configuração em duas máquinas, um VPS barato na nuvem e o Mac Mini na minha mesa, para poder documentar todo o caminho sem pular nada. É uma rota única. A máquina só muda o que você digita em dois lugares: o comando de instalação e a parte que mantém o gateway ativo. Todo o resto é idêntico.
Tudo abaixo foi executado no meu próprio hardware. O caminho Linux é um Hetzner CX23 (x86, 2 vCPU, 4GB RAM, 40GB de disco) no Ubuntu 24.04.4 LTS - o caminho Mac é um Mac Mini M4 no macOS 15. Ambos rodaram o Hermes Agent v0.16.0.
o que você terá no final
- Hermes Agent instalado, rodando como um usuário normal, não como root
- Um bot do Telegram que você pode enviar mensagens pelo celular, bloqueado apenas para sua conta
- O gateway rodando como um serviço gerenciado, para que volte após uma falha ou reinicialização
- No VPS, uma máquina protegida: SSH apenas com chave, sem login root, um firewall
escolha sua máquina
Um VPS é a opção mais barata. Qualquer máquina x86 com 4GB de RAM e cerca de 20GB de espaço livre em disco roda isso; o meu é um Hetzner CX23 a $7,79/mês (preços Hetzner EUA, 18/06/2026). Alugue-o e ele estará sempre ligado por definição.
Um Mac que você já possui é a outra opção. Qualquer Mac com chip Apple Silicon que fique ligado funciona, e o custo operacional é zero além do modelo. A troca é que a camada de durabilidade é mais complicada no macOS, o que abordo no final.
Você precisa de uma chave SSH na sua própria máquina (ssh-keygen -t ed25519 se não tiver uma), uma conta no Telegram e um modelo para o agente. Este guia aponta para o Nous Portal, que usa OAuth, então não há chave de API para manter em um arquivo. O Hermes precisa de um modelo com pelo menos 64k de contexto.
passo 1: prepare a máquina
em um VPS
Crie o servidor no seu provedor: Ubuntu 24.04, uma instância x86 (não Arm, veja a nota de custo) e cole sua chave pública SSH no momento da criação.
Uma máquina pública nova precisa de alguns minutos de proteção antes de colocar um agente nela. O secure-box.sh na receita faz isso em uma passada: um apt upgrade, um arquivo de swap de 2GB, um usuário sudo não root com sua chave, SSH apenas com chave com login root desativado e um firewall que permite apenas SSH. Edite as duas variáveis no topo, copie-o, execute-o como root:
1scp secure-box.sh root@<seu-ip-vps>:2ssh root@<seu-ip-vps> 'bash secure-box.sh'
Esta imagem Ubuntu veio com PasswordAuthentication definido como yes, mesmo eu tendo criado a máquina com uma chave SSH. O script desativa isso. Antes de fechar a sessão root, abra um segundo terminal e confirme que o novo usuário faz login, para que um erro não o bloqueie:
1ssh hermes@<seu-ip-vps>
A partir daqui, você é hermes, não root.
em um Mac
Nenhuma etapa de proteção. É sua máquina em sua própria rede, não uma máquina pública. Instale o Homebrew se não tiver (o instalador o usa na próxima etapa) e você estará pronto.
passo 2: instale o Hermes
A instalação é um comando, o mesmo em ambas as máquinas, executado como seu usuário normal:
1curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash2source ~/.bashrc3hermes --version
O instalador detecta seu SO e baixa sua própria cadeia de ferramentas (uv, Python 3.11, Node.js 22, ripgrep, ffmpeg, um Playwright Chromium para ferramentas de navegador) para ~/.hermes, então nunca toca no Python do sistema. Na minha máquina Hetzner, ele instalou o Hermes Agent v0.16.0 no Python 3.11.15.
Este é o passo pesado. No VPS, o disco foi de 1,2 GB usados para 7,8 GB, cerca de 6,6 GB, a maior parte do mecanismo do navegador e Node. Planeje 20 GB livres e pare de se preocupar. Execute-o em um comando SSH simples sem terminal; o instalador exibe "Assistente de configuração ignorado (nenhum terminal disponível)", o que é normal, a configuração é o próximo passo.
Em um Mac, o mesmo comando é executado, com uma peculiaridade: instale o Homebrew primeiro. Com o Homebrew presente, o instalador baixa o git e suas dependências sem solicitação. Sem ele, ele recorre às Ferramentas de Linha de Comando da Apple, que podem abrir uma caixa de diálogo do macOS que você precisa clicar, e uma caixa de diálogo não é boa via SSH (isso está no ramo macOS do instalador). Depois disso, é o mesmo fluxo acima.
passo 3: aponte para um modelo
1hermes setup --portal
Isso é OAuth contra o Nous Portal: ele imprime uma URL e um código, você aprova no navegador e agora a máquina conversa com um modelo sem chave de API em um arquivo. O Nous Portal tem um nível gratuito, e executei tudo em um modelo gratuito. Se preferir trazer seu próprio provedor, execute hermes model e escolha um; a chave então fica em ~/.hermes/.env.
passo 4: converse com ele
em um VPS
No momento em que seu SSH cai, uma sessão em primeiro plano morre com ele. O tmux mantém a sessão ativa: inicie dentro do tmux, desanexe e ele continua rodando.
1sudo apt-get install -y tmux2tmux new -s hermes # então, dentro: hermes
Desanexe com Ctrl-b e depois d, e reconecte mais tarde de qualquer lugar:
1ssh hermes@<seu-ip-vps>2tmux attach -t hermes
A primeira inicialização do agente interativo leva um momento. O meu levou cerca de 30 segundos carregando o modelo e as habilidades antes que o prompt aparecesse. Uma vez ativo, os comandos de barra funcionam.
/goal é o que vale a pena mostrar: ele define uma meta permanente na qual o agente trabalha ao longo das interações, com um modelo juiz verificando após cada interação se ela foi concluída.
1/goal verifique a RAM total e o disco livre desta máquina usando ferramentas de shell, depois relate ambos em uma linha e marque a meta como concluída
O meu executou o comando shell sozinho e retornou com "RAM total do VPS: 3,7 Gi, espaço livre em disco: 28 G" em cerca de 15 segundos. Esse é o agente usando suas próprias ferramentas.
Mantenha duas ideias separadas: o tmux mantém uma sessão interativa aberta em uma conexão SSH perdida, mas não após uma reinicialização. Para um gateway não supervisionado que sobrevive a uma reinicialização, você quer um serviço gerenciado, que é o passo 6.
em um Mac
Você está sentado na máquina, então pode executar hermes em um terminal. O tmux ainda ajuda se você fizer SSH do seu laptop, mas é opcional aqui.
passo 5: o gateway do Telegram
Esta parte é idêntica em ambas as máquinas. Crie um bot: envie uma mensagem para @BotFather no Telegram, envie /newbot e copie o token. Obtenha seu ID de usuário numérico de @userinfobot. Em seguida, configure o gateway:
1hermes gateway setup
Escolha Telegram, cole o token e defina os usuários permitidos para seu ID numérico para que apenas você possa conversar com ele. O token vai para ~/.hermes/.env, o resto para ~/.hermes/gateway.json.
A configuração apenas escreve a configuração. Ela não inicia nada, então o bot permanece em silêncio, e isso pega as pessoas de surpresa: nada está consultando o Telegram ainda. Inicie-o em primeiro plano uma vez para verificar se ele conecta:
1hermes gateway run
Você quer ver, no log:
1gateway.run: Conectando ao telegram...2[Telegram] Conectado ao Telegram (modo de polling)3gateway.run: ✓ telegram conectado
Modo de polling significa que o gateway entra em contato com o Telegram; nada se conecta à sua máquina, e é por isso que o firewall não precisa de nenhuma porta de entrada além do SSH. Envie uma mensagem para seu bot; ele deve responder. Em seguida, pare o gateway em primeiro plano com Ctrl-C, porque você não pode ter duas coisas consultando o mesmo token ao mesmo tempo, e o próximo passo o executa como um serviço.
passo 6: faça-o sobreviver a uma reinicialização
Este é o único lugar onde as duas máquinas divergem.
em um VPS: systemd
hermes gateway install registra o gateway como um serviço systemd para que ele reinicie em caso de falha e volte após uma reinicialização. Nesta versão, o instalador faz duas perguntas [Y/n] e não há sinalizador para ignorá-las. Execute-o em um comando SSH não interativo, a coisa natural ao criar um script para uma máquina, e ele não recebe resposta, aborta e não instala nada. Alimente as respostas no stdin:
1printf 'n\nY\n' | hermes gateway install
As duas perguntas são "iniciar o gateway agora?" e "iniciar automaticamente no login/inicialização?". O n e depois Y diz: não inicie agora, mas ative na inicialização. O instalador também ativa a persistência da sessão do usuário, que é o que permite que um serviço de usuário seja executado antes que você tenha feito login. Confirme, porque é isso que torna "sobrevive à reinicialização" verdadeiro e não apenas "sobrevive ao logout":
1loginctl show-user $USER -p Linger # quer: Linger=yes
Inicie-o e verifique:
1hermes gateway start2systemctl --user status hermes-gateway
Você quer "active (running)" e NRestarts=0. Na minha máquina, o gateway usou cerca de 280 MB e toda a máquina ficou em cerca de 556 MB, confortável em 4 GB.
Agora o teste real. Reinicie e não toque nele:
1sudo reboot
O meu voltou em cerca de 15 segundos, o gateway iniciou sozinho, reconectou ao Telegram e respondeu à próxima mensagem com o histórico da conversa anterior à reinicialização intacto. Esse é o objetivo principal.
em um Mac: launchd e um watchdog
O macOS usa launchd, não systemd, e há uma armadilha. No macOS 15 com Hermes v0.16.0, hermes gateway start pode falhar ao registrar o serviço launchd e recorrer, sem avisar, a um processo em segundo plano não supervisionado. Você vê isso:
1Falha no bootstrap: 5: Erro de entrada/saída2⚠ o launchd não pode gerenciar o gateway nesta versão do macOS (launchctl exit 5)3✓ Gateway iniciado como um processo em segundo plano4 Ele NÃO iniciará automaticamente no login nem reiniciará automaticamente em caso de falha.
Se você tinha um trabalho launchd funcionando antes, o comando o descarregou, e o fallback funciona bem até a primeira falha ou reinicialização, então seu agente desaparece sem nada para avisá-lo. O launchctl bruto funciona onde a CLI falha, inclusive via SSH:
1launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist2launchctl print gui/$(id -u)/ai.hermes.gateway | grep state # quer: state = running
O plist inicia o gateway no login, mas não o reinicia em caso de falha. Um watchdog cron fecha ambas as lacunas, e o cron é executado na inicialização sem necessidade de login. A receita fornece gateway-watchdog.sh; ele verifica a cada 5 minutos se o processo do gateway está ativo e o reinicializa se não estiver. Instale-o em um agendamento:
1(crontab -l 2>/dev/null; echo '*/5 * * * * $HOME/scripts/gateway-watchdog.sh >/dev/null 2>&1') | crontab -
Eu vi esta sequência recuperar um gateway rebaixado no meu próprio Mac Mini. Reinicie-o e confirme que o gateway está de volta em cinco minutos sem fazer login.
verifique sua configuração
- O serviço está ativo:
systemctl --user status hermes-gatewayno Linux (active (running)), oulaunchctl print gui/$(id -u)/ai.hermes.gateway | grep stateno macOS (state = running) - Envie uma mensagem para seu bot: ele responde a você e ignora qualquer pessoa que não esteja em seus usuários permitidos
- No Linux,
loginctl show-user [$USER](https://x.com/search?q=%24USER&src=cashtag_click) -p Lingerlê Linger=yes - Reinicie a máquina, espere, envie uma mensagem para o bot novamente sem fazer login: ele responde
custo
No VPS, a máquina é o único gasto. O meu é um Hetzner CX23 a $0,012/hora, limitado a $7,79/mês (preços Hetzner EUA, 18/06/2026; o CX22 da UE tem a mesma configuração e é mais barato).
No Mac, é uma máquina que você já possui, zero serviços extras. O modelo é gratuito no nível gratuito do Nous Portal em ambos os casos.
Aqui, a memória não é o limite: o gateway usou cerca de 280 MB, toda a máquina cerca de 556 MB, então 1 GB de RAM é suficiente. O disco é o verdadeiro limite: a instalação tem cerca de 6,6 GB, então uma imagem de 1 GB ou 10 GB é apertada, dê a ela 20 GB. E use x86, é a escolha segura.
execute você mesmo, e o que vem a seguir
Ambas as máquinas têm uma receita completa com os scripts exatos, executáveis como estão:
- O caminho VPS: cheap-vps
- O caminho Mac: mac-mini-24-7
Você agora tem um agente sempre ativo no Telegram que sobrevive a uma reinicialização.
O próximo Flightplan se baseia nisso: trabalhos agendados que enviam mensagens apenas quando algo é importante, um espaço de trabalho sincronizado com git que o agente lê e escreve, e o fluxo de rascunho e aprovação que mantém um humano em cada ação pública.
Obrigado por ler





