Anatomía de un agente IA
en un servidor real.
Cada pieza de OpenClaw explicada con diagramas. Qué hace, por qué existe, cómo se configura. Pensado para entender antes de ejecutar.
CeMIACE FCE-UBA
📋 Contenido
Visión general de la arquitectura
OpenClaw en un VPS se compone de 6 piezas principales que trabajan juntas. Antes de tocar cualquier comando, necesitás entender qué hace cada una y cómo se conectan.
La flecha muestra el recorrido de un mensaje: vos enviás algo por Telegram → entra al Channel → sube al Gateway → el Gateway lo pasa al Agent → el Agent consulta al LLM externo → lee/escribe en el Workspace → usa las Skills que necesite → y la respuesta baja de vuelta por el mismo camino.
El VPS — Tu Servidor en la Nube
La máquina física donde vive todoUn VPS (Virtual Private Server) es una computadora virtual alquilada en un datacenter. OpenClaw corre ahí 24/7, sin depender de que tu PC esté encendida.
exit 137 (out of memory). Crealo con fallocate -l 2G /swapfile y activalo con swapon /swapfile.
# Verificar recursos del servidor
echo "--- CPU ---"; lscpu | grep "CPU(s):"
echo "--- RAM ---"; free -h
echo "--- DISCO ---"; df -h /
Instalación — De Cero a Agente Corriendo
Según la documentación oficial de docs.openclaw.aiLa documentación oficial ofrece dos caminos para instalar OpenClaw. Cuál elegir depende de si querés correrlo directamente en el sistema o dentro de un contenedor Docker.
El comando oficial (one-liner)
Según la documentación oficial, la forma más rápida de instalar es un solo comando que hace todo automáticamente:
# ⭐ INSTALACIÓN OFICIAL — Un solo comando
# Detecta tu SO, instala Node.js si falta, instala OpenClaw, y lanza el onboarding
curl -fsSL https://openclaw.ai/install.sh | bash
Eso es literalmente todo. El script:
→ Verifica que tengas Node.js 24 (o 22.14+) — si no, lo instala.
→ Instala OpenClaw globalmente vía npm.
→ Lanza el wizard de onboarding que te guía para elegir modelo, API key, canal de chat y skills.
→ Instala el daemon como servicio del sistema (launchd en macOS, systemd en Linux) para que quede corriendo 24/7.
Si preferís hacerlo paso a paso
# Paso 1: Instalar OpenClaw globalmente
npm install -g openclaw@latest
# Alternativa: pnpm add -g openclaw@latest
# Paso 2: Lanzar onboarding + instalar daemon
openclaw onboard --install-daemon
# Paso 3: Verificar la instalación
openclaw --version # versión instalada
openclaw doctor # diagnóstico del entorno
openclaw gateway status # verificar que el Gateway escucha
¿Qué pasa durante el onboarding?
ghcr.io/openclaw/openclaw:latest en lugar del script de instalación. Ambos caminos son válidos — Docker agrega una capa de aislamiento extra que en un VPS compartido es buena idea.
Instalación vía Docker (para VPS)
# Levantar OpenClaw como contenedor — ideal para servidores
docker run -d \
--name openclaw \
--restart unless-stopped \
-e OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN} \
-e HOME=/home/node \
-e OPENCLAW_STATE_DIR=/home/node/.openclaw \
-e OPENCLAW_CONFIG_DIR=/home/node/.openclaw \
-e OPENCLAW_WORKSPACE_DIR=/home/node/.openclaw/workspace \
-v /home/openclaw/.openclaw:/home/node/.openclaw \
-p 18789:18789 \
ghcr.io/openclaw/openclaw:latest
# Luego correr el wizard dentro del contenedor
docker exec -it openclaw openclaw onboard
Fuente oficial
📖 docs.openclaw.ai/install — Guía completa de instalación
💻 github.com/openclaw/openclaw — Repositorio oficial y README
📦 npmjs.com/package/openclaw — Paquete npm
Docker — El Contenedor
La caja aislada donde corre OpenClawDocker encapsula OpenClaw y todas sus dependencias en un contenedor aislado. Si algo falla adentro, el sistema base del VPS no se ve afectado. Pensalo como una caja fuerte: lo que pasa adentro, queda adentro.
El flag -v en Docker monta la carpeta del host dentro del contenedor. Así tus archivos de configuración y memoria sobreviven a reinicios, actualizaciones y recreaciones del contenedor.
# Instalar Docker
apt install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh
# Agregar usuario al grupo docker
usermod -aG docker openclaw
# Crear directorios persistentes
mkdir -p ~/.openclaw/workspace
mkdir -p ~/.openclaw/credentials
node (UID 1000). Si los archivos en el host pertenecen a otro UID, el contenedor no puede escribir y falla con EACCES. Por eso: chown -R 1000:1000 /home/openclaw/.openclaw
Gateway — La Centralita
El centro de control que conecta todoEl Gateway es el componente más importante de OpenClaw. Funciona como un servidor WebSocket local que recibe mensajes de todos los canales, los rutea al Agent, y devuelve las respuestas. También sirve el Control UI (panel web) y gestiona sesiones, eventos y herramientas.
Cuando arrancás el contenedor con -p 18789:18789, exponés el Gateway para que puedas acceder al panel de control. Pero nunca lo expongas directamente a internet — usá un túnel SSH.
# Configuración mínima del Gateway (openclaw.json)
{
"gateway": {
"mode": "local",
"bind": "lan",
"port": 18789,
"auth": { "mode": "token" }
},
"agents": {
"defaults": {
"workspace": "/home/node/.openclaw/workspace"
}
}
}
Agent — El Cerebro
El motor de razonamiento y decisiónEl Agent es el componente que piensa. Recibe las instrucciones del Gateway, las procesa usando el LLM externo, y decide qué herramientas usar, qué archivos leer o escribir, y qué responder. Es la pieza que tiene "personalidad" — configurada en los archivos del Workspace.
El Agent no es directamente configurable con un archivo propio — se configura indirectamente a través de los archivos del Workspace (su personalidad), del modelo LLM que le asignes (su inteligencia), y de las skills instaladas (sus capacidades).
Workspace — La Memoria Persistente
Donde vive la personalidad, las reglas y los recuerdosEl Workspace es una carpeta en el host (no dentro del contenedor) que se monta vía volumen Docker. Contiene archivos Markdown que definen quién es tu agente, qué puede hacer, y qué recuerda. Si destruís el contenedor, el Workspace permanece intacto.
/home/openclaw/.openclaw/workspace. Dentro del contenedor se mapea a /home/node/.openclaw/workspace. La configuración JSON debe usar la ruta del contenedor, no la del host.
Channels — Los Canales de Comunicación
Las puertas de entrada al agenteLos Channels son las plataformas de mensajería por las que hablás con tu agente. Cada channel tiene su propia librería de conexión (Baileys para WhatsApp, grammY para Telegram, discord.js para Discord, etc.) y se configura con un token o credencial específica.
Configurar Telegram (el más rápido)
# 1. En Telegram: buscar @BotFather → /newbot → copiar token
# 2. En el VPS:
openclaw config set channels.telegram.botToken "TU_TOKEN"
docker restart openclaw
# 3. Verificar conexión:
docker logs openclaw --tail 20 | grep -i telegram
# Debe decir: [telegram] [default] starting provider
Skills — Las Herramientas
Plugins que le dan superpoderes al agenteLas Skills son extensiones que amplían lo que el Agent puede hacer. Van desde búsqueda web (DuckDuckGo) hasta lectura de PDFs, control de Home Assistant, o integración con GitHub. Se instalan desde ClawHub o durante el wizard de onboarding.
📦 clawhub
Acceso al marketplace de skills. Permite al agente buscar e instalar nuevas habilidades.
🔍 web-search
Búsqueda web vía DuckDuckGo. No requiere API key.
📄 nano-pdf
Lectura y análisis de archivos PDF.
🔌 mcporter
Integración con servidores MCP (Model Context Protocol).
LLM Externo — La Inteligencia
El modelo de IA que le da la capacidad de pensarOpenClaw no tiene inteligencia propia — se la da el modelo que le conectes. Puede ser ChatGPT, Claude, Gemini, DeepSeek, o un modelo local vía Ollama. El método de conexión más conveniente para ChatGPT es OAuth, que usa tu suscripción Plus/Pro sin cargos adicionales por token.
Autenticar con ChatGPT vía OAuth
# Usar tu suscripción ChatGPT Plus/Pro (sin cargos por API)
docker exec -it openclaw openclaw models auth login --provider openai-codex
# 1. Copiar la URL que imprime
# 2. Abrirla en tu browser → loguear con tu cuenta ChatGPT
# 3. Copiar la URL de callback final y pegarla en la terminal
# Setear modelo por defecto
openclaw config set agents.defaults.model.primary "openai/gpt-5.4-mini"
docker restart openclaw
/model openai/gpt-5.5.
Autenticación y Tokens
Las llaves que protegen tu agenteOpenClaw usa dos tipos de credenciales que es crucial no confundir:
Ambos se almacenan en texto plano en archivos locales (.env y openclaw.json). Tratá ~/.openclaw/ como si fuera un password vault — si alguien accede a esa carpeta, tiene control total de tu agente y de las APIs conectadas.
Pairing — La Verificación de Identidad
Quién tiene permiso de hablarle al agenteEl sistema de pairing es la capa de seguridad que controla quién puede usar tu bot. Cuando alguien le escribe por primera vez, el agente genera un código que vos tenés que aprobar desde el servidor. Sin tu aprobación, nadie puede interactuar con él.
Después del pairing, arranca el bootstrap: el agente te pregunta tu nombre, elige el suyo, y llena IDENTITY.md y USER.md a partir de esa primera conversación.
Control UI — El Panel de Administración
Interfaz web para monitorear y administrarEl Control UI es un panel web que corre en el puerto 18789. Desde ahí podés chatear con el agente, ver logs, cambiar configuración, y monitorear el estado del Gateway. Se accede exclusivamente vía túnel SSH por seguridad.
# Crear túnel SSH desde tu PC local
ssh -L 18789:localhost:18789 -p TU_PUERTO_SSH openclaw@TU_IP
# Obtener el token del Gateway (desde el VPS)
docker exec openclaw cat /home/node/.openclaw/openclaw.json | grep -A3 '"mode": "token"'
# Luego abrir en el browser:
# http://localhost:18789
# Pegar el token que devolvió el comando anterior
Aprobación del dispositivo (paso obligatorio)
Al abrir el Control UI por primera vez, el browser te va a mostrar un mensaje de "Emparejamiento de dispositivo requerido". No es un error — es una capa de seguridad. Cada navegador nuevo necesita aprobación explícita desde el VPS antes de poder usar el panel.
# 1. Listar dispositivos pendientes de aprobación
openclaw devices list
# 2. Aprobar el navegador (copiar el ID que apareció)
openclaw devices approve xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 3. Volver al browser y recargar la página
# El Control UI ya carga completo
Flujo completo: un mensaje de punta a punta
Para cerrar, así viaja un mensaje desde que lo escribís hasta que recibís la respuesta:
Docker vs npm: ¿cuándo usar cada uno?
OpenClaw se puede instalar de dos formas muy distintas. La elección no es trivial — cambia cómo actualizás, cómo aislás, y cómo administrás tu agente.
| Aspecto | npm (one-liner) | Docker |
|---|---|---|
| Instalación | 1 comando, 2 minutos | 3-4 comandos, 5 minutos |
| Aislamiento | Ninguno — accede a todo | Contenedor aislado |
| Actualizar | openclaw update | docker pull + restart |
| Rollback | npm i -g openclaw@version | Cambiar tag de imagen |
| Daemon | launchd (mac) / systemd (linux) | --restart unless-stopped |
| Acceso a hardware | Completo (GPU, audio, USB) | Limitado |
| macOS companion app | ✅ Sí | ❌ No |
| Voice Wake / Talk Mode | ✅ Sí | ❌ No |
| Múltiples agentes | Complicado | Fácil (1 container por agente) |
| Seguridad en producción | ⚠ Menor | ✅ Mayor |
Actualización y mantenimiento
OpenClaw se actualiza constantemente — vulnerabilidades se parchean, features nuevas se agregan, y skills se actualizan. Mantener tu agente al día es crítico para la seguridad.
Actualizar con npm (instalación directa)
Para quienes instalaron con el one-liner o npm installOpenClaw tiene un comando integrado que se encarga de todo: descarga la nueva versión, migra la configuración, sincroniza plugins, y reinicia el Gateway.
# Actualizar OpenClaw a la última versión estable
openclaw update
# Ver si hay actualización disponible sin instalar
openclaw update status
# Preview de qué va a hacer (sin tocar nada)
openclaw update --dry-run
# Actualizar sin pedir confirmación (para scripts/cron)
openclaw update --yes
# Resultado en formato JSON (para automatización)
openclaw update --yes --json
Canales de actualización
# Canal estable (por defecto, recomendado)
openclaw update --channel stable
# Canal beta (features nuevas, puede tener bugs)
openclaw update --channel beta
# Canal dev (último commit, solo para desarrollo)
openclaw update --channel dev
Actualizar con Docker
Para quienes corren OpenClaw en un contenedorCon Docker, actualizar es reemplazar la imagen y reiniciar. Tu configuración y workspace están en el volumen montado, así que sobreviven al cambio.
# Descargar la última imagen
docker pull ghcr.io/openclaw/openclaw:latest
# Reiniciar el contenedor con la nueva imagen
docker restart openclaw
# Verificar que arrancó con la versión nueva
docker logs openclaw --tail 10
docker restart reinicia el mismo contenedor — si la imagen base cambió, no usa la nueva. Para asegurarte de que levante con la imagen actualizada, tenés que recrear el contenedor:
# Recrear el contenedor con la imagen nueva (forma correcta)
docker stop openclaw
docker rm openclaw
docker run -d \
--name openclaw \
--restart unless-stopped \
-e OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN} \
-e HOME=/home/node \
-e OPENCLAW_STATE_DIR=/home/node/.openclaw \
-e OPENCLAW_CONFIG_DIR=/home/node/.openclaw \
-e OPENCLAW_WORKSPACE_DIR=/home/node/.openclaw/workspace \
-v /home/openclaw/.openclaw:/home/node/.openclaw \
-p 18789:18789 \
ghcr.io/openclaw/openclaw:latest
# Verificar
docker ps
docker logs openclaw --tail 20
Post-actualización — Verificación
Siempre correr después de cada update, sea npm o DockerIndependientemente del método, estos tres comandos son obligatorios después de cada actualización:
# 1. Chequear que la migración de config fue correcta
openclaw doctor
# 2. Reiniciar el Gateway (si no se reinició solo)
openclaw gateway restart
# 3. Verificar que todo está saludable
openclaw health
Rollback si algo sale mal
# npm: volver a una versión específica
npm i -g openclaw@2026.5.20
openclaw doctor
openclaw gateway restart
# Docker: usar una imagen con tag de versión
docker stop openclaw && docker rm openclaw
docker run -d --name openclaw \
... (mismos flags de siempre) \
ghcr.io/openclaw/openclaw:2026.5.20 # ← versión fija en vez de :latest
npm view openclaw version muestra la última versión estable publicada en npm. Útil para saber si estás atrasado o si el update ya se aplicó.
Referencia rápida de comandos
| Acción | Comando |
|---|---|
| Ver estado del contenedor | docker ps |
| Ver logs recientes | docker logs openclaw --tail 50 |
| Seguir logs en vivo | docker logs -f openclaw |
| Reiniciar OpenClaw | docker restart openclaw |
| Detener OpenClaw | docker stop openclaw |
| Actualizar a última versión | docker pull ghcr.io/openclaw/openclaw:latest && docker restart openclaw |
| Ver config | openclaw config get <ruta> |
| Cambiar config | openclaw config set <ruta> "valor" |
| Listar autenticación | openclaw models auth list |
| Ver pairings pendientes | openclaw pairing list --channel telegram |
| Listar dispositivos (Control UI) | openclaw devices list |
| Aprobar dispositivo | openclaw devices approve ID_DEL_DISPOSITIVO |
| Diagnóstico completo | openclaw doctor |
| Verificar salud | openclaw health |
| Actualizar (npm) | openclaw update |
| Ver si hay update | openclaw update status |
| Preview de update | openclaw update --dry-run |
| Actualizar (Docker) | docker pull ghcr.io/openclaw/openclaw:latest + recrear contenedor |
| Rollback (npm) | npm i -g openclaw@VERSION |
| Ver versión publicada | npm view openclaw version |
| Wizard de setup | docker exec -it openclaw openclaw onboard |