RMUX(1)

NAME
rmux - tmux-compatible terminal multiplexer CLI

SYNOPSIS
rmux [-2CDhlNuVv] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [-T features] [command [flags]]

DESCRIPTION
RMUX is a cross-platform terminal multiplexer built around a local client and server architecture. Unix builds use OS socket credentials; Windows builds use same-user named pipes and ConPTY. It preserves tmux-compatible command-line behavior while keeping RMUX product labels in binary output, help text, and status text.

TMUX COMPATIBILITY POLICY
RMUX treats tmux compatibility as a script and workflow contract, not as a requirement to copy known parser bugs. Command names, supported flags, target resolution, common diagnostics, config loading, and scriptable output should match tmux where that behavior is intentional and useful.

When tmux behavior is a known quirk that silently hides errors or leaks an internal sentinel, RMUX keeps safer product semantics only when the release divergence ledger lists the behavior. For example, RMUX rejects non-numeric capture-pane bounds, and preserves a trailing literal # in format strings.

For if-shell -F, RMUX follows the pinned tmux oracle's numeric false handling, including zero-prefixed numeric strings.

Very large positive absolute pane sizes may be clamped to the available layout space, while zero, negative, non-numeric, and overflowed sizes are rejected.

TOP-LEVEL OPTIONS

-2  Accept the tmux-compatible 256-colour compatibility flag.

-C  Enter tmux text control mode.

-D  Run the hidden server in the foreground.

-h  Print the tmux-style top-level usage line to standard output and exit 0.

-l  Accept the tmux-compatible login-shell flag.

-N  Disable automatic server startup for commands that otherwise auto-start.

-u  Force UTF-8 mode for the client process.

-V  Print the RMUX package version and exit 0. For build and support details, use rmux diagnose --json or rmux diagnose --human. In short-option clusters, -V stops the -h scan, so -Vh prints the version.

-v  Accept the tmux-compatible verbose flag.

-c shell-command
    Start or connect to the rmux server, then execute the resolved shell with -c shell-command using the current terminal.

-f file
    Load the given configuration file.

-L socket-name
    Use the named socket below the rmux UID socket directory.

-S socket-path
    Use the given absolute socket path.

-T features
    Accept tmux-compatible terminal feature declarations.

COMMAND HELP
Command help uses rmux <command> --help. Short -h remains available for tmux command semantics such as rmux split-window -h.

LIST-COMMANDS
list-commands is client-local and does not contact the server. With no arguments it prints one line per implemented command in tmux command table order.

list-keys can render the compiled default key table without a running server when no runtime key-table mutations are available.

IMPLEMENTED COMMAND SURFACE
The public CLI dispatches 105 commands:
attach-session (attach)
bind-key (bind)
break-pane (breakp)
capture-pane (capturep)
choose-buffer
choose-client
choose-tree
clear-history (clearhist)
clear-prompt-history (clearphist)
clock-mode
command-prompt
confirm-before (confirm)
copy-mode
customize-mode
delete-buffer (deleteb)
detach-client (detach)
display-menu (menu)
display-message (display)
display-popup (popup)
display-panes (displayp)
find-window (findw)
has-session (has)
if-shell (if)
join-pane (joinp)
kill-pane (killp)
kill-server
kill-session
kill-window (killw)
last-pane (lastp)
last-window (last)
link-window (linkw)
list-buffers (lsb)
list-clients (lsc)
list-commands (lscm)
list-keys (lsk)
list-panes (lsp)
list-sessions (ls)
list-windows (lsw)
load-buffer (loadb)
lock-client (lockc)
lock-server (lock)
lock-session (locks)
move-pane (movep)
move-window (movew)
new-session (new)
new-window (neww)
next-layout (nextl)
next-window (next)
paste-buffer (pasteb)
pipe-pane (pipep)
previous-layout (prevl)
previous-window (prev)
refresh-client (refresh)
rename-session (rename)
rename-window (renamew)
resize-pane (resizep)
resize-window (resizew)
respawn-pane (respawnp)
respawn-window (respawnw)
rotate-window (rotatew)
run-shell (run)
save-buffer (saveb)
select-layout (selectl)
select-pane (selectp)
select-window (selectw)
send-keys (send)
send-prefix
server-access
set-buffer (setb)
set-environment (setenv)
set-hook
set-option (set)
set-window-option (setw)
show-buffer (showb)
show-environment (showenv)
show-hooks
show-messages (showmsgs)
show-options (show)
show-prompt-history (showphist)
show-window-options (showw)
source-file (source)
split-window (splitw)
start-server (start)
suspend-client (suspendc)
swap-pane (swapp)
swap-window (swapw)
switch-client (switchc)
unbind-key (unbind)
unlink-window (unlinkw)
wait-for (wait)
capabilities
claude
doctor
setup
wait-pane
pane-snapshot
stream-pane
collect-pane-output
locator
expect-pane
find-panes
find-sessions
broadcast-keys
with-session
web-share

ENVIRONMENT

RMUX_DISABLE_TINY_CLI
    When set to a non-empty value, disables the packaged tiny CLI fast path and routes commands through the full helper binary.

RMUX_DISABLE_CLI_TARGET_ACTIONS
    When set to a non-empty value, disables CLI target-action fast paths and routes those commands through the full helper path.

RMUX_FULL_BINARY_PATH
    Overrides the private full helper binary used by packaged tiny CLI builds. This is intended for packaging tests and recovery diagnostics.

RMUX_TINY_TRACE
    When set to a non-empty value, emits tiny CLI routing diagnostics to standard error. This is intended for packaging and release-smoke diagnostics.

BUILT-IN COMMAND ALIASES

choose-session
    Expands to choose-tree -s.

choose-window
    Expands to choose-tree -w.

NOTES
link-window and unlink-window ship in the public CLI surface with tmux-style shared window links across sessions, including linked-window format variables and hook context.

web-share local mode opens https://share.rmux.io/ against ws://127.0.0.1:<port>/share . The -t target may be a pane or a session name. Pane targets share one pane. Session targets mirror the active window layout and can switch windows through the web client. By default both URLs are minted: a private operator URL and a spectator URL for sharing. Pass --operator-only or --spectator-only to restrict the share to one role. Operator session shares can use rmux prefix commands from the browser. Treat the private operator URL as equivalent to a local attached rmux client: an authenticated operator is trusted to control the targeted session. It requires a browser that allows public-origin access to loopback WS connections. Chromium-based browsers may block this under Local Network Access; allow Local Network access for share.rmux.io . Pass --tunnel-url to use a bring-your-own public endpoint, pass --tunnel-provider NAME to spawn a configured tunnel preset, and pass --frontend-url to use a self-hosted frontend. The out-of-band pairing code printed by web-share is required by default before a browser can authenticate. Pass --no-pin to disable it. Shares do not expire unless --ttl or --expires-at is supplied. Pass --ttl SECONDS or --expires-at RFC3339 to set the share expiry. Expiry revokes the share and closes browser clients; it does not stop the rmux daemon. Pass --kill-session-on-expire only on a session share when the target session should be destroyed at expiry. Pass --max-spectators COUNT to cap concurrent spectators, and --max-operators COUNT to cap concurrent operators. Spectator caps require a spectator URL; operator caps require an operator URL. Pass --no-navbar or --no-disclaimer to generate a minimal spectator URL. The live connected browser count is shown in the navbar by default. Pass --hide-viewers to hide it. Use web-share stop SHARE-ID or web-share disconnect SHARE-ID to revoke one active browser share and close its clients. These commands do not stop the rmux daemon or the web-share listener. Pass start-server --web-port PORT --frontend-url URL to configure the local web listener and the default frontend URL; port 0 is rejected. In-app webviews are not guaranteed.