# Captain Claude Mobile - Estado del Proyecto **Fecha:** 2026-01-17 **Versión:** v3.1 **Estado:** FUNCIONAL --- ## Resumen App móvil para chatear con Claude Code usando `claude -p --output-format stream-json`. --- ## Arquitectura v3 ### Backend (`captain_api_v3.py`) - **Puerto:** 3030 - **Servicio systemd:** `captain-claude` - **Método:** `claude -p --output-format stream-json` - **Contexto:** `--resume SESSION_ID` mantiene historial de conversación - **Auto-connect:** Al crear sesión, se conecta automáticamente - **Almacenamiento:** Sesiones en memoria (se pierden al reiniciar) ### Flutter App - **APK:** `260117_captain-claude-v3.1.apk` - **UI:** Simplificada - botón + para nuevo chat, logout - **Conexión:** WebSocket a `wss://captain.tzzrarchitect.me/ws/chat` --- ## API WebSocket ### Mensajes del Cliente ```json {"token": "jwt"} // Autenticación {"type": "create_session", "name": "Chat 1"} // Crear sesión {"type": "message", "content": "hola"} // Enviar mensaje {"type": "ping"} // Keep-alive ``` ### Respuestas del Servidor ```json {"type": "init", "sessions": [...]} // Estado inicial {"type": "session_created", "session_id": "x", "name": "y"} // Sesión creada {"type": "session_connected", "session_id": "x", "name": "y"} // Conectado {"type": "output", "content": "..."} // Respuesta de Claude {"type": "done", "session_id": "uuid"} // Respuesta completa {"type": "error", "message": "..."} // Error ``` --- ## Archivos ``` apps/captain-mobile-v2/ ├── backend/ │ ├── captain_api_v3.py # Backend actual │ ├── captain-claude.service # Servicio systemd │ └── test_*.py # Tests ├── flutter/ │ ├── lib/ │ │ ├── screens/chat_screen.dart │ │ ├── providers/chat_provider.dart │ │ ├── services/chat_service.dart │ │ └── config/api_config.dart │ └── build/app/outputs/flutter-apk/app-release.apk └── ESTADO_PROYECTO.md ``` --- ## Comandos Útiles ```bash # Estado del servicio systemctl status captain-claude # Logs journalctl -u captain-claude -f # Reiniciar systemctl restart captain-claude # Compilar APK cd /home/architect/captain-claude/apps/captain-mobile-v2/flutter /home/architect/flutter/bin/flutter build apk --release # Subir a Nextcloud /home/architect/bin/rclone copy build/app/outputs/flutter-apk/app-release.apk nextcloud-architect:app/ ``` --- ## Siguiente Paso: Sesiones Screen ### Objetivo Crear versión capaz de: 1. Listar sesiones screen existentes 2. Conectarse a sesiones screen en tiempo real 3. Crear nuevas sesiones screen con Claude Code 4. Enviar input a sesiones activas ### Diferencia | v3 Actual | Screen Sessions | |-----------|-----------------| | `claude -p` por mensaje | Proceso persistente en screen | | Sesiones en memoria | Sesiones reales en servidor | | Solo texto limpio | Output completo | | Sin acceso a otras screens | Acceso a cualquier screen | ### Implementación 1. Backend v4 con endpoints para screen 2. Parsing de output ANSI 3. Flutter con selector de screens --- ## Historial - **v3.1** (17/01/26): UI simplificada, auto-connect en backend - **v3.0** (17/01/26): Cambio a `claude -p --output-format stream-json` - **v2.x** (17/01/26): Intentos con screen+hardcopy (descartado)