# Voice Wake Documentation

## Overview
OpenClaw implements a centralized approach to voice wake words. The system treats wake words as a single global list managed by the Gateway rather than allowing per-node customization.

## Key Architecture Details

**Storage Location:** Wake word configurations are maintained on the gateway host at `~/.openclaw/settings/voicewake.json`

**Data Structure:** The system stores trigger words alongside a timestamp in JSON format, containing the active triggers and when they were last modified.

## API Protocol

The implementation provides two primary methods:
- Retrieval: `voicewake.get` returns the current trigger list
- Updates: `voicewake.set` modifies triggers with validation and broadcasts changes

A `voicewake.changed` event notifies all connected clients (WebSocket connections, iOS/Android nodes) whenever modifications occur.

## Client Implementations

**macOS:** The native app integrates the global trigger list with voice recognition and allows settings-based editing.

**iOS/Android:** Both mobile platforms expose wake word editors in their settings interfaces. Changes propagate through the Gateway's WebSocket connection to maintain consistency across all devices.

## Operational Constraints

The system normalizes input by trimming whitespace and removing empty values. Empty lists default to system presets, and safety limits enforce caps on trigger count and length.
