#help me with logs
1 messages Β· Page 1 of 1 (latest)
Apr 17 04:51:20 Total-Hardware node[2354247]: 2026-04-17T04:51:20.533-07:00 [health-monitor] [discord:forge] health-monitor: restarting (reason: stale-socket)
Apr 17 04:51:20 Total-Hardware node[2354247]: 2026-04-17T04:51:20.544-07:00 [discord] [forge] delaying provider startup 10s to reduce
Discord startup rate limits
Apr 17 04:51:20 Total-Hardware node[2354247]: 2026-04-17T04:51:20.552-07:00 [health-monitor] [discord:total] health-monitor: restarting (reason: stale-socket)
Apr 17 04:51:20 Total-Hardware node[2354247]: 2026-04-17T04:51:20.560-07:00 [discord] [total] delaying provider startup 30s to reduce Discord startup rate limits
Apr 17 04:51:30 Total-Hardware node[2354247]: 2026-04-17T04:51:30.848-07:00 [discord] [forge] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
Apr 17 04:51:30 Total-Hardware node[2354247]: 2026-04-17T04:51:30.849-07:00 [discord] [forge] starting provider (@Forge)
Apr 17 04:51:31 Total-Hardware node[2354247]: 2026-04-17T04:51:31.009-07:00 [discord] channels resolved: 1478615231188963561 (guild:Total; aliases:guild:1478615231188963561)
Apr 17 04:51:33 Total-Hardware node[2354247]: 2026-04-17T04:51:33.829-07:00 [discord] 254 commands exceeds limit; removing per-skill commands and keeping /skill.
Apr 17 04:51:33 Total-Hardware node[2354247]: 2026-04-17T04:51:33.833-07:00 [discord] truncating native command description (command:lossless) from 121 to 100: "Show Lossless Claw health, scan broken summaries, inspect high-confidence junk candidates, and run scoped doctor actions."
Apr 17 04:51:34 Total-Hardware node[2354247]: 2026-04-17T04:51:34.289-07:00 [discord] client initialized as 1478650959444840468 (Forge); awaiting gateway readiness
Apr 17 04:51:50 Total-Hardware node[2354247]: 2026-04-17T04:51:50.911-07:00 [discord] [total] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
Apr 17 04:51:50 Total-Hardware node[2354247]: 2026-04-17T04:51:50.912-07:00 [discord] [total]
starting provider (@Total)
Apr 17 04:51:51 Total-Hardware node[2354247]: 2026-04-17T04:51:51.083-07:00 [discord] channels resolved: 1478615231188963561 (guild:Total; aliases:guild:1478615231188963561)
Apr 17 04:51:53 Total-Hardware node[2354247]: 2026-04-17T04:51:53.816-07:00 [discord] 254 commands exceeds limit; removing per-skill commands and keeping /skill.
Apr 17 04:51:53 Total-Hardware node[2354247]: 2026-04-17T04:51:53.818-07:00 [discord] truncating native command description (command:lossless) from 121 to 100: "Show Lossless Claw health, scan broken summaries, inspect high-confidence junk candidates, and run scoped doctor actions."
Apr 17 04:51:54 Total-Hardware node[2354247]: 2026-04-17T04:51:54.251-07:00 [discord] client initialized as 1478613085404008548 (Total); awaiting gateway readiness
Apr 17 04:56:20 Total-Hardware node[2354247]: 2026-04-17T04:56:20.529-07:00 [health-monitor] [discord:cipher] health-monitor: restarting (reason: stale-socket)
Apr 17 04:56:20 Total-Hardware node[2354247]: 2026-04-17T04:56:20.556-07:00 [health-monitor] [discord:rush] health-monitor: restarting (reason: stale-socket)
Apr 17 04:56:20 Total-Hardware node[2354247]: 2026-04-17T04:56:20.564-07:00 [discord] [rush] delaying provider startup 20s to reduce Discord startup rate limits
Apr 17 04:56:20 Total-Hardware node[2354247]: 2026-04-17T04:56:20.912-07:00 [discord] [cipher] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
Apr 17 04:56:20 Total-Hardware node[2354247]: 2026-04-17T04:56:20.913-07:00 [discord] [cipher] starting provider (@Cipher)
Apr 17 04:56:21 Total-Hardware node[2354247]: 2026-04-17T04:56:21.072-07:00 [discord] channels resolved: 1478615231188963561 (guild:Total; aliases:guild:1478615231188963561)
Yep, send them over.
If you can, paste each part in code blocks like this so formatting survives. When youβre done, say im done, and Iβll go through the whole thing. If you know the app/version and OS, include that too.
Got it, keep going. So far this looks like a Discord provider restart after a stale socket, not the actual crash yet.
Got it. This chunk still looks like startup/reconnect noise, plus Discord command-limit warnings, not a fatal crash by itself. Send the next part.
Apr 17 04:56:23 Total-Hardware node[2354247]: 2026-04-17T04:56:23.872-07:00 [discord] 254 commands exceeds limit; removing per-skill commands and keeping /skill.
Apr 17 04:56:23 Total-Hardware node[2354247]: 2026-04-17T04:56:23.876-07:00 [discord] truncating native command description (command:lossless) from 121 to 100: "Show Lossless Claw health, scan broken summaries, inspect high-confidence junk candidates, and run scoped doctor actions."
Apr 17 04:56:24 Total-Hardware node[2354247]: 2026-04-17T04:56:24.289-07:00 [discord] client initialized as 1487514878918004866 (Cipher); awaiting gateway readiness
Apr 17 04:56:40 Total-Hardware node[2354247]: 2026-04-17T04:56:40.908-07:00 [discord] [rush] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
Apr 17 04:56:40 Total-Hardware node[2354247]: 2026-04-17T04:56:40.909-07:00 [discord] [rush] starting provider (@Rush)
Apr 17 04:56:42 Total-Hardware node[2354247]: 2026-04-17T04:56:42.539-07:00 [discord] channels resolved: 1478615231188963561 (guild:Total; aliases:guild:1478615231188963561)
Apr 17 04:56:45 Total-Hardware node[2354247]: 2026-04-17T04:56:45.151-07:00 [discord] 254 commands exceeds limit; removing per-skill commands and keeping /skill.
Apr 17 04:56:45 Total-Hardware node[2354247]: 2026-04-17T04:56:45.153-07:00 [discord] truncating native command description (command:lossless) from 121 to 100: "Show Lossless Claw health, scan broken summaries, inspect high-confidence junk candidates, and run scoped doctor actions."
Apr 17 04:56:46 Total-Hardware node[2354247]: 2026-04-17T04:56:46.696-07:00 [discord] client initialized as 1478868105408155751 (Rush); awaiting gateway readiness
Apr 17 04:56:51 Total-Hardware node[2354247]: 2026-04-17T04:56:51.986-07:00 [heartbeat] using explicit accountId
Apr 17 04:57:04 Total-Hardware node[2354247]: 2026-04-17T04:57:04.529-07:00 <--- Last few GCs --->
Apr 17 04:57:04 Total-Hardware node[2354247]: 2026-04-17T04:57:04.535-07:00 [2354247:0x5d309ae8d000] 85259287 ms: Scavenge (during sweeping) 1961.4 (1983.0) -> 1960.0 (1982.7) MB, pooled: 0.0 MB, 1.83 / 0.00 ms (average mu = 0.368, current mu = 0.375) allocation failure;
Apr 17 04:57:04 Total-Hardware node[2354247]: 2026-04-17T04:57:04.577-07:00 [2354247:0x5d309ae8d000] 85259829 ms: Mark-Compact 2032.8 (2055.3) -> 1952.6 (1978.4) MB, pooled: 0.5 MB, 485.71 / 0.02 ms (average mu = 0.262, current mu = 0.130) allocation failure; scavenge might not succeed
Apr 17 04:57:04 Total-Hardware node[2354247]: 2026-04-17T04:57:04.580-07:00 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Apr 17 04:57:04 Total-Hardware node[2354247]: 2026-04-17T04:57:04.580-07:00 ----- Native stack trace -----
Apr 17 04:57:04 Total-Hardware node[2354247]: 2026-04-17T04:57:04.580-07:00 1: 0x75290e3f8bc5 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/home/linuxbrew/.linuxbrew/Cellar/node/25.6.1/bin/../lib/libnode.so.141]
Apr 17 04:57:06 Total-Hardware systemd[1760]: openclaw-gateway.service: Main process exited, code=dumped, status=6/ABRT
Apr 17 04:57:06 Total-Hardware systemd[1760]: openclaw-gateway.service: Failed with result 'core-dump'.
Apr 17 04:57:06 Total-Hardware systemd[1760]: openclaw-gateway.service: Consumed 5h 24min 24.866s CPU time.
Apr 17 04:57:11 Total-Hardware systemd[1760]: openclaw-gateway.service: Scheduled restart job, restart counter is at 2.
Apr 17 04:57:11 Total-Hardware systemd[1760]: Started openclaw-gateway.service - OpenClaw Gateway (v2026.4.12).
Apr 17 04:57:15 Total-Hardware node[2514621]: 2026-04-17T04:57:15.622-07:00 [gateway] loading configurationβ¦
Apr 17 04:57:15 Total-Hardware node[2514621]: 2026-04-17T04:57:15.710-07:00 [gateway] resolving authenticationβ¦
Apr 17 04:57:15 Total-Hardware node[2514621]: 2026-04-17T04:57:15.733-07:00 [gateway] starting...
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.382-07:00 [warn] subagent cleanup finalize failed (7fed03b4-6836-49d3-ad29-2162173c7433): Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/totaluser/.npm-global/lib/node_modules/openclaw/dist/subagent-registry.runtime.js' imported from /home/totaluser/.npm-global/lib/node_modules/openclaw/dist/subagent-registry-CflSFWBm.js
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.387-07:00 [warn] subagent cleanup finalize failed (542b7022-4ebf-47ac-8b7b-005b97cf2a55): Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/totaluser/.npm-global/lib/node_modules/openclaw/dist/subagent-registry.runtime.js' imported from /home/totaluser/.npm-global/lib/node_modules/openclaw/dist/subagent-registry-CflSFWBm.js
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.419-07:00 [gateway] starting HTTP server...
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.422-07:00 [canvas] host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/totaluser/.openclaw/canvas)
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.584-07:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.703-07:00 [gateway] agent model: minimax-portal/MiniMax-M2.7
Apr 17 04:57:24 Total-Hardware node[2514621]: 2026-04-17T04:57:24.705-07:00 [gateway] ready (4 plugins: active-memory, discord, lossless-claw, telegram; 9.0s)
Got it. Same pattern so far, lots of Discord reconnect/restart chatter, but Iβm still not seeing the actual crash line yet. Keep sending.
im done
Ah, here we go, this is finally near the real failure.
<--- Last few GCs ---> usually means Node is about to print a garbage-collection / out-of-memory crash. Send the next chunk, especially whatever comes right after that line.
Yep, confirmed. This is a Node.js heap out-of-memory crash:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
So the process wasnβt killed by Discord, it ran out of JS heap, aborted, then systemd restarted it.
If you have more, send the parts right before the memory spike or anything mentioning a big scan/import/index/job. Thatβs usually the useful bit.
Got it. This adds a second issue after restart:
- Crash cause: JS heap OOM
- Separate warning on restart: missing file
dist/subagent-registry.runtime.js
That missing-module warning may point to a broken/incomplete OpenClaw install, but itβs probably not the line that caused the OOM crash itself.
If youβve got more, keep sending. If that was the last chunk, say im done.
Let me verify the local docs path, then Iβll pin down what these logs mean.
Hereβs the read on it:
-
The actual crash is a Node heap OOM
FATAL ERROR: ... JavaScript heap out of memory- it was sitting around ~2 GB heap
- then
systemdrestarted the gateway
-
The Discord lines before that are mostly noise
- stale-socket restarts
- startup delays to avoid rate limits
- command-count warnings
Those donβt look like the fatal event.
-
Thereβs also a second, separate problem after restart
Cannot find module ... dist/subagent-registry.runtime.js- that looks like a broken/stale install or packaging mismatch
- I checked local docs/changelog, and there are newer fixes for this exact
subagent-registry.runtimemissing-file issue after older builds
What Iβd do next:
- paste
openclaw --version - paste
openclaw status --all - run
openclaw doctor
Docs:
- https://docs.openclaw.ai/help/faq
- https://docs.openclaw.ai/help/troubleshooting
- https://docs.openclaw.ai/gateway/troubleshooting
My current best guess is:
- primary failure: memory growth / heap exhaustion in the running gateway
- secondary issue: your installed OpenClaw build is likely a bit busted or outdated, because that missing
subagent-registry.runtime.jswarning matches a known class of packaging fixes
If you paste openclaw --version and openclaw status --all, I can narrow down whether this is mostly βneeds update/reinstallβ or βthereβs a specific feature/job leaking memory.β
multiple parts for status wait until im done
totaluser@Total-Hardware:~$ openclaw status --all
π¦ OpenClaw 2026.4.12 (1c0672b)
I'll refactor your busywork like it owes me money.
β
OpenClaw status --all
Overview
βββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Item β Value β
βββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Version β 2026.4.12 β
β OS β linux 6.17.0-19-generic (x64) β
β Node β 25.6.1 β
β Config β ~/.openclaw/openclaw.json β
β Dashboard β http://127.0.0.1:18789/ β
β Tailscale β serve Β· unknown Β· total-hardware.tailb8cdb0.ts.net Β· β
β β https://total-hardware.tailb8cdb0.ts.net β
β Channel β stable (default) β
β Update β pnpm Β· npm update 2026.4.15 β
β Gateway β local Β· ws://127.0.0.1:18789 (local loopback) Β· reachable β
β β 238ms Β· auth token Β· Total-Hardware (192.168.4.98) app β
β β 2026.4.12 linux 6.17.0-19-generic β
β Security β Run: openclaw security audit --deep β
β Gateway self β unknown β
β Gateway service β systemd installed Β· enabled Β· running (pid 2514621, state β
β β active) β
β Node service β systemd not installed β
β Agents β 8 total Β· 1 bootstrapping Β· 6 active Β· 513 sessions β
β Secrets β none β
βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Channels
ββββββββββββ¬ββββββββββ¬βββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββ
β Channel β Enabled β State β Detail β
ββββββββββββΌββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β Discord β ON β OK β token configΓ4 (sha256:68b078bb Β· len 72) Β· β
β β β β accounts 4/5 β
β Telegram β ON β OK β token configΓ2 (sha256:881456bf Β· len 46) Β· β
β β β β accounts 2/2 β
ββββββββββββ΄ββββββββββ΄βββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββ
Got it, Iβll wait for im done. Send the rest.
Discord accounts
ββββββββββββ¬βββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Account β Status β Notes β
ββββββββββββΌβββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β cipher β OK β token:config β
β forge β OK β token:config β
β rush β OK β token:config β
β total β OK β token:config β
ββββββββββββ΄βββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Telegram accounts
ββββββββββββ¬βββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Account β Status β Notes β
ββββββββββββΌβββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β default β OK β token:config Β· allow:* β
β forge β OK β token:config Β· allow:* β
ββββββββββββ΄βββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Agents
βββββββββββββββββββββββ¬βββββββββββββββββ¬βββββββββββ¬βββββββββββ¬ββββββββββββββββββ
β Agent β Bootstrap file β Sessions β Active β Store β
βββββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌβββββββββββΌββββββββββββββββββ€
β main β ABSENT β 96 β 3m ago β ~/.openclaw/ β
β β β β β agents/main/ β
β β β β β sessions/ β
β β β β β sessions.json β
β alfred (Alfred) β ABSENT β 4 β 1m ago β ~/.openclaw/ β
β β β β β agents/alfred/ β
β β β β β sessions/ β
β β β β β sessions.json β
β cipher (Cipher) β ABSENT β 41 β just now β ~/.openclaw/ β
β β β β β agents/cipher/ β
β β β β β sessions/ β
β β β β β sessions.json β
β forge (Forge) β ABSENT β 123 β just now β ~/.openclaw/ β
β β β β β agents/forge/ β
β β β β β sessions/ β
β β β β β sessions.json β
β rush (rush) β PRESENT β 5 β 4m ago β ~/.openclaw/ β
β β β β β agents/rush/ β
β β β β β sessions/ β
β β β β β sessions.json β
β scout (Scout) β ABSENT β 91 β 24m ago β ~/.openclaw/ β
β β β β β agents/scout/ β
β β β β β sessions/ β
β β β β β sessions.json β
β sentinel (sentinel) β ABSENT β
Got it, keep going. The big thing I notice already is 513 sessions plus 1 bootstrapping agent, which could matter for memory pressure, but Iβll wait for the full status dump.
101 β 1m ago β ~/.openclaw/ β
β β β β β agents/ β
β β β β β sentinel/ β
β β β β β sessions/ β
β β β β β sessions.json β
β vital (vital) β ABSENT β 52 β 18m ago β ~/.openclaw/ β
β β β β β agents/vital/ β
β β β β β sessions/ β
β β β β β sessions.json β
βββββββββββββββββββββββ΄βββββββββββββββββ΄βββββββββββ΄βββββββββββ΄ββββββββββββββββββ
Diagnosis (read-only)
Gateway connection details:
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/totaluser/.openclaw/openclaw.json
Bind: loopback
β Config: /home/totaluser/.openclaw/openclaw.json
β Secret diagnostics (0)
β Restart sentinel: none
! Port 18789
Port 18789 is already in use.
- pid 2514621 totaluser: openclaw-gateway (127.0.0.1:18789)
- Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
! Tailscale: serve Β· unknown Β· total-hardware.tailb8cdb0.ts.net
https: https://total-hardware.tailb8cdb0.ts.net
β Skills: 211 eligible Β· 0 missing Β· /home/totaluser/.openclaw/workspace
β Plugin compatibility (none)
β Channel issues (none)
Pasteable debug report. Auth tokens redacted.
Troubleshooting: https://docs.openclaw.ai/troubleshooting
β
totaluser@Total-Hardware:~$
im done
Got it, keep sending.
Got it, keep going. The session counts are definitely getting interesting.
This helps a lot.
My read now:
- Primary failure is still the same: the gateway hit Node heap OOM and crashed.
- Youβre on
2026.4.12, and status already shows2026.4.15available. - The missing
subagent-registry.runtime.jswarning matters more now. I checked local changelog/source, and there are newer fixes for that exact missing-runtime packaging problem after older builds. 513 sessionsacross8 agentsis a lot of state to carry around, and you also have 1 bootstrapping agent.rushshows Bootstrap file: PRESENT. That stands out, because a leftoverBOOTSTRAP.mdcan keep an agent stuck bootstrapping.
A few things in the status are not the problem:
Port 18789 is already in useis expected, your gateway is running.- the Discord account table looks fine.
- Tailscale
unknowndoesnβt explain the OOM.
What Iβd do next
- Run
openclaw doctor - Update OpenClaw off
2026.4.12first, because the missingsubagent-registry.runtime.jswarning looks like a real known packaging/runtime fix area - Check the
rushagent workspace and see whether that bootstrap file is intentional - If it crashes again after update, grab:
openclaw logs --follow- the 1 to 2 minutes before the OOM line
My best guess, in order
- Outdated/broken install causing the
subagent-registry.runtime.jswarning - Memory pressure from lots of session state (
513 sessions) - Possibly a stuck bootstrapping agent making things worse
Docs:
If you want, paste the openclaw doctor output next and Iβll keep narrowing it down.
ok side topic. ive seen a vi9deo where someone got their openclaw to call them and talked to them with a live talking mode. how can i get a live talking mode on openclaw. right now my system is running on a linux vm that i talk to through telegram.
Iβm going to check the docs so I donβt hand-wave this.
Short version, there are 3 different things people mean by βlive talking modeβ:
-
Telegram voice notes in and voice replies out
- easiest with your current setup
- not truly live, but close enough for many people
-
Actual phone calls
- OpenClaw literally calls your phone
- this is the voice-call plugin
-
Continuous live Talk Mode
- more like a voice assistant loop
- this is on supported client surfaces, not plain Telegram chat
For your setup, the easiest path is:
Option A, easiest: Telegram voice-note mode
You can already get pretty close by:
- sending voice notes to OpenClaw
- letting it transcribe inbound audio
- turning on TTS voice replies
Docs:
Useful command:
/tts on
Best config style for Telegram is usually:
messages.tts.auto: "inbound"if you only want voice replies after you send a voice note- or
messages.tts.auto: "always"if you want lots of audio back
That gives you a voice-ish workflow, but itβs still message-based, not live duplex.
If you want it to literally call your phone
Use the Voice Call plugin:
- install:
openclaw plugins install @openclaw/voice-call - configure
plugins.entries["voice-call"].config - use Twilio, Telnyx, or Plivo
- expose a public webhook from your VM
Docs:
Important bit: because your gateway is on a Linux VM, this can work fine, but the webhook must be publicly reachable.
If you want true continuous βtalk modeβ
Thatβs Talk Mode, which is the ongoing listen β think β speak loop.
Docs:
But from the docs, thatβs tied to supported client surfaces, not βTelegram on a Linux VMβ by itself. So if the video showed a really fluid back-and-forth voice assistant, it was probably:
- a phone call via voice-call, or
- a Talk Mode client, not just Telegram.
My recommendation
For you, Iβd pick one of these:
- Fastest: Telegram voice notes +
/tts on - Coolest: voice-call plugin so OpenClaw can call your phone
- Most assistant-like: Talk Mode on a supported client, with the VM just acting as the gateway/backend
If you want, I can help you choose the best one and walk you through the setup.
what are talk mode supported clients?
Let me verify the supported surfaces so I donβt miss one.
From the docs, the Talk-mode-ish clients are:
-
macOS app: full Talk Mode, with the proper listen β think β speak loop and overlay
https://docs.openclaw.ai/nodes/talk
https://docs.openclaw.ai/platforms/macos -
iOS app: docs say it exposes Talk mode and Voice wake, but itβs internal preview / not publicly distributed
https://docs.openclaw.ai/platforms/ios -
Android app: partial voice support, not the same full Talk Mode UX
- has a Voice tab with manual mic capture + playback
- voice wake is off
- talk-mode toggles are currently removed
https://docs.openclaw.ai/platforms/android
So in plain English:
- Best supported Talk Mode client right now: macOS
- iOS: exists, but basically not publicly available
- Android: voice flow exists, but itβs more manual than true full Talk Mode
- Telegram: not a Talk Mode client
- your Linux VM: backend/gateway, not the voice UI itself
If you want, I can tell you the best realistic option for your setup specifically:
- Telegram voice notes,
- phone-call plugin,
- macOS Talk Mode.
whats the phone call plugin?
Itβs the Voice Call plugin for OpenClaw:
- package:
@openclaw/voice-call - docs: https://docs.openclaw.ai/plugins/voice-call
- CLI docs: https://docs.openclaw.ai/cli/voicecall
What it does:
- lets OpenClaw call a real phone number
- supports outbound calls and multi-turn conversations
- can use Twilio, Telnyx, or Plivo
- can do live call audio streaming/transcription
Important bits:
- it runs inside your Gateway
- your gateway needs a publicly reachable webhook for the call provider
- itβs different from Telegram voice notes and different from Talk Mode
Basic install:
openclaw plugins install @openclaw/voice-call
Then you configure:
plugins.entries["voice-call"].config
If you want, I can give you the smallest working mental model for setting it up on your Linux VM.
ok i downlaoded the plugin now what
totaluser@Total-Hardware:~$ openclaw plugins install @openclaw/voice-call
π¦ OpenClaw 2026.4.12 (1c0672b) β Hot reload for config, cold sweat for deploys.
Resolving clawhub:@openclaw/voice-callβ¦
Downloading @openclaw/voice-callβ¦
Extracting /tmp/openclaw-npm-pack-QE7iav/openclaw-voice-call-2026.3.13.tgzβ¦
WARNING: Plugin "voice-call" contains dangerous code patterns: Shell command execution detected (child_process) (/tmp/openclaw-plugin-BaaIlj/extract/package/src/tunnel.ts:62); Environment variable access combined with network send β possible credential harvesting (/tmp/openclaw-plugin-BaaIlj/extract/package/src/webhook.ts:92); Shell command execution detected (child_process) (/tmp/openclaw-plugin-BaaIlj/extract/package/src/webhook/tailscale.ts:14); Environment variable access combined with network send β possible credential harvesting (/tmp/openclaw-plugin-BaaIlj/extract/package/src/providers/tts-openai.ts:87)
Downloading @openclaw/voice-callβ¦
Extracting /tmp/openclaw-hook-pack-mrZW2b/openclaw-voice-call-2026.3.13.tgzβ¦
Plugin "voice-call" installation blocked: dangerous code patterns detected: Shell command execution detected (child_process) (/tmp/openclaw-plugin-BaaIlj/extract/package/src/tunnel.ts:62); Environment variable access combined with network send β possible credential harvesting (/tmp/openclaw-plugin-BaaIlj/extract/package/src/webhook.ts:92); Shell command execution detected (child_process) (/tmp/openclaw-plugin-BaaIlj/extract/package/src/webhook/tailscale.ts:14); Environment variable access combined with network send β possible credential harvesting (/tmp/openclaw-plugin-BaaIlj/extract/package/src/providers/tts-openai.ts:87)
Also not a valid hook pack: Error: package.json missing openclaw.hooks
totaluser@Total-Hardware:~$
this is the download message
Let me pull the exact next steps from the plugin docs so I donβt give you fake config.
Nice. Next you need to do 4 things:
1) Restart the gateway
The plugin loads inside the gateway process.
openclaw gateway restart
2) Configure the plugin
Add a voice-call entry in ~/.openclaw/openclaw.json under:
plugins.entries["voice-call"].enabled = trueplugins.entries["voice-call"].config = { ... }
You need at minimum:
- a provider:
twilio,telnyx, orplivo
- your
fromNumber - provider credentials
- a webhook path/server
- a public URL/exposure method
3) Give it a public webhook
This is the big one.
Phone providers must reach your gateway from the public internet. Since youβre on a Linux VM, you need something like:
- Tailscale Funnel
- or ngrok
- or your own public domain/reverse proxy
Important: Tailscale Serve alone is not enough for Twilio/Telnyx/Plivo if the provider needs a public webhook. Funnel/public URL is the relevant thing.
Thereβs a helper command for this:
openclaw voicecall expose --mode funnel
4) Make sure voice works
For calls, OpenClaw needs:
- TTS so it can speak
- streaming transcription if you want a real back-and-forth conversation
So:
- for a simple one-way βcall me and say somethingβ, TTS is enough
- for actual live conversation, enable
streaming.enabled: true
Then test it
Once configured:
openclaw voicecall call --to "+15555550123" --message "Hello from OpenClaw"
Useful debug commands:
openclaw voicecall tail
openclaw voicecall status --call-id <id>
Shortest path Iβd recommend
If you want the least confusing setup:
- use Twilio
- expose with Tailscale Funnel or ngrok
- configure OpenAI streaming transcription
- configure OpenAI or ElevenLabs TTS
- set outbound mode to conversation
Docs:
- https://docs.openclaw.ai/plugins/voice-call
- https://docs.openclaw.ai/cli/voicecall
- https://docs.openclaw.ai/tools/tts
If you want, I can give you a minimal Twilio config block you can paste into openclaw.json.
Iβm checking the plugin-install docs for the exact trust path here.
That install did not actually succeed.
What happened:
- the plugin was blocked by the security scanner
- the
openclaw.hooksline is basically a side note / not the main blocker - the real blocker is:
dangerous code patterns detected
Why it tripped:
- the voice-call plugin does webhook/network stuff
- it can touch tunnels /
child_process - it uses env-backed credentials for call + TTS providers
So OpenClaw is being conservative here.
Your options
Safer first step
Since youβre on 2026.4.12 and already have an update available, Iβd honestly do the update first and retry.
If you explicitly trust this plugin
The documented break-glass flag is:
openclaw plugins install @openclaw/voice-call --dangerously-force-unsafe-install
Docs:
That flag is real, but it is intentionally named scary for a reason. It tells OpenClaw to continue despite the dangerous-code findings.
My recommendation
Iβd do this order:
- update OpenClaw
- retry normal install
- if it still blocks, decide whether you trust
@openclaw/voice-call - only then use
--dangerously-force-unsafe-install
And once it installs:
openclaw gateway restart
If you want, I can help you with the least sketchy next step from here, either:
- update first, or
- proceed with the break-glass install.
is tailscale funnel free? like how much of this can i do for free
Iβm checking the current Tailscale pricing/docs, because that one changes over time.
Looks like yes, Funnel is currently available on Tailscaleβs free Personal plan.
From Tailscaleβs current docs/pricing:
- Funnel is available for all plans
- Personal = $0
- Personal allows up to 6 users in one tailnet
So the Tailscale exposure part can be free.
The stuff that usually isnβt free is:
- phone provider: Twilio / Telnyx / Plivo
- phone number rental
- call minutes
- often TTS / speech-to-text provider usage too
So in practice: