Files
fn_registry/docs/capabilities/claude-fleet.md
T
egutierrez 927437a8d8 feat(infra): grupo claude-fleet — FleetView TUI + orquestacion de Claudes
Sistema FleetView para centralizar la flota de procesos Claude Code vivos en una
sola ventana kitty + tmux (socket aislado -L fleet) con un panel TUI:

- list_claude_fleet (+ tipo claude_fleet): escanea ~/.claude/sessions + goals +
  runtime, valida procesos vivos (anti-PID-reciclado), join por sessionId.
- list_resumable_claudes (+ tipo resumable_claude): sesiones cerradas reanudables.
- wrappers tmux: tmux_new_claude_window (con --resume), tmux_swap_window_into_console
  (preserva ancho del sidebar), tmux_map_claude_panes.
- launch_kittyclaude: comando entrypoint; instala atajos alt+flechas/enter/n/0/k/r,
  mouse on, remain-on-exit off; fija el ancho del sidebar con hooks.
- docs/capabilities/claude-fleet.md + entrada en el INDEX.

Incluye ademas funciones datascience en progreso (excel/duckdb/postgres) y ajustes
varios de docs e infra de otra sesion, agrupados aqui para no perderlos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:04:41 +02:00

3.9 KiB

Capability group: claude-fleet

Operar la flota de procesos Claude Code vivos en la máquina como una sola unidad: descubrirlos, listarlos en un panel TUI y centralizarlos en una ventana kitty con tmux donde se conmuta cuál está embebido a la derecha. Reemplaza el caos de N ventanas kitty dispersas por un único punto de entrada.

Pieza visible: la app fleetview (TUI). Entrypoint: el comando kittyclaude.

Funciones

ID Firma Qué hace
list_claude_fleet_go_infra ListClaudeFleet() ([]ClaudeFleet, error) Escanea ~/.claude/sessions/*.json + goals/, valida procesos vivos (anti-PID-reciclado), join por sessionId → lista tipada con status/objetivo/cwd/target.
launch_kittyclaude_bash_infra launch_kittyclaude [--cwd <d>] [--bin <p>] [--session <n>] [--cols <n>] Entrypoint: abre kitty con sesión tmux (socket aislado -L fleet) de dos panes (TUI izq + Claude der). Instala atajos alt+* e hijos del sidebar.
tmux_new_claude_window_go_infra TmuxNewClaudeWindow(socket, session, cwd string) (string, error) Crea una window tmux nueva con claude --dangerously-skip-permissions. Devuelve el window_id.
tmux_swap_window_into_console_go_infra TmuxSwapWindowIntoConsole(socket, session, windowID string) error Trae el Claude de windowID al pane derecho de console (junto a la TUI), parkea el anterior, re-fija el ancho del sidebar.
tmux_map_claude_panes_go_infra TmuxMapClaudePanes(socket string) (map[int]string, error) Mapa claudePID → window_id de los Claude que viven en la sesión (vía list-panes + descendencia /proc). Permite a la TUI saber cuáles son conmutables.

App relacionada: fleetview_go_infra (apps/fleetview/) — la TUI Bubble Tea que consume list_claude_fleet y orquesta los wrappers tmux.

Ejemplo canónico (end-to-end)

# 1. Compilar la TUI una vez.
cd ~/fn_registry/apps/fleetview && go build -o fleetview .

# 2. Abrir la flota (una ventana kitty: panel izq + Claude der).
fn run launch_kittyclaude

# 3. Dentro de la ventana, desde CUALQUIER pane (incluido escribiendo en Claude):
#    alt+↑/↓     mueve el cursor de la lista
#    alt+enter   conmuta el pane derecho al Claude seleccionado
#    alt+n       abre un Claude nuevo (window en fleet) y conmuta a él

# Inspección headless de la flota sin abrir nada:
fn run list_claude_fleet | jq '.[] | {rename, status, goal}'

Bajo el capó de alt+enter/alt+n: tmux redirige la tecla al pane de la TUI (bind -n M-Enter send-keys -t console.0 Enter); la TUI resuelve el Claude seleccionado con TmuxMapClaudePanes y lo trae con TmuxSwapWindowIntoConsole (o crea uno con TmuxNewClaudeWindow).

Fronteras (qué NO cubre)

  • No gestiona Claudes remotos (ej. los de una sesión tmux del móvil): se listan como contexto pero no se embeben localmente (no son panes de fleet).
  • Adopción de Claudes sueltos pendiente: un Claude vivo en otra ventana kitty (fuera de fleet) se lista, pero alt+enter sobre él aún no lo trae — requerirá relaunch claude --resume <sessionId> dentro de fleet (patrón de reboot_all_claudes_bash_infra).
  • No reinicia ni mata Claudes (todavía): resume/kill desde el panel son fase posterior. Para reiniciar toda la flota existe reboot_all_claudes_bash_infra.
  • Linux + kitty + tmux únicamente (build tag !windows, usa /proc).

Prerequisitos

  • kitty y tmux en el PATH. La sesión vive en un server tmux aislado (-L fleet).
  • La TUI fleetview compilada (apps/fleetview/fleetview).
  • Claude Code ≥ 2.1.x (escribe ~/.claude/sessions/<PID>.json con status).

Notas

  • Toda la sesión usa el socket -L fleet: los atajos bind -n no afectan al tmux por defecto del usuario; tmux -L fleet kill-server lo limpia entero.
  • reboot_all_claudes_bash_infra comparte la misma fuente de verdad (~/.claude/sessions/<PID>.json) y es el complemento para reiniciar la flota.