Workflows

Create website, app, hotkey, manual, and fallback workflows for dictation and direct text processing.

How Workflows Work

When you start dictating, TypeWhisper matches the current browser URL first, then the active app, against your enabled workflows. Matching workflows can override language, task, engine, translation mode, prompts, and related behavior automatically. Hotkey workflows can also process the current selection or clipboard directly without recording audio. The active workflow name is shown as a badge in the indicator together with why it matched.

Trigger Types

Website

Website workflows work across browsers. Use one or more domains; a workflow for github.com also matches subdomains like gist.github.com.

App

App workflows activate as soon as one of the selected apps is active. Use one or more apps for tools like Mail, Slack, Terminal, or browsers when a website condition is not needed.

Hotkey

Hotkey workflows run when you press their assigned shortcut. They can start dictation or process selected text and do not compete with automatic app or website matching.

Manual

Manual workflows are available from the Workflow Palette. They run only when you choose them directly.

Always fallback

An Always workflow becomes the global fallback. It only applies when no more specific workflow matches.

Priority

TypeWhisper resolves automatic workflow matches in this order:

  1. Website match
  2. App match
  3. Always fallback workflow

Manual and hotkey workflows are direct actions. They run from the Workflow Palette or their assigned shortcut instead of being selected by app or URL matching.

Creating a Workflow

Go to Settings > Workflows and click "New Workflow". Pick a template, choose one trigger type, then configure the fields for that trigger and the behavior you want:

  • Apps - Limit the workflow to one or more selected apps
  • Websites - Match browser tabs by one or more domains or subdomain patterns
  • Language - Keep auto-detect, pin one language, or restrict recognition to likely languages
  • Task - Transcribe or Translate where the selected engine supports it
  • Translation mode - For Translation workflows, choose Apple Translate on-device on macOS 15+ or LLM Prompt mode.
  • Engine - WhisperKit, Parakeet TDT, Apple SpeechAnalyzer (macOS 26+), or any add-on engine
  • Prompt - Workflow-specific LLM prompt instructions for automatic post-processing
  • Prompt Provider - LLM provider override for LLM Prompt workflows
  • Hotkey - Assign one or more shortcuts to run this workflow on demand, either by starting dictation or by processing the current selection/clipboard directly
  • Auto-submit - Automatically send the inserted result in chat-style apps when appropriate
  • Priority - Break ties between workflows in the same automatic match tier
Workflow list with app, website, hotkey, and fallback triggers

Hotkey Workflows

You can assign one or more shortcuts to a workflow and choose what those shortcuts do. Start Dictation uses the normal recording path with that workflow's settings. Process Selected Text skips recording, reads the current accessibility selection, falls back to Cmd+C and then the clipboard when needed, and inserts the processed result through the same path as the Workflow Palette.

Language and engine hotkeys

Create one Dictation Only workflow for each language and engine combination you want to trigger directly.

  1. Add a Dictation Only workflow for English, set Spoken Language to English, choose WhisperKit plus the model you want, and assign a Start Dictation hotkey.
  2. Add a second Dictation Only workflow for Norwegian, set Spoken Language to Norwegian, choose the local Whisper engine plus its model, and assign a different Start Dictation hotkey.
  3. Leave Transcription Engine on Use Global Engine when the workflow should follow your main Recording setting instead.
  4. Use Process Selected Text hotkeys for selection-based cleanup or prompts; they do not record audio and therefore do not need a transcription engine or model.

This keeps the global engine unchanged while each dictation hotkey can still force its own language, engine, and model.

Prompt Instructions

LLM Prompt workflows can attach prompt instructions and provider overrides to a specific context. This is the easiest way to automatically clean up dictation, format notes, or route text into a provider tailored to that app or website.

Use the Workflows guide for setup examples and common mistakes.

Multiple Engines

Dictation Only workflows can override the transcription engine and model used for that hotkey. TypeWhisper can also keep multiple engines loaded in memory at the same time, so switching between workflow hotkeys stays instant as long as those engines remain resident. Configure which engines stay loaded in Settings > Advanced.

App-aware Formatting

App-aware formatting is a lightweight formatting pass, not a semantic or AI-based app detection feature. The global toggle in Settings > Recording only enables this pass. You only see a visible effect when the matched workflow also sets an Output Format.

When dictation finishes, TypeWhisper passes the matched workflow's output format into the post-processing pipeline. If app-aware formatting is enabled, that formatting step runs before workflow text processing, snippets, and dictionary corrections.

  • None - Disable additional formatting for this workflow.
  • Auto-Detect - Choose a format from a fixed app bundle ID mapping. Known Markdown apps include Obsidian, Notion, Typora, Bear, and Ulysses. Known HTML apps include Apple Mail and Outlook. Known code apps include Xcode, VS Code, Cursor, Zed, Terminal, and iTerm. Unknown apps fall back to plain text.
  • Markdown - Normalize list-like lines such as - item, * item, or dictated bullet item into Markdown list items.
  • HTML - Wrap paragraphs in <p> tags, convert bullet-like lines into <ul>/<li>, and escape HTML characters.
  • Plain Text - Currently leaves the text unchanged.
  • Code - Currently leaves the text unchanged.

Formatting examples

Obsidian with Auto-Detect

Markdown apps normalize bullet-like input into Markdown list items.

Input:
bullet first item
* second item

Output:
- first item
- second item

Apple Mail with Auto-Detect

Mail-style apps receive simple HTML paragraphs and lists with escaped markup.

Input:
hello <team>
- launch

Output:
<p>hello &lt;team&gt;</p>
<ul>
<li>launch</li>
</ul>

Terminal or VS Code with Auto-Detect

Code apps currently use a pass-through mode, so the inserted text stays unchanged.

Input:
for item in items:
    print(item)

Output:
for item in items:
    print(item)

Unknown app with Auto-Detect

Unknown apps fall back to plain text, so bullet-like input stays as-is.

Input:
bullet first item

Output:
bullet first item

Current limitations

  • Auto-Detect only uses known app bundle IDs.
  • Unknown apps fall back to plain text.
  • The formatter does not inspect the meaning of the text.
  • Code and Plain Text are currently pass-through modes.
  • Later prompt or LLM steps can still change the formatted result.

Example Setups

Mail

App: Mail, Language: German, Engine: WhisperKit, Model: Large v3

github.com

Website: github.com, Language: English, Prompt: concise technical cleanup

Translation workflow

Trigger: Manual or Always, Translation mode: Apple Translate, Target language: English

Language hotkeys

Two Dictation Only workflows: English hotkey with WhisperKit, Norwegian hotkey with local Whisper, each with its own language and model

Global fallback

No app or website, Language: Auto, Engine: Parakeet TDT v3