openclaw voicecall CLI reference for voice-call plugin

This page covers the openclaw voicecall command surface for the voice-call plugin. It is intended for developers who need to manage outbound voice calls, DTMF tones, and spoken messages via CLI.

Read this when

  • You use the voice-call plugin and want every CLI entry point
  • You need flag tables and defaults for setup, smoke, call, continue, speak, dtmf, end, status, tail, latency, expose, and start

openclaw voicecall

The command voicecall comes from a plugin. It becomes available only after the voice-call plugin has been installed and activated.

While the Gateway is active, operational subcommands (call, start, continue, speak, dtmf, end, status) are directed to the voice-call runtime on that Gateway. When no Gateway can be reached, a standalone CLI runtime handles them instead.

Subcommands

openclaw voicecall setup    [--json]
openclaw voicecall smoke    [-t <phone>] [--message <text>] [--mode <m>] [--yes] [--json]
openclaw voicecall call     -m <text> [-t <phone>] [--mode <m>]
openclaw voicecall start    --to <phone> [--message <text>] [--mode <m>]
openclaw voicecall continue --call-id <id> --message <text>
openclaw voicecall speak    --call-id <id> --message <text>
openclaw voicecall dtmf     --call-id <id> --digits <digits>
openclaw voicecall end      --call-id <id>
openclaw voicecall status   [--call-id <id>] [--json]
openclaw voicecall tail     [--file <path>] [--since <n>] [--poll <ms>]
openclaw voicecall latency  [--file <path>] [--last <n>]
openclaw voicecall expose   [--mode <m>] [--path <p>] [--port <port>] [--serve-path <p>]
SubcommandDescription
setupDisplay readiness checks for providers and webhooks.
smokeExecute readiness checks; a live test call is placed only when --yes is used.
callStart an outbound voice call.
startShortcut for call where --to is mandatory and --message is optional.
continueDeliver a spoken message then await the following reply.
speakDeliver a spoken message without waiting for a reply.
dtmfTransmit DTMF tones to a call that is currently active.
endEnd a call that is currently active.
statusReview active calls (or a single one using --call-id).
tailFollow calls.jsonl (helpful when testing providers).
latencyAggregate turn-latency data from calls.jsonl.
exposeSwitch Tailscale serve or funnel on or off for the webhook endpoint.

Setup and smoke

setup

By default, readiness checks are shown in a human-readable format. Supply --json to get output suitable for scripting.

openclaw voicecall setup
openclaw voicecall setup --json

smoke

The same readiness checks are performed. A real phone call is only initiated when both --to and --yes are supplied.

FlagDefaultDescription
-t, --to <phone>(none)The phone number to dial for a live smoke test.
--message <text>OpenClaw voice call smoke test.The message spoken during the smoke call.
--mode <mode>notifyCall mode: either notify or conversation.
--yesfalseTriggers the actual outbound call.
--jsonfalseOutputs machine-readable JSON.
openclaw voicecall smoke
openclaw voicecall smoke --to "+15555550123"        # dry run
openclaw voicecall smoke --to "+15555550123" --yes  # live notify call

Note

When using external providers (plivo, telnyx, twilio), both setup and smoke need a public webhook URL obtained from publicUrl, a tunnel, or Tailscale exposure. A loopback or private serve fallback is rejected because carriers cannot reach it.

Call lifecycle

call

Start an outbound voice call.

FlagRequiredDefaultDescription
-m, --message <text>yes(none)Text to be spoken once the call picks up.
-t, --to <phone>noconfig toNumberDestination phone number in E.164 format.
--mode <mode>noconversationHow the call behaves: notify (disconnect after message) or conversation (keep the line open).
openclaw voicecall call --to "+15555550123" --message "Hello"
openclaw voicecall call -m "Heads up" --mode notify

start

Acts as a shorthand for call but uses a distinct default flag layout.

FlagRequiredDefaultDescription
--to <phone>yes(none)Number you want to call.
--message <text>no(none)What to say when the call is answered.
--mode <mode>noconversationCall type: notify or conversation.

continue

Deliver a message then listen for a reply.

FlagRequiredDescription
--call-id <id>yesIdentifier for the call.
--message <text>yesContent to say.

speak

Deliver a message without expecting a reply.

FlagRequiredDescription
--call-id <id>yesCall identifier.
--message <text>yesWords to speak.

dtmf

Transmit DTMF tones to a call that is already connected.

FlagRequiredDescription
--call-id <id>yesCall identifier.
--digits <digits>yesDTMF sequence (e.g., ww123456# indicates pauses).

end

Terminate an active call.

FlagRequiredDescription
--call-id <id>yesCall ID.

status

Review currently active calls.

FlagDefaultDescription
--call-id <id>(none)Limit results to one call.
--jsonfalseOutput in machine-readable JSON.
openclaw voicecall status
openclaw voicecall status --json
openclaw voicecall status --call-id <id>

Logs and metrics

tail

Follow the voice-call JSONL log. On startup it shows the most recent --since entries, then continues to display new entries as they arrive.

FlagDefaultDescription
--file <path>resolved from plugin storeLocation of calls.jsonl.
--since <n>25Number of entries shown before following.
--poll <ms>250 (minimum 50)How often to poll, in milliseconds.

latency

Produce a summary of turn-latency and listen-wait metrics drawn from calls.jsonl. The output is JSON containing recordsScanned, turnLatency, and listenWait aggregates.

FlagDefaultDescription
--file <path>resolved from plugin storePath to calls.jsonl.
--last <n>200 (minimum 1)Number of most recent entries to include.

Exposing webhooks

expose

Turn on, turn off, or adjust the Tailscale serve/funnel setup for the voice webhook.

FlagDefaultDescription
--mode <mode>funneloff, serve (tailnet), or funnel (public).
--path <path>config tailscale.path or --serve-pathTailscale path to expose.
--port <port>config serve.port or 3334Local webhook port.
--serve-path <path>config serve.path or /voice/webhookLocal webhook path.
openclaw voicecall expose --mode serve
openclaw voicecall expose --mode funnel
openclaw voicecall expose --mode off

Warning

Only expose the webhook endpoint to networks you trust. Prefer Tailscale Serve over Funnel when possible.