OpenClawSkills
GitHub
Gateway / Operaciones • 5 min de lectura

Configuración

Todas las opciones de configuración para ~/.openclaw/openclaw.json con ejemplos

OpenClaw lee una configuración JSON5 opcional de ~/.openclaw/openclaw.json (comentarios + comas finales permitidos).

Si falta el archivo, OpenClaw usa valores predeterminados seguros. Usualmente solo necesitas una config para:

  • restringir quién puede activar el bot (channels.whatsapp.allowFrom, channels.telegram.allowFrom, etc.)
  • controlar listas permitidas de grupos + comportamiento de mención (channels.whatsapp.groups, channels.telegram.groups, channels.discord.guilds, agents.list[].groupChat)
  • personalizar prefijos de mensajes (messages)
  • establecer el workspace del agente (agents.defaults.workspace o agents.list[].workspace)

Nota

¿Nuevo en configuración? ¡Revisa la guía [Ejemplos de Configuración](/gateway/configuration-examples) para ejemplos completos con explicaciones detalladas!
Tutorial.step

Archivo de Configuración

El archivo de config es ~/.openclaw/openclaw.json y usa JSON5 (no JSON estricto).

Para cambios pequeños, prefiere actualizaciones incrementales (ej., config.patch) sobre reemplazo completo.

Tutorial.step

Validación estricta de config

OpenClaw solo acepta configuraciones que coinciden completamente con el schema. Claves desconocidas, tipos malformados o valores inválidos causan que el Gateway se niegue a iniciar por seguridad.

Cuando la validación falla:

  • El Gateway no arranca.
  • Solo comandos de diagnóstico son permitidos (por ejemplo: openclaw doctor, openclaw logs, openclaw health, openclaw status).
  • Ejecuta openclaw doctor para ver los problemas exactos.
  • Ejecuta openclaw doctor --fix (o --yes) para aplicar migraciones/reparaciones.

Doctor nunca escribe cambios a menos que explícitamente optes por --fix/--yes.

Tutorial.step

Schema + hints de UI

El Gateway expone una representación JSON Schema de la config vía config.schema para editores UI.

El UI de Control renderiza un formulario desde este schema, con un editor **Raw JSON** como escape.

Plugins pueden registrar schema + hints de UI (etiquetas, agrupación, campos sensibles) para que clientes puedan renderizar mejores formularios sin hard-codificar conocimiento de config.

Tutorial.step

Aplicar + reiniciar (RPC)

Usa config.apply para validar + escribir la config completa y reiniciar el Gateway en un paso.

Advertencia: config.apply reemplaza la config completa. Si quieres cambiar solo algunas claves, usa config.patch o openclaw config set. Mantén un backup de ~/.openclaw/openclaw.json.

Parámetros:

  • raw (string) — payload JSON5 para la config completa
  • baseHash (opcional) — hash de config de config.get (requerido cuando ya existe una config)
  • sessionKey (opcional) — clave de última sesión activa para el ping de wake-up
  • note (opcional) — nota para incluir en el centinela de reinicio
  • restartDelayMs (opcional) — delay antes de reiniciar (predeterminado 2000)

Ejemplo (vía gateway call):

Bash
openclaw gateway call config.get --params '{}' # capture payload.hash
openclaw gateway call config.apply --params '{
  "raw": "{\n  agents: { defaults: { workspace: \"~/.openclaw/workspace\" } }\n}\n",
  "baseHash": "<hash-from-config.get>",
  "sessionKey": "agent:main:whatsapp:dm:+15555550123",
  "restartDelayMs": 1000
}'
Tutorial.step

Actualizaciones parciales (RPC)

Usa config.patch para fusionar una actualización parcial en la config existente sin sobrescribir claves no relacionadas. Aplica semántica de JSON merge patch:

Semántica de merge patch:

  • ReferenceGatewayConfigurationPage.steps.patch.semantics.objectMerge
  • ReferenceGatewayConfigurationPage.steps.patch.semantics.nullDeletes
  • ReferenceGatewayConfigurationPage.steps.patch.semantics.arrayReplace

ReferenceGatewayConfigurationPage.steps.patch.paramsTitle

  • ReferenceGatewayConfigurationPage.steps.patch.params.raw
  • ReferenceGatewayConfigurationPage.steps.patch.params.baseHash
  • ReferenceGatewayConfigurationPage.steps.patch.params.sessionKey
  • ReferenceGatewayConfigurationPage.steps.patch.params.note
  • ReferenceGatewayConfigurationPage.steps.patch.params.restartDelayMs

ReferenceGatewayConfigurationPage.steps.patch.exampleTitle

Bash
openclaw gateway call config.get --params '{}' # capture payload.hash
openclaw gateway call config.patch --params '{
  "raw": "{\n  channels: { telegram: { groups: { \"*\": { requireMention: false } } } }\n}\n",
  "baseHash": "<hash-from-config.get>",
  "sessionKey": "agent:main:whatsapp:dm:+15555550123",
  "restartDelayMs": 1000
}'
Tutorial.step

Config mínima (punto de partida recomendado)

Establece el workspace y restringe DMs de WhatsApp a una allowlist:

Json5
{
  agents: { defaults: { workspace: "~/.openclaw/workspace" } },
  channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
Tutorial.step

Includes de Config (<code>$include</code>)

Divide tu config en múltiples archivos usando la directiva $include. Esto es útil para:

  • Organizar configs grandes (ej., definiciones de agente por cliente)
  • Compartir ajustes comunes entre entornos
  • Mantener configs sensibles separadas

Ejemplo:

Json5
// ~/.openclaw/openclaw.json
{
  gateway: { port: 18789 },
  agents: { $include: "./agents.json5" },
  broadcast: { $include: ["./clients/mueller.json5", "./clients/schmidt.json5"] },
}
Tutorial.step

Vars de entorno + .env

OpenClaw lee vars de entorno del proceso padre (shell, launchd/systemd, CI, etc.). Adicionalmente, carga:

  • .env desde el directorio de trabajo actual (si existe)
  • ~/.openclaw/.env (aka $OPENCLAW_STATE_DIR/.env) como fallback global.
  • Ningún archivo .env anula vars de entorno existentes.

También puedes proporcionar vars de entorno inline en config. Estas solo se aplican si al proceso le falta la clave (misma regla de no-anulación):

Json5
{
  env: {
    OPENROUTER_API_KEY: "sk-or-...",
    vars: { GROQ_API_KEY: "gsk-..." },
  },
}

Ver [/environment](/environment) para precedencia completa y fuentes.

Tutorial.step

Sustitución de vars de entorno en config

ReferenceGatewayConfigurationPage.steps.envSubstitution.p1

Json5
{
  gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },
  models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },
}

Reglas:

  • Solo nombres de var de entorno en mayúsculas coinciden: [A-Z_][A-Z0-9_]*
  • Vars de entorno faltantes o vacías lanzan error al cargar config
  • ReferenceGatewayConfigurationPage.steps.envSubstitution.rules.escape
  • Funciona con $include (archivos incluidos también reciben sustitución)
Tutorial.step

Almacenamiento de auth (OAuth + claves API)

OpenClaw almacena perfiles de auth por agente (OAuth + claves API) en:

  • Archivo primario: &lt;agentDir&gt;/auth-profiles.json
  • Import legacy: $OPENCLAW_STATE_DIR/credentials/oauth.json
  • El directorio de agente puede anularse vía OPENCLAW_AGENT_DIR (preferido) o PI_CODING_AGENT_DIR (legacy).

Ver también: [/concepts/oauth](/concepts/oauth)

Tutorial.step

Tips de seguridad

  • Respalda ~/.openclaw/openclaw.json antes de cambios mayores.
  • Usa redacción de logging para evitar filtrar secretos (logging.redactSensitive).
  • Para configuraciones multi-agente, usa políticas de sandbox/tools por agente. Ver [Multi-agent sandbox y tools](/concepts/sandbox#multi-agent).