# 2026-03-01

- Usuario pidió cambiar formato: responder en texto por defecto para no gastar tokens de ElevenLabs.
- Consultó si se puede hacer “hookup” con Claude/Anthropic vía CLI/OpenClaw en esta VPS.
- Duda clave del usuario: si una suscripción mensual a Claude Pro alcanza para integrarlo.
- Usuario pidió priorizar setup en VPS de Gemini + Codex (Claude más adelante).
- Usuario está usando/planea usar Happy Coder en Pixel 9a para acceso remoto.
- Usuario interesado en Docker por aislamiento, seguridad y portabilidad.
- Se instaló Docker Engine + Compose plugin en la VPS.
- Se dejó stack portable en `ops/docker-cli-stack/` con Gemini + Codex containerizados.
- Stack validado: Gemini OK y Codex OK dentro de contenedor (con API keys por entorno).
- Detectado en móvil/wezterm: Gemini OAuth interactivo puede quedar colgado; mitigación aplicada con wrapper `g` one-shot y uso de `GEMINI_API_KEY`.
- Se ajustó stack Docker para GitHub privado: `GH_TOKEN`/`GITHUB_TOKEN` pasan al contenedor y se configura git credentials automáticamente (clone/ls-remote privado OK).
- Diagnóstico Codex en contenedor: con sandbox `workspace-write` no resuelve `github.com` para comandos del agente; solución práctica para tareas con git/red: usar `codex -s danger-full-access` (wrapper `cn`).
- Confirmación del usuario: por ahora descartar Claude Code y continuar con flujo Codex + Gemini.
- Se creó orquestador local `ops/cli-jobs/jobctl.sh` con hooks de finalización (`.taskruns/completed.ndjson`) para correr tareas remotas de Gemini/Codex y saber cuándo terminan.
- Se configuró notificación automática por Telegram al terminar cada job (estado + preview), con resultado de entrega registrado en `.taskruns/hook.log`.
- Se publicó resumen técnico completo del día en Notion: https://www.notion.so/31625cc88a6381e7bf01dfdb3223bde0
- Usuario compartió “Memoria de Integración” operativa:
  - Usar `bw get password "nombre"` para secretos cuando el vault esté desbloqueado.
  - Flujo de sesión Bitwarden: `bw-sync` al iniciar (carga `BW_SESSION` desde `~/.bw/session`), y `bw-unlock` si expira.
  - Wrappers de IA preferidos: `g` (Gemini), `c` (Codex seguro), `cn` (Codex full-access/red).
  - Claves (Gemini/OpenAI/GitHub) se inyectan desde `~/.openclaw/openclaw.json` al abrir shell.
  - Contexto principal de trabajo: `~/.openclaw/workspace/ops/docker-cli-stack`.
  - Si aparece “API Key missing”: `source ~/.bashrc && bw-sync`.
- Se validó estado “Maxxxed Out”:
  - Archivo de referencia encontrado en `~/.openclaw/workspace/MEMORIES.md` (el path informado sin `.openclaw` no existe).
  - Nuevas directivas de despliegue: usar `pipo-deploy <puerto>` con puertos 3001-3010 para exponer servicios en `https://miopenclaw-vnic.tail9799d2.ts.net`.
  - Modo de trabajo esperado: no solo codear, también levantar y mostrar resultados en vivo cuando aplique.
- Proyecto “Coto Reverse” Fase 1 ejecutado:
  - Se creó toolkit en `coto-reverse/` (`sniff_and_mine.js`, `run_phase1.sh`, `package.json`) con Playwright + Bitwarden (`cotodigital`) + UA móvil.
  - Se mapeó API crítica en `coto-reverse/data/api_map.json`, incluyendo endpoints de login (`cProfileActor/login`), búsqueda (`/assembler ... Ntt`), carrito (`addOrRemoveItemToOrderV2`), historial (`getPedidosV2`) y detalle (`getPedidosDetalle`).
  - Se minaron pedidos por API y se filtraron entregas en `CÉSPEDES 2491`; resultado final estabilizado: 55 órdenes capturadas en corrida final, 4 órdenes entregadas que cumplen filtro, Top 10 generado en `coto-reverse/data/top10.json`.
  - Se generó dashboard estático en `coto-report/` (Tailwind + modal de detalle por producto) con `report-data.js` actualizado.
  - Se publicó en puerto 3001 con servidor Python y `pipo-deploy 3001`; URL de auditoría: `https://miopenclaw-vnic.tail9799d2.ts.net`.
  - Ajuste UX importante: se detectó por reverse/sniff que Coto usa estado interno Angular (`orderService.orderIdSelected`) para abrir detalle; por eso deep-link a `/micuenta/pedidos/detalle` falla con “No se pudo obtener el id...”.
  - Workaround implementado: dashboard ahora incluye “Abrir orden exacta (API JSON)” con `getPedidosDetalle?orderId=...` + muestra `Compra #` y `Pedido #`; se mantiene link a `Mis Pedidos` como fallback.
