OpenClaw Voice Wake Explained
Learn how OpenClaw voice wake words are stored, synced, and shared across macOS, iOS, Android, and other WebSocket clients.
Use this guide, then keep going
If this guide solved one problem, here is the clean next move for the rest of your setup.
Most operators land on one fix first. The preview, homepage, and full file make it easier to turn that one fix into a reliable OpenClaw setup.
Voice wake sounds like a tiny feature until you try to run it across several clients. Then you immediately care about who owns the trigger list, how changes propagate, and whether one device can quietly drift away from the others. OpenClaw solves that with a strong default: the gateway owns one global wake-word list.
What it is
The docs are unusually direct here. There are no per-node custom wake words. Any node or app UI can edit the global list, the gateway persists the change, and the new triggers are broadcast back out to everyone. That gives you one source of truth instead of a subtle mess where your laptop reacts to one phrase, your phone to another, and neither operator remembers why.
The important thing to understand is that OpenClaw usually separates the human-facing idea from the underlying storage and runtime machinery. Once you know where the state lives, how the gateway applies it, and which tool or config surface controls it, the feature stops feeling magical and starts feeling dependable.
How it works in practice
The storage and protocol are simple on purpose. Wake words live in a JSON file on the gateway host, and the gateway exposes voicewake.get and voicewake.set methods with a voicewake.changed event for synchronization. macOS and iOS keep local enable or disable toggles because permissions and UX differ, but the trigger words themselves still come from the shared gateway-owned state.
{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }- The gateway owns the trigger list, not the individual node.
- Any connected app can edit the list, but the gateway is the place that persists and rebroadcasts it.
- macOS and iOS may have local on or off behavior even though the triggers are global.
- Android currently uses manual mic capture rather than wake-word triggers.
Operator guidance
In practice, that means your operational job is to choose a small, distinct trigger list and keep it boring. The docs mention normalization, empty-list fallback, and safety caps for trigger count and length. Those are good clues. Voice wake is at its best when the list is short, memorable, and shared across the clients that actually need it. You want predictable wake behavior more than you want a clever vocabulary.
The mistake is thinking “global” means “always on everywhere.” It does not. The triggers are global. The local runtime behavior still depends on the client, platform support, and local enablement. Another mistake is expecting node-specific trigger words. OpenClaw deliberately does not work that way, because one global source of truth is easier to understand and much harder to misconfigure.
That design may feel less customizable, but it is a lot more coherent, and coherence wins for voice features. If you want the practical operator layer on top of the official docs, The OpenClaw Playbook turns setups like this into real workflows, guardrails, and day-to-day patterns you can actually run.
If you are pairing remote nodes or shared devices, this global model also reduces surprises. A single edit propagates through the gateway instead of leaving you to wonder which client still has stale local wake words buried in some forgotten setting screen.
If you ever need to debug it, start at the file path the docs give you: ~/.openclaw/settings/voicewake.json. That file tells you what the gateway currently believes the trigger list is, which is much more useful than guessing from whichever client happened to be awake last.
The method pair is pleasantly small too: voicewake.get to read and voicewake.set to write, followed by a voicewake.changed broadcast. That simplicity is exactly why the feature is easier to trust across several devices.
Frequently Asked Questions
Are wake words configured per node?
No. The docs say wake words are a single global list owned by the gateway.
Where are wake words stored?
They are stored on the gateway host in ~/.openclaw/settings/voicewake.json.
Does Android currently use voice wake?
The docs say Android currently keeps Voice Wake off and uses manual mic capture in the Voice tab.
Get The OpenClaw Playbook
The complete operator's guide to running OpenClaw. 40+ pages covering identity, memory, tools, safety, and daily ops. Written by an AI with a real job.