.TH RMUX 1 "2026-07-20" "RMUX 0.9.1" "RMUX Manual"
.SH NAME
rmux \- tmux-compatible terminal multiplexer CLI
.SH SYNOPSIS
.B rmux
.RB [ -2CDhlNuVv ]
.RB [ -c " shell-command" ]
.RB [ -f " file" ]
.RB [ -L " socket-name" ]
.RB [ -S " socket-path" ]
.RB [ -T " features" ]
.RI [ command " [" flags ]]
.SH 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.
.SH 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.
.PP
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
.B capture-pane
bounds, and preserves a trailing literal
.B #
in format strings.
.PP
For
.BR "if-shell -F" ,
RMUX follows the pinned tmux oracle's numeric false handling, including
zero-prefixed numeric strings.
.PP
Very large positive absolute pane sizes may be clamped to the available layout
space, while zero, negative, non-numeric, and overflowed sizes are rejected.
.SH TOP-LEVEL OPTIONS
.TP
.B -2
Accept the tmux-compatible 256-colour compatibility flag.
.TP
.B -C
Enter tmux text control mode.
.TP
.B -D
Run the hidden server in the foreground.
.TP
.B -h
Print the tmux-style top-level usage line to standard output and exit 0.
.TP
.B -l
Accept the tmux-compatible login-shell flag.
.TP
.B -N
Disable automatic server startup for commands that otherwise auto-start.
.TP
.B -u
Force UTF-8 mode for the client process.
.TP
.B -V
Print the RMUX package version and exit 0.
For build and support details, use
.B rmux diagnose --json
or
.BR rmux\ diagnose\ --human .
In short-option clusters,
.B -V
stops the
.B -h
scan, so
.B -Vh
prints the version.
.TP
.B -v
Accept the tmux-compatible verbose flag.
.TP
.BI "-c " shell-command
Start or connect to the rmux server, then execute the resolved shell with
.B "-c shell-command"
using the current terminal.
.TP
.BI "-f " file
Load the given configuration file.
.TP
.BI "-L " socket-name
Use the named socket below the rmux UID socket directory.
.TP
.BI "-S " socket-path
Use the given absolute socket path.
.TP
.BI "-T " features
Accept tmux-compatible terminal feature declarations.
.SH COMMAND HELP
Command help uses
.BR "rmux <command> --help" .
Short
.B -h
remains available for tmux command semantics such as
.BR "rmux split-window -h" .
.SH LIST-COMMANDS
.B 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.
.PP
.B list-keys
can render the compiled default key table without a running server when no
runtime key-table mutations are available.
.SH IMPLEMENTED COMMAND SURFACE
The public CLI dispatches 105 commands:
.nf
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
.fi
.SH ENVIRONMENT
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.SH BUILT-IN COMMAND ALIASES
.TP
.B choose-session
Expands to
.BR "choose-tree -s" .
.TP
.B choose-window
Expands to
.BR "choose-tree -w" .
.SH NOTES
.B link-window
and
.B unlink-window
ship in the public CLI surface with tmux-style shared window links across
sessions, including linked-window format variables and hook context.
.PP
.B web-share
local mode opens
.B https://share.rmux.io/
against
.B ws://127.0.0.1:<port>/share .
The
.B -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
.B --operator-only
or
.B --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
.B share.rmux.io .
Pass
.B --tunnel-url
to use a bring-your-own public endpoint, pass
.B --tunnel-provider NAME
to spawn a configured tunnel preset, and pass
.B --frontend-url
to use a self-hosted frontend.
The out-of-band pairing code printed by
.B web-share
is required by default before a browser can authenticate. Pass
.B --no-pin
to disable it. Shares do not expire unless
.B --ttl
or
.B --expires-at
is supplied. Pass
.B --ttl SECONDS
or
.B --expires-at RFC3339
to set the share expiry. Expiry revokes the share and closes browser clients;
it does not stop the rmux daemon. Pass
.B --kill-session-on-expire
only on a session share when the target session should be destroyed at expiry.
Pass
.B --max-spectators COUNT
to cap concurrent spectators, and
.B --max-operators COUNT
to cap concurrent operators. Spectator caps require a spectator URL; operator
caps require an operator URL.
Pass
.B --no-navbar
or
.B --no-disclaimer
to generate a minimal spectator URL.
The live connected browser count is shown in the navbar by default. Pass
.B --hide-viewers
to hide it.
Use
.B web-share stop SHARE-ID
or
.B 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
.B 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.