Dictidy is a free, open-source macOS menu-bar app for voice dictation and text rewriting.
Select text in any app, press a hotkey, and Dictidy rewrites it in place. Or press a dictation hotkey, speak, and Dictidy pastes the transcript at your cursor. Rewriting can use your Anthropic API key or an optional on-device model. Speech-to-text always runs on your Mac.
Quick links: Install | First launch | Use Dictidy | Privacy | Build from source
Most people should start here. No developer tools are required.
- Apple Silicon Mac
- macOS 13.3 or later
- Optional: an Anthropic API key for cloud rewriting
- Optional: about 2.5 GB for the local rewrite model and about 1.6 GB for the local dictation model
- Download the latest app: Dictidy-macOS.zip
- Unzip it and move Dictidy.app to Applications.
- Clear macOS quarantine:
You can also open the app once, dismiss the warning, then go to System Settings -> Privacy & Security -> Open Anyway.
xattr -dr com.apple.quarantine /Applications/Dictidy.app
- Launch Dictidy. It appears in the menu bar, not the Dock.
Dictidy is self-signed and not notarized. That is why macOS shows the first-open warning. Releases use a stable signing identity so Accessibility and Microphone permissions carry across app updates.
Use Check for Updates... from the Dictidy menu-bar icon. The app downloads the latest release, shows the release notes, installs it, and relaunches.
On first launch, Dictidy opens a setup wizard. It verifies each step before letting you continue, so you do not have to guess whether macOS permissions, keys, or model downloads worked.
You can set up any mix of these:
- Cloud rewriting: add your Anthropic API key and choose a Claude model.
- Local rewriting: download the on-device rewrite model and rewrite without an API key.
- Dictation: download the Whisper model, grant Microphone access, and choose dictation shortcuts.
Dictidy also needs Accessibility access so it can copy selected text and paste the result back into the app you were already using. After granting Accessibility, quit and relaunch Dictidy so macOS applies the permission.
You can reopen setup anytime from Dictidy menu -> Run Setup Again....
- Select text in any app.
- Press Shift-Command-R for Auto Clean, or choose another instruction from the menu-bar icon.
- Dictidy replaces the selected text with the rewritten version.
- Press your Dictate or Dictate + Clean shortcut.
- Speak.
- Press the shortcut again to stop.
- Dictidy pastes the transcript at your cursor.
Dictate pastes the raw transcript. Dictate + Clean transcribes locally, then cleans the text with your selected rewrite provider.
Open Settings -> Instructions to add, edit, reorder, duplicate, delete, or assign shortcuts to instructions. Each instruction can have its own name, style prompt, and global hotkey.
Open History... from the menu to recover recent rewrites and dictations. History is local and capped to the newest 100 entries.
- Works anywhere you type. Dictidy uses macOS copy and paste automation, so it works across Mail, Slack, Notes, browsers, editors, and most standard text fields.
- Rewrites existing text. Clean up rough notes, change tone, translate to English, or create your own instructions.
- Dictates locally. Speech-to-text uses Whisper on your Mac. Audio is not uploaded.
- Runs without a subscription. Dictidy is free and open source. You can use your own API key or download the local rewrite model.
- Falls back when configured. If both providers are set up, Dictidy can fall back from Claude to the local model when the network or API is unavailable.
- Keeps setup visible. The menu tells you what is missing and links directly to the relevant setup step.
- Has no telemetry. Dictidy does not collect analytics.
| Data | Where it goes |
|---|---|
| Dictation audio | Processed on-device, kept in memory, not written to disk |
| Whisper transcription | Produced on-device |
| Local rewrite text | Processed on-device when using the local rewrite model |
| Anthropic rewrite text | Sent to Anthropic only when you choose the Anthropic provider |
| API key | Stored in the macOS Keychain |
| Models | ~/Library/Application Support/Dictidy |
| Settings and instructions | UserDefaults under com.opensource.dictidy |
| History | Local JSON in Application Support, newest 100 entries |
| Dictidy | Wispr Flow | superwhisper | Apple Dictation | |
|---|---|---|---|---|
| Price | Free | Free tier, Pro paid | Free tier, Pro paid | Free |
| Open source | Yes | No | No | No |
| Dictation on-device | Yes | No | Yes | Yes |
| Cleanup | On-device or your Claude key | Cloud | Cloud or your key | No |
| Rewrite existing selected text | Yes | No | No | No |
| Works across apps | Yes | Yes | Yes | Yes |
| Telemetry | No | Yes | Optional | Optional |
Competitor details can change. This table reflects the project maintainer's understanding as of July 2026.
Make sure Dictidy has Accessibility access, then quit and relaunch it. macOS often requires a relaunch before a new Accessibility grant applies.
macOS ties permissions to the app's code signature. If you switch between a release build and a source build, or rebuild without stable signing, macOS can show a stale enabled toggle.
Reset and grant again:
tccutil reset Accessibility com.opensource.dictidy
tccutil reset Microphone com.opensource.dictidyThen launch Dictidy and follow setup again. If this happens on every source rebuild, run
./Scripts/setup-signing.sh once before rebuilding.
The downloaded app is self-signed but not notarized. Clear quarantine:
xattr -dr com.apple.quarantine /Applications/Dictidy.appOr open it once, dismiss the warning, then approve it in System Settings -> Privacy & Security -> Open Anyway.
Open Settings -> Rewrite, set the primary provider to Local (on-device), and click Download model. The model is about 2.5 GB and downloads once.
Open Settings -> Dictation and download the Whisper model. The model is about 1.6 GB and downloads once. Dictation also needs Microphone access.
Make sure text is actually selected and that the current app supports standard copy and paste.
This section is for contributors. If you only want to use Dictidy, install the prebuilt app above. Source builds do not receive in-app updates.
- Xcode Command Line Tools:
xcode-select --install - Apple Silicon Mac
- macOS 13.3 or later
git clone https://github.com/danb235/dictidy.git
cd dictidy
./Scripts/setup-signing.sh
./Scripts/build-app.sh
./Scripts/run.shsetup-signing.sh creates a local self-signed signing identity. This keeps Accessibility and Keychain
grants stable across rebuilds. Without it, every rebuild gets a new ad-hoc signature and macOS may ask
for permissions again.
swift run DictidyTestsThe test runner is dependency-free and works with Command Line Tools.
Sources/
DictidyKit/ Pure models, prompts, API parsing, history, and diff logic
Dictidy/ Menu-bar app, settings UI, permissions, services, dictation, local LLM
DictidyTests/ Dependency-free test runner
Scripts/
build-app.sh Build and assemble Dictidy.app
run.sh Build if needed, then launch
setup-signing.sh Create a stable local signing identity
uninstall.sh Remove installed app state for a clean first-run test
Resources/
Info.plist App metadata, LSUIElement, microphone usage string
| Concern | Implementation |
|---|---|
| App shell | SwiftUI MenuBarExtra, no Dock icon |
| Global hotkeys | KeyboardShortcuts |
| Capture and replace | Synthetic Command-C, rewrite/transcribe, synthetic Command-V, then optional clipboard restore |
| Cloud rewriting | Anthropic Messages API and Models API via URLSession |
| Local rewriting | Qwen3-4B-Instruct via prebuilt llama.cpp XCFramework |
| Speech-to-text | Whisper large-v3-turbo via prebuilt whisper.cpp XCFramework |
| Audio capture | AVAudioEngine to 16 kHz mono samples |
| Launch at login | SMAppService.mainApp |
KeyboardShortcuts is pinned to 1.15.0 because newer releases use SwiftUI preview macros that require
full Xcode. Dictidy is intentionally buildable with Command Line Tools.
To remove the installed app:
rm -rf /Applications/Dictidy.appTo remove all stored state too:
rm -rf ~/Library/"Application Support"/Dictidy
rm -f ~/Library/Preferences/com.opensource.dictidy.plist
rm -rf ~/Library/Caches/com.opensource.dictidy
rm -rf ~/Library/HTTPStorages/com.opensource.dictidy
defaults delete com.opensource.dictidy 2>/dev/null || true
security delete-generic-password -s com.opensource.dictidy 2>/dev/null || true
tccutil reset Accessibility com.opensource.dictidy
tccutil reset Microphone com.opensource.dictidyFrom a source checkout, you can run the full reset script:
./Scripts/uninstall.sh --dry-run
./Scripts/uninstall.shMaintainers publish releases by updating CHANGELOG.md, pushing a vX.Y.Z tag, and letting
.github/workflows/release.yml build, sign, zip, checksum, and publish the GitHub Release.
Release signing secrets are created with:
./Scripts/setup-ci-signing.shContributions are welcome. Start with CONTRIBUTING.md and ARCHITECTURE.md. By participating, you agree to the Code of Conduct.
Your API key stays in the macOS Keychain. Dictation and local rewriting run on-device. Dictidy sends no telemetry. To report a vulnerability, see SECURITY.md.
MIT, see LICENSE.