OverviewWhat is RMUX?FeaturesQuick StartDemosUsageInstallationWeb SharingClaude AgentsPython SDKTypeScript SDKResourcesDocumentationBenchmarksExamplesFAQContributing

RMUX logo

RMUX

The Universal Multiplexer Engine.

Native on Windows, Linux, and macOS

English · Français · 简体中文 · 日本語

Unsafe policy CI OpenSSF Best Practices rmux 0.8.0


> [!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).

RMUX web share

## 🧭 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
Multi Agents Orchestration demo preview
Multi Agents Orchestration
≃ 514 lines
Agent Broadcast Arena demo preview
Agent Broadcast Arena
≃ 2,171 lines
Mini-Zellij demo preview
Mini-Zellij
≃ 944 lines
Terminal automation demo preview
Terminal Automation
≃ 1,495 lines
## 📦 Installation | Platform / manager | Command | | :--- | :--- | | macOS / Homebrew | `brew install rmux` | | Windows / installer | `irm https://rmux.io/install.ps1 \| iex` | | Windows / WinGet | `winget install rmux` | | Windows / Scoop | `scoop bucket add rmux https://github.com/Helvesec/scoop-rmux && scoop install rmux` | | Windows / Chocolatey | `choco install rmux` | | Linux / APT | See the [APT setup guide](https://rmux.io/docs/get-started/) | | Linux / DNF | See the [DNF setup guide](https://rmux.io/docs/get-started/) | | Linux macOS / Nix | `nix profile install github:Helvesec/rmux` | | Rust / 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.

Claude teammate mode in RMUX

```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 runtime 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.