claude-tmux
by Ilm-Alan
README.md
# claude-tmux
[](https://www.npmjs.com/package/claude-tmux)
MCP server for orchestrating multiple Claude Code instances via tmux.
## Installation
Add to your Claude Code MCP settings:
```json
{
"mcpServers": {
"claude-tmux": {
"command": "npx",
"args": ["-y", "claude-tmux"]
}
}
}
```
### Requirements
- [tmux](https://github.com/tmux/tmux) must be installed
- [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) must be installed
## Tools
### spawn
Launch a new Claude Code instance in a tmux session.
```
spawn(name, prompt, workdir)
```
- `name`: Unique session name (e.g., 'refactor-auth', 'debug-api')
- `prompt`: Initial prompt to send to Claude
- `workdir`: Working directory for Claude to operate in
### read
Wait for Claude sessions to finish working and return terminal output.
```
read(name: "task-name") // single session
read(names: ["a", "b", "c"]) // parallel wait on multiple sessions
```
For multiple sessions, use `names` to wait in parallel - returns all outputs when all complete.
### send
Send a follow-up message to a running Claude session.
```
send("task-name", "do something else")
```
### list
List all active Claude tmux sessions.
```
list()
```
### kill
Terminate a Claude tmux session and clean up resources.
```
kill("task-name")
```
## Usage Pattern
```
spawn(name, prompt, workdir) → start session
read(name) → wait for completion, get output
send(name, text) → steer with follow-up
read(name) → wait again
kill(name) → cleanup
```
For parallel tasks:
```
spawn("task-a", ...)
spawn("task-b", ...)
spawn("task-c", ...)
read(names: ["task-a", "task-b", "task-c"]) → wait for all
```
## Idle Detection
`read` detects completion via:
1. **Done indicator** - Claude's status line showing `✻ model for Xm`
2. **Stability** - Output unchanged for 10 seconds (handles sub-minute tasks that don't show the indicator)
Timeout is 15 minutes.
## Tips
- Verify output shows task completion before killing. Idle agents are fine to leave running.
- Attach manually: `tmux attach -t claude-<name>`
TDQS
A3.7/5.0
Scored across 5 tools
Disambiguation5/5
Each tool has a clearly distinct lifecycle role: spawn creates, send communicates, read collects output, kill terminates, and list enumerates sessions. There is no overlap or ambiguity between their purposes.
Naming Consistency5/5
All tool names are simple, lowercase imperative verbs following a consistent one-word pattern. This is internally coherent and easy to predict.
Tool Count5/5
Five tools cover the essential operations for managing tmux-based Claude Code sessions without redundancy. The scope is tight and each tool earns its place.
Completeness5/5
The set covers the complete session lifecycle: create, interact, read output, enumerate, and terminate. There are no obvious gaps for the stated domain of managing Claude Code instances in tmux.
Maintenance
ActivityInactive
ResponsivenessNo issues