Tus agentes en paralelo, en un grafo que podés recorrer.
Cubito es un frontend espacial para orquestar agentes de código. Cada worktree es un nodo, cada fan-out es una camada de ramas que crece en el espacio, cada agente vive en la escena con su terminal real, y el sistema que están construyendo se dibuja en vivo mientras escriben.
Features
Tu proyecto es un grafo
Cada worktree es un nodo en una escena 3D navegable. Qué rama engendró a cuál deja de ser metadata escondida y se vuelve una arista que podés seguir con la cámara.
Los agentes viven en la escena
Cada nodo carga su terminal: PTYs reales, streameados por RPC y renderizados dentro del mundo. Un cubo ámbar que pulsa es un agente esperando tu respuesta, imposible de ignorar.
Una camada, un prompt
Desde cualquier nodo, fan-out: N worktrees hijos nacen en paralelo, cada uno con su agente, comparables entre sí. Mirás la camada, elegís el ganador y lo mergeás.
Un daemon, un RPC, una escena.
orcad corre de fondo
Es un runtime headless en Node 24, sin Electron. Registra repos, crea worktrees con linaje padre → hijo, mantiene terminales PTY que sobreviven reinicios, coordina runs multi-agente en SQLite y parsea el código de cada worktree en un grafo del sistema.
Cubito le habla por WebSocket
Un RPC versionado con envelope {id, ok, result | error} y keepalives, en seis namespaces: worktree.*, terminal.*, git.*, orchestration.*, system.* y agent.*. Las capacidades se negocian al parear: un Cubito nuevo contra un daemon viejo simplemente no ofrece lo que el daemon no tiene. El runtime es la fuente de verdad: la escena se resincroniza al reconectar.
La escena lo hace espacial
Three.js dibuja cada worktree como un cubo y cada linaje como una arista, con una cámara en perspectiva de cuatro alturas: general, isla, foco y comparar. El estado del agente vive en el color: azul trabajando, ámbar esperando input, gris idle. El pairing con el daemon es E2EE desde el navegador.
Reiniciá el daemon. El grafo sigue ahí.
Cubito corre orcad, un runtime headless en Node 24 sin Electron, como daemon de fondo y le habla por su RPC versionado. Repos, worktrees con linaje, PTYs que sobreviven reinicios, runs multi-agente y el grafo del sistema ya viven ahí. Cubito los hace espaciales.
$
node out/orcad/orcad.js --bind 127.0.0.1 --json
● orcad escuchando · runtime 4f2a9c
$
orca worktree create --name auth-retry --agent claude
… checkout · setup · agente lanzado
$
kill -HUP orcad && node out/orcad/orcad.js
● restaurando 6 nodos…
✓
linaje main → auth-retry — intacto
✓
pty claude — reattached
Todo el ciclo, dentro de la escena.
Fan-out gráfico
Un prompt, N agentes: desde cualquier nodo nacen N worktrees hijos en paralelo, cada uno con su agente. Los gates y las preguntas del run aparecen al lado del nodo que las levantó, y las respondés sin salir de la escena.
Comparar y mergear
La camada en una vista de rieles, los hijos lado a lado. Elegís el ganador, se mergea al padre sin abrir una terminal y, si el padre está limpio, sincronizás su working tree en el mismo paso.
Grafo del sistema en vivo
El código de cada worktree, parseado en routers, endpoints, servicios y bases de datos. Express, Fastify y NestJS hoy, con prefijos entre archivos, setGlobalPrefix y RouterModule. El diff sin commitear se pinta sobre el grafo mientras los agentes escriben.
Linaje y estado a simple vista
Qué rama salió de cuál deja de ser metadata: cada worktree es un cubo y cada relación padre → hijo, una arista. El color es el estado: azul trabajando, ámbar esperando tu input, gris idle, wireframe archivado.
Terminales reales en la escena
Cada nodo lleva sus PTYs: la terminal del agente primero, más shells extra con una tecla. Streameadas por RPC, renderizadas dentro del mundo y persistentes entre reinicios.
Diff por worktree
Riel de archivos más panel de líneas para cualquier worktree, consciente de renames. Lo que cambió un agente, sin salir del grafo.
Cuatro alturas de cámara
General, isla, foco y comparar: poses con tween y una pila que Esc desenrolla. Hover y click con raycaster, doble click baja a foco, Enter entra a la isla. Todo también desde el teclado: hjkl, f, v, g, x, d, c, t y ⌘K.
Agentes listos para trabajar
Claude Code, Codex, Cursor y Copilot arrancan sobre su prompt sin diálogos de confianza: el trust queda pre-marcado por worktree, local o por SSH, respetando CLAUDE_CONFIG_DIR y CODEX_HOME por cuenta.
Conexión E2EE y compatible
Pairing cifrado de punta a punta desde el navegador contra tu daemon, local o remoto. Las capacidades se negocian al conectar, así un Cubito nuevo degrada bien contra un daemon viejo. Tu código no pasa por terceros.