Arquitectura — Harness Propio Híbrido
Arquitectura — Harness Propio Híbrido
Sección titulada «Arquitectura — Harness Propio Híbrido»Borrador 10-jun-2026. TODO se valida construyéndolo (regla: probar antes de escribir).
Diagrama general
Sección titulada «Diagrama general»┌─────────────────────── 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ón | Opción | Por qué |
|---|---|---|
| Fuente de verdad | Markdown en git | Portable, versionado, sobrevive a cualquier herramienta |
| DB local | PGLite para empezar → Postgres+pgvector si crece | Zero-config primero; el video muestra la migración |
| Transporte MCP | stdio local / streamable HTTP remoto | Mismo server, dos caras |
| Cloud | Cloud Run | Terreno conocido del canal (videos ADK/A2A); scale-to-zero = costo mínimo |
| Auth remota | OAuth en el endpoint MCP | [INVESTIGAR opciones: IAP, OAuth proxy, API key + TLS] |
| Sync local↔cloud | git push/pull + GCS backup | Simple, auditable; evitar sync mágico |
| Crons | Cloud Scheduler → job de ingesta | El momento “Garry Tan”: 66 crons. Empezamos con 2-3 |
| Seguridad memoria | Permisos 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)»docker compose up→ stack completo en un comando- Los 3 CLIs conectados al mismo gateway local
- Deploy del endpoint a Cloud Run + autenticación
- Desde OTRA máquina (notebook secundario), un agente consulta el mismo cerebro
- Cron de ingesta: scheduler dispara → ingiere fuente → el grafo crece (verificable a la mañana)
- Cambio de modelo en vivo a mitad de tarea — mismo contexto, distinto modelo
- 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”
Costos a medir (sección honesta del video)
Sección titulada «Costos a medir (sección honesta del video)»- 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
Riesgos / preguntas abiertas
Sección titulada «Riesgos / preguntas abiertas»- 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)