Skip to content

Latest commit

 

History

History
397 lines (285 loc) · 19.4 KB

File metadata and controls

397 lines (285 loc) · 19.4 KB

RMUX logo

RMUX

ユニバーサルなマルチプレクサエンジン。

Native on Windows, Linux, and macOS

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

Unsafe policy CI OpenSSF Best Practices rmux 0.9.0

Note

RMUX には E2E Web 多重化機能があります。詳しくはドキュメントを参照してください。

RMUX は現在 Python と TypeScript の SDK を提供しています: librmux, @rmux/sdk

機能要望や問題報告は issue を作成してください。

RMUX Web Share

🧭 RMUX とは?

RMUX は、macOS、Linux、Windows で 90 以上の tmux コマンドをネイティブに提供する、モダンで非同期、型付きの Rust マルチプレクサです。WSL は不要です。

公開 Rust SDK とネイティブ Ratatui 統合も提供します。

CLI から使うことも、セッションをブラウザに共有することも、Rust から操作することもできます。

✨ 機能

  • shell、pane、window、session、scrollback のためのローカル daemon アーキテクチャ。
  • 集中的な互換性テストを備えた tmux 風コマンドサーフェス。
  • Linux、macOS、Windows のネイティブバックエンド。
  • 型付き自動化とターミナル状態アサーションのための公開 Rust SDK。
  • Rust ターミナルアプリケーションで RMUX pane を描画する Ratatui ウィジェット。
  • ハイブリッド・ポスト量子エンドツーエンド暗号化を備えたブラウザ Web Share。
  • GitHub Releases、APT、RPM、Homebrew、WinGet、Scoop、Chocolatey と crates.io の公開 SDK crates 向けリリースパッケージング。

🚀 CLI クイックスタート

ローカルのコマンドヘルプを確認します:

rmux list-commands
rmux new-session --help
rmux split-window --help
rmux web-share --help

rmux -V でインストール済みのバージョンを確認できます。

🎬 デモ

RMUX を何に使えるかを示す短い例です。

📦 インストール

プラットフォーム / マネージャー コマンド
macOS / Homebrew brew install rmux
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 APT セットアップガイドを参照
Linux / DNF DNF セットアップガイドを参照
Linux macOS / Nix nix profile install github:Helvesec/rmux
Rust / Cargo cargo install rmux --locked

直接ダウンロード(.tar.gz.deb.rpm.zip)は v0.9.0 GitHub Release から利用できます。

パッケージマネージャはレジストリ審査中に遅れることがあります。更新が反映されるまでは、バージョンが固定された GitHub Release のダウンロードを使用してください。

Windows では .zip 全体を展開し、展開したパッケージのルートを PATH に追加してください。rmux.exermux-daemon.exelibexec/rmux/rmux.exe は同じ配置のまま保持する必要があります。 公開実行ファイルだけをコピーしても有効なインストールにはなりません。

Unix の .tar.gz を直接ダウンロードした場合は、展開したアーカイブ内で ./install.sh --prefix ~/.local を実行してください。このインストーラは、 小さな公開 CLI が完全な helper に必ず到達できるよう、必要な bin/libexec/ の配置を保ちます。

リリースパッケージでは、高速な detached コマンドに小さな公開 CLI を使い、複雑な tmux 互換コマンド形式には非公開の完全 CLI helper を使う場合があります。Windows パッケージでは rmux.exe が軽量 dispatcher になり、完全 CLI は libexec/rmux/rmux.exe に配置されます。CLI 互換性の診断中に完全 helper を強制するには RMUX_DISABLE_TINY_CLI=1 を設定してください。

🤝 Claude Teammate モード

ローカル RMUX workspace で Claude Code を実行し、 tmux teammate mode を有効にします。

RMUX の Claude Teammate モード

rmux claude [args]
# 例: rmux claude --dangerously-skip-permissions

RMUX は attached session を開き、--teammate-mode tmux[args] を そのまま Claude に渡します。

内部の仕組み: コマンドを正しくルーティングするため、RMUX は Claude の PATH の先頭にプライベートな tmux shim を追加します。これは Claude プロセス内に厳密に限定され、システムの tmux インストールとは競合しません。

このリポジトリの外でも Claude が RMUX CLI、SDK、web-share、automation patterns を参照できるようにするには、RMUX の user-level Claude Code skill をインストールします:

rmux claude install-skill

この skill は Claude profile 配下にインストールされます(Linux/macOS では ~/.claude/skills/rmux、Windows では %USERPROFILE%\.claude\skills\rmux)。プロジェクトが隠し .claude source-tree directory を持たずに package/install できるよう、 リポジトリ内の source copy は resources/claude/skills/rmux/SKILL.md に 保持されています。

注: マシンに claude がインストールされている必要があります。

⚙️ 設定

Linux と macOS では、RMUX は標準の system / user locations から .rmux.conf を読み込みます:

  1. /etc/rmux.conf
  2. ~/.rmux.conf
  3. $XDG_CONFIG_HOME/rmux/rmux.conf
  4. ~/.config/rmux/rmux.conf

Windows では、RMUX は次の場所から .rmux.conf を読み込みます:

  1. %XDG_CONFIG_HOME%\rmux\rmux.conf
  2. %USERPROFILE%\.rmux.conf
  3. %APPDATA%\rmux\rmux.conf
  4. %RMUX_CONFIG_FILE%

tmux.conf 互換性

RMUX がデフォルト設定検索で起動し、RMUX 設定ファイルが読み込まれなかった場合、標準の tmux.conf の場所も確認します。-f で明示された設定ファイルではこの fallback は発生しません。

Fallback ファイルは tmux 互換の source parser を使い、best-effort で読み込まれます。サポート済みコマンドは適用され、未サポートの plugin 行は起動を中断せずに報告されます。autoload を無効化するには RMUX_DISABLE_TMUX_FALLBACK=1 を設定してください。

Unix では、RMUX はコマンド環境内に socket ごとのプライベート tmux shim も提供し、一般的な plugin script が RMUX に戻るようにします。無効化するには RMUX_DISABLE_TMUX_SHIM=1 を設定してください。

🌐 Web Multiplex (Web Share)

RMUX は pane や session をブラウザに共有し、pane を作成し、split をリサイズし、ターミナル実行をローカルに保ちます。

# loopback 上でローカル Web Share を開始
rmux web-share

# 名前付き session を共有
rmux new-session -d -s work
rmux web-share -t work

# localhost の外へ共有
rmux web-share --tunnel-provider localhost-run

tunnel provider を使う、自分の ingress を持ち込む、静的 frontend を自分のドメインでホストする、いずれも可能です。

便利な入口:

🧰 スクリプト/API

SDK はローカル RMUX daemon に接続し、自動化向けに sessions、panes、 streams、waits、snapshots を公開します。

cargo add rmux-sdk
pip install librmux
npm install @rmux/sdk

📚 ドキュメント

RMUX の完全なドキュメントは rmux.io/docs で利用できます。

含まれるもの:

ネイティブなターミナル選択の直感性を保ちつつ、より簡単な split binding と clipboard integration を追加する、人間向けの ergonomic profile については docs/human-friendly-config.md を参照してください。

🧩 Ratatui ウィジェット

use ratatui::{buffer::Buffer, layout::Rect, widgets::Widget};
use ratatui_rmux::{PaneState, PaneWidget};
use rmux_sdk::PaneSnapshot;

fn render(snapshot: PaneSnapshot, area: Rect, buffer: &mut Buffer) {
    let state = PaneState::from_snapshot(snapshot);
    PaneWidget::new(&state).render(area, buffer);
}

🏗️ アーキテクチャ

RMUX ランタイムアーキテクチャ

rmux は shell、session、window、pane、PTY process をローカル daemon に残します。ローカル client は IPC を使います。Web Share は明示的なブラウザアクセスです。daemon は選択された pane または session を end-to-end encrypted WebSocket で公開し、実行はあなたのマシン上に残ります。

🧱 ワークスペース

Crate 役割 公開
rmux-types 共有されるプラットフォーム非依存の値型 公開
rmux-proto 分離式 IPC DTO、framing、wire-safe な error 公開
rmux-os 小さな OS 境界 helper 公開
rmux-ipc ローカル IPC endpoint と transport 公開
rmux-sdk daemon-backed Rust SDK 公開
ratatui-rmux Ratatui integration widget 公開
rmux-web-crypto Web Share E2EE core と WASM crypto boundary 公開
rmux-pty PTY allocation、resize、child process control support crate
rmux-core session、pane、layout、format、hook、buffer support crate
rmux-server Tokio daemon と request dispatch support crate
rmux-client ローカル IPC client と attach plumbing support crate
rmux CLI と隠し daemon entrypoint public binary
rmux-render-core 共有 snapshot rendering core workspace-internal

🖥️ プラットフォームサポート

プラットフォーム PTY backend IPC backend デフォルト endpoint
Linux Unix PTY Unix socket /tmp/rmux-{uid}/default
macOS Unix PTY Unix socket /tmp/rmux-{uid}/default
Windows ConPTY named pipe ユーザーごとの named pipe

🧾 ターミナル互換性のメモ

RMUX は、fish などターミナル機能を問い合わせる shell と連携できます。端末属性問い合わせに応答し、Escape キーのタイミングも扱うため、RMUX pane 内でも fish prompt と key sequence が通常どおり動作します。

Graphics passthrough は、Kitty graphics または SIXEL をサポートする外側の terminal で利用できます。RMUX は Kitty、Ghostty、WezTerm で Kitty graphics を検出し、foot、mintty、mlterm、WezTerm などで SIXEL を検出します。これは opt-in です:

set -g allow-passthrough on

tmux の値 all は設定互換性のために受け付けられます。RMUX は attached pane を描画するため、all は現在、unattached pane に passthrough を追加するのではなく on と同じように動作します。

terminal がいずれかの protocol をサポートしているのに自動検出されない場合は、terminal feature override を追加してください:

set -as terminal-features 'xterm-kitty:kitty-graphics'
set -as terminal-features 'xterm*:sixel'

SIXEL passthrough は自動化された Unix PTY attach regression suite でカバーされています。Windows では、OS が対応していれば RMUX は modern ConPTY passthrough を有効にしますが、SIXEL display は外側の terminal に依存します。トラブルシュート時にこの backend mode を無効化するには RMUX_CONPTY_NO_PASSTHROUGH=1 を設定してください。

🧪 検証

この workspace は、ロックされた依存関係を使って source から確認できるように設計されています:

cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked --no-fail-fast

追加のローカルチェック:

scripts/cfg-check.sh
scripts/unsafe-check.sh
scripts/no-network-in-runtime.sh
scripts/check-platform-neutrality.sh
scripts/ratatui-rmux-budget.sh
scripts/verify-package.sh

Release artifact checks は次で実行されます:

scripts/release-local.sh
scripts/package-unix.sh
scripts/package-debian.sh
scripts/verify-debian-package.sh
scripts/package-rpm.sh
scripts/verify-rpm-package.sh
scripts/smoke-snap-package.sh
scripts/package-windows.ps1
scripts/verify-package-windows.ps1
scripts/generate-apt-repository.sh
scripts/generate-rpm-repository.sh
scripts/generate-homebrew-formula.sh
scripts/generate-winget-manifest.sh
scripts/generate-scoop-manifest.sh
scripts/generate-chocolatey-package.sh

上位 crate では #![forbid(unsafe_code)] を使用しています。OS と terminal boundary code は低レイヤーの runtime crate に隔離されています。

⚖️ ライセンス

RMUX は次のいずれかのライセンスで利用できます: