Introduction

MuxPilot is a fast Rust tmux workspace picker and agent-aware session menu. It puts every launchable thing — running sessions, saved layouts, frecent directories, and the coding agents inside them — behind one keystroke.

The picker: grouped targets, live agent state, one keystroke to switch.

What it does

MuxPilot discovers launchable targets and renders them in a single emoji-prefixed menu you drive with the keyboard:

Pick one and MuxPilot launches it: it attaches or switches to a running session, tmuxinator starts a layout, or opens a fresh session in a directory.

Tabs for each kind of target

A tab bar across the top splits the inventory into focused views — Sessions, Agents, Layouts, Dirs — each its own list. Switch with the letter on the tab (s / a / x / d) or cycle with Tab. MuxPilot remembers the tab you last acted from and reopens on it, and it homes the cursor to where you already are: the current session in Sessions, and — when you open from a pane running an agent — that exact agent in Agents.

A tab per kind of target; switch by letter, and the picker reopens on the tab you last used.

Expand a session into its windows and agents

Running sessions unfold into a tree. Press l or Space on a session to reveal its windows — each with its pane count, agent count, and last activity. Any window that hosts a coding agent auto-reveals that pane, showing its agent, model, and live status (e.g. cline haiku-4-5 ◇ input) right there — no extra keystroke. Press l again on a window to expand its remaining shell panes, Enter to switch straight to a window or pane, and h to collapse.

Expanding a session reveals its windows and auto-reveals each agent's pane — agent, model, and status inline.

Agent awareness

The reason MuxPilot exists is the last item on that list. When you run several coding agents across tmux sessions, it is easy to lose track of which one is working, which is waiting on you, and which is idle. MuxPilot reads agent hooks when they are available and falls back to process and pane signals otherwise, so the picker can show which sessions have an agent running right now.

Every view that renders state also has a --json twin, so the same data can feed a tmux status line, a sidebar pane, or your own tooling.

Two ways to run it

Ready to install? Head to Installation.