Voice Wake (Global Wake Words)

Mayros wake words को single global list के रूप में treat करता है जो Gateway का है।

  • कोई per-node custom wake words नहीं हैं।
  • कोई भी node/app UI edit कर सकता है; परिवर्तन Gateway द्वारा persisted और सभी को broadcast किए जाते हैं।
  • प्रत्येक device अभी भी अपना Voice Wake enabled/disabled toggle रखता है (स्थानीय UX + permissions भिन्न होते हैं)।

Storage (Gateway host)

Wake words gateway मशीन पर stored हैं:

  • ~/.mayros/settings/voicewake.json

आकार:

json
{ "triggers": ["mayros", "claude", "computer"], "updatedAtMs": 1730000000000 }

Protocol

Methods

  • voicewake.get{ triggers: string[] }
  • voicewake.set params { triggers: string[] } के साथ → { triggers: string[] }

नोट्स:

  • Triggers normalized हैं (trimmed, empties dropped)। Empty lists defaults पर fall back करती हैं।
  • Safety के लिए limits enforced हैं (count/length caps)।

Events

  • voicewake.changed payload { triggers: string[] }

इसे कौन प्राप्त करता है:

  • सभी WebSocket clients (macOS app, WebChat, आदि)
  • सभी connected nodes (iOS/Android), और node connect पर भी initial "current state" push के रूप में।

Client व्यवहार

macOS app

  • VoiceWakeRuntime triggers को gate करने के लिए global list का उपयोग करता है।
  • Voice Wake settings में "Trigger words" edit करना voicewake.set को call करता है और फिर अन्य clients को sync में रखने के लिए broadcast पर निर्भर करता है।

iOS node

  • VoiceWakeManager trigger detection के लिए global list का उपयोग करता है।
  • Settings में Wake Words edit करना voicewake.set को call करता है (Gateway WS पर) और local wake-word detection को responsive रखता है।

Android node

  • Settings में Wake Words editor expose करता है।
  • voicewake.set को Gateway WS पर call करता है ताकि edits सभी जगह sync हों।