VibeMouse

Mouse-side-button voice dictation for macOS. Bind speech‑to‑text to your mouse side buttons—talk, click, code.

macOS 13+ Python 3.10+ SenseVoice ONNX Apache-2.0

How It Works

Front Button

Toggle voice recording on and off. Press once to start, press again to stop and transcribe.

Rear Button · Idle

Sends Enter (or Ctrl+Enter / Shift+Enter). Submit prompts, confirm dialogs—no keyboard needed.

Rear Button · Recording

Stops recording and transcribes your speech. The text is typed into the focused app or copied to clipboard.

Features

SenseVoice ONNX ASR

Fast, accurate speech recognition running locally on CPU via ONNX Runtime. No GPU required.

Menu-Bar Native

Runs as a menu-bar accessory—select input devices, toggle Start at Login, and configure from the icon. No Dock clutter.

Smart Output Routing

Types text directly into the focused app. Falls back to clipboard or paste automatically with reason tracking.

Zero External Services

All speech recognition runs on-device. No API keys, no cloud dependencies, no data leaves your Mac.

Quick Start

Option A — Download

Download VibeMouse-0.2.0.zip from the latest release, extract it, and move VibeMouse.app to /Applications. Notarized and signed—no Gatekeeper warnings.

Option B — Build from Source
git clone https://github.com/madeye/VibeMouse.app.git
cd VibeMouse.app
bash build/build_macos_app.sh
open dist/VibeMouse.app

The build script creates a virtualenv, downloads the SenseVoice ONNX model, and packages everything into a signed .app bundle via PyInstaller.

Configuration

All settings are environment variables. No config files needed.

VariableDefaultPurpose
VIBEMOUSE_ENTER_MODEenterRear-button submit: enter, ctrl_enter, shift_enter, none
VIBEMOUSE_AUTO_PASTEfalseAuto-paste when output falls back to clipboard
VIBEMOUSE_AUDIO_FEEDBACKtruePlay audio feedback sounds for recording events
VIBEMOUSE_PREWARM_ON_STARTtruePreload ASR model on startup
VIBEMOUSE_FRONT_BUTTONx1Mouse button for record toggle
VIBEMOUSE_REAR_BUTTONx2Mouse button for enter / transcribe

Full reference: vibemouse/config.py