Din hjemmeserver er holdt op med at gøre sin natlige backup færdig. Logfilerne ligger på serveren, serveren står bag din router, og du vil have Comma til at finde ud af, hvad der skete, ikke give dig en liste med kommandoer, du skal kopiere frem og tilbage. Commas agenter kan nu arbejde på maskinen over SSH, uden at du installerer endnu en AI-agent på den.
Agenten bor uden for sandkassen
De fleste cloud-agenter kører inde i deres sandkasse: en container eller VM, der rummer modelløkken, værktøjerne og filerne og kører, så længe agenten gør. Salix, den distribuerede harness bag Comma, skiller dem ad. Agentløkken kører i harnessen, uden for enhver sandkasse, med mere end 100 agenter pr. CPU-kerne. En cloud-VM eller en enhed er et sted, hvor kommandoer kører, og bruges kun, når arbejdet kræver en computer.
For at arbejde på din server flytter agenten altså ikke derhen. Den kalder native SSH-værktøjer fra harnessen:
ssh.open,ssh.write,ssh.readogssh.screentil en interaktiv terminal, også med fuldskærmsprogrammer;ssh.exectil én kommando, med stdout, stderr og exitstatus holdt adskilt;ssh.list_files,ssh.downloadogssh.uploadtil filer, over SFTP;ssh.closeogssh.listtil forbindelsens livscyklus.
Agenten godkender sig med en Group SSH key: én nøgle pr. Workspace, delt af dets agenter. ssh.public_key returnerer den, og du tilføjer den til ~/.ssh/authorized_keys på maskinen, som du ville gøre for enhver anden SSH-klient.
Harnessen kan nå din maskine på tre måder.
1. En offentlig adresse
Har maskinen allerede en SSH-server, der kan nås, forbinder agenten til dens IP-adresse eller DNS-navn:
2. Tailcat, til en maskine uden offentlig adresse
En bærbar eller en hjemmeserver bag NAT har ofte ingen adresse, som harnessen kan ringe op. Tailcat forbinder den uden en indgående port, en VPN eller en konto. Det kører på maskinen, laver kun udgående forbindelser og udskriver en adresse, der begynder med tc.
Tailcat kan også selv være SSH-serveren. Kør det med den offentlige Group-nøgle:
Det giver en login-shell, kørsel af kommandoer og SFTP som den konto, der kører Tailcat. Det kræver ingen sshd og ændrer ikke din SSH-konfiguration. Kører maskinen allerede OpenSSH, så brug tailcat serve 22 i stedet, og OpenSSH står for login. Send derefter adressen til agenten:
3. Dit eget Tailscale-netværk
Er dine maskiner allerede i et tailnet, kan dit Workspace tilslutte sig det. Forbind det i indstillingerne i Comma-appen, eller bed agenten gøre det. En tailnet-administrator åbner et login-link og godkender noden. Noden bruger som standard tagget tag:comma-agent, så din tailnet-politik bestemmer præcis, hvilke enheder og porte den kan nå, for eksempel kun port 22 på hjemmeserveren.
Agenten viser enheder med tailnet.peers og forbinder via MagicDNS-navn eller Tailscale-adresse:
Tillid og levetid
På alle veje gemmer den første forbindelse til en vært dens værtsnøgle. En senere forbindelse, der viser en anden nøgle, afvises med host_key_mismatch og begge fingeraftryk, og agenten spørger dig, før den fjerner den gamle nøgle med ssh.known_hosts.remove.
En SSH-forbindelse hører til én agentsession. Den lukker efter 30 minutter uden brug og overlever ikke en genstart af agenten eller et deploy af platformen, så langvarigt arbejde hører hjemme i tmux eller screen på den eksterne maskine. Kommandoer har grænser: ssh.exec får timeout efter 60 sekunder som standard og højst 600, og en timeout bliver rapporteret, aldrig automatisk gentaget.
Til backuppen kunne du spørge: »Læs logfilerne og tjek diskpladsen, men slet ingen filer, og ændr ikke konfigurationen. Fortæl mig først, hvad du finder.«