Automate Terminal Sessions with Tmux
A skill for scripting tmux sessions, windows, and panes non-interactively - persistent SSH workflows and multi-pane automation.
Why it matters
Master tmux for persistent, organized, and automated terminal sessions. Keep your work alive across disconnections and streamline complex command-line tasks.
Outcomes
What it gets done
Manage persistent terminal sessions across SSH disconnects
Create and manage multi-pane window layouts
Automate tmux commands from shell scripts
Configure custom tmux keybindings and settings
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/ag-tmux | bash Overview
tmux - Terminal Multiplexer
A skill for scripting tmux session, window, and pane management non-interactively, covering persistent SSH workflows, multi-pane workspace automation, and configuration. Use it for persistent remote terminal sessions and scriptable multi-pane tmux automation; verify the target pane before send-keys to avoid sending keystrokes to the wrong session.
What it does
This skill covers tmux session management, window/pane layout, keybinding patterns, and scriptable non-interactive automation - keeping terminal sessions alive across SSH disconnects and splitting work across multiple panes. It explains the three-level hierarchy (sessions survive disconnects, windows are tabs within a session, panes are splits within a window), all controllable from outside via tmux <command> or from inside via the prefix key (Ctrl-b by default). Session management covers creating named/detached sessions (optionally launching straight into a command with explicit terminal dimensions), attaching, listing, killing, renaming, switching, and checking existence with has-session for idempotent scripts. Window management covers creating windows (optionally running a command), listing, selecting by name or index, renaming, killing, and moving windows, plus the standard prefix keybindings (c new window, , rename, & kill, n/p next/previous). Pane management covers vertical/horizontal splitting (optionally running a command immediately), selecting, resizing, zooming to fullscreen, swapping, and killing panes, plus their prefix keybindings. A key non-interactive automation pattern is send-keys to type commands (and Enter) into a specific pane without attaching, sending Ctrl-C to stop a process, pre-filling a prompt without pressing Enter, and capture-pane to read a pane's current output (useful for grepping for status/errors from a script). A full worked example scripts an entire multi-pane dev workspace from scratch - checking for an existing session first, creating an editor window split with a test-runner pane, a server window split with log tailing, and a general shell window, then attaching. Configuration examples for ~/.tmux.conf cover remapping the prefix key, enabling mouse support, 1-based window/pane numbering, window renumbering on close, larger scrollback history, vi-style copy-mode keys, faster escape-time, a config-reload binding, intuitive split keybindings that inherit the current pane's working directory, and a status-bar customization. Copy mode and scrollback coverage includes entering copy mode, vi-style search/select/copy, pasting the most recent buffer, listing/showing/saving/loading paste buffers, and piping a pane's live output to a file via pipe-pane. Practical automation patterns include an idempotent create-or-attach helper function, a helper to launch a background window and tail its output, a polling helper that waits for specific output to appear in a pane (with timeout), and a helper to kill all background windows matching a name prefix. Remote/SSH workflows show attaching to (or creating) a session immediately on SSH connect, firing a detached remote session and disconnecting, read-only attach for watching another session, and shared-session pair programming where two users attach to the same session. Best practices: always name sessions in scripts, guard creation with has-session for idempotency, set explicit -x/-y dimensions for detached sessions so terminal-size-sensitive commands behave correctly, prefer send-keys ... Enter over piping stdin (works even against interactive programs), version-control ~/.tmux.conf, and use prefix-less bindings only for keys that won't conflict with application shortcuts. Security notes: send-keys executes without confirmation, so scripts must verify the target pane before sending; read-only attach (-r) should be used when sharing sessions to prevent accidental input; secrets should not be stored in window/pane titles or environment variables on shared machines. A common-pitfalls section maps specific symptoms (no server running, 0x0 pane size, send-keys typing but not executing, duplicate sessions per script run, broken copy-mode selection) to their fixes.
When to use - and when NOT to
Use it when setting up or managing persistent terminal sessions on remote servers, running long-running processes that must survive SSH disconnects, scripting multi-pane terminal layouts, or automating tmux commands from bash scripts without user interaction.
Inputs and outputs
Inputs: the desired session/window/pane layout or automation task (persistent remote session, multi-pane dev workspace, scripted command dispatch, or output polling).
Outputs: working tmux CLI commands or bash scripts for the requested session/window/pane management, non-interactive command dispatch, or ~/.tmux.conf configuration.
tmux has-session -t work 2>/dev/null || tmux new-session -d -s work
tmux send-keys -t work:1.0 "npm test -- --watch" Enter
tmux capture-pane -t work:1.0 -p | grep "ERROR"
Who it's for
Developers and ops engineers managing remote server sessions, long-running processes, or multi-pane terminal workflows who need session persistence across disconnects and scriptable, non-interactive tmux automation.
Source README
tmux keeps terminal sessions alive across SSH disconnects, splits work across multiple panes, and enables fully scriptable terminal automation. This skill covers session management, window/pane layout, keybinding patterns, and using tmux non-interactively from shell scripts - essential for remote servers, long-running jobs, and automated workflows.
FAQ
Common questions
Discussion
Questions & comments ยท 0
Sign In Sign in to leave a comment.