> [!NOTE]
> RMUX now has an E2E web multiplexing feature. [Learn more in the docs.](docs/web-share.md)
>
> RMUX now provides Python and TypeScript SDKs: [librmux](https://pypi.org/project/librmux/), [@rmux/sdk](https://www.npmjs.com/package/@rmux/sdk).
>
> If you have a feature request or want to report anything, please [file an issue](https://github.com/Helvesec/rmux/issues).
## 🧭 What is RMUX?
RMUX is an async, typed terminal multiplexer engine written in Rust. It implements 90+ `tmux` commands and runs natively on Linux, macOS, and Windows with no WSL required.
Use it as a standalone CLI, embed it in Rust terminal apps, or drive it through typed SDKs for Rust, Python, and TypeScript.
## ✨ Features
- **Universal engine:** typed SDKs for Rust, Python, and TypeScript.
- **Native cross-platform runtime:** Linux, macOS, and Windows backends.
- **tmux-compatible command surface:** 90+ commands covered by focused compatibility tests.
- **Engineered and optimized for speed:** see [Benchmarks](docs/benchmarks.md).
- **Web Share:** browser-shared sessions with hybrid post-quantum end-to-end encryption.
- **Ratatui widget:** render live RMUX panes inside Rust terminal applications.
- **Local daemon architecture:** shells, panes, windows, sessions, and scrollback stay on your machine.
## 🚀 Quick Start
```sh
rmux list-commands
rmux new-session --help
rmux split-window --help
rmux web-share --help
rmux diagnose --human
```
Use `rmux -V` for the installed version.
## 🎬 Demos
## 📦 Installation
| Platform / manager | Command |
| :--- | :--- |
| / Homebrew | `brew install rmux` |
| / installer | `irm https://rmux.io/install.ps1 \| iex` |
| / WinGet | `winget install rmux` |
| / Scoop | `scoop bucket add rmux https://github.com/Helvesec/scoop-rmux && scoop install rmux` |
| / Chocolatey | `choco install rmux` |
| / APT | See the [APT setup guide](https://rmux.io/docs/get-started/) |
| / DNF | See the [DNF setup guide](https://rmux.io/docs/get-started/) |
| / Nix | `nix profile install github:Helvesec/rmux` |
| / Cargo | `cargo install rmux --locked` |
Direct downloads (`.tar.gz`, `.deb`, `.rpm`, `.zip`) are available from the [v0.8.0 GitHub Release](https://github.com/helvesec/rmux/releases/tag/v0.8.0).
Package managers can lag while registries review new releases; direct downloads and the rmux.io installers track the current GitHub Release.
For Unix `.tar.gz` downloads, run `./install.sh --prefix ~/.local` from the
extracted archive. The installer preserves the required `bin/` and `libexec/`
layout so the tiny public CLI can always reach its full helper.
Release packages may use a tiny public CLI for hot detached commands and a
private full CLI helper for complex tmux-compatible command forms. Windows
packages ship `rmux.exe` as the tiny dispatcher and keep the full CLI under
`libexec/rmux/rmux.exe`. Set `RMUX_DISABLE_TINY_CLI=1` to force the full helper
while diagnosing CLI compatibility issues.
## 🤝 Claude Teammate Mode
Run Claude Code inside a local RMUX workspace with
[tmux teammate mode](https://code.claude.com/docs/en/agent-teams) enabled.
```bash
rmux claude [args]
# e.g., rmux claude --dangerously-skip-permissions
```
RMUX opens an attached session and automatically passes `--teammate-mode tmux`
along with your `[args]` straight to Claude.
How it works under the hood: to route commands properly, RMUX prepends a
private `tmux` shim to Claude's `PATH`. This is strictly scoped to the Claude
process and will not conflict with your system `tmux` installation.
Install RMUX's user-level Claude Code skill when you want Claude to remember
the RMUX CLI, SDK, web-share, and automation patterns outside this repository:
```bash
rmux claude install-skill
```
The skill is installed under your Claude profile (`~/.claude/skills/rmux` on
Linux/macOS, `%USERPROFILE%\.claude\skills\rmux` on Windows). The repository
keeps the source copy at `resources/claude/skills/rmux/SKILL.md` so the project
can package and install it without a hidden `.claude` source-tree directory.
Note: Requires `claude` to be installed on your machine.
## ⚙️ Configuration
RMUX reads `.rmux.conf` from standard system and user locations.
On Linux and macOS:
```text
/etc/rmux.conf
~/.rmux.conf
$XDG_CONFIG_HOME/rmux/rmux.conf
~/.config/rmux/rmux.conf
```
On Windows:
```text
%XDG_CONFIG_HOME%\rmux\rmux.conf
%USERPROFILE%\.rmux.conf
%APPDATA%\rmux\rmux.conf
%RMUX_CONFIG_FILE%
```
If no RMUX config is found, RMUX can parse standard `tmux.conf` paths on a best-effort basis. Unsupported plugin lines are reported without aborting startup. Disable this fallback with `RMUX_DISABLE_TMUX_FALLBACK=1`.
## 🌐 Web Sharing
Share a pane or session in a browser while terminal execution remains local.
```sh
rmux web-share
rmux new-session -d -s work
rmux web-share -t work
rmux web-share --tunnel-provider localhost-run
```
Web Share uses hybrid post-quantum end-to-end encryption and can run over loopback, a tunnel provider, or your own ingress.
- [Repository Web Share overview](docs/web-share.md)
- [Web Share docs](https://rmux.io/docs/web-share/)
- [Security model](https://rmux.io/docs/web-share/#/security)
- [Tunnel providers](https://rmux.io/docs/web-share/#/tunnels)
## 🧰 Scripting & API
The SDKs connect to the local RMUX daemon and expose sessions, panes, streams, waits, and snapshots for automation.
```sh
cargo add rmux-sdk
pip install librmux
npm install @rmux/sdk
```
- Rust SDK: [`rmux-sdk`](https://crates.io/crates/rmux-sdk)
- Python SDK: [`librmux`](https://pypi.org/project/librmux/)
- TypeScript SDK: [`@rmux/sdk`](https://www.npmjs.com/package/@rmux/sdk)
- [API reference](https://rmux.io/docs/api/)
- [Examples](https://rmux.io/docs/examples/)
- [Repository SDK overview](docs/scripting-sdk.md)
## 📚 Documentation
The full documentation is available at [rmux.io/docs](https://rmux.io/docs/).
- [Installation guides](https://rmux.io/docs/get-started/)
- [CLI reference](https://rmux.io/docs/cli/)
- [Examples](https://rmux.io/docs/examples/)
- [API reference](https://rmux.io/docs/api/)
- [Human-friendly config](docs/human-friendly-config.md)
- [Web Share](https://rmux.io/docs/web-share/)
## 🏗️ Architecture
RMUX keeps shells, sessions, windows, panes, and PTY processes inside the local daemon. Local clients attach via IPC. Web Share exposes only the selected pane or session through an end-to-end encrypted WebSocket.
## 🧪 Verification
The workspace is designed to be checked from source with locked dependencies:
```sh
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked --no-fail-fast
scripts/unsafe-check.sh
```
`#![forbid(unsafe_code)]` is used in the upper-level crates. OS and terminal boundary code is isolated in lower-level runtime crates.
## ⚖️ License
RMUX is dual-licensed under either:
- [MIT License](LICENSE-MIT)
- [Apache License 2.0](LICENSE-APACHE)
at your option.