Skip to content
cccskills
FreePublished on GitHub

tmux

Control interactive command-line programs through tmux by sending keystrokes, reading terminal output, and waiting for prompts. Use separate sessions to operate Python consoles or run multiple coding agents while checking their progress and results.

OriginalShow the original description

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

See how to install

Good for

  • Operate an interactive Python console
  • Run multiple coding agents in parallel
  • Wait for prompts and inspect terminal output
  • Find and clean up tmux sessions

Files included (3)

  • SKILL.md4.0 KB
  • scripts/find-sessions.sh2.9 KB
  • scripts/wait-for-text.sh2.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

tmux Skill

Use tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.

Quickstart (isolated socket, exec tool)

SOCKET_DIR="${NANOBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/nanobot-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/nanobot.sock"
SESSION=nanobot-python

tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

After starting a session, always print monitor commands:

To monitor:
  tmux -S "$SOCKET" attach -t "$SESSION"
  tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

Socket convention

  • Use NANOBOT_TMUX_SOCKET_DIR environment variable.
  • Default socket path: "$NANOBOT_TMUX_SOCKET_DIR/nanobot.sock".

Targeting panes and naming

  • Target format: session:window.pane (defaults to :0.0).
  • Keep names short; avoid spaces.
  • Inspect: tmux -S "$SOCKET" list-sessions, tmux -S "$SOCKET" list-panes -a.

Finding sessions

  • List sessions on your socket: {baseDir}/scripts/find-sessions.sh -S "$SOCKET".
  • Scan all sockets: {baseDir}/scripts/find-sessions.sh --all (uses NANOBOT_TMUX_SOCKET_DIR).

Sending input safely

  • Prefer literal sends: tmux -S "$SOCKET" send-keys -t target -l -- "$cmd".
  • Control keys: tmux -S "$SOCKET" send-keys -t target C-c.

Watching output

  • Capture recent history: tmux -S "$SOCKET" capture-pane -p -J -t target -S -200.
  • Wait for prompts: {baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern'.
  • Attaching is OK; detach with Ctrl+b d.

Spawning processes

  • For python REPLs, set PYTHON_BASIC_REPL=1 (non-basic REPL breaks send-keys flows).

Windows / WSL

  • tmux is supported on macOS/Linux. On Windows, use WSL and install tmux inside WSL.
  • This skill is gated to darwin/linux and requires tmux on PATH.

Orchestrating Coding Agents (Codex, Claude Code)

tmux excels at running multiple coding agents in parallel:

SOCKET="${TMPDIR:-/tmp}/codex-army.sock"

# Create multiple sessions
for i in 1 2 3 4 5; do
  tmux -S "$SOCKET" new-session -d -s "agent-$i"
done

# Launch agents in different workdirs
tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/project1 && codex --yolo 'Fix bug X'" Enter
tmux -S "$SOCKET" send-keys -t agent-2 "cd /tmp/project2 && codex --yolo 'Fix bug Y'" Enter

# Poll for completion (check if prompt returned)
for sess in agent-1 agent-2; do
  if tmux -S "$SOCKET" capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
    echo "$sess: DONE"
  else
    echo "$sess: Running..."
  fi
done

# Get full output from completed session
tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -500

Tips:

  • Use separate git worktrees for parallel fixes (no branch conflicts)
  • pnpm install first before running codex in fresh clones
  • Check for shell prompt (❯ or $) to detect completion
  • Codex needs --yolo or --full-auto for non-interactive fixes

Cleanup

  • Kill a session: tmux -S "$SOCKET" kill-session -t "$SESSION".
  • Kill all sessions on a socket: tmux -S "$SOCKET" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S "$SOCKET" kill-session -t.
  • Remove everything on the private socket: tmux -S "$SOCKET" kill-server.

Helper: wait-for-text.sh

{baseDir}/scripts/wait-for-text.sh polls a pane for a regex (or fixed string) with a timeout.

{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern' [-F] [-T 20] [-i 0.5] [-l 2000]
  • -t/--target pane target (required)
  • -p/--pattern regex to match (required); add -F for fixed string
  • -T timeout seconds (integer, default 15)
  • -i poll interval seconds (default 0.5)
  • -l history lines to search (integer, default 1000)

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

agent-browser

FreeSummary

Automate website navigation, form entry, button clicks, and data extraction using the agent-browser command-line tool. Capture screenshots or PDFs, reuse login sessions, and inspect page elements while checking web application behavior.

  • Automate form entry and button clicks
  • Extract text and links from web pages
  • Save screenshots and page PDFs
sipeed/picoclaw30.1KUpdated Oct 16, 2026

github

FreeSummary

Use the GitHub command-line tool to inspect issues, pull requests, and automated workflow runs. Check failed steps and logs, retrieve additional details through the API, and extract selected fields into structured results.

  • Check automated test results for a pull request
  • Inspect failed workflow steps and logs
  • List issue numbers and titles
sipeed/picoclaw30.1KUpdated Oct 16, 2026

hardware

FreeSummary

Read and control sensors, displays, and other peripherals on Sipeed boards through I2C and SPI, two hardware communication interfaces. Find connected devices, prepare shared pins, and troubleshoot wiring, permissions, and communication settings.

  • Find sensors connected to a board
  • Read temperature and humidity sensor data
  • Control displays and other peripherals
sipeed/picoclaw30.1KUpdated Oct 16, 2026

picoclaw-agent

FreeSummary

Set up, debug, and extend PicoClaw using its own commands and configuration structure. Get guidance on model authentication, external tool connections, scheduled tasks, and how conversations are routed and stored.

  • Setting up models and authentication in PicoClaw
  • Configuring and troubleshooting MCP server connections
  • Setting up recurring tasks
sipeed/picoclaw30.1KUpdated Oct 16, 2026

skill-creator

FreeSummary

Turn repeated workflows into reusable Picoclaw skills, or update and review existing ones. Organize SKILL.md instructions, scripts, reference documents, and output assets, then check the structure and test representative tasks.

  • Turning a repeated workflow into a reusable skill
  • Updating or reviewing an existing SKILL.md
  • Organizing scripts, references, and templates
sipeed/picoclaw30.1KUpdated Oct 16, 2026

summarize

FreeSummary

Summarize articles, local files, YouTube videos, and podcasts to review their main points. Adjust the summary length, or extract available text and transcripts from URLs when you need the source content.

  • Reviewing the main points of an online article
  • Summarizing a local PDF
  • Extracting an available YouTube transcript
sipeed/picoclaw30.1KUpdated Oct 16, 2026

See all skills by sipeed

Report a problem with this skill