THE FIELD GUIDE
TAILMUX DOCUMENTATION

Terminal & box picker

Switch boxes in tmux or Zellij and keep remote shells running.

tailmux terminal                           # saved default, otherwise tmux
tailmux terminal personal/devbox           # open a particular box
tailmux terminal --backend zellij          # override for this launch only
tailmux terminal --default zellij          # save default; does not launch
tailmux terminal --default tmux            # switch the saved default back

Install fzf and your chosen multiplexer locally. This integration is tested with tmux 3.7c, Zellij 0.45.1, and fzf 0.74.3. Zellij's integration requires its modern list-panes --json --tab and background-session CLI controls. Both backends use tmux on the remote host for persistent shells; remote Zellij is not required. Host SSH settings and authentication remain shared with tailmux ssh.

Alt+B opens a fuzzy box picker in either backend. Zellij also supports Ctrl+B in normal mode or F2 when unlocked; these avoid terminals that do not send Option/Alt as Meta. With tmux, Ctrl+B, B also opens it. Search visible machines across your profiles and press Enter to connect or switch to an existing host window/tab. Offline machines are labeled; reachability and SSH permissions still determine whether a connection can succeed. The initial home pane also offers Enter to open the picker.

New split panes inside a host window/tab connect to that same host, each with its own persistent remote shell. A new unnamed Zellij tab shows the box chooser rather than a local shell. Keep host window/tab names unchanged: those names determine which host new panes connect to. Invalid or unrecognized names return to the chooser.

Each configuration directory gets its own local tmux socket/Zellij session. Tailmux writes its generated Zellij configuration under TAILMUX_HOME/terminal/ and does not modify your normal multiplexer config. Reopening reuses the same local session. The picker does not stop or migrate processes when you switch boxes.

Remote shells run on a dedicated tmux server named tailmux, with its status bar hidden and Ctrl+A as its prefix. Your existing remote tmux sessions/configuration and Herdr sessions remain independent. Disconnecting shows a prompt: Enter reconnects to the same remote shell, while q closes the local pane. Closing local panes leaves their remote sessions available; they are not automatically deleted. This first version does not provide a remote-session cleanup browser.

Detach the local view with Ctrl+B, D in tmux or Ctrl+O, D in Zellij. Reattach with tailmux terminal. If an application needs the remote tmux prefix literally, press Ctrl+A twice. Other multiplexer shortcuts remain available, except for the Ctrl+B override described below. Backend preference is stored as terminal_backend in config.json; --backend always overrides it for one launch.

Shortcut reference

ActiontmuxZellij
Pick a boxAlt+B or Ctrl+B, then BAlt+B or F2 when unlocked; Ctrl+B in normal mode
Detach local viewCtrl+B, then DCtrl+O, then D
Send remote tmux prefixCtrl+A twiceCtrl+A twice

Zellij uses simplified UI so its controls do not require special arrow fonts. Pane titles show the target host instead of the Tailmux launch command. Ctrl+B in normal mode overrides Zellij's usual tmux-mode shortcut. When Zellij is locked, press Ctrl+G to return to normal mode before opening the picker. Option/Alt handling depends on your terminal; Ctrl+B and F2 avoid that dependency.

A second attached client with a smaller terminal can constrain a tab's dimensions. Detach unused clients rather than stopping the session. See troubleshooting.

Zellij reuses a running local session when you detach. Closing a tab with Ctrl+T, then X removes it. After closing the last tab, the next tailmux terminal starts a fresh session. Tailmux disables disk-layout resurrection so previously closed tabs cannot return from an old snapshot. Remote tmux shells remain on their hosts; this does not stop remote processes.

Open this computer in the terminal

tailmux terminal local
tailmux terminal --backend tmux local
tailmux terminal --backend zellij local

The box picker lists local (this machine) first, followed by remote targets with aligned online/offline and saved labels. Local access works without a Tailscale profile or SSH connection. It opens your $SHELL as a login shell (falling back to /bin/sh); new panes in the local tab/window also run locally. Exiting the shell closes that pane. Keep the tab/window named local so new panes retain this routing.

local is reserved by terminal for this computer. Use the full profile/local target if a remote machine is also named local. Existing shortcuts open the same picker from local and remote tabs.

On this page