ClawVoice
Connects to a live voice session, receiving and sending messages in real time via a WebSocket interface using the bundled client script.
Connects to a live voice session, receiving and sending messages in real time via a WebSocket interface using the bundled client script.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
You are connected to a live user session via voice. The user is speaking to you through a voice interface. Use the bundled
client.py script to communicate with them in real time.
The script is located at
$skill_dir/client.py.
To say something to the user, run:
uv run python $skill_dir/client.py send "Hello! How can I help you today?"
The server echoes back a confirmation as JSON:
{"type": "echo", "content": "Hello! How can I help you today?"}
To wait for the user to say something:
uv run python $skill_dir/client.py recv
This blocks until the user speaks, then prints their message as JSON and exits:
{"type": "message", "content": "What's the weather like?"}
Use
--timeout to control how long to wait (default 30s):
uv run python $skill_dir/client.py recv --timeout 60
If the timeout expires with no message, it prints an error and exits with code 1.
To receive a stream of messages over a period of time:
uv run python $skill_dir/client.py listen --timeout 60
This prints each incoming message as a JSON line until the timeout expires:
{"type": "message", "content": "Tell me a joke"} {"type": "message", "content": "Actually, make it about cats"}
The
agent command creates a loop: it listens for user messages, forwards each one to openclaw agent --agent main --message '<message>', captures the stdout, and sends it back to the user over the WebSocket.
uv run python $skill_dir/client.py agent
This runs indefinitely by default. Use
--timeout to limit the session:
uv run python $skill_dir/client.py agent --timeout 300
The flow for each message:
{"type": "message", "content": "..."} to the clientopenclaw agent --agent main --message '...' and captures stdout{"type": "message", "content": "<stdout>"}Logs are printed to stderr-style output as
[user] and [agent] prefixed lines.
All commands accept
--url to override the default WebSocket address:
uv run python $skill_dir/client.py --url ws://$host:$port/connect send "Hi"
Default URL:
ws://localhost:3111/connect
| Type | Fields | Description |
|---|---|---|
| (string) | Text to speak/display to the user |
| Type | Fields | Description |
|---|---|---|
| (string) | What the user said (transcribed text) |
| (string) | Server confirmation of your sent message — ignore these |
| Connection health check response — ignore these |
message you receive from the user.echo messages — they are confirmations, not user input.recv for turn-based conversation. Use listen when you expect the user to say multiple things.No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.