Migrate Lyra Whisper/Piper from Docker to native Wyoming services #50

Closed
opened 2026-07-12 19:47:52 +01:00 by nimmo · 3 comments
Owner

Goal

Replace Lyra's current /srv/stacks/whisper Docker stack with native NixOS Wyoming services for faster-whisper and piper.

Acceptance Checklist

  • Inventory the live compose behavior and confirm the active stack path.
  • Configure services.wyoming.faster-whisper on tcp://0.0.0.0:10300.
  • Configure services.wyoming.piper on tcp://0.0.0.0:10200.
  • Preserve the current runtime choices: medium.en for faster-whisper and en_GB-alba-medium for piper.
  • Enable CUDA for faster-whisper on Lyra.
  • Validate that both native endpoints come up and answer on ports 10300 and 10200.
  • Retire active production dependence on the Docker stack after native validation.
  • Keep the old compose directory only as a rollback artifact until the cutover is proven stable.

Context

This is no longer an exploratory helper-stack question. NixOS has first-class Wyoming modules for both sides of this stack: services.wyoming.faster-whisper and services.wyoming.piper. The live compose stack already expresses the intended behavior clearly enough to migrate directly.

Guardrails

  • Do not leak secrets or tokens into Nix values.
  • Do not recreate the Docker data layout unless testing reveals a real migration blocker.
  • Do not close this issue until clients are confirmed working against the native endpoints and the Docker stack is no longer the active path.
## Goal Replace Lyra's current `/srv/stacks/whisper` Docker stack with native NixOS Wyoming services for `faster-whisper` and `piper`. ## Acceptance Checklist - Inventory the live compose behavior and confirm the active stack path. - Configure `services.wyoming.faster-whisper` on `tcp://0.0.0.0:10300`. - Configure `services.wyoming.piper` on `tcp://0.0.0.0:10200`. - Preserve the current runtime choices: `medium.en` for faster-whisper and `en_GB-alba-medium` for piper. - Enable CUDA for `faster-whisper` on Lyra. - Validate that both native endpoints come up and answer on ports `10300` and `10200`. - Retire active production dependence on the Docker stack after native validation. - Keep the old compose directory only as a rollback artifact until the cutover is proven stable. ## Context This is no longer an exploratory helper-stack question. NixOS has first-class Wyoming modules for both sides of this stack: `services.wyoming.faster-whisper` and `services.wyoming.piper`. The live compose stack already expresses the intended behavior clearly enough to migrate directly. ## Guardrails - Do not leak secrets or tokens into Nix values. - Do not recreate the Docker data layout unless testing reveals a real migration blocker. - Do not close this issue until clients are confirmed working against the native endpoints and the Docker stack is no longer the active path.
Author
Owner

Initial implementation landed in the repo.

Current state:

  • added modules/services/whisper.nix as a repo-local wrapper around services.wyoming.faster-whisper and services.wyoming.piper
  • wired Lyra to import and enable the module
  • preserved the current endpoints and runtime choices: tcp://0.0.0.0:10300, medium.en, CUDA for faster-whisper; tcp://0.0.0.0:10200, en_GB-alba-medium, CPU for piper
  • registered the native Wyoming units with the Lyra service failure monitor
  • nix flake check passes

Next step is host-side cutover on Lyra: rebuild, validate the native units, and stop relying on the Docker whisper stack.

Initial implementation landed in the repo. Current state: - added `modules/services/whisper.nix` as a repo-local wrapper around `services.wyoming.faster-whisper` and `services.wyoming.piper` - wired Lyra to import and enable the module - preserved the current endpoints and runtime choices: `tcp://0.0.0.0:10300`, `medium.en`, CUDA for faster-whisper; `tcp://0.0.0.0:10200`, `en_GB-alba-medium`, CPU for piper - registered the native Wyoming units with the Lyra service failure monitor - `nix flake check` passes Next step is host-side cutover on Lyra: rebuild, validate the native units, and stop relying on the Docker whisper stack.
Author
Owner

Post-deploy verification on Lyra succeeded.

Verified state:

  • wyoming-faster-whisper-lyra is active and listening on 0.0.0.0:10300
  • wyoming-piper-lyra is active and listening on 0.0.0.0:10200
  • direct TCP/Wyoming describe probes succeeded against both endpoints
  • faster-whisper is now running with --device cuda
  • the old Docker faster-whisper and piper containers are not active

The main issue discovered during cutover was that the default wyoming-faster-whisper package pulled a non-CUDA CTranslate2 build. The repo-local wrapper now overrides it to a CUDA-enabled variant, and the service starts cleanly on Lyra.

Remaining work before closing this issue is operational confirmation that the intended clients are using the native endpoints and that the old compose directory can stay as rollback-only state.

Post-deploy verification on Lyra succeeded. Verified state: - `wyoming-faster-whisper-lyra` is active and listening on `0.0.0.0:10300` - `wyoming-piper-lyra` is active and listening on `0.0.0.0:10200` - direct TCP/Wyoming `describe` probes succeeded against both endpoints - `faster-whisper` is now running with `--device cuda` - the old Docker `faster-whisper` and `piper` containers are not active The main issue discovered during cutover was that the default `wyoming-faster-whisper` package pulled a non-CUDA CTranslate2 build. The repo-local wrapper now overrides it to a CUDA-enabled variant, and the service starts cleanly on Lyra. Remaining work before closing this issue is operational confirmation that the intended clients are using the native endpoints and that the old compose directory can stay as rollback-only state.
Author
Owner

Operational confirmation complete: Whisper and Piper are receiving real client calls and processing them successfully through the native Wyoming services on Lyra.

This satisfies the remaining acceptance check that intended clients are using the native endpoints normally. The old compose directory remains on disk as rollback-only state.

Operational confirmation complete: Whisper and Piper are receiving real client calls and processing them successfully through the native Wyoming services on Lyra. This satisfies the remaining acceptance check that intended clients are using the native endpoints normally. The old compose directory remains on disk as rollback-only state.
nimmo closed this issue 2026-07-12 20:49:29 +01:00
Sign in to join this conversation.
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
nimmo/nixos-config#50
No description provided.