🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Tmux

by @utromaya-code

Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.

Versionv1.0.1
Downloads610
TERMINAL
clawhub install tmux-session-control

πŸ“– About This Skill


name: tmux description: Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output. metadata: { "openclaw": { "emoji": "🧡", "os": ["darwin", "linux"], "requires": { "bins": ["tmux"] } } }

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 exec tool directly
  • Starting new background processes β†’ use exec with background:true
  • Non-interactive scripts β†’ use exec tool
  • The process isn't in tmux
  • You need to create a new tmux session β†’ use exec with tmux 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 ls
    

    Capture 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 -p

    Send 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 shared

    Session Management

    # Create new session
    tmux new-session -d -s newsession

    Kill session

    tmux kill-session -t sessionname

    Rename session

    tmux rename-session -t old new

    Sending 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 Enter
    

    Claude 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' Enter

    Check 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
    done
    

    Send Task to Session

    tmux send-keys -t worker-4 "Fix the bug in auth.js" Enter
    

    Notes

  • Use capture-pane -p to 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
  • ⚑ When to Use

    TriggerAction
    - 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

    πŸ“‹ Tips & Best Practices

  • Use capture-pane -p to 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