Skip to main content

Voice Wake (Global Wake Words)

Fased 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).
  • Advanced > Nodes can show connected node state, but wake-word editing is a Gateway/client setting, not a node pairing action.

Storage (Gateway host)

Wake words are stored on the gateway machine at:
  • ~/.fased/settings/voicewake.json
Shape:
{ "triggers": ["fased", "claude", "computer"], "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.
  • Count and length caps are enforced.

Events

  • voicewake.changed payload { triggers: string[] }
Who receives it:
  • All WebSocket clients (macOS app, browser Chat clients, etc.)
  • All connected 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

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

Android node

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