Hermes Flightplan #1: La guida definitiva per creare un agente AI su Telegram sempre attivo (Codice completo copia-incolla)

@witcheer
INGLESE4 settimane fa · 22 giu 2026
111K
232
34
5
759

TL;DR

Questa guida fornisce una procedura dettagliata per distribuire l'agente AI Hermes su un VPS o Mac, includendo l'integrazione con Telegram, il ripristino automatico dopo i crash e una configurazione sicura tramite Nous Portal.

Vuoi un agente AI a cui puoi mandare messaggi dal telefono, che continui a funzionare anche dopo aver chiuso il portatile e che si riavvii da solo dopo un riavvio? Hermes Agent fa proprio questo: funziona come un gateway con cui parli tramite Telegram e, una volta configurato correttamente, si riavvia da solo dopo un crash o un'interruzione di corrente.

Ho configurato la stessa identica configurazione su due macchine, un VPS cloud economico e un Mac Mini sulla mia scrivania, in modo da poter scrivere l'intero percorso senza saltare nulla. È un unico percorso. La macchina cambia solo in due punti: il comando di installazione e la parte che mantiene attivo il gateway. Tutto il resto è identico.

Tutto ciò che segue è stato eseguito sul mio hardware. Il percorso Linux è un Hetzner CX23 (x86, 2 vCPU, 4 GB di RAM, 40 GB di disco) su Ubuntu 24.04.4 LTS - il percorso Mac è un Mac Mini M4 su macOS 15. Entrambi eseguivano Hermes Agent v0.16.0.

Cosa avrai alla fine

  • Hermes Agent installato, eseguito come utente normale, non come root
  • Un bot Telegram a cui mandi messaggi dal telefono, bloccato solo per il tuo account
  • Il gateway eseguito come servizio gestito, in modo che si riavvii dopo un crash o un riavvio
  • Sul VPS, una macchina blindata: solo accesso SSH con chiave, nessun login come root, un firewall

Scegli la tua macchina

Un VPS è il modo più economico. Qualsiasi macchina x86 con 4 GB di RAM e circa 20 GB di spazio libero sul disco può eseguirlo; la mia è un Hetzner CX23 a $7,79/mese (prezzi Hetzner USA, 18/06/2026). Noleggialo ed è sempre acceso per definizione.

Un Mac che già possiedi è l'altra opzione. Qualsiasi Mac con chip Apple Silicon che rimane acceso funziona e il costo di gestione è zero oltre al modello. Il compromesso è che il livello di durabilità è più complesso su macOS, cosa che tratto alla fine.

Hai bisogno di una chiave SSH sulla tua macchina (ssh-keygen -t ed25519 se non ne hai una), un account Telegram e un modello per l'agente. Questa guida punta a Nous Portal, che utilizza OAuth, quindi non c'è una chiave API da tenere in un file. Hermes ha bisogno di un modello con almeno 64k di contesto.

Passo 1: prepara la macchina

su un VPS

Crea il server dal tuo provider: Ubuntu 24.04, un'istanza x86 (non Arm, vedi la nota sui costi) e incolla la tua chiave pubblica SSH al momento della creazione.

Una nuova macchina pubblica ha bisogno di qualche minuto di blindatura prima di metterci un agente. Lo script secure-box.sh nella ricetta fa tutto in un colpo solo: un aggiornamento apt, un file di swap da 2 GB, un utente sudo non root con la tua chiave, SSH solo con chiave con login root disattivato e un firewall che permette solo SSH. Modifica le due variabili all'inizio, copialo, eseguilo come root:

bash
1scp secure-box.sh root@<indirizzo-ip-del-tuo-vps>:
2ssh root@<indirizzo-ip-del-tuo-vps> 'bash secure-box.sh'

Questa immagine Ubuntu aveva PasswordAuthentication impostato su yes, anche se ho creato la macchina con una chiave SSH. Lo script lo disattiva. Prima di chiudere la sessione root, apri un secondo terminale e conferma che il nuovo utente riesca ad accedere, in modo che un errore non ti blocchi fuori:

bash
1ssh hermes@<indirizzo-ip-del-tuo-vps>

Da qui in poi sei hermes, non root.

su un Mac

Nessuna blindatura. È la tua macchina sulla tua rete, non una macchina pubblica. Installa Homebrew se non ce l'hai (il programma di installazione lo usa nel passaggio successivo) e sei pronto.

Passo 2: installa Hermes

L'installazione è un unico comando, uguale su entrambe le macchine, eseguito come utente normale:

bash
1curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
2source ~/.bashrc
3hermes --version

Il programma di installazione rileva il tuo sistema operativo e scarica la propria toolchain (uv, Python 3.11, Node.js 22, ripgrep, ffmpeg, un Playwright Chromium per gli strumenti del browser) in ~/.hermes, quindi non tocca mai il Python di sistema. Sul mio Hetzner ha installato Hermes Agent v0.16.0 su Python 3.11.15.

Questo è il passaggio pesante. Sul VPS ha portato il disco da 1,2 GB usati a 7,8 GB, circa 6,6 GB, la maggior parte dei quali è il motore del browser e Node. Prevedi 20 GB liberi e smetti di preoccuparti. Eseguilo con un semplice comando SSH senza terminale, il programma di installazione stampa "Setup wizard skipped (no terminal available)", il che va bene, la configurazione è il passaggio successivo.

Su un Mac lo stesso comando viene eseguito, con un piccolo intoppo: installa prima Homebrew. Con Homebrew presente, il programma di installazione scarica git e le sue dipendenze senza chiedere nulla. Senza, ricade sugli Apple Command Line Tools, che possono aprire una finestra di dialogo di macOS che devi cliccare, e una finestra di dialogo non va bene su SSH (questo è nel ramo macOS del programma di installazione). Dopodiché è lo stesso flusso di cui sopra.

Passo 3: puntalo a un modello

bash
1hermes setup --portal

Questo è OAuth contro Nous Portal: stampa un URL e un codice, lo approvi nel browser e ora la macchina parla con un modello senza una chiave API in un file. Nous Portal ha un livello gratuito e ho eseguito l'intera cosa su un modello gratuito. Se preferisci usare il tuo provider, esegui hermes model e scegline uno; la chiave finirà in ~/.hermes/.env.

Passo 4: parlaci

su un VPS

Nel momento in cui la tua connessione SSH cade, una sessione in primo piano muore con essa. tmux mantiene la sessione attiva: avvia dentro tmux, stacca e continua a funzionare.

bash
1sudo apt-get install -y tmux
2tmux new -s hermes # poi, dentro: hermes

Stacca con Ctrl-b e poi d, e riconnettiti più tardi da qualsiasi luogo:

bash
1ssh hermes@<indirizzo-ip-del-tuo-vps>
2tmux attach -t hermes

Il primo avvio dell'agente interattivo richiede un momento. Il mio ha impiegato circa 30 secondi per caricare il modello e le abilità prima che apparisse il prompt. Una volta avviato, i comandi con barra funzionano.

/goal è quello che vale la pena mostrare: imposta un obiettivo permanente su cui l'agente lavora attraverso i turni, con un modello giudice che controlla dopo ogni turno se è stato raggiunto.

bash
1/goal controlla la RAM totale e il disco libero di questa macchina usando gli strumenti della shell, poi riporta entrambi su una riga e segna l'obiettivo come completato

Il mio ha eseguito il comando shell da solo ed è tornato con "RAM totale VPS: 3.7 GiB, spazio libero su disco: 28 GB" in circa 15 secondi. Questo è l'agente che usa i propri strumenti.

Tieni a mente due concetti: tmux mantiene una sessione interattiva aperta attraverso una connessione SSH caduta, ma non attraverso un riavvio. Per un gateway senza supervisione che sopravvive a un riavvio, vuoi un servizio gestito, che è il passo 6.

su un Mac

Sei seduto davanti alla macchina, quindi puoi eseguire hermes in un terminale. tmux aiuta comunque se ti connetti via SSH dal tuo portatile, ma qui è opzionale.

Passo 5: il gateway Telegram

Questa parte è identica su entrambe le macchine. Crea un bot: manda un messaggio a @BotFather su Telegram, invia /newbot e copia il token. Ottieni il tuo ID utente numerico da @userinfobot. Poi configura il gateway:

bash
1hermes gateway setup

Scegli Telegram, incolla il token e imposta gli utenti consentiti sul tuo ID numerico in modo che solo tu possa parlarci. Il token finisce in ~/.hermes/.env, il resto in ~/.hermes/gateway.json.

La configurazione scrive solo la configurazione. Non avvia nulla, quindi il bot rimane in silenzio, e questo coglie di sorpresa molte persone: niente sta ancora interrogando Telegram. Avvialo in primo piano una volta per verificare che si connetta:

bash
1hermes gateway run

Vuoi vedere, nel log:

bash
1gateway.run: Connessione a Telegram...
2[Telegram] Connesso a Telegram (modalità polling)
3gateway.run: ✓ telegram connesso

La modalità polling significa che il gateway contatta Telegram; niente si connette alla tua macchina, motivo per cui il firewall non ha bisogno di porte in entrata oltre alla SSH. Manda un messaggio al tuo bot; dovrebbe rispondere. Poi ferma il gateway in primo piano con Ctrl-C, perché non puoi avere due cose che interrogano lo stesso token contemporaneamente, e il passo successivo lo esegue come servizio.

Passo 6: fallo sopravvivere a un riavvio

Questo è l'unico punto in cui le due macchine divergono.

su un VPS: systemd

hermes gateway install registra il gateway come servizio systemd in modo che si riavvii in caso di crash e torni dopo un riavvio. In questa versione, il programma di installazione fa due domande [Y/n] e non c'è un flag per saltarle. Eseguilo con un comando SSH non interattivo, la cosa naturale quando si scripta una macchina, e non riceve risposta, si interrompe e non installa nulla. Fornisci le risposte su stdin:

bash
1printf 'n\nY\n' | hermes gateway install

Le due domande sono "avviare il gateway ora?" e "avviare automaticamente all'accesso/avvio?". La n seguita da Y dice: non avviarlo in questo momento, ma abilitalo all'avvio. Il programma di installazione attiva anche il "lingering" della sessione utente, che è ciò che consente a un servizio utente di essere eseguito prima che tu abbia effettuato l'accesso. Confermalo, perché questo è ciò che rende vero "sopravvive al riavvio" e non solo "sopravvive al logout":

bash
1loginctl show-user $USER -p Linger # vuoi: Linger=yes

Avvialo e verificalo:

bash
1hermes gateway start
2systemctl --user status hermes-gateway

Vuoi "active (running)" e "NRestarts=0". Sulla mia macchina, il gateway utilizzava circa 280 MB e l'intera macchina era a circa 556 MB, comoda su 4 GB.

Ora il vero test. Riavvia e non toccarlo:

bash
1sudo reboot

Il mio è tornato in circa 15 secondi, il gateway si è avviato da solo, si è riconnesso a Telegram e ha risposto al messaggio successivo con la cronologia della conversazione precedente al riavvio intatta. Questo è il punto centrale.

su un Mac: launchd e un watchdog

macOS usa launchd, non systemd, e c'è una trappola. Su macOS 15 con Hermes v0.16.0, hermes gateway start può non riuscire a registrare il servizio launchd e ripiegare, senza dirtelo, su un processo in background non supervisionato. Vedi questo:

bash
1Bootstrap fallito: 5: Errore di input/output
2⚠ launchd non può gestire il gateway su questa versione di macOS (launchctl exit 5)
3✓ Avviato il gateway come processo in background
4 NON si avvierà automaticamente all'accesso né si riavvierà automaticamente in caso di crash.

Se avevi un lavoro launchd funzionante prima, il comando lo ha scaricato e il fallback funziona bene fino al primo crash o riavvio, poi il tuo agente è sparito senza che nessuno te lo dica. launchctl grezzo funziona dove la CLI fallisce, anche su SSH:

bash
1launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist
2launchctl print gui/$(id -u)/ai.hermes.gateway | grep state # vuoi: state = running

Il plist avvia il gateway all'accesso ma non lo riavvia in caso di crash. Un watchdog cron colma entrambe le lacune e cron viene eseguito all'avvio senza bisogno di accesso. La ricetta include gateway-watchdog.sh; controlla ogni 5 minuti se il processo del gateway è vivo e lo riavvia se non lo è. Installalo in una schedule:

bash
1(crontab -l 2>/dev/null; echo '*/5 * * * * $HOME/scripts/gateway-watchdog.sh >/dev/null 2>&1') | crontab -

Ho visto questa sequenza recuperare un gateway degradato sul mio stesso Mac Mini. Riavvia e conferma che il gateway sia tornato entro cinque minuti senza effettuare l'accesso.

Verifica la tua configurazione

  1. Il servizio è attivo: systemctl --user status hermes-gateway su Linux (active (running)), o launchctl print gui/$(id -u)/ai.hermes.gateway | grep state su macOS (state = running)
  2. Manda un messaggio al tuo bot: ti risponde e ignora chiunque non sia nei tuoi utenti consentiti
  3. Su Linux, loginctl show-user [$USER](https://x.com/search?q=%24USER&src=cashtag_click) -p Linger legge "Linger=yes"
  4. Riavvia la macchina, aspetta, manda di nuovo un messaggio al bot senza effettuare nuovamente l'accesso: risponde

Costi

Sul VPS, la macchina è l'unica spesa. La mia è un Hetzner CX23 a $0,012/ora, con un massimo di $7,79/mese (prezzi Hetzner USA, 18/06/2026; il CX22 UE è della stessa forma e più economico).

Sul Mac, è una macchina che già possiedi, zero servizi extra. Il modello è gratuito sul livello gratuito di Nous Portal in entrambi i casi.

Qui, la memoria non è il limite: il gateway utilizzava circa 280 MB, l'intera macchina circa 556 MB, quindi 1 GB di RAM è più che sufficiente. Il disco è il vero limite: l'installazione è di circa 6,6 GB, quindi un'immagine da 1 GB o 10 GB è stretta, dagli 20 GB. E usa x86, è la scelta sicura.

Eseguilo da solo e cosa c'è dopo

Entrambe le macchine hanno una ricetta completa con gli script esatti, eseguibili così come sono:

Ora hai un agente sempre attivo su Telegram che sopravvive a un riavvio.

Il prossimo Flightplan si basa su questo: lavori programmati che ti mandano un messaggio solo quando qualcosa è importante, un workspace sincronizzato con git che l'agente legge e scrive, e il flusso di bozza e approvazione che mantiene un umano su ogni azione pubblica.

Grazie per aver letto.

Salva con un clic

Leggi in profondità gli articoli virali con l’AI di YouMind

Salva la fonte, fai domande mirate, riassumi l’argomentazione e trasforma un articolo virale in note riutilizzabili in un unico spazio di lavoro AI.

Scopri YouMind
Per i creator

Trasforma il tuo Markdown in un articolo 𝕏 pulito

Quando pubblichi i tuoi testi lunghi, formattare immagini, tabelle e blocchi di codice per 𝕏 è una seccatura. YouMind trasforma un'intera bozza Markdown in un articolo 𝕏 pulito e pronto da pubblicare.

Prova Markdown verso 𝕏

Altri pattern da decodificare

Articoli virali recenti

Esplora altri articoli virali