Files
clawdbot/docs/voicewake.md
2025-12-14 05:06:27 +00:00

1.9 KiB

summary, read_when
summary read_when
Global voice wake words (Gateway-owned) and how they sync across nodes
Changing voice wake words behavior or defaults
Adding new node platforms that need wake word sync

Voice Wake (Global Wake Words)

Clawdis 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:

  • ~/.clawdis/settings/voicewake.json

Shape:

{ "triggers": ["clawd", "claude"], "updatedAtMs": 1730000000000 }

Protocol

Methods

  • voicewake.get{ triggers: string[] }
  • voicewake.set with params { triggers: string[] }{ 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 (macOS app, WebChat, etc.)
  • All connected bridge nodes (iOS/Android), and also on node connect as an initial “current state” push.

Client behavior

macOS app

  • Uses the global list to gate VoiceWakeRuntime triggers.
  • Editing “Trigger words” in Voice Wake settings calls voicewake.set and then relies on the broadcast to keep other clients in sync.

iOS node (Iris)

  • Uses the global list for VoiceWakeManager trigger detection.
  • Editing Wake Words in Settings calls voicewake.set (over the bridge) and also keeps local wake-word detection responsive.

Android node

  • Exposes a Wake Words editor in Settings.
  • Calls voicewake.set over the bridge so edits sync everywhere.