Je thuisserver maakt zijn nachtelijke back-up niet meer af. De logs staan op de server, de server staat achter je router, en je wilt dat Comma uitzoekt wat er is gebeurd, in plaats van je een lijst commando’s te geven die je heen en weer moet kopiëren. De agents van Comma kunnen nu via SSH op die machine werken, zonder dat je er nog een AI-agent op installeert.
De agent woont buiten de sandbox
De meeste cloudagents draaien in hun sandbox: een container of VM met de modellus, de tools en de bestanden, die aanstaat zolang de agent bestaat. Salix, de gedistribueerde harness achter Comma, haalt die onderdelen uit elkaar. De agentlus draait in de harness, buiten elke sandbox, met meer dan 100 agents per CPU-core. Een cloud-VM of een apparaat is een plek waar commando’s draaien, en wordt alleen gebruikt als het werk een computer nodig heeft.
Om op je server te werken, verhuist de agent er dus niet naartoe. Hij roept vanuit de harness native SSH-tools aan:
ssh.open,ssh.write,ssh.readenssh.screenvoor een interactieve terminal, ook met programma’s op volledig scherm;ssh.execvoor één commando, met stdout, stderr en de exitstatus apart;ssh.list_files,ssh.downloadenssh.uploadvoor bestanden, via SFTP;ssh.closeenssh.listvoor de levenscyclus van de verbinding.
De agent authenticeert met een Group SSH key: één sleutel per Workspace, gedeeld door de agents daarin. ssh.public_key geeft hem terug, en jij zet hem in ~/.ssh/authorized_keys op de machine, net als voor elke andere SSH-client.
De harness kan je machine op drie manieren bereiken.
1. Een publiek adres
Heeft de machine al een bereikbare SSH-server, dan verbindt de agent met het IP-adres of de DNS-naam:
2. Tailcat, voor een machine zonder publiek adres
Een laptop of thuisserver achter NAT heeft vaak geen adres dat de harness kan bellen. Tailcat verbindt hem zonder inkomende poort, VPN of account. Het draait op de machine, maakt alleen uitgaande verbindingen en toont een adres dat begint met tc.
Tailcat kan ook zelf de SSH-server zijn. Start het met de publieke Group-sleutel:
Zo krijg je een login-shell, het uitvoeren van commando’s en SFTP onder het account dat Tailcat draait. Er is geen sshd voor nodig en je SSH-configuratie blijft ongewijzigd. Draait de machine al OpenSSH, gebruik dan tailcat serve 22, en OpenSSH regelt de login. Stuur daarna het adres naar de agent:
3. Je eigen Tailscale-netwerk
Zitten je machines al in een tailnet, dan kan de Workspace zich erbij aansluiten. Koppel hem in de instellingen van de Comma-app, of vraag de agent het te doen. Een tailnet-beheerder opent een inloglink en keurt de node goed. De node krijgt standaard de tag tag:comma-agent, dus jouw tailnet-policy bepaalt precies welke apparaten en poorten hij kan bereiken, bijvoorbeeld alleen poort 22 op de thuisserver.
De agent toont apparaten met tailnet.peers en verbindt via een MagicDNS-naam of Tailscale-adres:
Vertrouwen en levensduur
Op elke route legt de eerste verbinding met een host diens hostsleutel vast. Een latere verbinding met een andere sleutel wordt geweigerd met host_key_mismatch en beide fingerprints, en de agent vraagt het jou voordat hij de oude sleutel verwijdert met ssh.known_hosts.remove.
Een SSH-verbinding hoort bij één agentsessie. Ze sluit na 30 minuten zonder gebruik en overleeft geen herstart van de agent of deploy van het platform, dus lang werk hoort in tmux of screen op de externe machine. Commando’s zijn begrensd: ssh.exec stopt standaard na 60 seconden en hooguit na 600, en een time-out wordt gemeld, nooit automatisch opnieuw geprobeerd.
Voor de back-up zou je kunnen vragen: ‘Lees de logs en controleer de schijfruimte, maar verwijder geen bestanden en wijzig de configuratie niet. Vertel me eerst wat je vindt.’