Private voice dogfood runbook (JOE-1113)¶
Desktop Local only. Feature flag features.voice default off.
Preconditions¶
- Open Cowork Desktop on macOS (primary). Windows/Linux are best-effort (see packaging residual).
- Set in
open-cowork.config.json(or operator overlay):
- Install tools (not pre-bundled in every CI package):
- ffmpeg on
PATH(orOPEN_COWORK_FFMPEG_PATH) - aurum CLI on
PATH(orOPEN_COWORK_AURUM_BIN), modeltiny-q5_1cached - Optional: drop binaries under packaged
resources/voice/(seeapps/desktop/resources/voice/README.md) - Grant microphone permission when prompted (host-owned, not renderer
getUserMedia). - Workspace must be Desktop Local — Cloud Web / paired authorities stay
not_supported.
Scenarios¶
A. Dictation PTT (JOE-1105 / JOE-1102)¶
- Open Chat or Home composer.
- Confirm mic control visible (
data-testid="voice-ptt-button"). - Click mic → status Listening… (live region).
- Speak a short phrase; click again → Transcribing… then text injects into composer.
- Cancel mid-listen (if exposed) must not send a prompt.
- Partials may update the dictation segment while holding; final replaces them.
B. Hotkey (JOE-1110)¶
- Focus Open Cowork (app-focused only — not OS-wide paste).
- Default:
Cmd+Shift+Space/Ctrl+Shift+Space. - Settings → Privacy → Private voice shows accelerator when flag on.
- Avoid collision with command palette (
Cmd/Ctrl+Shift+P).
C. Read-aloud (JOE-1103)¶
- Complete an assistant message.
- Read aloud on the bubble (when TTS ready).
- Stop cancels immediately; starting PTT stops read-aloud.
D. Conversation mode (JOE-1107)¶
- Toggle conversation (radio icon) on.
- Mic starts a listen → final → agent prompt → stream → local TTS of reply.
- Status cycles Listening / Transcribing / Thinking / Speaking.
E. Continuous VAD + barge-in (JOE-1104)¶
- Conversation mode on → toggle continuous (activity icon).
- Privacy red dot while mic armed.
- After speak, mic re-arms; speak over TTS to barge-in (cancels speech + re-listens).
- Continuous stays off by default; never silent always-on.
F. Assets offline (JOE-1109)¶
- Settings → Privacy → Voice assets.
- Refresh status / Ensure local model.
- Missing model + no download env → clear fail-closed message (no silent network).
G. Security smoke (JOE-1111)¶
- Enable voice, dictate once.
- Confirm logs show
textChars/charsonly — no transcript body or PCM in main logs. - Cloud Web build: voice controls absent /
not_supported.
Evidence to record¶
| Field | Example |
|---|---|
| Git SHA | git rev-parse HEAD |
| Platform | macOS arm64 15.x |
| Config | features.voice=true |
| Aurum | version + model tiny-q5_1 present |
| Scenarios | A–E pass / fail notes |
| Residual | Windows TTS, Linux TTS, no bundled model weights |
Paste evidence as a comment on JOE-1096.
Claim freeze (allowed vs forbidden)¶
Allowed (when flag on + tools present)¶
- “Desktop Local private voice (opt-in): on-device STT via Aurum, local OS TTS, PTT and optional conversation.”
- “Audio stays on-machine on the default path (
local_only).”
Forbidden¶
- Cloud / multi-tenant / enterprise voice GA
- Browser / Cloud Web microphone for Studio
- Always-on continuous listen without explicit user enable
- “Ships fully offline in every package” without aurum + model present
- Aurum-as-TTS, cloud STT/TTS as default
- OS-wide Accessibility dictation into other apps (ZephyrFlow territory)