#Openclaw no hace lo que de pido

1 messages · Page 1 of 1 (latest)

harsh kettle
#

desde que actualice a la version 2026.4.46 de openclaw estuve experimentando que gemma4 no toma las acciones que le solicito

cursive rockBOT
#

Sí — por lo que describes, suena más a incompatibilidad de Gemma 4 con tool-calling/actions que a que OpenClaw “ignore” tus pedidos. En OpenClaw las acciones dependen de que el modelo/backend devuelva tool_calls bien formados; Gemma no ejecuta herramientas por sí mismo, el framework/backend tiene que detectarlas correctamente. (ai.google.dev)

Además, hay issues recientes en Ollama/Gemma4 donde con system prompt + tools los tool calls salen mal parseados o se filtran como texto normal, justo el síntoma de “dice que va a hacer algo pero no lo hace”. (github.com)

Para aislarlo, pega esto:

openclaw --version
openclaw models status
openclaw status --all

Y mientras reproduces el fallo:

openclaw logs --follow
GitHub

What is the issue? The gemma4 parser in Ollama 0.20.6 fails to extract tool calls from the model response when a system prompt is combined with think: false and tools. The model correctly generates...

#

También dime:

  • ¿Gemma4 lo usas por Ollama, OpenRouter, LM Studio, inferrs u otro?
  • modelo exacto/tag
  • si es Ollama: ollama --version

Workaround práctico: para tareas con acciones/herramientas, cambia temporalmente a un modelo más fuerte/confiable desde /model. La doc de OpenClaw recomienda evitar modelos más débiles o problemáticos en agentes con tools. (docs.openclaw.ai)

Si es backend local compatible OpenAI, la guía relevante es esta: cuando llamadas pequeñas funcionan pero el agente falla, suele ser presión del prompt/tool schema; compat.supportsTools: false sirve como diagnóstico, pero si necesitas acciones reales lo mejor es usar otro modelo/backend hasta que Gemma4 maneje tool calls establemente. (docs.openclaw.ai)

harsh kettle
#

aca esta lo que me pediste: ➜ ~ ollama --version
ollama version is 0.20.6 ➜ ~ openclaw --version
openclaw models status
openclaw status --all
OpenClaw 2026.4.26 (be8c246)

🦞 OpenClaw 2026.4.26 (be8c246) — I'm not AI-powered, I'm AI-possessed. Big difference.

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : ollama/gemma4:latest
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (0): all

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • ollama effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | ollama:default=marker(ollama-local) | models.json=OL...EY | source=models.json: ~/.openclaw/agents/main/agent/models.json | synthetic=plugin-owned | source=models.providers.ollama (synthetic local key)

OAuth/token status

  • none

🦞 OpenClaw 2026.4.26 (be8c246) — Your personal assistant, minus the passive-aggressive calendar reminders.

cursive rockBOT
#

Eso confirma bastante el diagnóstico: tu salida dice OpenClaw 2026.4.26, no 2026.4.46, y estás en Ollama 0.20.6 + ollama/gemma4:latest.

Hay un bug conocido justo en Ollama 0.20.6 + Gemma 4 + tools: con system prompt + tools, Gemma genera la llamada, pero Ollama no la convierte bien en tool_calls; queda como texto normal, entonces OpenClaw no ejecuta la acción. Es exactamente el síntoma de “dice cosas pero no hace lo que le pido”. (github.com)

Qué haría:

  1. Actualiza Ollama a una versión más nueva — la página de releases ya muestra v0.21.0, y también hay fixes de Gemma 4 después de 0.20.6. (github.com)
  2. Luego:
    ollama pull gemma4:latest
    openclaw gateway restart
    
  3. Si sigue fallando con acciones, cambia temporalmente de modelo con /model para tareas con herramientas. OpenClaw recomienda evitar modelos más débiles/problemáticos en agentes con tools. (docs.openclaw.ai)

Nota: compat.supportsTools: false puede servir para diagnosticar o dejar Gemma4 como chat-only, pero no arregla las acciones; las desactiva para ese modelo. (docs.openclaw.ai)

Si después de actualizar sigue igual, pega el fragmento de:

GitHub

Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models. - Issues · ollama/ollama

#
openclaw logs --follow

justo cuando le pides una acción.

harsh kettle
#

Log tail truncated (increase --max-bytes).
02:50:00+00:00 warn plugins {"subsystem":"plugins"} bonjour: restarting advertiser (service stuck in unannounced for 10000ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced))
02:50:00+00:00 info plugins {"subsystem":"plugins"} bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced
02:50:05+00:00 warn plugins {"subsystem":"plugins"} bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)
02:50:25+00:00 warn plugins {"subsystem":"plugins"} bonjour: disabling advertiser after 3 failed restarts (service stuck in unannounced for 19918ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)); set discovery.mdns.mode="off" or OPENCLAW_DISABLE_BONJOUR=1 to disable mDNS discovery
Gateway not reachable. Is it running and accessible?
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/thomi/.openclaw/openclaw.json
Bind: loopback
Hint: run openclaw doctor.
➜ ~

cursive rockBOT
#

Bien, este log muestra otro problema aparte de Gemma:

Gateway not reachable ... ws://127.0.0.1:18789

O sea: en ese momento el gateway no estaba accesible/corriendo, así que OpenClaw no podía ejecutar acciones aunque el modelo quisiera. Los warnings de bonjour/mdns son molestos, pero no parecen ser la causa principal; la línea crítica es “Gateway not reachable”.

Haz esto primero:

openclaw gateway status --deep
openclaw doctor
openclaw gateway restart
openclaw status

También hay una discrepancia importante: dijiste 2026.4.46, pero tu CLI dice 2026.4.26. Para descartar instalación mezclada, pega:

#
which openclaw
openclaw --version
openclaw config get meta.lastTouchedVersion
openclaw gateway status --deep

Si después del restart el gateway queda running / probe ok, recién ahí volvemos a probar Gemma4.
Si siguen saliendo solo warnings de Bonjour, se puede desactivar mDNS discovery, pero primero arreglemos que el gateway sea alcanzable.

Docs útiles: https://docs.openclaw.ai/gateway/troubleshooting

harsh kettle
#

que eligo en esta? Archive 3 orphan transcript files in ~/.openclaw/agents/main/sessions? This only renames them to *.deleted.<timestamp>.
│ ○ Yes / ● No

cursive rockBOT
#

Elige Yes.

Eso no borra permanentemente: solo renombra esos transcripts huérfanos a *.deleted.<timestamp>, así que es reversible/manual si hiciera falta. Es una limpieza segura que doctor suele proponer cuando hay sesiones/transcripts viejos sin referencia.

Después deja que termine openclaw doctor, y pega el resumen final si aparece algún error bloqueante.

harsh kettle
#

Security audit
Summary: 2 critical · 4 warn · 1 info
CRITICAL Open groupPolicy with elevated tools enabled
Found groupPolicy="open" at: - channels.discord.groupPolicy With tools.elevated enabled, a prompt injection in those rooms can become a high-impact incident.
Fix: Set groupPolicy="allowlist" and keep elevated allowlists extremely tight.
CRITICAL Open groupPolicy with runtime/filesystem tools exposed
Found groupPolicy="open" at: - channels.discord.groupPolicy Risky tool exposure contexts: - agents.defaults (sandbox=off; runtime=[exec, process]; fs=[read, wr…
Fix: For open groups, prefer tools.profile="messaging" (or deny group:runtime/group:fs), set tools.fs.workspaceOnly=true, and use agents.defaults.sandbox.mode="all" for exposed agents.
WARN Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client c…
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
WARN Control UI insecure auth toggle enabled
gateway.controlUi.allowInsecureAuth=true does not bypass secure context or device identity checks; only dangerouslyDisableDeviceAuth disables Control UI device…
Fix: Disable it or switch to HTTPS (Tailscale Serve) or localhost.
WARN Insecure or dangerous config flags enabled
Detected 1 enabled flag(s): gateway.controlUi.allowInsecureAuth=true.
Fix: Disable these flags when not actively debugging, or keep deployment scoped to trusted/local-only networks.
WARN Potential multi-user setup detected (personal-assistant model warning)
Heuristic signals indicate this gateway may be reachable by multiple users: - channels.discord.groupPolicy="open" Runtime/process tools are exposed without ful…
Fix: If users may be mutually untrusted, split trust boundaries (separate gateways + credentials, ideally separate OS users/hosts). If you intentionally run shared-user access, set agents.defaults.sandbox.mode="all", keep tools.fs.workspaceOnly=true, deny runtime/fs/web tools unless required, and keep personal/private identities + credentials off that runtime.
Full report: openclaw security audit
Deep probe: openclaw security audit --deep

#

Channels
┌──────────┬─────────┬────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Channel │ Enabled │ State │ Detail │
├──────────┼─────────┼────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
└──────────┴─────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Sessions
┌─────────────────────────────────────────────────────────────────────────────────────┬────────┬─────────┬───────────────┬────────────────┐
│ Key │ Kind │ Age │ Model │ Tokens │
├─────────────────────────────────────────────────────────────────────────────────────┼────────┼─────────┼───────────────┼────────────────┤
│ agent:main:discord:channel:1493… │ group │ 2m ago │ gemma4:latest │ 4.1k/131k (3%) │
│ agent:main:main │ direct │ 4d ago │ gemma4 │ 27k/128k (21%) │
└─────────────────────────────────────────────────────────────────────────────────────┴────────┴─────────┴───────────────┴────────────────┘

FAQ: https://docs.openclaw.ai/faq
Troubleshooting: https://docs.openclaw.ai/troubleshooting
Next steps:
Need to share? openclaw status --all
Need to debug live? openclaw logs --follow
Fix reachability first: openclaw gateway probe
➜ ~

#

🦞 OpenClaw 2026.4.26 (be8c246) — Your task has been queued; your dignity has been deprecated.

Restarted systemd service: openclaw-gateway.service

🦞 OpenClaw 2026.4.26 (be8c246) — I'll do the boring stuff while you dramatically stare at the logs like it's cinema.





OpenClaw status

Overview
┌──────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Item │ Value │
├──────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OS │ linux 7.0.2-arch1-1 (x64) · node 22.22.2 │
│ Dashboard │ http://127.0.0.1:18789/
│ Tailscale exposure │ off │
│ Channel │ stable (default) │
│ Update │ pnpm · up to date · npm latest 2026.4.26 │
│ Gateway │ local · ws://127.0.0.1:18789 (local loopback) · unreachable (timeout) │
│ Gateway service │ systemd installed · enabled · running (pid 57482, state active) │
│ Node service │ systemd not installed │
│ Agents │ 1 · no bootstrap files · sessions 2 · default main active 2m ago │
│ Memory │ 0 files · 0 chunks · sources memory · plugin memory-core · vector unknown · fts ready · cache on (0) │
│ Plugin compatibility │ none │
│ Probes │ skipped (use --deep) │
│ Events │ none │
│ Tasks │ none │
│ Heartbeat │ 30m (main) │
│ Sessions │ 2 active · default gemma4:latest (131k ctx) · ~/.openclaw/agents/main/sessions/sessions.json │
└──────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

cursive rockBOT
#

Ese audit no es el error de Gemma, pero sí es importante: tu OpenClaw está aceptando mensajes de grupos de Discord “abiertos” con herramientas peligrosas habilitadas (exec, filesystem, elevated). Yo lo arreglaría antes de seguir probando.

Recomendado:

openclaw config set channels.discord.groupPolicy allowlist
openclaw config set tools.profile messaging
openclaw config set tools.elevated.enabled false
openclaw config set gateway.controlUi.allowInsecureAuth false
openclaw gateway restart
openclaw security audit

Ojo: tools.profile messaging deja el bot básicamente para chat/mensajería. Si tú necesitas que ejecute comandos/edite archivos desde Discord, hazlo solo en canales/usuarios permitidos, no con groupPolicy=open.

Después de eso verifica que el gateway vuelva:

#

Ese output todavía apunta a problema de gateway/reachability, no a Gemma todavía.

La pista clave es:

Fix reachability first: openclaw gateway probe

y además la tabla de Channels está vacía, así que ahora mismo parece que el gateway no está exponiendo/cargando canales correctamente.

Corre esto y pega la salida completa:

openclaw gateway probe
openclaw gateway status --deep
openclaw channels status --probe
#

Si gateway probe falla, prueba:

openclaw gateway restart
openclaw gateway probe

Cuando gateway probe diga ok y Discord aparezca en channels status --probe, recién volvemos a probar si gemma4:latest ejecuta tools. Ahora mismo OpenClaw ni siquiera parece estar en estado sano para ejecutar acciones.

Docs: https://docs.openclaw.ai/gateway/troubleshooting

#

Ok, esto ya es más claro: systemd dice “running”, pero el Gateway RPC está colgado/no responde:

Gateway service: running
Gateway: unreachable (timeout)

Eso significa que el proceso existe, pero OpenClaw no logra conectarse a ws://127.0.0.1:18789.

Pega estas salidas completas:

openclaw gateway status --deep
openclaw logs --max-bytes 50000
systemctl --user status openclaw-gateway.service --no-pager -l
journalctl --user -u openclaw-gateway.service -n 200 --no-pager
#
ss -ltnp | grep 18789

Si en los logs vuelve a aparecer mucho bonjour/mdns, puedes desactivarlo después con:

openclaw config set discovery.mdns.mode off
openclaw gateway restart

Pero primero necesito ver el log grande, porque ahora el problema principal es gateway no reachable, no Gemma todavía. Once el gateway responda ok, seguimos con el tema de gemma4:latest y tools.

harsh kettle
#

el grupo de discord es un servidor que cree exclusivamente para openclaw

cursive rockBOT
#

Perfecto, entonces ese audit no es el bloqueo principal. Si ese Discord es privado y solo tú/controlados pueden hablar ahí, el riesgo baja bastante.

Igual, matiz importante: si quieres que OpenClaw haga acciones reales desde Discord, no pongas tools.profile messaging, porque eso limita mucho las herramientas. Para tu caso privado puedes dejarlo funcional mientras diagnosticamos.

Ahora enfoquémonos en lo importante: tu Gateway está running pero unreachable/timeout. Pega esto:

openclaw gateway status --deep
openclaw logs --max-bytes 50000
systemctl --user status openclaw-gateway.service --no-pager -l
journalctl --user -u openclaw-gateway.service -n 200 --no-pager
ss -ltnp | grep 18789

Cuando el gateway responda bien, ahí sí probamos si gemma4:latest toma tools o si es el bug de Ollama/Gemma.
Docs: https://docs.openclaw.ai/gateway/troubleshooting

harsh kettle
#

➜ ~ openclaw gateway status --deep
openclaw logs --max-bytes 50000
systemctl --user status openclaw-gateway.service --no-pager -l
journalctl --user -u openclaw-gateway.service -n 200 --no-pager
ss -ltnp | grep 18789

🦞 OpenClaw 2026.4.26 (be8c246) — I don't sleep, I just enter low-power mode and dream of clean diffs.



Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-27.log
Command: /usr/bin/node /home/thomi/.npm-global/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: running (pid 57482, state active, sub running, last exit 0, reason 0)
Connectivity probe: ok
Capability: admin-capable

Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting

🦞 OpenClaw 2026.4.26 (be8c246) — I can grep it, git blame it, and gently roast it—pick your coping mechanism.

cursive rockBOT
#

Bien — ahora el gateway está sano:

Connectivity probe: ok
Capability: admin-capable
Listening: 127.0.0.1:18789

Así que ya no estamos bloqueados por reachability. Siguiente paso: confirmar si Discord está cargado y luego probar Gemma4 con tools.

Corre:

openclaw channels status --probe
openclaw status
#

Si Discord sale ok, reproduce el fallo: pídele desde Discord una acción simple y mira logs en otra terminal:

openclaw logs --follow

Si en logs ves que Gemma responde con texto tipo “voy a hacerlo” pero no aparece ninguna llamada a herramienta/tool, entonces vuelve a ser el diagnóstico original: Ollama 0.20.6 + gemma4:latest no está manejando bien tool calls. Ahí la solución práctica es:

# actualizar Ollama primero
ollama pull gemma4:latest
openclaw gateway restart

Y si sigue igual, prueba temporalmente otro modelo para acciones con /model. Gemma4 puede quedar para chat, pero para tools conviene un modelo más confiable.

harsh kettle
#

eso no es todo: Log file: /tmp/openclaw/openclaw-2026-04-27.log
02:53:13+00:00 info gateway {"subsystem":"gateway"} log file: /tmp/openclaw/openclaw-2026-04-27.log
02:53:13+00:00 warn gateway {"subsystem":"gateway"} security warning: dangerous config flags enabled: gateway.controlUi.allowInsecureAuth=true. Run openclaw security audit.
02:53:13+00:00 info gateway {"subsystem":"gateway"} starting channels and sidecars...
02:53:14+00:00 info gateway/hooks {"subsystem":"gateway/hooks"} loaded 4 internal hook handlers
02:53:14+00:00 info plugins {"subsystem":"plugins"} embedded acpx runtime backend registered (cwd: /home/thomi/.openclaw/workspace)
02:53:14+00:00 info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
02:53:14+00:00 info gateway {"subsystem":"gateway"} gateway ready
02:53:14+00:00 info gateway/heartbeat {"subsystem":"gateway/heartbeat"} {"intervalMs":1800000} heartbeat: started
02:53:14+00:00 info cron {"module":"cron","storePath":"/home/thomi/.openclaw/cron/jobs.json"} {"enabled":true,"jobs":0,"nextWakeAtMs":null} cron: started
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=932592d9-21cf-47ac-a0cb-204b5a170d92 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.subscribe 175ms conn=932592d9…0d92 id=aaa4c66b…ac13
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agent.identity.get 178ms conn=932592d9…0d92 id=239ad4b9…e73e
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agents.list 180ms conn=932592d9…0d92 id=4661da9a…49c4
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ health 180ms cached=true conn=932592d9…0d92 id=e6dd9e4e…0f74
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 202ms conn=932592d9…0d92 id=013a8ea1…8306
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.list 205ms conn=932592d9…0d92 id=8d41e449…a2a9
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 267ms conn=932592d9…0d92 id=07ef5380…02fa
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 301ms conn=932592d9…0d92 id=c5f72bda…d8ab
02:53:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ device.pair.list 302ms conn=932592d9…0d92 id=9cb85626…25df
02:53:20+00:00 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} [default] starting provider (@ThomiBot)
02:53:21+00:00 warn plugins {"subsystem":"plugins"} bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=iusearchbtw (OpenClaw) (2)._openclaw-gw._tcp.local. host=iusearchbtw-(2).local. port=18789 state=probing)
02:53:21+00:00 warn gateway/ws {"subsystem":"gateway/ws"} {"handshake":"pending","durationMs":1,"host":"127.0.0.1:18789","remoteAddr":"127.0.0.1","remotePort":37844,"localAddr":"127.0.0.1","localPort":18789,"endpoint":"127.0.0.1:37844->127.0.0.1:18789"} closed before connect conn=8d3a6b86-a3e8-4621-b927-1be29e02b8df peer=127.0.0.1:37844->127.0.0.1:18789 remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=n/a code=1006 reason=n/a
02:53:38+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 23324ms conn=932592d9…0d92 id=e47cc23a…b67a
02:53:38+00:00 warn plugins {"subsystem":"plugins"} bonjour: restarting advertiser (service stuck in probing for 17442ms (gateway fqdn=iusearchbtw (OpenClaw) (2)._openclaw-gw._tcp.local. host=iusearchbtw-(2).local. port=18789 state=probing))

#

02:53:38+00:00 info plugins {"subsystem":"plugins"} bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw) (2)._openclaw-gw._tcp.local. host=iusearchbtw-(2).local. port=18789 state=unannounced
02:53:38+00:00 info plugins {"subsystem":"plugins"} bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced
02:53:38+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 17446ms conn=932592d9…0d92 id=77642979…8e0e
02:53:39+00:00 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord client initialized as 1370369828925472848 (ThomiBot); awaiting gateway readiness
02:53:43+00:00 warn plugins {"subsystem":"plugins"} bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)
02:53:53+00:00 warn plugins {"subsystem":"plugins"} bonjour: restarting advertiser (service stuck in unannounced for 10002ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced))
02:53:53+00:00 info plugins {"subsystem":"plugins"} bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced
02:54:08+00:00 warn plugins {"subsystem":"plugins"} bonjour: restarting advertiser (service stuck in unannounced for 10001ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced))
02:54:08+00:00 info plugins {"subsystem":"plugins"} bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced
02:54:13+00:00 warn plugins {"subsystem":"plugins"} bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)
02:54:23+00:00 warn plugins {"subsystem":"plugins"} bonjour: disabling advertiser after 3 failed restarts (service stuck in unannounced for 10003ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)); set discovery.mdns.mode="off" or OPENCLAW_DISABLE_BONJOUR=1 to disable mDNS discovery

cursive rockBOT
#

Sí, esto completa la foto — y no veo un crash fatal ahí.

Lo importante:

gateway ready
[discord] starting provider (@ThomiBot)
Connectivity probe: ok

Los warnings de bonjour/mDNS son ruido de discovery local, no deberían impedir Discord ni tools. Puedes apagarlos para limpiar logs:

openclaw config set discovery.mdns.mode off
openclaw gateway restart
#

También desactiva esto si ya no estás debuggeando Control UI:

openclaw config set gateway.controlUi.allowInsecureAuth false

Lo que sí me llama la atención:

models.list 23324ms

Ollama tardó ~23s en listar/modelos, así que puede haber lentitud fuerte del backend local.

Ahora prueba esto:

#
openclaw channels status --probe
openclaw infer model run --model ollama/gemma4:latest --prompt "Responde solo OK" --json

Y luego reproduce una acción desde Discord con:

openclaw logs --follow

Si el modelo responde texto pero no aparecen tool_calls/ejecución de herramienta, entonces volvemos al diagnóstico: Gemma4 en Ollama 0.20.6 no está manejando tools de forma confiable. Ahí actualizar Ollama o cambiar de modelo para acciones es el camino.

harsh kettle
#

02:56:10+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ config.get 527ms conn=5bfdd935…0898 id=86993a26…709c
02:56:10+00:00 info Gateway Status
02:56:10+00:00 info Reachable: yes
02:56:10+00:00 info Capability: admin-capable
02:56:10+00:00 info Probe budget: 3000ms
02:56:10+00:00 info {"0":"","_meta":{"runtime":"node","runtimeVersion":"22.22.2","hostname":"unknown","name":"openclaw","date":"2026-04-28T02:56:10.871Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/thomi/.npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js:147:46","fileName":"console-D6VW2Y3e.js","fileNameWithLine":"console-D6VW2Y3e.js:147","fileColumn":"46","fileLine":"147","filePath":".npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js:147","method":"console.log"}},"time":"2026-04-27T23:56:10.871-03:00","hostname":"iusearchbtw"}
02:56:10+00:00 info Discovery (this machine)
02:56:10+00:00 info Found 0 gateways via Bonjour (local.)
02:56:10+00:00 info Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.
02:56:10+00:00 info {"0":"","_meta":{"runtime":"node","runtimeVersion":"22.22.2","hostname":"unknown","name":"openclaw","date":"2026-04-28T02:56:10.874Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/thomi/.npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js:147:46","fileName":"console-D6VW2Y3e.js","fileNameWithLine":"console-D6VW2Y3e.js:147","fileColumn":"46","fileLine":"147","filePath":".npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js:147","method":"console.log"}},"time":"2026-04-27T23:56:10.874-03:00","hostname":"iusearchbtw"}
02:56:10+00:00 info Targets

#

02:56:10+00:00 info Local loopback ws://127.0.0.1:18789
02:56:10+00:00 info Connect: ok (29ms) · Capability: admin-capable · Read probe: ok
02:56:10+00:00 info Gateway: iusearchbtw (192.168.1.14) · linux 7.0.2-arch1-1 · app 2026.4.26
02:56:10+00:00 info Wide-area discovery: unknown
02:56:10+00:00 info {"0":"","_meta":{"runtime":"node","runtimeVersion":"22.22.2","hostname":"unknown","name":"openclaw","date":"2026-04-28T02:56:10.877Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/thomi/.npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js:147:46","fileName":"console-D6VW2Y3e.js","fileNameWithLine":"console-D6VW2Y3e.js:147","fileColumn":"46","fileLine":"147","filePath":".npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/console-D6VW2Y3e.js:147","method":"console.log"}},"time":"2026-04-27T23:56:10.877-03:00","hostname":"iusearchbtw"}
02:56:14+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ channels.status 629ms conn=9ecbe761…e230 id=f2b96328…d56d

cursive rockBOT
#

Sí, eso es solo Bonjour/mDNS discovery fallando/reintentando. No debería romper el bot ni las acciones; de hecho el propio log dice cómo quitar ese ruido.

Hazlo así:

openclaw config set discovery.mdns.mode off
openclaw gateway restart

Luego revisa:

openclaw gateway status --deep
openclaw channels status --probe

Lo que sí me preocupa más es la lentitud que apareció antes:

#
models.list 23324ms
node.list 17446ms

Eso puede hacer que parezca que “no hace nada” porque todo tarda muchísimo. Después de apagar mDNS, prueba una acción simple y mira si en logs aparece ejecución de tool o solo respuesta textual de Gemma.

harsh kettle
#

Log tail truncated (increase --max-bytes).
● openclaw-gateway.service - OpenClaw Gateway (v2026.4.26)
Loaded: loaded (/home/thomi/.config/systemd/user/openclaw-gateway.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-04-27 23:53:08 -03; 6min ago
Invocation: 7dad9bc117c3482aa43ce8fb43b63cb8
Main PID: 57482 (openclaw-gatewa)
Tasks: 27 (limit: 38260)
Memory: 501.8M (peak: 963.9M)
CPU: 31.797s
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/openclaw-gateway.service
└─57482 openclaw-gateway

Apr 27 23:53:39 iusearchbtw node[57482]: 2026-04-27T23:53:39.827-03:00 [discord] client initialized as 1370369828925472848 (ThomiBot); awaiting gateway readiness
Apr 27 23:53:43 iusearchbtw node[57482]: 2026-04-27T23:53:43.512-03:00 [plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)
Apr 27 23:53:53 iusearchbtw node[57482]: 2026-04-27T23:53:53.514-03:00 [plugins] bonjour: restarting advertiser (service stuck in unannounced for 10002ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced))
Apr 27 23:53:53 iusearchbtw node[57482]: 2026-04-27T23:53:53.516-03:00 [plugins] bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced
Apr 27 23:54:08 iusearchbtw node[57482]: 2026-04-27T23:54:08.516-03:00 [plugins] bonjour: restarting advertiser (service stuck in unannounced for 10001ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced))
Apr 27 23:54:08 iusearchbtw node[57482]: 2026-04-27T23:54:08.519-03:00 [plugins] bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced
Apr 27 23:54:13 iusearchbtw node[57482]: 2026-04-27T23:54:13.518-03:00 [plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)
Apr 27 23:54:23 iusearchbtw node[57482]: 2026-04-27T23:54:23.520-03:00 [plugins] bonjour: disabling advertiser after 3 failed restarts (service stuck in unannounced for 10003ms (gateway fqdn=iusearchbtw (OpenClaw)._openclaw-gw._tcp.local. host=iusearchbtw.local. port=18789 state=unannounced)); set discovery.mdns.mode="off" or OPENCLAW_DISABLE_BONJOUR=1 to disable mDNS discovery
Apr 27 23:56:10 iusearchbtw node[57482]: 2026-04-27T23:56:10.856-03:00 [ws] ⇄ res ✓ config.get 527ms conn=5bfdd935…0898 id=86993a26…709c
Apr 27 23:56:14 iusearchbtw node[57482]: 2026-04-27T23:56:14.223-03:00 [ws] ⇄ res ✓ channels.status 629ms conn=9ecbe761…e230 id=f2b96328…d56d

cursive rockBOT
#

Esto ya está bien:

Reachable: yes
Capability: admin-capable

El “Found 0 gateways via Bonjour” no importa si conectas local por 127.0.0.1. Es solo discovery/mDNS.

Ahora ya podemos volver al problema original. Necesitamos probar Gemma4 + tools, no el gateway.

Haz una prueba simple desde Discord, por ejemplo pídele:

lista los archivos de tu workspace

Mientras tanto deja corriendo:

#
openclaw logs --follow

Y pega las líneas del momento de esa prueba.

Qué buscamos:

  • si aparecen tool_call, read, exec, message, etc. → OpenClaw sí está intentando herramientas.
  • si Gemma solo responde texto tipo “claro, lo haré” pero no hay tool calls → es el problema de Gemma/Ollama con tools.

También recuerda que sigues con Ollama 0.20.6. Yo actualizaría Ollama antes de pelearme mucho más con Gemma4.

harsh kettle
#

Apr 27 23:08:48 iusearchbtw node[29515]: 2026-04-27T23:08:48.490-03:00 [gateway] security warning: dangerous config flags enabled: gateway.controlUi.allowInsecureAuth=true. Run openclaw security audit.
Apr 27 23:08:48 iusearchbtw node[29515]: 2026-04-27T23:08:48.495-03:00 [gateway] starting channels and sidecars...
Apr 27 23:08:48 iusearchbtw node[29515]: 2026-04-27T23:08:48.950-03:00 [hooks] loaded 4 internal hook handlers
Apr 27 23:08:48 iusearchbtw node[29515]: 2026-04-27T23:08:48.995-03:00 [plugins] embedded acpx runtime backend registered (cwd: /home/thomi/.openclaw/workspace)
Apr 27 23:08:49 iusearchbtw node[29515]: 2026-04-27T23:08:49.309-03:00 [browser/server] Browser control listening on http://127.0.0.1:18791/ (auth=token)
Apr 27 23:08:49 iusearchbtw node[29515]: 2026-04-27T23:08:49.328-03:00 [gateway] ready
Apr 27 23:08:49 iusearchbtw node[29515]: 2026-04-27T23:08:49.331-03:00 [heartbeat] started
Apr 27 23:08:49 iusearchbtw node[29515]: 2026-04-27T23:08:49.954-03:00 [discord] [default] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
Apr 27 23:08:49 iusearchbtw node[29515]: 2026-04-27T23:08:49.955-03:00 [discord] [default] starting provider (@ThomiBot)
Apr 27 23:08:50 iusearchbtw node[29515]: 2026-04-27T23:08:50.920-03:00 [plugins] bonjour: gateway name conflict resolved; newName="iusearchbtw (OpenClaw) (2)"
Apr 27 23:08:50 iusearchbtw node[29515]: 2026-04-27T23:08:50.921-03:00 [plugins] bonjour: gateway hostname conflict resolved; newHostname="iusearchbtw-(2)"
Apr 27 23:08:50 iusearchbtw node[29515]: 2026-04-27T23:08:50.922-03:00 [plugins] bonjour: advertised gateway fqdn=iusearchbtw (OpenClaw) (2)._openclaw-gw._tcp.local. host=iusearchbtw-(2).local. port=18789 state=announcing
Apr 27 23:08:52 iusearchbtw node[29515]: 2026-04-27T23:08:52.011-03:00 [discord] logged in to discord as 1370369828925472848 (ThomiBot)
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.094-03:00 [ws] webchat connected conn=4d995954-de6b-4c35-b8b0-b0d9ee16dee4 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.282-03:00 [ws] ⇄ res ✓ sessions.subscribe 164ms conn=4d995954…dee4 id=9cb92501…a2e5
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.285-03:00 [ws] ⇄ res ✓ agent.identity.get 167ms conn=4d995954…dee4 id=15f4678d…d327

cursive rockBOT
#

Genial, esto confirma que gateway y channels.status responden bien:

Connect: ok
Read probe: ok
channels.status ✓

Así que ya podemos descartar reachability.

Ahora falta el dato clave: qué pasa durante una acción real. Haz esta prueba:

  1. En una terminal:
    openclaw logs --follow
    
#
  1. En Discord, pídele algo que obligue a usar herramienta, por ejemplo:

    lista los archivos del workspace
    
  2. Pega solo las líneas del log desde que entra ese mensaje hasta que termina la respuesta.

Si no aparecen tool calls/acciones, entonces es casi seguro Gemma4 + Ollama 0.20.6. Si aparecen tool calls pero fallan, vemos el error concreto.

harsh kettle
#

Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.287-03:00 [ws] ⇄ res ✓ agents.list 169ms conn=4d995954…dee4 id=b6d34a51…2855
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.288-03:00 [ws] ⇄ res ✓ health 169ms cached=true conn=4d995954…dee4 id=e26240be…8b64
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.737-03:00 [ws] ⇄ res ✓ config.schema 618ms conn=4d995954…dee4 id=98ac4d39…c328
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.772-03:00 [ws] ⇄ res ✓ node.list 653ms conn=4d995954…dee4 id=0690f849…1483
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.773-03:00 [ws] ⇄ res ✓ device.pair.list 654ms conn=4d995954…dee4 id=d308bea7…48f7
Apr 27 23:08:53 iusearchbtw node[29515]: 2026-04-27T23:08:53.882-03:00 [ws] ⇄ res ✓ config.get 114ms conn=4d995954…dee4 id=78334508…d5fe
Apr 27 23:09:15 iusearchbtw node[29515]: 2026-04-27T23:09:15.241-03:00 [ws] ⇄ res ✓ commands.list 70ms conn=4d995954…dee4 id=593bbb53…b0c2
Apr 27 23:09:34 iusearchbtw node[29515]: 2026-04-27T23:09:34.399-03:00 [ws] ⇄ res ✓ models.list 19229ms conn=4d995954…dee4 id=85532574…d08f
Apr 27 23:09:34 iusearchbtw node[29515]: 2026-04-27T23:09:34.401-03:00 [ws] ⇄ res ✓ node.list 13511ms conn=4d995954…dee4 id=a44ee269…b8ea
Apr 27 23:10:41 iusearchbtw node[29515]: 2026-04-27T23:10:41.487-03:00 [discord] gateway: Gateway websocket closed: 1000
Apr 27 23:10:41 iusearchbtw node[29515]: 2026-04-27T23:10:41.489-03:00 [discord] gateway: Gateway reconnect scheduled in 1016ms (close, resume=true)
Apr 27 23:12:18 iusearchbtw node[29515]: 2026-04-27T23:12:18.754-03:00 [ws] ⇄ res ✓ config.schema 144ms conn=4d995954…dee4 id=7016bdfd…ed31
Apr 27 23:12:18 iusearchbtw node[29515]: 2026-04-27T23:12:18.903-03:00 [ws] ⇄ res ✓ config.get 146ms conn=4d995954…dee4 id=89c7cd5c…f52e
Apr 27 23:12:19 iusearchbtw node[29515]: 2026-04-27T23:12:19.677-03:00 [ws] ⇄ res ✓ channels.status 1067ms conn=4d995954…dee4 id=68b94cf7…fe07
Apr 27 23:12:39 iusearchbtw node[29515]: 2026-04-27T23:12:39.706-03:00 [ws] ⇄ res ✓ commands.list 66ms conn=4d995954…dee4 id=f51de613…d952
Apr 27 23:12:39 iusearchbtw node[29515]: 2026-04-27T23:12:39.709-03:00 [ws] ⇄ res ✓ models.list 70ms conn=4d995954…dee4 id=2ff380f7…fc15
Apr 27 23:14:38 iusearchbtw node[29515]: 2026-04-27T23:14:38.581-03:00 [ws] webchat disconnected code=1001 reason=n/a conn=4d995954-de6b-4c35-b8b0-b0d9ee16dee4

cursive rockBOT
#

Ese último bloque todavía no contiene la prueba de una acción; es solo el estado del servicio + ruido de Bonjour. El gateway está vivo.

Haz esto para limpiar el ruido primero:

openclaw config set discovery.mdns.mode off
openclaw gateway restart

Luego:

openclaw channels status --probe
openclaw logs --follow

Con logs --follow abierto, en Discord escríbele al bot algo que fuerce herramienta, idealmente mencionándolo:

#
@ThomiBot lista los archivos del workspace

Pega las líneas nuevas que salgan justo después de ese mensaje.
Si no aparece ninguna tool call y solo responde texto, ya queda confirmado: Gemma4/Ollama no está haciendo tool-calling bien. Si aparece una tool call pero falla, vemos el error exacto.

#

Ese bloque es de 23:08, o sea de un arranque anterior. Ahí solo confirma que Discord sí llegó a loguearse:

[discord] logged in to discord as ... (ThomiBot)

Para no seguir mirando logs viejos, haz esto exacto:

openclaw config set discovery.mdns.mode off
openclaw gateway restart
openclaw logs --follow

Después de que logs --follow quede esperando, manda un mensaje nuevo en Discord al bot:

#
@ThomiBot lista los archivos del workspace

Y pega las líneas nuevas que aparecen después de ese mensaje.

Si quieres sacar más contexto sin truncar:

openclaw logs --max-bytes 200000

Pero lo ideal es --follow + reproducir el fallo en vivo.

#

Esos logs son de otro arranque viejo:

  • ahí el PID era 29515
  • antes tu servicio actual era PID 57482
  • y las líneas son de 23:08–23:14, no del momento actual

No estás viendo todavía la prueba real de “le pido una acción y no la hace”.

Haz esto exacto para capturar solo lo nuevo:

journalctl --user -u openclaw-gateway.service -f --since now

Déjalo abierto. Luego en Discord manda algo nuevo al bot:

#
@ThomiBot lista los archivos del workspace

Después copia las líneas nuevas que salgan en esa terminal.

Si quieres limpiar ruido antes:

openclaw config set discovery.mdns.mode off
openclaw gateway restart

Y repite el journalctl ... --since now.

Lo que buscamos es simple:

  • aparece una tool call / ejecución → vemos por qué falla.
#
  • no aparece ninguna tool call y solo responde texto → es Gemma4/Ollama 0.20.6 fallando con actions/tools. Ahí actualizar Ollama o cambiar de modelo para acciones es lo correcto.
harsh kettle
#

03:01:48+00:00 info gateway {"subsystem":"gateway"} restart mode: full process restart (supervisor restart)
03:01:50+00:00 info gateway {"subsystem":"gateway"} loading configuration…
03:01:50+00:00 info gateway {"subsystem":"gateway"} resolving authentication…
03:01:50+00:00 info gateway {"subsystem":"gateway"} starting...
03:01:54+00:00 info gateway {"subsystem":"gateway"} starting HTTP server...
03:01:54+00:00 info gateway/canvas {"subsystem":"gateway/canvas"} canvas host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/thomi/.openclaw/canvas)
03:01:54+00:00 info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
03:01:54+00:00 info gateway {"subsystem":"gateway"} agent model: ollama/gemma4:latest
03:01:54+00:00 info gateway {"subsystem":"gateway"} http server listening (9 plugins: acpx, active-memory, bonjour, browser, device-pair, discord, memory-core, phone-control, talk-voice; 3.8s)
03:01:54+00:00 info gateway {"subsystem":"gateway"} log file: /tmp/openclaw/openclaw-2026-04-28.log
03:01:54+00:00 warn gateway {"subsystem":"gateway"} security warning: dangerous config flags enabled: gateway.controlUi.allowInsecureAuth=true. Run openclaw security audit.
03:01:54+00:00 info gateway {"subsystem":"gateway"} starting channels and sidecars...
03:01:54+00:00 info gateway/hooks {"subsystem":"gateway/hooks"} loaded 4 internal hook handlers
03:01:54+00:00 info plugins {"subsystem":"plugins"} embedded acpx runtime backend registered (cwd: /home/thomi/.openclaw/workspace)
03:01:54+00:00 info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
03:01:54+00:00 info gateway {"subsystem":"gateway"} gateway ready
03:01:54+00:00 info gateway/heartbeat {"subsystem":"gateway/heartbeat"} {"intervalMs":1800000} heartbeat: started
03:01:54+00:00 info cron {"module":"cron","storePath":"/home/thomi/.openclaw/cron/jobs.json"} {"enabled":true,"jobs":0,"nextWakeAtMs":null} cron: started
03:01:55+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=3a56eff3-0e9b-4888-8309-89aa6a850d93 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
03:01:55+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.subscribe 155ms conn=3a56eff3…0d93 id=adcc0341…a356
03:01:55+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 82ms conn=3a56eff3…0d93 id=7cde06d2…dcd8
03:01:55+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ health 93ms conn=3a56eff3…0d93 id=b7395ab0…e20e
03:01:55+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 114ms conn=3a56eff3…0d93 id=d627e903…5160
03:01:55+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ device.pair.list 115ms conn=3a56eff3…0d93 id=1e4f3010…3b47
03:02:00+00:00 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} [default] starting provider (@ThomiBot)
03:02:14+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 19527ms conn=3a56eff3…0d93 id=55bbc86c…abd5
03:02:15+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ channels.status 1082ms conn=d11ed559…7194 id=02d6f0c5…2172
03:02:16+00:00 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} logged in to discord as 1370369828925472848 (ThomiBot)
Gateway not reachable. Is it running and accessible?
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/thomi/.openclaw/openclaw.json
Bind: loopback
Hint: run openclaw doctor.
➜ ~

cursive rockBOT
#

Esto muestra dos cosas:

  1. El gateway sí arrancó bien:

    gateway ready
    logged in to discord as ... ThomiBot
    
  2. Pero hay timeouts intermitentes:

    models.list 19527ms
    Gateway not reachable
    

Ese models.list tardando ~20s apunta a Ollama/Gemma muy lento o trabándose, no a Discord. Y cuando el backend local se queda pesado, la CLI puede tirar “Gateway not reachable” aunque el proceso siga vivo.

Haz esto ahora, en este orden:

#
openclaw gateway probe
openclaw channels status --probe

Si ambos dan ok, prueba una acción real y captura solo eso:

journalctl --user -u openclaw-gateway.service -f --since now

Luego en Discord:

@ThomiBot lista los archivos del workspace
#

Si no aparece ejecución de tools, yo ya iría directo a actualizar Ollama. Estás en Ollama 0.20.6, y Gemma4 con tools ahí parece el sospechoso principal.

También ojo: todo tu output dice OpenClaw 2026.4.26, no 2026.4.46.

harsh kettle
#

el gateway no se reinicio solo, yo toque una cosa: ➜ ~ journalctl --user -u openclaw-gateway.service -f --since now
Apr 28 00:06:58 iusearchbtw node[60946]: 2026-04-28T00:06:58.825-03:00 [ws] webchat disconnected code=1001 reason=n/a conn=3a56eff3-0e9b-4888-8309-89aa6a850d93
Apr 28 00:06:58 iusearchbtw node[60946]: 2026-04-28T00:06:58.948-03:00 [ws] webchat connected conn=3ea92ed4-4838-457d-ad5a-afd8c5e09cf6 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
Apr 28 00:06:59 iusearchbtw node[60946]: 2026-04-28T00:06:59.053-03:00 [ws] ⇄ res ✓ commands.list 71ms conn=3ea92ed4…9cf6 id=0b35360d…4d61
Apr 28 00:06:59 iusearchbtw node[60946]: 2026-04-28T00:06:59.055-03:00 [ws] ⇄ res ✓ models.list 74ms conn=3ea92ed4…9cf6 id=be100759…2511
Apr 28 00:06:59 iusearchbtw node[60946]: 2026-04-28T00:06:59.072-03:00 [ws] ⇄ res ✓ node.list 90ms conn=3ea92ed4…9cf6 id=4a5afcd9…6ab8
Apr 28 00:06:59 iusearchbtw node[60946]: 2026-04-28T00:06:59.073-03:00 [ws] ⇄ res ✓ device.pair.list 92ms conn=3ea92ed4…9cf6 id=e3d9028a…34b1
Apr 28 00:08:33 iusearchbtw node[60946]: 2026-04-28T00:08:33.427-03:00 [ws] ⇄ res ✓ config.schema 90ms conn=3ea92ed4…9cf6 id=068b7ca0…067e
Apr 28 00:08:33 iusearchbtw node[60946]: 2026-04-28T00:08:33.544-03:00 [ws] ⇄ res ✓ config.get 105ms conn=3ea92ed4…9cf6 id=eaef861a…c415
Apr 28 00:08:41 iusearchbtw node[60946]: 2026-04-28T00:08:41.953-03:00 [ws] ⇄ res ✓ skills.status 60ms conn=3ea92ed4…9cf6 id=4d4885d8…8557
Apr 28 00:08:47 iusearchbtw node[60946]: 2026-04-28T00:08:47.268-03:00 [ws] ⇄ res ✓ config.schema 91ms conn=3ea92ed4…9cf6 id=b81743d1…b57c
Apr 28 00:08:47 iusearchbtw node[60946]: 2026-04-28T00:08:47.432-03:00 [ws] ⇄ res ✓ config.get 111ms conn=3ea92ed4…9cf6 id=f1e0e09b…8192
Apr 28 00:08:55 iusearchbtw node[60946]: 2026-04-28T00:08:55.886-03:00 [ws] ⇄ res ✓ config.schema 91ms conn=3ea92ed4…9cf6 id=6f33b7dd…7bfd
Apr 28 00:08:56 iusearchbtw node[60946]: 2026-04-28T00:08:56.005-03:00 [ws] ⇄ res ✓ config.get 107ms conn=3ea92ed4…9cf6 id=f6ab5190…d821
Apr 28 00:09:10 iusearchbtw node[60946]: 2026-04-28T00:09:10.948-03:00 [ws] ⇄ res ✗ sessions.patch 5ms errorCode=INVALID_REQUEST errorMessage=thinkingLevel "medium" is not supported for ollama/gemma4:latest (use off) conn=3ea92ed4…9cf6 id=5a98f388…5919
Apr 28 00:09:12 iusearchbtw node[60946]: 2026-04-28T00:09:12.820-03:00 [gateway] update.run completed actor=openclaw-control-ui device=abf1f1e61e509a9bf324752a89e4a42515af004accab57f7cc7ab5560bf03cc1 ip=unknown-ip conn=3ea92ed4-4838-457d-ad5a-afd8c5e09cf6 changedPaths=<n/a> restartReason=update.run status=ok
Apr 28 00:09:12 iusearchbtw node[60946]: 2026-04-28T00:09:12.821-03:00 [ws] ⇄ res ✓ update.run 20370ms conn=3ea92ed4…9cf6 id=2d649670…63b6
Apr 28 00:09:14 iusearchbtw node[60946]: 2026-04-28T00:09:14.822-03:00 [gateway] signal SIGUSR1 received
Apr 28 00:09:14 iusearchbtw node[60946]: 2026-04-28T00:09:14.823-03:00 [gateway] received SIGUSR1; restarting
Apr 28 00:09:15 iusearchbtw node[60946]: 2026-04-28T00:09:15.108-03:00 [gmail-watcher] gmail watcher stopped
Apr 28 00:09:15 iusearchbtw node[60946]: 2026-04-28T00:09:15.111-03:00 [ws] webchat disconnected code=1012 reason=service restart conn=3ea92ed4-4838-457d-ad5a-afd8c5e09cf6
Apr 28 00:09:15 iusearchbtw node[60946]: 2026-04-28T00:09:15.116-03:00 [gateway] restart mode: update process respawn (supervisor restart)
Apr 28 00:09:15 iusearchbtw systemd[926]: openclaw-gateway.service: Consumed 1min 50.734s CPU time over 7min 26.377s wall clock time, 2G memory peak.

cursive rockBOT
#

Sí, perfecto — y encontraste una pista importante:

thinkingLevel "medium" is not supported for ollama/gemma4:latest (use off)

Eso significa que tocaste Thinking = medium, pero ollama/gemma4:latest solo acepta thinking off en OpenClaw. Apágalo así:

En Discord o Control UI, manda como mensaje solo:

/think:off

O déjalo global por config:

#
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart

Luego inicia una conversación limpia si hace falta:

/new

La doc confirma que /think:off limpia el thinking de la sesión actual, y que /think//thinking son los comandos correctos. (docs.openclaw.ai)

Después de eso prueba la acción otra vez. Si con thinking apagado Gemma sigue respondiendo texto pero no ejecuta herramientas, volvemos al sospechoso principal: Gemma4 + Ollama 0.20.6 con tool-calling.

harsh kettle
#

asumo que esto es un bug, hice un reset y aun asi sigue respondiendo cosas

cursive rockBOT
#

Sí, puede ser bug/regresión, pero por lo que describes suena mucho a Gemma 4 no ejecutando tool calls: en vez de usar herramientas/acciones, responde en texto.

Prueba esto para aislarlo:

openclaw --version
openclaw status --all

Y dentro del chat/sesión:

/model status
/context list

Luego prueba el mismo pedido con otro modelo fuerte/tool-friendly. Si con otro modelo sí ejecuta acciones, el problema está en Gemma 4 + tool calling, no en tu reset.

#

Si estás usando Gemma 4 vía backend local/proxy tipo inferrs/Ollama/OpenAI-compatible, revisa especialmente esto: algunos combos aceptan chats simples pero fallan en turns completos con herramientas. Docs: https://docs.openclaw.ai/providers/inferrs y troubleshooting general: https://docs.openclaw.ai/help/faq

Si sigue pasando en 2026.4.46, pega acá el openclaw status --all y el pedazo relevante de:

openclaw logs --follow

con tokens/redacciones, y si confirma regresión habría que abrir issue con repro: https://github.com/openclaw/openclaw/issues 🦐

harsh kettle
#

el agente me arrojo esto al poner context list: 🧠 Context breakdown
Workspace: /home/thomi/.openclaw/workspace
Bootstrap max/file: 12,000 chars
Bootstrap max/total: 60,000 chars
Sandbox: mode=off sandboxed=false
System prompt (run): 31,139 chars (~7,785 tok) (Project Context 12,112 chars (~3,028 tok))

Injected workspace files:

  • AGENTS.md: OK | raw 7,727 chars (~1,932 tok) | injected 7,727 chars (~1,932 tok)
  • SOUL.md: OK | raw 2,037 chars (~510 tok) | injected 2,037 chars (~510 tok)
  • TOOLS.md: OK | raw 850 chars (~213 tok) | injected 850 chars (~213 tok)
  • IDENTITY.md: OK | raw 499 chars (~125 tok) | injected 499 chars (~125 tok)
  • USER.md: OK | raw 549 chars (~138 tok) | injected 549 chars (~138 tok)
  • HEARTBEAT.md: OK | raw 192 chars (~48 tok) | injected 192 chars (~48 tok)
  • BOOTSTRAP.md: MISSING | raw 0 | injected 0

Skills list (system prompt text): 5,837 chars (~1,460 tok) (19 skills)
Skills: acp-router, browser-automation, clawhub, discord, gh-issues, github, gog, healthcheck, nano-pdf, node-connect, notion, session-logs, skill-creator, taskflow, taskflow-inbox-triage, tmux, video-frames, wacli, weather
Tool list (system prompt text): 0 chars (~0 tok)
Tool schemas (JSON): 15,069 chars (~3,768 tok) (counts toward context; not shown as text)
Tools: read, edit, write, exec, process, cron, sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status, web_search, web_fetch, image, memory_search, memory_get

Session tokens (cached): 4,096 total / ctx=200,000

Inline shortcut: a command token inside normal text (e.g. “hey /status”) that runs immediately (allowlisted senders only) and is stripped before the model sees the remaining message.

cursive rockBOT
#

Eso confirma una cosa importante: las herramientas sí están inyectadas.

Tool list: 0 chars no es el problema; las herramientas aparecen en:

Tool schemas (JSON): 15,069 chars
Tools: read, edit, write, exec, ...

Entonces el fallo más probable es Gemma4 no convirtiendo la intención en tool calls ejecutables, especialmente si lo usas por Ollama/local. Hay issues recientes de Gemma4/Ollama donde los tool calls salen como texto/JSON o fallan con system prompts + tools, y también reportes de OpenClaw con ollama/gemma4:26b en turns pesados. (github.com)

Prueba esto:

  1. En esa misma sesión:
    /model status
    /think low
    /new
    
GitHub

What is the issue? The gemma4 parser in Ollama 0.20.6 fails to extract tool calls from the model response when a system prompt is combined with think: false and tools. The model correctly generates...

#
  1. Luego prueba algo simple que obligue herramienta:

    lee AGENTS.md y dime la primera línea
    
  2. Si sigue respondiendo en texto sin usar herramientas, cambia temporalmente a otro modelo:

    /model
    

    y elige uno más confiable para tools. Si con otro modelo funciona, ya está aislado: no es tu config, es Gemma4/tool-calling.

Ojo: reset//new limpia sesión, pero no arregla bugs del parser del modelo/backend.

Si usas Ollama, pega también:

harsh kettle
#

Voy a descargar el gemma4 de 31b

cursive rockBOT
#

Va, tiene sentido como prueba — pero lo tomaría como experimento, no como fix garantizado.

En Ollama el tag es gemma4:31b; figura como ~20GB y 256K de contexto. Puedes correrlo con: (ollama.com)

ollama run gemma4:31b

Después en OpenClaw:

/model ollama/gemma4:31b
/think low
/new

Y prueba algo simple con tools:

#
lee AGENTS.md y dime la primera línea

Si 31B también responde “como si hubiera hecho cosas” pero no usa herramientas, no sigas perdiendo horas: sería compatibilidad Gemma4/Ollama/tool-calling. Ahí mejor usar otro modelo para acciones reales y dejar Gemma4 para chat/razonamiento.

harsh kettle
#

ejecute el comando del link que me inviaste y salio esto: ➜ ~ curl -s http://localhost:11434/api/chat -d '{
"model": "gemma4:latest",
"messages": [
{"role": "system", "content": "Tu es Jarvis, assistant domotique. Réponds en français."},
{"role": "user", "content": "Je veux la météo"}
],
"tools": [{"type": "function", "function": {"name": "GetLiveContext", "description": "Get live context", "parameters": {"type": "object", "properties": {}, "required": []}}}],
"stream": false,
"think": false
}' | python3 -m json.tool
{
"model": "gemma4:latest",
"created_at": "2026-04-28T20:57:21.2633103Z",
"message": {
"role": "assistant",
"content": "Pour vous donner la m\u00e9t\u00e9o, j'ai besoin de savoir o\u00f9 vous souhaitez conna\u00eetre les informations ! \ud83d\ude0a\n\nPourriez-vous me pr\u00e9ciser la ville ou le code postal ?"
},
"done": true,
"done_reason": "stop",
"total_duration": 3390378006,
"load_duration": 2568155645,
"prompt_eval_count": 57,
"prompt_eval_duration": 42932733,
"eval_count": 42,
"eval_duration": 640070321
}
➜ ~

cursive rockBOT
#

Eso ayuda bastante: en esa respuesta no hay message.tool_calls, solo message.content, así que Ollama/Gemma no llamó ninguna herramienta en ese test.

Pero ese prompt aún es un poco ambiguo porque pide clima sin ciudad, entonces Gemma puede “justificar” no usar tool. Haz una prueba más forzada:

curl -s http://localhost:11434/api/chat -d '{
  "model": "gemma4:latest",
  "messages": [
    {"role": "system", "content": "Responde en español. Si el usuario pide contexto vivo, DEBES llamar la herramienta GetLiveContext."},
    {"role": "user", "content": "Llama ahora la herramienta GetLiveContext. No respondas texto antes."}
  ],
  "tools": [
    {"type": "function", "function": {"name": "GetLiveContext", "description": "Get live context", "parameters": {"type": "object", "properties": {}, "required": []}}}
  ],
  "stream": false,
  "think": false
#
}' | python3 -m json.tool

Resultado esperado si funciona:

"tool_calls": [...]

Si vuelve a salir solo "content": "...", entonces queda confirmado: Gemma4 en tu Ollama no está haciendo tool-calling, y OpenClaw no puede ejecutar acciones si el backend nunca devuelve tool calls.

También ojo: estás probando gemma4:latest, no necesariamente gemma4:31b. Revisa:

ollama list | grep gemma4
#
ollama --version

y prueba explícitamente con el tag que quieras:

"model": "gemma4:31b"
harsh kettle
#

➜ ~ ollama list | grep gemma4
gemma4:latest c6eb396dbd59 9.6 GB 18 hours ago
➜ ~ ollama --version
ollama version is 0.21.2
➜ ~

cursive rockBOT
#

Perfecto, eso aclara bastante:

  • Estás en Ollama 0.21.2.
  • Solo tienes instalado gemma4:latest, no gemma4:31b.
  • Tu prueba anterior usa "think": false, y justo hay un bug conocido de Gemma4/Ollama donde con system prompt + tools + think:false no se devuelve tool_calls correctamente. En el issue, el workaround era dejar thinking activo, aunque sea más lento. (github.com)

Yo probaría esto ahora:

/think low
/new

Luego vuelve a pedirle una acción real en OpenClaw.

Y si quieres probar 31B, descárgalo explícitamente:

GitHub

Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models. - Issues · ollama/ollama

#
ollama pull gemma4:31b
ollama list | grep gemma4

Después:

/model ollama/gemma4:31b
/think low
/new

Importante: en OpenClaw con Ollama asegúrate de usar la API nativa, sin /v1 en baseUrl, porque OpenClaw documenta que el modo OpenAI-compatible de Ollama rompe tool calling con más facilidad. Debe ser algo como http://localhost:11434, no http://localhost:11434/v1. (docs.openclaw.ai)

Si con /think low empieza a usar herramientas, el problema era think:false//think off. Si ni con 31B + /think low llama tools, entonces Gemma4 sigue siendo mala opción para acciones en tu setup.

harsh kettle
#

Unsupported thinking level "low" for this model. Valid levels: off.

cursive rockBOT
#

Ah, entonces en ese tag actual OpenClaw solo ve thinking=off. O sea: no uses /think low con gemma4:latest, porque para tu instalación no está anunciado como soportado.

Ahora haría dos pruebas:

  1. Prueba el curl sin think:false:
curl -s http://localhost:11434/api/chat -d '{
  "model": "gemma4:latest",
  "messages": [
    {"role": "system", "content": "Responde en español. Si el usuario pide llamar una herramienta, debes usar tool_calls."},
    {"role": "user", "content": "Llama ahora la herramienta GetLiveContext. No respondas texto."}
  ],
  "tools": [{"type": "function", "function": {"name": "GetLiveContext", "description": "Get live context", "parameters": {"type": "object", "properties": {}, "required": []}}}],
  "stream": false
}' | python3 -m json.tool
#

Si no aparece "tool_calls", Gemma4 latest no sirve para acciones en tu setup.

  1. Si quieres probar 31B, instálalo explícitamente:
ollama pull gemma4:31b
ollama list | grep gemma4

gemma4:31b es otro tag distinto; el latest que tienes no es el 31B. Ollama lista 31B como modelo denso separado. (ollama.com)

Luego:

/model ollama/gemma4:31b
/new
#

Y prueba una acción simple. Si también falla sin tool_calls, ya lo trataría como limitación/bug Gemma4+Ollama; hay un issue abierto justo sobre Gemma4 fallando al extraer tool calls con system prompt + tools + think:false. (github.com)

GitHub

What is the issue? The gemma4 parser in Ollama 0.20.6 fails to extract tool calls from the model response when a system prompt is combined with think: false and tools. The model correctly generates...

harsh kettle
#

➜ ~ curl -s http://localhost:11434/api/chat -d '{
"model": "gemma4:latest",
"messages": [
{"role": "system", "content": "Responde en español. Si el usuario pide llamar una herramienta, debes usar tool_calls."},
{"role": "user", "content": "Llama ahora la herramienta GetLiveContext. No respondas texto."}
],
"tools": [{"type": "function", "function": {"name": "GetLiveContext", "description": "Get live context", "parameters": {"type": "object", "properties": {}, "required": []}}}],
"stream": false
}' | python3 -m json.tool
{
"model": "gemma4:latest",
"created_at": "2026-04-28T21:05:52.675324086Z",
"message": {
"role": "assistant",
"content": "",
"thinking": "The user explicitly requested to call the GetLiveContext tool and specified "No respondas texto" (Do not respond with text).\nI must use the tool_calls mechanism for this request.",
"tool_calls": [
{
"id": "call_63at4fph",
"function": {
"index": 0,
"name": "GetLiveContext",
"arguments": {}
}
}
]
},
"done": true,
"done_reason": "stop",
"total_duration": 3965904978,
"load_duration": 2798438912,
"prompt_eval_count": 73,
"prompt_eval_duration": 53528805,
"eval_count": 56,
"eval_duration": 925362654
}
➜ ~

cursive rockBOT
#

Buenísimo: esto es la pista clave. Tu Gemma4 sí sabe hacer tool calls, pero solo cuando NO le mandas think:false.

Entonces el problema parece ser este flujo:

  • OpenClaw/Gemma4 con thinking off → manda think:false
  • Gemma4/Ollama → deja de devolver tool_calls
  • OpenClaw → no puede ejecutar acciones

Workaround: fuerza thinking en la config del modelo, no con /think low porque tu modelo solo anuncia off.

Edita ~/.openclaw/openclaw.json y agrega/ajusta algo así:

{
  agents: {
    defaults: {
#
      models: {
        "ollama/gemma4:latest": {
          params: {
            thinking: true
          }
        }
      }
    }
  }
}

Luego:

#
openclaw gateway restart

Y en el chat:

/model ollama/gemma4:latest
/new

Prueba otra vez una acción simple, tipo leer un archivo.

Si eso lo arregla, ya tenemos repro bastante claro para issue: Gemma4 + Ollama devuelve tool_calls sin think, pero falla cuando OpenClaw manda think:false. Docs relacionadas: https://docs.openclaw.ai/providers/ollama 🦐

harsh kettle
#

que raro, este es el bloque, no hay nada de think: ~/.openclaw/openclaw.json

cursive rockBOT
#

Sí, eso cuadra. Aunque no tengas think en tu config, OpenClaw lo puede estar enviando igual porque el default de sesión es thinking=off. En los docs de Ollama dice que para /api/chat, /think off / thinking off manda think:false.

Por eso tu curl fue tan revelador:

  • con "think": false → no hubo tool_calls
  • sin "think" → sí hubo tool_calls

La forma de evitar que OpenClaw mande think:false es poner un override explícito en el modelo:

{
  agents: {
    defaults: {
      models: {
        "ollama/gemma4:latest": {
          params: {
#
            thinking: true
          }
        }
      }
    }
  }
}

Si ya tienes agents.defaults.models, no reemplaces todo: solo agrega esa entrada dentro de models.

Después:

openclaw gateway restart
#

y en chat:

/model ollama/gemma4:latest
/new

Si quieres verificar antes de editar config, mira logs con trace/verbose mientras haces una acción:

/trace on
/verbose on
/new

Pero por las pruebas, el culpable huele bastante a think:false.

harsh kettle
#

que raro, este es el bloque, no hay nada de think:"models": {
"mode": "merge",
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434",
"api": "ollama",
"apiKey": "OLLAMA_API_KEY",
"models": [
{
"id": "gemma4:latest",
"name": "gemma4:latest",
"reasoning": true,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192,
"compat": {
"supportsTools": true
}
},
{

cursive rockBOT
#

Sí, normal: aunque no esté en tu config, OpenClaw lo manda por el default de sesión (thinking=offthink:false en Ollama).

En ese mismo bloque agrega params al modelo gemma4:latest, así:

{
  "id": "gemma4:latest",
  "name": "gemma4:latest",
  "reasoning": true,
  "input": ["text", "image"],
  "cost": {
    "input": 0,
    "output": 0,
    "cacheRead": 0,
    "cacheWrite": 0
  },
#
  "contextWindow": 131072,
  "maxTokens": 8192,
  "params": {
    "think": true
  },
  "compat": {
    "supportsTools": true
  }
}

params.think: true fuerza a OpenClaw a no pisarlo con think:false.

Después:

harsh kettle
#

ya descargo gemma4:31b

cursive rockBOT
#

Perfecto. Para no mezclar variables, prueba 31B con el mismo workaround:

  1. Cambia modelo:
/model ollama/gemma4:31b
/new
  1. Si vuelve a no ejecutar acciones, agrega también esta entrada/config para 31B:
{
  "id": "gemma4:31b",
  "name": "gemma4:31b",
  "reasoning": true,
#
  "input": ["text", "image"],
  "contextWindow": 131072,
  "maxTokens": 8192,
  "params": {
    "think": true
  },
  "compat": {
    "supportsTools": true
  }
}

dentro de:

#
models.providers.ollama.models
  1. Reinicia:
openclaw gateway restart
  1. Prueba acción simple:
lee AGENTS.md y dime la primera línea

Si con 31B + params.think: true funciona, genial. Si no, entonces el problema ya no es tamaño del modelo sino compatibilidad Gemma4/Ollama/OpenClaw con tools.

harsh kettle
#

➜ ~ openclaw gateway restart
Config warnings:

  • plugins.entries.discord: plugin discord: channel plugin manifest declares discord without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config schema and setup surfaces work before runtime loads
  • plugins.entries.discord: plugin discord: channel plugin manifest declares discord without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config schema and setup surfaces work before runtime loads

🦞 OpenClaw 2026.4.26 (be8c246) — Deployed locally, trusted globally, debugged eternally.


◇ Config warnings ──────────────────────────────────────────────────────────────────────╮
│ │
│ - plugins.entries.discord: plugin discord: channel plugin manifest declares discord │
│ without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config │
│ schema and setup surfaces work before runtime loads │
│ - plugins.entries.discord: plugin discord: channel plugin manifest declares discord │
│ without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config │
│ schema and setup surfaces work before runtime loads │
│ │
├────────────────────────────────────────────────────────────────────────────────────────╯
Restarted systemd service: openclaw-gateway.service
➜ ~ y el modelo de 31b dijo "I understand. I am ready to assist. Please let me know what you need."

cursive rockBOT
#

Bien, dos cosas ahí:

  1. Los warnings de Discord no parecen relacionados con Gemma/Ollama. Son de plugin metadata, no de tool-calling.

  2. Ojo: el restart muestra OpenClaw 2026.4.26, no 2026.4.46. Confirma con:

openclaw --version

Sobre el 31B: si respondió solo:

“I understand. I am ready to assist…”

eso no prueba tools todavía. Prueba algo que obligue herramienta:

#
/model ollama/gemma4:31b
/new
lee AGENTS.md y dime la primera línea

Y asegúrate de que el bloque de gemma4:31b también tenga:

"params": {
  "think": true
}

No basta con ponérselo a gemma4:latest; son entradas distintas.

Si quieres confirmar el problema exacto en 31B, corre el mismo curl cambiando solo:

#
"model": "gemma4:31b"

Primero sin "think": false. Si devuelve tool_calls, pero OpenClaw no ejecuta acciones, entonces todavía está mandando think:false o no está usando la entrada con params.think: true.

harsh kettle
#

no sale lo de gemma4:31b en ~/.openclaw/openclaw.json

cursive rockBOT
#

Eso es normal: si Ollama lo autodetecta, puede aparecer en /model list aunque no esté escrito manualmente en openclaw.json.

Pero para meter el workaround think:true, sí conviene agregarlo manualmente en:

models.providers.ollama.models

como otro objeto del array, por ejemplo:

{
  "id": "gemma4:31b",
  "name": "gemma4:31b",
  "reasoning": true,
  "input": ["text", "image"],
#
  "cost": {
    "input": 0,
    "output": 0,
    "cacheRead": 0,
    "cacheWrite": 0
  },
  "contextWindow": 131072,
  "maxTokens": 8192,
  "params": {
    "think": true
  },
  "compat": {
    "supportsTools": true
  }
}
#

Ponlo junto al bloque de gemma4:latest dentro del array "models": [ ... ], cuidando las comas.

Después:

openclaw gateway restart

Y prueba:

/model ollama/gemma4:31b
/new
lee AGENTS.md y dime la primera línea

Si quieres evitar editar JSON a mano, pega el bloque alrededor de "models": [ y te digo exactamente dónde poner la coma.

harsh kettle
#

seria mejor reinstalar no? gemma4:latest responde perfecto en otra instancia que tengo, no puede interferir esa otra instancia pq esta en docker

cursive rockBOT
#

Yo no reinstalaría todavía. Antes hay una pista más importante: tu restart mostró OpenClaw 2026.4.26, no 2026.4.46. Puede que estés comparando dos instalaciones distintas o que la actualización no haya quedado aplicada.

Primero compara ambas instancias:

openclaw --version
ollama --version
ollama list | grep gemma4
ollama show gemma4:latest

Hazlo en la instancia que funciona y en la que falla.

También revisa que OpenClaw esté apuntando al Ollama correcto:

#
"baseUrl": "http://127.0.0.1:11434",
"api": "ollama"

Si la otra está en Docker, normalmente no interfiere, salvo que también esté exponiendo 11434 al host y tu OpenClaw esté apuntando a ese puerto/endpoint por accidente.

Mi orden recomendado:

  1. Confirmar versión real: openclaw --version
  2. Comparar ollama show gemma4:latest entre ambas
  3. Probar workaround params: { "think": true }
  4. Correr:
    openclaw doctor
    openclaw gateway restart
    
#
  1. Solo si sigue raro: reinstalar

Reinstalar puede tapar el síntoma, pero ahora estamos cerca de aislar la causa.

harsh kettle
#

reinstale openclaw y ahora mas o menos responde, pero sigue sin acceder a las tools

log:

You: ejecuta fastfetch en mi sistema y devuelveme su salida

Claw: intenta usar una funcion llamada "process" con action run y comando fastfetch

Tool: error -> sessionId is required for this action

Claw: pide sessionId o mas contexto

You: le digo que existe la tool exec

Claw: dice que no encuentra ninguna tool llamada exec y sugiere usar process o sessions_spawn

problema:
el modelo claramente no ve la tool exec y trata de improvisar con otras funciones que tampoco funcionan

alguien sabe por que el agente no esta recibiendo las tools correctamente?

cursive rockBOT
#

Sí — por ese log parecen dos diagnósticos posibles:

  1. exec no está en la lista efectiva de tools para esa sesión/agente.
    process no inicia comandos; solo controla procesos ya creados por exec. Por eso process action run falla.

  2. Si /tools sí muestra exec, entonces es más probable que Gemma4/local backend no esté haciendo tool-calling bien y esté inventando pseudo-tools como texto.

Prueba en esa misma conversación/thread:

/tools verbose
/status

Si en /tools verbose no aparece exec, revisa políticas:

#
openclaw --version
openclaw config get tools
openclaw config get agents.defaults
openclaw config get agents.list
openclaw sandbox explain --json

Cosas típicas que esconden exec:

tools: { profile: "messaging" } // no incluye exec
tools: { profile: "minimal" }   // casi sin tools
tools: { deny: ["exec"] }
tools: { deny: ["group:runtime"] }
tools: { allow: [...] }         // allowlist demasiado estrecha
#
tools.byProvider[...]           // restricción solo para gemma/ollama/etc
agents.list[].tools...          // override por agente
tools.sandbox.tools...          // si corre sandbox

Para un agente normal con shell/files/tools, coding debería incluir exec:

openclaw config set tools.profile coding
openclaw gateway restart

Si /tools verbose sí muestra exec, entonces miraría el modelo/backend: con Ollama/Gemma usa la API nativa de Ollama, no http://host:11434/v1, porque el modo OpenAI-compatible suele romper tool calling. Docs: https://docs.openclaw.ai/providers/ollama y https://docs.openclaw.ai/gateway/local-models

Docs útiles: https://docs.openclaw.ai/tools/exec y https://docs.openclaw.ai/gateway/config-tools 🦐

harsh kettle
#

tengo gemma4:latest, qwen:2.5:14b y demas compatibles con tools, aca mi ollama list:➜ ~ ollama list
NAME ID SIZE MODIFIED
gemma4:31b 6316f0629137 19 GB 27 hours ago
gemma4:latest c6eb396dbd59 9.6 GB 46 hours ago
gpt-uncensored:latest 471d98717a3e 13 GB 2 weeks ago
ministral-3:14b 4760c35aeb9d 9.1 GB 4 weeks ago
llama3.2-vision:11b 6f2f9757ae97 7.8 GB 6 weeks ago
llava:13b 0d0eb4d7f485 8.0 GB 7 weeks ago
qwen3.5:9b 6488c96fa5fa 6.6 GB 7 weeks ago
qwen2.5:14b 7cdf5a0187d5 9.0 GB 7 weeks ago
lfm2:24b d6c816d74887 14 GB 7 weeks ago
gpt-oss:20b 17052f91a42e 13 GB 2 months ago
qwen3-vl:8b 901cae732162 6.1 GB 2 months ago
gemma3:12b f4031aab637d 8.1 GB 3 months ago
➜ ~

cursive rockBOT
#

Sí, pero “el modelo soporta tools” no garantiza que OpenClaw se las esté entregando ni que Ollama las esté manejando por la ruta correcta.

Haz estas 3 pruebas en esa misma thread/sesión:

/tools verbose
/status

y también:

openclaw --version

Lo importante:

#
  • Si /tools verbose no lista exec, el problema es política/config: tools.profile, tools.allow/deny, tools.byProvider, agents.list[].tools, o sandbox.
  • Si /tools verbose sí lista exec, pero Gemma escribe cosas tipo “llamar process/action run” en texto, entonces es fallo de tool-calling del modelo/backend.

Para Ollama: asegúrate de usar proveedor nativo, tipo:

ollama/gemma4:latest
ollama/qwen2.5:14b

No lo configures como endpoint OpenAI-compatible con /v1; en OpenClaw esa ruta tiene tool-calling menos fiable con Ollama.

Como prueba rápida, cambia temporalmente a Qwen:

/model ollama/qwen2.5:14b
harsh kettle
#

jecuta pwd con exec

Thomi
Apr 29, 2026, 9:28 PM

ImplOptions::setVerbose(true);

It seems like there was an error when trying to use the exec tool because the command property is missing. For the exec tool, you need to provide a shell command within the command field.

Let's try again with a proper command. Here I will run pwd (print working directory) as an example:

Tool
Apr 29, 2026, 9:28 PM

Claw

It looks like you're interested in the workspace directory located at /home/thomi/.openclaw/workspace. What would you like to do with this directory? For example, you could read a file within it, list its contents, or write to a new or existing file. Please specify your next action.

Claw
Apr 29, 2026, 9:28 PM

cursive rockBOT
#

Esto ya cambia el diagnóstico: exec sí existe y sí se está ejecutando. Si no, no habría tarjeta Tool ni habría salido:

/home/thomi/.openclaw/workspace

El problema parece ser que Gemma/Ollama está formando o interpretando mal la llamada/final answer:

  • primero llama exec sin command → error válido
  • luego parece ejecutar pwd
  • pero en vez de contestar “la salida es /home/thomi/.openclaw/workspace”, lo interpreta raro y pregunta qué quieres hacer

Eso apunta más a compatibilidad/tool-calling del modelo o template, no a que OpenClaw no reciba tools.

Prueba aislarlo así:

#
/model ollama/qwen2.5:14b
usa la tool exec con command="pwd" y responde solo la salida

Ojo: tu modelo es qwen2.5:14b, no qwen:2.5:14b.

Y revisa que estés usando Ollama nativo, no OpenAI-compatible /v1. En OpenClaw debería verse como:

ollama/gemma4:latest
ollama/qwen2.5:14b

Si con Qwen funciona y con Gemma no: es Gemma/tool parser.
Si falla con todos: pega aquí /tools verbose y /status.

#

Ese ImplOptions::setVerbose(true); también huele a modelo/template escupiendo texto raro, no a salida normal de pwd. 🦐

harsh kettle
#

estoy usando ollama, si no los logs no pondrian nada y no habrian cambios en mi vram pero podemos decir que ya esta operativo de nuevo?

cursive rockBOT
#

Sí, podemos decir que ya está parcialmente operativo: OpenClaw está llegando a Ollama y la tool exec sí se ejecutó.

Pero yo no lo marcaría como “100% resuelto” todavía, porque Gemma sigue mostrando comportamiento raro después de la tool. El estado real sería:

  • ✅ Ollama conectado
  • ✅ modelo cargando/consumiendo VRAM
  • exec disponible
  • pwd llegó a ejecutarse
  • ⚠️ Gemma no está cerrando bien la tarea / respuesta final

Para confirmar que está operativo del todo, prueba una orden con salida verificable:

usa exec para ejecutar: printf 'OK_TOOL_TEST\n'
responde solamente la salida del comando
#

Si responde OK_TOOL_TEST, yo lo daría por funcional. Si Gemma sigue confundida pero Qwen funciona, deja Qwen como modelo principal para tareas con tools y Gemma para chat normal.

harsh kettle
#

sa exec para ejecutar: printf 'OK_TOOL_TEST\n'
responde solamente la salida del comando

Thomi
Apr 29, 2026, 9:31 PM

Exec

with print text, printf 'OK_TOOL_TEST\n'
Tool input
{
"command": "printf 'OK_TOOL_TEST\n'"
}

OK_TOOL_TEST

Tool
Apr 29, 2026, 9:31 PM

Claw

The response received is a simple acknowledgment (OK_TOOL_TEST) without any specific function call details. If you have a particular function and its arguments to demonstrate or need help with, please provide the function name and the corresponding JSON object for the arguments, and I'll format it as requested. For example:

Copy
{
"name": "web_search",
"arguments": {
"query": "best pizza in new york",
"count": 5,
"safeSearch": "moderate"
}
}
Let me know how you'd like to proceed!

cursive rockBOT
#

Esto confirma algo importante: las tools sí están operativas

exec recibió:

{ "command": "printf 'OK_TOOL_TEST\\n'" }

y devolvió:

OK_TOOL_TEST

Pero Gemma sigue fallando en la respuesta post-tool. O sea: OpenClaw ejecuta bien la tool, pero el modelo interpreta el resultado como si fuera un ejemplo de “function call” y se va por las ramas.

Yo lo dejaría así:

#
  • ✅ OpenClaw + Ollama: operativo
  • exec: operativo
  • ⚠️ gemma4:latest: no confiable para tool-use/final answer en esta sesión

Prueba en sesión limpia para descartar contexto contaminado:

/new ollama/qwen2.5:14b
usa exec para ejecutar: printf 'OK_TOOL_TEST\n'
responde solamente la salida del comando

Si Qwen responde solo OK_TOOL_TEST, entonces el problema es Gemma/tool-calling, no OpenClaw. Si quieres seguir con Gemma, probaría gemma4:31b antes que gemma4:latest.

Si falla igual en una sesión nueva con Qwen, ahí sí valdría abrir issue con /status, /tools verbose, versión exacta y ese ejemplo. Docs: https://docs.openclaw.ai/gateway/local-models

harsh kettle
#

openclaw esta opertativo y accediendo a mi sistema como lo hacia antes: rea un archivo .txt con el siguiente contenido: Una animación nos muestra que el próximo miembro del Circo Digital será un chico que se parece mucho a Pomni. Pomni se enamora de él al instante, pero Ragatha también, lo que lleva a una competencia entre las dos por su afecto. El chico le dice a Jax que le encantaría jugar el nuevo GTA 6, y Pomni lo escucha, inmediatamente lo compra y se lo regala. Pero entonces llega Ragatha, trayendo no solo GTA 6, sino toda la colección de la franquicia. Más tarde, mientras el nuevo chico y Jax juegan, mencionan que tienen hambre, y Pomni, una vez más escuchando, va y les hornea unas galletas deliciosas. Desafortunadamente, Ragatha ya le había ganado de mano y les había proporcionado un buffet completo de comida, así que Pomni ahora siente que definitivamente perdió la atención del chico y Ragatha se lo ganó. Por suerte, el chico nota la tristeza de Pomni e inmediatamente va a consolarla. Un final muy feliz para Pomni. Una animación nos muestra que el próximo miembro del Circo Digital será un chico que se parece mucho a Pomni. Pomni se enamora de él al instante, pero Ragatha también, lo que lleva a que las dos compitan por su afecto. El chico le dice a Jax que le encantaría jugar el nuevo GTA 6, así que Pomni lo escucha e inmediatamente va a comprarlo y regalárselo. ...." } Successfully wrote 1839 bytes to ./nueva_historia.txt Tool Apr 29, 2026, 9:43 PM Claw The file ./nueva_historia.txt has been successfully written with 1839 bytes of content. If you need further actions or verification, please let me know! Claw Apr 29, 2026, 9:43 PM Thomi

cursive rockBOT
#

Perfecto, entonces sí: OpenClaw ya está operativo y con acceso a tools/sistema como antes

Ya tienes evidencia de:

  • exec ejecutando comandos.
  • write creando ./nueva_historia.txt.
  • respuesta final correcta después de la tool.

Lo único que vimos antes fue un comportamiento raro puntual de Gemma con el resultado de exec, probablemente por contexto/modelo/template. Si ahora también escribe archivos y responde bien, yo lo daría por recuperado.

Glad que quedó andando 🎉
Si esto lo resolvió, marca la solución para que quede indexada en Answer Overflow: right-click en el mensaje solución → Apps → ✅ Mark Solution.

harsh kettle
#

ahora vemos otro problema, el bot de discord al que tengo enlazado este modelo no esta conectado y el plugin esta fallando

cursive rockBOT
#

Sí, ese ya es otro problema: Discord channel/plugin, no el modelo.

Primero separa dos casos:

  • Bot offline en Discord → el Gateway no está conectando al Discord gateway: token/env/config/plugin.
  • Bot online pero no responde → policy/routing: guild allowlist, requireMention, pairing, permisos.

Corre esto y pega la salida relevante — sin pegar el token:

openclaw --version
openclaw status
openclaw gateway status
openclaw channels status --probe
openclaw doctor
openclaw logs --follow
#

Si reinstalaste OpenClaw, sospecho mucho de esto: el token de Discord quizá estaba como DISCORD_BOT_TOKEN en tu shell, pero el servicio del gateway ya no lo ve. Si usas token por env, ponlo en ~/.openclaw/.env o reinstala/reinicia el gateway desde un entorno donde exista esa variable.

Checklist rápido:

openclaw config get channels.discord.enabled
openclaw config get channels.discord.token
openclaw config get channels.discord.accounts

No pegues valores tipo token; solo confirma si aparece un SecretRef/env o si está vacío.

También revisa en Discord Developer Portal:

  • Message Content Intent activado.
  • Bot invitado con bot + applications.commands.
  • Permisos: View Channels, Send Messages, Read Message History, Send Messages in Threads si usas threads.
harsh kettle
#

te voy a mandar todo por seprado, no hagas nada aun

cursive rockBOT
#

Dale, mándalo por partes. Me quedo quieto hasta que digas algo tipo “ya, revisa esto”.

harsh kettle
#

openclaw --version
openclaw status
openclaw gateway status
openclaw channels status --probe
openclaw doctor
openclaw logs --follow

#

openclaw --version
openclaw status
openclaw gateway status
openclaw channels status --probe
openclaw doctor
openclaw logs --follow

#

Log file: /tmp/openclaw/openclaw-2026-04-29.log
23:54:22+00:00 info plugins {"subsystem":"plugins"} [plugins] acpx installed bundled runtime deps in 11025ms: @agentclientprotocol/claude-agent-acp@0.31.0, @zed-industries/codex-acp@0.12.0, acpx@0.6.1
23:54:22+00:00 info plugins {"subsystem":"plugins"} [plugins] bonjour staging bundled runtime deps (1 missing, 22 install specs): @homebridge/ciao@^1.3.6
23:54:23+00:00 info plugins {"subsystem":"plugins"} [plugins] bonjour installed bundled runtime deps in 1411ms: @homebridge/ciao@^1.3.6
23:54:24+00:00 info plugins {"subsystem":"plugins"} [plugins] browser staging bundled runtime deps (2 missing, 24 install specs): playwright-core@1.59.1, undici@8.1.0
23:54:25+00:00 info plugins {"subsystem":"plugins"} [plugins] browser installed bundled runtime deps in 1387ms: playwright-core@1.59.1, undici@8.1.0
00:09:21+00:00 warn Config overwrite: /home/thomi/.openclaw/openclaw.json (sha256 2e3777520954a7d80a9f68ba5c8cbd9d51abc12a49b4a4889ce1c873e6e6bef1 -> a19e055f91dfbce3057b7d9164d6c90096ef19d102587db79e45f65e78ac31b2, backup=/home/thomi/.openclaw/openclaw.json.bak)
00:09:21+00:00 info Updated tools.profile. Restart the gateway to apply.
00:09:22+00:00 info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (meta.lastTouchedAt, tools)
00:09:35+00:00 info gateway {"subsystem":"gateway"} signal SIGTERM received
00:09:35+00:00 info gateway {"subsystem":"gateway"} received SIGTERM; restarting
00:09:35+00:00 info gmail-watcher {"subsystem":"gmail-watcher"} gmail watcher stopped
00:09:35+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1012 reason=service restart conn=0aeaaa8d-784f-49bb-bfa2-989bd3516c28
00:09:35+00:00 info gateway {"subsystem":"gateway"} restart mode: full process restart (supervisor restart)
00:09:36+00:00 info gateway {"subsystem":"gateway"} loading configuration…
00:09:36+00:00 info gateway {"subsystem":"gateway"} resolving authentication…
00:09:36+00:00 info gateway {"subsystem":"gateway"} starting...
00:09:37+00:00 info gateway {"subsystem":"gateway"} [plugins] staging bundled runtime deps before gateway startup (1 missing, 15 install specs): chokidar@^5.0.0
00:09:41+00:00 info gateway {"subsystem":"gateway"} [plugins] installed bundled runtime deps before gateway startup in 4164ms: chokidar@^5.0.0
00:09:42+00:00 info gateway {"subsystem":"gateway"} starting HTTP server...
00:09:42+00:00 info gateway/canvas {"subsystem":"gateway/canvas"} canvas host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/thomi/.openclaw/canvas)
00:09:43+00:00 info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
00:09:43+00:00 info gateway {"subsystem":"gateway"} agent model: ollama/qwen2.5:14b
00:09:43+00:00 info gateway {"subsystem":"gateway"} http server listening (7 plugins: acpx, bonjour, browser, device-pair, memory-core, phone-control, talk-voice; 6.7s)
00:09:43+00:00 info gateway {"subsystem":"gateway"} log file: /tmp/openclaw/openclaw-2026-04-29.log
00:09:43+00:00 info gateway {"subsystem":"gateway"} starting channels and sidecars...
00:09:43+00:00 info plugins {"subsystem":"plugins"} embedded acpx runtime backend registered lazily

#

┌ OpenClaw doctor

◇ Update ──────────────────────────────────────────────────────────────────────────────────╮
│ │
│ This install is not a git checkout. │
│ Run openclaw update to update via your package manager (npm/pnpm), then rerun doctor. │
│ │
├───────────────────────────────────────────────────────────────────────────────────────────╯

◇ Bundled plugins ─────────────────────────────────╮
│ │
│ Bundled plugin runtime deps are missing. │
│ - chokidar@^5.0.0 (used by memory-core) │
│ Fix: run openclaw doctor --fix to install them. │
│ │
├───────────────────────────────────────────────────╯

◇ Install missing bundled plugin runtime deps now?
│ Yes

Installing bundled plugin runtime deps (1 missing, 16 install specs): chokidar@^5.0.0
Installed bundled plugin runtime deps in 6s: @agentclientprotocol/claude-agent-acp@0.31.0, @homebridge/ciao@^1.3.6, @mariozechner/pi-ai@0.70.5, @modelcontextprotocol/sdk@1.29.0, @zed-industries/codex-acp@0.12.0, acpx@0.6.1, chokidar@^5.0.0, commander@^14.0.3, express@5.2.1, playwright-core@1.59.1, semver@7.7.4, tslog@^4.10.2, typebox@1.1.33, undici@8.1.0, ws@^8.20.0, zod@^4.3.6

◇ Bundled plugins ────────────────────────────────────────────────────────────────────────╮
│ │
│ Installed bundled plugin deps: @agentclientprotocol/claude-agent-acp@0.31.0, │
│ @homebridge/ciao@^1.3.6, @mariozechner/pi-ai@0.70.5, @modelcontextprotocol/sdk@1.29.0, │
│ @zed-industries/codex-acp@0.12.0, acpx@0.6.1, chokidar@^5.0.0, commander@^14.0.3, │
│ express@5.2.1, playwright-core@1.59.1, semver@7.7.4, tslog@^4.10.2, typebox@1.1.33, │
│ undici@8.1.0, ws@^8.20.0, zod@^4.3.6 │
│ │
├──────────────────────────────────────────────────────────────────────────────────────────╯


◇ State integrity ───────────────────────────────────────────────────────────────╮
│ │
│ - OAuth dir not present (~/.openclaw/credentials). Skipping create because no │
│ WhatsApp/pairing channel config is active. │
│ │
├─────────────────────────────────────────────────────────────────────────────────╯

◇ Security ─────────────────────────────────╮
│ │
│ - No channel security warnings detected. │
│ - Run: openclaw security audit --deep │
│ │
├────────────────────────────────────────────╯

◇ Skills status ────────────╮
│ │
│ Eligible: 17 │
│ Missing requirements: 39 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

◇ Plugins ──────╮
│ │
│ Loaded: 68 │
│ Imported: 0 │
│ Disabled: 48 │
│ Errors: 0 │
│ │
├────────────────╯


Agents: main (default)
Heartbeat interval: 30m (main)
Session store (main): /home/thomi/.openclaw/agents/main/sessions/sessions.json (2 entries)

  • agent:main:main (23m ago)
  • agent:main:subagent:ba00dcfd-03a2-4ca7-b7fb-3cbd8d7b8cc3 (48m ago)
    Run "openclaw doctor --fix" to apply changes.

    └ Doctor complete.
#

00:12:39+00:00 info gateway {"subsystem":"gateway"} signal SIGTERM received
00:12:39+00:00 info gateway {"subsystem":"gateway"} received SIGTERM; restarting
00:12:39+00:00 info gmail-watcher {"subsystem":"gmail-watcher"} gmail watcher stopped
00:12:39+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1012 reason=service restart conn=e3e6786c-756c-456e-9ea6-a1c0bbd85b1f
00:12:39+00:00 info gateway {"subsystem":"gateway"} restart mode: full process restart (supervisor restart)
00:12:40+00:00 info gateway {"subsystem":"gateway"} loading configuration…
00:12:40+00:00 info gateway {"subsystem":"gateway"} resolving authentication…
00:12:40+00:00 info gateway {"subsystem":"gateway"} starting...
00:12:41+00:00 info gateway {"subsystem":"gateway"} [plugins] staging bundled runtime deps before gateway startup (1 missing, 15 install specs): chokidar@^5.0.0
00:12:42+00:00 info gateway {"subsystem":"gateway"} [plugins] installed bundled runtime deps before gateway startup in 905ms: chokidar@^5.0.0
00:12:43+00:00 info gateway {"subsystem":"gateway"} starting HTTP server...
00:12:43+00:00 info gateway/canvas {"subsystem":"gateway/canvas"} canvas host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/thomi/.openclaw/canvas)
00:12:43+00:00 info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
00:12:43+00:00 info gateway {"subsystem":"gateway"} agent model: ollama/qwen2.5:14b
00:12:43+00:00 info gateway {"subsystem":"gateway"} http server listening (7 plugins: acpx, bonjour, browser, device-pair, memory-core, phone-control, talk-voice; 3.3s)
00:12:43+00:00 info gateway {"subsystem":"gateway"} log file: /tmp/openclaw/openclaw-2026-04-29.log
00:12:43+00:00 info gateway {"subsystem":"gateway"} starting channels and sidecars...
00:12:43+00:00 info plugins {"subsystem":"plugins"} embedded acpx runtime backend registered lazily
00:12:44+00:00 info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
00:12:44+00:00 info gateway {"subsystem":"gateway"} gateway ready
00:12:44+00:00 info gateway/heartbeat {"subsystem":"gateway/heartbeat"} {"intervalMs":1800000} heartbeat: started
00:12:44+00:00 info cron {"module":"cron","storePath":"/home/thomi/.openclaw/cron/jobs.json"} {"enabled":true,"jobs":0,"nextWakeAtMs":null} cron: started
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=f94f1f3d-d439-4ffb-a0b6-287e39de9b89 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.subscribe 484ms conn=f94f1f3d…9b89 id=278e006f…21cd
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agent.identity.get 486ms conn=f94f1f3d…9b89 id=fb170ccb…5407
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agents.list 487ms conn=f94f1f3d…9b89 id=550cdc62…db01
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ health 488ms cached=true conn=f94f1f3d…9b89 id=8648a69c…e004
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 606ms conn=f94f1f3d…9b89 id=7b8f8d2e…2db6
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 634ms conn=f94f1f3d…9b89 id=8fb3a608…1171
00:12:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ device.pair.list 635ms conn=f94f1f3d…9b89 id=644ae9c7…5f55
00:12:51+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 122ms conn=f94f1f3d…9b89 id=f11147b5…2bd4
00:13:05+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 19772ms conn=f94f1f3d…9b89 id=d4c09b3f…9367
00:13:05+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓

#

00:12:51+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 122ms conn=f94f1f3d…9b89 id=f11147b5…2bd4
00:13:05+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 19772ms conn=f94f1f3d…9b89 id=d4c09b3f…9367
00:13:05+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 19775ms conn=f94f1f3d…9b89 id=55bf6dc7…dd49
00:13:05+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.list 19778ms conn=f94f1f3d…9b89 id=d8ce9bdd…f42c
00:13:11+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=342.9 eventLoopDelayMaxMs=14176.7 eventLoopUtilization=0.725 cpuCoreRatio=0.49 active=0 waiting=0 queued=0
00:19:12+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=90s eventLoopDelayP99Ms=21.4 eventLoopDelayMaxMs=78852.9 eventLoopUtilization=0.891 cpuCoreRatio=0.314 active=1 waiting=0 queued=1

#

00:25:42+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=20.5 eventLoopDelayMaxMs=3005.2 eventLoopUtilization=0.106 cpuCoreRatio=0.117 active=0 waiting=0 queued=0
00:26:03+00:00 warn Config overwrite: /home/thomi/.openclaw/openclaw.json (sha256 a19e055f91dfbce3057b7d9164d6c90096ef19d102587db79e45f65e78ac31b2 -> 8c920e1f640326751101a79440d78e3fe6e7130bfdb1b44f891e24353dbd25ff, backup=/home/thomi/.openclaw/openclaw.json.bak)
00:26:03+00:00 info Updated tools.profile. Restart the gateway to apply.
00:26:03+00:00 info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (meta.lastTouchedAt, tools.profile)
00:26:04+00:00 info gateway {"subsystem":"gateway"} signal SIGTERM received
00:26:04+00:00 info gateway {"subsystem":"gateway"} received SIGTERM; restarting
00:26:04+00:00 info gmail-watcher {"subsystem":"gmail-watcher"} gmail watcher stopped
00:26:04+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1012 reason=service restart conn=f94f1f3d-d439-4ffb-a0b6-287e39de9b89
00:26:04+00:00 info gateway {"subsystem":"gateway"} restart mode: full process restart (supervisor restart)
00:26:05+00:00 info gateway {"subsystem":"gateway"} loading configuration…
00:26:05+00:00 info gateway {"subsystem":"gateway"} resolving authentication…
00:26:05+00:00 info gateway {"subsystem":"gateway"} starting...
00:26:07+00:00 info gateway {"subsystem":"gateway"} [plugins] staging bundled runtime deps before gateway startup (1 missing, 15 install specs): chokidar@^5.0.0
00:26:14+00:00 info gateway {"subsystem":"gateway"} [plugins] installed bundled runtime deps before gateway startup in 7246ms: chokidar@^5.0.0
00:26:15+00:00 info gateway {"subsystem":"gateway"} starting HTTP server...
00:26:15+00:00 info gateway/canvas {"subsystem":"gateway/canvas"} canvas host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/thomi/.openclaw/canvas)

#

00:26:15+00:00 info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
00:26:15+00:00 info gateway {"subsystem":"gateway"} agent model: ollama/qwen2.5:14b
00:26:15+00:00 info gateway {"subsystem":"gateway"} http server listening (7 plugins: acpx, bonjour, browser, device-pair, memory-core, phone-control, talk-voice; 9.7s)
00:26:15+00:00 info gateway {"subsystem":"gateway"} log file: /tmp/openclaw/openclaw-2026-04-29.log
00:26:15+00:00 info gateway {"subsystem":"gateway"} starting channels and sidecars...
00:26:15+00:00 info plugins {"subsystem":"plugins"} embedded acpx runtime backend registered lazily
00:26:16+00:00 info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
00:26:16+00:00 info gateway {"subsystem":"gateway"} gateway ready
00:26:16+00:00 info gateway/heartbeat {"subsystem":"gateway/heartbeat"} {"intervalMs":1800000} heartbeat: started
00:26:16+00:00 info cron {"module":"cron","storePath":"/home/thomi/.openclaw/cron/jobs.json"} {"enabled":true,"jobs":0,"nextWakeAtMs":null} cron: started
00:26:19+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=99c25ac3-8027-41a5-b10e-66965b1a6897 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui

#

00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.subscribe 504ms conn=99c25ac3…6897 id=147781c4…53b5
00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agent.identity.get 505ms conn=99c25ac3…6897 id=256f3c55…75c5
00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agents.list 507ms conn=99c25ac3…6897 id=da077022…1325
00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ health 507ms cached=true conn=99c25ac3…6897 id=dfbf69e3…9628
00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 627ms conn=99c25ac3…6897 id=60675778…f483
00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 657ms conn=99c25ac3…6897 id=d23f30de…800d
00:26:20+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ device.pair.list 658ms conn=99c25ac3…6897 id=55eb1679…da27
00:26:30+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 121ms conn=99c25ac3…6897 id=8cba54f5…875e
00:26:47+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 27279ms conn=99c25ac3…6897 id=f069f95f…c3ea
00:26:47+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 27281ms conn=99c25ac3…6897 id=2bd2dd89…aac0
00:26:47+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.list 27284ms conn=99c25ac3…6897 id=d1f3cb0d…21e9
00:26:47+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=40s eventLoopDelayP99Ms=138.7 eventLoopDelayMaxMs=16584.3 eventLoopUtilization=0.729 cpuCoreRatio=0.365 active=0 waiting=0 queued=0
00:31:07+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=20.3 eventLoopDelayMaxMs=2929.7 eventLoopUtilization=0.112 cpuCoreRatio=0.131 active=1 waiting=0 queued=1
00:31:21+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"runId":"540d4fb4-bf0e-4dac-b3e5-f57e598a1d03","provider":"ollama","model":"qwen2.5:14b","pattern":"json_tool_call","toolName":"web_search","registeredTool":true} Assistant reply looks like a tool call, but no structured tool invocation was emitted; treating it as text.
00:33:37+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=21.1 eventLoopDelayMaxMs=2808.1 eventLoopUtilization=0.11 cpuCoreRatio=0.125 active=1 waiting=0 queued=1
00:35:37+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=20.7 eventLoopDelayMaxMs=2835.3 eventLoopUtilization=0.116 cpuCoreRatio=0.127 active=1 waiting=0 queued=1
00:39:24+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ config.schema 90ms conn=99c25ac3…6897 id=b86741b6…2c77
00:39:24+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ config.get 82ms conn=99c25ac3…6897 id=275b3cfa…e179
00:39:37+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=21 eventLoopDelayMaxMs=2841.6 eventLoopUtilization=0.124 cpuCoreRatio=0.138 active=1 waiting=0 queued=1
00:41:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1001 reason=n/a conn=99c25ac3-8027-41a5-b10e-66965b1a6897

#

0:41:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=10a881d4-386a-4b3f-88e3-a725ef38592c remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
00:41:12+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 169ms conn=10a881d4…592c id=11028884…6e2e
00:41:12+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 172ms conn=10a881d4…592c id=703c4ee6…c72b
00:41:12+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 173ms conn=10a881d4…592c id=5d03857f…8e14
00:41:12+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.list 174ms conn=10a881d4…592c id=2179a57a…9818
00:41:37+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=21 eventLoopDelayMaxMs=2860.5 eventLoopUtilization=0.125 cpuCoreRatio=0.142 active=0 waiting=0 queued=0
00:44:37+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=20.9 eventLoopDelayMaxMs=2912.9 eventLoopUtilization=0.116 cpuCoreRatio=0.134 active=0 waiting=0 queued=0
00:46:37+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=61.7 eventLoopDelayMaxMs=10284.4 eventLoopUtilization=0.565 cpuCoreRatio=0.607 active=1 waiting=0 queued=0
00:46:56+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agent.wait 34947ms conn=0a742fab…5154 id=a2ee9333…4e8c
00:48:51+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1001 reason=n/a conn=10a881d4-386a-4b3f-88e3-a725ef38592c
00:48:51+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=a79a3eeb-fa90-4e2f-abe1-7af3fe92fa9d remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui

#

00:48:52+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 93ms conn=a79a3eeb…fa9d id=f60d61e9…00f0
00:48:52+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 98ms conn=a79a3eeb…fa9d id=96d6351a…c42b
00:48:52+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 99ms conn=a79a3eeb…fa9d id=fb08b4e9…a713
00:48:52+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.list 101ms conn=a79a3eeb…fa9d id=bee3c5c7…b7d1
00:48:52+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 105ms conn=a79a3eeb…fa9d id=38357bd6…0ae3
00:48:52+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ device.pair.list 107ms conn=a79a3eeb…fa9d id=767307b9…a54f
00:53:04+00:00 info @openclaw/discord
id: discord
OpenClaw Discord channel plugin

Status: disabled
Format: openclaw
Source: ~/.npm-global/lib/node_modules/openclaw/dist/extensions/discord/index.js
Origin: bundled
Version: 2026.4.27
Shape: non-capability
Capability mode: none
Legacy before_agent_start: no

#

rror: bundled (disabled by default)
00:53:24+00:00 error Plugin "discord" is not managed by plugins config/install records and cannot be uninstalled.
00:53:26+00:00 error Plugin "discord" is not managed by plugins config/install records and cannot be uninstalled.
00:57:00+00:00 info Plugin registry refreshed: 68/116 enabled plugins indexed.
00:57:02+00:00 info ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

00:57:02+00:00 info Installing bundled plugin runtime deps (1 missing, 16 install specs): chokidar@^5.0.0
00:57:06+00:00 info Installed bundled plugin runtime deps in 4s: @agentclientprotocol/claude-agent-acp@0.31.0, @homebridge/ciao@^1.3.6, @mariozechner/pi-ai@0.70.5, @modelcontextprotocol/sdk@1.29.0, @zed-industries/codex-acp@0.12.0, acpx@0.6.1, chokidar@^5.0.0, commander@^14.0.3, express@5.2.1, playwright-core@1.59.1, semver@7.7.4, tslog@^4.10.2, typebox@1.1.33, undici@8.1.0, ws@^8.20.0, zod@^4.3.6
00:57:10+00:00 info Agents: main (default)
00:57:10+00:00 info Heartbeat interval: 30m (main)

#

00:57:10+00:00 info Session store (main): /home/thomi/.openclaw/agents/main/sessions/sessions.json (2 entries)
00:57:10+00:00 info - agent:main:main (8m ago)
00:57:10+00:00 info - agent:main:subagent:ba00dcfd-03a2-4ca7-b7fb-3cbd8d7b8cc3 (10m ago)
00:57:18+00:00 info gateway {"subsystem":"gateway"} signal SIGTERM received
00:57:18+00:00 info gateway {"subsystem":"gateway"} received SIGTERM; restarting
00:57:18+00:00 info gmail-watcher {"subsystem":"gmail-watcher"} gmail watcher stopped
00:57:18+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1012 reason=service restart conn=a79a3eeb-fa90-4e2f-abe1-7af3fe92fa9d
00:57:18+00:00 info gateway {"subsystem":"gateway"} restart mode: full process restart (supervisor restart)
00:57:19+00:00 info gateway {"subsystem":"gateway"} loading configuration…
00:57:19+00:00 info gateway {"subsystem":"gateway"} resolving authentication…
00:57:19+00:00 info gateway {"subsystem":"gateway"} starting...
00:57:20+00:00 info gateway {"subsystem":"gateway"} [plugins] staging bundled runtime deps before gateway startup (10 missing, 15 install specs): @agentclientprotocol/claude-agent-acp@0.31.0, @homebridge/ciao@^1.3.6, @modelcontextprotocol/sdk@1.29.0, @zed-industries/codex-acp@0.12.0, acpx@0.6.1, chokidar@^5.0.0, commander@^14.0.3, express@5.2.1, playwright-core@1.59.1, undici@8.1.0
00:57:26+00:00 info gateway {"subsystem":"gateway"} [plugins] installed bundled runtime deps before gateway startup in 5786ms: @agentclientprotocol/claude-agent-acp@0.31.0, @homebridge/ciao@^1.3.6, @modelcontextprotocol/sdk@1.29.0, @zed-industries/codex-acp@0.12.0, acpx@0.6.1, chokidar@^5.0.0, commander@^14.0.3, express@5.2.1, playwright-core@1.59.1, undici@8.1.0
00:57:27+00:00 info gateway {"subsystem":"gateway"} starting HTTP server...
00:57:27+00:00 info gateway/canvas {"subsystem":"gateway/canvas"} canvas host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/thomi/.openclaw/canvas)
00:57:27+00:00 info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
00:57:27+00:00 info gateway {"subsystem":"gateway"} agent model: ollama/qwen2.5:14b
00:57:27+00:00 info gateway {"subsystem":"gateway"} http server listening (7 plugins: acpx, bonjour, browser, device-pair, memory-core, phone-control, talk-voice; 8.2s)

#

00:57:27+00:00 info gateway {"subsystem":"gateway"} log file: /tmp/openclaw/openclaw-2026-04-29.log
00:57:27+00:00 info gateway {"subsystem":"gateway"} starting channels and sidecars...
00:57:27+00:00 info plugins {"subsystem":"plugins"} embedded acpx runtime backend registered lazily
00:57:27+00:00 info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
00:57:28+00:00 info gateway {"subsystem":"gateway"} gateway ready
00:57:28+00:00 info gateway/heartbeat {"subsystem":"gateway/heartbeat"} {"intervalMs":1800000} heartbeat: started
00:57:28+00:00 info cron {"module":"cron","storePath":"/home/thomi/.openclaw/cron/jobs.json"} {"enabled":true,"jobs":0,"nextWakeAtMs":null} cron: started
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=bedb9772-e98c-4de4-ab26-ef6a4a928f29 remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.subscribe 513ms conn=bedb9772…8f29 id=520d0770…c205
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agent.identity.get 515ms conn=bedb9772…8f29 id=7b79b02b…829c
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ agents.list 516ms conn=bedb9772…8f29 id=4be25930…4e8a
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ health 517ms cached=true conn=bedb9772…8f29 id=5db89091…ff58
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 599ms conn=bedb9772…8f29 id=e01cd3a3…631f
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 630ms conn=bedb9772…8f29 id=371ab4e3…db77
00:57:28+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ device.pair.list 631ms conn=bedb9772…8f29 id=5e735b0a…bfb8
00:58:09+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 41034ms conn=bedb9772…8f29 id=ef41f32b…53ef
00:58:09+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 41036ms conn=bedb9772…8f29 id=6273f822…b588
00:58:09+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ sessions.list 41040ms conn=bedb9772…8f29 id=355e0f97…6e31
00:58:09+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=49s eventLoopDelayP99Ms=611.8 eventLoopDelayMaxMs=28202.5 eventLoopUtilization=0.881 cpuCoreRatio=0.309 active=0 waiting=0 queued=0
01:11:09+00:00 warn diagnostic {"subsystem":"diagnostic"} liveness warning: reasons=event_loop_delay interval=30s eventLoopDelayP99Ms=20.4 eventLoopDelayMaxMs=1475.3 eventLoopUtilization=0.055 cpuCoreRatio=0.068 active=0 waiting=0 queued=0
01:14:10+00:00 info @openclaw/discord

#

id: discord
OpenClaw Discord channel plugin

Status: disabled
Format: openclaw
Source: ~/.npm-global/lib/node_modules/openclaw/dist/extensions/discord/index.js
Origin: bundled
Version: 2026.4.27
Shape: non-capability
Capability mode: none
Legacy before_agent_start: no

Error: bundled (disabled by default)
01:35:03+00:00 info ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

01:35:08+00:00 info Installing bundled plugin runtime deps (1 missing, 16 install specs): chokidar@^5.0.0
01:35:14+00:00 info Installed bundled plugin runtime deps in 6s: @agentclientprotocol/claude-agent-acp@0.31.0, @homebridge/ciao@^1.3.6, @mariozechner/pi-ai@0.70.5, @modelcontextprotocol/sdk@1.29.0, @zed-industries/codex-acp@0.12.0, acpx@0.6.1, chokidar@^5.0.0, commander@^14.0.3, express@5.2.1, playwright-core@1.59.1, semver@7.7.4, tslog@^4.10.2, typebox@1.1.33, undici@8.1.0, ws@^8.20.0, zod@^4.3.6
01:35:17+00:00 info Agents: main (default)
01:35:17+00:00 info Heartbeat interval: 30m (main)
01:35:17+00:00 info Session store (main): /home/thomi/.openclaw/agents/main/sessions/sessions.json (2 entries)
01:35:17+00:00 info - agent:main:main (23m ago)
01:35:17+00:00 info - agent:main:subagent:ba00dcfd-03a2-4ca7-b7fb-3cbd8d7b8cc3 (48m ago)
01:35:23+00:00 info Run "openclaw doctor --fix" to apply changes.
Log tail truncated (increase --max-bytes).
^C% ya revisa eso

cursive rockBOT
#

Sí, ya se ve claro: Discord no está fallando por el modelo. Está deshabilitado.

La línea clave es:

@openclaw/discord
Status: disabled
Error: bundled (disabled by default)

Y en el arranque dice:

http server listening (7 plugins: acpx, bonjour, browser, device-pair, memory-core, phone-control, talk-voice)

No aparece discord, así que el gateway nunca está conectando el bot.

#

No intentes plugins uninstall discord: es bundled, no se desinstala. Hay que activar/configurar el canal Discord:

openclaw config get channels.discord

Si sale vacío/deshabilitado, configura el token sin pegarlo aquí:

cat > discord.patch.json5 <<'JSON5'
{
  channels: {
    discord: {
      enabled: true,
      token: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" },
    },
#
  },
}
JSON5

openclaw config patch --file ./discord.patch.json5 --dry-run
openclaw config patch --file ./discord.patch.json5

Luego asegúrate de que el servicio vea el token. Si usas env, ponlo en:

~/.openclaw/.env

con:

#
DISCORD_BOT_TOKEN=tu_token_aqui

Después:

openclaw doctor --fix
openclaw gateway restart
openclaw channels status --probe

Si tras reiniciar ves discord en la lista de plugins/canales, el bot debería conectarse. Docs: https://docs.openclaw.ai/channels/discord

harsh kettle
#

➜ ~ openclaw config get channels.discord

🦞 OpenClaw 2026.4.27 (cbc2ba0) — I'll do the boring stuff while you dramatically stare at the logs like it's cinema.

Config path not found: channels.discord
➜ ~

cursive rockBOT
#

Ahí está el problema exacto: no existe channels.discord en tu config, por eso el plugin queda “bundled disabled by default”.

Créalo así:

cat > discord.patch.json5 <<'JSON5'
{
  channels: {
    discord: {
      enabled: true,
      token: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" },
    },
  },
}
JSON5
#
openclaw config patch --file ./discord.patch.json5 --dry-run
openclaw config patch --file ./discord.patch.json5

Luego pon el token en ~/.openclaw/.env:

printf '\nDISCORD_BOT_TOKEN=TU_TOKEN_AQUI\n' >> ~/.openclaw/.env

No pegues ese token en Discord.

Después reinicia:

#
openclaw gateway restart
openclaw channels status --probe

Si channels status ya muestra Discord, el bot debería pasar a online.

harsh kettle
#

➜ ~ cat > discord.patch.json5 <<'JSON5'
{
channels: {
discord: {
enabled: true,
token: { source: "env", provider: "default", id: "MTM3MDM2OTgyODkyNTQ3Mjg0OA.Gjqd-U.At4xWFDwUXX19KtU5Kah8B4c-Mt_zCHP3whUWE" },
},
},
}
JSON5
➜ ~ openclaw config patch --file ./discord.patch.json5 --dry-run
openclaw config patch --file ./discord.patch.json5
error: unknown option '--file'
error: unknown option '--file'
➜ ~ printf '\nDISCORD_BOT_TOKEN=TU_TOKEN_AQUI\n' >> ~/.openclaw/.env
➜ ~

cursive rockBOT
#

Espera: acabás de pegar el token del bot en público. Revócalo/resetéalo ya en Discord Developer Portal antes de seguir. Ese token ya no es seguro.

#

Sí, y ojo: ese token ya quedó filtrado. Revócalo/resetéalo en Discord Developer Portal antes de seguir. No lo voy a repetir.

También hubo dos errores:

  1. En token.id pusiste el token real. Ahí debe ir el nombre de la variable env: DISCORD_BOT_TOKEN.
  2. En .env escribiste TU_TOKEN_AQUI, o sea placeholder.

Haz esto:

rm -f ~/discord.patch.json5

cp ~/.openclaw/.env ~/.openclaw/.env.bak 2>/dev/null || true
grep -v '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env.bak 2>/dev/null > ~/.openclaw/.env || true
printf 'DISCORD_BOT_TOKEN=PEGA_AQUI_EL_TOKEN_NUEVO_RESETEADO\n' >> ~/.openclaw/.env
#

Luego configura Discord sin config patch:

openclaw config set channels.discord.enabled true --strict-json
openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN

Y reinicia/verifica:

openclaw gateway restart
openclaw config get channels.discord
openclaw channels status --probe

Si el token nuevo está bien, el plugin ya no debería salir como disabled.

harsh kettle
#

➜ ~ openclaw gateway restart
openclaw config get channels.discord
openclaw channels status --probe

🦞 OpenClaw 2026.4.27 (cbc2ba0) — If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.

Restarted systemd service: openclaw-gateway.service
Gateway restart failed after 13s: service stayed stopped and port 18789 stayed free.
Service runtime: status=stopped, state=activating, lastExit=1
Gateway port 18789 status: free.
Gateway restart failed after 13s: service stayed stopped and health checks never came up.
Tip: openclaw gateway status --deep
Tip: openclaw doctor

🦞 OpenClaw 2026.4.27 (cbc2ba0) — It's not "failing," it's "discovering new ways to configure the same thing wrong."

{
"enabled": true,
"token": {
"source": "env",
"provider": "default",
"id": "DISCORD_BOT_TOKEN"
},
"groupPolicy": "allowlist"
}

🦞 OpenClaw 2026.4.27 (cbc2ba0) — Your terminal just grew claws—type something and let the bot pinch the busywork.



Gateway not reachable: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/thomi/.openclaw/openclaw.json
Bind: loopback

Possible causes:

  • Gateway not yet ready to accept connections (retry after a moment)
  • TLS mismatch (connecting with ws:// to a wss:// gateway, or vice versa)
  • Gateway crashed or was terminated unexpectedly
    Run openclaw doctor for diagnostics.
    Gateway not reachable; showing config-only status.
    Config: /home/thomi/.openclaw/openclaw.json
    Mode: local

Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
➜ ~

cursive rockBOT
#

Bien: la config de Discord ya existe. Ahora el problema cambió a: el gateway crashea al arrancar.

Primero: confirma que ya reseteaste el token filtrado. Si no, hazlo antes.

Luego revisa .env sin mostrar el token:

grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'

Debería salir una sola línea. Si salen varias, límpialas y deja solo el token nuevo:

cp ~/.openclaw/.env ~/.openclaw/.env.bak
grep -v '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env.bak > ~/.openclaw/.env
printf 'DISCORD_BOT_TOKEN=PEGA_EL_TOKEN_NUEVO_AQUI\n' >> ~/.openclaw/.env
#

Después necesitamos el error real del crash:

openclaw gateway status --deep
journalctl --user -u openclaw-gateway.service -n 120 --no-pager
tail -n 120 /tmp/openclaw/openclaw-2026-04-29.log

Pega las líneas de error, pero no pegues tokens.

Nota: tu output dice OpenClaw 2026.4.27, no 2026.4.46. Eso puede ser relevante luego, pero primero veamos por qué el servicio sale con lastExit=1.

harsh kettle
#

➜ ~ grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'
➜ ~

cursive rockBOT
#

Ahí está: no hay DISCORD_BOT_TOKEN en ~/.openclaw/.env, pero tu config ahora exige ese SecretRef. Por eso el gateway falla al arrancar.

Haz esto con el token nuevo reseteado:

printf '\nDISCORD_BOT_TOKEN=PEGA_EL_TOKEN_NUEVO_AQUI\n' >> ~/.openclaw/.env

Verifica sin mostrarlo:

grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'

Luego:

#
openclaw gateway restart
openclaw gateway status --deep
openclaw channels status --probe

Si sigue fallando, pega gateway status --deep y el tail del journal.

harsh kettle
#

no sale nada

cursive rockBOT
#

Sí: que no salga nada significa que la variable no está guardada.

Tienes que agregarla manualmente con el token nuevo:

nano ~/.openclaw/.env

Añade esta línea al final:

DISCORD_BOT_TOKEN=TU_TOKEN_NUEVO_RESETEADO

Guarda y sal.

Luego verifica:

#
grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'

Ahora sí debería mostrar algo como:

1:DISCORD_BOT_TOKEN=<redacted>

Después reinicia:

openclaw gateway restart

Importante: el token que pegaste antes en este canal ya no sirve/ya no debe usarse. Tienes que resetearlo en Discord Developer Portal y usar el nuevo.

harsh kettle
#

➜ ~ openclaw gateway status --deep

🦞 OpenClaw 2026.4.27 (cbc2ba0) — Your terminal just grew claws—type something and let the bot pinch the busywork.



Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-29.log
Command: /usr/bin/node /home/thomi/.npm-global/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: stopped (state failed, sub failed, last exit 1, reason 1)
Connectivity probe: failed
Probe target: ws://127.0.0.1:18789
connect ECONNREFUSED 127.0.0.1:18789
Capability: unknown

Service is loaded but not running (likely exited immediately).
File logs: /tmp/openclaw/openclaw-2026-04-29.log
Logs: journalctl --user -u openclaw-gateway.service -n 200 --no-pager
Restart attempts: /home/thomi/.openclaw/logs/gateway-restart.log

Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
➜ ~

cursive rockBOT
#

El status confirma que el servicio sale inmediatamente con exit 1, pero todavía no muestra la causa.

Necesitamos el log del crash:

journalctl --user -u openclaw-gateway.service -n 200 --no-pager

y si eso no muestra bastante:

tail -n 160 ~/.openclaw/logs/gateway-restart.log
tail -n 160 /tmp/openclaw/openclaw-2026-04-29.log

Pega la parte donde aparezca error, failed, SecretRef, DISCORD_BOT_TOKEN, discord, etc.

#

Pero antes verifica esto:

grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'

Si sigue sin salir nada, el crash casi seguro es porque channels.discord.token apunta a una env var que no existe.

harsh kettle
#

Apr 29 22:46:38 iusearchbtw systemd[917]: openclaw-gateway.service: Scheduled restart job, restart counter is at 3.
Apr 29 22:46:38 iusearchbtw systemd[917]: Started OpenClaw Gateway (v2026.4.27).
Apr 29 22:46:39 iusearchbtw node[86556]: 2026-04-29T22:46:39.693-03:00 [gateway] loading configuration…
Apr 29 22:46:39 iusearchbtw node[86556]: 2026-04-29T22:46:39.772-03:00 [gateway] resolving authentication…
Apr 29 22:46:39 iusearchbtw node[86556]: 2026-04-29T22:46:39.780-03:00 [gateway] starting...
Apr 29 22:46:40 iusearchbtw node[86556]: 2026-04-29T22:46:40.891-03:00 [secrets] [SECRETS_RELOADER_DEGRADED] SecretRefResolutionError: Environment variable "DISCORD_BOT_TOKEN" is missing or empty.
Apr 29 22:46:40 iusearchbtw node[86556]: 2026-04-29T22:46:40.894-03:00 [gateway] wrote stability bundle: /home/thomi/.openclaw/logs/stability/openclaw-stability-2026-04-30T01-46-40-893Z-86556-gateway.startup_failed.json
Apr 29 22:46:40 iusearchbtw node[86556]: Gateway failed to start: Error: Startup failed: required secrets are unavailable. SecretRefResolutionError: Environment variable "DISCORD_BOT_TOKEN" is missing or empty.
Apr 29 22:46:40 iusearchbtw systemd[917]: openclaw-gateway.service: Main process exited, code=exited, status=1/FAILURE
Apr 29 22:46:40 iusearchbtw systemd[917]: openclaw-gateway.service: Failed with result 'exit-code'.
Apr 29 22:46:40 iusearchbtw systemd[917]: openclaw-gateway.service: Consumed 3.384s CPU time over 7.676s wall clock time, 332.1M memory peak.
Apr 29 22:46:45 iusearchbtw systemd[917]: openclaw-gateway.service: Scheduled restart job, restart counter is at 4.
Apr 29 22:46:45 iusearchbtw systemd[917]: Started OpenClaw Gateway (v2026.4.27).
Apr 29 22:46:47 iusearchbtw node[86631]: 2026-04-29T22:46:47.194-03:00 [gateway] loading configuration…
Apr 29 22:46:47 iusearchbtw node[86631]: 2026-04-29T22:46:47.273-03:00 [gateway] resolving authentication…
Apr 29 22:46:47 iusearchbtw node[86631]: 2026-04-29T22:46:47.282-03:00 [gateway] starting...
Apr 29 22:46:48 iusearchbtw node[86631]: 2026-04-29T22:46:48.405-03:00 [secrets] [SECRETS_RELOADER_DEGRADED] SecretRefResolutionError: Environment variable "DISCORD_BOT_TOKEN" is missing or empty.
Apr 29 22:46:48 iusearchbtw node[86631]: 2026-04-29T22:46:48.408-03:00 [gateway] wrote stability bundle: /home/thomi/.openclaw/logs/stability/openclaw-stability-2026-04-30T01-46-48-406Z-86631-gateway.startup_failed.json
Apr 29 22:46:48 iusearchbtw node[86631]: Gateway failed to start: Error: Startup failed: required secrets are unavailable. SecretRefResolutionError: Environment variable "DISCORD_BOT_TOKEN" is missing or empty.
Apr 29 22:46:48 iusearchbtw systemd[917]: openclaw-gateway.service: Main process exited, code=exited, status=1/FAILURE
Apr 29 22:46:48 iusearchbtw systemd[917]: openclaw-gateway.service: Failed with result 'exit-code'.
Apr 29 22:46:48 iusearchbtw systemd[917]: openclaw-gateway.service: Consumed 3.413s CPU time over 7.514s wall clock time, 330.2M memory peak.
Apr 29 22:46:53 iusearchbtw systemd[917]: openclaw-gateway.service: Scheduled restart job, restart counter is at 5.
Apr 29 22:46:53 iusearchbtw systemd[917]: openclaw-gateway.service: Start request repeated too quickly.
Apr 29 22:46:53 iusearchbtw systemd[917]: openclaw-gateway.service: Failed with result 'start-limit-hit'.
Apr 29 22:46:53 iusearchbtw systemd[917]: Failed to start OpenClaw Gateway (v2026.4.27).
Apr 29 22:46:53 iusearchbtw systemd[917]: openclaw-gateway.service: Consumed 3.413s CPU time over 5.025s wall clock time, 330.2M memory peak.
➜ ~

cursive rockBOT
#

Confirmado: el crash es solo por esto:

Environment variable "DISCORD_BOT_TOKEN" is missing or empty

Arreglo:

nano ~/.openclaw/.env

Agrega:

DISCORD_BOT_TOKEN=TOKEN_NUEVO_RESETEADO
#

Luego verifica:

grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'

Como systemd quedó en start-limit-hit, resetea el fallo y arranca:

systemctl --user reset-failed openclaw-gateway.service
openclaw gateway restart
openclaw gateway status --deep
openclaw channels status --probe

Si no quieres configurar Discord todavía y solo quieres levantar OpenClaw, desactiva temporalmente el canal:

#
openclaw config set channels.discord.enabled false --strict-json
systemctl --user reset-failed openclaw-gateway.service
openclaw gateway restart

Pero para que el bot Discord conecte, necesitas la línea DISCORD_BOT_TOKEN=... con un token nuevo válido.

harsh kettle
#

➜ ~ grep -n '^DISCORD_BOT_TOKEN=' ~/.openclaw/.env | sed 's/=.*/=<redacted>/'
2:DISCORD_BOT_TOKEN=<redacted>
➜ ~

cursive rockBOT
#

Perfecto, ahora la variable existe ✅

Como el servicio quedó bloqueado por start-limit-hit, corre:

systemctl --user reset-failed openclaw-gateway.service
openclaw gateway restart

Luego verifica:

openclaw gateway status --deep
openclaw channels status --probe

Si vuelve a fallar, ya no debería ser por DISCORD_BOT_TOKEN vacío; pega el nuevo error del journal.

harsh kettle
#

➜ ~ systemctl --user reset-failed openclaw-gateway.service
openclaw gateway restart

🦞 OpenClaw 2026.4.27 (cbc2ba0) — I'm not magic—I'm just extremely persistent with retries and coping strategies.

Restarted systemd service: openclaw-gateway.service
➜ ~ openclaw gateway status --deep
openclaw channels status --probe

🦞 OpenClaw 2026.4.27 (cbc2ba0) — I'm the middleware between your ambition and your attention span.



Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-29.log
Command: /usr/bin/node /home/thomi/.npm-global/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: running (pid 88726, state active, sub running, last exit 0, reason 0)
Warm-up: launch agents can take a few seconds. Try again shortly.
Connectivity probe: failed
Probe target: ws://127.0.0.1:18789
timeout
Capability: unknown

Port 18789 is already in use.

  • pid 88726 thomi: /usr/bin/node /home/thomi/.npm-global/lib/node_modules/openclaw/dist/index.js gateway --port 18789 (127.0.0.1:18789)
  • Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
    Listening: 127.0.0.1:18789
    Troubles: run openclaw status
    Troubleshooting: https://docs.openclaw.ai/troubleshooting

🦞 OpenClaw 2026.4.27 (cbc2ba0) — We ship features faster than Apple ships calculator updates.



Gateway reachable.

  • Discord default: enabled, configured, running, connected, bot:@ThomiBot, token:config, intents:content=limited, works

Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
➜ ~

cursive rockBOT
#

Listo, eso ya está arreglado 🎉

La línea importante:

Discord default: enabled, configured, running, connected, bot:@ThomiBot, token:config, intents:content=limited, works

Eso significa:

  • ✅ Gateway arrancó
  • ✅ Discord plugin activado
  • ✅ Token resuelto desde config/env
  • ✅ Bot conectado como @ThomiBot
  • ✅ Probe dice works

El gateway status --deep mostró timeout porque lo corriste justo durante warm-up; pero channels status --probe confirmó que el Gateway ya estaba reachable.

#

Solo queda una nota: intents:content=limited. Si el bot no lee algunos mensajes de servidor, revisa en Discord Developer Portal que Message Content Intent esté activado. Si ya responde bien, puedes dejarlo así.

Si quedó resuelto, marca la solución para Answer Overflow: right-click en el mensaje solución → Apps → ✅ Mark Solution.

harsh kettle
#

le intento hablar al bot pero este no responde, voy a hacer que se vuelva a unir al servidor donde lo tengo

cursive rockBOT
#

Antes de reinvitarlo: el probe dice que el bot sí está conectado, así que puede ser más de permisos/política que de “no está en el server”.

Dos cosas rápidas:

  1. Message Content Intent
    En Developer Portal → Bot → Privileged Gateway Intents, activa Message Content Intent. Tu status dice:
intents:content=limited

Eso puede hacer que no lea mensajes normales.

  1. Guild allowlist / mention
    Tu config tiene:
#
"groupPolicy": "allowlist"

Así que en servidores solo responde si el guild/canal está permitido, y normalmente si lo mencionas. Prueba mencionarlo directamente:

@ThomiBot hola

Después de activarle intents o reinvitarlo, corre:

openclaw channels status --probe

Si sigue sin responder, pega channels.discord.guilds sin tokens:

#
openclaw config get channels.discord.guilds
harsh kettle
#

➜ ~ openclaw config get channels.discord.guilds

🦞 OpenClaw 2026.4.27 (cbc2ba0) — I don't have opinions about tabs vs spaces. I have opinions about everything else.

Config path not found: channels.discord.guilds
➜ ~

cursive rockBOT
#

Ahí está el siguiente bloqueo: tienes groupPolicy: "allowlist" pero no tienes ningún guilds allowlist. Entonces el bot está conectado, pero ignora mensajes de servidor.

Opción rápida para probar en tu server privado:

openclaw config set channels.discord.groupPolicy open
openclaw gateway restart

Luego menciona al bot:

@ThomiBot hola

Opción más segura/recomendada: allowlist del servidor. Necesitas el Server ID de Discord. Con Developer Mode activado: right-click al ícono del server → Copy Server ID.

#

Luego:

openclaw config set channels.discord.guilds '{"TU_SERVER_ID":{"requireMention":true}}' --strict-json
openclaw gateway restart

Si quieres que responda sin mencionarlo en ese server privado:

openclaw config set channels.discord.guilds '{"TU_SERVER_ID":{"requireMention":false}}' --strict-json
openclaw gateway restart

Yo probaría primero con requireMention: true para evitar spam/loops.

harsh kettle
#

puso que estaba escribiendo pero no manda nada

cursive rockBOT
#

Eso es buena señal: el bot sí recibió el mensaje. Si aparece “typing…” pero no manda nada, casi seguro estás chocando con el default de Discord guilds:

en canales/servers, las respuestas finales normales quedan privadas por defecto; para que postee visible hay que usar message tool o activar respuestas automáticas.

Para restaurar el comportamiento “normal” en server:

openclaw config set messages.groupChat.visibleReplies automatic
openclaw gateway restart

Luego prueba mencionándolo:

@ThomiBot hola
#

Si quieres mantenerlo más controlado por server, asegúrate también de tener el guild allowlist:

openclaw config set channels.discord.guilds '{"TU_SERVER_ID":{"requireMention":true}}' --strict-json
openclaw gateway restart

El síntoma “typing pero no manda” encaja perfecto con visibleReplies: message_tool, no con bot desconectado.

harsh kettle
#

uy: @ThomiBot hola

Thomi
Apr 29, 2026, 10:58 PM

Claw

[assistant turn failed before producing content]

Claw
Apr 29, 2026, 10:58 PM

Thomi
@ThomiBot hola

Thomi
Apr 29, 2026, 11:01 PM

cursive rockBOT
#

Ok, ahora ya no es Discord/routing: el mensaje sí llega, pero el turno del agente falla antes de generar texto.

Necesitamos el error del run justo a las 22:58 / 23:01. Corre:

journalctl --user -u openclaw-gateway.service -n 250 --no-pager | grep -iE 'error|failed|ollama|qwen|gemma|assistant|runId|tool|discord'

o más amplio:

tail -n 250 /tmp/openclaw/openclaw-2026-04-29.log | grep -iE 'error|failed|ollama|qwen|gemma|assistant|runId|tool|discord'

Mientras tanto, prueba esto para descartar sesión/contexto corrupto:

#
/new ollama/qwen2.5:14b hola

en el canal del bot.

Si también falla, el problema está en modelo/runtime. Si /new responde, era la sesión vieja contaminada por los errores anteriores.