tmai
Tmux Multi Agent Interface - Monitor and control multiple AI agents running in tmux.
Features
- Multi-agent monitoring - Track multiple AI coding agents (Claude Code, OpenCode, etc.) across tmux panes
- Single-pane operation - Approve without attaching to agent panes
- Real-time preview - See agent output without switching panes (with ANSI color support)
- Quick approval - Approve tool calls with single keystroke (
y) - AskUserQuestion support - Respond to agent questions with number selection
- Passthrough mode - Send keys directly to the agent pane
- Status detection - Automatic detection of idle, processing, and awaiting approval states
- PTY wrapping - High-precision state detection via PTY proxy for real-time I/O monitoring
- Exfil detection - Security monitoring for external data transmission
- Web Remote Control - Control agents from your smartphone via QR code
- Agent Teams - Visualize Claude Code Agent Teams structure and task progress
- Mode detection - Detect Plan/Delegate/Auto-approve modes from terminal title icons
Documentation
For detailed guides and workflows, see doc/:
- Getting Started - Installation and first steps
- Multi-agent Monitoring - Monitor multiple agents simultaneously
- Worktree Parallel Development - Git worktree workflow
- tmai's Strengths - What makes tmai unique
- Agent Teams - Claude Code team monitoring
Installation
Or build from source:
Usage
Run tmai in a tmux session:
Configuration
Create a config file in one of these locations (first found wins):
~/.config/tmai/config.toml~/.tmai.toml
Example:
= 500
= 10
= 100
= true
[]
= true
= 40
= true
[]
= true
= 5
Keybindings
| Key | Action |
|---|---|
j / k |
Navigate agents |
y |
Approve / select Yes |
n |
Select No (UserQuestion) |
1-9 / 1-9 |
Select option by number |
Space |
Toggle (multi-select) |
i |
Enter input mode |
→ |
Enter passthrough mode |
t |
Task overlay (team member selected) |
T |
Team overview |
Esc |
Exit mode / Quit |
? |
Help |
Modes
- Normal mode - Navigate and quick actions
- Input mode (
i) - Type text to send to agent - Passthrough mode (
→) - Keys sent directly to pane
PTY Wrapping
For more accurate state detection, you can wrap AI agents with a PTY proxy:
# Start Claude Code with PTY wrapping
# With arguments
# Other agents
Benefits:
- Real-time I/O monitoring - Detects state changes immediately
- No polling delay - Faster than tmux capture-pane
- Accurate approval detection - Reliable Yes/No and AskUserQuestion detection
When creating new AI processes from tmai UI, they are automatically wrapped.
Web Remote Control
Control your AI agents from your smartphone:
- Press
rto display QR code - Scan with your phone
- Approve or select options from the web interface
# config.toml
[]
= true
= 9876
WSL2 Setup
For WSL2 with mirrored networking mode, allow the port through Windows Firewall:
# Run as Administrator
New-NetFirewallRule -DisplayName "tmai Web Remote" -Direction Inbound -Protocol TCP -LocalPort 9876 -Action Allow
For NAT mode (legacy), see CLAUDE.md for port forwarding setup.
Supported Agents
| Agent | Detection | PTY Wrap |
|---|---|---|
| Claude Code | ✅ Supported | ✅ |
| OpenCode | ✅ Supported | ✅ |
| Codex CLI | ✅ Supported | ✅ |
| Gemini CLI | ✅ Supported | ✅ |
Screenshots
┌─────────────────┬─────────────────────────────────┐
│ Sessions │ Preview │
│ │ │
│ [IPC] main:0.0 │ Do you want to make this edit? │
│ Claude Code │ │
│ ⠋ Processing │ ❯ 1. Yes │
│ │ 2. Yes, allow all... │
│ [capture] 0.1 │ 3. No │
│ Claude Code │ │
│ ✳ Idle │ │
└─────────────────┴─────────────────────────────────┘
j/k:Nav 1-9:Select i:Input →:Direct ?:Help q:Quit
Acknowledgments
Inspired by tmuxcc.
License
MIT