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:

SistemaURLFunción
GitHub Access Consolegithub-access-console.pages.devEstado SSH, clave, handshake
Segundo Cerebrosegundo-cerebro-e4v.pages.devGrafo, notas, búsqueda
Auth Portalauth-portal-px1.pages.devLogin, 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

CapaTecnologíaResponsabilidad
FrontendHTML/CSS/JS (o framework ligero)UI, navegación, animaciones
BackendCloudflare Pages FunctionsAPI, auth, proxy a servicios externos
Base de datosCloudflare D1 (SQLite)Usuarios, preferencias, tareas, caché
AlmacenamientoCloudflare KV / R2Archivos, notas, audio
AuthCloudflare Access o D1 + JWTLogin, registro, sesiones
VozWeb Speech API + Sesame CSMTranscripción y TTS
IAClaude API / OpenCodeChat con contexto
GitHubGitHub API (REST/GraphQL)Repos, issues, PRs, actividad
NotasGitHub 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):

  1. Unificar las páginas actuales (GitHub console, segundo cerebro, auth portal) en una sola webapp con navegación por tabs.
  2. Agregar PWA (manifest.json + service worker) para instalación en móvil.
  3. Agregar las funcionalidades nuevas (voz, IA chat, tareas) progresivamente.
  4. 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 actualSe convierte enEn la app unificada
GitHub Access ConsoleSección “GitHub”Tab con estado, repos, issues
Segundo Cerebro (Quartz)Sección “Grafo/Notas”Tab con grafo, búsqueda, notas
Auth PortalSección “Perfil/Login”Tab con login, personalización
CoucouIntegraciónNotificaciones, voz, monitor
OpenCodeBackend (IA)Chat con contexto
Hermes AgentBackend (coordinador)Tareas, memoria, automatización
Sesame CSMServicio de vozTTS con voz propia

Ventajas de la unificación

  1. Una sola URL para todo: cerebro.tudominio.com (o app.pages.dev).
  2. Un solo login: Auth Portal integrado, no pestañas separadas.
  3. Contexto compartido: La IA ve todas las notas, tareas, GitHub, etc.
  4. Móvil first: PWA instalable, funciona offline (con service worker).
  5. Menos fricción: Escribir nota → ver en grafo → crear issue → todo en un flujo.
  6. Personalización unificada: Un tema, un avatar, una configuración para todo.

Riesgos

  1. Complejidad: Unificar todo en una app es un proyecto grande.
  2. Mantenimiento: Más código en un solo lugar.
  3. Performance: El grafo de Quartz puede ser pesado en móvil.
  4. 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.