Run Multiple Coding Agents in Parallel with the Tmux Skill
Ever needed to run interactive CLIs, coordinate multiple coding agents, or manage long-running terminal sessions from your AI agent? The Tmux skill by @steipete brings the power of terminal multiplexing to Clawdbot, letting you orchestrate complex workflows that would otherwise be impossible.
Why Tmux?
Clawdbot's standard exec tool works great for simple commands, but some scenarios demand more:
- Interactive REPLs (Python, Node, database shells) that need ongoing input
- Multiple parallel tasks running simultaneously
- Coding agents like Codex or Claude Code that need their own persistent terminals
- Long-running processes you want to monitor and interact with
Tmux solves all of these by giving your agent the ability to create, control, and monitor multiple terminal sessions programmatically.
Installation
First, make sure tmux is installed on your system:
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt install tmuxThen install the skill:
clawdhub install tmuxThe skill works on macOS and Linux (Windows users should use WSL).
Basic Usage: Starting a Session
The skill uses isolated sockets to keep Clawdbot sessions separate from your personal tmux usage:
# Set up the socket directory
SOCKET_DIR="${TMPDIR:-/tmp}/clawdbot-tmux-sockets"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/clawdbot.sock"
SESSION=my-session
# Create a new detached session
tmux -S "$SOCKET" new -d -s "$SESSION" -n shellSending Commands and Capturing Output
Once you have a session, you can send commands and read the output:
# Send a command
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'ls -la' Enter
# Capture the last 200 lines of output
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200For literal text (avoiding special character interpretation):
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- "my literal text"Running a Python REPL
Perfect for interactive data exploration or testing:
# Start Python REPL (use PYTHON_BASIC_REPL=1 for compatibility)
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter
# Send Python code
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'import pandas as pd' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'df = pd.read_csv("data.csv")' Enter
# Read the output
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -50Power Move: Orchestrating Multiple Coding Agents
This is where tmux really shines. Run multiple Codex or Claude Code instances in parallel:
SOCKET="${TMPDIR:-/tmp}/codex-army.sock"
# Create sessions for each agent
for i in 1 2 3; do
tmux -S "$SOCKET" new-session -d -s "agent-$i"
done
# Launch parallel bug fixes in different workdirs
tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/project1 && codex --yolo 'Fix the null pointer bug'" Enter
tmux -S "$SOCKET" send-keys -t agent-2 "cd /tmp/project2 && codex --yolo 'Add input validation'" Enter
tmux -S "$SOCKET" send-keys -t agent-3 "cd /tmp/project3 && codex --yolo 'Write unit tests'" Enter
# Poll for completion (check if prompt returned)
for sess in agent-1 agent-2 agent-3; do
if tmux -S "$SOCKET" capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
echo "$sess: DONE"
else
echo "$sess: Running..."
fi
donePro tip: Use separate git worktrees for parallel fixes to avoid branch conflicts!
Waiting for Specific Output
The skill includes a helper script to wait for patterns:
# Wait for a specific prompt or output
wait-for-text.sh -t session:0.0 -p 'pattern' -T 30Options:
-t: Target pane (required)-p: Regex pattern to match (required)-F: Use fixed string instead of regex-T: Timeout in seconds (default 15)-i: Poll interval (default 0.5s)
Cleanup
Don't leave orphan sessions around:
# Kill a single session
tmux -S "$SOCKET" kill-session -t "$SESSION"
# Kill all sessions on a socket
tmux -S "$SOCKET" kill-serverTips and Gotchas
- Interactive vs Background: Use tmux for interactive needs; prefer Clawdbot's background exec mode for simple long-running tasks
- Python REPL: Always set
PYTHON_BASIC_REPL=1to avoid readline issues - Prompt detection: Check for shell prompts (like
$or>>>) to detect when commands finish - Session naming: Keep names short and avoid spaces
Conclusion
The Tmux skill transforms Clawdbot from a simple command runner into a full terminal orchestration system. Whether you're managing REPLs, running parallel coding agents, or just need persistent interactive sessions, tmux has you covered.
Install it today: clawdhub install tmux
Links:
Comments (0)
No comments yet. Be the first to comment!