A free, open source, and extensible speech-to-text application that works completely offline.
Handy is a cross-platform desktop application that provides simple, privacy-focused speech transcription. Press a shortcut, speak, and have your words appear in any text field. This happens on your own computer without sending any information to the cloud.
Handy supports command-line flags for controlling a running instance and customizing startup behavior. These work on all platforms (macOS, Windows, Linux).
Remote control flags (sent to an already-running instance via the single-instance plugin):
Handy links gtk-layer-shell on Linux. If startup fails with error while loading shared libraries: libgtk-layer-shell.so.0, install the runtime package for your distro:
Distro
Package to install
Example command
Ubuntu/Debian
libgtk-layer-shell0
sudo apt install libgtk-layer-shell0
Fedora/RHEL
gtk-layer-shell
sudo dnf install gtk-layer-shell
Arch Linux
gtk-layer-shell
sudo pacman -S gtk-layer-shell
For building from source on Ubuntu/Debian, you may also need libgtk-layer-shell-dev.
The recording overlay is disabled by default on Linux (Overlay Position: None) because certain compositors treat it as the active window. When the overlay is visible it can steal focus, which prevents Handy from pasting back into the application that triggered transcription. If you enable the overlay anyway, be aware that clipboard-based pasting might fail or end up in the wrong window.
If you are having trouble with the app, running with the environment variable WEBKIT_DISABLE_DMABUF_RENDERER=1 may help
Global keyboard shortcuts (Wayland): On Wayland, system-level shortcuts must be configured through your desktop environment or window manager. Use the [CLI flags]!(#cli-parameters) as the command for your custom shortcut.
GNOME:
Open Settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts
Click the + button to add a new shortcut
Set the Name to Toggle Handy Transcription
Set the Command to handy --toggle-transcription
Click Set Shortcut and press your desired key combination (e.g., Super+O)
KDE Plasma:
Open System Settings > Shortcuts > Custom Shortcuts
Click Edit > New > Global Shortcut > Command/URL
Name it Toggle Handy Transcription
In the Trigger tab, set your desired key combination
In the Action tab, set the command to handy --toggle-transcription
Sway / i3:
Add to your config file (~/.config/sway/config or ~/.config/i3/config):
bindsym $mod+o exec handy --toggle-transcription
Hyprland:
Add to your config file (~/.config/hypr/hyprland.conf):
bind = $mainMod, O, exec, handy --toggle-transcription
You can also manage global shortcuts outside of Handy via Unix signals, which lets Wayland window managers or other hotkey daemons keep ownership of keybindings:
Signal
Action
Example
SIGUSR2
Toggle transcription
pkill -USR2 -n handy
SIGUSR1
Toggle transcription with post-processing
pkill -USR1 -n handy
Example Sway config:
bindsym $mod+o exec pkill -USR2 -n handy
bindsym $mod+p exec pkill -USR1 -n handy
pkill here simply delivers the signal—it does not terminate the process.
The following are recommendations for running Handy on your own machine. If you don’t meet the system requirements, the performance of the application may be degraded. We are working on improving the performance across all kinds of computers and hardware.
For Whisper Models:
macOS: M series Mac, Intel Mac
Windows: Intel, AMD, or NVIDIA GPU
Linux: Intel, AMD, or NVIDIA GPU
Ubuntu 22.04, 24.04
For Parakeet V3 Model:
CPU-only operation - runs on a wide variety of hardware
Minimum: Intel Skylake (6th gen) or equivalent AMD processors
Performance: ~5x real-time speed on mid-range hardware (tested on i5)
Automatic language detection - no manual language selection required
If you’re behind a proxy, firewall, or in a restricted network environment where Handy cannot download models automatically, you can manually download and install them. The URLs are publicly accessible from any browser.
Handy can auto-discover custom Whisper GGML models placed in the models directory. This is useful for users who want to use fine-tuned or community models not included in the default model list.
How to use:
Obtain a Whisper model in GGML .bin format (e.g., from Hugging Face)
Place the .bin file in your models directory (see paths above)
Restart Handy to discover the new model
The model will appear in the “Custom Models” section of the Models settings page
Important:
Community models are user-provided and may not receive troubleshooting assistance
The model must be a valid Whisper GGML format (.bin file)
Model name is derived from the filename (e.g., my-custom-model.bin → “My Custom Model”)