Documentation
Everything vmux does, explained.
vmux is a terminal multiplexer for working alongside AI coding agents: persistent workspaces, live agent status, a scriptable socket, and your terminal on your phone. Pick where you want to start.
Never used a multiplexer before
You don't need to learn keybindings to get going — attach, split a pane, and vmux keeps it alive.
Start here →You already know the shape
Session → workspace → tab → pane instead of session → window → pane. Same prefix-key model.
Concepts & keys →Claude Code, Codex, Grok, or your own script
Install hooks once and agent status — busy, waiting, done, failed — shows up in the sidebar.
Agent integrations →Core guides
Ten pages cover the whole surface — from your first attach to the wire protocol the phone app speaks.
Getting started
Install, attach, and run your first agent in a pane.
Read →Concepts
Session, workspace, tab, pane — and how snapshots keep the UI live.
Read →Configuration
Every config key: themes, prefix key, relay, ports, agent titles.
Read →Keyboard shortcuts
The full prefix-key map, mouse actions, and the command palette.
Read →Agent integrations
Hooks for Claude Code, Codex, Grok, and plain shells. Status and automatic tab titles.
Read →Phone relay & remote
Drive a session from your phone over Tailscale, and paste screenshots into an agent over SSH.
Read →Ports & forwarding
Automatic detection of listening ports, SSH tunnels, and Tailscale forwards.
Read →CLI reference
Every subcommand vmux ships, grouped by what it does.
Read →Architecture
Daemon, client, and relay — how the pieces talk and why the daemon is authoritative.
Read →Troubleshooting
Fixes for the problems people actually hit, from stuck attaches to relay pairing.
Read →AI agent reading this? vmux is scriptable end to end — every CLI command speaks the
same protocol the attach UI does. Start with Agent integrations for hooks and
status, then the CLI reference for the full command surface. Panes export
VMUX_SESSION, VMUX_WORKSPACE_ID, and VMUX_PANE_ID so a process can
find its own place in the tree without being told.