Files
omarchy/docs/tools/workmux.md
T

3.0 KiB
Raw Blame History

workmux

workmux global config: one git worktree and one tmux session per agent, driven from the Workmux palette.

workmux pairs each git worktree with a tmux target and starts an agent in it. Here every worktree gets its own tmux session (an omp window and an nvim window), and the Workmux palette (Ghostty ctrl+shift+a, tmux prefix w, or ctrl+space → Workmux) covers the lifecycle: open, new, close, merge, remove, and jumping to agents by status.

Source dot_config/workmux/config.yaml
Target ~/.config/workmux/config.yaml (symlink)
Packages workmux under packages.shared.mise
Status tracking omp extension ~/.omp/agent/extensions/workmux-status.ts (in the omp external)

config.yaml

Key Value Effect
nerdfont true Nerd Font icons in workmux's own UI.
mode session Each worktree is a tmux session, so the session pill, Ghostty's window title, and the Sessions palette list it like any other session.
window_prefix "{project}/" Session names read <repo>/<handle>.
worktree_dir ~/Work/{project} Worktrees land in ~/Work/<repo>/<handle>, next to worktrunk's ~/Work/<repo>-<branch>.
base_branch auto New branches start from the repo's main branch, not the branch the pane is on.
agent omp <agent> runs omp; it receives -p/-P/-e prompts and names branches for add -A.
auto_name.system_prompt rules below Keeps add -A branch names short (see Branch names).
windows omp (focused), nvim Two unnamed windows, so automatic-rename-format labels them like every other tab.
status_format false workmux leaves window-status-format alone; tmux.conf renders #{@workmux_status} itself (see Window tabs).

A .workmux.yaml in a repo overrides any of these.

Agent status

The omp extension reports working, waiting, and done. workmux stores the icon in the window option @workmux_status, which the tab formats print after the label. The palette's Agents group reads workmux status --all --json.

Branch names

workmux add -A (the palette's New item) pipes the task to omp --no-session -p with auto_name.system_prompt. The name becomes the worktree directory, the tab label (cut at 27 characters), and the session <repo>/<name> in the session pill (status-left-length 30), so the prompt asks for kebab-case, 1–2 words (3 if needed), at most 16 characters, the subject rather than the method, filler words dropped, common short forms (auth, config, nav, anim, …), and no feat/-style prefixes. Checked with --dry-run: a menu-bar tap/expand animation task → menubar-expand, a macOS codesigning CI failure → codesign-fix, plugin API docs → plugin-api-docs. The model can still overshoot; the prompt is guidance, not a hard cap.