#It's slow and only voice

1 messages · Page 1 of 1 (latest)

compact totem
#

My bot is slow now for some reason. I see double animation now.

Example:

Me: Hi Miko
She: Typing......Stop.......Typing.

Seems like it's doing some double task.

Also,

before she was sending voice when I was sending a voice clip and text when I was sending text. Now when I select /tts and turn tts off, she don't send voice but when I turn it on, she sends every time even if I sends text. How to fix it back. It's so slow now and something is wrong.

I want you to guide step by step, one step at a time solution.

OpenClaw 2026.4.25 (aa36ee6)
WSL 2

stark roostBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

obtuse badgeBOT
#

Yep — /tts on means voice for every reply, including text replies. The old behavior is usually TTS auto mode inbound: only speak after you send voice/audio.

Let’s do this one step at a time.

Step 1: In the same Discord chat with Miko, run:

/status

Paste the line that starts with:

🔊 Voice:

That will tell us whether you’re on always, inbound, or overridden by the chat/session.

compact totem
#
🦞 OpenClaw 2026.4.25 (aa36ee6)
🧠 Model: openai/gpt-5.4-mini · 🔑 api-key (openai:default)
🔄 Fallbacks: openai/gpt-5.4
🧮 Tokens: 7.5k in / 25 out
🗄️ Cache: 61% hit · 12k cached, 0 new
📚 Context: 19k/400k (5%) · 🧹 Compactions: 0
🧵 Session: agent:main:discord:direct:1302991150763999302 • updated 11m ago
⚙️ Execution: direct · Runtime: OpenClaw Pi Default · Think: medium · Text: low · elevated
🪢 Queue: collect (depth 0)

obtuse badgeBOT
#

Good — that output means TTS is currently off, because there’s no 🔊 Voice: line.

Next we need the TTS-specific status so we can see whether a chat override is forcing it.

Step 2: In Miko’s Discord chat, run:

/tts status

Paste the full output here. Then I’ll give the next exact step.

compact totem
#
📊 TTS status
State: ❌ disabled
Chat override: default
Provider: elevenlabs (✅ configured)
Persona: none
Text limit: 4096 chars
Auto-summary: on

Last attempt (735s ago): ✅
Text: 54 chars
Provider: elevenlabs
Attempt details: elevenlabs:success(ok) 1189ms
Latency: 1189ms
obtuse badgeBOT
#

Perfect — we found it.

Right now /tts off wrote a local override = off. /tts on would change it to always, which is why it speaks even for text.

You want inbound mode.

Step 3: In WSL, run this one command:

node -e 'const fs=require("fs"), os=require("os"), path=require("path"); const p=path.join(os.homedir(), ".openclaw/settings/tts.json"); let j={}; try{j=JSON.parse(fs.readFileSync(p,"utf8"))}catch{}; j.tts={...(j.tts||{}), auto:"inbound"}; delete j.tts.enabled; fs.mkdirSync(path.dirname(p),{recursive:true}); fs.writeFileSync(p, JSON.stringify(j,null,2)); console.log(fs.readFileSync(p,"utf8"));'

Then paste what it prints. This should restore: voice reply only after voice input.

compact totem
#
node -e 'const fs=require("fs"), os=require("os"), path=require("path"); const p=path.join(os.homedir(), ".openclaw/settings/tts.json"); let j={}; try{j=JSON.parse(fs.readFileSync(p,"utf8"))}catch{}; j.tts={...(j.tts||{}), auto:"inbound"}; delete j.tts.enabled; fs.mkdirSync(path.dirname(p),{recursive:true}); fs.writeFileSync(p, JSON.stringify(j,null,2)); console.log(fs.readFileSync(p,"utf8"));'                                                                             {                                                                                                                                                                       "tts": {                                                                                                                                                                "maxLength": 4096,                                                                                                                                                    "auto": "inbound"                                                                                                                                                   }   
obtuse badgeBOT
#

Nice — that set it to:

"auto": "inbound"

That’s the mode you wanted.

Step 4: In Miko’s Discord chat, run:

/tts status

Expected result should now say:

#
State: ✅ enabled

Then test with one normal text message. She should reply with text only.

Paste the /tts status result if it doesn’t match.

compact totem
#
State: ✅ enabled
Chat override: default
Provider: elevenlabs (✅ configured)
Persona: none
Text limit: 4096 chars
Auto-summary: on

Last attempt (828s ago): ✅
Text: 54 chars
Provider: elevenlabs
Attempt details: elevenlabs:success(ok) 1189ms
Latency: 1189ms
obtuse badgeBOT
#

Good — TTS is enabled again, and because we set auto: "inbound", it should only generate voice after voice/audio input.

Step 5: Send Miko one normal text message, like:

Hi Miko, test text only

Expected: text reply only, no voice/audio attachment.

Tell me whether it sends voice or not, then we’ll do the next step for the double typing/slow issue.

compact totem
#

Yeah, getting text now and also voice when I'm also sending something in vc

Now move into the next issue

obtuse badgeBOT
#

Great, TTS part is fixed ✅

For the double typing/slow issue: first I want to separate visual typing refresh from an actual double run.

Discord typing indicators expire and OpenClaw may refresh them, so “Typing… stop… Typing…” can be normal if the reply takes long. But if Miko is processing the same message twice, logs will show it.

Step 6: In WSL, send Miko one simple text message, then immediately run:

openclaw logs --tail 120

Paste only the part around that test message. I’m looking for whether the same inbound Discord message starts one run or two.

compact totem
#
openclaw logs --tail 120                                                                                                                      error: unknown option '--tail'

obtuse badgeBOT
#

My bad — wrong flag. It’s --limit, not --tail.

Step 6 retry: Send Miko one short test message, then run:

openclaw logs --limit 120 --plain

Paste the part around that test message. We’re checking if Discord starts one inbound run or two.

Docs: https://docs.openclaw.ai/cli/logs

compact totem
#
2026-04-27T18:15:09.178Z info cron {"module":"cron","storePath":"/home/wrakeeb/.openclaw/cron/jobs.json"} {"enabled":true,"jobs":14,"nextWakeAtMs":1777334400000} cron: started   2026-04-27T18:15:10.113Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} [default] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.                                            2026-04-27T18:15:10.115Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} [default] starting provider (@Miko)                                  2026-04-27T18:15:10.452Z info gateway/channels/telegram {"subsystem":"gateway/channels/telegram"} [default] starting provider (@Claw_Miko_by_Wrakeeb_Bot)                                                                                               2026-04-27T18:15:10.675Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord channels resolved: 1495157727146545194 (guild:Ra Kib's Workspace; aliases:guild:1495157727146545194), 1396404029680128001 (guild:BS Top Dawgs 🔗; aliases:guild:1396404029680128001)                                                discord channels unresolved: guild:1456350064065904867 (guildId:1456350064065904867)                                                              2026-04-27T18:15:10.678Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord channel users resolved: 1302991150763999302                             2026-04-27T18:15:12.722Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord client initialized as 1495620344759718029 (Miko); awaiting gateway readiness                                                                    2026-04-27T18:49:56.592Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway websocket closed: 1000                                                                                                         2026-04-27T18:49:56.594Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway reconnect scheduled in 885ms (close, resume=true)                                                                             2026-04-27T18:50:56.111Z error gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway error: Error: socket hang up                                                                                                           2026-04-27T18:50:56.113Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway websocket closed: 1006                                                                                                         2026-04-27T18:50:56.113Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway reconnect scheduled in 2165ms (close, resume=true)                                                                             2026-04-27T19:06:09.901Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway websocket closed: 1006                                                                                                         2026-04-27T19:06:09.903Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway reconnect scheduled in 1113ms (close, resume=true)    2026-04-27T19:10:18.385Z info Dashboard URL: http://127.0.0.1:18789/                 2026-04-27T19:10:18.401Z info Token auto-auth included in browser/clipboard URL.                                                               2026-04-27T19:10:18.710Z info Copied to clipboard.                                        2026-04-27T19:10:18.898Z info No GUI detected. Open from your computer:                                                                           ssh -N -L 18789:127.0.0.1:18789 wrakeeb@<host>   

Sending in two parts

obtuse badgeBOT
#

Got it. This first part only shows startup/reconnects, not the test message yet.

One thing I do see: Discord gateway had a few reconnects (1006 socket hang up). That can cause weird “typing stopped/started” behavior, but let’s not jump yet.

Send the second part when ready — ideally the lines around the exact test message time, after 19:27 UTC.

compact totem
#

End parts:

 2026-04-27T19:20:24.113Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 111ms conn=433310c9…1d57 id=ff43e77d…4b5b                                                                                                                     2026-04-27T19:20:24.115Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 149ms conn=433310c9…1d57 id=f6b55888…e582                                                                                                                      2026-04-27T19:20:24.119Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 118ms conn=433310c9…1d57 id=2350b9d9…c204                                                                                                                       2026-04-27T19:21:39.773Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 101ms conn=433310c9…1d57 id=fb28727c…72b2                                                                                                                         2026-04-27T19:22:13.331Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 64ms conn=433310c9…1d57 id=49b5648d…ca3b                                                                                                                          2026-04-27T19:22:13.591Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ config.get 321ms conn=433310c9…1d57 id=f522637e…867a                                                                                                                        2026-04-27T19:22:50.809Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 75ms conn=433310c9…1d57 id=32a80573…c868                                                                                                                          2026-04-27T19:23:19.744Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 73ms conn=433310c9…1d57 id=2802d55c…07cb                                                                                                                          2026-04-27T19:24:19.965Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ commands.list 157ms conn=433310c9…1d57 id=a5505888…406c                                                                                                                     2026-04-27T19:24:19.966Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ chat.history 217ms conn=433310c9…1d57 id=dc1e4fe6…9e0e                                                                                                                      2026-04-27T19:24:19.972Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ models.list 164ms conn=433310c9…1d57 id=a8bf4d9c…2523                                                                                                                       2026-04-27T19:25:17.140Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 65ms conn=433310c9…1d57 id=d0d5c1d7…1dd9                                                                                                                          2026-04-27T19:25:38.107Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 66ms conn=433310c9…1d57 id=72c9435b…d04c                                                                                                                          2026-04-27T19:27:03.371Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway websocket closed: 1006                                                                                                         2026-04-27T19:27:03.372Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord gateway: Gateway reconnect scheduled in 1059ms (close, resume=true)                                                                             2026-04-27T19:27:34.462Z info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ node.list 62ms conn=433310c9…1d57 id=0b2e3467…f503 

obtuse badgeBOT
#

This log still doesn’t show a double run. What it does show is important:

19:27:03 discord gateway: Gateway websocket closed: 1006

That happened right around your test. So the “typing… stop… typing” may be Discord reconnecting / losing the typing indicator, not Miko doing two tasks.

Step 7: Restart the gateway cleanly:

openclaw gateway restart

Then wait ~30 seconds and send Miko one short text test.

Tell me: after restart, do you still see Typing → stop → Typing, or is it smoother?

compact totem
#

It's happening in both places. In every replies. It was fast before, now it's double slow

obtuse badgeBOT
#

Got it — if it’s happening in both places, then we should stop blaming Discord reconnects. This is probably a global queue/debounce/typing config or model/runtime latency.

Step 8: Run this read-only check in WSL:

printf '\nmessages.queue = '; openclaw config get messages.queue --json 2>/dev/null || echo '<unset>'
printf '\nmessages.inbound = '; openclaw config get messages.inbound --json 2>/dev/null || echo '<unset>'
printf '\nsession.typingMode = '; openclaw config get session.typingMode 2>/dev/null || echo '<unset>'
printf '\nsession.typingIntervalSeconds = '; openclaw config get session.typingIntervalSeconds 2>/dev/null || echo '<unset>'

Paste the output. I’m checking whether a debounce/queue setting is adding delay before every reply.

compact totem
#
printf '\nmessages.queue = '; openclaw config get messages.queue --json 2>/dev/null || echo '<unset>'                                                                                                                           printf '\nmessages.inbound = '; openclaw config get messages.inbound --json 2>/dev/null || echo '<unset>'                                                                                                                                               printf '\nsession.typingMode = '; openclaw config get session.typingMode 2>/dev/null || echo '<unset>'                                                                                                                                                  printf '\nsession.typingIntervalSeconds = '; openclaw config get session.typingIntervalSeconds 2>/dev/null || echo '<unset>'                                                                                                                                                                                                                                                                                                                                                                                    messages.queue = <unset>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        messages.inbound = <unset>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      session.typingMode =                                                                                                                                                                                                                                    🦞 OpenClaw 2026.4.25 (aa36ee6) — I'll do the boring stuff while you dramatically stare at the logs like it's cinema.                                                                                                                                                                                                                                                                                                                                                                                           <unset>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         session.typingIntervalSeconds =                                                                                                                                                                                                                         🦞 OpenClaw 2026.4.25 (aa36ee6) — I'm the assistant your terminal demanded, not the one your sleep schedule requested.

obtuse badgeBOT
#

Good, that rules out queue/debounce. messages.queue and messages.inbound are unset, so nothing obvious is intentionally delaying every reply.

The suspicious part is your earlier /status:

Think: medium

That can absolutely make replies feel “double slow”; the typing indicator refreshes while the model is still thinking.

Step 9: In Miko’s chat, run:

/think off

Then send one short test message.

#

Tell me if it becomes fast again. If yes, next step we’ll make that the default so it applies everywhere.

compact totem
#

Fk it. Seems like the .25 update issue. How to roll back to .23?

obtuse badgeBOT
#

Yeah, fair. Roll back to .23.

I verified openclaw@2026.4.23 is published.

Run in WSL:

openclaw gateway stop
pnpm add -g openclaw@2026.4.23
openclaw --version
openclaw doctor
openclaw gateway restart

If gateway restart refuses because config was touched by newer .25, run this one time:

compact totem
#

Still showing

openclaw --version                                                                                          openclaw status                                                                                                                     OpenClaw 2026.4.25 (aa36ee6) 

obtuse badgeBOT
#

That means the active openclaw binary on your PATH did not change. Likely .23 installed somewhere else, but your shell is still using the .25 install.

Step 1: Find which install is active. Run:

which -a openclaw

Paste the output. Then I’ll give the exact rollback command for the path you’re actually using.

compact totem
#
which -a openclaw                                                                                           /home/wrakeeb/.npm-global/bin/openclaw 
obtuse badgeBOT
#

That path is the clue: your active binary is in:

/home/wrakeeb/.npm-global/bin/openclaw

So the downgrade didn’t replace that install.

Next step: run this and paste the output:

ls -l /home/wrakeeb/.npm-global/bin/openclaw
readlink -f /home/wrakeeb/.npm-global/bin/openclaw
pnpm config get global-bin-dir
pnpm config get prefix
#

Then I’ll give the exact command to overwrite the active .25 with .23.

compact totem
#
ls -l /home/wrakeeb/.npm-global/bin/openclaw                                                                                                                       readlink -f /home/wrakeeb/.npm-global/bin/openclaw                                                                                                                                         pnpm config get global-bin-dir                                                                                                                                                             pnpm config get prefix                                                                                                                                                                     lrwxrwxrwx 1 wrakeeb wrakeeb 41 Apr 27 22:25 /home/wrakeeb/.npm-global/bin/openclaw -> ../lib/node_modules/openclaw/openclaw.mjs                                                           /home/wrakeeb/.npm-global/lib/node_modules/openclaw/openclaw.mjs                                                                                                                           Command 'pnpm' not found, did you mean:                                                                                                                                                      command 'npm' from deb npm (9.2.0~ds1-2)                                                                                                                                                 Try: sudo apt install <deb name>                                                                                                                                                           Command 'pnpm' not found, did you mean:                                                                                                                                                      command 'npm' from deb npm (9.2.0~ds1-2)                                                                                                                                                 Try: sudo apt install <deb name> 

obtuse badgeBOT
#

Yep — pnpm isn’t installed there, so nothing got downgraded. Use npm, and force the exact prefix your active openclaw uses.

Run this:

openclaw gateway stop
npm install -g --prefix /home/wrakeeb/.npm-global openclaw@2026.4.23
hash -r
openclaw --version

Expected:

OpenClaw 2026.4.23
#

Paste the output after that, then we’ll restart safely.

compact totem
#
openclaw gateway stop                                                                                                                                              npm install -g --prefix /home/wrakeeb/.npm-global openclaw@2026.4.23                                                                                                                       hash -r                                                                                                                                                                                    openclaw --version                                                                                                                                                                                                                                                                                                                                                                    🦞 OpenClaw 2026.4.25 (aa36ee6) — Built by lobsters, for humans. Don't question the hierarchy.                                                                                                                                                                                                                                                                                        Stopped systemd service: openclaw-gateway.service                                                                                                                                          npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead                                                                                                                                                                                                                                                                                          added 42 packages, removed 9 packages, and changed 425 packages in 1m                                                                                                                                                                                                                                                                                                                 85 packages are looking for funding                                                                                                                                                          run `npm fund` for details                                                                                                                                                               OpenClaw 2026.4.23 (a979721) 
obtuse badgeBOT
#

Good — CLI is now on 2026.4.23

Next step: start the gateway with the downgraded binary:

OPENCLAW_ALLOW_OLDER_BINARY_DESTRUCTIVE_ACTIONS=1 openclaw gateway restart

Then verify:

openclaw gateway status
openclaw status

Paste the version/status if it still shows .25 anywhere.

compact totem
#
[200~OPENCLAW_ALLOW_OLDER_BINARY_DESTRUCTIVE_ACTIONS=1 openclaw gateway restart~                                                                                   [200~OPENCLAW_ALLOW_OLDER_BINARY_DESTRUCTIVE_ACTIONS=1: command not found
obtuse badgeBOT
#

That [200~ ... ~ is a paste artifact from bracketed paste mode. The shell tried to run it as part of the command.

Type this manually, don’t paste it if your terminal keeps adding [200~:

env OPENCLAW_ALLOW_OLDER_BINARY_DESTRUCTIVE_ACTIONS=1 openclaw gateway restart

If you still paste, make sure the command starts exactly with env, not [200~env.

compact totem
#
 env OPENCLAW_ALLOW_OLDER_BINARY_DESTRUCTIVE_ACTIONS=1 openclaw gateway restart                                                                                     Config was last written by a newer OpenClaw (2026.4.25); current version is 2026.4.23.                                                                                                                                                                                                                                                                                                🦞 OpenClaw 2026.4.23 (a979721) — Shell yeah—I'm here to pinch the toil and leave you the glory.                                                                                                                                                                                                                                                                                      Config was last written by a newer OpenClaw (2026.4.25); current version is 2026.4.23.                                                                                                     Config was last written by a newer OpenClaw (2026.4.25); current version is 2026.4.23.                                                                                                     Config was last written by a newer OpenClaw (2026.4.25); current version is 2026.4.23.                                                                                                     Restarted systemd service: openclaw-gateway.service 
obtuse badgeBOT
#

Good — gateway restarted on the downgraded install.

Final verify step: run:

openclaw --version
openclaw gateway status
openclaw status

If those show 2026.4.23, then test Miko again.

Also: if .23 works better, please file this as a GitHub issue with “2026.4.25 regression: double typing / slower replies after update” and include WSL 2 + the logs. Maintainers need that repro: https://github.com/openclaw/openclaw/issues

compact totem
#

It's faster now. The issue was 25

obtuse badgeBOT
#

Nice, glad we pinned it down. So yes: 2026.4.25 regression, rollback to 2026.4.23 fixed the slowdown/double typing.

Please file this so it can get fixed upstream:

https://github.com/openclaw/openclaw/issues

Include:

  • OpenClaw 2026.4.25 (aa36ee6) was slow / double typing
  • WSL 2
  • Discord + voice/TTS behavior changed
  • Rollback to 2026.4.23 (a979721) fixed it

And stay on .23 for now.

compact totem
#

Thank you Krill

obtuse badgeBOT
#

Happy to help! 🦐 Glad we got Miko back to normal.