A modern Rust terminal multiplexer for local shells, long-running agents, typed automation, and browser-shared terminal sessions.
English · Français · 简体中文 · 日本語
[!NOTE] RMUX now includes hybrid post-quantum end-to-end encrypted web multiplexing through a static frontend. Learn more in the repository Web Share docs.
RMUX now provides an official Python SDK: librmux.
If you have a feature request or want to report anything, please file an issue.
RMUX
A modern, async typed Rust multiplexer with 90+ tmux commands natively across macOS, Linux, and Windows, with no WSL needed.
It ships with a public Rust SDK and native Ratatui integration.
Use it from the CLI, share sessions in a browser, or drive it from Rust.
Demos
Short examples of what RMUX can be used for.
Web Multiplex (Web Share)
RMUX can share a pane or session in a browser, create panes, resize splits, and keep terminal execution local.
# Start a local Web Share over loopback
# Share a named session
# Share beyond localhost
Use a tunnel provider, bring your own ingress, or host the static frontend on your own domain.
Useful entry points:
Install
Portable installer
|
APT
|
|
DNF
Direct downloads are available from the v0.6.1 GitHub Release:
rmux-0.6.1-linux-x86_64.tar.gzrmux_0.6.1_amd64.debrmux-0.6.1-1.x86_64.rpm
Portable installer
|
Homebrew
Direct downloads are available from the v0.6.1 GitHub Release:
rmux-0.6.1-macos-aarch64.tar.gzrmux-0.6.1-macos-x86_64.tar.gz
PowerShell installer
irm https://rmux.io/install.ps1 | iex
Scoop
scoop bucket add rmux https://github.com/Helvesec/scoop-rmux
scoop install rmux
WinGet
winget install rmux
Chocolatey
choco install rmux
Direct downloads are available from the v0.6.1 GitHub Release:
rmux-0.6.1-windows-x86_64.zip
This path works on Linux, macOS, and Windows.
Install Rust
|
Install RMUX
Rust applications
SHA256 checksums are published with every GitHub Release. APT, DNF, Homebrew, Scoop, Chocolatey, and WinGet metadata are generated from the same release assets.
Documentation
The full RMUX documentation is available at rmux.io/docs.
It includes:
For an ergonomic, human-oriented profile that keeps native terminal selection intuitive while adding easier split bindings and clipboard integration, see docs/human-friendly-config.md.
CLI Quickstart
Use command help locally:
Use rmux -V for the RMUX package version. For build and support details, use rmux diagnose --human or rmux diagnose --json.
SDK Quickstart
[]
= "0.6"
= { = "1", = ["rt-multi-thread", "macros"] }
use Duration;
use ;
async
Ratatui Widget
use ;
use ;
use PaneSnapshot;
Architecture
rmux keeps shells, sessions, windows, panes, and PTY processes inside the local daemon. Local clients use IPC. Web Share is explicit browser access: the daemon exposes a selected pane or session through an end-to-end encrypted WebSocket, while execution stays on your machine.
Workspace
| Crate | Role | Publication |
|---|---|---|
rmux-types |
Shared platform-neutral value types | public |
rmux-proto |
Detached IPC DTOs, framing, wire-safe errors | public |
rmux-os |
Small OS boundary helpers | public |
rmux-ipc |
Local IPC endpoints and transports | public |
rmux-sdk |
Daemon-backed Rust SDK | public |
ratatui-rmux |
Ratatui integration widget | public |
rmux-web-crypto |
Web Share E2EE core and WASM crypto boundary | public |
rmux-pty |
PTY allocation, resize, child process control | support crate |
rmux-core |
Sessions, panes, layouts, formats, hooks, buffers | support crate |
rmux-server |
Tokio daemon and request dispatch | support crate |
rmux-client |
Local IPC client and attach plumbing | support crate |
rmux |
CLI and hidden daemon entrypoint | public binary |
rmux-render-core |
Shared snapshot rendering core | workspace-internal |
Platform Support
| Platform | PTY backend | IPC backend | Default endpoint |
|---|---|---|---|
| Linux | Unix PTY | Unix socket | /tmp/rmux-{uid}/default |
| macOS | Unix PTY | Unix socket | /tmp/rmux-{uid}/default |
| Windows | ConPTY | Named pipe | per-user named pipe |
Configuration
On Linux and macOS, RMUX reads .rmux.conf from the standard system and user locations:
/etc/rmux.conf~/.rmux.conf$XDG_CONFIG_HOME/rmux/rmux.conf~/.config/rmux/rmux.conf
On Windows, RMUX reads .rmux.conf from:
%XDG_CONFIG_HOME%\rmux\rmux.conf%USERPROFILE%\.rmux.conf%APPDATA%\rmux\rmux.conf%RMUX_CONFIG_FILE%
tmux.conf compatibility
When RMUX starts with the default config search and no RMUX config file is loaded, it also checks standard tmux.conf locations. Explicit -f config files do not trigger this fallback.
Fallback files use the tmux-compatible source parser and load best-effort. Supported commands are applied; unsupported plugin lines are reported without aborting startup. Set RMUX_DISABLE_TMUX_FALLBACK=1 to disable autoload.
On Unix, RMUX also provides a private per-socket tmux shim in command environments so common plugin scripts route back to RMUX. Set RMUX_DISABLE_TMUX_SHIM=1 to disable it.
Terminal Compatibility Notes
RMUX works with shells that query terminal capabilities, including fish. It answers terminal device-attribute probes and handles Escape-key timing so fish prompts and key sequences behave normally inside RMUX panes.
Graphics passthrough is available for outer terminals that support Kitty graphics or SIXEL. RMUX detects Kitty graphics for Kitty, Ghostty, and WezTerm, and detects SIXEL for terminals such as foot, mintty, mlterm, and WezTerm. It is opt-in:
set -g allow-passthrough on
The tmux value all is accepted for configuration compatibility. RMUX renders the attached pane, so all currently behaves like on rather than adding passthrough for unattached panes.
If your terminal supports either protocol but is not detected automatically, add a terminal feature override:
set -as terminal-features 'xterm-kitty:kitty-graphics'
set -as terminal-features 'xterm*:sixel'
SIXEL passthrough is covered by the automated Unix PTY attach regression suite. On Windows, RMUX enables modern ConPTY passthrough when the OS supports it, but SIXEL display still depends on the outer terminal. Set RMUX_CONPTY_NO_PASSTHROUGH=1 to disable that backend mode for troubleshooting.
Verification
The workspace is designed to be checked from source with locked dependencies:
Additional local checks:
Release artifact checks are driven by:
#![forbid(unsafe_code)] is used in the upper-level crates. OS and terminal boundary code is isolated in the lower-level runtime crates.
License
RMUX is dual-licensed under either:
at your option.