{
  "title": "Voice Wake (Global Wake Words)",
  "content": "OpenClaw treats **wake words as a single global list** owned by the **Gateway**.\n\n* There are **no per-node custom wake words**.\n* **Any node/app UI may edit** the list; changes are persisted by the Gateway and broadcast to everyone.\n* Each device still keeps its own **Voice Wake enabled/disabled** toggle (local UX + permissions differ).\n\n## Storage (Gateway host)\n\nWake words are stored on the gateway machine at:\n\n* `~/.openclaw/settings/voicewake.json`\n\n* `voicewake.get` → `{ triggers: string[] }`\n* `voicewake.set` with params `{ triggers: string[] }` → `{ triggers: string[] }`\n\n* Triggers are normalized (trimmed, empties dropped). Empty lists fall back to defaults.\n* Limits are enforced for safety (count/length caps).\n\n* `voicewake.changed` payload `{ triggers: string[] }`\n\n* All WebSocket clients (macOS app, WebChat, etc.)\n* All connected nodes (iOS/Android), and also on node connect as an initial “current state” push.\n\n* Uses the global list to gate `VoiceWakeRuntime` triggers.\n* Editing “Trigger words” in Voice Wake settings calls `voicewake.set` and then relies on the broadcast to keep other clients in sync.\n\n* Uses the global list for `VoiceWakeManager` trigger detection.\n* Editing Wake Words in Settings calls `voicewake.set` (over the Gateway WS) and also keeps local wake-word detection responsive.\n\n* Exposes a Wake Words editor in Settings.\n* Calls `voicewake.set` over the Gateway WS so edits sync everywhere.",
  "code_samples": [],
  "headings": [
    {
      "level": "h2",
      "text": "Storage (Gateway host)",
      "id": "storage-(gateway-host)"
    },
    {
      "level": "h2",
      "text": "Protocol",
      "id": "protocol"
    },
    {
      "level": "h3",
      "text": "Methods",
      "id": "methods"
    },
    {
      "level": "h3",
      "text": "Events",
      "id": "events"
    },
    {
      "level": "h2",
      "text": "Client behavior",
      "id": "client-behavior"
    },
    {
      "level": "h3",
      "text": "macOS app",
      "id": "macos-app"
    },
    {
      "level": "h3",
      "text": "iOS node",
      "id": "ios-node"
    },
    {
      "level": "h3",
      "text": "Android node",
      "id": "android-node"
    }
  ],
  "url": "llms-txt#voice-wake-(global-wake-words)",
  "links": []
}