Prompts as buttons
Write a prompt and give it a key. After you dictate, press B and your note becomes a bug report.
- name: Bug report
prompt: Turn this into a bug report.
offer: true
key: bLocal dictation for macOS
Names, code and shorthand are spelled right. Everything runs on your Mac, and you can read and change every rule.
brew install znat/tap/parrotflowFree and open source · macOS 15+ · Apple silicon
01 · Rules and scripts
“Siobhan” becomes @siobhan. “PR 478” becomes a link to #478.
02 · Screen context
“carrot anchor” becomes CaretAnchor. “wrecked” stays “wrecked”, even with rect on screen.
03 · Vocabulary
“view” becomes Vue in “the Vue component”, and stays “view” in “the whole view”.
Write a prompt and give it a key. After you dictate, press B and your note becomes a bug report.
- name: Bug report
prompt: Turn this into a bug report.
offer: true
key: bAdd the ParrotFlow skill. Say what you want in your own words. Your agent writes the rule and checks the config.
> /parrotflow When I say P zero,
I want P0.Any script that reads text and writes text can be a step, in Python, shell or any other language.
- name: slack_mentions
command: slack_mentions.pyRun steps in a set order. For example, turn spoken numbers into digits first, so the PR link rule can find them.
pipeline:
- transform: numbers_en
- transform: github_refs
- transform: slack_mentionsStart a step from a button on the pill, with a key, or by saying its name.
offer: true
key: s
say: [slack mentions]Only prompt steps use a language model. Pick one on your Mac with Ollama, or one in the cloud.
models:
gemma:
api: ollama
model: gemma4:e4b-mlxLocal
mmBERT, Qwen3 0.6B and spaCy make small edits to the raw transcript. The rest stays as you said it.
A prompt step uses a language model only when you add one. It runs on the model you choose, local or in the cloud.
75 seconds, with sound. Use the chapters to skip ahead.
brew install znat/tap/parrotflowApple silicon and macOS 15+. About 3 GB of disk and 1 GB of memory.
To let your coding agent write rules for you, add the ParrotFlow skill:
npx skills add znat/parrotflow --skill parrotflow