Tmux config lives in .tmux.conf. It supports both interactive human use and
parallel Claude Code agent sessions.
Sessions are per-project. The start-agents script creates an agents
session for parallel Claude Code work.
Prefix is C-b (default).
| Key | Action |
|---|---|
C-b c |
New window |
C-b [0-9] |
Switch to window N |
M-1 … M-5 |
Jump to window 1–5 (no prefix needed) |
Tab / BTab |
Next / previous window (repeatable) |
C-b C-a |
Last window |
C-b , |
Rename window |
C-b b |
Toggle status bar |
C-b x |
Kill pane |
C-b X |
Kill window |
| Key | Action |
|---|---|
C-b | |
Split horizontal (keeps cwd) |
C-b - |
Split vertical (keeps cwd) |
C-b h/j/k/l |
Move to pane left/down/up/right (mirrors <A-hjkl> in neovim) |
C-b H/J/K/L |
Resize pane by 5 (repeatable) |
| Key | Action |
|---|---|
C-b [ |
Enter copy mode (vi keys) |
v |
Begin selection (in copy mode) |
y |
Yank selection to system clipboard (in copy mode) |
| Key | Action |
|---|---|
C-b S |
Toggle sync panes (broadcast input) |
| Key | Action |
|---|---|
C-b r |
Reload config (shows confirmation) |
# Three agents on worktrees — tiled panes in one window (default)
start-agents --worktree ~/my-repo 3
# Same, but each agent in its own window
start-agents --windows --worktree ~/my-repo 3
# One agent per project directory
start-agents ~/project-a ~/project-bCreates a tmux session named agents. Default layout is --panes (all agents
tiled in one window). Use --windows for one window per agent.
All agents share one window with a tiled layout. Workflow:
- Glance at all agents in the overview
C-b zto zoom into one that needs attentionC-b zagain to pop back to the tiled viewC-b q Nto jump to pane N by number
Each agent gets a full-screen window. Switch with C-b N or C-b n/C-b p.
Better when agents produce a lot of output and you need full-screen context.
start-agents --worktree ~/repo 3Creates git worktrees under <repo>/.worktrees/ with branches named
agent/YYYYMMDD-N. Reuses existing worktrees from the same day.
- Bell notification: agents that finish or need attention trigger a bell.
monitor-bell on+bell-action anymeans you see it from any session. - Activity monitor: window names highlight on output (
monitor-activity on). - Broadcast input:
C-b Stoggles synchronized panes — type once, send to all panes in the current window.
Worktrees can be cleaned up with:
cd ~/repo
git worktree list # see what exists
git worktree remove .worktrees/YYYYMMDD-N| Setting | Value | Rationale |
|---|---|---|
escape-time |
0 |
No delay for Esc (vi mode) |
history-limit |
50000 |
Agents produce verbose output |
base-index |
1 |
1-based window numbering (closer to keyboard) |
renumber-windows |
on |
No gaps after closing windows |
automatic-rename |
off |
Agents keep their window labels |
allow-rename |
off |
Prevents escape sequences from renaming |
mouse |
on |
Click to select panes/windows, scroll |
mode-keys |
vi |
Vi keys in copy mode |
monitor-bell |
on |
Agent completion notifications |
bell-action |
any |
Bell visible from any session |
Plugins are managed by TPM.
TPM is installed automatically by setup.sh. If you need to install manually:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmAfter loading the config, install plugins with prefix + I.
- tmux-ukiyo — status bar theme matching Neovim kanagawa/wave. Configured with a custom sysinfo segment (
scripts/tmux-sysinfo.sh) and powerline separators. - extrakto — fuzzy-extract text from terminal output (paths, URLs, words) into the command line or clipboard.
M-1 … M-5 require your terminal to send Meta (not Esc-prefix):
- iTerm2: Preferences > Profiles > Keys > Left Option Key =
Esc+ - Alacritty: set
option_as_alt: Bothin config - Kitty:
macos_option_as_alt yes
If Meta isn't configured, these bindings simply don't fire — no errors.