🤖HermesBlog
Piattaforme di Messaggistica di Hermes · Parte 408/14/2026

A2A tra due macchine: facciamo lavorare insieme due Hermes su computer diversi

Hermes Messaging Platform, Articolo 40: Passaggi per il deployment A2A su più macchine e lezioni reali dagli errori incontrati.

Un Hermes su un computer non ce la fa più e vuole che un altro Hermes su un’altra macchina gli dia una mano: è esattamente questo lo scopo di A2A. Ma quali sono le insidie nella configurazione? Utenti reali le hanno già incontrate al posto tuo.

A2A -twonode

Quando serve davvero avere due macchine

Prima di tutto, chiarisci una cosa: ti servono davvero due computer, o vuoi solo far collaborare due agenti?

Se i due agenti vivono sulla stessa macchina, bastano delega o una bacheca condivisa — è come nello stesso ufficio: basta alzare la voce e chiamare il collega alla scrivania accanto, non serve mica telefonare. A2A è pensato per scenari “cross-macchina / cross-processo / cross-framework”: il tuo desktop e il server eseguono ciascuno un Hermes, con le proprie memorie, i propri strumenti e le proprie credenziali di accesso. Solo in questo caso ti serve il ponte di A2A.

Passi per iniziare

Passo 1: attiva la piattaforma A2A su entrambe le macchine. Durante l’installazione di Hermes scegli A2A, oppure modifica il file di configurazione impostando gateway.platforms.a2a.enabled su true. La porta predefinita è la 9900. Questo passaggio equivale a installare su ogni computer una porta d’ingresso con controllo accessi.

Passo 2: configura il token (la chiave del controllo accessi). Sul server imposta A2A_PEER_TOKENS o A2A_BEARER_TOKEN. Se stai solo facendo test in locale, puoi anche non impostare il token, ma in quel caso la porta sarà aperta solo per 127.0.0.1 — come se il badge fosse valido solo per chi abita nello stesso stabile.

Passo 3: esponi l’indirizzo. Per comunicare tra macchine diverse devi impostare A2A_HOST, ad esempio 0.0.0.0 o l’IP della rete locale. Questo passaggio sposta la porta da “corridoio interno” a “vetrina sulla strada”, così l’altro computer può trovarti.

Passo 4: abbina i peer. Sul client configura a2a_agents, oppure usa direttamente a2a_discover("http://indirizzo-server:9900") per vedere l’Agent Card dell’altro — è come scambiarsi i biglietti da visita: prima verifichi chi è e che cosa sa fare.

Passo 5: verifica. Abilita il toolset a2a e usa a2a_call per inviare un task semplice come prova. Attenzione ai timeout: il client ha un default di 330 secondi, la finestra di risposta del server è di 300 secondi. Per i task lunghi devi aumentare questi valori, altrimenti il lavoro viene interrotto a metà per timeout. Al termine, controlla il log di audit in ~/.hermes/a2a_audit.jsonl.

Caso reale 1: come si presenta una configurazione riuscita

La documentazione ufficiale descrive uno scenario ideale: il tuo Hermes sul desktop affida un task all’Hermes sul server — il server ha più potenza di calcolo, una rete più stabile e un database più completo. Viceversa, l’Hermes sul server può affidare al desktop compiti come “controlla un file locale”. Ciascuno ha le proprie memorie e i propri strumenti, ognuno fa il proprio lavoro, si scoprono le reciproche capacità tramite l’Agent Card, le conversazioni sono indicizzate per contextId e supportano più turni.

È come due reparti della stessa azienda: il reparto marketing (il desktop) ha bisogno di un report di analisi dati, manda una mail al reparto dati (il server), il reparto dati lo prepara e lo rispedisce. Ognuno archivia i propri documenti, senza interferenze.

Caso reale 2: una configurazione fallita

Nella community c’è un caso reale (#82910): un utente ha configurato due nodi su due macOS — un gateway rivolto agli utenti + un worker. Sembrava simile al caso di successo qui sopra, ma il risultato è stato un disastro, e alla fine il team ha dismesso l’intera configurazione.

Il problema era che i ruoli di “coordinatore” e “worker” non erano stati definiti chiaramente. L’agente padre (il coordinatore) accumulava troppo nella propria sessione: ogni operazione del worker, ogni risultato intermedio, ogni passaggio del ragionamento rifluiva nella sessione padre, causando espansione del contesto — l’agente padre veniva sommerso da un’enorme quantità di informazioni e diventava sempre più lento. La trascrizione tra agenti appesantiva le prestazioni complessive, e i task complessi innescavano loop di recupero, sprofondando sempre di più.

La lezione è chiara: la collaborazione A2A tra macchine richiede prima di tutto una progettazione chiara dei confini di responsabilità — chi coordina, chi esegue, a chi appartiene quale memoria. Non accumulare tutto nella sessione padre: il worker deve avere il proprio “taccuino personale”.

Checklist per evitare le trappole nella configurazione

Collasso dell’identità dietro il reverse proxy (#80534/#80779): se usi nginx, Ingress K8s o un CDN come reverse proxy, tutti i peer condividono lo stesso bearer token e le identità collassano tutte nell’indirizzo del proxy. La soluzione è far sì che il proxy inoltri X-Forwarded-For e dedurre l’identità reale dopo il proxy affidabile. È come quando il portiere del palazzo ritira i pacchi per conto tuo: deve scrivere sul pacco il vero destinatario, altrimenti si accumulano tutti in portineria.

Rifiuto del routing con più profili di configurazione (#80884/#80956): se usi multiplex_profiles per eseguire più configurazioni, i messaggi A2A in entrata instradati verso un profilo secondario possono essere rifiutati dal layer di autorizzazione del gateway. La soluzione è catturare il contesto di sicurezza dell’adattatore immutabile all’avvio, preservando per ogni profilo le proprie policy di autenticazione, trust, binding e Agent Card. Ogni porta deve avere le proprie regole di accesso, non si può condividere un’unica policy.

Impostazioni di timeout: default di 330 secondi sul client contro 300 sul server: per i task lunghi ricordati di aumentarli. Altrimenti è come una telefonata interurbana: ti staccano la linea prima che tu abbia finito di parlare.

Modalità worker con output limitato (#82503): è la ricetta ufficiale contro l’espansione del contesto. Le route A2A servite non-root possono eseguire sottoprocessi configurati o worker RPC versionati, con output limitato, terminazione dell’albero dei processi, cancellazione e terminazione exactly-once — il worker finisce il lavoro e si ferma, senza riversare tutto il processo nella sessione padre.

Cosa significa per te

La configurazione A2A su due macchine non è semplice come “collegare due computer”. È più come aprire una filiale: vetrina (Agent Card), controllo accessi (token), divisione dei compiti (chi coordina e chi esegue), magazzino (memorie separate) — tutto va pensato per bene. Una configurazione riuscita fa emergere i punti di forza di entrambe le macchine; una fallita sommerge il coordinatore di informazioni.

Ricorda tre regole: prima definisci i confini di responsabilità, poi pensa ai dettagli tecnici; con un reverse proxy gestisci il problema dell’identità; per i task lunghi aumenta i timeout, per quelli complessi usa worker con output limitato. Se fai tutto questo, i due Hermes su computer diversi potranno davvero diventare buoni colleghi, e non compagni di squadra che si trascinano a vicenda.

📖 Documentazione ufficiale

この記事は Hermes Agent のDocumentazione ufficialeに基づいています:Documentazione ufficiale › user-guide/messaging/a2a