feat(beefcake): Wyoming voice with haproxy failover to bigtower #687

Merged
lytedev merged 2 commits from beefcake-home-assistant into main 2026-07-01 14:58:21 -05:00
Owner

Runs the Wyoming voice stack (STT/TTS/wake) for beefcake's Home Assistant behind a haproxy primary→backup failover.

  • Primary: bigtower's idle Ryzen 5 5600 — far faster at faster-whisper than beefcake's loaded 2013 Xeon (~5s → ~1s per utterance). Already runs the identical Wyoming stack.
  • Backup: beefcake's local Wyoming, shifted to 1031x, always-on.
  • haproxy owns the loopback ports HA connects to (10300/10200/10400), health-checks bigtower, and transparently fails over to the local backup when bigtower is unreachable — flipping back when it returns. HA's config entries stay pointed at 127.0.0.1, so failover is invisible to HA.

Also fixes durability: the "Wyoming native on beefcake" commit here was pushed but never merged, so beefcake kept losing Wyoming on each deploy from main.

Requires bigtower to expose its Wyoming ports — pairs with lytedev/lytebot-alexa#17.

Validated: haproxy -c on the generated config passes; nixosConfigurations.beefcake evaluates.

🤖 Generated with Claude Code

Runs the Wyoming voice stack (STT/TTS/wake) for beefcake's Home Assistant behind a haproxy primary→backup failover. - **Primary:** bigtower's idle Ryzen 5 5600 — far faster at faster-whisper than beefcake's loaded 2013 Xeon (~5s → ~1s per utterance). Already runs the identical Wyoming stack. - **Backup:** beefcake's local Wyoming, shifted to 1031x, always-on. - haproxy owns the loopback ports HA connects to (10300/10200/10400), health-checks bigtower, and transparently fails over to the local backup when bigtower is unreachable — flipping back when it returns. HA's config entries stay pointed at 127.0.0.1, so failover is invisible to HA. Also fixes durability: the "Wyoming native on beefcake" commit here was pushed but never merged, so beefcake kept losing Wyoming on each deploy from main. Requires bigtower to expose its Wyoming ports — pairs with lytedev/lytebot-alexa#17. Validated: `haproxy -c` on the generated config passes; `nixosConfigurations.beefcake` evaluates. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(beefcake/HA): run Wyoming (STT/TTS/wake) natively on beefcake
All checks were successful
/ check-format (push) Successful in 9s
/ build (push) Successful in 12m16s
f96cd2c79f
Moves faster-whisper/piper/openwakeword off bigtower onto beefcake, bound to
loopback (HA is co-located; mic satellites talk to HA, not Wyoming). The ML
closure isn't on cache.nixos.org and beefcake's nix wedges substituting it, so
deploys build on dragon and pull via nix.h.lyte.dev Harmonia over the LAN.
feat(beefcake/HA): front Wyoming with haproxy primary→backup failover
All checks were successful
/ check-format (push) Successful in 8s
/ build (push) Successful in 8m19s
3f5e2270fa
STT is CPU-bound, and beefcake's 2013-era Xeon under steady CI/k3s load runs
faster-whisper at ~5s/utterance. bigtower has an idle Ryzen 5 5600 already
running the identical Wyoming stack, so make it the primary and keep beefcake's
local Wyoming as an always-on backup.

haproxy owns the loopback ports HA connects to (10300/10200/10400),
health-checks bigtower, and transparently fails over to the local backup
(shifted to 1031x) when bigtower is unreachable — flipping back when it returns.
HA's config entries stay pointed at 127.0.0.1, so failover is invisible to HA.

Requires bigtower to expose its Wyoming ports on the LAN — see
services.lytebot.voice.openFirewall in the lytebot-alexa flake.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
lytedev deleted branch beefcake-home-assistant 2026-07-01 14:58:22 -05:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lytedev/nix!687
No description provided.