Hjemmeserveren din har sluttet å fullføre den nattlige sikkerhetskopien. Loggene ligger på serveren, serveren står bak ruteren din, og du vil at Comma skal finne ut hva som skjedde, ikke gi deg en liste med kommandoer du må kopiere fram og tilbake. Agentene i Comma kan nå jobbe på maskinen over SSH, uten at du installerer enda en AI-agent på den.
Agenten bor utenfor sandkassen
De fleste skyagenter kjører inne i sandkassen sin: en container eller VM som rommer modelløkken, verktøyene og filene, og som står på så lenge agenten gjør det. Salix, den distribuerte harnessen bak Comma, skiller disse fra hverandre. Agentløkken kjører i harnessen, utenfor enhver sandkasse, med over 100 agenter per CPU-kjerne. En sky-VM eller en enhet er et sted der kommandoer kjører, og brukes bare når arbeidet trenger en datamaskin.
For å jobbe på serveren din flytter agenten altså ikke dit. Den kaller innebygde SSH-verktøy fra harnessen:
ssh.open,ssh.write,ssh.readogssh.screenfor en interaktiv terminal, også med fullskjermprogrammer;ssh.execfor én kommando, med stdout, stderr og exit-status holdt atskilt;ssh.list_files,ssh.downloadogssh.uploadfor filer, over SFTP;ssh.closeogssh.listfor livssyklusen til tilkoblingen.
Agenten autentiserer seg med en Group SSH key: én nøkkel per arbeidsområde, delt av agentene der. ssh.public_key returnerer den, og du legger den til i ~/.ssh/authorized_keys på maskinen, slik du ville gjort for en hvilken som helst annen SSH-klient.
Harnessen kan nå maskinen din på tre måter.
1. En offentlig adresse
Har maskinen allerede en SSH-server som kan nås, kobler agenten seg til IP-adressen eller DNS-navnet:
2. Tailcat, for en maskin uten offentlig adresse
En bærbar eller en hjemmeserver bak NAT har ofte ingen adresse som harnessen kan ringe opp. Tailcat kobler den til uten en innkommende port, en VPN eller en konto. Det kjører på maskinen, lager bare utgående tilkoblinger og skriver ut en adresse som begynner med tc.
Tailcat kan også selv være SSH-serveren. Kjør det med den offentlige Group-nøkkelen:
Dette gir et innloggingsskall, kjøring av kommandoer og SFTP som kontoen som kjører Tailcat. Det trenger ingen sshd og endrer ikke SSH-konfigurasjonen din. Kjører maskinen allerede OpenSSH, bruker du tailcat serve 22 i stedet, og OpenSSH tar seg av innloggingen. Send så adressen til agenten:
3. Ditt eget Tailscale-nettverk
Er maskinene dine allerede i et tailnet, kan arbeidsområdet bli med i det. Koble det til i innstillingene i Comma-appen, eller be agenten gjøre det. En tailnet-administrator åpner en innloggingslenke og godkjenner noden. Noden bruker taggen tag:comma-agent som standard, så tailnet-policyen din bestemmer nøyaktig hvilke enheter og porter den kan nå, for eksempel bare port 22 på hjemmeserveren.
Agenten lister enheter med tailnet.peers og kobler seg til med MagicDNS-navn eller Tailscale-adresse:
Tillit og levetid
På alle veiene lagrer den første tilkoblingen til en vert vertsnøkkelen. En senere tilkobling som viser en annen nøkkel, blir avvist med host_key_mismatch og begge fingeravtrykkene, og agenten spør deg før den fjerner den gamle nøkkelen med ssh.known_hosts.remove.
En SSH-tilkobling hører til én agentøkt. Den lukkes etter 30 minutter uten bruk og overlever ikke en omstart av agenten eller en deploy av plattformen, så langvarig arbeid hører hjemme i tmux eller screen på den eksterne maskinen. Kommandoer har grenser: ssh.exec får tidsavbrudd etter 60 sekunder som standard og høyst 600, og et tidsavbrudd blir rapportert, aldri prøvd på nytt automatisk.
For sikkerhetskopien kunne du be om: «Les loggene og sjekk diskplassen, men ikke slett filer eller endre konfigurasjonen. Fortell meg først hva du finner.»