The design decision worth copying is that the assistant's commands run somewhere you can watch, so you see what happened rather than being told. That pays off exactly where hidden execution fails: a `git push` that wants credentials does not silently hang — the prompt is detected, the command is left pre-filled in the pane, and you finish it by hand. Marker-based capture is the other quiet win, since it makes a command producing a hundred thousand lines cost the same as one producing three.
An MCP server that gives an assistant a tmux pane instead of a hidden subprocess. Commands are wrapped in unique markers so exactly their output can be captured back out of the buffer, no matter how much scrolled past. Each working directory gets its own pane, so two sessions in two projects do not collide.
- A command run in a tmux pane with its output captured back cleanly — `execute_command`
- A named pane created, split horizontally or vertically — `create_pane`
- Recent output pulled from a pane, for a number of lines you choose — `capture_output`
- The available panes listed — `list_panes`
- Text typed into a pane without pressing Enter, so a command sits ready for you to review — `send_keys`
- A background pane opened with task instructions, its result written under `.t-pane/tasks/` — `launch_background_task`
- The status of those background tasks — `check_background_tasks`
- Interactive prompts detected: when a command asks for a password or a confirmation, the server pre-fills it in the pane and tells the assistant that you need to step in
- A log of every command and its output in `.t-pane/logs/` as JSON Lines, with timestamp, exit code, duration and directory; set `T_PANE_DISABLE_LOGGING=true` to turn it off
No account and no key. tmux installed and on `PATH`, and you must be inside a tmux session for the full behaviour — otherwise the server reports that it is not running in one. Node.js 18+. Build with `npm install` and `npm run build`, then point the client's `command` at node and its args at `dist/index.js`. The npm package name is `@mcp-servers/t-pane` (0.6.0) with the `mcp-t-pane` binary. Logged output is truncated above 2KB per entry, and falls back to `~/.t-pane/logs/` when the working directory is not writable.
