
tmux
โ 3by firecrawl ยท part of firecrawl/openclaw
Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
This is the playbook your agent receives when the skill activates โ you don't need to read it to use the skill, but it's here to audit before installing.
tmux Session Control
Control tmux sessions by sending keystrokes and reading output. Essential for managing Claude Code sessions.
When to Use
โ USE this skill when:
- Monitoring Claude/Codex sessions in tmux
- Sending input to interactive terminal applications
- Scraping output from long-running processes in tmux
- Navigating tmux panes/windows programmatically
- Checking on background work in existing sessions
When NOT to Use
โ DON'T use this skill when:
- Running one-off shell commands โ use
exectool directly - Starting new background processes โ use
execwithbackground:true - Non-interactive scripts โ use
exectool - The process isn't in tmux
- You need to create a new tmux session โ use
execwithtmux new-session
Example Sessions
| Session | Purpose |
|---|---|
shared | Primary interactive session |
worker-2 - worker-8 | Parallel worker sessions |
Common Commands
List Sessions
tmux list-sessions
tmux lsCapture Output
# Last 20 lines of pane
tmux capture-pane -t shared -p | tail -20
# Entire scrollback
tmux capture-pane -t shared -p -S -
# Specific pane in window
tmux capture-pane -t shared:0.0 -pSend Keys
# Send text (doesn't press Enter)
tmux send-keys -t shared "hello"
# Send text + Enter
tmux send-keys -t shared "y" Enter
# Send special keys
tmux send-keys -t shared Enter
tmux send-keys -t shared Escape
tmux send-keys -t shared C-c # Ctrl+C
tmux send-keys -t shared C-d # Ctrl+D (EOF)
tmux send-keys -t shared C-z # Ctrl+Z (suspend)Window/Pane Navigation
# Select window
tmux select-window -t shared:0
# Select pane
tmux select-pane -t shared:0.1
# List windows
tmux list-windows -t sharedSession Management
# Create new session
tmux new-session -d -s newsession
# Kill session
tmux kill-session -t sessionname
# Rename session
tmux rename-session -t old newSending Input Safely
For interactive TUIs (Claude Code, Codex, etc.), split text and Enter into separate sends to avoid paste/multiline edge cases:
tmux send-keys -t shared -l -- "Please apply the patch in src/foo.ts"
sleep 0.1
tmux send-keys -t shared EnterClaude Code Session Patterns
Check if Session Needs Input
# Look for prompts
tmux capture-pane -t worker-3 -p | tail -10 | grep -E "โฏ|Yes.*No|proceed|permission"Approve Claude Code Prompt
# Send 'y' and Enter
tmux send-keys -t worker-3 'y' Enter
# Or select numbered option
tmux send-keys -t worker-3 '2' EnterCheck All Sessions Status
for s in shared worker-2 worker-3 worker-4 worker-5 worker-6 worker-7 worker-8; do
echo "=== $s ==="
tmux capture-pane -t $s -p 2>/dev/null | tail -5
doneSend Task to Session
tmux send-keys -t worker-4 "Fix the bug in auth.js" EnterNotes
- Use
capture-pane -pto print to stdout (essential for scripting) -S -captures entire scrollback history- Target format:
session:window.pane(e.g.,shared:0.0) - Sessions persist across SSH disconnects
npx skills add firecrawl/openclaw --skill "tmux" --full-depthRun this in your project โ your agent picks the skill up automatically.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITโ you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub โ