Configuración
OpenClaw lee una configuración opcional en desde~/.openclaw/openclaw.json.
Si el archivo no existe, OpenClaw usa valores predeterminados seguros. Motivos habituales para agregar una configuración:
- Conectar canales y controlar quién puede enviar mensajes al bot
- Establecer modelos, herramientas, aislamiento o automatización (cron, hooks)
- Ajustar sesiones, medios, red o la UI
Configuración mínima
Editar la configuración
- Asistente interactivo
- CLI (líneas únicas)
- Control UI
- Edición directa
Validación estricta
Notas sobre las herramientas del esquema:openclaw config schemaimprime la misma familia de JSON Schema usada por la Control UI y la validación de configuración.- Trata esa salida del esquema como el contrato canónico legible por máquinas para
openclaw.json; esta descripción general y la referencia de configuración la resumen. - Los valores
titleydescriptionde los campos se incorporan en la salida del esquema para herramientas de edición y formularios. - Las entradas de objetos anidados, comodines (
*) y elementos de arreglos ([]) heredan la misma metainformación de documentación cuando existe documentación de campo coincidente. - Las ramas de composición
anyOf/oneOf/allOftambién heredan la misma metainformación de documentación, para que las variantes de unión/intersección mantengan la misma ayuda de campo. config.schema.lookupdevuelve una ruta de configuración normalizada con un nodo de esquema superficial (title,description,type,enum,const, límites comunes y campos de validación similares), metadatos de sugerencias de UI coincidentes y resúmenes inmediatos de nodos hijos para herramientas de exploración detallada.- Los esquemas dinámicos de plugins/canales se fusionan cuando el gateway puede cargar el registro actual de manifiestos.
pnpm config:docs:checkdetecta discrepancias entre los artefactos base de configuración orientados a la documentación y la superficie actual del esquema.
- El Gateway no inicia
- Solo funcionan los comandos de diagnóstico (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Ejecuta
openclaw doctorpara ver los problemas exactos - Ejecuta
openclaw doctor --fix(o--yes) para aplicar reparaciones
Tareas comunes
Configurar un canal (WhatsApp, Telegram, Discord, etc.)
Configurar un canal (WhatsApp, Telegram, Discord, etc.)
channels.<provider>. Consulta la página dedicada de cada canal para ver los pasos de configuración:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Elegir y configurar modelos
Elegir y configurar modelos
agents.defaults.modelsdefine el catálogo de modelos y actúa como la lista de permitidos para/model.- Las referencias de modelo usan el formato
provider/model(por ejemplo,anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxcontrola la reducción de escala de imágenes en transcripciones/herramientas (valor predeterminado1200); los valores más bajos suelen reducir el uso de tokens de visión en ejecuciones con muchas capturas de pantalla.- Consulta Models CLI para cambiar modelos en el chat y Model Failover para la rotación de autenticación y el comportamiento de respaldo.
- Para proveedores personalizados o autoalojados, consulta Proveedores personalizados en la referencia.
Controlar quién puede enviar mensajes al bot
Controlar quién puede enviar mensajes al bot
dmPolicy:"pairing"(predeterminado): los remitentes desconocidos reciben un código de emparejamiento de un solo uso para aprobarlos"allowlist": solo los remitentes enallowFrom(o en el almacén de permitidos emparejados)"open": permite todos los mensajes directos entrantes (requiereallowFrom: ["*"])"disabled": ignora todos los mensajes directos
groupPolicy + groupAllowFrom o listas de permitidos específicas del canal.Consulta la referencia completa para ver los detalles por canal.Configurar la exigencia de mención en chats grupales
Configurar la exigencia de mención en chats grupales
- Menciones de metadatos: menciones nativas con @ (mención con toque en WhatsApp, Telegram @bot, etc.)
- Patrones de texto: patrones regex seguros en
mentionPatterns - Consulta la referencia completa para ver anulaciones por canal y el modo de chat propio.
Restringir Skills por agente
Restringir Skills por agente
agents.defaults.skills como base compartida y luego sobrescribe agentes específicos con agents.list[].skills:- Omite
agents.defaults.skillspara permitir Skills sin restricciones de forma predeterminada. - Omite
agents.list[].skillspara heredar los valores predeterminados. - Establece
agents.list[].skills: []para no usar Skills. - Consulta Skills, Configuración de Skills, y la Referencia de configuración.
Ajustar la supervisión de estado de canales del gateway
Ajustar la supervisión de estado de canales del gateway
- Establece
gateway.channelHealthCheckMinutes: 0para desactivar globalmente los reinicios del monitor de estado. channelStaleEventThresholdMinutesdebe ser mayor o igual que el intervalo de comprobación.- Usa
channels.<provider>.healthMonitor.enabledochannels.<provider>.accounts.<id>.healthMonitor.enabledpara desactivar los reinicios automáticos de un canal o cuenta sin desactivar el monitor global. - Consulta Comprobaciones de estado para la depuración operativa y la referencia completa para todos los campos.
Configurar sesiones y restablecimientos
Configurar sesiones y restablecimientos
dmScope:main(compartido) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: valores predeterminados globales para el enrutamiento de sesiones vinculado a hilos (Discord admite/focus,/unfocus,/agents,/session idley/session max-age).- Consulta Administración de sesiones para ver el alcance, los vínculos de identidad y la política de envío.
- Consulta la referencia completa para ver todos los campos.
Habilitar aislamiento
Habilitar aislamiento
scripts/sandbox-setup.shConsulta Aislamiento para la guía completa y la referencia completa para todas las opciones.Habilitar push respaldado por relay para compilaciones oficiales de iOS
Habilitar push respaldado por relay para compilaciones oficiales de iOS
openclaw.json.Establece esto en la configuración del gateway:- Permite que el gateway envíe
push.test, avisos de activación y activaciones de reconexión a través del relay externo. - Usa un permiso de envío con alcance al registro, reenviado por la app de iOS emparejada. El gateway no necesita un token de relay de toda la implementación.
- Vincula cada registro respaldado por relay a la identidad del gateway con la que se emparejó la app de iOS, para que otro gateway no pueda reutilizar el registro almacenado.
- Mantiene las compilaciones locales/manuales de iOS en APNs directo. Los envíos respaldados por relay se aplican solo a las compilaciones oficiales distribuidas que se registraron a través del relay.
- Debe coincidir con la URL base del relay integrada en la compilación oficial/TestFlight de iOS, para que el tráfico de registro y envío llegue a la misma implementación del relay.
- Instala una compilación oficial/TestFlight de iOS que se haya compilado con la misma URL base del relay.
- Configura
gateway.push.apns.relay.baseUrlen el gateway. - Empareja la app de iOS con el gateway y permite que se conecten tanto la sesión del nodo como la del operador.
- La app de iOS obtiene la identidad del gateway, se registra en el relay usando App Attest más el recibo de la app y luego publica la carga
push.apns.registerrespaldada por relay en el gateway emparejado. - El gateway almacena el identificador del relay y el permiso de envío, y luego los usa para
push.test, avisos de activación y activaciones de reconexión.
- Si cambias la app de iOS a un gateway diferente, vuelve a conectar la app para que pueda publicar un nuevo registro de relay vinculado a ese gateway.
- Si distribuyes una nueva compilación de iOS que apunta a una implementación de relay distinta, la app actualiza su registro de relay almacenado en caché en lugar de reutilizar el origen anterior del relay.
OPENCLAW_APNS_RELAY_BASE_URLyOPENCLAW_APNS_RELAY_TIMEOUT_MSsiguen funcionando como anulaciones temporales por env.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truesigue siendo una vía de escape de desarrollo solo para loopback; no conserves URL de relay HTTP en la configuración.
Configurar heartbeat (comprobaciones periódicas)
Configurar heartbeat (comprobaciones periódicas)
every: cadena de duración (30m,2h). Establece0mpara desactivar.target:last|none|<channel-id>(por ejemplodiscord,matrix,telegramowhatsapp)directPolicy:allow(predeterminado) oblockpara destinos de heartbeat de estilo DM- Consulta Heartbeat para la guía completa.
Configurar trabajos cron
Configurar trabajos cron
sessionRetention: elimina desessions.jsonlas sesiones completadas de ejecuciones aisladas (predeterminado24h; establecefalsepara desactivar).runLog: recortacron/runs/<jobId>.jsonlpor tamaño y líneas conservadas.- Consulta Trabajos cron para ver la descripción general de la función y ejemplos de CLI.
Configurar webhooks (hooks)
Configurar webhooks (hooks)
- Trata todo el contenido de las cargas de hook/webhook como entrada no confiable.
- Usa un
hooks.tokendedicado; no reutilices el token compartido del Gateway. - La autenticación de hooks es solo por encabezado (
Authorization: Bearer ...ox-openclaw-token); los tokens en query string se rechazan. hooks.pathno puede ser/; mantén la entrada de webhook en una subruta dedicada como/hooks.- Mantén desactivadas las marcas de omisión de contenido inseguro (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) salvo para depuración muy delimitada. - Si habilitas
hooks.allowRequestSessionKey, establece tambiénhooks.allowedSessionKeyPrefixespara acotar las claves de sesión seleccionadas por quien llama. - Para agentes controlados por hooks, prefiere niveles de modelo modernos y sólidos, y una política estricta de herramientas (por ejemplo, solo mensajería más aislamiento cuando sea posible).
Configurar enrutamiento multiagente
Configurar enrutamiento multiagente
Dividir la configuración en varios archivos ($include)
Dividir la configuración en varios archivos ($include)
$include para organizar configuraciones grandes:- Archivo único: reemplaza el objeto contenedor
- Arreglo de archivos: se fusionan en profundidad en orden (el último prevalece)
- Claves hermanas: se fusionan después de los includes (sobrescriben los valores incluidos)
- Includes anidados: admitidos hasta 10 niveles de profundidad
- Rutas relativas: se resuelven en relación con el archivo que incluye
- Manejo de errores: errores claros para archivos faltantes, errores de análisis e includes circulares
Recarga en caliente de la configuración
El Gateway observa~/.openclaw/openclaw.json y aplica los cambios automáticamente; no hace falta reiniciar manualmente para la mayoría de los ajustes.
Modos de recarga
| Modo | Comportamiento |
|---|---|
hybrid (predeterminado) | Aplica en caliente los cambios seguros al instante. Reinicia automáticamente en los críticos. |
hot | Aplica en caliente solo los cambios seguros. Registra una advertencia cuando se necesita reiniciar; tú te encargas. |
restart | Reinicia el Gateway ante cualquier cambio de configuración, sea seguro o no. |
off | Desactiva la observación del archivo. Los cambios se aplican en el siguiente reinicio manual. |
Qué se aplica en caliente y qué necesita reinicio
La mayoría de los campos se aplican en caliente sin tiempo de inactividad. En modohybrid, los cambios que requieren reinicio se gestionan automáticamente.
| Categoría | Campos | ¿Requiere reinicio? |
|---|---|---|
| Canales | channels.*, web (WhatsApp): todos los canales integrados y de extensiones | No |
| Agente y modelos | agent, agents, models, routing | No |
| Automatización | hooks, cron, agent.heartbeat | No |
| Sesiones y mensajes | session, messages | No |
| Herramientas y medios | tools, browser, skills, audio, talk | No |
| UI y varios | ui, logging, identity, bindings | No |
| Servidor del gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Sí |
| Infraestructura | discovery, canvasHost, plugins | Sí |
gateway.reload y gateway.remote son excepciones: cambiarlos no desencadena un reinicio.RPC de configuración (actualizaciones programáticas)
config.apply, config.patch, update.run) tienen límite de frecuencia de 3 solicitudes cada 60 segundos por deviceId+clientIp. Cuando se alcanza el límite, el RPC devuelve UNAVAILABLE con retryAfterMs.config.schema.lookup: inspeccionar un subárbol de configuración con alcance a una ruta con un nodo de esquema superficial, metadatos de sugerencias coincidentes y resúmenes inmediatos de nodos hijosconfig.get: obtener la instantánea actual + hashconfig.patch: ruta preferida para actualizaciones parcialesconfig.apply: reemplazo completo de la configuración únicamenteupdate.run: autoactualización explícita + reinicio
config.schema.lookup
y luego config.patch.
config.apply (reemplazo completo)
config.apply (reemplazo completo)
raw(string): carga JSON5 para toda la configuraciónbaseHash(opcional): hash de configuración deconfig.get(obligatorio cuando la configuración existe)sessionKey(opcional): clave de sesión para el ping de reactivación posterior al reinicionote(opcional): nota para el marcador del reiniciorestartDelayMs(opcional): retraso antes del reinicio (predeterminado 2000)
config.patch (actualización parcial)
config.patch (actualización parcial)
- Los objetos se fusionan recursivamente
nullelimina una clave- Los arreglos reemplazan
raw(string): JSON5 con solo las claves que cambiarbaseHash(obligatorio): hash de configuración deconfig.getsessionKey,note,restartDelayMs: igual que enconfig.apply
config.apply: reinicios pendientes consolidados más un enfriamiento de 30 segundos entre ciclos de reinicio.Variables de entorno
OpenClaw lee variables de entorno del proceso padre además de:.envdel directorio de trabajo actual (si existe)~/.openclaw/.env(respaldo global)
Importación de env del shell (opcional)
Importación de env del shell (opcional)
OPENCLAW_LOAD_SHELL_ENV=1Sustitución de variables de entorno en valores de configuración
Sustitución de variables de entorno en valores de configuración
${VAR_NAME}:- Solo se reconocen nombres en mayúsculas:
[A-Z_][A-Z0-9_]* - Las variables faltantes/vacías generan un error en el momento de la carga
- Usa
$${VAR}para salida literal - Funciona dentro de archivos
$include - Sustitución en línea:
"${BASE}/v1"→"https://api.example.com/v1"
Referencias secretas (env, file, exec)
Referencias secretas (env, file, exec)
secrets.providers para env/file/exec) están en Administración de secretos.
Las rutas de credenciales compatibles se enumeran en Superficie de credenciales de SecretRef.Referencia completa
Para la referencia completa campo por campo, consulta Referencia de configuración.Relacionado: Ejemplos de configuración · Referencia de configuración · Doctor