OpenClaw — Registro completo del setup y configuración

Máquina: Arch Linux 192.168.0.143, usuario esotericwarfare, headless. Fecha de trabajo: 19 y 20/09/2026. Estado final: TODO DESACTIVADO por pedido del dueño (20/09) — el bot ya no responde mensajes y los servicios están apagados para liberar CPU.


1. Objetivo original

Hacer que OpenClaw responda automáticamente por WhatsApp con un mensaje fijo de negocio a cualquiera que escribiera, usando un modelo de IA gratuito, y guardar una guía de todo el proceso.


2. Qué es OpenClaw (resumen)

  • Asistente/agente IA open-source, self-hosted, corre local en 192.168.0.143.
  • Gateway: proceso que escucha en 0.0.0.0:18789 y conecta canales (WhatsApp, Instagram, etc.) con el agente IA.
  • El agente lee/escribe mensajes de los chats vinculados y puede usar herramientas (archivos, comandos, web).
  • El WhatsApp se vincula como una sesión de WhatsApp Web (se escanea QR desde el teléfono).

3. Servicios (systemd)

Gateway de OpenClaw (servicio de USUARIO)

  • Unit: ~/.config/systemd/user/openclaw-gateway.service
  • Drop-ins con variables de entorno:
    • ~/.config/systemd/user/openclaw-gateway.service.d/groq.confGROQ_API_KEY=gsk_... (key free del usuario).
    • ~/.config/systemd/user/openclaw-gateway.service.d/ollama.confOLLAMA_API_KEY=local-ollama (cualquier valor; provider local).
  • Estado actual: systemctl --user disable --now openclaw-gateway → detenido y deshabilitado al boot.

Ollama (servicio de SISTEMA)

  • Unit: /usr/lib/systemd/system/ollama.service + drop-in /usr/lib/systemd/system/ollama.service.d/01-cuda.conf (acelera con la GTX 1050, 2 GB VRAM).
  • Modelo local bajado: qwen2.5:3b (ollama pull qwen2.5:3b).
  • Estado actual: sudo systemctl disable --now ollama → detenido y deshabilitado al boot (fue la mayor fuente de CPU con el modelo local).

4. Configuración final (~/.openclaw/openclaw.json)

Valores aplicados vía openclaw config patch --stdin (cada cambio valida contra el schema):

Ruta Valor Motivo
secrets.providers.env {source:"env"} Leer keys de variables de entorno
models.providers.groq.baseUrl https://api.groq.com/openai/v1 Provider Groq (compat. OpenAI)
models.providers.groq.api openai-completions
models.providers.groq.apiKey env → GROQ_API_KEY Key free de Groq
models.providers.groq.models[0] qwen/qwen3.8-27b, ctx 131072, maxTokens 512 Modelo PRINCIPAL (responde)
models.providers.groq.models[1] groq/compound-mini, ctx 131072, maxTokens 1024 Descartado (ver §6)
agents.defaults.model groq/qwen/qwen3.8-27b Pregunta/razón principal
agents.defaults.utilityModel ollama/qwen2.5:3b Modelo utilitario (resumir, etc.)
agents.defaults.thinkingDefault off Respuestas rápidas
agents.defaults.contextTokens 131072 Ventana completa (se tocó 6000 y rompió el prompt)
tools.profile minimal Habilita ~36 tools en vez de ~72 → prompt chico
tools.allow [] Vacío = sin restricción extra (en este OpenClaw)
channels.whatsapp.dmPolicy open + allowFrom:["*"] Cualquier número puede escribir (⚠ abierto al spam)
channels.whatsapp.selfChatMode true El chat “contigo mismo” se procesa
channels.whatsapp.dmHistoryLimit 2 Entran solo 2 mensajes de historial al modelo → no revienta el límite de Groq
channels.whatsapp.enabled false Desactivado (no contesta)
Control UI coincidentes toggles allowInsecureAuth/dangerouslyDisableDeviceAuth Acceso del dashboard por HTTP LAN (temporales/solo LAN)

⚠️ La clave de Groq vive en el drop-in del servicio y en ~/.config/aichat/config.yaml. No compartir.


5. Regla de auto-respuesta (¿fue y ya no)

Se escribió en ~/.openclaw/workspace/AGENTS.md una sección “Auto-Respuesta WhatsApp”:

Ante cualquier mensaje de WhatsApp que no venga del dueño, responder SIEMPRE este texto fijo, sin herramientas: “Hola 👋 Gracias por escribir a Andres. Nuestro horario de atención es: lunes a viernes de 9:00 a 18:00 hs · sábados de 9:00 a 13:00 hs. Te respondemos a la brevedad. 🐾”

Estado actual: DESACTIVADA (sección reemplazada en AGENTS.md por una nota de desactivación). El canal WhatsApp además está en enabled:false, así que aunque reactives el gateway no contestará.


6. Modelos y límites (aprendizajes)

  • Groq free (on_demand) — límite por minuto por modelo:
    • qwen/qwen3.8-27b7.000 tokens de entrada/min (el que funciona con herramientas).
    • openai/gpt-oss-120b y openai/gpt-oss-20b → 8.000 tokens/min.
    • groq/compound-mini70.000 tokens/min, MUY rápido, pero no soporta tool calling → descartado como modelo del agente (OpenClaw necesita tools).
  • Ollama local (qwen2.5:3b): sin límite ni costo, pero:
    • Turnos de 40-60 s; con 2 GB de VRAM iba en CPU → mucho consumo de CPU.
    • Con el prompt largo del agente se le truncaba y no seguía la regla. Se abandonó como modelo principal (quedó como utilityModel).
  • aichat instalado (sudo pacman -S aichat, v0.30.0-3). ~/.config/aichat/config.yaml creado con el contenido pegado por el usuario (model groq:qwen/qwen3.8-27b). Verificado que responde.

7. Problemas resueltos (troubleshooting)

  1. El bot no respondía nada → no había API key configurada (error 401 con openai/gpt-5.5). Se configuró el provider Groq.
  2. Error 413 Request too large (ITPM 7000) → el prompt del agente pedía ~12.000 tokens con tools completas.
    • Solución: tools.profile mínimo-messaging/minimal + recortar los .md del workspace (SOUL.md, USER.md, IDENTITY.md, TOOLS.md, BOOTSTRAP.md) de ~16 KB a ~2 KB → prompt ~5-6k.
    • Más soluciones: resetear sesiones (ver abajo) y dmHistoryLimit: 2.
  3. La prueba CLI en sesión nueva: 200 OK directo (el prompt entra bajo 7k).
  4. Mensaje entrante de WhatsApp sin respuesta → el self-message va a la sesión agent:main:main (policy del gateway), que acumuló historial de pruebas y pasó de 7k → 413 en los 3 reintentos.
    • Fix: resetear sesiones (backup y borrado en ~/.openclaw/agents/main/sessions/ + sessions.json a {}) y reiniciar gateway.
  5. contextTokens: 6000 → daba “Context overflow: prompt too large” (el system prompt + tools supera 6k) → revertido a 131072.
  6. groq/compound-mini → “provider rejected the request schema or tool payload” → no soporta tool calling → revertido a qwen.
  7. Confusión usuario/opencode: quien ve WhatsApp es el gateway de OpenClaw, no este asistente (opencode/cli).

8. Sesiones (dónde viven)

  • Store: ~/.openclaw/agents/main/sessions/sessions.json + archivos .jsonl y .trajectory.jsonl.
  • Comandos: openclaw sessions, openclaw sessions --json, openclaw sessions cleanup, openclaw sessions compact.
  • El self-chat de WhatsApp usa la sesión agent:main:main (policy system policy:agent:main:whatsapp:default:direct:+549...). Borrar sus .jsonl* y dejar sessions.json en {} = reset limpio (siempre con backup en /tmp/opencode/sessions-backup/).

9. Logs

  • Log del día: /tmp/openclaw/openclaw-2026-09-20.log (rotación diaria).
  • Ver calls al modelo: grep "model-fetch" /tmp/openclaw/openclaw-YYYY-MM-DD.log.
  • Ver error 413: aparecen como status=413 / rawErrorPreview; el mensaje indica Limit 7000, Requested N.

10. Estado actual (desactivado — 20/09/2026)

  • openclaw-gateway (user): inactive + disabled.
  • ollama (system): inactive + disabled.
  • channels.whatsapp.enabled: false en openclaw.json.
  • Regla de auto-respuesta en AGENTS.md: neutralizada (sección “DESACTIVADA”).
  • Resultado: ningún mensaje de WhatsApp se procesa y la CPU volvió a estar libre.

11. Cómo reactivar (si algún día querés)

# Gateway:
systemctl --user enable --now openclaw-gateway      # reactiva el gateway
systemctl --user status openclaw-gateway --no-pager

# WhatsApp (opcional, en openclaw.json):
#   channels.whatsapp.enabled = true
#   y, si querés la auto-respuesta, re-activar la sección en AGENTS.md.

# Ollama (solo si querés el modelo local de nuevo):
sudo systemctl enable --now ollama

Advertencias recordables:

  • Tier free de Groq = ~7.000 tokens/min para qwen/qwen3.8-27b → tráfico o ráfagas → 413/429 y reintentos (latencias de ~40 s). Para tráfico real conviene el Dev Tier de Groq (console.groq.com).
  • dmPolicy: open + allowFrom:* = el bot estaba expuesto a cualquier número.
  • Los toggles inseguros del Control UI eran temporales para acceder por LAN.

12. Archivos relevantes

Ruta Contenido
~/.openclaw/openclaw.json Config final del agente (canales, modelos, tools)
~/.openclaw/workspace/AGENTS.md Reglas del agente (auto-respuesta ahora neutralizada)
~/.openclaw/workspace/{SOUL,USER,IDENTITY,TOOLS,BOOTSTRAP,HEARTBEAT}.md Identidad (recortados a ~2 KB para bajar tokens)
~/.config/systemd/user/openclaw-gateway.service.d/{groq,ollama}.conf Env vars del gateway (GROQ_API_KEY, OLLAMA_API_KEY)
~/.config/aichat/config.yaml Config de aichat (Groq)
/tmp/openclaw/openclaw-*.log Logs del gateway
~/.openclaw/agents/main/sessions/ Sesiones (con backup en /tmp/opencode/sessions-backup/)
~/ig-mcp/, ~/.openclaw/ig-bridge-venv/ MCP de Instagram (sin terminar; requiere cuenta profesional de Meta)