Turn a third-generation Apple TV Siri Remote into a one-handed macOS controller for terminal coding, desktop navigation, mouse control, and push-to-talk voice input.
- One-handed coding controls: map Enter, Escape, Tab, Backspace, shortcuts, and shell actions.
- Remote mouse: move, click, scroll, swipe, and drag from the Siri Remote clickpad.
- macOS navigation: switch Spaces and open Mission Control with familiar swipe gestures.
- Remote microphone: hold a button and speak through the Siri Remote's built-in microphone.
- Hot-reloading config: edit one JSONC file and mappings change without rebuilding or restarting.
- Per-app modes and layers: use different controls in a terminal, browser, or Remote Desktop.
Copy examples/config.vibe-coding.jsonc to
~/.config/siriremote/config.jsonc.
| Remote input | Default action |
|---|---|
| Siri button, short press | Enter |
| Siri button, hold | Hold Fn for voice input |
| Power button | Escape |
| Swipe left / right | Switch macOS Space |
| Swipe up | Mission Control |
| Swipe down | App Exposé |
| Clickpad | Mouse movement and scrolling |
| Center click | Click; hold for sticky drag |
The configuration file is watched continuously. Save a change and it takes effect immediately.
See examples/config.jsonc for the full configuration reference.
Requirements:
- macOS 13 or later
- third-generation USB-C Siri Remote
- Xcode command-line tools
Pair the remote in System Settings → Bluetooth, then:
git clone https://github.com/mkliu/SiriRemoteVibe.git
cd SiriRemoteVibe
mkdir -p ~/.config/siriremote
cp examples/config.vibe-coding.jsonc ~/.config/siriremote/config.jsonc
cd app
./build.sh
HYPERVIBE_SIGN_MODE=adhoc ./create_app_bundle.sh
open SiriRemoteVibe.appGrant Accessibility and Input Monitoring under
System Settings → Privacy & Security. The current internal app-bundle name is still
SiriRemoteVibe.app.
The app runs in the menu bar. Open Settings there to tune cursor speed or edit mappings visually.
Enable Voice input bridge to capture local WeType or Doubao dictation, apply local replacements, and automatically paste into the previous Mac, Windows, or iPad app when Fn is released. The Hotwords settings tab provides exact recognition-to-replacement mappings.
The optional mic/ subsystem exposes a CoreAudio input named Siri Remote Mic. It requires:
- arm64 Opus (
brew install opus) - Apple's PacketLogger from Additional Tools for Xcode
- installation of the included HAL plug-in and capture daemon
PacketLogger is Apple software and is not distributed by this repository. Download it directly
from Apple Developer Downloads. Setup and architecture details are in
mic/README.md.
SiriRemoteVibe began as a fork of
machinarii/hypervibe, an MIT-licensed experiment for
one-handed vibe coding with an Apple TV remote.
This fork adds a hot-reloading configuration engine, per-app mappings, layers, richer gestures,
macOS Space controls, settings UI, and the Siri Remote microphone pipeline. The original MIT notice
is retained in NOTICE.
SiriRemoteVibe is licensed under GPL-3.0-or-later. Third-party notices for HyperVibe,
BlackHole, and Opus are retained in NOTICE and the corresponding mic/ directories.
SiriRemoteVibe can route its relative mouse and keyboard reports through an existing Karabiner-Elements VirtualHID driver so the remote follows Apple's Universal Control pointer onto an iPad. This setup is optional and disabled by default.
- Install and activate Karabiner-Elements 15.9 or another release using VirtualHIDDevice 6.8.0.
- Run
tools/install-virtualhid-helper.shonce. The installer requests one administrator approval and installs a persistent, UID-restricted helper. - Enable Behavior → Cross-Device Input in SiriRemoteVibe Settings.
Without the helper, or when the option is disabled, SiriRemoteVibe continues using its normal local CGEvent backend.