#941·rowboat

Decide: TTS placement vs RFC Q7 (edge voice)

Author: GagancreatesCreated Aug 31, 2026Updated Sep 8, 2026

Phase 7b moved TTS server-side (voice:synthesize* migrated; audio returns as base64 chunks over the events WS), deviating from SERVER_CLIENT_SPEC.md Q7 (STT/TTS at the edge, only text crosses the boundary; no vendor keys transit rowboat-server — voice:getConfig currently vends the Deepgram key). STT conforms (renderer → Deepgram directly). Decide explicitly: amend Q7, or move TTS back to the edge (client fetches account token per Q9 and calls the voice proxy). Leaning edge per the RFC since the phone story depends on it. See discussion on #929.

Follow-up from the client–server separation (#929).