The longest thing you write in Lanes is usually the prompt an agent starts from, and it is the part where typing slows you down most. Dictation puts a microphone on the places that prose lives: the issue description, a running session, and workspace chat.
Lanes never submits for you. A transcript lands in the field, or in the CLI's own input line, exactly as if you had typed it. You press Enter.
Connect a provider
Open Settings, then Voice. Until a key is set, the microphone buttons do not appear.
Pick a preset, paste your key, and press Record a test. The preset fills in a base URL and a matching model together, which is the pair people get wrong: a model id from one provider is a 404 on another.
| Preset | Base URL | Model |
|---|---|---|
| OpenAI | https://api.openai.com/v1 | whisper-1 |
| Groq | https://api.groq.com/openai/v1 | whisper-large-v3-turbo |
| Local server | http://localhost:8080/v1 | whisper-1 |
Any endpoint that accepts a POST to /audio/transcriptions works. If you are pointing at
something else, include the version segment yourself: OpenAI's base URL ends in /v1,
Groq's in /openai/v1.
macOS asks for the microphone the first time you record, and only that once. If you decline, use Open next to System permission on the same page to turn it back on.
Dictate into an issue or a session
The microphone is the leftmost button in the footer, on both subtabs. Click to start, click again to stop.
- Issue: the transcript goes in at your cursor, so you can dictate into the middle of something you already wrote.
- Session: it goes into the agent's own input box. Read it, edit it, press Enter.
- Workspace chat: it goes into your draft.
Words appear as you speak rather than all at once when you stop. While a phrase is being transcribed, a ring spins around the stop button, so a pause looks different from a stall.
Only one microphone runs at a time. Starting a recording greys out the others rather than taking the microphone away from a sentence you are in the middle of.
Teach it your vocabulary
The Vocabulary field on the Voice page is the highest-value setting on it. It is a list of names and jargon to expect, and for a coding tool that is the difference between
lanes, taury, zoo stand, work tree
and
Lanes, Tauri, zustand, worktree
Put your stack, your repo names, and the words you say all day into it. Set Language too if you always dictate in one: skipping detection is faster and more accurate on short clips.
Set up a session to dictate into
Notes
Where your key lives. In ~/.lanes/integrations.json, alongside your GitHub and Linear
tokens, readable only by your user account. The request is made by the app rather than the
page, so the key never passes through the web view. Your audio goes to the base URL you
configured and nowhere else.
Why the session text is not corrected. A CLI's input line cannot take back characters it has already been given, so a session receives each phrase once and never a revision. A word spanning two phrases can come out wrong there. An issue description has no such limit: it is rewritten as it refines, and a final pass over the whole recording replaces it when you stop.
A recording stops itself after three minutes, so a microphone left open by accident does not stay open. What was said up to that point is still transcribed.
Silence is discarded before it is sent. Speech models fed silence tend to invent a plausible sentence rather than return nothing, and an invented sentence is the last thing you want typed into a live session.