Seu servidor doméstico parou de concluir o backup noturno. Os logs estão no servidor, o servidor está atrás do seu roteador, e você quer que o Comma descubra o que aconteceu, não que entregue uma lista de comandos para você ficar copiando de um lado para o outro. Agora os agentes do Comma podem trabalhar nessa máquina por SSH, sem instalar outro agente de IA nela.
O agente vive fora do sandbox
A maioria dos agentes na nuvem roda dentro do próprio sandbox: um contêiner ou uma VM que guarda o loop do modelo, as ferramentas e os arquivos, e fica ligado enquanto o agente existir. O Salix, harness distribuído por trás do Comma, separa essas partes. O loop do agente roda no harness, fora de qualquer sandbox, com mais de 100 agentes por núcleo de CPU. Uma VM na nuvem ou um dispositivo é só um lugar onde comandos rodam, usado apenas quando o trabalho precisa de um computador.
Por isso, para trabalhar no seu servidor, o agente não se muda para lá. Ele chama ferramentas SSH nativas a partir do harness:
ssh.open,ssh.write,ssh.readessh.screenpara um terminal interativo, inclusive programas em tela cheia;ssh.execpara um único comando, com stdout, stderr e o código de saída separados;ssh.list_files,ssh.downloadessh.uploadpara arquivos, via SFTP;ssh.closeessh.listpara o ciclo de vida da conexão.
O agente se autentica com uma chave SSH do Group: uma chave por espaço de trabalho, compartilhada pelos seus agentes. ssh.public_key retorna essa chave, e você a adiciona a ~/.ssh/authorized_keys na máquina, como faria com qualquer outro cliente SSH.
O harness pode chegar à sua máquina de três jeitos.
1. Um endereço público
Se a máquina já tem um servidor SSH acessível, o agente se conecta ao endereço IP ou ao nome DNS dela:
2. Tailcat, para uma máquina sem endereço público
Um notebook ou um servidor doméstico atrás de NAT muitas vezes não tem um endereço que o harness consiga alcançar. O Tailcat faz a conexão sem porta de entrada, sem VPN e sem conta. Ele roda na máquina, só abre conexões de saída e mostra um endereço que começa com tc.
O Tailcat também pode ser o servidor SSH. Rode-o com a chave pública do Group:
Isso oferece um shell de login, execução de comandos e SFTP com a conta que roda o Tailcat. Não precisa de sshd e não altera sua configuração de SSH. Se a máquina já roda OpenSSH, use tailcat serve 22, e o OpenSSH cuida do login. Depois, envie o endereço ao agente:
3. Sua própria rede Tailscale
Se suas máquinas já estão em uma tailnet, o espaço de trabalho pode entrar nela. Conecte-o nas configurações do app do Comma ou peça ao agente. Um admin da tailnet abre um link de login e aprova o nó. Por padrão, o nó usa a tag tag:comma-agent, então a política da sua tailnet decide exatamente quais dispositivos e portas ele alcança, por exemplo, só a porta 22 do servidor doméstico.
O agente lista os dispositivos com tailnet.peers e se conecta pelo nome MagicDNS ou pelo endereço Tailscale:
Confiança e tempo de vida
Em qualquer caminho, a primeira conexão a um host registra a chave de host dele. Uma conexão posterior que apresente uma chave diferente é recusada com host_key_mismatch e as duas impressões digitais, e o agente pergunta a você antes de remover a chave antiga com ssh.known_hosts.remove.
Uma conexão SSH pertence a uma única sessão do agente. Ela fecha após 30 minutos sem uso e não sobrevive a um reinício do agente nem a um deploy da plataforma, então trabalhos longos devem ficar em tmux ou screen na máquina remota. Os comandos têm limite: ssh.exec expira após 60 segundos por padrão e 600 no máximo, e um timeout é informado, nunca repetido automaticamente.
Para o backup, você poderia pedir: “Leia os logs e verifique o espaço em disco, mas não apague arquivos nem altere a configuração. Primeiro me diga o que encontrou.”