Ir al contenido

Arquitectura — Harness Propio Híbrido

Borrador 10-jun-2026. TODO se valida construyéndolo (regla: probar antes de escribir).

┌─────────────────────── LOCAL (Docker Compose) ───────────────────────┐
│ │
│ brain/ (markdown, git) ←— fuente de verdad, volumen montado │
│ │ sync │
│ gbrain (PGLite dev / Postgres+pgvector prod) │
│ │ │
│ MCP Gateway ——— tools: memoria (search/think/write), tools propias │
│ │ │
│ Obsidian (mismo volumen — capa visual humana) │
└────────┬──────────────────────────────────────────────────────────────┘
│ sync selectivo / backup
┌────────▼─────────────────── CLOUD (GCP) ─────────────────────────────┐
│ Cloud Run: endpoint MCP remoto (streamable HTTP + OAuth) │
│ → agentes acceden al cerebro desde CUALQUIER máquina │
│ GCS: backup del brain + estado │
│ Cloud Scheduler + job: crons de ingesta (RSS, repos, notas de voz…) │
│ → "el cerebro amanece más inteligente" │
└───────────────────────────────────────────────────────────────────────┘
│ git push → rebuild automático
┌────────▼──────────────── CAPA VISUAL (Cloudflare) ────────────────────┐
│ Cloudflare Pages: el brain (Astro+Starlight) publicado como sitio │
│ Cloudflare Access (Zero Trust): candado — solo Nicolás entra │
│ → el cerebro legible desde cualquier navegador/teléfono │
│ → demo local: dev server de Astro con hot reload (actualización │
│ INSTANTÁNEA en pantalla cuando un agente escribe memoria) │
└───────────────────────────────────────────────────────────────────────┘
CLIENTES (visitantes intercambiables, todos vía MCP):
Claude Code · OpenCode · Antigravity CLI · OpenClaw (24/7)

Decisiones de diseño (con su porqué — material del video)

Sección titulada «Decisiones de diseño (con su porqué — material del video)»
DecisiónOpciónPor qué
Fuente de verdadMarkdown en gitPortable, versionado, sobrevive a cualquier herramienta
DB localPGLite para empezar → Postgres+pgvector si creceZero-config primero; el video muestra la migración
Transporte MCPstdio local / streamable HTTP remotoMismo server, dos caras
CloudCloud RunTerreno conocido del canal (videos ADK/A2A); scale-to-zero = costo mínimo
Auth remotaOAuth en el endpoint MCP[INVESTIGAR opciones: IAP, OAuth proxy, API key + TLS]
Sync local↔cloudgit push/pull + GCS backupSimple, auditable; evitar sync mágico
CronsCloud Scheduler → job de ingestaEl momento “Garry Tan”: 66 crons. Empezamos con 2-3
Seguridad memoriaPermisos por agente en el gateway (lectura/escritura)Capa 2 del video de Skills: no darle la capacidad

Demos a validar (cada una se prueba antes del guion v2)

Sección titulada «Demos a validar (cada una se prueba antes del guion v2)»
  1. docker compose up → stack completo en un comando
  2. Los 3 CLIs conectados al mismo gateway local
  3. Deploy del endpoint a Cloud Run + autenticación
  4. Desde OTRA máquina (notebook secundario), un agente consulta el mismo cerebro
  5. Cron de ingesta: scheduler dispara → ingiere fuente → el grafo crece (verificable a la mañana)
  6. Cambio de modelo en vivo a mitad de tarea — mismo contexto, distinto modelo
  7. Prueba de seguridad (patrón Skills): agente con permiso de solo-lectura intenta escribir memoria → el gateway lo rechaza → “capa dos, el agente no tiene la capacidad”
  • Cloud Run scale-to-zero: ¿cuánto al mes con uso personal real?
  • GCS backup: centavos esperables
  • Embeddings (indexación inicial + incremental)
  • Comparar contra: precio de un SaaS de memoria equivalente
  • Latencia del endpoint remoto vs local (medir, mostrar honesto)
  • Prompt injection → memoria compartida: mitigación con permisos de escritura + revisión
  • ¿PGLite aguanta el brain completo de Nicolás? (límite ~50K páginas — sobra, pero validar)
  • Modo offline: el harness local debe funcionar sin internet (solo pierde el remoto)