Handy Bar app icon: a cream waveform in a purple capsule on a coral square

Dictation that lives in your menu bar.

Press a shortcut, speak, and your words are typed where your cursor is. Transcription runs on your Mac.

Open source, MIT. An unofficial fork of Handy by CJ Pais, not affiliated with the Handy project.

The Handy Bar popover, open on its Home tab while listening: Cancel and Stop buttons, microphone, shortcut and sound settings, and the three latest dictations with Copy buttons.

The recording indicator floats at the edge of your screen while you speak.

Handy, moved into the menu bar

Handy is the open source speech-to-text app by CJ Pais. Handy Bar keeps its engine and rebuilds the macOS interface as a native menu bar app.

One popover holds the whole app

Click the icon for Home, History, Models, Cleanup and Settings. There's no settings window and no Dock icon.

Native, with no web view running

The popover and the recording indicator are AppKit, drawn from Rust. Views are built when the popover opens and freed when it closes, so it costs nothing while it's shut.

Your voice stays on your Mac

Pick a model in the app (Whisper, Parakeet, Moonshine, Canary and others) and it downloads once, then transcribes locally.

Watch your words arrive

Set the recording indicator to "Levels + live text" and use a streaming model such as Parakeet Unified. The indicator opens into a card and shows what it has heard while you're still talking.

  • It never takes focus or clicks, so your cursor stays where you left it.
  • It follows you across Spaces and sits over full-screen apps.
  • Put it at the top or the bottom of the screen, or keep it to mic levels only.

Levels

Levels + live text

The indicator redrawn in HTML from the app's layout code. The real one is a native panel.

Clean up with the subscription you already have

Cleanup is optional and has its own shortcut. Run it through Handy's AI providers (OpenAI, Anthropic, Groq, Apple Intelligence and more), or through any command-line tool you're signed in to.

claude -p --model haiku codex exec
  1. Press the cleanup shortcut. The command starts straight away.
  2. Speak. The tool's start-up time passes while you're talking.
  3. Stop. Your prompt and your words go to the command on standard input.
  4. What it prints is pasted. If the command is slow, fails, or drops your words, your original text is pasted.
You say
um so can you send the the invoice to Priya by Friday, no wait, Thursday
A cleanup prompt can paste
Can you send the invoice to Priya by Thursday?
The Cleanup tab: Clean up with AI is on, Run with is set to Command-line tool, Tool is Codex, the command is codex exec, the time limit is 30 seconds and Start while you speak is on.
The Cleanup tab. You choose the tool, the command, the time limit and the prompt.

Give cleanup some context, if you want to

A cleanup model spells names better when it knows what you're looking at. App and window name are on by default; screen text is off until you turn it on.

  • Include the app you're in

    Adds the app name and window title to the cleanup prompt.

  • Include text on screen

    Opt-in, and it needs the Screen Recording permission. The text is read on your Mac with Apple Vision, then added to the cleanup prompt so the names in front of you come out spelled right.

What leaves your Mac

For plain dictation, nothing. Cleanup is the only part that can send text anywhere, and only to the provider or command you choose.

WhatWhere it goes
Your voiceNowhere. It's recorded and transcribed on your Mac.
Speech modelsDownloaded once from inside the app, then run locally.
History and recordingsKept on your Mac. Copy or delete entries in the History tab.
Transcribed textTyped at your cursor. With cleanup on, it also goes to the AI provider or command-line tool you picked.
App name, window title, text on screenOnly when you use the cleanup shortcut, and only inside the cleanup prompt. Screen text is off by default.
Update checksTurned off. Handy's updater would replace Handy Bar with upstream Handy.

Build it from source

There are no prebuilt releases yet. Handy Bar is developed and tested on macOS 26 on Apple Silicon. You need Rust and Bun; see BUILD.md for toolchain setup.

Terminal
git clone https://github.com/thekindofme/Handy.git handy-bar
cd handy-bar
git checkout menubar-native
bun install
mkdir -p src-tauri/resources/models
curl -L -o src-tauri/resources/models/silero-vad-v6.2-F32.gguf \
  https://huggingface.co/handy-computer/silero-vad-v6.2-gguf/resolve/main/silero-vad-v6.2-F32.gguf
scripts/menubar/build-test-app.sh
open "src-tauri/target/debug/bundle/macos/Handy Bar.app"

macOS ties Microphone and Accessibility permissions to the app's signature. If you rebuild often, set HANDY_SIGNING_IDENTITY to a local code-signing identity, or you'll be asked again after every build.

To run Handy's original interface from the same build, start it with HANDY_WEBVIEW_UI=1.

Working today

Dictation, live text, the recording indicator, model downloads, history, microphone and output selection, shortcuts, AI cleanup and most settings.

Not in the menu bar yet

Adding or deleting cleanup prompts, fetching a provider's model list, custom words, filler-word lists, debug tuning and translations. The menu bar interface is English only for now.

Built on Handy.

Handy Bar exists because Handy, by CJ Pais and its contributors, is open source. The recording, the models and the transcription are Handy's work. Handy Bar keeps Handy's MIT license.

This is an unofficial fork, not affiliated with or endorsed by the Handy project. The Handy Bar name and icon are this fork's own; Handy's name and logo belong to Handy. Found a bug in Handy Bar? Please report it here, not upstream.