Skip to content
Back to skills

Tmux

ASecurity

Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output. Use when you need an interactive TTY (REPLs, agents that prompt) or want to run multiple long-lived processes in parallel and poll their state. For non-interactive long-running jobs prefer the long-running-jobs skill.

  • 6 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 1, 2026
toolspythonshellbashapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 1, 2026

npx -y skills add jasoncarreira/mimir --skill tmux --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tmux?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tmux
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jasoncarreira-tmux/badge)](https://www.skillsdirectory.com/skills/jasoncarreira-tmux)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tmux
description: Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output. Use when you need an interactive TTY (REPLs, agents that prompt) or want to run multiple long-lived processes in parallel and poll their state. For non-interactive long-running jobs prefer the long-running-jobs skill.
---

<!-- desc: Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output. -->

# tmux

Use tmux only when you need an interactive TTY. For non-interactive long-running
tasks, prefer Bash's `run_in_background` (the long-running-jobs skill).

## Quickstart (isolated socket)

```bash
SOCKET_DIR="${MIMIR_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/mimir-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/mimir.sock"
SESSION=mimir-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, print the monitor command so the operator can attach
if they want to peek:

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

## Socket convention

- Use `MIMIR_TMUX_SOCKET_DIR` (default `${TMPDIR:-/tmp}/mimir-tmux-sockets`).
- Default socket path: `"$MIMIR_TMUX_SOCKET_DIR/mimir.sock"`.
- Isolated sockets keep mimir's tmux sessions out of any operator-owned tmux
  server running in the same container.

## Targeting panes

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

## Finding sessions

- List sessions on your socket: `skills/tmux/scripts/find-sessions.sh -S "$SOCKET"`.
- Scan all sockets in `MIMIR_TMUX_SOCKET_DIR`: `skills/tmux/scripts/find-sessions.sh --all`.

## 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 a prompt / pattern: `skills/tmux/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` (the rich REPL breaks send-keys flows).

## 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 the socket entirely: `tmux -S "$SOCKET" kill-server`.

## Helper: wait-for-text.sh

`skills/tmux/scripts/wait-for-text.sh` polls a pane for a regex (or fixed
string) with a timeout.

```bash
skills/tmux/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)

Files in this skill

  • SKILL.md3.2 KB
  • scripts/find-sessions.sh2.9 KB
  • scripts/wait-for-text.sh2.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.