feat(phase-04): Wyoming Satellite integration + OpenClaw HA components

## Voice Pipeline (P3)
- Replace openWakeWord daemon with Wyoming Satellite approach
- Add Wyoming Satellite service on port 10700 for HA voice pipeline
- Update setup.sh with cross-platform sed compatibility (macOS/Linux)
- Add version field to Kokoro TTS voice info
- Update launchd service loader to use Wyoming Satellite

## Home Assistant Integration (P4)
- Add custom conversation agent component (openclaw_conversation)
  - Fix: Use IntentResponse instead of plain strings (HA API requirement)
  - Support both HTTP API and CLI fallback modes
  - Config flow for easy HA UI setup
- Add OpenClaw bridge scripts (Python + Bash)
- Add ha-ctl utility for HA entity control
  - Fix: Use context manager for token file reading
- Add HA configuration examples and documentation

## Infrastructure
- Add mem0 backup automation (launchd + script)
- Add n8n workflow templates (morning briefing, notification router)
- Add VS Code workspace configuration
- Reorganize model files into categorized folders:
  - lmstudio-community/
  - mlx-community/
  - bartowski/
  - mradermacher/

## Documentation
- Update PROJECT_PLAN.md with Wyoming Satellite architecture
- Update TODO.md with completed Wyoming integration tasks
- Add OPENCLAW_INTEGRATION.md for HA setup guide

## Testing
- Verified Wyoming services running (STT:10300, TTS:10301, Satellite:10700)
- Verified OpenClaw CLI accessibility
- Confirmed cross-platform compatibility fixes
This commit is contained in:
Aodhan Collins
2026-03-08 02:06:37 +00:00
parent 9eb5633115
commit 6a0bae2a0b
119 changed files with 780808 additions and 64 deletions

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.homeai.wyoming-satellite</string>
<key>ProgramArguments</key>
<array>
<string>/Users/aodhan/homeai-voice-env/bin/python3</string>
<string>-m</string>
<string>wyoming_satellite</string>
<string>--uri</string>
<string>tcp://0.0.0.0:10700</string>
<string>--name</string>
<string>Mac Mini Living Room</string>
<string>--area</string>
<string>Living Room</string>
<string>--mic-command</string>
<string>rec -q -r 16000 -c 1 -b 16 -t raw -</string>
<string>--snd-command</string>
<string>play -q -r 24000 -c 1 -b 16 -t raw -</string>
<string>--mic-command-rate</string>
<string>16000</string>
<string>--mic-command-width</string>
<string>2</string>
<string>--mic-command-channels</string>
<string>1</string>
<string>--snd-command-rate</string>
<string>24000</string>
<string>--snd-command-width</string>
<string>2</string>
<string>--snd-command-channels</string>
<string>1</string>
<string>--awake-wav</string>
<string>/System/Library/Sounds/Glass.aiff</string>
<string>--done-wav</string>
<string>/System/Library/Sounds/Blow.aiff</string>
<string>--no-zeroconf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/homeai-wyoming-satellite.log</string>
<key>StandardErrorPath</key>
<string>/tmp/homeai-wyoming-satellite-error.log</string>
<key>ThrottleInterval</key>
<integer>10</integer>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
</dict>
</plist>

View File

@@ -9,7 +9,8 @@ LAUNCH_AGENTS=~/Library/LaunchAgents
PLISTS=(
com.homeai.wyoming-stt.plist
com.homeai.wyoming-tts.plist
com.homeai.wakeword.plist
com.homeai.wyoming-satellite.plist
# com.homeai.wakeword.plist # Disabled - wake word handled by Wyoming satellite + HA
)
for plist in "${PLISTS[@]}"; do