Agent-aware tmux control

Pilot every tmux session from one menu.

A fast Rust picker for tmux sessions, tmuxinator layouts, working directories, and the coding agents running inside them.

$ cargo install --path crates/muxpilot
muxpilot live

Get started

Install it your way — one binary, no runtime.

brew

Homebrew

macOS or Linux, straight from the tap.

$ brew install muxpilot/tap/muxpilot
cargo

Cargo

From crates.io with Rust 1.75 or newer.

$ cargo install muxpilot
npm

npm

Prebuilt binary, fetched through Node.

$ npm install -g muxpilot
tmux

tmux plugin

Add to ~/.tmux.conf, then run TPM.

tpm set -g @plugin 'muxpilot/muxpilot'

Then run muxpilot in any pane — or bind it to a tmux popup (below). Confirm your setup any time with muxpilot doctor, or follow the installation guide.

Why MuxPilot

One menu over everything you launch.

The picker

A native tmux popup — not an fzf wrapper.

Fuzzy filter, grouped running and configured targets, live details, and a preview pane — all rendered by MuxPilot itself, driven entirely from the keyboard.

muxpilot live
MuxPilot native picker listing tmux workspaces

Agent awareness

See which sessions have an agent working.

MuxPilot reads agent hooks when present and falls back to process and pane signals — surfacing a live count and status (agent / active) next to every session.

muxpilot live
Agent count and status column in the MuxPilot picker

Window tree

Unfold any session into its windows.

Press l or Space to expand a running session into a tree of its windows — pane counts, agents, and activity per window — then jump straight to the one you want.

muxpilot live
A MuxPilot session expanded into a tree of its windows

Scriptable

Every view has a --json twin.

Pipe muxpilot state --json into status bars, sidebars, and your own tooling. Structured, versioned, and agent-aware — the same data the picker draws.

muxpilot state --json
{
  "schema_version": 1,
  "source": "tmux",
  "current_session": "billing-portal-2",
  "sessions": [
    {
      "name": "billing-portal-2",
      "windows": [
        {
          "id": "@20",
          "index": 0,
          "name": "logs",
          "active": true,
          "panes": [
            {
              "id": "%40",
              "active": true,
              "role": "agent",
              "current_command": "claude",
              "agent": {
                "kind": "claude",
                "status": "working",
                "source": "hook",
                "confidence": 95,
                "attention": false
              }
            }
          ]
        }
      ]
    }
  ]
}

Drill in

Expand a session into its windows.

Press l or Space on a running session to unfold it into a tree of its windows, each with its pane count, agents, and last activity. Open any window directly with Enter; h collapses the session again.

l / Space expands a session into its windows; h collapses it

Live in tmux

Bind it to a key, launch it in a popup.

tmux.confbind-key C-j display-popup -E -w 80% -h 70% "muxpilot"

Install through TPM with set -g @plugin 'muxpilot/muxpilot', or wire the popup binding by hand. See the tmux plugin guide.