집 서버의 야간 백업이 끝나지 않기 시작했습니다. 로그는 서버에 있고, 서버는 공유기 뒤에 있습니다. 여러분이 원하는 것은 복사해서 붙여 넣을 명령어 목록이 아니라, Comma가 무슨 일이 있었는지 직접 알아내는 것입니다. 이제 Comma의 에이전트는 그 머신에 다른 AI 에이전트를 설치하지 않고도 SSH로 그 머신에서 작업할 수 있습니다.
에이전트는 샌드박스 밖에 산다
대부분의 클라우드 에이전트는 자기 샌드박스 안에서 실행됩니다. 샌드박스는 모델 루프, 도구, 파일을 담은 컨테이너나 VM으로, 에이전트가 살아 있는 동안 계속 켜져 있습니다. Comma를 받치는 분산 하네스인 Salix는 이것들을 분리합니다. 에이전트 루프는 어떤 샌드박스에도 속하지 않고 하네스에서 실행되며, CPU 코어 하나당 100개가 넘는 에이전트를 돌립니다. 클라우드 VM이나 기기는 명령이 실행되는 장소일 뿐이고, 작업에 컴퓨터가 필요할 때만 쓰입니다.
그래서 에이전트가 여러분의 서버에서 작업하려고 서버로 옮겨 갈 필요가 없습니다. 하네스에서 네이티브 SSH 도구를 호출합니다.
ssh.open,ssh.write,ssh.read,ssh.screen: 전체 화면 프로그램을 포함한 대화형 터미널ssh.exec: 단일 명령 실행. stdout, stderr, 종료 상태를 따로 돌려줍니다.ssh.list_files,ssh.download,ssh.upload: SFTP를 통한 파일 작업ssh.close,ssh.list: 연결 수명 주기 관리
에이전트는 Group SSH 키로 인증합니다. 워크스페이스마다 키가 하나 있고, 그 워크스페이스의 에이전트들이 함께 씁니다. ssh.public_key가 이 키를 돌려주며, 다른 SSH 클라이언트를 등록할 때처럼 머신의 ~/.ssh/authorized_keys에 추가하면 됩니다.
하네스가 여러분의 머신에 닿는 방법은 세 가지입니다.
1. 공개 주소
머신에 이미 접속 가능한 SSH 서버가 있다면, 에이전트는 그 IP 주소나 DNS 이름으로 접속합니다.
2. 공개 주소가 없는 머신을 위한 Tailcat
NAT 뒤에 있는 노트북이나 집 서버에는 하네스가 접속할 수 있는 주소가 없는 경우가 많습니다. Tailcat은 인바운드 포트, VPN, 계정 없이도 이런 머신을 연결합니다. Tailcat은 그 머신에서 실행되고, 아웃바운드 연결만 만들며, tc로 시작하는 주소를 출력합니다.
Tailcat이 SSH 서버 역할을 할 수도 있습니다. Group 공개 키를 넣어 실행합니다.
이렇게 하면 Tailcat을 실행한 계정으로 로그인 셸, 명령 실행, SFTP를 쓸 수 있습니다. sshd가 필요 없고, SSH 설정도 바꾸지 않습니다. 머신에서 이미 OpenSSH가 돌고 있다면 대신 tailcat serve 22를 쓰고, 로그인은 OpenSSH가 처리하게 합니다. 그런 다음 주소를 에이전트에게 보냅니다.
3. 여러분의 Tailscale 네트워크
머신이 이미 tailnet에 있다면 워크스페이스가 그 tailnet에 참여할 수 있습니다. Comma 앱 설정에서 연결하거나 에이전트에게 연결을 요청하세요. tailnet 관리자가 로그인 링크를 열고 노드를 승인하면 됩니다. 노드에는 기본으로 tag:comma-agent 태그가 붙으므로, 노드가 어떤 기기의 어떤 포트에 닿을 수 있는지는 tailnet 정책이 정확히 정합니다. 예를 들어 집 서버의 22번 포트만 허용할 수 있습니다.
에이전트는 tailnet.peers로 기기 목록을 보고, MagicDNS 이름이나 Tailscale 주소로 접속합니다.
신뢰와 수명
어느 경로든, 호스트에 처음 접속할 때 그 호스트 키를 기록합니다. 이후 접속에서 다른 키가 제시되면 host_key_mismatch와 두 지문을 함께 돌려주며 접속을 거부하고, 에이전트는 ssh.known_hosts.remove로 이전 키를 지우기 전에 여러분에게 먼저 묻습니다.
SSH 연결은 하나의 에이전트 세션에 속합니다. 30분 동안 쓰이지 않으면 닫히고, 에이전트 재시작이나 플랫폼 배포 후에는 남지 않습니다. 따라서 오래 걸리는 작업은 원격 머신의 tmux나 screen에서 실행해야 합니다. 명령에는 제한이 있습니다. ssh.exec는 기본 60초, 최대 600초 후 타임아웃되며, 타임아웃은 보고만 될 뿐 자동으로 재시도되지 않습니다.
백업 문제라면 이렇게 요청해 볼 수 있습니다. “로그를 읽고 디스크 공간을 확인해 줘. 하지만 파일을 지우거나 설정을 바꾸지는 마. 먼저 무엇을 찾았는지 알려 줘.”