code
Open Source

agent-wrangler

Tmux control layer for teams of AI coding agents

One terminal. Many agents. Health-aware grid. Orchestrate Claude Code, Codex, Aider, and Gemini across every repo without losing track of any of them.

tmux — agent-wrangler
┌─ STATUS RAIL ──────────────────────┐
pane 1 · amirhjalali.com · claude · generating
pane 2 · agent-wrangler · codex · waiting
pane 3 · monclaude · claude · generating
pane 4 · hq · aider · idle 4m
└────────────────────────────────────┘
refresh every 2s · ⌥+m manager · ⌥+arrow move

What you get

Auto-discovery

Scans running Ghostty terminals by process tree, matches each to a project by working directory, imports unknown terminals by directory name. Zero config required.

Health monitoring

Scrollback-based detection of agent state. Green = generating, yellow = waiting at prompt, red = error or stalled. Health surfaces in pane borders, status rail, and status bar.

Manager mode

Dedicated window with Claude Code on the left and a live-refreshing status rail on the right. One place to orchestrate every agent across every repo.

Walk-away briefing

Run briefing after stepping away to see what changed: which agents finished, which errored, git drift across all panes.

Quick start

Three commands

$ git clone https://github.com/amirhjalali/agent-wrangler.git
$ cd agent-wrangler
$ ./scripts/agent-wrangler start

Requirements

  • tmux
  • Ghostty terminal
  • Python 3
  • macOS (Option key must be configured as Alt in Ghostty)

How it works

1

Discover Ghostty terminals by walking the process tree and match each to a project by working directory.

2

Import every pane into a tmux grid with health-aware borders driven by scrollback inspection.

3

Open a manager window with Claude Code on the left and a live-refreshing status rail on the right.

4

Drive any pane through the same CLI: start an agent, send a command, capture output, stop, or restart.