Everything lives in ~/.config/dict/config.json. It's created automatically when you first open the app. You can edit it like a normal person with a text editor, or use ⌘, if you prefer clicking things.
hotkeyMode
string
How the hotkey triggers recording. Pick one, it's not a life decision.
"toggle" — Press ⌥Space to start, press again to stop.
"pushToTalk" — Hold ⌥Space to record, release to stop.
sttEngine
string
Speech-to-text backend. Apple's is good enough for most people. Whisper if you're into that.
"apple" — On-device Apple Speech Recognition.
"whisper" — Runs whisper-cli as a subprocess. Requires brew install whisper-cpp + a GGML model.
whisperModelPath
string
Absolute path to a Whisper GGML model file. Only used when sttEngine is "whisper".
Example: /opt/homebrew/share/whisper-cpp/models/ggml-base.en.bin
whisperLanguage
string
Language for speech recognition. We support Portuguese and English. That's the menu.
llmEnabled
bool
Let an LLM clean up your transcriptions. Removes filler words, fixes grammar. Makes you sound smarter than you are.
llmProvider
string
Which LLM API to talk to. OpenAI-compatible works with Ollama and LM Studio too, so you probably want that.
"openai" — OpenAI-compatible API (also works with Ollama, LM Studio).
"anthropic" — Anthropic Messages API.
llmEndpoint
string
Where to send LLM requests. Defaults to local Ollama because we assumed you're running it.
http://localhost:11434/v1/chat/completions
default (Ollama)
llmModel
string
Which model to use. Whatever you have installed, put it here.
llmApiKey
string
API key. Leave empty if you're running locally (Ollama doesn't care).
llmPrompt
string
The system prompt that tells the LLM what to do with your transcription. The default one works fine. Change it if you think you know better.
Default: "Clean up the following voice transcription. Remove filler words, fix grammar and punctuation. Output ONLY the cleaned text."
codeMode
bool
For the brave souls who dictate code. Preserves technical terms and formatting instead of "fixing" them.
privacyMode
bool
Tinfoil hat mode. Forces everything offline: switches to Whisper and kills the LLM. Nothing leaves your machine.
verboseOverlay
bool
How much stuff to show on screen while recording.
true — Full overlay with mic, audio levels, and streaming transcription.
false — Compact pill with mic and audio levels only.
onboardingDone
bool
Whether you've been through the onboarding. Set automatically, don't touch it.
githubRepo
string
GitHub repo for checking updates. You probably don't need to change this.
Format: "owner/repo"
{
"hotkeyMode": "pushToTalk",
"sttEngine": "apple",
"whisperLanguage": "en",
"whisperModelPath": "",
"llmEnabled": true,
"llmProvider": "openai",
"llmEndpoint": "https://api.openai.com/v1/chat/completions",
"llmModel": "gpt-4o-mini",
"llmApiKey": "",
"llmPrompt": "Clean up the following voice transcription...",
"codeMode": false,
"privacyMode": false,
"verboseOverlay": false,
"onboardingDone": true
}
~/.config/dict/config.json
Main configuration
~/.config/dict/dictionary.json
Custom word replacements (e.g. correct proper nouns)
~/.config/dict/snippets.json
Voice-triggered text snippets (say a phrase, expand to text)
/tmp/dict.log
Runtime log