πŸš€ tmux Skill

SkillDev tools

Control tmux sessions remotely β€” send commands, capture output, manage panes

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the πŸš€ tmux Skill skill

What this skill tells your AI

The instructions your AI receives, as published by jellydn/my-ai-tools in skills/tmux/SKILL.md and read by ahel’s review.

Control tmux sessions programmatically to run interactive terminal applications (REPLs, debuggers, databases) without blocking.


πŸ“‹ Quickstart (Easy Way)

Use LogPilot for automatic output capture + AI analysis:

# Install LogPilot
cargo install logpilot

# Watch your tmux session
logpilot watch mysession --pane mysession:0.0

# Ask AI about what's happening
logpilot ask "What errors appeared?"
logpilot summarize --last 5m

Add to Claude Code: claude mcp add --scope user logpilot -- logpilot mcp-server


πŸ“‹ Manual Control (Raw tmux)

Use isolated sockets to avoid conflicts with personal tmux:

# Setup socket
export SOCKET="${TMPDIR:-/tmp}/ai-tmux-sockets/agent.sock"
mkdir -p "$(dirname "$SOCKET")"

# Create session and run
SESSION=agent-py
tmux -S "$SOCKET" new -d -s "$SESSION"
tmux -S "$SOCKET" send-keys -t "$SESSION" 'python3 -q' Enter

# Capture output manually
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION" -S -100

# Cleanup
tmux -S "$SOCKET" kill-session -t "$SESSION"

πŸ“‹ Core Commands

ActionCommand
New sessiontmux -S "$SOCKET" new -d -s NAME
Send keystmux -S "$SOCKET" send-keys -t NAME 'cmd' Enter
Send literaltmux -S "$SOCKET" send-keys -t NAME -l 'text'
Capture outputtmux -S "$SOCKET" capture-pane -p -J -t NAME -S -N
List sessionstmux -S "$SOCKET" list-sessions
Kill sessiontmux -S "$SOCKET" kill-session -t NAME

Control keys: C-c (SIGINT), C-d (EOF), C-z (suspend), Escape


πŸ“‹ Interactive Recipes

πŸ” Python REPL

SESSION=agent-py
SOCKET="${TMPDIR:-/tmp}/ai-tmux-sockets/agent.sock"
tmux -S "$SOCKET" new -d -s "$SESSION"
tmux -S "$SOCKET" send-keys -t "$SESSION" 'PYTHON_BASIC_REPL=1 python3 -q' Enter
sleep 1
tmux -S "$SOCKET" send-keys -t "$SESSION" -l 'print(2+2)'
tmux -S "$SOCKET" send-keys -t "$SESSION" Enter
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION" -S -10
tmux -S "$SOCKET" kill-session -t "$SESSION"

πŸ” GDB Debugger

SESSION=agent-gdb
SOCKET="${TMPDIR:-/tmp}/ai-tmux-sockets/agent.sock"
tmux -S "$SOCKET" new -d -s "$SESSION"
tmux -S "$SOCKET" send-keys -t "$SESSION" 'gdb --quiet ./program' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION" 'set pagination off' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION" 'run' Enter
# ... later ...
tmux -S "$SOCKET" send-keys -t "$SESSION" C-c
tmux -S "$SOCKET" send-keys -t "$SESSION" 'bt' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION" 'quit' Enter 'y' Enter

Node.js / psql / etc.

Same pattern: new β†’ send-keys β†’ capture-pane β†’ kill-session


πŸ“‹ LogPilot Reference

TaskCommand
Watch sessionlogpilot watch SESSION
Watch panelogpilot watch SESSION --pane TARGET
AI summarylogpilot summarize --last 10m
Ask questionlogpilot ask "Why is it failing?"
With logslogpilot ask "Explain" --include-logs
Statuslogpilot status

MCP Setup

{
	"mcpServers": {
		"logpilot": {
			"command": "logpilot",
			"args": ["mcp-server"]
		}
	}
}

Or: claude mcp add --scope user --transport stdio logpilot -- logpilot mcp-server


🎨 Best Practices

  1. Use LogPilot β€” easiest way to capture and analyze output
  2. Always use -S "$SOCKET" β€” prevents conflicts with user tmux
  3. Use -l flag β€” literal text, no shell expansion issues
  4. PYTHON_BASIC_REPL=1 β€” required for interactive Python
  5. Kill sessions when done β€” prevents resource leaks

Signals

GitHub stars
120
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
tmux-jellydn
Source
github.com/jellydn/my-ai-tools