Skip to content

Usage

Start vupai inside a project, open a few agent panes, and drive them by voice. The push-to-talk daemon runs in the background, so you stay in tmux and just hold a key to talk. Launch (or re-attach to) a session with:

vupai                 # attach-or-create the session named after the cwd
vupai attach backend  # attach to "backend" (create it if absent)
vupai new backend     # create "backend" (error if it already exists)
vupai kill backend    # kill the "backend" session

Note

vupai runs on its own tmux server, so it never touches your existing tmux setup. The trade-off: its sessions don't show in a plain tmux ls; reach them with vupai attach. (Set tmux_socket = "" to share your default server.)

It's still tmux

The voice layer sits on top; every normal tmux binding keeps working. Detach with <prefix> d, split panes by hand, switch with <prefix>-arrow, scroll/copy-mode, resize, your own custom keybindings: all unchanged. Use voice when it's faster, the prefix key when it's not. (Your ~/.tmux.conf is sourced too, with the few exceptions noted in tmux tips.)

Push-to-talk keys

Once attached, you talk to vupai with two push-to-talk keys:

Key Config Default Hold and speak to…
Dictation key hotkey Right-Option Type your words into the focused pane.
System key command_hotkey Right-Command Run a voice command. The key is the signal, so there is no spoken control word; vupai acts on the panes instead of typing.

Both defaults are customizable: set hotkey / command_hotkey in the config (each takes a list, so you can bind several keys to one action).

Tip

vupai only listens for keyboard keys. To use a mouse button or other input as a push-to-talk key, remap it to a keyboard key (e.g. F13) with a tool like Karabiner-Elements or BetterTouchTool, then bind that key here.

Commands

Run vupai --help for the full command list (and vupai <command> --help for a specific one). The everyday ones are above.

The push-to-talk daemon runs as a detached background process under your terminal app (not inside tmux; that's required for the global hotkey to work). It logs to ~/.config/vupai/daemon.log and survives detach/reattach.