Files
captain-claude/apps/captain-mobile-v2/ESTADO_PROYECTO.md
ARCHITECT 48e66b1129 Captain Mobile v3.1 - App funcional
- Backend: claude -p --output-format stream-json
- --resume para mantener contexto de conversación
- Auto-connect al crear sesión
- UI simplificada (botón + y logout)
- Servicio systemd: captain-claude

Siguiente paso: sesiones screen

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 00:03:15 +00:00

3.4 KiB

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

{"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

{"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

# 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)