CLI Reference
bmux
Server-backed terminal multiplexer CLI
Usage: bmux [OPTIONS]
| Flag | Description | Values | Default |
| --config | Merge an additional config file (highest precedence layer) | path | |
| --record | Start interactive bmux with full-session recording | boolean | false |
| --no-capture-input | Do not capture pane input bytes when using –record | boolean | false |
| --recording-id-file | Write recording id to a file when using –record | path | |
| --record-profile | Recording profile when using –record | full, functional, visual | |
| --record-name | Recording name when using –record | string | |
| --record-event-kind | Explicit event kind allowlist when using –record (repeatable) | pane-input-raw, pane-output-raw, protocol-reply-raw, pane-image, server-event, request-start, request-done, request-error, custom (repeatable) | |
| --stop-server-on-exit | Stop the server when exiting a –record run | boolean | false |
| --recordings-dir | Override recordings root directory for this invocation | path | |
| --recording-auto-export | Enable automatic GIF export after user-initiated recording stop/cut | boolean | false |
| --no-recording-auto-export | Disable automatic GIF export after user-initiated recording stop/cut | boolean | false |
| --recording-auto-export-dir | Override directory for auto-exported recording GIFs | path | |
| --target | Execute command against a configured target (local or remote) | string | |
| --runtime | Select named runtime instance (default: default) | string | |
| -v, --verbose | Enable verbose logging | boolean | false |
| --log-level | Set log level for file logging | error, warn, info, debug, trace |
Subcommands:
- setup — First-run setup wizard for hosted mode (p2p default)
- host — Start hosted mode (p2p default, control-plane opt-in)
- join — Join a hosted link/target quickly
- hosts — List known hosts/targets (recent first)
- auth — Authentication commands
- access — SSH-key access controls for iroh hosting
- kiosk — SSH kiosk profiles and token management
- share — Share helpers for hosted links
- unshare — Remove a named shared link
- connect — Connect to a target and attach to a session
- new-session — Create a new session
- list-sessions — List active sessions
- list-clients — List connected clients
- kill-session — Kill a session by name or UUID
- kill-all-sessions — Kill all sessions
- attach — Attach to a session by name or UUID
- detach — Detach from the current session
- follow — Follow another client’s active target
- unfollow — Stop following a client
- session — Session management commands
- remote — Remote target utilities
- server — Server lifecycle and status tools
- logs — Logging diagnostics and utilities
- config — Configuration management and inspection
- perf — Runtime performance telemetry controls
- doctor — Run system-wide health checks
- keymap — Keymap tools and diagnostics
- terminal — Terminal capability tools and diagnostics
- recording — Recording and replay controls
- playbook — Headless playbook execution and testing
- sandbox — Run bmux in an isolated ephemeral sandbox environment
- slot — Manage bmux slots (multi-version installs)
- env — Alias for bmux slot ... (same subcommand tree; useful alongside the standalone bmux-env binary for symmetry)
bmux setup
First-run setup wizard for hosted mode (p2p default)
Usage: bmux setup [OPTIONS]
| Flag | Description | Values | Default |
| --check | Check hosted readiness without starting or changing runtime state | boolean | false |
| --mode | Hosted operation mode (p2p is infra-light default) | p2p, control-plane |
bmux host
Start hosted mode (p2p default, control-plane opt-in)
Usage: bmux host [OPTIONS]
| Flag | Description | Values | Default |
| --listen | Optional listen address for local gateway bridge | string | 127.0.0.1:7443 |
| --name | Optional friendly name hint | string | |
| --copy | Copy the resulting join link to clipboard | boolean | false |
| --daemon | Run host runtime in the background | boolean | false |
| --status | Show hosted-mode runtime status | boolean | false |
| --stop | Stop hosted-mode runtime if running | boolean | false |
| --restart | Restart hosted-mode runtime in background | boolean | false |
| --mode | Hosted operation mode (p2p is infra-light default) | p2p, control-plane |
bmux join
Join a hosted link/target quickly
Usage: bmux join [LINK] [SESSION]
Arguments:
- <LINK> — Link or target name (bmux://, iroh://, https://, or configured target)
- <SESSION> — Session name or UUID
bmux hosts
List known hosts/targets (recent first)
Usage: bmux hosts [OPTIONS]
| Flag | Description | Values | Default |
| --verbose | Include detailed target mappings and diagnostics | boolean | false |
bmux auth
Authentication commands
Subcommands:
- login — Login and register this device for hosted mode
- status — Show current authentication state
- logout — Clear locally stored authentication state
bmux auth login
Login and register this device for hosted mode
Usage: bmux auth login [OPTIONS]
| Flag | Description | Values | Default |
| --no-browser | Do not try to open a browser automatically | boolean | false |
bmux auth status
Show current authentication state
bmux auth logout
Clear locally stored authentication state
bmux access
SSH-key access controls for iroh hosting
Subcommands:
- status — Show iroh SSH access status
- init — Initialize iroh SSH access and enable it immediately
- add — Add SSH keys to iroh allowlist
- list — List currently authorized SSH keys
- remove — Remove an SSH key from the allowlist
- enable — Enable iroh SSH access enforcement
- disable — Disable iroh SSH access enforcement
bmux access status
Show iroh SSH access status
bmux access init
Initialize iroh SSH access and enable it immediately
Usage: bmux access init [OPTIONS]
| Flag | Description | Values | Default |
| --agent | Add all currently loaded SSH agent keys | boolean | false |
| --key-file | Add a public key from file (repeatable) | path (repeatable) | |
| --public-key | Add a public key line directly (repeatable) | string (repeatable) | |
| --github-user | Import public keys from a GitHub username (repeatable) | string (repeatable) | |
| --yes | Skip interactive confirmation prompts | boolean | false |
bmux access add
Add SSH keys to iroh allowlist
Usage: bmux access add [OPTIONS]
| Flag | Description | Values | Default |
| --agent | Add all currently loaded SSH agent keys | boolean | false |
| --key-file | Add a public key from file (repeatable) | path (repeatable) | |
| --public-key | Add a public key line directly (repeatable) | string (repeatable) | |
| --github-user | Import public keys from a GitHub username (repeatable) | string (repeatable) |
bmux access list
List currently authorized SSH keys
Usage: bmux access list [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux access remove
Remove an SSH key from the allowlist
Usage: bmux access remove <FINGERPRINT> [OPTIONS]
Arguments:
- <FINGERPRINT> (required) — Key fingerprint to remove
| Flag | Description | Values | Default |
| --yes | Skip interactive confirmation prompts | boolean | false |
bmux access enable
Enable iroh SSH access enforcement
bmux access disable
Disable iroh SSH access enforcement
bmux kiosk
SSH kiosk profiles and token management
Subcommands:
- status — Show kiosk profile status and effective defaults
- init — Initialize/update kiosk bootstrap files from config
- issue-token — Issue a kiosk token scoped to a profile
- revoke-token — Revoke one issued kiosk token by id
- attach — Attach using a kiosk token (intended for forced SSH command)
- ssh-print-config — Print generated sshd include text without writing files
bmux kiosk status
Show kiosk profile status and effective defaults
Usage: bmux kiosk status [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux kiosk init
Initialize/update kiosk bootstrap files from config
Usage: bmux kiosk init [OPTIONS]
| Flag | Description | Values | Default |
| --profile | Kiosk profile to reconcile (repeatable) | path (repeatable) | |
| --all-profiles | Reconcile all configured profiles | boolean | false |
| --dry-run | Preview actions without writing files | boolean | false |
| --yes | Skip confirmation prompts | boolean | false |
bmux kiosk issue-token
Issue a kiosk token scoped to a profile
Usage: bmux kiosk issue-token <PROFILE> [OPTIONS]
Arguments:
- <PROFILE> (required) — Kiosk profile name
| Flag | Description | Values | Default |
| --session | Optional session override stored in token | string | |
| --ttl-secs | Optional token TTL in seconds (defaults to profile/default TTL) | string | |
| --one-shot | Mark token as one-shot (defaults to profile/default one_shot) | boolean | false |
| --multi-use | Mark token as reusable until expiry | boolean | false |
bmux kiosk revoke-token
Revoke one issued kiosk token by id
Usage: bmux kiosk revoke-token <TOKEN_ID>
Arguments:
- <TOKEN_ID> (required) — Token id to revoke
bmux kiosk attach
Attach using a kiosk token (intended for forced SSH command)
Usage: bmux kiosk attach <PROFILE> [OPTIONS]
Arguments:
- <PROFILE> (required) — Kiosk profile name
| Flag | Description | Values | Default |
| --token | Raw kiosk token | string |
bmux kiosk ssh-print-config
Print generated sshd include text without writing files
Usage: bmux kiosk ssh-print-config [OPTIONS]
| Flag | Description | Values | Default |
| --profile | Kiosk profile to print (repeatable) | path (repeatable) | |
| --all-profiles | Print all configured profiles | boolean | false |
bmux share
Share helpers for hosted links
Usage: bmux share [TARGET] [SECONDARY] [OPTIONS]
Arguments:
- <TARGET> — Target/link to share
- <SECONDARY> — Optional second positional argument (used by bmux share revoke <name>)
| Flag | Description | Values | Default |
| --name | Optional stable share name | string | |
| --role | Optional access role hint | string | control |
| --ttl | Optional invite TTL (example: 24h, 30m) | string | |
| --one-time | Mark the share as one-time use | boolean | false |
| --copy | Copy resulting share link to clipboard | boolean | false |
| --qr | Render a terminal QR code for the share link | boolean | false |
bmux unshare
Remove a named shared link
Usage: bmux unshare <NAME>
Arguments:
- <NAME> (required) — Share name/slug to remove
bmux connect
Connect to a target and attach to a session
Usage: bmux connect [TARGET] [SESSION] [OPTIONS]
Arguments:
- <TARGET> — Target name or ssh destination (user@host[:port] or ssh://…)
- <SESSION> — Session name or UUID; if omitted in TTY mode a picker is shown
| Flag | Description | Values | Default |
| --follow | Follow target client UUID and attach to its selected session | string | |
| --global | Keep following across target session switches (requires –follow) | boolean | false |
| --reconnect-forever | Keep reconnecting instead of stopping after bounded retries | boolean | false |
bmux new-session
Create a new session
Usage: bmux new-session [NAME]
Arguments:
- <NAME> — Optional session name
bmux list-sessions
List active sessions
Usage: bmux list-sessions [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print sessions as JSON | boolean | false |
bmux list-clients
List connected clients
Usage: bmux list-clients [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print clients as JSON | boolean | false |
bmux kill-session
Kill a session by name or UUID
Usage: bmux kill-session <TARGET> [OPTIONS]
Arguments:
- <TARGET> (required) — Session name or UUID
| Flag | Description | Values | Default |
| --force-local | Bypass policy checks for local kill operations | boolean | false |
bmux kill-all-sessions
Kill all sessions
Usage: bmux kill-all-sessions [OPTIONS]
| Flag | Description | Values | Default |
| --force-local | Bypass policy checks for local kill operations | boolean | false |
bmux attach
Attach to a session by name or UUID
Usage: bmux attach [TARGET] [OPTIONS]
Arguments:
- <TARGET> — Session name or UUID
| Flag | Description | Values | Default |
| --follow | Follow target client UUID and attach to its selected session | string | |
| --global | Keep following across target session switches (requires –follow) | boolean | false |
bmux detach
Detach from the current session
bmux follow
Follow another client’s active target
Usage: bmux follow <TARGET_CLIENT_ID> [OPTIONS]
Arguments:
- <TARGET_CLIENT_ID> (required) — Target client UUID to follow
| Flag | Description | Values | Default |
| --global | Keep following across target session switches | boolean | false |
bmux unfollow
Stop following a client
bmux session
Session management commands
Subcommands:
- new — Create a new session
- list — List active sessions
- clients — List connected clients
- kill — Kill a session by name or UUID
- kill-all — Kill all sessions
- attach — Attach to a session by name or UUID
- detach — Detach from the current session
- follow — Follow another client’s active target
- unfollow — Stop following a client
bmux session new
Create a new session
Usage: bmux session new [NAME]
Arguments:
- <NAME> — Optional session name
bmux session list
List active sessions
Usage: bmux session list [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print sessions as JSON | boolean | false |
bmux session clients
List connected clients
Usage: bmux session clients [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print clients as JSON | boolean | false |
bmux session kill
Kill a session by name or UUID
Usage: bmux session kill <TARGET> [OPTIONS]
Arguments:
- <TARGET> (required) — Session name or UUID
| Flag | Description | Values | Default |
| --force-local | Bypass policy checks for local kill operations | boolean | false |
bmux session kill-all
Kill all sessions
Usage: bmux session kill-all [OPTIONS]
| Flag | Description | Values | Default |
| --force-local | Bypass policy checks for local kill operations | boolean | false |
bmux session attach
Attach to a session by name or UUID
Usage: bmux session attach [TARGET] [OPTIONS]
Arguments:
- <TARGET> — Session name or UUID
| Flag | Description | Values | Default |
| --follow | Follow target client UUID and attach to its selected session | string | |
| --global | Keep following across target session switches (requires –follow) | boolean | false |
bmux session detach
Detach from the current session
bmux session follow
Follow another client’s active target
Usage: bmux session follow <TARGET_CLIENT_ID> [OPTIONS]
Arguments:
- <TARGET_CLIENT_ID> (required) — Target client UUID to follow
| Flag | Description | Values | Default |
| --global | Keep following across target session switches | boolean | false |
bmux session unfollow
Stop following a client
bmux remote
Remote target utilities
Subcommands:
- list — List configured connection targets
- test — Verify connectivity to a configured target
- doctor — Diagnose remote connectivity and runtime readiness
- init — Create and validate a named remote target profile
- install-server — Ensure remote bmux runtime is installed and reachable
- upgrade — Upgrade remote bmux runtime for one or all targets
- complete — Shell completion helpers for targets/sessions
bmux remote list
List configured connection targets
Usage: bmux remote list [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux remote test
Verify connectivity to a configured target
Usage: bmux remote test <TARGET>
Arguments:
- <TARGET> (required) — Target name or ssh destination
bmux remote doctor
Diagnose remote connectivity and runtime readiness
Usage: bmux remote doctor <TARGET> [OPTIONS]
Arguments:
- <TARGET> (required) — Target name or ssh destination
| Flag | Description | Values | Default |
| --fix | Apply safe automatic fixes when possible | boolean | false |
bmux remote init
Create and validate a named remote target profile
Usage: bmux remote init <NAME> [OPTIONS]
Arguments:
- <NAME> (required) — Name for the target profile
| Flag | Description | Values | Default |
| --ssh | Configure as an SSH target (user@host[:port] or host) | string | |
| --tls | Configure as a TLS target (host[:port]) | string | |
| --iroh | Configure as an iroh target (endpoint_id[?relay=https://…][&auth=ssh]) | string | |
| --user | SSH username override | string | |
| --port | SSH/TLS port override | string | |
| --set-default | Mark as default target | boolean | false |
bmux remote install-server
Ensure remote bmux runtime is installed and reachable
Usage: bmux remote install-server <TARGET>
Arguments:
- <TARGET> (required) — Target name
bmux remote upgrade
Upgrade remote bmux runtime for one or all targets
Usage: bmux remote upgrade [TARGET]
Arguments:
- <TARGET> — Target name (omit to upgrade all configured targets)
bmux remote complete
Shell completion helpers for targets/sessions
bmux remote complete targets
Print target names for completion
bmux remote complete sessions
Print session names for a target
Usage: bmux remote complete sessions <TARGET>
Arguments:
- <TARGET> (required) — Target name
bmux server
Server lifecycle and status tools
Subcommands:
- start — Start local bmux server
- status — Check server status
- whoami-principal — Show caller and server control principal identities
- save — Trigger immediate server snapshot save
- restore — Validate persisted snapshot without applying restore
- stop — Request graceful server shutdown
- recording — Control hidden rolling recording on a running server
- gateway — Run a TLS gateway that exposes bmux over TCP/TLS
bmux server start
Start local bmux server
Usage: bmux server start [OPTIONS]
| Flag | Description | Values | Default |
| --daemon | Run server in background daemon mode | boolean | false |
| --pane-shell-integration | Force-enable pane shell integration hooks for this server start | boolean | false |
| --no-pane-shell-integration | Disable pane shell integration hooks for this server start | boolean | false |
| --rolling-recording | Enable hidden rolling recording on server boot for this run | boolean | false |
| --no-rolling-recording | Disable hidden rolling recording on server boot for this run | boolean | false |
| --rolling-window-secs | Override rolling recording window in seconds for this run | integer | |
| --rolling-event-kind-all | Enable all supported rolling event kinds | boolean | false |
| --rolling-event-kind | Explicit rolling event kind allowlist (repeatable) | pane-input-raw, pane-output-raw, protocol-reply-raw, pane-image, server-event, request-start, request-done, request-error, custom (repeatable) | |
| --rolling-capture-input | Override rolling capture of pane input bytes for this run | boolean | false |
| --no-rolling-capture-input | Disable rolling capture of pane input bytes for this run | boolean | false |
| --rolling-capture-output | Override rolling capture of pane output bytes for this run | boolean | false |
| --no-rolling-capture-output | Disable rolling capture of pane output bytes for this run | boolean | false |
| --rolling-capture-events | Override rolling capture of lifecycle/request/custom events for this run | boolean | false |
| --no-rolling-capture-events | Disable rolling capture of lifecycle/request/custom events for this run | boolean | false |
| --rolling-capture-protocol-replies | Override rolling capture of protocol reply bytes for this run | boolean | false |
| --no-rolling-capture-protocol-replies | Disable rolling capture of protocol reply bytes for this run | boolean | false |
| --rolling-capture-images | Override rolling capture of extracted pane images for this run | boolean | false |
| --no-rolling-capture-images | Disable rolling capture of extracted pane images for this run | boolean | false |
bmux server status
Check server status
Usage: bmux server status [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print server status as JSON | boolean | false |
bmux server whoami-principal
Show caller and server control principal identities
Usage: bmux server whoami-principal [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print principal identity as JSON | boolean | false |
bmux server save
Trigger immediate server snapshot save
bmux server restore
Validate persisted snapshot without applying restore
Usage: bmux server restore [OPTIONS]
| Flag | Description | Values | Default |
| --dry-run | Only validate snapshot readability and schema | boolean | false |
| --yes | Confirm replace-restore of current in-memory server state | boolean | false |
bmux server stop
Request graceful server shutdown
bmux server recording
Control hidden rolling recording on a running server
bmux server recording start
Start hidden rolling recording
Usage: bmux server recording start [OPTIONS]
| Flag | Description | Values | Default |
| --rolling-window-secs | Override rolling recording window in seconds | integer | |
| --name | Optional human-readable recording name | string | |
| --rolling-event-kind-all | Enable all supported rolling event kinds | boolean | false |
| --rolling-event-kind | Explicit rolling event kind allowlist (repeatable) | pane-input-raw, pane-output-raw, protocol-reply-raw, pane-image, server-event, request-start, request-done, request-error, custom (repeatable) | |
| --rolling-capture-input | Override rolling capture of pane input bytes | boolean | false |
| --no-rolling-capture-input | Disable rolling capture of pane input bytes | boolean | false |
| --rolling-capture-output | Override rolling capture of pane output bytes | boolean | false |
| --no-rolling-capture-output | Disable rolling capture of pane output bytes | boolean | false |
| --rolling-capture-events | Override rolling capture of lifecycle/request/custom events | boolean | false |
| --no-rolling-capture-events | Disable rolling capture of lifecycle/request/custom events | boolean | false |
| --rolling-capture-protocol-replies | Override rolling capture of protocol reply bytes | boolean | false |
| --no-rolling-capture-protocol-replies | Disable rolling capture of protocol reply bytes | boolean | false |
| --rolling-capture-images | Override rolling capture of extracted pane images | boolean | false |
| --no-rolling-capture-images | Disable rolling capture of extracted pane images | boolean | false |
bmux server recording stop
Stop hidden rolling recording
bmux server recording status
Show hidden rolling recording status and disk usage
Usage: bmux server recording status [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux server recording path
Print hidden rolling recording storage path
Usage: bmux server recording path [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux server recording clear
Clear hidden rolling recording data
Usage: bmux server recording clear [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
| --no-restart | Do not restart rolling recording when it was active | boolean | false |
bmux server gateway
Run a TLS gateway that exposes bmux over TCP/TLS
Usage: bmux server gateway [OPTIONS]
| Flag | Description | Values | Default |
| --listen | Listen address (host:port) | string | |
| --host | Expose gateway publicly via reverse SSH tunnel helper | boolean | false |
| --host-mode | Hosting mode used by –host (iroh is default) | iroh, ssh | iroh |
| --host-relay | Reverse SSH relay destination (user@host) | string | nokey@localhost.run |
| --quick | Generate and use self-signed cert/key in runtime dir for quick setup | boolean | false |
| --cert-file | PEM encoded certificate chain path | path | |
| --key-file | PEM encoded private key path (PKCS8) | path |
bmux logs
Logging diagnostics and utilities
Subcommands:
- path — Print effective log file path
- level — Print effective runtime log level
- tail — Print recent log lines and optionally follow updates
- watch — Interactive live log viewer with dynamic filters
- profiles — Manage saved log watch profiles
bmux logs path
Print effective log file path
Usage: bmux logs path [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux logs level
Print effective runtime log level
Usage: bmux logs level [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux logs tail
Print recent log lines and optionally follow updates
Usage: bmux logs tail [OPTIONS]
| Flag | Description | Values | Default |
| --lines | Number of recent lines to show before follow | integer | 50 |
| --since | Show entries newer than a relative duration (e.g. 30s, 10m, 2h, 1d) | string | |
| --no-follow | Print recent lines only (disable follow) | boolean | false |
bmux logs watch
Interactive live log viewer with dynamic filters
Usage: bmux logs watch [OPTIONS]
| Flag | Description | Values | Default |
| --lines | Number of recent lines to preload (defaults to saved profile value or 200) | integer | |
| --since | Show entries newer than a relative duration (e.g. 30s, 10m, 2h, 1d) | string | |
| --profile | State profile for saved watch filters (default: global default) | path | |
| --include | Include regex filter (case-sensitive, repeatable) | string (repeatable) | |
| --include-i | Include regex filter (case-insensitive, repeatable) | string (repeatable) | |
| --exclude | Exclude regex filter (case-sensitive, repeatable) | string (repeatable) | |
| --exclude-i | Exclude regex filter (case-insensitive, repeatable) | string (repeatable) |
bmux logs profiles
Manage saved log watch profiles
bmux logs profiles list
List saved watch profiles
Usage: bmux logs profiles list [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux logs profiles show
Show details for one profile
Usage: bmux logs profiles show [PROFILE] [OPTIONS]
Arguments:
- <PROFILE> — Profile name (default: global profile default)
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux logs profiles delete
Delete a saved profile
Usage: bmux logs profiles delete <PROFILE>
Arguments:
- <PROFILE> (required) — Profile name to delete
bmux logs profiles rename
Rename a saved profile
Usage: bmux logs profiles rename <FROM> <TO>
Arguments:
- <FROM> (required) — Existing profile name
- <TO> (required) — New profile name
bmux config
Configuration management and inspection
Subcommands:
- path — Print the config file path
- show — Print the effective configuration
- get — Get a configuration value by dotted key path
- set — Set a configuration value in the config file
- profiles — Manage composition profiles
bmux config path
Print the config file path
Usage: bmux config path [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config show
Print the effective configuration
Usage: bmux config show [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON instead of TOML | boolean | false |
bmux config get
Get a configuration value by dotted key path
Usage: bmux config get <KEY> [OPTIONS]
Arguments:
- <KEY> (required) — Dotted key path (e.g. status_bar.max_tabs, behavior.mouse.enabled)
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config set
Set a configuration value in the config file
Usage: bmux config set <KEY> <VALUE>
Arguments:
- <KEY> (required) — Dotted key path (e.g. status_bar.max_tabs, behavior.mouse.enabled)
- <VALUE> (required) — Value to set (booleans, integers, and strings are auto-detected)
bmux config profiles
Manage composition profiles
bmux config profiles list
List known profile ids
Usage: bmux config profiles list [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config profiles show
Show one profile patch and inheritance metadata
Usage: bmux config profiles show <PROFILE> [OPTIONS]
Arguments:
- <PROFILE> (required) — Profile id
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config profiles resolve
Show resolved active profile and effective layers
Usage: bmux config profiles resolve [PROFILE] [OPTIONS]
Arguments:
- <PROFILE> — Optional forced profile id
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config profiles explain
Explain layer-by-layer composition changes
Usage: bmux config profiles explain [PROFILE] [OPTIONS]
Arguments:
- <PROFILE> — Optional forced profile id
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config profiles switch
Set active profile in config file
Usage: bmux config profiles switch <PROFILE> [OPTIONS]
Arguments:
- <PROFILE> (required) — Profile id to activate
| Flag | Description | Values | Default |
| --dry-run | Preview changes without writing config | boolean | false |
| --json | Print output as JSON | boolean | false |
bmux config profiles diff
Diff two resolved profile configurations
Usage: bmux config profiles diff <FROM> <TO> [OPTIONS]
Arguments:
- <FROM> (required) — From profile id
- <TO> (required) — To profile id
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config profiles lint
Validate profile graph and layer rules
Usage: bmux config profiles lint [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux config profiles evaluate
Evaluate auto-select rules in current environment
Usage: bmux config profiles evaluate [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux perf
Runtime performance telemetry controls
Subcommands:
- status — Show current runtime performance telemetry settings
- on — Enable runtime performance telemetry
- off — Disable runtime performance telemetry
bmux perf status
Show current runtime performance telemetry settings
Usage: bmux perf status [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux perf on
Enable runtime performance telemetry
Usage: bmux perf on [OPTIONS]
| Flag | Description | Values | Default |
| --profile | Capture profile level | basic, detailed, trace | detailed |
| --json | Print output as JSON | boolean | false |
bmux perf off
Disable runtime performance telemetry
Usage: bmux perf off [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux doctor
Run system-wide health checks
Usage: bmux doctor [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
| --hosted | Run hosted-mode focused checks | boolean | false |
bmux keymap
Keymap tools and diagnostics
Subcommands:
- doctor — Print compiled keymap and overlap diagnostics
- explain — Explain effective action for a key chord
bmux keymap doctor
Print compiled keymap and overlap diagnostics
Usage: bmux keymap doctor [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print diagnostics as JSON | boolean | false |
bmux keymap explain
Explain effective action for a key chord
Usage: bmux keymap explain <KEY> [OPTIONS]
Arguments:
- <KEY> (required) — Key chord to resolve (e.g. “ctrl+b n”, “alt+h”, “escape”)
| Flag | Description | Values | Default |
| --mode | Resolve inside a specific modal mode id | string | |
| --json | Print output as JSON | boolean | false |
bmux terminal
Terminal capability tools and diagnostics
Subcommands:
- doctor — Show terminal capability profile used for panes
- install-terminfo — Install bmux-256color terminfo entry
bmux terminal doctor
Show terminal capability profile used for panes
Usage: bmux terminal doctor [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print diagnostics as JSON | boolean | false |
| --trace | Include recent protocol trace events | boolean | false |
| --trace-limit | Limit number of trace events shown | integer | 50 |
| --trace-family | Filter trace events by protocol family | csi, osc, dcs | |
| --trace-pane | Filter trace events by pane id | integer |
bmux terminal install-terminfo
Install bmux-256color terminfo entry
Usage: bmux terminal install-terminfo [OPTIONS]
| Flag | Description | Values | Default |
| --yes | Proceed without interactive confirmation | boolean | false |
| --check | Check installability/status without installing | boolean | false |
bmux recording
Recording and replay controls
Subcommands:
- start — Start explicit full-fidelity recording
- stop — Stop active recording or one by id
- status — Show recording status, config defaults, and storage usage
- path — Print recordings storage root path
- list — List available recordings
- delete — Delete one recording by id or unique id prefix
- delete-all — Delete all recordings
- cut — Snapshot the active rolling recording without stopping it
- inspect — Inspect recording timeline events
- analyze — Analyze diagnostics and bottlenecks from a recording
- replay — Replay a recording timeline
- verify-smoke — Run machine-readable verify smoke report
- export — Export a recording as media
- prune — Delete completed recordings older than the retention period
bmux recording start
Start explicit full-fidelity recording
Usage: bmux recording start [OPTIONS]
| Flag | Description | Values | Default |
| --session-id | Restrict capture to one session id | string | |
| --no-capture-input | Do not capture pane input bytes | boolean | false |
| --name | Optional human-readable recording name | string | |
| --profile | Recording profile to use | full, functional, visual | |
| --event-kind | Explicit event kind allowlist (repeatable) | pane-input-raw, pane-output-raw, protocol-reply-raw, pane-image, server-event, request-start, request-done, request-error, custom (repeatable) |
bmux recording stop
Stop active recording or one by id
Usage: bmux recording stop [RECORDING_ID]
Arguments:
- <RECORDING_ID> — Recording id to stop (defaults to active)
bmux recording status
Show recording status, config defaults, and storage usage
Usage: bmux recording status [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux recording path
Print recordings storage root path
Usage: bmux recording path [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
bmux recording list
List available recordings
Usage: bmux recording list [OPTIONS]
| Flag | Description | Values | Default |
| --json | Print output as JSON | boolean | false |
| --limit | Limit number of rows (table default is 10; JSON default is all) | integer | |
| --all | Show all rows (disables default table limit) | boolean | false |
| --sort | Sort field | started, name, events, size | |
| --order | Sort order | asc, desc | |
| --status | Filter by recording status | all, active, done | |
| --match | Match by ID prefix or case-insensitive name substring | string |
bmux recording delete
Delete one recording by id or unique id prefix
Usage: bmux recording delete <RECORDING_ID>
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
bmux recording delete-all
Delete all recordings
Usage: bmux recording delete-all [OPTIONS]
| Flag | Description | Values | Default |
| --yes | Proceed without interactive confirmation | boolean | false |
bmux recording cut
Snapshot the active rolling recording without stopping it
Usage: bmux recording cut [OPTIONS]
| Flag | Description | Values | Default |
| --last-seconds | Window to snapshot, in seconds (default: full rolling window) | string | |
| --export-fps | Override GIF auto-export frames per second for this cut | integer | |
| --name | Optional human-readable recording name | string |
bmux recording inspect
Inspect recording timeline events
Usage: bmux recording inspect <RECORDING_ID> [OPTIONS]
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
| Flag | Description | Values | Default |
| --limit | Limit number of events | integer | 200 |
| --kind | Filter events by kind | string | |
| --json | Print output as JSON | boolean | false |
bmux recording analyze
Analyze diagnostics and bottlenecks from a recording
Usage: bmux recording analyze <RECORDING_ID> [OPTIONS]
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
| Flag | Description | Values | Default |
| --perf | Analyze performance telemetry (bmux.perf custom events) | boolean | false |
| --json | Print output as JSON | boolean | false |
bmux recording replay
Replay a recording timeline
Usage: bmux recording replay <RECORDING_ID> [OPTIONS]
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
| Flag | Description | Values | Default |
| --mode | Replay mode | watch, interactive, verify | watch |
| --speed | Playback speed multiplier in watch mode | number | 1 |
| --target-bmux | Optional target bmux binary for verify mode | string | |
| --compare-recording | Compare with another recording id in verify mode | string | |
| --ignore | Optional comma-separated ignore rules in verify mode | string | |
| --strict-timing | Preserve full recorded input timing in verify mode | boolean | false |
| --max-verify-duration | Maximum verify runtime in seconds before aborting | integer | |
| --verify-start-timeout | Timeout in seconds for target verify server readiness | integer |
bmux recording verify-smoke
Run machine-readable verify smoke report
Usage: bmux recording verify-smoke <RECORDING_ID> [OPTIONS]
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
| Flag | Description | Values | Default |
| --target-bmux | Optional target bmux binary for verify | string | |
| --compare-recording | Compare with another recording id | string | |
| --ignore | Optional comma-separated ignore rules | string | |
| --strict-timing | Preserve full recorded input timing | boolean | false |
| --max-verify-duration | Maximum verify runtime in seconds before aborting | integer | |
| --verify-start-timeout | Timeout in seconds for target verify server readiness | integer |
bmux recording export
Export a recording as media
Usage: bmux recording export <RECORDING_ID> [OPTIONS]
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
| Flag | Description | Values | Default |
| --format | Export format | gif | gif |
| --output | Output file path | path | |
| --view-client | Override view client id for display track selection | string | |
| --speed | Playback speed multiplier | number | 1 |
| --fps | Target frames per second (defaults to recording.export.fps) | integer | |
| --max-duration | Maximum export duration in seconds | integer | |
| --max-frames | Maximum exported frames | integer | |
| --renderer | Renderer mode for frame rasterization | font, bitmap | font |
| --cell-size | Cell size in pixels as WIDTHxHEIGHT (e.g. 8x16) | integer | |
| --cell-width | Override glyph cell width in pixels | string | |
| --cell-height | Override glyph cell height in pixels | string | |
| --font-family | Comma-separated preferred font family names | string | |
| --font-size | Font size in pixels for font renderer | number | |
| --line-height | Line-height multiplier for font renderer | number | |
| --font-path | Additional font file path (repeatable) | path (repeatable) | |
| --palette-source | Palette source for indexed/default color resolution | auto, recording, terminal, xterm | |
| --palette-foreground | Foreground default override for palette resolution (auto or color) | string | |
| --palette-background | Background default override for palette resolution (auto or color) | string | |
| --palette-color | Indexed color override INDEX=COLOR (repeatable) | string (repeatable) | |
| --cursor | Cursor rendering mode for export | auto, on, off | |
| --cursor-shape | Cursor shape override for export | auto, block, bar, underline | |
| --cursor-blink | Cursor blink mode for export | auto, on, off | |
| --cursor-blink-period-ms | Cursor blink period in milliseconds | string | |
| --cursor-color | Cursor color override for export (auto or #RRGGBB) | string | |
| --cursor-profile | Cursor behavior profile for export timing | auto, ghostty, generic | |
| --cursor-solid-after-activity-ms | Keep cursor solid after activity for this duration in ms | string | |
| --cursor-solid-after-input-ms | Keep cursor solid after input activity for this duration in ms | string | |
| --cursor-solid-after-output-ms | Keep cursor solid after output activity for this duration in ms | string | |
| --cursor-solid-after-cursor-ms | Keep cursor solid after cursor movement activity for this duration in ms | string | |
| --cursor-paint-mode | Cursor paint mode for block cursor rendering | auto, invert, fill, outline | |
| --cursor-text-mode | Cursor text mode for filled block cursor glyph readability | auto, swap-fg-bg, force-contrast | |
| --cursor-bar-width-pct | Cursor bar width as a percent of cell width (1-100) | string | |
| --cursor-underline-height-pct | Cursor underline height as a percent of cell height (1-100) | string | |
| --export-metadata | Write export metadata JSON to this path | string | |
| --no-progress | Disable export progress output | boolean | false |
bmux recording prune
Delete completed recordings older than the retention period
Usage: bmux recording prune [OPTIONS]
| Flag | Description | Values | Default |
| --older-than | Override retention period in days (default: use config value) | integer | |
| --json | Output as JSON | boolean | false |
bmux playbook
Headless playbook execution and testing
Subcommands:
- run — Run a playbook from a file or stdin
- validate — Validate a playbook without executing it
- interactive — Start an interactive playbook session with a socket for agent control
- from-recording — Generate a playbook stub from an existing recording
- dry-run — Dry-run: parse, validate, and print the execution plan without running
- diff — Compare results from two playbook runs
- cleanup — Clean up sandbox temp directories from previous playbook runs
bmux playbook run
Run a playbook from a file or stdin
Usage: bmux playbook run <SOURCE> [OPTIONS]
Arguments:
- <SOURCE> (required) — Path to playbook file, or - for stdin
| Flag | Description | Values | Default |
| --json | Output results as JSON | boolean | false |
| --interactive | Run visual interactive live tour (TTY; non-TTY falls back to prompt controls) | boolean | false |
| --target-server | Run against the live server instead of an ephemeral sandbox | boolean | false |
| --record | Record the playbook execution (overrides playbook config) | boolean | false |
| --export-gif | Export the recording as a GIF to the given path (implies –record) | string | |
| --viewport | Override viewport dimensions as COLSxROWS (e.g. 120x40) | string | |
| --timeout | Override max playbook timeout in seconds | integer | |
| --shell | Override shell | string | |
| --var | Define a variable (repeatable). Format: KEY=VALUE | string (repeatable) | |
| -v, --verbose | Print step-by-step progress to stderr | boolean | false |
bmux playbook validate
Validate a playbook without executing it
Usage: bmux playbook validate <SOURCE> [OPTIONS]
Arguments:
- <SOURCE> (required) — Path to playbook file, or - for stdin
| Flag | Description | Values | Default |
| --json | Output results as JSON | boolean | false |
bmux playbook interactive
Start an interactive playbook session with a socket for agent control
Usage: bmux playbook interactive [OPTIONS]
| Flag | Description | Values | Default |
| --socket | Socket path override (default: auto-generated in sandbox temp dir) | string | |
| --record | Record the session | boolean | false |
| --viewport | Viewport dimensions as COLSxROWS (default: 80x24) | string | 80x24 |
| --shell | Shell override | string | |
| --timeout | Max session lifetime in seconds (default: no limit) | integer |
bmux playbook from-recording
Generate a playbook stub from an existing recording
Usage: bmux playbook from-recording <RECORDING_ID> [OPTIONS]
Arguments:
- <RECORDING_ID> (required) — Recording id/name or unique id/name prefix
| Flag | Description | Values | Default |
| -o, --output | Output file path (default: stdout) | path |
bmux playbook dry-run
Dry-run: parse, validate, and print the execution plan without running
Usage: bmux playbook dry-run <SOURCE> [OPTIONS]
Arguments:
- <SOURCE> (required) — Path to playbook file, or - for stdin
| Flag | Description | Values | Default |
| --json | Output as JSON | boolean | false |
bmux playbook diff
Compare results from two playbook runs
Usage: bmux playbook diff <LEFT> <RIGHT> [OPTIONS]
Arguments:
- <LEFT> (required) — Path to first (baseline/left) playbook result JSON
- <RIGHT> (required) — Path to second (new/right) playbook result JSON
| Flag | Description | Values | Default |
| --json | Output diff as JSON | boolean | false |
| --timing-threshold | Timing regression threshold in percent (default: 50) | integer | 50 |
bmux playbook cleanup
Clean up sandbox temp directories from previous playbook runs
Usage: bmux playbook cleanup [OPTIONS]
| Flag | Description | Values | Default |
| --dry-run | Only list orphaned dirs without deleting | boolean | false |
| --json | Output as JSON | boolean | false |
bmux sandbox
Run bmux in an isolated ephemeral sandbox environment
Subcommands:
- dev — Run bmux in a dev-friendly isolated sandbox (prefers local debug build)
- run — Run bmux in an isolated ephemeral environment
- list — List known sandbox directories and runtime status
- status — Show a summary of sandbox runtime and index health
- inspect — Inspect a sandbox by id or absolute path
- tail — Print sandbox log tail without full manifest output
- open — Open sandbox paths and repro context quickly
- rerun — Rerun command from an existing sandbox manifest
- triage — One-shot sandbox failure triage summary
- doctor — Diagnose sandbox readiness and health checks
- bundle — Bundle sandbox diagnostics and logs into a single directory
- verify-bundle — Verify a sandbox bundle against its recorded metadata
- cleanup — Clean up sandbox temp directories from sandbox runs
- clean — Opinionated cleanup defaults for day-to-day sandbox hygiene
- rebuild-index — Rebuild sandbox index from discovered sandbox manifests
bmux sandbox dev
Run bmux in a dev-friendly isolated sandbox (prefers local debug build)
Usage: bmux sandbox dev <COMMAND> [OPTIONS]
Arguments:
- <COMMAND> (required) — bmux arguments to execute inside sandbox (pass after –)
| Flag | Description | Values | Default |
| --bmux-bin | Path to bmux binary to execute (default: ./target/debug/bmux if present) | string | |
| --env-mode | Sandbox environment mode | clean, inherit, hermetic | clean |
| --json | Output sandbox metadata as JSON | boolean | false |
| --print-env | Print fully resolved environment map before executing command | boolean | false |
| --timeout | Kill sandbox command if it exceeds this timeout in seconds | integer | |
| --name | Optional human-friendly sandbox label | string |
bmux sandbox run
Run bmux in an isolated ephemeral environment
Usage: bmux sandbox run <COMMAND> [OPTIONS]
Arguments:
- <COMMAND> (required) — bmux arguments to execute inside sandbox (pass after –)
| Flag | Description | Values | Default |
| --bmux-bin | Path to bmux binary to execute (default: current executable) | string | |
| --env-mode | Sandbox environment mode | clean, inherit, hermetic | clean |
| --keep | Keep sandbox directory after command exits | boolean | false |
| --json | Output sandbox metadata as JSON | boolean | false |
| --print-env | Print fully resolved environment map before executing command | boolean | false |
| --timeout | Kill sandbox command if it exceeds this timeout in seconds | integer | |
| --name | Optional human-friendly sandbox label | string |
bmux sandbox list
List known sandbox directories and runtime status
Usage: bmux sandbox list [OPTIONS]
| Flag | Description | Values | Default |
| --status | Filter to matching status only | running, stopped, failed, all | all |
| --source | Filter to a sandbox source | sandbox-cli, playbook, recording-verify, all | all |
| --limit | Maximum entries to show | integer | 20 |
| --json | Output as JSON | boolean | false |
bmux sandbox status
Show a summary of sandbox runtime and index health
Usage: bmux sandbox status [OPTIONS]
| Flag | Description | Values | Default |
| --json | Output as JSON | boolean | false |
bmux sandbox inspect
Inspect a sandbox by id or absolute path
Usage: bmux sandbox inspect [SANDBOX] [OPTIONS]
Arguments:
- <SANDBOX> — Sandbox id (bmux-sbx-…) or full path
| Flag | Description | Values | Default |
| --latest | Inspect the most recent sandbox | boolean | false |
| --latest-failed | Inspect the most recent failed sandbox | boolean | false |
| --source | Filter source when resolving –latest or –latest-failed | sandbox-cli, playbook, recording-verify, all | all |
| --tail | Number of log lines to tail from sandbox logs | string | 80 |
| --json | Output as JSON | boolean | false |
bmux sandbox tail
Print sandbox log tail without full manifest output
Usage: bmux sandbox tail [SANDBOX] [OPTIONS]
Arguments:
- <SANDBOX> — Sandbox id (bmux-sbx-…) or full path
| Flag | Description | Values | Default |
| --latest | Tail the most recent sandbox | boolean | false |
| --latest-failed | Tail the most recent failed sandbox | boolean | false |
| --source | Filter source when resolving –latest or –latest-failed | sandbox-cli, playbook, recording-verify, all | all |
| --tail | Number of log lines to tail from sandbox logs | string | 80 |
| --json | Output as JSON | boolean | false |
bmux sandbox open
Open sandbox paths and repro context quickly
Usage: bmux sandbox open [SANDBOX] [OPTIONS]
Arguments:
- <SANDBOX> — Sandbox id (bmux-sbx-…) or full path
| Flag | Description | Values | Default |
| --latest | Open the most recent sandbox | boolean | false |
| --latest-failed | Open the most recent failed sandbox | boolean | false |
| --source | Filter source when resolving –latest or –latest-failed | sandbox-cli, playbook, recording-verify, all | all |
| --json | Output as JSON | boolean | false |
bmux sandbox rerun
Rerun command from an existing sandbox manifest
Usage: bmux sandbox rerun [SANDBOX] [OPTIONS]
Arguments:
- <SANDBOX> — Sandbox id (bmux-sbx-…) or full path
| Flag | Description | Values | Default |
| --latest | Rerun the most recent sandbox | boolean | false |
| --latest-failed | Rerun the most recent failed sandbox | boolean | false |
| --source | Filter source when resolving –latest or –latest-failed | sandbox-cli, playbook, recording-verify, all | all |
| --bmux-bin | Override bmux binary path from manifest | string | |
| --env-mode | Override sandbox environment mode from manifest | clean, inherit, hermetic | |
| --keep | Keep rerun sandbox directory after command exits | boolean | false |
| --json | Output sandbox metadata as JSON | boolean | false |
| --print-env | Print fully resolved environment map before executing command | boolean | false |
| --timeout | Kill rerun command if it exceeds this timeout in seconds | integer | |
| --name | Optional human-friendly sandbox label | string |
bmux sandbox triage
One-shot sandbox failure triage summary
Usage: bmux sandbox triage [SANDBOX] [OPTIONS]
Arguments:
- <SANDBOX> — Sandbox id (bmux-sbx-…) or full path
| Flag | Description | Values | Default |
| --latest | Triage the most recent sandbox | boolean | false |
| --latest-failed | Triage the most recent failed sandbox | boolean | false |
| --source | Filter source when resolving –latest or –latest-failed | sandbox-cli, playbook, recording-verify, all | all |
| --tail | Number of log lines to tail from sandbox logs | string | 80 |
| --rerun | Rerun command from selected sandbox manifest | boolean | false |
| --bmux-bin | Override bmux binary path from manifest for rerun | string | |
| --env-mode | Override sandbox environment mode from manifest for rerun | clean, inherit, hermetic | |
| --keep | Keep rerun sandbox directory after command exits | boolean | false |
| --print-env | Print fully resolved environment map before rerun command | boolean | false |
| --timeout | Kill rerun command if it exceeds this timeout in seconds | integer | |
| --name | Optional human-friendly sandbox label for rerun | string | |
| --bundle | Bundle selected sandbox diagnostics after triage | boolean | false |
| --bundle-output | Optional output directory for triage bundle (default: ./sandbox-bundles) | string | |
| --bundle-strict-verify | Fail triage when bundle verification reports unexpected extra artifacts | boolean | false |
| --json | Output as JSON | boolean | false |
bmux sandbox doctor
Diagnose sandbox readiness and health checks
Usage: bmux sandbox doctor [OPTIONS]
| Flag | Description | Values | Default |
| --id | Optional sandbox id/path for targeted checks | string | |
| --fix | Apply automatic sandbox repair actions | boolean | false |
| --dry-run | Preview repair actions without mutating state (requires –fix) | boolean | false |
| --json | Output as JSON | boolean | false |
bmux sandbox bundle
Bundle sandbox diagnostics and logs into a single directory
Usage: bmux sandbox bundle <SANDBOX> [OPTIONS]
Arguments:
- <SANDBOX> (required) — Sandbox id (bmux-sbx-…) or full path
| Flag | Description | Values | Default |
| --output | Optional output directory path (default: ./sandbox-bundles) | path | |
| --include-env | Include environment/context snapshot in bundle | boolean | false |
| --include-index-state | Include current sandbox index state in bundle | boolean | false |
| --include-doctor | Include doctor checks snapshot in bundle | boolean | false |
| --verify | Verify generated bundle against recorded metadata | boolean | false |
| --json | Output as JSON | boolean | false |
bmux sandbox verify-bundle
Verify a sandbox bundle against its recorded metadata
Usage: bmux sandbox verify-bundle <BUNDLE_DIR> [OPTIONS]
Arguments:
- <BUNDLE_DIR> (required) — Bundle directory path
| Flag | Description | Values | Default |
| --strict | Fail when bundle contains unexpected extra artifacts | boolean | false |
| --json | Output as JSON | boolean | false |
bmux sandbox cleanup
Clean up sandbox temp directories from sandbox runs
Usage: bmux sandbox cleanup [OPTIONS]
| Flag | Description | Values | Default |
| --dry-run | Only list orphaned dirs without deleting | boolean | false |
| --failed-only | Remove only failed/aborted sandboxes | boolean | false |
| --all-status | Include both failed and non-failed sandboxes | boolean | false |
| --older-than | Minimum age in seconds before sandbox is eligible for cleanup | integer | |
| --source | Filter to a sandbox source | sandbox-cli, playbook, recording-verify, all | |
| --json | Output as JSON | boolean | false |
bmux sandbox clean
Opinionated cleanup defaults for day-to-day sandbox hygiene
Usage: bmux sandbox clean [OPTIONS]
| Flag | Description | Values | Default |
| --dry-run | Only list orphaned dirs without deleting | boolean | false |
| --all-status | Include both failed and non-failed sandboxes | boolean | false |
| --older-than | Minimum age in seconds before sandbox is eligible for cleanup | integer | |
| --source | Filter to a sandbox source | sandbox-cli, playbook, recording-verify, all | |
| --json | Output as JSON | boolean | false |
bmux sandbox rebuild-index
Rebuild sandbox index from discovered sandbox manifests
Usage: bmux sandbox rebuild-index [OPTIONS]
| Flag | Description | Values | Default |
| --json | Output as JSON | boolean | false |
bmux slot
Manage bmux slots (multi-version installs)
Subcommands:
- list — List all declared slots and the presentational default
- show — Show one slot’s full resolved detail
- paths — Print this slot’s resolved paths (config/runtime/data/state/log)
- doctor — Validate the slot manifest: names, duplicate runtime dirs, binaries, per-slot configs
- install — Register a new slot
- uninstall — Remove a slot from the manifest and delete its bmux-<name> binary
- shell — Print shell code that prepends $BMUX_SLOTS_BIN_DIR to PATH
- exec — Run a command with a slot’s env applied (re-execs via execvp)
- print — Print the resolved env-var set as structured data
bmux slot list
List all declared slots and the presentational default
Usage: bmux slot list [OPTIONS]
| Flag | Description | Values | Default |
| --format | Output format | toml, json, nix | toml |
bmux slot show
Show one slot’s full resolved detail
Usage: bmux slot show [NAME] [OPTIONS]
Arguments:
- <NAME> — Slot name. Defaults to the active slot
| Flag | Description | Values | Default |
| --format | Output format | toml, json, nix | toml |
bmux slot paths
Print this slot’s resolved paths (config/runtime/data/state/log)
Usage: bmux slot paths [NAME]
Arguments:
- <NAME> — Slot name. Defaults to the active slot
bmux slot doctor
Validate the slot manifest: names, duplicate runtime dirs, binaries, per-slot configs
bmux slot install
Register a new slot
Usage: bmux slot install <NAME> <BINARY> [OPTIONS]
Arguments:
- <NAME> (required) — Slot name (validates as [A-Za-z0-9._-]+, not reserved)
- <BINARY> (required) — Path to the source bmux binary
| Flag | Description | Values | Default |
| --no-inherit-base | Disable base-config inheritance for this slot | boolean | false |
| --mode | Symlink (default) or copy the binary into bin_dir | symlink, copy | symlink |
| --bin-dir | Destination bin dir for bmux-<name>. Defaults to ~/.local/bin (or $BMUX_SLOTS_BIN_DIR) | path | |
| --format | Output format for the printed block | toml, json, nix | toml |
| --dry-run | Do not modify disk; only print what would happen | boolean | false |
| --overwrite | Replace an existing slot with the same name. Without this flag duplicates are refused (after an interactive prompt, if a TTY is attached) | boolean | false |
| -y, --yes | Skip interactive confirmation prompts. When replacing an existing slot, --overwrite is still required | boolean | false |
bmux slot uninstall
Remove a slot from the manifest and delete its bmux-<name> binary
Usage: bmux slot uninstall <NAME> [OPTIONS]
Arguments:
- <NAME> (required) — Slot name
| Flag | Description | Values | Default |
| --purge | Also remove the slot’s config/data/state/log dirs | boolean | false |
| --bin-dir | Destination bin dir the slot binary lives in | path |
bmux slot shell
Print shell code that prepends $BMUX_SLOTS_BIN_DIR to PATH
Usage: bmux slot shell [OPTIONS]
| Flag | Description | Values | Default |
| --shell | auto, bash, zsh, fish, nushell, powershell, posix | auto |
bmux slot exec
Run a command with a slot’s env applied (re-execs via execvp)
Usage: bmux slot exec <SLOT> <ARGV>
Arguments:
- <SLOT> (required) — Slot name to activate
- <ARGV> (required) — Command and arguments
bmux slot print
Print the resolved env-var set as structured data
Usage: bmux slot print [OPTIONS]
| Flag | Description | Values | Default |
| --format | shell, json, nix, fish | shell |
bmux env
Alias for bmux slot ... (same subcommand tree; useful alongside the standalone bmux-env binary for symmetry)
Subcommands:
- list — List all declared slots and the presentational default
- show — Show one slot’s full resolved detail
- paths — Print this slot’s resolved paths (config/runtime/data/state/log)
- doctor — Validate the slot manifest: names, duplicate runtime dirs, binaries, per-slot configs
- install — Register a new slot
- uninstall — Remove a slot from the manifest and delete its bmux-<name> binary
- shell — Print shell code that prepends $BMUX_SLOTS_BIN_DIR to PATH
- exec — Run a command with a slot’s env applied (re-execs via execvp)
- print — Print the resolved env-var set as structured data
bmux env list
List all declared slots and the presentational default
Usage: bmux env list [OPTIONS]
| Flag | Description | Values | Default |
| --format | Output format | toml, json, nix | toml |
bmux env show
Show one slot’s full resolved detail
Usage: bmux env show [NAME] [OPTIONS]
Arguments:
- <NAME> — Slot name. Defaults to the active slot
| Flag | Description | Values | Default |
| --format | Output format | toml, json, nix | toml |
bmux env paths
Print this slot’s resolved paths (config/runtime/data/state/log)
Usage: bmux env paths [NAME]
Arguments:
- <NAME> — Slot name. Defaults to the active slot
bmux env doctor
Validate the slot manifest: names, duplicate runtime dirs, binaries, per-slot configs
bmux env install
Register a new slot
Usage: bmux env install <NAME> <BINARY> [OPTIONS]
Arguments:
- <NAME> (required) — Slot name (validates as [A-Za-z0-9._-]+, not reserved)
- <BINARY> (required) — Path to the source bmux binary
| Flag | Description | Values | Default |
| --no-inherit-base | Disable base-config inheritance for this slot | boolean | false |
| --mode | Symlink (default) or copy the binary into bin_dir | symlink, copy | symlink |
| --bin-dir | Destination bin dir for bmux-<name>. Defaults to ~/.local/bin (or $BMUX_SLOTS_BIN_DIR) | path | |
| --format | Output format for the printed block | toml, json, nix | toml |
| --dry-run | Do not modify disk; only print what would happen | boolean | false |
| --overwrite | Replace an existing slot with the same name. Without this flag duplicates are refused (after an interactive prompt, if a TTY is attached) | boolean | false |
| -y, --yes | Skip interactive confirmation prompts. When replacing an existing slot, --overwrite is still required | boolean | false |
bmux env uninstall
Remove a slot from the manifest and delete its bmux-<name> binary
Usage: bmux env uninstall <NAME> [OPTIONS]
Arguments:
- <NAME> (required) — Slot name
| Flag | Description | Values | Default |
| --purge | Also remove the slot’s config/data/state/log dirs | boolean | false |
| --bin-dir | Destination bin dir the slot binary lives in | path |
bmux env shell
Print shell code that prepends $BMUX_SLOTS_BIN_DIR to PATH
Usage: bmux env shell [OPTIONS]
| Flag | Description | Values | Default |
| --shell | auto, bash, zsh, fish, nushell, powershell, posix | auto |
bmux env exec
Run a command with a slot’s env applied (re-execs via execvp)
Usage: bmux env exec <SLOT> <ARGV>
Arguments:
- <SLOT> (required) — Slot name to activate
- <ARGV> (required) — Command and arguments
bmux env print
Print the resolved env-var set as structured data
Usage: bmux env print [OPTIONS]
| Flag | Description | Values | Default |
| --format | shell, json, nix, fish | shell |