{ "_comment": "Copy to config.local.json (gitignored) for host-specific settings. config.local.json overrides config.json. Two independent groups: live-audio device names for `pipeline.py --listen`, and the persistent-session brain. Keep deployment-specific names and paths here, not in config.json.", "_audio_comment": "Case-insensitive device-name substrings (run `python audio.py --list`). Empty string = system default. Legion: mic 'powerconf' (or 'shure' as a backup), output 'desktop speakers'. Pi: 'powerconf' over USB for both.", "_brain_comment": "Persistent-session brain via bot-spren. transport: 'local' (persona on this host), 'ssh' (persona on brain_host, reached over ssh), or 'sim' (tests). brain_bot_spren_workdir MUST point at the persona's project dir so `bot-spren send -d ` writes to the intended persona instead of a dead-letter directory. brain_inbox_path must independently name the inbox the running session consumes to enable the landing check. Leave it blank to disable that check when the session's runtime.state_dir is not verified.", "_live_output_comment": "live_output_pcm is a literal ALSA PCM name for live_driver.py's `aplay -D` (run `aplay -L`), used as the default when `-o` is omitted. Distinct from output_device above, which is a sounddevice friendly-substring; passing that to aplay would fail. Empty string = ALSA default device. Pi example: 'plughw:CARD=PowerConf,DEV=0'.", "mic_device": "powerconf", "output_device": "desktop speakers", "live_output_pcm": "plughw:CARD=PowerConf,DEV=0", "whisper_cpu_threads": 0, "whisper_vad_filter": false, "brain_backend": "bridge", "brain_persona": "assistant", "brain_transport": "local", "brain_host": "", "brain_bot_spren_bin": "bot-spren", "brain_bot_spren_workdir": "/path/to/persona/project-dir", "brain_reply_path": "/path/to/persona/reply-file.txt", "brain_inbox_path": "", "brain_timeout_s": 120, "brain_poll_s": 0.5 }