Tmux Background Tasks
If tmux is not installed, stop and ask the user to install it before proceeding.
Overview
Use tmux to run and manage long-lived commands in the background. Do not keep these tasks alive with the default process tool; always launch them in tmux so they survive across commands and can be reattached.
Workflow
Verify tmux is installed If tmux is missing, stop and ask the user to install it (e.g.,
brew install tmuxon macOS). Do not proceed until tmux is available.Pick a stable session name Use a predictable, unique name like
<repo>-<task>(e.g.,myapp-api,myapp-expo).Start or reuse the session Check for an existing session before starting a new one.
Provide attach/detach guidance Tell the user how to attach to the session if they want to view logs or interact.
Stop or restart when requested Terminate the session cleanly when the user asks to stop the task.
Command Patterns
Check tmux:
command -v tmuxtmux -V
Create a new detached session running a command:
tmux new-session -d -s <name> -- <command>- If you need a login shell or env:
tmux new-session -d -s <name> -- bash -lc '<command>'
Reuse or attach:
tmux has-session -t <name>tmux attach -t <name>tmux ls
Send a stop signal or kill:
tmux send-keys -t <name> C-ctmux kill-session -t <name>
Peek at recent output (non-interactive):
tmux capture-pane -pt <name> -S -200
Notes
- Prefer tmux for servers, watchers, workers, and dev tools that should remain running while other commands execute.
- Avoid creating duplicate sessions. If
tmux has-session -t <name>succeeds, reuse it or attach.