bmux is a Beads-aware git worktree orchestrator built with Go and Bubble Tea.
It maps one Beads task to one branch/worktree by default, and can reuse an existing branch for subtasks/dependencies using deterministic precedence.
- Bubble Tea TUI entrypoint (
bmux) - Deterministic branch naming:
task/<issue-id>-<slug> - Configurable worktree directory (default:
<project_root>/.worktrees) - Branch creation from current HEAD commit with captured base branch/commit metadata
- Dependency-based branch reuse with precedence:
parent-childblocksdiscovered-fromrelated
- PR/MR delegation prompt generation (
bmux task pr <issue-id>) - Explicit merge and cleanup commands
- Go 1.26+
gitbd(Beads CLI)
go build ./cmd/bmuxbmux
bmux doctor
bmux config show
bmux task open <issue-id>
bmux task pr <issue-id>
bmux task merge <issue-id>
bmux task cleanup <issue-id>Config files are loaded in this order:
~/.bmux/config.yaml.bmux/config.yaml(project override)
Supported keys:
worktree_dir: /absolute/or/project-relative/path
branch_prefix: task/
entrypoint: tui
subtask_share_mode: dependency
agents:
claude:
command: claude
codex:
command: codex
tmux:
auto_attach: true
layout: sidebar
control_pane_width: 55
min_pane_width: 60
max_pane_width: 100
session_prefix: bmux-
split_direction: right
planning:
prompt_template: ""Defaults:
worktree_dir:<project_root>/.worktreesbranch_prefix:task/entrypoint:tuisubtask_share_mode:dependencytmux.split_direction:right(rightorbelow, used whentmux.layout=single; sidebar layout is layout-manager controlled)tmux.auto_attach:true(auto-create/attach project tmux session when launched outside tmux)tmux.layout:sidebar(sidebarorsingle)tmux.control_pane_width:55tmux.min_pane_width:60(clamped to40..300)tmux.max_pane_width:100(clamped to40..300, normalized somax >= min)tmux.session_prefix:bmux-agents.claude.command: empty by default; if empty,bmuxfalls back toclaudefrom PATHagents.codex.command: empty by default; if empty,bmuxfalls back tocodexfrom PATHplanning.prompt_template: built-in template when empty
examples/beads-sample is a deterministic Beads fixture repository for manual and scripted bmux testing.
Reset fixture state with one command:
cd examples/beads-sample
./reset.shreset.sh is destructive and always rebuilds from scratch. It wipes local .beads/, .bmux/, and .worktrees/, reinitializes Beads with prefix bd, reseeds fixed IDs (bd-100 to bd-105) and dependencies, then recreates a clean baseline git commit.
Fixture seed/schema updates are intentionally non-backward-compatible.
bmuxtargets current Beads CLI behavior (bd 0.58.xbaseline).bd syncis not used; metadata operations rely onbdcommand primitives and Dolt flows.- Runtime state is stored in
.bmux/state.json.