Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# 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)
```bash
SOCKET_DIR="${NANOBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/vikingbot-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/vikingbot.sock"
SESSION=vikingbot-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/vikingbot.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"`.
…
The line at the top of this page pins the label git:20260228.006a06f, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
GET https://markdownregistry.com/api/v1/artifacts/art_zofvihdr4kdprufc
GET https://markdownregistry.com/api/v1/resolve?ref=volcengine/openviking/tmux
GET https://markdownregistry.com/api/v1/blob/f0caaa516fb99a74c2b12224a09eeda4e5acfc3dda0b2e53c39a34f6f46bf0ad
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
volcengine/openviking · agent-plugins/skills/openviking-memory/SKILL.md · Recall and persist long-term memory through the OpenViking MCP tools. Use at the start of any substantive task (coding…
volcengine/openviking · agent-plugins/skills/ov-experience-memory/SKILL.md · Retrieve and apply OpenViking Experience memories through the Agent runtime's generic OpenViking search and read tools…
volcengine/openviking · agent-plugins/skills/ov-kanban/SKILL.md · Work through tasks on a kanban board stored in OpenViking (viking://agent/kanban/<board>/, one markdown file per task)…
volcengine/openviking · agent-plugins/skills/ov-memory-troubleshoot/SKILL.md · Diagnose OpenViking memory issues by tracing backward from a memory file to its archive memory_diff.json and, when…
volcengine/openviking · agent-plugins/skills/ov-resources/SKILL.md · Search and read documents, repos, URLs, and other resources stored in OpenViking under viking://resources/. Use…
volcengine/openviking · bot/workspace/skills/github/SKILL.md · Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and…
volcengine/openviking · bot/workspace/skills/skill-creator/SKILL.md · Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
team-commonly/commonly · backend/commonly-bundled-skills/tmux/SKILL.md · Manage long-running shell sessions with tmux — start a detached session, run a long task, reattach later, capture…