DESARROLLO-LOG — V2 Harness Propio
DESARROLLO-LOG — V2 Harness Propio
Sección titulada «DESARROLLO-LOG — V2 Harness Propio»★★ 11-jun 00:15-00:45 — MIGRACIÓN A TOPOLOGÍA 2 EJECUTADA (autorizada por Nicolás)
Sección titulada «★★ 11-jun 00:15-00:45 — MIGRACIÓN A TOPOLOGÍA 2 EJECUTADA (autorizada por Nicolás)»El PGLite local murió en el proceso (el pkill lo corrompió más allá del postmaster.pid — hallazgo: ni el fix oficial garantiza supervivencia del embebido; WASM sano, data dir muerto, backup en ~/.gbrain.bak-pglite-corrupto-20260611). Cero pérdida: páginas restauradas a mano.
Arquitectura final FUNCIONANDO:
Claude Code ──(.mcp.json HTTP + token propio)──┐Antigravity ──(serverURL + token propio)───────┼→ gbrain serve --http (:8090, OAuth 2.1)Terminal/hook ─(gbrain CLI → postgres :5433)───┘ ↓ Postgres+pgvector (Docker, 59 páginas)- OAuth real por cliente: POST /admin/login (cookie) → /admin/api/register-client (un cliente por CLI, revocables) → /token client_credentials → bearer 30 días. Auth verificada: sin token = 401.
- Config agy con
serverURL+headersVALIDADA (probado end-to-end con —print). - Prueba de simultaneidad PASADA: terminal (search) + MCP HTTP (get_page) en paralelo + agy leyendo la decisión — los tres sobre el mismo cerebro, sin contención. “Postgres tolera conexiones concurrentes” (doc oficial) — confirmado empíricamente.
- Puerto 5433 publicado para el CLI del host; el hook SessionEnd ahora escribe al cerebro COMPARTIDO.
- ⚠️ Seguridad: .mcp.json (contiene token) agregado a .gitignore ANTES de cualquier push. Tokens/secrets de clientes NO se anotan aquí — viven solo en las configs locales.
- Pendiente menor: rotar el admin token si se graba en cámara; GBRAIN_ADMIN_BOOTSTRAP_TOKEN para producción.
Sesión nocturna autónoma 10-jun-2026 (~23:00-23:30). Costo: $0 (todo local).
✅ FUNCIONA — probado esta noche
Sección titulada «✅ FUNCIONA — probado esta noche»| Qué | Evidencia |
|---|---|
| Stack local completo en Docker | docker compose up -d → Postgres 17 + pgvector + gbrain MCP HTTP |
| Imagen propia (oven/bun + gbrain) | scripts/Dockerfile + entrypoint.sh idempotente (init si no hay config) |
| Health del cerebro dockerizado | curl localhost:8090/health → {"status":"ok","version":"0.42.38.0","engine":"postgres"} |
| Brain real en el Postgres del contenedor | volumen :ro montado + gbrain import /brain adentro → 55 páginas, 635 chunks, search OK |
| Build del brain para Cloudflare | npm run build → 56 páginas, 5.3s, Pagefind incluido |
El stack quedó CORRIENDO (puertos: gbrain en host 8090; admin token en docker compose logs gbrain).
Para bajarlo: cd videos/harness-propio/scripts && docker compose down (los datos persisten en el volumen).
🐛 BUGS RESUELTOS (material de “errores en vivo” para el guion)
Sección titulada «🐛 BUGS RESUELTOS (material de “errores en vivo” para el guion)»- Puerto 8080 ocupado por otro contenedor Docker del host → harness movido a 8090.
- Bind 127.0.0.1 dentro del contenedor → inalcanzable desde fuera. Causa: desde v0.34.1
gbrain hace bind loopback por defecto (decisión de seguridad: no publicar el cerebro a la
LAN por accidente). Fix:
--bind 0.0.0.0en el entrypoint. Encontrado leyendo el código fuente (src/commands/serve-http.ts:400) — momento “leí su código” para el video.
⏸️ LISTO-PARA-CORRER — necesita decisiones de Nicolás
Sección titulada «⏸️ LISTO-PARA-CORRER — necesita decisiones de Nicolás»| Qué | El paso |
|---|---|
| Deploy a Cloud Run | scripts/deploy-cloud-run.sh listo. Prerequisitos: (1) confirmar cuenta/proyecto gcloud — la sesión está en antonia.dua90@gmail.com / project-cbd42e2d-... (Nicolás confirmó que la cuenta es suya; falta confirmar que ESE proyecto es el deseado); (2) Postgres externo (Supabase/Neon free tier o Cloud SQL) — el disco de Cloud Run es efímero, PGLite se pierde con scale-to-zero; (3) gcloud secrets create gbrain-db-url |
| Brain → Cloudflare Pages + Access | docs/cloudflare-brain.md — 3 comandos + config de Access. Requiere wrangler login (browser) |
| Cron de ingesta | scripts/cron-ingesta.sh — local: línea de crontab incluida; cloud: comandos de Cloud Run Jobs + Scheduler en el mismo archivo |
| Token de admin para producción | env GBRAIN_ADMIN_BOOTSTRAP_TOKEN (descubierto en el código) — evita que el token rote y se filtre en logs |
📋 HALLAZGOS de arquitectura
Sección titulada «📋 HALLAZGOS de arquitectura»- No hace falta gateway custom:
gbrain serve --httpES el gateway (OAuth 2.1, DCR opcional,--public-urlpara proxies). El docs/arquitectura.md se simplifica. gbrain connect <url> --token --installenchufa Claude Code a un cerebro remoto en UN comando — ese es el momento demo del endpoint Cloud Run.- El mismo Dockerfile sirve local y Cloud Run (PORT env) — un solo artefacto, dos mundos. Tesis del video demostrada en la infra misma.
- Postgres+pgvector en compose con healthcheck → gbrain espera la DB sana antes de partir.
Siguiente sesión
Sección titulada «Siguiente sesión»- Decisión: ¿proyecto GCP para esta infra? → correr
deploy-cloud-run.sh - Decisión: ¿Supabase, Neon o Cloud SQL para el Postgres del cerebro remoto?
-
wrangler login→ deploy del brain + Access (10 min) - Probar
gbrain connectcontra el endpoint de Cloud Run desde otra máquina - Cron nocturno instalado + verificar “el cerebro amanece más inteligente”