La Arquitectura Completa de OpenClaw Que Realmente Escala — Memoria, Cron Jobs, Dashboard y los Errores Que Todos Cometen
Como un archivo de guardado de Skyrim que se corrompió porque instalaste 200 mods esperando que todo saliera bien.
⚡ Actualización (20 Feb, 2026): Esta guía de arquitectura se escribió antes de que Anthropic prohibiera los tokens OAuth de Claude Max. Los patrones de abajo (memoria, cron, dashboard, skills) no han cambiado — pero sí la capa del modelo.
Qué cambió: Mi stack ahora usa Kimi K2.5 principal + MiniMax M2.5 de respaldo, vía OpenRouter en dos VPS de $5/mes (Hostinger + Hetzner). De $200/mes a $15. La arquitectura se volvió más simple — sin gestión OAuth, sin bailar con límites de rate. Migración completa: reconstruido por $15.
He estado usando OpenClaw a diario desde que aún se llamaba Clawdbot. Reconstruí mi arquitectura tres veces. La primera versión era un desastre de archivos markdown planos que colapsó bajo su propio peso después de 10 días. La segunda fue mejor pero no tenía sentido del tiempo — mi agente mencionaba con confianza una reunión de enero como si hubiera pasado esta mañana. La tercera versión es la que comparto hoy, y lleva funcionando sólida por semanas.
Desglose completo: estructura de memoria, cron jobs, dashboard, entrenamiento de voz, gestión de APIs, y las cosas de seguridad que la mayoría se salta. Sin teoría. Solo el sistema que uso todos los días para manejar mis proyectos desde un mensaje de Slack.

Por Qué Tu OpenClaw Se Sigue Olvidando
Esto es lo que realmente pasa. Instalas OpenClaw, lo conectas a Slack o WhatsApp, empiezas a alimentarlo con información — reuniones, tareas, preferencias, contexto de proyectos — y los primeros días se siente como magia. Tu propio Jarvis. Luego se llena la ventana de contexto, se activa la compactación de memoria, y de repente tu agente piensa que tu proyecto de Supabase es una receta de cocina que alucinó de algún lado.
Lo que conecta todo es el archivo índice
Tirarle más memoria al problema solo hace el desastre más grande. Lo que realmente me funcionó fue organizarlo como un obsesivo. Piénsalo como gestión de inventario en cualquier RPG — puedes cargar 200 objetos, pero si están todos tirados en una bolsa nunca encontrarás tu poción de vida cuando empiece la pelea con el jefe.
Mi arquitectura usa seis carpetas con una jerarquía clara:
- soul/ — archivos de identidad. Quién es el agente, cómo se comporta, a qué herramientas tiene acceso. La hoja de personaje.
- user/ — quién soy yo, mi zona horaria, mis preferencias, mi stack. Cosas que nunca cambian. La info de quest del NPC.
- daily/ — briefs diarios vivos. Uno por día, actualizado durante el día, archivado después de 7 días.
- projects/ — contexto detallado de proyectos activos. Trabajo de agencia, builds de SaaS, pipeline de contenido.
- meetings/ — subcategorizado por tipo (agencia, contenido, interno, externo). Cada reunión tiene un resumen, no la transcripción completa.
- archive/ — todo lo que tiene más de 7 días. Menor prioridad en recuperación, pero aún accesible. El almacén frío. La sala de espera del /dev/null.
Lo que conecta todo es el archivo índice. Se queda en la raíz de la carpeta de memoria, actúa como tabla de contenidos.
Cada vez que el agente procesa un input nuevo, actualiza el índice primero — así siempre sabe dónde buscar antes de empezar a buscar.
Sin esto, tu agente básicamente hace grep -r en 400 archivos esperando lo mejor. (Spoiler: no encuentra lo que necesitas. Encuentra una lista del súper de hace 2 semanas y un prompt de cron a medias.)
Ahora los briefs diarios. Estos merecen su propio párrafo porque sin ellos, descubrí que OpenClaw olvidaba cosas entre la mañana y la tarde del mismo día. Imagínate contarle a tu programador en pareja sobre un bug crítico a las 10am y a las 4pm te pregunta en qué proyecto estás trabajando. Eso pasa sin briefs diarios.
El brief es un documento vivo: creado a las 7am con prioridades, actualizado cada 3 horas con progreso, cerrado al final del día con resultados. Le da al agente un ancla temporal — una sensación de "qué pasó hoy" que la memoria plana simplemente no puede dar.
Respaldo esto en Supabase en lugar de confiar en puro markdown:
-- tabla daily_briefs
create table daily_briefs (
id uuid default gen_random_uuid() primary key,
brief_date date not null unique,
priorities jsonb default '[]',
completed jsonb default '[]',
notes text,
meeting_summaries jsonb default '[]',
archived boolean default false,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
-- Auto-archivar después de 7 días
create or replace function archive_old_briefs()
returns void as $$
update daily_briefs
set archived = true
where brief_date < current_date - interval '7 days'
and archived = false;
$$ language sql;
Por qué molestarse con una base de datos cuando OpenClaw maneja la memoria por sí solo
Porque los archivos markdown se compactan silenciosamente por el LLM. Un día tus notas de reunión están ahí, al siguiente se fusionaron en un resumen vago que apenas reconoces. Es como git squash pero nadie lo pidió y no hay reflog. Supabase me da datos persistentes y consultables que no desaparecen. Además puedo construir dashboards encima. (Y si necesitas un VPS para correr todo esto 24/7, uso el setup one-click de OpenClaw de Contabo — más sobre eso después.)
Los Cron Jobs Que Corren Todo Mientras Duermo
Los cron jobs son donde OpenClaw pasa de "chatbot fancy" a agente real. Piénsalo como programar tu NPC para que farmee mientras estás offline. Obviamente esto solo funciona si tu agente corre 24/7 — un VPS dedicado en lugar de tu laptop que se duerme cada vez que cierras la tapa. Mi horario:
crons:
- name: "morning-brief"
schedule: "0 7 * * *"
prompt: "Crea el brief diario de hoy. Saca mis 3 prioridades principales
basado en tareas incompletas de ayer y el calendario de hoy.
Guarda en carpeta daily/ y actualiza el índice."
- name: "brief-update"
schedule: "0 */3 * * *"
prompt: "Actualiza el brief diario de hoy con items completados,
inputs nuevos, y cualquier cambio. Mantenlo conciso."
- name: "meeting-sync"
schedule: "0 21 * * *"
prompt: "Trae las reuniones de hoy desde Fathom. Categoriza por
proyecto. Guarda resúmenes en carpeta meetings/. Cruza referencias
con proyectos activos."
- name: "day-wrap"
schedule: "0 3 * * *"
prompt: "Cierra el día. Archiva briefs de más de 7 días.
Resume resultados clave. Prepara contexto para mañana."
- name: "content-draft"
schedule: "0 9 * * 0"
prompt: "Borrador del contenido de esta semana basado en proyectos recientes,
logros, y observaciones. Usa perfil de voz. Output a content/."
- name: "heartbeat"
schedule: "*/30 * * * *"
prompt: "Revisa Slack por mensajes sin responder. Rota emails.
Marca items de calendario en las próximas 2 horas."
- name: "weekly-compaction"
schedule: "0 2 * * 1"
prompt: "Consolida la memoria de la semana pasada en un solo resumen
semanal. Remueve archivos redundantes. Actualiza el índice."
El wrap-up de las 3:00 AM en lugar de medianoche — intencional. Si trabajas tarde, no quieres que tu sesión nocturna se divida en dos briefs. Lo puse a las 3am porque, bueno, he llegado a pushear commits a las 2:47am un martes y no estoy orgulloso pero no voy a pretender que no pasa.
La compactación semanal es la que salvó mi setup de sí mismo. Después de 3 semanas sin ella, mi carpeta memory/ había crecido a más de 400 archivos y OpenClaw se confundía sobre cuál "actualización de proyecto" quería decir cuando decía "la actualización de proyecto." Era como preguntar de cuál "Juan" hablas en una empresa donde el 40% de los empleados se llama Juan. Lunes 2am, consolida todo de la semana pasada en un archivo resumen, limpia el resto. Diferencia abismal.
Para las cosas más complejas (como pipelines de reunión-a-tarea), ruteo a través de webhooks de n8n en lugar de que OpenClaw haga llamadas directas a APIs. El agente envía un payload JSON estructurado a n8n, n8n maneja el flujo Fathom → Supabase → notificación. Mucho más confiable que tener un LLM haciendo malabares con 4 endpoints a la vez — probé primero de la otra manera y salió tan bien como un deploy a producción un viernes por la tarde.
El Fix de "Amnesia de API"
## tools-reference.md (en soul/)
## APIs Disponibles
- **Supabase**: REST en [URL], key en env, RLS habilitado
- **n8n webhooks**: POST a [webhook-url] para flujos complejos
- **GitHub**: token en env, repos: [lista]
- **Fathom**: transcripciones de reuniones vía /api/v1/meetings
## Reglas
- NUNCA me pidas API keys. Están en tu environment.
- Para writes de base de datos, SIEMPRE usa la API REST de Supabase.
- Para automatizaciones multi-paso, dispara el webhook de n8n.
- Cuando no estés seguro de una herramienta, revisa este archivo PRIMERO.
Ese archivo ahí resolvió uno de los problemas más molestos que tenía. OpenClaw simplemente… olvida sus propias herramientas a veces. A mitad de sesión, después de compactación de contexto, tu agente te va a pedir un API key que literalmente usó hace 20 minutos. Como un dev que hizo rm -rf a su propio .env y luego se pregunta por qué nada funciona.
Como este archivo vive en soul/ (la capa de identidad del agente), se carga con alta prioridad en cada sesión. Es básicamente un archivo .env para el cerebro de tu agente. El agente dejó de pedirme credenciales el mismo día que lo agregué. Me sentí tonto por no haberlo hecho antes.
El Debate del Dashboard
Voy a decir algo que me puede costar ratio en la comunidad de OpenClaw: dejen de construir dashboards con herramientas no-code si ya saben programar.
Ha habido una ola de eso últimamente. Conectar a Supabase, arrastrar y soltar un tablero Kanban, cablear la API, subir un tutorial de YouTube. Los demos se ven geniales, los videos consiguen views, todos construyendo su "sistema operativo."
Funciona bien. He visto los demos, se ven limpios.
Pero si ya tienes Supabase en tu stack y sabes escribir un componente de React, ¿por qué estás agregando una dependencia que no controlas? Es como instalar una extensión de VS Code para escribir un for loop. Cada vez que la plataforma no-code actualiza su API o cambia sus precios, ese es un problema que ahora tienes que resolver. Para un dashboard.
Mi enfoque — Next.js leyendo de la misma instancia de Supabase:
// app/dashboard/page.tsx
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)
export default async function Dashboard() {
const { data: tasks } = await supabase
.from('tasks')
.select('*')
.order('updated_at', { ascending: false })
const columns = {
todo: tasks?.filter(t => t.status === 'todo') || [],
in_progress: tasks?.filter(t => t.status === 'in_progress') || [],
done: tasks?.filter(t => t.status === 'done') || [],
}
return (
<div className="grid grid-cols-3 gap-4 p-6">
{Object.entries(columns).map(([status, items]) => (
<Column key={status} title={status} tasks={items} />
))}
</div>
)
}
Mismo Kanban. Control total. Deploy a Vercel en 30 segundos. OpenClaw escribe a Supabase, dashboard lee de Supabase. Sin middleware, sin cableado extra, sin rezar que un servicio de terceros no mate tu feature favorita el próximo martes.
Tal vez estoy sesgado porque genuinamente disfruto construir frontends con Claude Code y encuentro las herramientas no-code frustrantes — cada vez que uso una siento que estoy jugando un juego de aventura point-and-click donde la lógica del puzzle no le hace sentido a nadie. Pero el punto se mantiene — si puedes programar, probablemente deberías simplemente programarlo. Una cosa menos que se puede romper a las 3am cuando ya estás debuggeando otra cosa.
Entrenamiento de Voz: Enseñarle a Tu Agente a No Sonar Como un Post de LinkedIn 🤓
Mi cron job de borrador de contenido estaba produciendo basura las primeras 2 semanas. Cada domingo por la mañana recibía un borrador que sonaba como "Me emociona anunciar" meets "¿opiniones? 👇" — el tipo de cosas que te hacen scrollear más rápido que un banner de cookies. El problema era que había tirado 50 posts en memoria y le dije "aprende mi voz." Así no es como funciona.
Lo que lo arregló fueron anotaciones. En serio, este es todo el truco. No solo tires posts crudos.
## voice-profile.md (en soul/)
## Reglas de estilo
- Párrafos cortos. 2-3 oraciones máximo.
- Abre con un resultado o take contrario, nunca una pregunta
- Ejemplos de código de proyectos reales, no demos de juguete
- Humor: seco, auto-despreciativo, referencias de dev
- Sin guiones. Sin corporate speak.
## Top posts (anotados)
## Post 1 (2,400 impresiones - funcionó por números $ específicos)
[contenido]
## Post 2 (1,800 impresiones - funcionó por analogía inesperada)
[contenido]
## Post 3 (900 impresiones - estructura de hilo lo llevó)
[contenido]
Sin anotaciones, el agente promedia tu estilo — y el promedio de todos tus posts es la versión más sosa posible de ti. Con ellas, capta lo que realmente funciona — los patrones, las estructuras, las aperturas que enganchan gente.
La prosa aún necesita edición, diría que me lleva 70% del camino, pero como motor de primer borrador me ahorra horas cada domingo. Esas son horas que puedo gastar haciendo literalmente cualquier otra cosa, incluyendo mirar mi terminal pretendiendo ser productivo.
Sobre la Arquitectura Viral de $250K 🦞
Tal vez viste el hype esta semana. Un tweet explotó alegando que una agencia de $250K/mes corre completamente en un setup de OpenClaw — estructuras de memoria, templates de cron jobs, entrenamiento de voz, dashboard custom. Miles de personas comentando para que les manden la arquitectura por DM. Pura energía de "dame el meta build."
Nadie hace $250K al mes por su config de OpenClaw
Lo revisé. La arquitectura está legítimamente sólida — muchas de las ideas de organización de memoria se superponen con lo que describí arriba, y los patrones de cron jobs son casi idénticos a los míos. Buen material, genuinamente útil.
Pero seamos realistas. Nadie hace $250K al mes por su config de OpenClaw. Es como decir que ganaste el torneo por tu teclado. Lo hacen porque tienen clientes, entregan resultados, y cierran deals. El agente de IA te hace más rápido. No te reemplaza. La gente corriendo a copiar la estructura exacta de carpetas pensando que es algún tipo de cheat code — así no funciona este juego.
Lo que sí vale la pena robar de estos setups: la jerarquía de memoria, el anclaje temporal con briefs diarios, el patrón de referencia de API. Toma prestados los principios, adáptalos a tu propio stack y workflow. Eso es lo que hice y funcionó mucho mejor que cuando traté de copiar el setup de alguien más uno-a-uno.
Seguridad. Por Favor Lee Esta Parte De Verdad.
Lo sé, lo sé. Las secciones de seguridad son los términos y condiciones de los artículos tech — todos las saltean. Pero esta es diferente porque los números son genuinamente aterradores.
SecurityScorecard encontró más de 135,000 instancias de OpenClaw expuestas al internet público esta semana.
Más de 50,000 vulnerables a un bug conocido de ejecución remota de código. Ayer — literalmente ayer — OpenClaw pusheó la versión 2026.2.12 parcheando más de 40 vulnerabilidades. SSRF en el gateway, directory traversal en skills, secuestro de sesión vía webhooks. Cuarenta. Más. Eso no es un parche, es una misión de rescate.
Si estás corriendo algo como el setup que describí, con credenciales de Supabase, API keys, transcripciones de reuniones, y datos de negocio fluyendo por tu agente — necesitas hacer esto hoy:
- Bind a localhost, no
0.0.0.0. La config por defecto expone tu agente a todo el internet. Es como dejar tu SSH key en un repo público de GitHub excepto que el repo es toda tu vida digital. - Habilita autenticación de gateway. Por defecto está completamente abierto.
- Mantén Row Level Security prendido en Supabase. No deshabilites RLS porque "la API lo necesita." Usa service role keys con scoping apropiado.
- Audita tus skills. Bitdefender encontró ~900 paquetes maliciosos en ClawHub. Instala desde source, verifica antes de confiar.
- Corre
**openclaw update**ahora mismo. El parche 2026.MM.DD no es opcional.
Tu agente tiene tus grabaciones de reuniones, tus credenciales de base de datos, tu contexto de negocio. Si el gateway está expuesto, todo eso está expuesto también. No trato de asustarte, solo — hazlo ahora, no "después este fin de semana." Toma 10 minutos. 🔒
La Versión Corta
- Memoria: 6 carpetas + archivo índice. Briefs diarios actualizados cada 3 horas. Archiva después de 7 días. Respáldalo en Supabase para que el LLM no pueda borrar silenciosamente tu contexto.
- Automatización: 6–7 cron jobs cubriendo brief matutino, actualizaciones, sync de reuniones, wrap-up, borrador de contenido, heartbeat, compactación semanal.
- Dashboard: constrúyelo tú mismo si puedes programar. Next.js + Supabase + Vercel. Sáltate la capa no-code, es una cosa más que mantener.
- Seguridad: localhost, auth, RLS, skills auditados, parches más recientes. Hazlo antes de hacer cualquier otra cosa. Si necesitas un VPS que maneje todo esto out of the box, Contabo tiene un deploy one-click de OpenClaw que viene pre-configurado — es lo que uso.
La arquitectura no es el foso. Aparecer todos los días y realmente usarla sí lo es. 🧱
Si esto te ahorró las tres reconstrucciones por las que pasé — sígueme para más breakdowns probados en campo de workflows de agentes de IA, setups de automatización, y las cosas de seguridad de las que nadie quiere hablar. Lo que sigue: conectar OpenClaw a n8n para un pipeline de monitoreo auto-reparable que cacha problemas antes que tus usuarios.
Descubre cómo construí una arquitectura de agente AI que no colapsa bajo su propio peso, con lecciones reales de producción y organización obsesiva de memoria.