VCode home

Dictate a message

Agents: claude, codex, opencode · On: phone, desktop · optional

Speak into the composer instead of typing. The words land in the composer at the cursor, and you edit and send them yourself.

Why you would use it

You are holding a phone and the message is longer than you want to thumb in. The mic turns speech into text in the composer. Nothing is sent by voice and no command runs by voice, so a misheard word costs you an edit, not a turn.

How to use it

  1. Tap the mic (#mic) in the composer row, left of steer and send. The first tap on a device asks the browser for the microphone.

    The composer row with the mic button between the model chips and send.

  2. Talk. The button becomes a stop icon with a ring that fills toward the two minute cap. A strip of bars (#wave) scrolls in from the right as you speak, taller the louder you are, and a dotted line while you are silent. With the composer empty, the strip takes the place of its text line and the composer keeps its height: the strip is 48 px tall on a phone, and the height of the composer's one line on a wide screen. The rest of the composer row stays as it was.

    Recording into an empty box: the strip where the composer's text line was, the mic a red stop button inside a ring, the cancel × to its left.

    With text already in the box, the text stays in view, dimmed, and a 48 px strip sits under it. The composer grows by 48 px while you record.

    Recording into a box with two lines of text: the text dimmed above, the strip of bars under it.

  3. Tap it again to stop. It stops by itself after a few seconds of silence, and at 120 seconds whatever happens. The bars freeze and dim until the words arrive; the mic shows the clip going up.

    The clip on its way to be transcribed: the bars frozen and dimmed, and the button an upload arrow.

  4. Wait for the words to appear at the cursor. The composer's text line comes back with them. Edit them, then send the way you send anything you typed.

    The transcript sitting in the composer as ordinary text, with the mic back to its idle icon.

To throw a recording away, tap the × (#mic-cancel) left of the mic — the second shot above. The composer's text line comes back at once, nothing is uploaded, and nothing in it changes.

The mic only appears on a box that has the transcription service installed, and only in a browser that has MediaRecorder and navigator.mediaDevices. Both are missing on an insecure origin, so a box reached over plain http by IP shows no mic.

What you see

State Button Label
Ready mic icon Dictate into the message
Recording stop icon, red, ring filling toward 120 s Stop recording
Clip on its way to the server upload arrow, ring filling when the share is known Sending the clip to be transcribed, then …, 42%
The server transcribing it waveform icon Transcribing on this machine
A transcription that failed retry arrow Retry the transcription that failed
Another open tab is dictating, or holds a clip for a retry mic icon, dimmed and dead Dictating in another tab

The strip (#wave) shows from the tap until the transcript lands or fails, and only in the composer of the tab that started the dictation. Swipe to another tab and that tab's composer shows its own text. A failed transcription brings the composer's text line back with its toast. Tapping the mic to retry shows the frozen, dimmed bars again. A clip under a second that is dropped unsent brings the box back with heard nothing. Over an empty box, the box stays under the strip, focused and the same size, so the composer does not change height and the words still land at the cursor you left. Live text shows no waveform: its words appear in the composer as you speak.

The × shows while recording and while the microphone is still opening. The mic itself is disabled through the permission prompt, while the clip is being handed over, and while a transcript is out, so the × is the way out of a recording you did not mean to start. On every tab but the one that started the dictation the mic is dimmed and the × is gone — see dictate-while-you-switch-tabs.

Toasts you can see:

Where the words go: a space goes in front of them unless the text before the cursor already ends in whitespace, and another behind if a word follows, so dictating into the middle of a sentence does not fuse words together. The cursor is left after the inserted text, so a second dictation continues the first. With no cursor in the box the words go to the end. An empty transcript changes nothing.

Options and settings

Option Default What it changes
Stop after silence — #voice-silence 3 How long a pause ends the recording. 0 stops only on the button. See stop-recording-on-silence
Show the recording as — #voice-display Waveform Waveform records a clip as described here; Live text types the words as you speak. See choose-the-dictation-engine

Limits and known gaps