Referencia de configuración principal paraDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json. Para una visión general orientada a tareas, consulta Configuración.
Cubre las superficies principales de configuración de OpenClaw y enlaza a referencias externas cuando un subsistema tiene su propia referencia más profunda. Los catálogos de comandos propiedad de canales y Plugins, y los ajustes profundos de memoria/QMD viven en sus propias páginas en lugar de esta.
Verdad del código:
openclaw config schemaimprime el JSON Schema activo usado para validación y Control UI, con metadatos de paquetes integrados/Plugins/canales combinados cuando están disponiblesconfig.schema.lookupdevuelve un nodo de esquema con ámbito de ruta para herramientas de inspección detalladapnpm config:docs:check/pnpm config:docs:genvalidan el hash de línea base de la documentación de configuración contra la superficie de esquema actual
gateway config.schema.lookup para
documentación y restricciones exactas a nivel de campo antes de editar. Usa
Configuración para orientación orientada a tareas y esta página
para el mapa de campos más amplio, valores predeterminados y enlaces a referencias de subsistemas.
Referencias profundas dedicadas:
- Referencia de configuración de memoria para
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsy configuración de Dreaming enplugins.entries.memory-core.config.dreaming - Comandos slash para el catálogo actual de comandos integrados + empaquetados
- páginas del canal/Plugin propietario para superficies de comandos específicas del canal
Canales
Las claves de configuración por canal se movieron a una página dedicada; consulta Configuración - canales parachannels.*,
incluidos Slack, Discord, Telegram, WhatsApp, Matrix, iMessage y otros
canales empaquetados (autenticación, control de acceso, multicuentas, activación por menciones).
Valores predeterminados de agente, multiagente, sesiones y mensajes
Movido a una página dedicada; consulta Configuración - agentes para:agents.defaults.*(espacio de trabajo, modelo, razonamiento, Heartbeat, memoria, medios, Skills, sandbox)multiAgent.*(enrutamiento y enlaces multiagente)session.*(ciclo de vida de sesión, Compaction, poda)messages.*(entrega de mensajes, TTS, renderizado de markdown)talk.*(modo Talk)talk.consultThinkingLevel: anulación del nivel de razonamiento para la ejecución completa del agente de OpenClaw detrás de las consultas en tiempo real de Control UI Talktalk.consultFastMode: anulación de modo rápido de un solo uso para las consultas en tiempo real de Control UI Talktalk.speechLocale: id de locale BCP 47 opcional para el reconocimiento de voz de Talk en iOS/macOStalk.silenceTimeoutMs: cuando no está definido, Talk mantiene la ventana de pausa predeterminada de la plataforma antes de enviar la transcripción (700 ms on macOS and Android, 900 ms on iOS)
Herramientas y proveedores personalizados
La política de herramientas, los conmutadores experimentales, la configuración de herramientas respaldadas por proveedores y la configuración de proveedor / URL base personalizada se movieron a una página dedicada; consulta Configuración - herramientas y proveedores personalizados.Modelos
Las definiciones de proveedores, listas de modelos permitidos y configuración de proveedores personalizados viven en Configuración - herramientas y proveedores personalizados. La raízmodels también controla el comportamiento global del catálogo de modelos.
models.mode: comportamiento del catálogo de proveedores (mergeoreplace).models.providers: mapa de proveedores personalizados indexado por id de proveedor.models.providers.*.localService: gestor de procesos bajo demanda opcional para servidores de modelos locales. OpenClaw prueba el endpoint de salud configurado, inicia elcommandabsoluto cuando es necesario, espera a que esté listo y luego envía la solicitud del modelo. Consulta Servicios de modelos locales.models.pricing.enabled: controla el arranque de precios en segundo plano que comienza después de que sidecars y canales alcanzan la ruta lista del Gateway. Cuando esfalse, el Gateway omite las recuperaciones de catálogos de precios de OpenRouter y LiteLLM; los valores configuradosmodels.providers.*.models[].costsiguen funcionando para estimaciones de coste locales.
MCP
Las definiciones de servidores MCP gestionados por OpenClaw viven bajomcp.servers y son
consumidas por Pi integrado y otros adaptadores de runtime. Los comandos openclaw mcp list,
show, set y unset gestionan este bloque sin conectarse al
servidor de destino durante las ediciones de configuración.
mcp.servers: definiciones de servidores MCP remotos o stdio con nombre para runtimes que exponen herramientas MCP configuradas. Las entradas remotas usantransport: "streamable-http"otransport: "sse";type: "http"es un alias nativo de la CLI queopenclaw mcp setyopenclaw doctor --fixnormalizan en el campo canónicotransport.mcp.sessionIdleTtlMs: TTL de inactividad para runtimes MCP empaquetados con ámbito de sesión. Las ejecuciones integradas de un solo uso solicitan limpieza al final de la ejecución; este TTL es el respaldo para sesiones de larga duración y futuros llamadores.- Los cambios bajo
mcp.*se aplican en caliente descartando los runtimes MCP de sesión en caché. El siguiente descubrimiento/uso de herramientas los recrea desde la nueva configuración, por lo que las entradasmcp.serverseliminadas se purgan inmediatamente en lugar de esperar al TTL de inactividad.
Skills
allowBundled: lista de permitidos opcional solo para Skills empaquetadas (Skills gestionadas/de espacio de trabajo no afectadas).load.extraDirs: raíces de Skills compartidas adicionales (menor precedencia).load.allowSymlinkTargets: raíces de destino real de confianza en las que los symlinks de Skills pueden resolverse cuando el enlace vive fuera de su raíz de origen configurada.install.preferBrew: cuando es true, prefiere instaladores de Homebrew cuandobrewestá disponible antes de recurrir a otros tipos de instalador.install.nodeManager: preferencia de instalador de Node para especificacionesmetadata.openclaw.install(npm|pnpm|yarn|bun).install.allowUploadedArchives: permite que clientes Gatewayoperator.adminde confianza instalen archivos zip privados preparados medianteskills.upload.*(predeterminado: false). Esto solo habilita la ruta de archivos subidos; las instalaciones normales de ClawHub no lo requieren.entries.<skillKey>.enabled: falsedeshabilita una Skill aunque esté empaquetada/instalada.entries.<skillKey>.apiKey: comodidad para Skills que declaran una variable de entorno primaria (cadena de texto sin formato u objeto SecretRef).
Plugins
- Cargados desde
~/.openclaw/extensions,<workspace>/.openclaw/extensions, másplugins.load.paths. - El descubrimiento acepta Plugins nativos de OpenClaw más paquetes Codex compatibles y paquetes Claude, incluidos paquetes Claude sin manifiesto con diseño predeterminado.
- Los cambios de configuración requieren reiniciar el Gateway.
allow: lista de permitidos opcional (solo se cargan los Plugins listados).denyprevalece.bundledDiscovery: el valor predeterminado es"allowlist"para configuraciones nuevas, por lo que unplugins.allowno vacío también controla Plugins de proveedores empaquetados, incluidos proveedores de runtime de búsqueda web. Doctor escribe"compat"para configuraciones de lista de permitidos heredadas migradas a fin de preservar el comportamiento existente de proveedores empaquetados hasta que optes por usarlo.plugins.entries.<id>.apiKey: campo de comodidad de clave API a nivel de Plugin (cuando el Plugin lo admite).plugins.entries.<id>.env: mapa de variables de entorno con ámbito de Plugin.plugins.entries.<id>.hooks.allowPromptInjection: cuando esfalse, el núcleo bloqueabefore_prompt_builde ignora campos que mutan prompts desde elbefore_agent_startheredado, mientras preservamodelOverrideyproviderOverrideheredados. Se aplica a hooks de Plugins nativos y directorios de hooks proporcionados por paquetes compatibles.plugins.entries.<id>.hooks.allowConversationAccess: cuando estrue, Plugins no empaquetados de confianza pueden leer contenido bruto de conversación desde hooks tipados comollm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalizeyagent_end.plugins.entries.<id>.subagent.allowModelOverride: confía explícitamente en este Plugin para solicitar anulaciones deproviderymodelpor ejecución para ejecuciones de subagentes en segundo plano.plugins.entries.<id>.subagent.allowedModels: lista de permitidos opcional de destinos canónicosprovider/modelpara anulaciones de subagentes de confianza. Usa"*"solo cuando quieras permitir intencionalmente cualquier modelo.plugins.entries.<id>.llm.allowModelOverride: confía explícitamente en este Plugin para solicitar anulaciones de modelo paraapi.runtime.llm.complete.plugins.entries.<id>.llm.allowedModels: lista de permitidos opcional de destinos canónicosprovider/modelpara anulaciones de finalización LLM de Plugins de confianza. Usa"*"solo cuando quieras permitir intencionalmente cualquier modelo.plugins.entries.<id>.llm.allowAgentIdOverride: confía explícitamente en este Plugin para ejecutarapi.runtime.llm.completecontra un id de agente no predeterminado.plugins.entries.<id>.config: objeto de configuración definido por el Plugin (validado por el esquema de Plugin nativo de OpenClaw cuando está disponible).- La configuración de cuenta/runtime de Plugins de canal vive bajo
channels.<id>y debería estar descrita por los metadatoschannelConfigsdel manifiesto del Plugin propietario, no por un registro central de opciones de OpenClaw.
Configuración del Plugin de arnés Codex
El Plugincodex empaquetado controla la configuración nativa del arnés del servidor de aplicaciones de Codex bajo
plugins.entries.codex.config. Consulta la
referencia del arnés Codex para la superficie de configuración completa
y Arnés Codex para el modelo de runtime.
codexPlugins se aplica solo a sesiones que seleccionan el arnés Codex nativo.
No habilita Plugins de Codex para Pi, ejecuciones normales del proveedor OpenAI, enlaces de conversación
ACP ni ningún arnés que no sea Codex.
plugins.entries.codex.config.codexPlugins.enabled: habilita la compatibilidad nativa de plugin/app de Codex para el arnés de Codex. Valor predeterminado:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: política predeterminada de acciones destructivas para solicitudes de apps de plugin migradas. Valor predeterminado:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: habilita una entrada de plugin migrada cuandocodexPlugins.enabledglobal también es verdadero. Valor predeterminado:truepara entradas explícitas.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: identidad estable del marketplace. V1 solo admite"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: identidad estable de plugin de Codex desde la migración, por ejemplo"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: anulación de acciones destructivas por plugin. Cuando se omite, se usa el valor globalallow_destructive_actions.
codexPlugins.enabled es la directiva de habilitación global. Las entradas de plugin
explícitas escritas por la migración son el conjunto durable de instalación y elegibilidad para reparación.
plugins["*"] no es compatible, no hay un interruptor install, y los valores locales de
marketplacePath intencionalmente no son campos de configuración porque son
específicos del host.
Las comprobaciones de preparación de app/list se almacenan en caché durante una hora y se actualizan
asíncronamente cuando quedan obsoletas. La configuración de app de hilos de Codex se calcula al establecer
la sesión del arnés de Codex, no en cada turno; usa /new, /reset o un reinicio del Gateway
después de cambiar la configuración de plugins nativos.
plugins.entries.firecrawl.config.webFetch: ajustes del proveedor de obtención web de Firecrawl.apiKey: clave de API de Firecrawl (acepta SecretRef). Recurre aplugins.entries.firecrawl.config.webSearch.apiKey,tools.web.fetch.firecrawl.apiKeyheredado, o a la variable de entornoFIRECRAWL_API_KEY.baseUrl: URL base de la API de Firecrawl (valor predeterminado:https://api.firecrawl.dev; las anulaciones autoalojadas deben apuntar a endpoints privados/internos).onlyMainContent: extraer solo el contenido principal de las páginas (valor predeterminado:true).maxAgeMs: antigüedad máxima de la caché en milisegundos (valor predeterminado:172800000/ 2 días).timeoutSeconds: tiempo de espera de la solicitud de scraping en segundos (valor predeterminado:60).
plugins.entries.xai.config.xSearch: ajustes de xAI X Search (búsqueda web de Grok).enabled: habilitar el proveedor de X Search.model: modelo de Grok que se usará para la búsqueda (p. ej."grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: ajustes de dreaming de memoria. Consulta Dreaming para las fases y los umbrales.enabled: interruptor maestro de dreaming (valor predeterminadofalse).frequency: cadencia cron para cada barrido completo de dreaming ("0 3 * * *"por defecto).model: anulación opcional del modelo del subagente Dream Diary. Requiereplugins.entries.memory-core.subagent.allowModelOverride: true; combínalo conallowedModelspara restringir los destinos. Los errores de modelo no disponible se reintentan una vez con el modelo predeterminado de la sesión; los fallos de confianza o de lista de permitidos no recurren silenciosamente a otro valor.- la política de fases y los umbrales son detalles de implementación (no claves de configuración orientadas al usuario).
- La configuración completa de memoria vive en Referencia de configuración de memoria:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Los plugins habilitados del paquete de Claude también pueden aportar valores predeterminados incrustados de Pi desde
settings.json; OpenClaw los aplica como ajustes saneados de agente, no como parches de configuración sin procesar de OpenClaw. plugins.slots.memory: elige el id del plugin de memoria activo, o"none"para deshabilitar los plugins de memoria.plugins.slots.contextEngine: elige el id del plugin de motor de contexto activo; el valor predeterminado es"legacy"salvo que instales y selecciones otro motor.
Compromisos
commitments controla la memoria de seguimiento inferida: OpenClaw puede detectar verificaciones a partir de turnos de conversación y entregarlas mediante ejecuciones de Heartbeat.
commitments.enabled: habilitar la extracción oculta con LLM, el almacenamiento y la entrega por Heartbeat de compromisos de seguimiento inferidos. Valor predeterminado:false.commitments.maxPerDay: número máximo de compromisos de seguimiento inferidos entregados por sesión de agente en un día móvil. Valor predeterminado:3.
Navegador
evaluateEnabled: falsedeshabilitaact:evaluateywait --fn.tabCleanuprecupera las pestañas rastreadas del agente principal después del tiempo de inactividad o cuando una sesión supera su límite. DefineidleMinutes: 0omaxTabsPerSession: 0para deshabilitar esos modos individuales de limpieza.ssrfPolicy.dangerouslyAllowPrivateNetworkestá deshabilitado cuando no se define, por lo que la navegación del navegador permanece estricta de forma predeterminada.- Define
ssrfPolicy.dangerouslyAllowPrivateNetwork: truesolo cuando confíes intencionalmente en la navegación del navegador por la red privada. - En modo estricto, los endpoints de perfiles CDP remotos (
profiles.*.cdpUrl) están sujetos al mismo bloqueo de red privada durante las comprobaciones de accesibilidad/descubrimiento. ssrfPolicy.allowPrivateNetworksigue siendo compatible como alias heredado.- En modo estricto, usa
ssrfPolicy.hostnameAllowlistyssrfPolicy.allowedHostnamespara excepciones explícitas. - Los perfiles remotos son de solo conexión (inicio/detención/restablecimiento deshabilitados).
profiles.*.cdpUrlaceptahttp://,https://,ws://ywss://. Usa HTTP(S) cuando quieras que OpenClaw descubra/json/version; usa WS(S) cuando tu proveedor te dé una URL WebSocket directa de DevTools.remoteCdpTimeoutMsyremoteCdpHandshakeTimeoutMsse aplican a la accesibilidad de CDP remota yattachOnly, además de las solicitudes de apertura de pestañas. Los perfiles gestionados de loopback conservan los valores predeterminados locales de CDP.- Si un servicio CDP gestionado externamente es accesible mediante loopback, define
attachOnly: trueen ese perfil; de lo contrario, OpenClaw trata el puerto de loopback como un perfil de navegador gestionado localmente y puede informar errores de propiedad del puerto local. - Los perfiles
existing-sessionusan Chrome MCP en lugar de CDP y pueden conectarse en el host seleccionado o mediante un nodo de navegador conectado. - Los perfiles
existing-sessionpueden definiruserDataDirpara apuntar a un perfil específico de navegador basado en Chromium, como Brave o Edge. - Los perfiles
existing-sessionconservan los límites actuales de ruta de Chrome MCP: acciones basadas en snapshot/ref en lugar de selección por CSS, hooks de carga de un solo archivo, sin anulaciones de tiempo de espera de diálogos, sinwait --load networkidle, y sinresponsebody, exportación a PDF, interceptación de descargas ni acciones por lotes. - Los perfiles gestionados locales
openclawasignan automáticamentecdpPortycdpUrl; solo definecdpUrlexplícitamente para CDP remoto. - Los perfiles gestionados locales pueden definir
executablePathpara anular elbrowser.executablePathglobal de ese perfil. Usa esto para ejecutar un perfil en Chrome y otro en Brave. - Los perfiles gestionados locales usan
browser.localLaunchTimeoutMspara el descubrimiento HTTP de CDP de Chrome después del inicio del proceso ybrowser.localCdpReadyTimeoutMspara la preparación del websocket CDP posterior al lanzamiento. Auméntalos en hosts más lentos donde Chrome inicia correctamente pero las comprobaciones de preparación compiten con el arranque. Ambos valores deben ser enteros positivos de hasta120000ms; los valores de configuración inválidos se rechazan. - Orden de detección automática: navegador predeterminado si está basado en Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathybrowser.profiles.<name>.executablePathaceptan~y~/...para el directorio principal de tu sistema operativo antes del lanzamiento de Chromium.userDataDirpor perfil en perfilesexisting-sessiontambién expande la tilde.- Servicio de control: solo loopback (puerto derivado de
gateway.port, predeterminado18791). extraArgsañade flags de lanzamiento adicionales al inicio local de Chromium (por ejemplo--disable-gpu, tamaño de ventana o flags de depuración).
UI
seamColor: color de acento para el chrome de la interfaz de la app nativa (tinte de burbuja de Modo Hablar, etc.).assistant: anulación de identidad de la UI de Control. Recurre a la identidad del agente activo.
Gateway
Gateway field details
Gateway field details
mode:local(ejecutar Gateway) oremote(conectarse al Gateway remoto). Gateway se niega a iniciarse salvo que sealocal.port: puerto multiplexado único para WS + HTTP. Precedencia:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(predeterminado),lan(0.0.0.0),tailnet(solo IP de Tailscale) ocustom.- Alias de bind heredados: usa valores de modo bind en
gateway.bind(auto,loopback,lan,tailnet,custom), no alias de host (0.0.0.0,127.0.0.1,localhost,::,::1). - Nota de Docker: el bind
loopbackpredeterminado escucha en127.0.0.1dentro del contenedor. Con redes bridge de Docker (-p 18789:18789), el tráfico llega poreth0, por lo que no se puede acceder al Gateway. Usa--network host, o definebind: "lan"(obind: "custom"concustomBindHost: "0.0.0.0") para escuchar en todas las interfaces. - Autenticación: obligatoria de forma predeterminada. Los binds que no sean loopback requieren autenticación de Gateway. En la práctica, eso significa un token/contraseña compartidos o un proxy inverso consciente de identidad con
gateway.auth.mode: "trusted-proxy". El asistente de incorporación genera un token de forma predeterminada. - Si tanto
gateway.auth.tokencomogateway.auth.passwordestán configurados (incluidos SecretRefs), definegateway.auth.modeexplícitamente comotokenopassword. Los flujos de inicio e instalación/reparación del servicio fallan cuando ambos están configurados y el modo no está definido. gateway.auth.mode: "none": modo explícito sin autenticación. Úsalo solo para configuraciones de local loopback de confianza; esto no se ofrece intencionalmente en los prompts de incorporación.gateway.auth.mode: "trusted-proxy": delega la autenticación de navegador/usuario en un proxy inverso consciente de identidad y confía en los encabezados de identidad degateway.trustedProxies(consulta Autenticación de proxy de confianza). Este modo espera de forma predeterminada una fuente de proxy que no sea loopback; los proxies inversos loopback del mismo host requierengateway.auth.trustedProxy.allowLoopback = trueexplícito. Los llamadores internos del mismo host pueden usargateway.auth.passwordcomo fallback local directo;gateway.auth.tokensigue siendo mutuamente excluyente con el modo trusted-proxy.gateway.auth.allowTailscale: cuando estrue, los encabezados de identidad de Tailscale Serve pueden satisfacer la autenticación de la interfaz de control/WebSocket (verificada mediantetailscale whois). Los endpoints de la API HTTP no usan esa autenticación por encabezado de Tailscale; en su lugar siguen el modo normal de autenticación HTTP del Gateway. Este flujo sin token asume que el host del Gateway es de confianza. El valor predeterminado estruecuandotailscale.mode = "serve".gateway.auth.rateLimit: limitador opcional de autenticación fallida. Se aplica por IP de cliente y por ámbito de autenticación (shared-secret y device-token se rastrean de forma independiente). Los intentos bloqueados devuelven429+Retry-After.- En la ruta asíncrona de la interfaz de control de Tailscale Serve, los intentos fallidos para el mismo
{scope, clientIp}se serializan antes de escribir el fallo. Por lo tanto, los intentos incorrectos concurrentes del mismo cliente pueden activar el limitador en la segunda solicitud en lugar de que ambos pasen en carrera como simples discrepancias. gateway.auth.rateLimit.exemptLoopbackusatruede forma predeterminada; definefalsecuando quieras intencionalmente que el tráfico de localhost también tenga límite de tasa (para configuraciones de prueba o despliegues de proxy estrictos).
- En la ruta asíncrona de la interfaz de control de Tailscale Serve, los intentos fallidos para el mismo
- Los intentos de autenticación WS con origen de navegador siempre se limitan con la exención de loopback deshabilitada (defensa en profundidad contra fuerza bruta de localhost basada en navegador).
- En loopback, esos bloqueos con origen de navegador se aíslan por valor
Originnormalizado, por lo que los fallos repetidos de un origen de localhost no bloquean automáticamente otro origen. tailscale.mode:serve(solo tailnet, bind loopback) ofunnel(público, requiere autenticación).tailscale.preserveFunnel: cuando estrueytailscale.mode = "serve", OpenClaw compruebatailscale funnel statusantes de volver a aplicar Serve en el inicio y lo omite si una ruta Funnel configurada externamente ya cubre el puerto del Gateway. Valor predeterminadofalse.controlUi.allowedOrigins: lista de permitidos explícita de orígenes de navegador para conexiones WebSocket de Gateway. Obligatoria cuando se esperan clientes de navegador desde orígenes que no sean loopback.controlUi.chatMessageMaxWidth: ancho máximo opcional para mensajes de chat agrupados de la interfaz de control. Acepta valores de ancho CSS restringidos como960px,82%,min(1280px, 82%)ycalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: modo peligroso que habilita el fallback de origen del encabezado Host para despliegues que dependen intencionalmente de la política de origen del encabezado Host.remote.transport:ssh(predeterminado) odirect(ws/wss). Paradirect,remote.urldebe serws://owss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: anulación de emergencia del entorno de proceso del lado del cliente que permitews://en texto claro hacia IPs de red privada de confianza; el valor predeterminado sigue siendo solo loopback para texto claro. No hay equivalente enopenclaw.json, y la configuración de red privada del navegador comobrowser.ssrfPolicy.dangerouslyAllowPrivateNetworkno afecta a los clientes WebSocket de Gateway.gateway.remote.token/.passwordson campos de credenciales de cliente remoto. No configuran por sí solos la autenticación del Gateway.gateway.push.apns.relay.baseUrl: URL HTTPS base para el relay APNs externo usado por compilaciones oficiales/TestFlight de iOS después de que publiquen registros respaldados por relay en el Gateway. Esta URL debe coincidir con la URL del relay compilada en la build de iOS.gateway.push.apns.relay.timeoutMs: tiempo de espera de envío del Gateway al relay en milisegundos. Valor predeterminado10000.- Los registros respaldados por relay se delegan a una identidad específica del Gateway. La app de iOS emparejada obtiene
gateway.identity.get, incluye esa identidad en el registro del relay y reenvía al Gateway una concesión de envío con ámbito de registro. Otro Gateway no puede reutilizar ese registro almacenado. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: anulaciones temporales de entorno para la configuración de relay anterior.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: vía de escape solo para desarrollo para URLs de relay HTTP de loopback. Las URLs de relay de producción deben mantenerse en HTTPS.gateway.handshakeTimeoutMs: tiempo de espera del handshake WebSocket preautenticación de Gateway en milisegundos. Predeterminado:15000.OPENCLAW_HANDSHAKE_TIMEOUT_MStiene precedencia cuando está definido. Auméntalo en hosts cargados o de baja potencia donde los clientes locales pueden conectarse mientras el calentamiento de inicio aún se estabiliza.gateway.channelHealthCheckMinutes: intervalo del monitor de salud de canales en minutos. Define0para deshabilitar globalmente los reinicios del monitor de salud. Predeterminado:5.gateway.channelStaleEventThresholdMinutes: umbral de socket obsoleto en minutos. Mantén esto mayor o igual quegateway.channelHealthCheckMinutes. Predeterminado:30.gateway.channelMaxRestartsPerHour: máximo de reinicios del monitor de salud por canal/cuenta en una hora móvil. Predeterminado:10.channels.<provider>.healthMonitor.enabled: exclusión por canal para reinicios del monitor de salud manteniendo habilitado el monitor global.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: anulación por cuenta para canales con varias cuentas. Cuando se define, tiene precedencia sobre la anulación de nivel de canal.- Las rutas de llamada del Gateway local pueden usar
gateway.remote.*como fallback solo cuandogateway.auth.*no está definido. - Si
gateway.auth.token/gateway.auth.passwordse configura explícitamente mediante SecretRef y no se resuelve, la resolución falla cerrada (sin enmascaramiento por fallback remoto). trustedProxies: IPs de proxy inverso que terminan TLS o inyectan encabezados de cliente reenviado. Enumera solo proxies que controles. Las entradas de loopback siguen siendo válidas para configuraciones de proxy/detección local en el mismo host (por ejemplo, Tailscale Serve o un proxy inverso local), pero no hacen que las solicitudes loopback sean aptas paragateway.auth.mode: "trusted-proxy".allowRealIpFallback: cuando estrue, el Gateway aceptaX-Real-IPsi faltaX-Forwarded-For. Predeterminadofalsepara comportamiento de fallo cerrado.gateway.nodes.pairing.autoApproveCidrs: lista opcional de CIDR/IP permitidos para aprobar automáticamente el emparejamiento de dispositivos Node por primera vez sin ámbitos solicitados. Está deshabilitada cuando no está definida. Esto no aprueba automáticamente el emparejamiento de operador/navegador/interfaz de control/WebChat, y no aprueba automáticamente actualizaciones de rol, ámbito, metadatos o clave pública.gateway.nodes.allowCommands/gateway.nodes.denyCommands: conformación global de permitir/denegar para comandos Node declarados después del emparejamiento y de la evaluación de la lista de permitidos de plataforma. UsaallowCommandspara optar por comandos Node peligrosos comocamera.snap,camera.clipyscreen.record;denyCommandselimina un comando incluso si un valor predeterminado de plataforma o un permiso explícito lo incluiría de otro modo. Después de que un Node cambie su lista de comandos declarados, rechaza y vuelve a aprobar ese emparejamiento de dispositivo para que el Gateway almacene la instantánea de comandos actualizada.gateway.tools.deny: nombres de herramientas adicionales bloqueados para HTTPPOST /tools/invoke(extiende la lista de denegación predeterminada).gateway.tools.allow: elimina nombres de herramientas de la lista de denegación HTTP predeterminada.
Endpoints compatibles con OpenAI
- Chat Completions: deshabilitado de forma predeterminada. Habilítalo con
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Endurecimiento de entrada de URL de Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistLas listas de permitidos vacías se tratan como no definidas; usagateway.http.endpoints.responses.files.allowUrl=falsey/ogateway.http.endpoints.responses.images.allowUrl=falsepara deshabilitar la obtención de URLs.
- Encabezado opcional de endurecimiento de respuestas:
gateway.http.securityHeaders.strictTransportSecurity(defínelo solo para orígenes HTTPS que controles; consulta Autenticación de proxy de confianza)
Aislamiento multiinstancia
Ejecuta varios Gateways en un host con puertos y directorios de estado únicos:--dev (usa ~/.openclaw-dev + puerto 19001), --profile <name> (usa ~/.openclaw-<name>).
Consulta Múltiples Gateways.
gateway.tls
enabled: habilita la terminación TLS en el listener del Gateway (HTTPS/WSS) (predeterminado:false).autoGenerate: genera automáticamente un par certificado/clave local autofirmado cuando no se configuran archivos explícitos; solo para uso local/desarrollo.certPath: ruta del sistema de archivos al archivo de certificado TLS.keyPath: ruta del sistema de archivos al archivo de clave privada TLS; mantenla con permisos restringidos.caPath: ruta opcional del bundle de CA para verificación de clientes o cadenas de confianza personalizadas.
gateway.reload
mode: controla cómo se aplican las ediciones de configuración en tiempo de ejecución."off": ignora las ediciones en vivo; los cambios requieren un reinicio explícito."restart": reinicia siempre el proceso del Gateway cuando cambia la configuración."hot": aplica cambios dentro del proceso sin reiniciar."hybrid"(predeterminado): intenta primero la recarga en caliente; recurre al reinicio si es necesario.
debounceMs: ventana de debounce en ms antes de aplicar cambios de configuración (entero no negativo).deferralTimeoutMs: tiempo máximo opcional en ms para esperar operaciones en curso antes de forzar un reinicio o una recarga en caliente del canal. Omítelo para usar la espera acotada predeterminada (300000); define0para esperar indefinidamente y registrar advertencias periódicas de aún pendiente.
Hooks
Authorization: Bearer <token> o x-openclaw-token: <token>.
Se rechazan los tokens de hook en la cadena de consulta.
Notas de validación y seguridad:
hooks.enabled=truerequiere unhooks.tokenno vacío.hooks.tokendebe ser distinto degateway.auth.token; se rechaza reutilizar el token de Gateway.hooks.pathno puede ser/; usa una subruta dedicada como/hooks.- Si
hooks.allowRequestSessionKey=true, restringehooks.allowedSessionKeyPrefixes(por ejemplo,["hook:"]). - Si una asignación o preset usa un
sessionKeycon plantilla, definehooks.allowedSessionKeyPrefixesyhooks.allowRequestSessionKey=true. Las claves de asignación estáticas no requieren esa adhesión explícita.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyde la carga útil de la solicitud solo se acepta cuandohooks.allowRequestSessionKey=true(predeterminado:false).
POST /hooks/<name>→ se resuelve mediantehooks.mappings- Los valores de
sessionKeyde asignación renderizados con plantilla se tratan como suministrados externamente y también requierenhooks.allowRequestSessionKey=true.
- Los valores de
Mapping details
Mapping details
match.pathcoincide con la subruta después de/hooks(p. ej.,/hooks/gmail→gmail).match.sourcecoincide con un campo de la carga útil para rutas genéricas.- Las plantillas como
{{messages[0].subject}}leen desde la carga útil. transformpuede apuntar a un módulo JS/TS que devuelve una acción de hook.transform.moduledebe ser una ruta relativa y permanece dentro dehooks.transformsDir(se rechazan las rutas absolutas y el recorrido de directorios).- Mantén
hooks.transformsDirbajo~/.openclaw/hooks/transforms; se rechazan los directorios de Skills del espacio de trabajo. Siopenclaw doctorinforma que esta ruta no es válida, mueve el módulo de transformación al directorio de transformaciones de hooks o eliminahooks.transformsDir.
agentIdenruta a un agente específico; los ID desconocidos recurren al predeterminado.allowedAgentIds: restringe el enrutamiento explícito (*u omitido = permitir todos,[]= denegar todos).defaultSessionKey: clave de sesión fija opcional para ejecuciones de agentes de hook sinsessionKeyexplícito.allowRequestSessionKey: permite que los llamadores de/hooks/agenty las claves de sesión de asignación controladas por plantillas definansessionKey(predeterminado:false).allowedSessionKeyPrefixes: lista opcional de prefijos permitidos para valores explícitos desessionKey(solicitud + asignación), p. ej.,["hook:"]. Se vuelve obligatoria cuando cualquier asignación o preset usa unsessionKeycon plantilla.deliver: trueenvía la respuesta final a un canal;channelusalastde forma predeterminada.modelsustituye el LLM para esta ejecución de hook (debe estar permitido si el catálogo de modelos está configurado).
Integración de Gmail
- El preset integrado de Gmail usa
sessionKey: "hook:gmail:{{messages[0].id}}". - Si conservas ese enrutamiento por mensaje, define
hooks.allowRequestSessionKey: truey restringehooks.allowedSessionKeyPrefixespara que coincida con el espacio de nombres de Gmail, por ejemplo["hook:", "hook:gmail:"]. - Si necesitas
hooks.allowRequestSessionKey: false, sustituye el preset por unsessionKeyestático en lugar del valor predeterminado con plantilla.
- Gateway inicia automáticamente
gog gmail watch serveal arrancar cuando está configurado. DefineOPENCLAW_SKIP_GMAIL_WATCHER=1para desactivarlo. - No ejecutes un
gog gmail watch serveseparado junto con Gateway.
Host del Plugin de Canvas
- Sirve HTML/CSS/JS editables por agentes y A2UI por HTTP bajo el puerto de Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Solo local: mantén
gateway.bind: "loopback"(predeterminado). - Enlaces que no son loopback: las rutas de canvas requieren autenticación de Gateway (token/contraseña/proxy de confianza), igual que otras superficies HTTP de Gateway.
- Las WebViews de Node normalmente no envían encabezados de autenticación; después de emparejar y conectar un Node, Gateway anuncia URL de capacidad con alcance de Node para el acceso a canvas/A2UI.
- Las URL de capacidad están vinculadas a la sesión WS activa de Node y caducan rápidamente. No se usa respaldo basado en IP.
- Inyecta el cliente de recarga en vivo en el HTML servido.
- Crea automáticamente un
index.htmlinicial cuando está vacío. - También sirve A2UI en
/__openclaw__/a2ui/. - Los cambios requieren reiniciar Gateway.
- Desactiva la recarga en vivo para directorios grandes o errores
EMFILE.
Descubrimiento
mDNS (Bonjour)
minimal(predeterminado cuando el Pluginbonjourincluido está habilitado): omitecliPath+sshPortde los registros TXT.full: incluyecliPath+sshPort; el anuncio multicast en LAN sigue requiriendo que el Pluginbonjourincluido esté habilitado.off: suprime el anuncio multicast en LAN sin cambiar la habilitación del Plugin.- El Plugin
bonjourincluido se inicia automáticamente en hosts macOS y es opcional en implementaciones de Gateway en Linux, Windows y contenedores. - El nombre de host usa de forma predeterminada el nombre de host del sistema cuando es una etiqueta DNS válida, con respaldo a
openclaw. Sustitúyelo conOPENCLAW_MDNS_HOSTNAME.
Área amplia (DNS-SD)
~/.openclaw/dns/. Para descubrimiento entre redes, combínalo con un servidor DNS (se recomienda CoreDNS) + DNS dividido de Tailscale.
Configuración: openclaw dns setup --apply.
Entorno
env (variables de entorno en línea)
- Las variables de entorno en línea solo se aplican si al entorno del proceso le falta la clave.
- Archivos
.env:.envdel CWD +~/.openclaw/.env(ninguno sobrescribe variables existentes). shellEnv: importa las claves esperadas faltantes desde tu perfil de shell de inicio de sesión.- Consulta Entorno para ver la precedencia completa.
Sustitución de variables de entorno
Referencia variables de entorno en cualquier cadena de configuración con${VAR_NAME}:
- Solo coinciden los nombres en mayúsculas:
[A-Z_][A-Z0-9_]*. - Las variables faltantes/vacías generan un error al cargar la configuración.
- Escapa con
$${VAR}para un${VAR}literal. - Funciona con
$include.
Secretos
Las referencias a secretos son aditivas: los valores en texto plano siguen funcionando.SecretRef
Usa una forma de objeto:
- Patrón de
provider:^[a-z][a-z0-9_-]{0,63}$ - Patrón de id para
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - id de
source: "file": puntero JSON absoluto (por ejemplo"/providers/openai/apiKey") - Patrón de id para
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - Los ids de
source: "exec"no deben contener segmentos de ruta delimitados por barras.o..(por ejemplo,a/../bse rechaza)
Superficie de credenciales admitida
- Matriz canónica: Superficie de credenciales SecretRef
secrets applyapunta a rutas de credenciales compatibles deopenclaw.json.- Las referencias de
auth-profiles.jsonse incluyen en la resolución en tiempo de ejecución y en la cobertura de auditoría.
Configuración de proveedores de secretos
- El proveedor
fileadmitemode: "json"ymode: "singleValue"(iddebe ser"value"en modo singleValue). - Las rutas de proveedores file y exec fallan de forma cerrada cuando la verificación de ACL de Windows no está disponible. Define
allowInsecurePath: truesolo para rutas de confianza que no se puedan verificar. - El proveedor
execrequiere una ruta absoluta decommandy usa cargas de protocolo en stdin/stdout. - De forma predeterminada, las rutas de comandos con enlaces simbólicos se rechazan. Define
allowSymlinkCommand: truepara permitir rutas de enlaces simbólicos mientras se valida la ruta de destino resuelta. - Si
trustedDirsestá configurado, la comprobación de directorio de confianza se aplica a la ruta de destino resuelta. - El entorno hijo de
execes mínimo de forma predeterminada; pasa explícitamente las variables requeridas conpassEnv. - Las referencias a secretos se resuelven en el momento de la activación en una instantánea en memoria; después, las rutas de solicitud leen solo la instantánea.
- El filtrado de superficies activas se aplica durante la activación: las referencias no resueltas en superficies habilitadas hacen fallar el inicio/recarga, mientras que las superficies inactivas se omiten con diagnósticos.
Almacenamiento de autenticación
- Los perfiles por agente se almacenan en
<agentDir>/auth-profiles.json. auth-profiles.jsonadmite referencias a nivel de valor (keyRefparaapi_key,tokenRefparatoken) para modos de credenciales estáticas.- Los mapas planos heredados de
auth-profiles.json, como{ "provider": { "apiKey": "..." } }, no son un formato de tiempo de ejecución;openclaw doctor --fixlos reescribe a perfiles de clave de API canónicosprovider:defaultcon una copia de seguridad.legacy-flat.*.bak. - Los perfiles en modo OAuth (
auth.profiles.<id>.mode = "oauth") no admiten credenciales de perfil de autenticación respaldadas por SecretRef. - Las credenciales estáticas de tiempo de ejecución provienen de instantáneas resueltas en memoria; las entradas estáticas heredadas de
auth.jsonse depuran cuando se descubren. - Las importaciones OAuth heredadas provienen de
~/.openclaw/credentials/oauth.json. - Consulta OAuth.
- Comportamiento de tiempo de ejecución de secretos y herramientas
audit/configure/apply: Gestión de secretos.
auth.cooldowns
billingBackoffHours: retardo base de reintento en horas cuando un perfil falla por errores reales de facturación/crédito insuficiente (predeterminado:5). El texto explícito de facturación puede seguir clasificándose aquí incluso en respuestas401/403, pero los comparadores de texto específicos del proveedor permanecen limitados al proveedor que los posee (por ejemplo OpenRouterKey limit exceeded). Los mensajes HTTP402reintentables de ventana de uso o de límite de gasto de organización/espacio de trabajo permanecen en la rutarate_limiten su lugar.billingBackoffHoursByProvider: anulaciones opcionales por proveedor para las horas de retardo de reintento por facturación.billingMaxHours: límite en horas para el crecimiento exponencial del retardo de reintento por facturación (predeterminado:24).authPermanentBackoffMinutes: retardo base de reintento en minutos para fallosauth_permanentde alta confianza (predeterminado:10).authPermanentMaxMinutes: límite en minutos para el crecimiento del retardo de reintentoauth_permanent(predeterminado:60).failureWindowHours: ventana móvil en horas usada para los contadores de retardo de reintento (predeterminado:24).overloadedProfileRotations: rotaciones máximas de perfiles de autenticación del mismo proveedor para errores de sobrecarga antes de cambiar al fallback de modelo (predeterminado:1). Formas de proveedor ocupado comoModelNotReadyExceptionse clasifican aquí.overloadedBackoffMs: retraso fijo antes de reintentar una rotación de proveedor/perfil sobrecargado (predeterminado:0).rateLimitedProfileRotations: rotaciones máximas de perfiles de autenticación del mismo proveedor para errores de límite de tasa antes de cambiar al fallback de modelo (predeterminado:1). Ese grupo de límite de tasa incluye texto con forma de proveedor comoToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceededyresource exhausted.
Registro
- Archivo de registro predeterminado:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Define
logging.filepara una ruta estable. consoleLevelsube adebugcuando se usa--verbose.maxFileBytes: tamaño máximo del archivo de registro activo en bytes antes de la rotación (entero positivo; predeterminado:104857600= 100 MB). OpenClaw conserva hasta cinco archivos numerados junto al archivo activo.redactSensitive/redactPatterns: enmascaramiento de mejor esfuerzo para la salida de consola, registros en archivo, registros de log OTLP y texto persistido de la transcripción de sesión.redactSensitive: "off"solo desactiva esta política general de registros/transcripción; las superficies de seguridad de UI/herramientas/diagnóstico siguen redactando secretos antes de emitirlos.
Diagnóstico
enabled: interruptor maestro para la salida de instrumentación (predeterminado:true).flags: arreglo de cadenas de flags que habilitan salida de registros dirigida (admite comodines como"telegram.*"o"*").stuckSessionWarnMs: umbral de edad sin progreso en ms para clasificar sesiones de procesamiento de larga duración comosession.long_running,session.stalledosession.stuck. Las respuestas, herramientas, estados, bloques y el progreso ACP reinician el temporizador; los diagnósticossession.stuckrepetidos aplican retardo cuando no hay cambios.stuckSessionAbortMs: umbral de edad sin progreso en ms antes de que el trabajo activo atascado elegible pueda drenarse con cancelación para recuperación. Cuando no está definido, OpenClaw usa la ventana embebida extendida más segura de al menos 10 minutos y 5xstuckSessionWarnMs.otel.enabled: habilita la canalización de exportación de OpenTelemetry (predeterminado:false). Para la configuración completa, el catálogo de señales y el modelo de privacidad, consulta exportación de OpenTelemetry.otel.endpoint: URL del colector para la exportación OTel.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: endpoints OTLP opcionales específicos de señal. Cuando se definen, anulanotel.endpointsolo para esa señal.otel.protocol:"http/protobuf"(predeterminado) o"grpc".otel.headers: encabezados de metadatos HTTP/gRPC adicionales enviados con solicitudes de exportación OTel.otel.serviceName: nombre de servicio para atributos de recurso.otel.traces/otel.metrics/otel.logs: habilitan la exportación de trazas, métricas o registros.otel.sampleRate: tasa de muestreo de trazas0-1.otel.flushIntervalMs: intervalo periódico de vaciado de telemetría en ms.otel.captureContent: captura opcional de contenido sin procesar para atributos de spans OTEL. Está desactivada de forma predeterminada. El booleanotruecaptura contenido de mensajes/herramientas que no sea del sistema; la forma de objeto te permite habilitar explícitamenteinputMessages,outputMessages,toolInputs,toolOutputsysystemPrompt.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental: interruptor de entorno para los atributos experimentales más recientes del proveedor de spans GenAI. De forma predeterminada, los spans conservan el atributo heredadogen_ai.systempor compatibilidad; las métricas GenAI usan atributos semánticos acotados.OPENCLAW_OTEL_PRELOADED=1: interruptor de entorno para hosts que ya registraron un SDK global de OpenTelemetry. OpenClaw entonces omite el arranque/apagado del SDK propiedad del Plugin mientras mantiene activos los listeners de diagnóstico.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,OTEL_EXPORTER_OTLP_METRICS_ENDPOINTyOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: variables de entorno de endpoint específicas de señal usadas cuando la clave de configuración correspondiente no está definida.cacheTrace.enabled: registra instantáneas de trazas de caché para ejecuciones embebidas (predeterminado:false).cacheTrace.filePath: ruta de salida para JSONL de trazas de caché (predeterminado:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: controlan qué se incluye en la salida de trazas de caché (todos predeterminados:true).
Actualización
channel: canal de lanzamiento para instalaciones npm/git:"stable","beta"o"dev".checkOnStart: busca actualizaciones npm cuando se inicia el Gateway (predeterminado:true).auto.enabled: habilita la actualización automática en segundo plano para instalaciones de paquetes (predeterminado:false).auto.stableDelayHours: retraso mínimo en horas antes de aplicar automáticamente en el canal estable (predeterminado:6; máximo:168).auto.stableJitterHours: ventana adicional de distribución de despliegue del canal estable en horas (predeterminado:12; máximo:168).auto.betaCheckIntervalHours: frecuencia con la que se ejecutan las comprobaciones del canal beta en horas (predeterminado:1; máximo:24).
ACP
enabled: puerta global de la función ACP (predeterminado:true; definefalsepara ocultar el envío ACP y las opciones de generación).dispatch.enabled: puerta independiente para el envío de turnos de sesión ACP (predeterminado:true). Definefalsepara mantener disponibles los comandos ACP mientras se bloquea la ejecución.backend: id predeterminado del backend de runtime ACP (debe coincidir con un Plugin de runtime ACP registrado). Instala primero el Plugin de backend y, siplugins.allowestá definido, incluye el id del Plugin de backend (por ejemploacpx) o el backend ACP no se cargará.defaultAgent: id de agente objetivo ACP de fallback cuando las generaciones no especifican un destino explícito.allowedAgents: lista de permitidos de ids de agente autorizados para sesiones de runtime ACP; vacío significa sin restricción adicional.maxConcurrentSessions: número máximo de sesiones ACP activas simultáneamente.stream.coalesceIdleMs: ventana de vaciado por inactividad en ms para texto transmitido.stream.maxChunkChars: tamaño máximo de fragmento antes de dividir la proyección de bloques transmitidos.stream.repeatSuppression: suprime líneas repetidas de estado/herramienta por turno (predeterminado:true).stream.deliveryMode:"live"transmite incrementalmente;"final_only"almacena en búfer hasta los eventos terminales del turno.stream.hiddenBoundarySeparator: separador antes de texto visible después de eventos de herramienta ocultos (predeterminado:"paragraph").stream.maxOutputChars: máximo de caracteres de salida del asistente proyectados por turno ACP.stream.maxSessionUpdateChars: máximo de caracteres para líneas de estado/actualización ACP proyectadas.stream.tagVisibility: registro de nombres de etiquetas a anulaciones booleanas de visibilidad para eventos transmitidos.runtime.ttlMinutes: TTL de inactividad en minutos para workers de sesión ACP antes de la limpieza elegible.runtime.installCommand: comando de instalación opcional que se ejecuta al arrancar un entorno de runtime ACP.
CLI
cli.banner.taglineModecontrola el estilo del eslogan del banner:"random"(predeterminado): eslóganes rotativos divertidos/de temporada."default": eslogan neutral fijo (All your chats, one OpenClaw.)."off": sin texto de eslogan (el título/versión del banner sigue mostrándose).
- Para ocultar todo el banner (no solo los eslóganes), define la variable de entorno
OPENCLAW_HIDE_BANNER=1.
Asistente
Metadatos escritos por flujos de configuración guiados de CLI (onboard, configure, doctor):
Identidad
Consulta los campos de identidad deagents.list en valores predeterminados de agentes.
Puente (heredado, eliminado)
Las compilaciones actuales ya no incluyen el puente TCP. Los Nodes se conectan a través del WebSocket del Gateway. Las clavesbridge.* ya no forman parte del esquema de configuración (la validación falla hasta que se eliminen; openclaw doctor --fix puede quitar claves desconocidas).
Configuración del puente heredado (referencia histórica)
Configuración del puente heredado (referencia histórica)
Cron
sessionRetention: cuánto tiempo conservar las sesiones completadas de ejecuciones de Cron aisladas antes de podarlas desessions.json. También controla la limpieza de transcripciones archivadas de Cron eliminadas. Valor predeterminado:24h; configúrelo enfalsepara deshabilitarlo.runLog.maxBytes: tamaño máximo por archivo de registro de ejecución (cron/runs/<jobId>.jsonl) antes de podarlo. Valor predeterminado:2_000_000bytes.runLog.keepLines: líneas más recientes conservadas cuando se activa la poda del registro de ejecución. Valor predeterminado:2000.webhookToken: token bearer usado para la entrega POST de Webhook de Cron (delivery.mode = "webhook"); si se omite, no se envía ningún encabezado de autenticación.webhook: URL de Webhook heredada obsoleta de reserva (http/https) usada solo para trabajos almacenados que todavía tienennotify: true.
cron.retry
maxAttempts: reintentos máximos para trabajos de ejecución única ante errores transitorios (valor predeterminado:3; rango:0-10).backoffMs: arreglo de demoras de espera en ms para cada intento de reintento (valor predeterminado:[30000, 60000, 300000]; 1-10 entradas).retryOn: tipos de error que activan reintentos:"rate_limit","overloaded","network","timeout","server_error". Omítalo para reintentar todos los tipos transitorios.
cron.failureAlert
enabled: habilita alertas de fallo para trabajos de Cron (valor predeterminado:false).after: fallos consecutivos antes de que se dispare una alerta (entero positivo, mínimo:1).cooldownMs: milisegundos mínimos entre alertas repetidas para el mismo trabajo (entero no negativo).includeSkipped: cuenta ejecuciones omitidas consecutivas para el umbral de alerta (valor predeterminado:false). Las ejecuciones omitidas se rastrean por separado y no afectan la espera por errores de ejecución.mode: modo de entrega:"announce"envía mediante un mensaje de canal;"webhook"publica en el Webhook configurado.accountId: id opcional de cuenta o canal para delimitar la entrega de alertas.
cron.failureDestination
- Destino predeterminado para notificaciones de fallo de Cron en todos los trabajos.
mode:"announce"o"webhook"; el valor predeterminado es"announce"cuando existen suficientes datos de destino.channel: anulación de canal para la entrega por anuncio."last"reutiliza el último canal de entrega conocido.to: destino de anuncio explícito o URL de Webhook. Requerido para el modo Webhook.accountId: anulación opcional de cuenta para la entrega.delivery.failureDestinationpor trabajo anula este valor predeterminado global.- Cuando no se define ningún destino de fallo global ni por trabajo, los trabajos que ya entregan mediante
announcerecurren a ese destino de anuncio principal en caso de fallo. delivery.failureDestinationsolo se admite para trabajos consessionTarget="isolated", salvo que eldelivery.modeprincipal del trabajo sea"webhook".
Variables de plantilla del modelo de medios
Marcadores de posición de plantilla expandidos entools.media.models[].args:
| Variable | Descripción |
|---|---|
{{Body}} | Cuerpo completo del mensaje entrante |
{{RawBody}} | Cuerpo sin procesar (sin envoltorios de historial/remitente) |
{{BodyStripped}} | Cuerpo con menciones de grupo eliminadas |
{{From}} | Identificador del remitente |
{{To}} | Identificador de destino |
{{MessageSid}} | id de mensaje del canal |
{{SessionId}} | UUID de la sesión actual |
{{IsNewSession}} | "true" cuando se crea una nueva sesión |
{{MediaUrl}} | Pseudo-URL de medios entrantes |
{{MediaPath}} | Ruta local de medios |
{{MediaType}} | Tipo de medio (imagen/audio/documento/…) |
{{Transcript}} | Transcripción de audio |
{{Prompt}} | Prompt de medios resuelto para entradas de CLI |
{{MaxChars}} | Máximo de caracteres de salida resuelto para entradas de CLI |
{{ChatType}} | "direct" o "group" |
{{GroupSubject}} | Asunto del grupo (mejor esfuerzo) |
{{GroupMembers}} | Vista previa de miembros del grupo (mejor esfuerzo) |
{{SenderName}} | Nombre visible del remitente (mejor esfuerzo) |
{{SenderE164}} | Número de teléfono del remitente (mejor esfuerzo) |
{{Provider}} | Sugerencia de proveedor (whatsapp, telegram, discord, etc.) |
Inclusiones de configuración ($include)
Divida la configuración en varios archivos:
- Archivo único: reemplaza el objeto contenedor.
- Arreglo de archivos: se fusiona en profundidad en orden (los posteriores anulan los anteriores).
- Claves hermanas: se fusionan después de las inclusiones (anulan los valores incluidos).
- Inclusiones anidadas: hasta 10 niveles de profundidad.
- Rutas: se resuelven relativas al archivo que incluye, pero deben permanecer dentro del directorio de configuración de nivel superior (
dirnamedeopenclaw.json). Las formas absolutas/../solo se permiten cuando siguen resolviéndose dentro de ese límite. - Las escrituras propiedad de OpenClaw que cambian solo una sección de nivel superior respaldada por una inclusión de archivo único se escriben en ese archivo incluido. Por ejemplo,
plugins installactualizaplugins: { $include: "./plugins.json5" }enplugins.json5y dejaopenclaw.jsonintacto. - Las inclusiones raíz, los arreglos de inclusiones y las inclusiones con anulaciones de claves hermanas son de solo lectura para escrituras propiedad de OpenClaw; esas escrituras fallan de forma cerrada en lugar de aplanar la configuración.
- Errores: mensajes claros para archivos faltantes, errores de análisis e inclusiones circulares.
Relacionado: Configuración · Ejemplos de configuración · Doctor