An example
Claude Code just wrote CaretAnchor. You say it, and the speech recogniser hears “carrot anchor”. The name is on your screen, so ParrotFlow writes CaretAnchor.
| You say | On screen | You get |
|---|---|---|
| carrot anchor | CaretAnchor, in Claude Code’s last answer |
CaretAnchor |
A speech model only knows the words it was trained on. The class you named five minutes ago is not one of them. The window you are typing into often has it already.
When the screen is read
ParrotFlow reads the window you dictate into at the moment you press the key. That is the window you were looking at when you decided what to say. By the time the transcript is ready, focus may have moved.
The screen is read on your Mac.
Turn it on or off
Context spelling is on by default.
transcription:
context_spelling: {enabled: true} # on by default
Set enabled to false to turn it off.
Screen text in your own prompts
Context spelling only fixes the spelling of words you said. A separate pipeline stage, context, gives the text on screen to your own prompt steps. It is off until you add it, and for now it reads terminals only.
transcription:
pipeline:
- context
- transform: reply
when: context.ok && context.chars > 200
A prompt can then use {{context.text}}. A few things to know before you add it:
- The stage never changes your transcript. It only publishes what was on screen, for later steps to read.
- It keeps the last 2000 characters, and leaves out the input box you are dictating into.
- While the stage is on, the log at
~/Library/Logs/ParrotFlow.logholds what was on screen when you dictated. - If the screen holds text shaped like an instruction, a model may follow it. A coding agent’s pane is full of such text.
- If the prompt runs on a remote model, the screen text goes to that model. With a model on your Mac, through Ollama, it stays on your Mac.
Read more
- Teach ParrotFlow your words, for names that are not on screen
- Dictation that stays on your Mac
- Context, the
contextstage in the pipeline reference