Skip to content

fix: spawn whisper-server on the host:port sttUrl points at - #154

Open
nixfred wants to merge 1 commit into
dbbaskette:mainfrom
nixfred:fix/whisper-spawn-honors-stturl
Open

fix: spawn whisper-server on the host:port sttUrl points at#154
nixfred wants to merge 1 commit into
dbbaskette:mainfrom
nixfred:fix/whisper-spawn-honors-stturl

Conversation

@nixfred

@nixfred nixfred commented Aug 1, 2026

Copy link
Copy Markdown

Problem

The onboarding wizard and Settings let users change sttUrl, but the whisper supervisor is created without a port option, so it always spawns whisper-server on the hardcoded 127.0.0.1:8080. On machines where something else already owns 8080 (nginx in my case), the wizard's transcription test fails with a confusing HTTP 404 from /health (whatever is squatting the port answers), and the transcribe stage can never start its own server.

Fix

Derive the spawner's host/port from the same sttUrl setting the stt HTTP client already uses, so client and server agree by construction:

const sttEndpoint = new URL(s.sttUrl);
const whisperSupervisor = createWhisperSupervisor({
  getModelId: () => settings.get('sttModel'),
  host: sttEndpoint.hostname,
  port: Number(sttEndpoint.port) || 8080,
  ...

WhisperSupervisorOpts already accepts host/port, so this is wiring, not new surface. Default behavior (no custom sttUrl) is unchanged.

Testing

  • 13/13 whisper supervisor tests pass; full suite 673/673 green.
  • Verified live on a Mac where nginx owns 8080: set sttUrl to http://127.0.0.1:8090, app spawned whisper-server on 8090 and transcribed end to end (large-v3-turbo, macOS 26 / M4 Max).

Love the app, by the way — fully local meeting notes with the process-tap capture is exactly the right architecture. This came out of a real deploy tonight.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Fx2epy4XwaBS3S8Y5J7FX9

WHAT: derive the whisper supervisor's bind host/port from the configured
sttUrl setting instead of the hardcoded 127.0.0.1:8080 default.

WHY: the onboarding wizard and Settings let users point sttUrl anywhere,
but the spawner ignored it and always bound :8080. On any machine where
something else owns 8080 (nginx, dev servers, other tools), the wizard's
whisper test fails with a confusing 404/health error and the transcribe
stage can never start its server. The stt HTTP client already targets
sttUrl, so client and spawner now agree by construction.

TESTED: 13/13 whisper supervisor tests pass; full suite 673/673; verified
live on a machine with nginx on 8080 — app spawned whisper-server on 8090
and transcribed successfully.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fx2epy4XwaBS3S8Y5J7FX9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant