PM Voice Actions
Hands-free project management: say what you want done on a board instead of clicking. Covers the five supported actions, which of them need a live connection, how ordinary phrasing is tolerated, and the swappable speech recognition provider behind it.
What it is
PM Voice Actions are hands-free project management operations -- say what you want done on a board instead of clicking.
Voice commands let you create, move, update status, read, and list PM items using natural speech. The system recognizes ordinary phrasing (not rigid templates) and tolerates small words like articles.
Where to find it
There is no panel to open. Voice commands work on recognized speech, so they are available wherever you are in the app -- you name the board or the item you mean and the command applies to it. Which speech recognition engine is listening is a setting of its own, and changing it changes nothing about which commands are understood.
How it behaves
Supported actions:
- Create an item on a board
- Move an item to a different group or status
- Update status of an item
- Read an item aloud (name, status, assignee)
- List items on a board or assigned to you
Read and list commands work offline (they resolve against the local SQLite mirror). Create, move, and status-update require a live connection and will not falsely report success when offline.
For agents
Defined in src/shared/ipc-channels/pm.ts:
PM_VOICE_*channels for voice command dispatchPM_SEMANTIC_SEARCHfor meaning-based item lookup
Response types are in src/shared/ipc-response-map/pm-voice.ts.
The speech-to-text provider is swappable (voiceSttProvider setting) -- Deepgram by default, with
on-device Whisper as an alternative. The command layer works on recognized text, so changing the
provider changes nothing about command recognition.
Regex patterns in voice-intent-regex-commands.ts match voice input to PM intents. Pattern ordering
matters: pm:list-items must come before pm:read-item (whose trailing wildcard would otherwise
swallow list triggers). An optional-article pattern (?:an?\s+)? covers both "a" and "an".
Item resolution uses findItemByName() against the local SQLite mirror. Board resolution falls back
to getFirstBoard() when no board ID is given. Writes proxy through pmAuthedFetch.
Settings: voiceSttProvider -- which speech recognition provider to use.
Related
The board operations these commands perform are described in mission-control.md, the parent page. Because voice is a whole-app surface rather than a board one, voice-and-tts.md is the page to read for the voice system as a whole -- how speech is captured, and what else it can drive. The full behavioural contract is recorded in pm-voice-actions-contract.md, and every other page in this library is listed in INDEX.md.
Last verified 2026-09-23