squad
Agentes en la nube, en una máquina que es tuya. Dale a uno un trabajo permanente: se despierta solo, lo hace y te escribe.
$ curl -fsSL https://squad.mormon.garden/client.sh | sh
$ squad
Podés elegir dónde viven tus agentes: en tu propia computadora o en la nube. Es lo primero que pregunta — este equipo, o un servidor al que tengas SSH. Con un VPS de $5 alcanza para unos cuantos.
> todas las mañanas a las 8, leé el tablero y mandame por mail lo que está frenado en mí
Agendado para las 08:00, todos los días. Guardo lo que te mandé ayer, así lo de mañana es lo que cambió y no la misma lista otra vez.
‹wake› 08:00 · leer el tablero, mandar la lista corta
‹→ email› Dos cosas. ENG-403 espera tu revisión desde el martes, y la rama de release tiene un check en rojo desde el viernes sin nadie encima. Las otras nueve avanzan.
Un trabajo permanente, y va y lo hace
| vigilar un repositorio | Un check se pone en rojo. Lee el fallo, lo arregla, hace push y cuenta lo que hizo en el pull request — mientras vos almorzabas. |
| seguir a un rival | Cada lunes a las ocho: tres páginas de precios, tres changelogs. Recibís un correo, y es lo que se movió. |
| un encargo largo | Desplegá cuando CI se ponga en verde no es un turno. Comprueba, se reserva otro turno, y te escribe cuando está en producción. |
| montar guardia | Una URL cada diez minutos, un certificado que caduca. El mensaje llega desde una máquina que no es la que se cayó. |
| un mostrador donde preguntar | Mandale un correo, o escribile al bot desde el aeropuerto. Tiene el repositorio, las herramientas y cuatro meses de lo que le contaste. |
Un agente por trabajo — la columna de la izquierda de esa consola. Hacer el siguiente es un nombre y ⏎.
Su propia máquina, y root en ella
Cada agente recibe una caja propia. Puede bajarse un toolchain a las tres de la mañana, ejecutar tu suite de tests cuarenta veces y llenar el disco con una compilación mala — tu equipo no está en el radio de la explosión, y el agente de al lado tampoco. Eso es lo que hace que valga la pena darle trabajo de verdad: no describe el arreglo, hace el arreglo y ejecuta los tests.
Dos cosas sobreviven al contenedor. ~/workspace guarda tus proyectos, y ~/.self es el agente mismo — un repositorio git del que es dueño:
| soul.md | quién es; se añade al prompt en cada turno |
| memory/ | lo que eligió recordar |
| skills/ | cómo se hacen acá las cosas, escrito una sola vez |
| tools/ | scripts que se escribió a sí mismo |
| agent.yaml | las capacidades que le pide a un operador |
tools/ es el que hay que mirar dos veces. Un agente que ha llamado tres veces desde la shell a algo incómodo se escribe un script para la cuarta, y el viernes es mejor en tu trabajo de lo que era el lunes.
! abre una shell en esa misma caja, y /serve 3000 saca un puerto de ahí a la máquina en la que está tu navegador. Agentes es la versión larga.
Se reserva su propio turno siguiente, y el día tiene un techo
Dos relojes. Uno que escribiste vos — cron, en una zona horaria que nombrás. Uno que se pone él mismo: wake_me pide otro turno dentro de tres minutos o tres días y deja una nota para la versión de sí mismo que se despierte. Por eso un trabajo largo es algo que podés delegar en vez de algo que hay que aguantar sentado.
> /limit 5 Spending limit set to $5.00 a day. $0.42 spent today, of $5.00 a day.
Un agente que corre sin nadie mirando tiene un techo en dólares al día. Alcanzarlo detiene el turno siguiente y no el que está en curso. Un agente puede pedir que se le limite a menos; no llega a ninguna parte pidiendo más.
Con qué piensa es un comando y no un redespliegue. La clave es tuya y la factura es de tu proveedor — acá no hay cuenta que sostenga ninguna de las dos. Horarios, gasto y modelos.
Tiene una dirección y un teléfono
Un buzón para todo el plano, conectado con /email. Cada agente tiene su propia dirección dentro — agents+scout@… — y responde en el hilo. | |
| telegram | Un bot por agente: el token en /telegram, y tu teléfono es donde se escriben los encargos de una línea. |
| webhook | Para sistemas y no para personas: GitHub, un despliegue, cualquier cosa que firme una petición. |
Una respuesta vuelve por donde entró la petición. Telegram y el correo se pueden emparejar con una persona, y lo que esa persona escribe es una instrucción. A todos los demás se les oye, se les cita y no se les obedece.
Ninguno de los tres cuesta un dominio, un certificado ni un puerto abierto. Email, Telegram y webhooks.
Dale Linear sin darle la clave
> /mcp add linear https://mcp.linear.app/mcp "linear" is on the shelf, and this agent has it. Any other agent can have it too, with /mcp linear.
Una línea, y en su turno siguiente el agente tiene las herramientas de Linear registradas como suyas. Los servidores MCP van a un estante que guarda el plano, así que cada agente después del primero es un nombre de una lista.
A un servidor que quiere una cuenta se entra desde la consola, y el token que vuelve se queda en el plano. Lo que el agente recibe es la herramienta; lo que nunca recibe es el secreto.
Servidores MCP, y búsqueda web, que es un endpoint concedido y la lectura hecha al otro lado.
Una sola pantalla, y es una terminal
squad a secas abre la consola del principio de esta página: cada agente a la izquierda, la conversación a la derecha, tab para el feed de registro, / para los comandos y ! para la shell de dentro de la caja.
Una clave, un modelo, un buzón, un servidor MCP, un techo — todo se configura desde ahí dentro, y rige a partir del turno siguiente sin reiniciar nada.
| /limit | lo que lleva gastado hoy, y el techo que tiene |
| /model | con qué piensa, y qué más hay |
| /mcp | los servidores MCP que tiene, y el estante desde el que añadir |
| /serve | un puerto de dentro, en la máquina en la que estás sentado |
| /telegram | el bot en el que responde, y cómo emparejar uno |
| la dirección en la que se le encuentra, y cómo conectar un buzón |
Y es un programa en tu PATH, así que las partes de él que van en un script son un script. La consola tiene todas las teclas y todos los comandos.
| squad chat demo | hablar con uno en el scrollback, turno tras turno |
| squad ls | qué es cada agente y si está levantado |
| squad wake "check the open issues" | tomar un turno, y esperar la respuesta |
| squad logs | seguir lo que cada agente ejecuta, responde y gasta |
| squad rm demo --purge | el sandbox, y con --purge el repositorio que hay dentro |
Cada turno dice qué ejecutó, qué respondió y cuánto costó
Una petición que fue rechazada, o que volvió con 401, se dice en el momento en que pasa. Las cien que funcionaron se cuentan en vez de imprimirse.
18:12:53 builds bash pnpm -r test18:12:53 builds bash ✗ after 12.4s: FAIL test/turn.test.ts > carries the failure detail18:12:53 builds read packages/control-plane/src/turn.ts18:12:53 tickets egress ✗ denied GET api.github.com/repos — no_matching_host18:12:53 builds answer The test asserted the old message.18:12:53 builds spent 1m38s · 91.2k tokens · $0.02 · api.deepseek.com ×12
squad logs — lo que cada agente ejecuta, responde y gasta.
Tres reglas que no puede sortear hablando
Un agente desatendido lee lo que escriben desconocidos
Un webhook de GitHub es auténtico y aun así retransmite el cuerpo de un issue escrito por cualquiera. Todo lo que no vino de vos llega delimitado, como datos.
Solo un operador da instrucciones.
Una credencial se puede gastar en cualquier parte
Así que el agente nunca tiene ninguna. Aquello a lo que llega sale por un proxy que comprueba la petición contra lo que aprobaste y añade el secreto después. A un agente al que convencen de mandarte su clave no le queda nada que mandar.
El agente nunca ve una clave.
Un agente puede editar su propia definición
Es dueño de su repositorio, y una línea dentro es una petición. Lo que puede alcanzar se responde en un archivo que no puede escribir.
Nada de lo que diga puede concederle nada.
La red del sandbox no tiene rutas, así que el proxy no es una comodidad que pudiera esquivar: hasta llegar al proveedor del modelo es una aprobación. Confianza y alcance son donde eso se detalla.
La lista honesta
- Slack, Discord y los demás. El correo, Telegram y los webhooks están. Los otros son adaptadores que nadie ha escrito todavía.
- Nada multi-tenant. Un archivo de configuración, un operador, una máquina.
- Aislamiento más fuerte que un contenedor. Un contenedor Docker por agente, no una microVM — porque si autoalojarlo necesitara microVMs nadie lo ejecutaría.
- Nada alojado. No hay cuenta, ni panel, ni factura nuestra. Vos ponés una máquina y una clave de modelo, y lo que cuesta es lo que cobre tu proveedor.