Tmux Remote Control
v1.0.0Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
The name/description (remote-controlling tmux sessions) align with the declared dependency (tmux), the SKILL.md examples, and the included wait-for-text.sh script. Nothing requested (no extra binaries, env vars, or config paths) is out of scope for a tmux helper.
Instruction Scope
SKILL.md instructs creating and naming tmux sessions, sending keys, and capturing pane output — all expected. It also shows examples that launch local agent CLIs (e.g., 'claude --dangerously-skip-permissions', 'codex --full-auto'). Those examples encourage running arbitrary commands in the user's environment and using agent flags that bypass protections; this is a usage concern but not an incoherence with the skill's purpose.
Install Mechanism
No install spec; instruction-only plus a small included shell script. No external downloads or archive extraction. Low install risk.
Credentials
No environment variables, credentials, or config paths are requested. The script and docs use only tmux and standard shell tools, which is proportional to the functionality.
Persistence & Privilege
The skill does not request always:true and does not modify other skills or system settings. It will create tmux sessions with an 'oc-' prefix (documented) but otherwise has no elevated persistence requirements.
Assessment
This skill is coherent for controlling tmux sessions: it will create sessions, send keystrokes, and scrape pane output. Before installing, review the commands you plan to run via tmux (the skill will accept and forward arbitrary input), avoid running it with elevated privileges, and be cautious if you use the example flags like '--dangerously-skip-permissions' or '--full-auto' — those flags can bypass local safety checks of third-party agent CLIs. If you want extra assurance, inspect or run the included wait-for-text.sh script yourself; it only uses tmux and standard shell utilities.Like a lobster shell, security has layers — review code before you run it.
latest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
Runtime requirements
🧵 Clawdis
OSmacOS · Linux
Binstmux
SKILL.md
tmux Skill
Use tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.
Default Server — No Custom Sockets
Always use the default tmux server. Do NOT use -S custom sockets. The user needs to tmux attach easily without knowing obscure socket paths.
Session Naming
Convention: oc-${project}-${feature} (e.g. oc-knowhere-date-range-picker, oc-deck-auth-flow)
oc-prefix = OpenClaw-managed, avoids collision with user sessions- Easy to find:
tmux ls | grep oc-
Quickstart
SESSION=oc-myproject-feature
tmux new-session -d -s "$SESSION" -c ~/projects/myproject
tmux send-keys -t "$SESSION" 'claude --dangerously-skip-permissions' Enter
tmux capture-pane -p -J -t "$SESSION" -S -200
After starting a session, tell the user:
To monitor: tmux attach -t $SESSION
Targeting panes and naming
- Target format:
session:window.pane(defaults to:0.0). - Keep names short; avoid spaces.
- Inspect:
tmux list-sessions,tmux list-panes -a.
Sending input safely
- Prefer literal sends:
tmux send-keys -t target -l -- "$cmd". - Control keys:
tmux send-keys -t target C-c. - For interactive TUI apps like Claude Code/Codex, do not append
Enterin the samesend-keys. These apps may treat a fast text+Enter sequence as paste/multi-line input and not submit. Send text andEnteras separate commands with a small delay:
tmux send-keys -t target -l -- "$cmd" && sleep 0.1 && tmux send-keys -t target Enter
Watching output
- Capture recent history:
tmux capture-pane -p -J -t target -S -200. - 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).
Orchestrating Coding Agents (Codex, Claude Code)
tmux excels at running multiple coding agents in parallel:
# Create sessions in different worktrees
tmux new-session -d -s oc-project-fix1 -c ~/projects/project-fix1
tmux new-session -d -s oc-project-fix2 -c ~/projects/project-fix2
# Launch agents
tmux send-keys -t oc-project-fix1 'claude --dangerously-skip-permissions' Enter
tmux send-keys -t oc-project-fix2 'codex --full-auto' Enter
# Send a prompt (text + Enter separated by delay)
tmux send-keys -t oc-project-fix1 -l -- "Fix the date picker styling." && sleep 0.1 && tmux send-keys -t oc-project-fix1 Enter
# Poll for completion (check if shell prompt returned)
for sess in oc-project-fix1 oc-project-fix2; do
if tmux capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
echo "$sess: DONE"
else
echo "$sess: Running..."
fi
done
# Get full output
tmux capture-pane -p -t oc-project-fix1 -S -500
Tips:
- Use separate git worktrees for parallel fixes (no branch conflicts)
bun install/pnpm installfirst before running agents in fresh clones- Check for shell prompt (
❯or$) to detect completion - Codex needs
--yoloor--full-autofor non-interactive fixes
Cleanup
- Kill a session:
tmux kill-session -t "$SESSION". - Kill all OpenClaw sessions:
tmux ls -F '#{session_name}' | grep '^oc-' | xargs -n1 tmux kill-session -t.
Files
2 totalSelect a file
Select a file to preview.
Comments
Loading comments…
