>_ bmux
docsgithub

Overview

bmux

Work in Progress: bmux is in active development. The architecture is moving quickly, and the current CLI surface is already usable while the broader experience continues to take shape.
bmux is a modern terminal multiplexer written in Rust, built for flexible multi-client workflows, modal interaction, and deep customization. bmux is plugin-driven by design, making extensibility a first-class part of the product rather than an afterthought.

Why bmux

  • Multi-client sessions with independent views
  • Modal, keyboard-driven interaction
  • Plugin-driven extensibility and customization
  • A modern Rust implementation focused on performance and reliability
  • A server-backed CLI built for reusable session workflows

Extensibility

Extensibility in bmux is built in, not bolted on.
Plugins are not an afterthought in bmux - they are part of the architecture and part of how bmux works. That makes bmux flexible to adapt, easier to customize, and better suited for workflows that do not fit a one-size-fits-all terminal multiplexer.

Current Status

Today, bmux includes a working server-backed CLI, session and window management workflows, multi-client foundations, diagnostics, and plugin-driven extensibility. It is still early, but it is no longer just a skeleton or roadmap.

Installation

bmux is currently installed by building from source:
git clone https://github.com/BSteffaniak/bmux.git cd bmux cargo build --all-targets cargo test --all-targets

Current CLI Workflow

The current CLI is server-backed by default. Running bmux with no subcommand starts or reuses a server, creates a session when needed, and attaches.
# Start or inspect the server bmux server start bmux server status bmux server stop # Create and attach sessions bmux new-session dev bmux list-sessions bmux attach dev # Work with windows bmux window new --session dev --name editor bmux window list --session dev # Multi-client collaboration bmux list-clients bmux follow <client-uuid> bmux unfollow # Logging bmux logs path bmux logs level bmux logs tail bmux logs path --json bmux logs level --json bmux logs tail --since 15m --lines 200 bmux logs watch --exclude "bmux server listening" bmux logs watch --profile incident-db bmux logs profiles list
bmux logs watch uses a ratatui interface and supports Vim-style navigation (j/k, g/G, Ctrl-u/Ctrl-d).
Top-level and grouped command forms are supported in many areas of the CLI.
All list commands with --json output a bare JSON array.
Logging defaults:
  • file sink is enabled by default
  • default level is info
  • --verbose raises level to debug
  • --log-level supports error|warn|info|debug|trace
Environment overrides:
  • BMUX_LOG_LEVEL: effective runtime log level
  • BMUX_LOG_DIR: explicit log directory
  • BMUX_STATE_DIR: explicit state directory
Role policy: owner controls session and window mutations plus role changes, writer can send attach input, and observer is read-only.

Development

Useful commands:
cargo check cargo test --all cargo clippy --all-targets --all-features cargo fmt
For active development:
cargo install cargo-watch cargo watch -x check bmux plugin rebuild
Build specific plugins by bundled id, short name, or crate name:
bmux plugin rebuild bmux.windows bmux plugin rebuild windows permissions bmux plugin rebuild bmux_windows_plugin --release

Nix + direnv

If you use Nix, bmux provides a flake-based development shell:
nix develop
To automatically load the shell when entering the repository:
direnv allow

License

bmux is licensed under the Mozilla Public License 2.0.