Tu servidor doméstico dejó de completar su copia de seguridad nocturna. Los registros están en el servidor, el servidor está detrás de tu router, y quieres que Comma averigüe qué pasó, no que te dé una lista de comandos para copiar y pegar de un lado a otro. Los agentes de Comma ya pueden trabajar en esa máquina por SSH, sin instalar en ella otro agente de IA.
El agente vive fuera del sandbox
La mayoría de los agentes en la nube se ejecutan dentro de su sandbox: un contenedor o una VM que contiene el bucle del modelo, las herramientas y los archivos, y que sigue encendido mientras exista el agente. Salix, el arnés distribuido que hay detrás de Comma, separa estas piezas. El bucle del agente se ejecuta en el arnés, fuera de cualquier sandbox, con más de 100 agentes por núcleo de CPU. Una VM en la nube o un dispositivo es solo un lugar donde se ejecutan comandos, y se usa únicamente cuando el trabajo necesita una computadora.
Así que, para trabajar en tu servidor, el agente no se traslada allí. Llama a herramientas SSH nativas desde el arnés:
ssh.open,ssh.write,ssh.readyssh.screenpara una terminal interactiva, incluidos los programas a pantalla completa;ssh.execpara un solo comando, con stdout, stderr y el código de salida por separado;ssh.list_files,ssh.downloadyssh.uploadpara archivos, por SFTP;ssh.closeyssh.listpara el ciclo de vida de la conexión.
El agente se autentica con una clave SSH de Group: una clave por espacio de trabajo, compartida por sus agentes. ssh.public_key la devuelve, y tú la agregas a ~/.ssh/authorized_keys en la máquina, como harías con cualquier otro cliente SSH.
El arnés puede llegar a tu máquina de tres maneras.
1. Una dirección pública
Si la máquina ya tiene un servidor SSH accesible, el agente se conecta a su dirección IP o a su nombre DNS:
2. Tailcat, para una máquina sin dirección pública
Una laptop o un servidor doméstico detrás de NAT a menudo no tiene ninguna dirección a la que el arnés pueda conectarse. Tailcat lo conecta sin puerto de entrada, sin VPN y sin cuenta. Se ejecuta en la máquina, solo abre conexiones salientes y muestra una dirección que empieza con tc.
Tailcat también puede hacer de servidor SSH. Ejecútalo con la clave pública del Group:
Así obtienes un shell de inicio de sesión, ejecución de comandos y SFTP con la cuenta que ejecuta Tailcat. No necesita sshd ni cambia tu configuración de SSH. Si la máquina ya ejecuta OpenSSH, usa tailcat serve 22 en su lugar, y OpenSSH se encarga del inicio de sesión. Después, envía la dirección al agente:
3. Tu propia red de Tailscale
Si tus máquinas ya están en una tailnet, el espacio de trabajo puede unirse a ella. Conéctalo en la configuración de la app de Comma o pídeselo al agente. Un administrador de la tailnet abre un enlace de inicio de sesión y aprueba el nodo. El nodo usa de forma predeterminada la etiqueta tag:comma-agent, así que la política de tu tailnet decide exactamente a qué dispositivos y puertos puede llegar; por ejemplo, solo al puerto 22 del servidor doméstico.
El agente lista los dispositivos con tailnet.peers y se conecta por nombre de MagicDNS o por dirección de Tailscale:
Confianza y duración
En todas las vías, la primera conexión a un host registra su clave de host. Si una conexión posterior presenta una clave distinta, se rechaza con host_key_mismatch y las dos huellas, y el agente te pregunta antes de eliminar la clave antigua con ssh.known_hosts.remove.
Cada conexión SSH pertenece a una sola sesión del agente. Se cierra después de 30 minutos sin uso y no sobrevive a un reinicio del agente ni a un despliegue de la plataforma, así que el trabajo largo debe ir en tmux o screen en la máquina remota. Los comandos tienen límites: ssh.exec agota el tiempo a los 60 segundos de forma predeterminada y a los 600 como máximo, y cuando se agota se informa del error, nunca se reintenta automáticamente.
Para la copia de seguridad, podrías pedir: “Lee los registros y revisa el espacio en disco, pero no borres archivos ni cambies la configuración. Primero dime qué encuentras.”