Arquitectura
Cómo encajan las piezas, y las decisiones que están cerradas.
Las piezas
Le hablás a un commander. Él despacha soldiers, cada uno en su propio camp, y un sentinel lo despierta cuando uno termina.
- Le hablás al commander, una sesión de Claude Code (o de Pi u OpenCode, mirá Pi como commander y OpenCode como commander) guiada por
AGENTS.mdy skills. Te abre artefactos en el forum y lee de ahí tu feedback. - El commander ejecuta
vx dispatch. El binario vexillum guarda su estado en disco, toma un camp e inicia un soldier en un pane de herdr. - El sentinel consulta herdr cada 5 segundos, registra cada resultado en el estado y despierta al commander. A un commander de Claude Code lo despierta el hook
Stop, a uno de Pi una extensión de wake que corre dentro de Pi, y a uno de OpenCode el sentinel, que publica el wake en su sesión a través de la API de OpenCode (ver Sentinel).
Decisiones cerradas
- Go, distribuido como binario por Homebrew y curl, sin dependencias de runtime.
- Claude Code es el harness por defecto del commander y de cada soldier. Un perfil de modelo puede correr sus soldiers en Pi u OpenCode; el binario llega a todos a través de una única interfaz
Harness. - herdr aloja los panes donde corren los soldiers.
- La inteligencia es markdown, no Go. El binario hace plomería determinista; el ruteo y el criterio viven en el núcleo de AGENTS.md y en las skills.
- El vocabulario del dominio se queda en inglés (commander, soldier, mission, scout, camp, sentinel) en todos los idiomas.
- Un solo commander. Siempre le hablás a un único commander.
Modelo de seguridad
| Capa | Garantía |
|---|---|
| camp | los commits y el working tree están aislados de los tuyos |
land | solo fast-forward; se niega con checkout sucio o branch divergida; nunca fuerza |
strike | se niega mientras el camp tenga trabajo sin commitear o sin aterrizar |
ship | hace push solo después de que pasan todos los pasos del tribunal, de forma determinista |
redispatch, strike --discard | las únicas operaciones que descartan un camp, por eso el commander pregunta primero |
El proceso en sí no está en un sandbox. Ver la advertencia de la introducción.