macOS & Linux · motor orcad headless · Node 24, sin Electron

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.

Corre sobre un daemon local · pairing E2EE desde el navegador
Todo es un nodo
worktree agente terminal fan-out compare diff grafo del sistema run de orquestación

Features

grafo.linaje

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.

agentes.vivos

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.

fan-out.camada

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.

cómo.funciona

Un daemon, un RPC, una escena.

Cubito · frontend 3DThree.js · WebGPU · cuatro alturas de cámaraWebSocket RPC · envelope versionado ·capacidades negociadasworktree.*terminal.*git.*orchestration.*system.*agent.*orcad · daemon headlessgitworktrees +linajePTYnode-pty,sobrevivereiniciosorquestaciónDAG en SQLitegrafo del sistemacrawl del código + parsers AST · Express ·Fastify · NestJS
  1. 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.

  2. 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.

  3. 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.

runtime.orcad

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.

worktree.*terminal.*git.*orchestration.*system.*agent.*
$ 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
qué.hace

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.

tecnologías
Three.js WebGPU TypeScript Vite WebSocket RPC node-pty SQLite git worktrees Node 24 AST parsers