Files
homeai/homeai-voice/scripts/load-all-launchd.sh
Aodhan Collins 6a0bae2a0b 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
2026-03-08 02:06:37 +00:00

37 lines
924 B
Bash
Executable File

#!/usr/bin/env bash
# Load (or reload) all homeai-voice launchd services.
set -euo pipefail
LAUNCHD_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/launchd" && pwd)"
LAUNCH_AGENTS=~/Library/LaunchAgents
PLISTS=(
com.homeai.wyoming-stt.plist
com.homeai.wyoming-tts.plist
com.homeai.wyoming-satellite.plist
# com.homeai.wakeword.plist # Disabled - wake word handled by Wyoming satellite + HA
)
for plist in "${PLISTS[@]}"; do
src="${LAUNCHD_DIR}/${plist}"
dst="${LAUNCH_AGENTS}/${plist}"
label="${plist%.plist}"
cp "$src" "$dst"
if launchctl list "$label" &>/dev/null; then
launchctl unload "$dst" 2>/dev/null || true
fi
launchctl load "$dst"
echo "Loaded: $label"
done
echo ""
echo "Status:"
for plist in "${PLISTS[@]}"; do
label="${plist%.plist}"
pid=$(launchctl list "$label" 2>/dev/null | awk 'NR==2{print $1}')
echo " $label — PID: ${pid:--}"
done