Decisiones — App unificada (móvil + webapp)
Decisión de alto nivel: unificar todo el ecosistema en una sola aplicación accesible desde móvil y web. Actualmente los sistemas están separados (GitHub console, segundo cerebro, auth portal, Coucou). La idea es integrarlos en una sola app.
No implementar aún — documentar, evaluar y priorizar.
Problema actual
El ecosistema tiene múltiples sistemas independientes:
| Sistema | URL | Función |
|---|---|---|
| GitHub Access Console | github-access-console.pages.dev | Estado SSH, clave, handshake |
| Segundo Cerebro | segundo-cerebro-e4v.pages.dev | Grafo, notas, búsqueda |
| Auth Portal | auth-portal-px1.pages.dev | Login, registro, personalización |
| Coucou | (app de escritorio) | Monitor de agentes, voz, notificaciones |
| OpenCode | (CLI local) | Programación |
| Hermes Agent | (pendiente) | Coordinador de tareas |
Problemas de esta separación:
- El usuario tiene que ir a URLs diferentes para cada función.
- No hay un flujo unificado: login en un lado, notas en otro, GitHub en otro.
- El contexto se pierde entre sistemas.
- En el móvil, hay que abrir múltiples pestañas/apps.
- No hay una experiencia “single app” que combine todo.
Decisión: App unificada
Decisión: Crear una sola aplicación (webapp + PWA/móvil) que integre todos los sistemas del ecosistema.
Nombre tentativo: Cerebro o Nexo (por definir).
Objetivo: Una sola app donde el usuario puede:
- Ver su grafo de conocimiento (segundo cerebro).
- Gestionar su conexión GitHub (estado, repos, issues).
- Autenticarse y personalizar su perfil.
- Capturar notas por voz (transcripción).
- Conversar con IA según su contexto.
- Ver tareas pendientes, bitácora y mejoras.
- Recibir notificaciones de Coucou/agentes.
- Todo desde el móvil o el navegador.
Arquitectura propuesta
┌─────────────────────────────────────────────────────────────┐
│ App Unificada │
│ (Webapp + PWA + Móvil) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Inicio │ │ Grafo │ │ GitHub │ │ Tareas │ │
│ │ (dashboard)│ │ (notas) │ │ (repos) │ │ (todo) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Voz │ │ IA Chat │ │ Perfil │ │ Ajustes │ │
│ │ (dictado)│ │(contexto)│ │(personal)│ │ (config) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Backend: Cloudflare (Pages + Functions + D1 + KV) │ │
│ │ - Auth (D1) │ │
│ │ - Notas (GitHub repo / D1) │ │
│ │ - GitHub API (proxy) │ │
│ │ - Voz (Web Speech API / Sesame CSM) │ │
│ │ - IA (Claude/OpenCode API proxy) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Capas
| Capa | Tecnología | Responsabilidad |
|---|---|---|
| Frontend | HTML/CSS/JS (o framework ligero) | UI, navegación, animaciones |
| Backend | Cloudflare Pages Functions | API, auth, proxy a servicios externos |
| Base de datos | Cloudflare D1 (SQLite) | Usuarios, preferencias, tareas, caché |
| Almacenamiento | Cloudflare KV / R2 | Archivos, notas, audio |
| Auth | Cloudflare Access o D1 + JWT | Login, registro, sesiones |
| Voz | Web Speech API + Sesame CSM | Transcripción y TTS |
| IA | Claude API / OpenCode | Chat con contexto |
| GitHub | GitHub API (REST/GraphQL) | Repos, issues, PRs, actividad |
| Notas | GitHub repo (second-brain) | Sincronización con Obsidian |
Funcionalidades unificadas
1. Dashboard (Inicio)
- Resumen del día: tareas pendientes, última nota, estado GitHub.
- Acceso rápido a todas las secciones.
- Widget de voz: “¿Qué quieres hacer hoy?”
- Notificaciones de Coucou/agentes.
2. Grafo (Segundo Cerebro)
- Grafo interactivo de notas (Quartz o implementación propia).
- Búsqueda de texto completo.
- Crear/editar notas desde la app.
- Ver bitácora, mejoras, decisiones.
3. GitHub
- Estado de conexión SSH.
- Lista de repositorios recientes.
- Issues abiertos y PRs pendientes.
- Actividad reciente (commits, pushes).
- Crear issue desde una nota.
4. Tareas (To-Do)
- Lista de tareas pendientes (de la bitácora).
- Marcar como completadas.
- Prioridades y fechas.
- Sincronización con la bóveda.
5. Voz
- Transcripción de voz (Web Speech API).
- Dictado de notas por voz.
- TTS para leer notas/respuestas.
- Clonación de voz (Sesame CSM, futuro).
6. IA Chat
- Conversación con Claude/OpenCode.
- Contexto automático de la bóveda (CONTEXTO.md).
- Búsqueda semántica en notas.
- Respuestas por voz (TTS).
7. Perfil
- Login/registro (D1).
- Personalización (color, avatar, nombre).
- Preferencias de la app.
- Estadísticas de uso.
8. Ajustes
- Tema (claro/oscuro/morado).
- Notificaciones.
- Integraciones (GitHub, LinkedIn, etc.).
- Sincronización (Syncthing, Git).
Opciones tecnológicas
Opción A: Webapp (PWA) — Recomendada para empezar
Stack: HTML/CSS/JS + Cloudflare Pages + Functions + D1.
Pros:
- Ya tenemos la infraestructura (Cloudflare Pages, D1, Functions).
- Funciona en cualquier navegador (móvil y escritorio).
- PWA permite instalación en el móvil (icono en home screen).
- Sin necesidad de app stores.
Contras:
- Limitado por las capacidades del navegador (notificaciones push limitadas, acceso a archivos limitado).
- No es una app “nativa”.
Esfuerzo: Medio (ya tenemos la base).
Opción B: App móvil nativa (React Native / Flutter)
Stack: React Native o Flutter + backend Cloudflare.
Pros:
- Acceso completo a APIs nativas (notificaciones, cámara, micrófono, archivos).
- Mejor rendimiento y UX.
- Publicable en App Store / Play Store.
Contras:
- Requiere aprender un framework nuevo (React Native o Flutter).
- Más complejo de mantener.
- Necesita cuentas de desarrollador (Apple/Google).
Esfuerzo: Alto.
Opción C: Tauri (desktop) + PWA (móvil)
Stack: Tauri (Rust + web frontend) para desktop, PWA para móvil.
Pros:
- Un solo codebase (web) para ambas plataformas.
- Acceso a APIs nativas en desktop.
- Coucou ya usa Tauri (podría integrarse).
Contras:
- Tauri móvil aún está en desarrollo.
- Complejidad de Rust.
Esfuerzo: Alto.
Decisión preliminar
Empezar con Opción A (PWA):
- Unificar las páginas actuales (GitHub console, segundo cerebro, auth portal) en una sola webapp con navegación por tabs.
- Agregar PWA (manifest.json + service worker) para instalación en móvil.
- Agregar las funcionalidades nuevas (voz, IA chat, tareas) progresivamente.
- Evaluar Opción B (React Native/Flutter) si se necesita más acceso nativo.
Plan de unificación (fases)
Fase 1: Unificar las páginas actuales (PWA)
- Crear una sola webapp con navegación por tabs/secciones.
- Integrar: Auth (login/register), Dashboard, Grafo, GitHub, Tareas.
- Agregar manifest.json y service worker (PWA).
- Desplegar en Cloudflare Pages.
Validación: Una sola URL, instalable en móvil, todas las funciones accesibles.
Fase 2: Agregar voz y IA chat
- Botón de micrófono (Web Speech API) para dictado.
- Chat con IA (Claude/OpenCode) con contexto de la bóveda.
- TTS para leer notas/respuestas.
- Botón “leer nota” en cada nota.
Validación: Poder hablar y recibir respuesta por voz.
Fase 3: Integrar GitHub y tareas
- Widget de actividad GitHub (repos, issues, PRs).
- Lista de tareas (de la bitácora).
- Crear issue desde nota.
- Sincronización con la bóveda.
Validación: Dashboard completo con GitHub + tareas.
Fase 4: Integrar Coucou y notificaciones
- Conectar con Coucou (hooks/MCP).
- Notificaciones push (tareas pendientes, recordatorios).
- Acceso remoto via Telegram (opcional).
Validación: Notificaciones funcionando, acceso desde móvil.
Fase 5: Sesame CSM y voz avanzada
- Clonación de voz con Sesame CSM.
- TTS con voz propia.
- Transcripción mejorada (Whisper).
Validación: Voz propia funcionando.
Componentes del ecosistema actual → App unificada
| Componente actual | Se convierte en | En la app unificada |
|---|---|---|
| GitHub Access Console | Sección “GitHub” | Tab con estado, repos, issues |
| Segundo Cerebro (Quartz) | Sección “Grafo/Notas” | Tab con grafo, búsqueda, notas |
| Auth Portal | Sección “Perfil/Login” | Tab con login, personalización |
| Coucou | Integración | Notificaciones, voz, monitor |
| OpenCode | Backend (IA) | Chat con contexto |
| Hermes Agent | Backend (coordinador) | Tareas, memoria, automatización |
| Sesame CSM | Servicio de voz | TTS con voz propia |
Ventajas de la unificación
- Una sola URL para todo:
cerebro.tudominio.com(oapp.pages.dev). - Un solo login: Auth Portal integrado, no pestañas separadas.
- Contexto compartido: La IA ve todas las notas, tareas, GitHub, etc.
- Móvil first: PWA instalable, funciona offline (con service worker).
- Menos fricción: Escribir nota → ver en grafo → crear issue → todo en un flujo.
- Personalización unificada: Un tema, un avatar, una configuración para todo.
Riesgos
- Complejidad: Unificar todo en una app es un proyecto grande.
- Mantenimiento: Más código en un solo lugar.
- Performance: El grafo de Quartz puede ser pesado en móvil.
- Privacidad: Todo en un solo lugar = un solo punto de fallo.
Decisión preliminar
Empezar con Fase 1 (unificar páginas actuales en PWA):
- No reescribir todo desde cero.
- Tomar el auth portal como base (ya tiene login, registro, personalización).
- Agregar tabs/secciones para: Grafo, GitHub, Tareas.
- Usar iframe o fetch para integrar el segundo cerebro (Quartz) dentro de la app.
- Agregar PWA (manifest + service worker).
- Evaluar si vale la pena migrar a un framework (React/Vue/Svelte) después.
Conexión con decisiones anteriores
Esta decisión unifica todas las anteriores:
- Transcripción de voz → se integra en la app unificada (botón de micrófono).
- Contexto IA → la app tiene acceso a todas las notas y datos.
- Voz propia (Sesame CSM) → se integra como servicio de TTS.
- GitHub → sección de la app.
- Coucou → integración via hooks/MCP.
- Hermes Agent → backend coordinador de la app.
Estas son decisiones de arquitectura. No se ha implementado nada todavía. Cada fase se evaluará y priorizará antes de construir.