Caw is hold-to-talk dictation for macOS. Hold the Fn/Globe key (or click the small floating pill), speak, let go, and the text appears where your cursor is. You read it and press Return yourself; Caw never sends anything for you.
Caw was made by someone whose speech standard dictation doesn’t follow well: an accent, a mumble, a lot of stopping and starting. It’s for anyone whose speech gets lost the same way, including people who stutter. Pauses, restarts and repeated sounds are expected, not treated as mistakes.
The Xcode project and product are still called VoiceApp.
Every recognizer mishears some of your words the same way every time. Caw keeps a list of those mishearings, which you approve and edit yourself: "when it hears this, write that". The list lives in Settings › Words & Learning. With Learn From My Fixes on, Caw notices when you correct a word right after dictating it and suggests a fix; nothing is added to the list until you approve it.
- Speech recognition runs on your Mac with Apple's speech engine. Network recognition is switched off.
- No accounts, no analytics. Caw itself has no network access. The one exception is optional: to type from the Caw phone app (below), a small bundled helper listens on your local network for phones you paired with a one-time code. It runs only while Let phones type on this Mac is on.
- Optional extras (tidying punctuation, the Crumb chat) use Apple's on-device model only.
Scripts/verify-capabilities.shruns on every build and fails it if the code reaches for anything beyond this (network, screen capture, keystroke reading, writing into other apps outside one file).
You don't have to build Caw to use it.
- Download
Caw-Beta-<version>.dmgfrom the latest release. - Open it and drag Caw Beta onto Applications.
- Open Caw Beta from Applications. It is signed with a Developer ID and notarized by Apple, so macOS only asks once whether to open an app from the internet.
- Grant Microphone, Speech Recognition and Accessibility when it asks (and Input Monitoring if it asks, for the Fn key), then hold Fn/Globe and talk.
It runs on Apple silicon and Intel Macs with macOS 14 or later.
Dictate in the Caw app on your phone and the text is typed on your Mac, wherever the cursor is. In Caw's menu choose Pair a phone… and scan the QR code with the phone (or type the code). The menu shows whether a phone is connected; Let phones type on this Mac turns it off. The phone types through Caw's own Accessibility permission, and macOS asks once to let Caw use the local network.
This is Caw Desktop's receiver, built into the app. If you used the separate Caw Desktop app on this Mac, quit it and remove it; your paired phones carry over.
- macOS 26 for the new speech engine. On older macOS (14 or later) Caw falls back to Apple's classic engine; you can also choose Classic in Settings.
- Xcode 26 or later to build.
- Open
VoiceApp.xcodeprojin Xcode. - Choose the Caw Beta scheme and run it. (The
VoiceAppscheme builds the author's personal edition, which differs only in a few personal extras that are not part of this repo.) - Grant Microphone, Speech Recognition and Accessibility when macOS asks (and Input Monitoring if it asks, for the Fn key). Accessibility lets Caw paste at your cursor; without it, the text is copied and you press ⌘V.
- Hold Fn/Globe and talk. A recording stops on its own after 5 minutes.
The project builds with an ad-hoc signature so anyone can build it. macOS may ask for permissions again after you rebuild; to avoid that, set your own team under Signing & Capabilities.
Scripts/release-mac.sh builds the signed, notarized download. It needs a
Developer ID certificate and Apple notarization credentials, so it only works
for the maintainer.
The phone helper is built from a
caw-desktop checkout with
Rust: Scripts/build-phone-helper.sh <caw-desktop folder> (default
../caw-desktop). Every build then copies it into the app. Without it the app
still builds, and Pair a phone… says the phone connection isn't included.
Tests: Scripts/run-tests.sh compiles and runs the standalone tests in
Scripts/Tests (the phone link's test with the real helper runs when the
helper and caw-desktop's caw-fake-phone are built).
Personal project. It works for the author; no support is promised.
- Code: MIT, see
LICENSE. - Artwork, the Crumb character, and the names Caw and Crumb:
all rights reserved, see
ART-LICENSE.md. - Third-party code (three.js): see
THIRD_PARTY_LICENSES.md.