Source: https://bestboy.dev/tony/docs # How Tony works > Tony is free, open source dictation for the Mac. Hold a key, speak, and let go, and your words land where the cursor is, in any app, transcribed on your Mac. Tony is a menu bar app for the Mac that turns your voice into text where the cursor is. Hold a key, speak, and let go: a message, a note, or a prompt for your AI agent. Tony transcribes on your Mac's Neural Engine with Parakeet Ultra, one of the most accurate open speech models there is, and types the result into whatever app you are in. A sentence takes about 50 ms, and your voice never leaves the Mac. Tony is free and open source under AGPL-3.0, with no account and no telemetry. It needs macOS 15 or later on Apple silicon. ## Hold a key, speak, let go | Key | What it does | | --- | --- | | Hold **fn** | Dictate, and let go to type it | | Double-tap **fn** | Hands-free: talk as long as you like, tap again to finish | | **Esc** | Cancel, nothing is typed | fn is the key until you pick another one: right ⌥, right ⌘, or any other modifier. A tap too short to hold a word types nothing, and pressing another key with yours, like a shortcut, lets the shortcut through. Esc keeps what you said as your last dictation in the menu bar panel, so a cancel by habit costs you no words. See [Settings](/tony/docs/settings.md) to change the key. ## What happens to your words 1. **Your key goes down.** Listening starts at once, so your first word counts. Other audio fades out, so neither you nor the mic hears it. 2. **You speak.** Silero voice activity detection follows your voice, and Tony trims the silence around it, so a quiet room never turns into a phantom sentence. Tony transcribes in the background at each pause while you keep talking. 3. **You let go.** Parakeet Ultra writes the text with punctuation and capitals. If you added [your words](/tony/docs/your-words.md), Parakeet CTC 110M listens for them in the same audio. 4. **Tony fits it to the cursor.** Filler words come out, and Tony reads the text before the cursor: a space after a word, none after an opening bracket, and no capital in the middle of a sentence. 5. **It lands.** Tony puts the text on the clipboard and presses ⌘V, so one ⌘Z undoes the whole dictation. ``` fn down → event tap → other audio fades, media pauses → AVAudioEngine, 16 kHz → Silero VAD → Parakeet Ultra and Parakeet CTC 110M on the Neural Engine → fillers out, fit to the cursor → clipboard → ⌘V ``` ## Works in every app - **Every app.** Native apps, Safari and Chrome, Slack and VS Code, Terminal: if it takes paste, it takes Tony. - **Every layout.** QWERTY, Dvorak, and Cyrillic layouts all paste correctly. - **Every word survives.** Every dictation stays on your clipboard, so when a paste can't land (a password field, no text field, an app that refuses paste), ⌘V brings it back. Your last dictation also waits in the [menu bar panel](/tony/docs/menu-bar.md) to paste again. - **Back to back.** Press the key again while your last dictation is still landing: it lands first, and the new one follows it. - **Quit without losing a word.** Quitting mid-dictation types it first. - **Unplug mid-sentence, keep the sentence.** When your mic goes away while you talk, Tony types what it heard. ## Out of your way - **The pill.** While you talk, a small pill floats at the bottom of your screen, over full-screen apps and on every Space. Nine bars follow your voice, and the dot, Tony's blue-to-orange mark, swells as you speak. It never takes focus or a click from the app beneath it. - **Your music waits while you talk.** Other audio fades out the moment you press the key and back in after you let go. On macOS 15.4 and later, the song or video playing pauses once it's quiet and plays on from the same spot, and music you had off stays off. - **Your AirPods keep sounding good.** Tony prefers the built-in mic, since opening an AirPods mic drops your music to phone-call quality. - **Problems in plain words.** A closed lid, a muted mic, an app holding secure input, or a Tony moved while running gets one plain sentence and, where it helps, a button that fixes it. - **Plays by your settings.** Light and dark, Reduce Motion, Reduce Transparency, Increase Contrast, and VoiceOver, which hears when Tony listens, types, or cancels. ## Read on - [Install and permissions](/tony/docs/install.md): download Tony, allow the microphone and Accessibility, and dictate for the first time. - [Prompting AI agents](/tony/docs/ai-agents.md): talk to Claude Code, Codex, or any agent in your terminal, your editor, or a chat box. - [Privacy and offline use](/tony/docs/privacy.md): what stays on your Mac, and the three times Tony goes online. - [Languages](/tony/docs/languages.md): the 25 languages Tony speaks, and switching between them mid-dictation. - [Your words](/tony/docs/your-words.md): names, brands, and jargon, spelled your way. - [Speed and accuracy](/tony/docs/speed-and-accuracy.md): how fast Tony transcribes, and how often it gets a word wrong. - [Menu bar panel and stats](/tony/docs/menu-bar.md): your last dictation, words dictated, and time saved. - [Settings](/tony/docs/settings.md): the key, the mic, the languages, and your words. - [FAQ](/tony/docs/faq.md): short answers to common questions. ## For agents reading this Every page of these docs is plain markdown at its URL plus `.md`. [llms.txt](https://bestboy.dev/tony/llms.txt) lists every page, and [llms-full.txt](https://bestboy.dev/tony/llms-full.txt) holds all of them in one file. --- Source: https://bestboy.dev/tony/docs/install # Install Tony and allow its permissions > Download Tony, the free dictation app for Mac, allow the microphone and Accessibility, and dictate your first sentence in about a minute. ## Requirements - macOS 15 or later. - A Mac with Apple silicon: the speech model runs on its Neural Engine. - Room for the speech model, about 600 MB, which downloads once on first launch. ## Install 1. [Download Tony](https://bestboy.dev/download/tony), open the disk image, and drag Tony to Applications. Open it from the disk image or Downloads instead, and Tony offers to move itself there, since it can only update itself from the Applications folder. 2. Open it. Tony asks which key you'll hold, then for the microphone and Accessibility, one at a time, while the speech model downloads. Add your words now or later. 3. Hold your key and say something into the practice field. That's it. Tony lives in the menu bar, opens at login, and updates itself. ## First launch, step by step Tony's welcome window shows one step at a time, and the first one left is open. 1. **Your key.** Pick the key you'll hold to talk: fn, right ⌥, right ⌘, or any other modifier (pick Other… and press it). 2. **Microphone.** So Tony hears you while you hold the key. Click Allow, and macOS asks once. 3. **Accessibility.** So Tony notices the key and types for you. Click Allow, then turn on Tony in the list. While System Settings is open, a tile under its window holds Tony, so you can drag it into the list. 4. **Speech model.** It runs on this Mac, and your voice never leaves it. The download shows its progress and the time left, then Tony prepares the model for your Mac's Neural Engine. 5. **Your words.** Names, brands, and jargon, spelled your way. Optional, and [Settings](/tony/docs/settings.md) has them later. 6. **Try it.** Hold your key, say "Hello, Tony," and let go. Your first dictation lands in the practice field. Open Tony at login is on unless you turn it off at the bottom of the window. You can close the window before the model is ready: the menu bar icon fills a ring around itself while it downloads. ## Permissions Tony asks for | Permission | Why Tony needs it | Where to turn it on | | --- | --- | --- | | Microphone | To hear you while you hold the key | System Settings > Privacy & Security > Microphone | | Accessibility | To notice the key from any app, and to press ⌘V for you | System Settings > Privacy & Security > Accessibility | The mic opens only while you dictate, so the orange dot in the menu bar shows only then. Accessibility also lets Tony read the few characters before the cursor, to fit the spacing and capitals of what it types. When a permission is missing, the [menu bar panel](/tony/docs/menu-bar.md) says so in one line, next to the button that fixes it. ## When fn opens the emoji picker macOS can run its own action when you press fn, set under System Settings > Keyboard, "Press 🌐 key to". With fn as your key, Tony warns that fn also opens Emoji & Symbols, changes the input source, or starts Apple Dictation, and its Fix button sets that option to Do Nothing. ## If something is off - **"Relaunch Tony to finish setup."** macOS sometimes needs Tony to restart before Accessibility takes effect. Click Relaunch. - **"Relaunch Tony to use the microphone."** macOS mutes the mic of an app that was moved while it runs. Click Relaunch. - **"The lid is closed, so the built-in mic is off."** Open the lid, or pick another mic in [Settings](/tony/docs/settings.md). - **The mic sends only silence.** Check that it isn't muted, or pick another one in Settings. - **"Secure input is on, so Tony can't type there."** A password field, Terminal's Secure Keyboard Entry, or a password manager can hide keys from every app. Tony names the app holding it when it can, and your text waits on the clipboard for ⌘V. - **"Tony can't download its speech model."** Check your connection and click Try Again. The download resumes where it stopped. ## Updates Tony updates itself from GitHub Releases. It checks at launch, every four hours, and when your Mac wakes, quietly, never with a window over your work. When an update is ready, the menu bar icon wears a dot and the panel offers Restart, which installs the newest release in a few seconds. A restart waits until you finish talking. You can also check by hand: Check for Updates in [Settings](/tony/docs/settings.md), or right-click the menu bar icon. ## Build from source You need macOS 15 or later on Apple silicon, Xcode 26, and Node 24. ```sh git clone https://github.com/bestboyhq/tony && cd tony node scripts/package.ts --debug && open release/Tony.app ``` Run the tests with `swift test` and `node --test 'scripts/*.test.ts'`. To check a speech change without the mic or the key, `--transcribe` prints what Tony would type: ```sh release/Tony.app/Contents/MacOS/Tony --transcribe clip.wav ``` --- Source: https://bestboy.dev/tony/docs/ai-agents # Dictate prompts to your AI agents, like Claude Code and Codex > Speak your prompt instead of typing it. Tony pastes it into Claude Code, Codex, your editor’s agent, or any chat box, with your project’s names spelled right, on your Mac. A good prompt carries context: what you tried, what broke, what you want next. Saying it is quicker than typing it, and Tony puts what you said where your cursor is. Hold a key, talk to your agent, and let go. ## Where it works Tony pastes, so your prompt lands with any agent that takes paste: - **A coding agent in your terminal**, like Claude Code or Codex, in Terminal or any terminal app. - **Your editor**, like VS Code, and the agent chat inside it. - **Any chat box** in a browser or a native app. - **[Malini](https://bestboy.dev/malini)**, which runs many Claude Code agents side by side, each in its own git worktree. Tony pastes and stops: you read the prompt, then press Return yourself. ## Short prompt, long brief - **Hold fn** for a quick instruction: "Run the tests again and fix what fails." - **Double-tap fn** for a long brief, and talk as long as you like, with your hands free. Tap fn again to finish. Tony transcribes in the background at each pause, so even a five-minute brief lands the moment you finish. - **Esc** cancels without typing, and keeps what you said as your last dictation in the [menu bar panel](/tony/docs/menu-bar.md), one click from Paste. - **Back to back.** Press the key again while your last prompt is still landing: it lands first, and the next one follows it. ## Your stack, spelled right Agents need the exact names: the library, the service, the table. Add them under [Your words](/tony/docs/your-words.md), and Tony writes them your way: "super base" lands as Supabase. A second, small model checks each one against your voice, so a word swaps in only where you said it. ## Clean text, where the cursor is - **No "um".** Filler words come out, and the sentence keeps its commas and capitals. You say "Um, so the super base migration fails. Can you, uh, check the policies?", and with Supabase in your words, Tony types "So the Supabase migration fails. Can you check the policies?" - **Fits the cursor.** Dictate into the middle of a prompt you are editing and Tony leaves out the capital, adds a space after a word, and none after an opening bracket. - **Undo is one ⌘Z.** A prompt lands as a single paste. ## When the terminal won't take it Terminal's Secure Keyboard Entry, and a password manager that left secure input on, hide keys from every app and block paste. Tony says which app holds secure input, and your prompt waits on the clipboard for ⌘V. ## Your prompts stay yours Prompts carry your codebase's names and your half-formed ideas. Tony hears them on your Mac's Neural Engine, keeps the audio in memory, and sends them nowhere: the only place your prompt goes is the app you paste it into. See [Privacy and offline use](/tony/docs/privacy.md). ## Grip, Tony, and Malini Tony is a Bestboy app, like its siblings: - **[Grip](https://bestboy.dev/grip)**, the free and open source screen recorder, shows what you mean. - **Tony** says it. - **[Malini](https://bestboy.dev/malini)** runs many Claude Code agents side by side and takes each one to a merged pull request. Show it with Grip. Say it with Tony. Ship it with Malini. ## Related - [Install and permissions](/tony/docs/install.md) - [Settings](/tony/docs/settings.md): pick the key you hold to talk. - [Speed and accuracy](/tony/docs/speed-and-accuracy.md) --- Source: https://bestboy.dev/tony/docs/settings # Settings: your key, mic, languages, and words > Tony has four choices, where people really differ - the push-to-talk key, the microphone, the languages you speak, and your words - and a tuned default for everything else. Tony works with zero setup. Settings has four choices, the ones where people really differ: the key, the mic, the languages, and your words. Everything else is a tuned default. Open Settings from the gear in the [menu bar panel](/tony/docs/menu-bar.md), with ⌘, while the panel is open, or from Settings… when you right-click the menu bar icon. ## Hold to dictate The key you hold to talk. Pick fn, Right ⌥, Right ⌘, Right ⌃, Right ⇧, Left ⌥, or Left ⌃, or pick Other… and press any modifier. A modifier on its own types nothing, so holding it never leaves a stray character behind. - **Hold** to dictate, and let go to type it. - **Double-tap** for hands-free: talk as long as you like, and tap again to finish. - **Esc** cancels, and nothing is typed. With fn as your key, Tony checks what macOS does when you press it. If fn also opens Emoji & Symbols, changes the input source, or starts Apple Dictation, Settings says so, and Fix sets System Settings > Keyboard, "Press 🌐 key to", to Do Nothing. ## Microphone Automatic, or any mic your Mac has. Automatic follows your Mac's default input, with two exceptions: - It prefers the built-in mic over a Bluetooth headset, since a headset sounds like a phone call while its mic is open, and opening it takes long enough to lose your first words. - With the lid closed, when the built-in mic is off, it picks another mic that isn't Bluetooth, if you have one. ## Languages Any language, or the ones you speak, as many as you like. Until you pick, Tony starts with the languages your Mac is set up for. See [Languages](/tony/docs/languages.md) for all 25 and why picking helps. ## Your words Names, brands, and jargon Tony should write your way. Press Return after each one. See [Your words](/tony/docs/your-words.md). ## Open at login On by default, so Tony is ready whenever your Mac is. ## Version and updates Settings shows Tony's version, and Check for Updates looks for a new one now. Tony also checks on its own at launch, every four hours, and when your Mac wakes. See [Install and permissions](/tony/docs/install.md#updates). --- Source: https://bestboy.dev/tony/docs/your-words # Your words, spelled your way > Teach Tony the names, brands, and jargon you use, so “super base” lands as Supabase. A second, on-device model checks each word against your voice before it swaps in. Speech models know everyday words, and guess at the rest. Add the names, brands, and jargon you use, and Tony writes them your way: "super base" lands as Supabase. ## Add your words Open [Settings](/tony/docs/settings.md) from the menu bar panel and type into Your words. Press Return or type a comma after each one, and click the × on a word to remove it. The welcome window offers the same field when you first open Tony. A word can be a phrase, and Tony keeps it in the capitals you typed. Adding the same word twice, in any capitals, keeps the first. ## How Tony listens for them Parakeet Ultra can't be told which words to expect, so a second, small model listens to the same audio: Parakeet CTC 110M, on the Neural Engine. One of your words replaces what Parakeet wrote only where all three hold: - Parakeet was unsure of the word it wrote. - Your word is spelled alike. - The audio fits your word better. A wrong swap costs more trust than a miss, so Tony leaves alone the everyday words Parakeet is sure of. Punctuation around a swapped word stays as it was. - **Endings stay.** A word with an ending, like "Tailscales" for Tailscale, is left alone, so the sentence doesn't break. - **Capitals, your way.** A word that isn't everyday English is written in your capitals wherever Parakeet heard it: "tailscale" becomes Tailscale. An everyday English word in your list keeps its normal capitals mid-sentence. - **Mid-sentence.** Dictate into the middle of a sentence and Tony lowercases the first word, unless it is one of yours. ## What it costs The model for your words, about 100 MB, downloads once, the first time you add any. While it downloads and warms up, Settings says "Getting ready to listen for them…". It runs alongside Parakeet on the same audio, so a dictation with your words still lands about as fast. The word model knows English letters only, so it can't listen for a word with other letters, like Mokotów. Tony still writes such a word in your capitals wherever Parakeet heard it. ## See it work The [menu bar panel](/tony/docs/menu-bar.md) counts how often Tony spelled your words your way, under your stats. ## Related - [Languages](/tony/docs/languages.md) - [Privacy and offline use](/tony/docs/privacy.md): your words stay in Tony's preferences on your Mac. --- Source: https://bestboy.dev/tony/docs/languages # Dictation in 25 languages, detected as you speak > Tony dictates in 25 European languages, from English, German, and Polish to Ukrainian and Greek. It detects the language as you speak, and you can switch mid-dictation. Tony speaks the 25 languages of Parakeet, the speech model it runs. It detects the language as you speak, so you switch between them without touching a setting. ## The 25 languages | Language | Alphabet | | --- | --- | | Bulgarian | Cyrillic | | Croatian | Latin | | Czech | Latin | | Danish | Latin | | Dutch | Latin | | English | Latin | | Estonian | Latin | | Finnish | Latin | | French | Latin | | German | Latin | | Greek | Greek | | Hungarian | Latin | | Italian | Latin | | Latvian | Latin | | Lithuanian | Latin | | Maltese | Latin | | Polish | Latin | | Portuguese | Latin | | Romanian | Latin | | Russian | Cyrillic | | Slovak | Latin | | Slovenian | Latin | | Spanish | Latin | | Swedish | Latin | | Ukrainian | Cyrillic | Across these 25 languages (the FLEURS benchmark), Parakeet Ultra cuts the word error rate from 11.6% to 9.6%. See [Speed and accuracy](/tony/docs/speed-and-accuracy.md). ## Pick the languages you speak Settings has a Languages menu: Any language, or the ones you speak, as many as you like. Until you pick, Tony starts with the languages your Mac is set up for: the ones in your language list and your keyboards. Picking keeps every word in the letters of the languages you speak. Without it, the model can write Polish "Tak" in Cyrillic, as "Так", and where the audio is unclear, drift into a language you don't speak, like Czech "pořád" or Hungarian "részünk" in the middle of Polish. Pick Polish and English, and "deploy" stays while "ř" never lands; pick Polish and Ukrainian, and both alphabets stay. Pick Any language, and the model is free to choose. The menu also lists Belarusian, Bosnian, and Serbian. They are not among the 25 languages Parakeet was trained on, so picking one only keeps the text in its letters. ## Switch languages mid-dictation Start in English and finish in Polish. Where the model loses track of the switch, Tony transcribes each language on its own, so neither comes out garbled. It splits the dictation at the pauses, and keeps the split only where it makes the model sure of its words. ## Punctuation, capitals, and fillers - **Punctuation and capitals included.** The model writes them, so the text reads like you typed it. - **No "um".** Filler words come out: um and uh in English, äh and ähm in German, euh in French, ehm in Italian, Spanish, and Dutch, yyy in Polish, and э in Russian and Ukrainian. The sentence around them keeps its commas and capitals. ## Related - [Your words](/tony/docs/your-words.md): names and jargon in any of these languages, spelled your way. - [Settings](/tony/docs/settings.md): where the Languages menu lives. --- Source: https://bestboy.dev/tony/docs/menu-bar # The menu bar panel and your dictation stats > Click Tony in the menu bar for your last dictation, words dictated, time saved over typing, speaking pace, streak, six months of activity, and the apps you dictate into. Tony lives in the menu bar. Click its icon for a glass panel with your last dictation, your stats, and Settings. ## The panel - **What Tony is doing.** "Hold fn to dictate" when all is well, the download while the speech model arrives, or the one problem that needs you, next to the button that fixes it. - **Your last dictation,** one click from Copy, or Paste again where you are now. - **Your stats,** below. - **Settings** behind the gear, and About and Quit Tony behind the ⋯ menu. The panel never takes focus from your app, so Paste lands where you were typing. Click away or press Esc to close it. Right-click the icon for a classic menu: About Tony, Settings…, Check for Updates…, and Quit Tony. Open Tony from Spotlight or Finder while it runs, and the panel comes up. ## Your stats - **Words dictated, and the time they saved you:** typing them at 40 words a minute, an average speed, minus the time you spent saying them. - **Speaking pace,** in words a minute. - **Key up to text,** how long your text takes to land after you let go, on a typical dictation. - **Streak,** how many days in a row you have dictated, with your longest on hover. - **Six months at a glance.** Every day you dictated, in a grid like GitHub's contributions, in Tony's orange. Hover a day for its word count. - **Where you dictate.** The four apps that got the most of your words. - **The small wins.** How many dictations, how many fillers Tony took out, and how often it spelled your words your way. Stats are counts by day and by app, kept in one small file on your Mac. Never what you said. See [Privacy and offline use](/tony/docs/privacy.md). ## The icon tells you Tony's mic in the menu bar fills in while it listens, and wears a dot when an update is ready. While the speech model downloads, a ring fills around it. ## When something needs you The panel's top line names the one thing that stops Tony, and the fix: | The panel says | The button | | --- | --- | | Tony needs the microphone. | Allow, or Open Settings | | Tony needs Accessibility access. | Allow | | Relaunch Tony to finish setup. | Relaunch | | Relaunch Tony to use the microphone. | Relaunch | | Tony can't download its speech model. Check your connection. | Try Again | When an update is ready, the panel shows it under that line, with Restart. See [Install and permissions](/tony/docs/install.md). ## Related - [Settings](/tony/docs/settings.md) - [How Tony works](/tony/docs.md) --- Source: https://bestboy.dev/tony/docs/privacy # Private, offline speech to text on your Mac > Tony transcribes on your Mac’s Neural Engine. Audio stays in memory and never leaves the Mac, there is no account and no telemetry, and dictation works offline. Tony is on-device voice typing. Your voice is transcribed on your Mac's Neural Engine, not on a server, so it works offline and nobody else hears what you say. ## What stays on your Mac - **Your audio.** It stays in memory while Tony transcribes it, and it is never written to disk. - **Your text.** It goes to the app you are typing in, through the clipboard, and nowhere else. The last dictation waits in memory for the menu bar panel's Copy and Paste. - **Your clipboard.** Tony puts each dictation on this Mac's clipboard only, so Universal Clipboard doesn't hand it to your other devices. - **Your stats.** Counts by day and by app, kept in one small file on your Mac, `stats.json` in `~/Library/Application Support/Tony`. Never what you said. - **Your settings and your words.** In Tony's preferences on your Mac. There is no account and no telemetry. Tony sends no analytics, no crash reports, and no usage data. ## When Tony goes online Tony goes online for three things only: 1. **The speech model, once.** Parakeet Ultra, about 600 MB, from Hugging Face on first launch. 2. **The model for your words, once.** Parakeet CTC 110M, about 100 MB, the first time you add [your words](/tony/docs/your-words.md). 3. **Update checks.** Tony reads its update feed on GitHub Releases at launch, every four hours, and when your Mac wakes. Once the models are on your Mac, dictation needs no connection at all. Turn off Wi-Fi and Tony keeps typing. ## Only while you hold the key The microphone opens when your key goes down and closes when you let go, so the orange dot in the menu bar shows only while Tony listens. Between dictations the mic is closed and the CPU rests. Tony's microphone prompt says it plainly: "Tony hears you only while you hold the dictation key. Audio stays on this Mac." ## Open source, so you can check Tony is free and open source under [AGPL-3.0](https://github.com/bestboyhq/tony/blob/main/LICENSE). Every release is built by CI from a tagged commit, so the code behind each download is public on [GitHub](https://github.com/bestboyhq/tony). Tony's [architecture decisions](https://github.com/bestboyhq/tony/tree/main/docs/adr) are written down, including the one that keeps it local-only and private. ## Related - [Speed and accuracy](/tony/docs/speed-and-accuracy.md): what running on device costs, which is nothing. - [Install and permissions](/tony/docs/install.md): why Tony asks for the microphone and Accessibility. - [FAQ](/tony/docs/faq.md) --- Source: https://bestboy.dev/tony/docs/speed-and-accuracy # Fast, accurate speech to text on the Neural Engine > Tony transcribes a sentence in about 50 ms on your Mac’s Neural Engine, with Parakeet Ultra at a 5.8% English word error rate, fewer errors than Whisper large-v3. Tony runs Parakeet Ultra on the Neural Engine of your Mac. A sentence takes about 50 ms, and its English word error rate is 5.8%. ## Fast | You speak for | Tony transcribes it in | | --- | --- | | 5 seconds | **49 ms** | | 13 seconds | **70 ms** | | 26 seconds | **147 ms** | Parakeet Ultra on the Neural Engine of a MacBook Pro with M5 Pro, median of 5 runs. The clips were read by a macOS voice, and every one came out word for word. - **Your first word counts.** The audio engine stays prepared between dictations, so capture starts on key down, not a beat later. - **Warm from the first press.** The model loads at launch and pays its Neural Engine setup up front, so the first dictation of the day is as quick as the hundredth. - **Talk for five minutes, wait for none.** Tony transcribes in the background at each pause while you keep talking, so letting go is as instant after a long ramble as after one sentence. - **Back to back.** Press the key again while your last dictation is still landing: it lands first, and the new one follows it. - **Idle is free.** Between dictations the mic is closed, so no orange dot, and the CPU rests. The [menu bar panel](/tony/docs/menu-bar.md) shows your own number: Key up to text, how long your text takes to land after you let go, on a typical dictation. ## Accurate Tony runs Parakeet Ultra: NVIDIA's Parakeet TDT v3, post-trained by Moondream to make fewer errors on every benchmark they report. | Model | English word error rate | Parameters | | --- | --- | --- | | Whisper large-v3 | 7.44% | 1.55 B | | Parakeet TDT v3 | 6.26% | 0.6 B | | **Parakeet Ultra, in Tony** | **5.80%** | **0.6 B** | Lower is better. Averages over the [Open ASR Leaderboard](https://huggingface.co/spaces/hf-audio/open_asr_leaderboard) English sets: Parakeet from [Moondream's model card](https://huggingface.co/moondream/parakeet-ultra), Whisper from the [leaderboard paper](https://arxiv.org/abs/2510.06961). Across 25 languages (FLEURS), Ultra cuts the error rate from 11.6% to 9.6%, and in background noise from 6.7% to 5.8%. ## What makes the text read right - **Punctuation and capitals included.** The model writes them, so the text reads like you typed it. - **No "um".** Filler words come out, and the sentence around them keeps its commas and capitals. - **Fits the cursor.** Tony reads the text before the cursor: a space after a word, none after an opening bracket, and no capital in the middle of a sentence. - **Silence types nothing.** Voice activity detection trims the quiet, so a cough or a quiet room never turns into a phantom sentence. - **Switch languages mid-dictation.** Where the model loses track of a switch, Tony transcribes each language on its own. See [Languages](/tony/docs/languages.md). - **Your words, spelled your way.** Names and jargon the model doesn't know. See [Your words](/tony/docs/your-words.md). ## Under the hood - **Parakeet Ultra**, 0.6 B parameters, writes the text. - **Silero VAD** finds where you spoke. - **Parakeet CTC 110M** listens for your words. All three run through Core ML with [FluidAudio](https://github.com/FluidInference/FluidAudio), on your Mac, with no server in the loop. See [Privacy and offline use](/tony/docs/privacy.md). --- Source: https://bestboy.dev/tony/docs/faq # Frequently asked questions > Answers about Tony, the free dictation app for Mac - price, privacy, offline use, languages, accuracy, the apps it types into, and what it needs to run. ## Is Tony free? Yes. Tony is free and open source under AGPL-3.0, with no account and no subscription. ## Can I dictate prompts to AI agents like Claude Code or Codex? Yes. Tony pastes where your cursor is, so a prompt lands in your agent in the terminal, in your editor, or in any chat box. Double-tap your key for a long brief, and add your project's names under Your words. See [Prompting AI agents](/tony/docs/ai-agents.md). ## Does Tony work offline? Yes. Tony downloads its speech model once, about 600 MB, and from then on it transcribes on your Mac with no connection. It goes online only for that download, the model for your words if you add any, and update checks. See [Privacy and offline use](/tony/docs/privacy.md). ## Does my voice leave my Mac? No. Audio stays in memory on your Mac and is never written to disk, and there is no account and no telemetry. Tony's stats are counts, never what you said. ## Which Macs does Tony run on? Macs with Apple silicon on macOS 15 or later. The speech model runs on the Neural Engine, which Intel Macs don't have. ## Which languages does Tony speak? 25 European languages, detected as you speak: Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, and Ukrainian. See [Languages](/tony/docs/languages.md). ## How accurate is it? Tony runs Parakeet Ultra, with a 5.8% word error rate across the Open ASR Leaderboard's English sets, against 7.44% for Whisper large-v3. See [Speed and accuracy](/tony/docs/speed-and-accuracy.md). ## How fast is it? About 50 ms for a sentence, and 147 ms for 26 seconds of talk, on a MacBook Pro with M5 Pro. Long dictations transcribe in the background at each pause while you talk, so letting go is as quick after five minutes as after one sentence. ## Which apps can I dictate into? Any app that takes paste: native apps, Safari and Chrome, Slack and VS Code, Terminal. Tony pastes with ⌘V, on QWERTY, Dvorak, and Cyrillic layouts alike. ## What if the text can't be typed? Every dictation stays on your clipboard, so when a paste can't land, in a password field or an app that refuses paste, ⌘V brings it back. Your last dictation also waits in the menu bar panel to copy or paste again. ## Which key do I hold? fn, until you pick another: right ⌥, right ⌘, or any other modifier, in [Settings](/tony/docs/settings.md). Double-tap it for hands-free, and press Esc to cancel. ## Can Tony spell names and jargon? Yes. Add them under Your words, and "super base" lands as Supabase. See [Your words](/tony/docs/your-words.md). ## Does Tony remove "um" and "uh"? Yes. Filler words come out, and the sentence around them keeps its commas and capitals. ## What happens to my music while I talk? It fades out when you press the key and back in after you let go. On macOS 15.4 and later, the song or video playing pauses once it's quiet and plays on from the same spot, and music you had off stays off. ## How does Tony update? It updates itself from GitHub Releases, checking quietly at launch, every four hours, and when your Mac wakes. When an update is ready, Restart installs it in a few seconds, and it waits until you finish talking. ## Can I read the code? Yes, on [GitHub](https://github.com/bestboyhq/tony). Every release is built by CI from a tagged commit, and issues and pull requests are welcome.