execute_commandLABSCO SUMMARY
A shared terminal beats a hidden one.
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.
What it is
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.
What you get
- 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; setT_PANE_DISABLE_LOGGING=trueto turn it off
Requirements
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.
Setup effort
Build from source — git clone https://github.com/cni-locates-rumen/t-pane.git
USE CASES
Watching what the assistant actually runs
Commands appear in a tmux pane beside you, with history preserved per directory, so nothing happens out of sight.
Getting past a command that wants your input
When a prompt for a password or confirmation is detected, switch to the pane where the command is already typed and finish it yourself.
Handling a command with enormous output
Run it normally — output between the markers is extracted from the end of the buffer, so size stops mattering.
Reviewing what ran and when
Read the JSON Lines log in the project directory for the command, exit code, duration and timestamp of every call.
7 tools
Listed in project docs. Your client may show a different list.
create_panecapture_outputlist_panessend_keyslaunch_background_taskcheck_background_tasksBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
- Node.js 18+
- tmux installed and on PATH
- A tmux session to run your client in, for full functionality
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/cni-locates-rumen/t-pane.git
cd t-pane
npm install
npm run buildMCP Clients
Claude Desktop
{
"mcpServers": {
"t-pane": {
"command": "node",
"args": [
"<YOUR_CLONE_DIRECTORY>/t-pane/dist/index.js"
]
}
}
}