Il tuo server di casa non completa più il backup notturno. I log sono sul server, il server è dietro il tuo router, e vuoi che Comma scopra cosa è successo, non che ti dia una lista di comandi da copiare avanti e indietro. Ora gli agenti di Comma possono lavorare su quella macchina via SSH, senza installarci un altro agente IA.
L’agente vive fuori dalla sandbox
La maggior parte degli agenti cloud gira dentro la propria sandbox: un container o una VM che contiene il loop del modello, gli strumenti e i file, e resta accesa finché esiste l’agente. Salix, l’harness distribuito alla base di Comma, separa queste parti. Il loop dell’agente gira nell’harness, fuori da qualsiasi sandbox, con oltre 100 agenti per core di CPU. Una VM cloud o un dispositivo è solo un posto in cui girano i comandi, usato soltanto quando il lavoro richiede un computer.
Quindi, per lavorare sul tuo server, l’agente non si sposta lì. Chiama strumenti SSH nativi dall’harness:
ssh.open,ssh.write,ssh.readessh.screenper un terminale interattivo, compresi i programmi a schermo intero;ssh.execper un singolo comando, con stdout, stderr e codice di uscita tenuti separati;ssh.list_files,ssh.downloadessh.uploadper i file, via SFTP;ssh.closeessh.listper il ciclo di vita della connessione.
L’agente si autentica con una chiave SSH del Group: una chiave per workspace, condivisa dai suoi agenti. ssh.public_key la restituisce, e tu la aggiungi a ~/.ssh/authorized_keys sulla macchina, come faresti con qualsiasi altro client SSH.
L’harness può raggiungere la tua macchina in tre modi.
1. Un indirizzo pubblico
Se la macchina ha già un server SSH raggiungibile, l’agente si connette al suo indirizzo IP o al suo nome DNS:
2. Tailcat, per una macchina senza indirizzo pubblico
Un portatile o un server di casa dietro NAT spesso non ha un indirizzo che l’harness possa contattare. Tailcat lo collega senza porte in ingresso, VPN o account. Gira sulla macchina, apre solo connessioni in uscita e stampa un indirizzo che inizia con tc.
Tailcat può anche fare da server SSH. Avvialo con la chiave pubblica del Group:
Così ottieni una shell di login, l’esecuzione di comandi e SFTP con l’account che esegue Tailcat. Non serve sshd e la tua configurazione SSH resta com’è. Se sulla macchina gira già OpenSSH, usa invece tailcat serve 22, e il login lo gestisce OpenSSH. Poi invia l’indirizzo all’agente:
3. La tua rete Tailscale
Se le tue macchine sono già in una tailnet, il workspace può unirsi a essa. Collegalo nelle impostazioni dell’app Comma, oppure chiedilo all’agente. Un amministratore della tailnet apre un link di accesso e approva il nodo. Per impostazione predefinita il nodo usa il tag tag:comma-agent, quindi è la policy della tua tailnet a decidere esattamente quali dispositivi e porte può raggiungere, per esempio solo la porta 22 del server di casa.
L’agente elenca i dispositivi con tailnet.peers e si connette tramite nome MagicDNS o indirizzo Tailscale:
Fiducia e durata
Su ogni percorso, la prima connessione a un host registra la sua chiave host. Una connessione successiva che presenta una chiave diversa viene rifiutata con host_key_mismatch ed entrambe le impronte, e l’agente ti chiede conferma prima di rimuovere la vecchia chiave con ssh.known_hosts.remove.
Una connessione SSH appartiene a una sola sessione dell’agente. Si chiude dopo 30 minuti di inattività e non sopravvive a un riavvio dell’agente né a un deploy della piattaforma, quindi il lavoro lungo va eseguito in tmux o screen sulla macchina remota. I comandi hanno dei limiti: ssh.exec va in timeout dopo 60 secondi per impostazione predefinita e al massimo dopo 600, e un timeout viene segnalato, mai ritentato in automatico.
Per il backup potresti chiedere: «Leggi i log e controlla lo spazio su disco, ma non eliminare file e non modificare la configurazione. Prima dimmi cosa trovi.»