> ## Documentation Index
> Fetch the complete documentation index at: https://aiwithapex.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Voicewake

# Voice Wake (Global Wake Words)

crocbot treats **wake words as a single global list** owned by the **Gateway**.

* There are **no per-node custom wake words**.
* **Any node/app UI may edit** the list; changes are persisted by the Gateway and broadcast to everyone.
* Each device still keeps its own **Voice Wake enabled/disabled** toggle (local UX + permissions differ).

## Storage (Gateway host)

Wake words are stored on the gateway machine at:

* `~/.crocbot/settings/voicewake.json`

Shape:

```json theme={null}
{ "triggers": ["croc", "claude", "computer"], "updatedAtMs": 1730000000000 }
```

## Protocol

### Methods

* `voicewake.get` returns `{ triggers: string[] }`
* `voicewake.set` with params `{ triggers: string[] }` returns `{ triggers: string[] }`

Notes:

* Triggers are normalized (trimmed, empties dropped). Empty lists fall back to defaults.
* Limits are enforced for safety (count/length caps).

### Events

* `voicewake.changed` payload `{ triggers: string[] }`

Who receives it:

* All WebSocket clients (WebChat, etc.)
* All connected nodes, and also on node connect as an initial "current state" push.

## Client behavior

Nodes use the global list for wake word trigger detection. Editing "Trigger words" in settings calls `voicewake.set` and relies on the broadcast to keep other clients in sync.
