termtap


Nametermtap JSON
Version 0.4.1 PyPI version JSON
download
home_pageNone
SummaryProcess-native tmux session manager with MCP support
upload_time2025-08-13 23:48:33
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords mcp session-manager terminal tmux
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # termtap

Process-native tmux session manager with MCP support.

## ✨ Features

- 🎯 **Smart Detection** - Auto-detects Python, SSH, Claude processes
- 📝 **Handler System** - Process-specific output filtering and caching
- 🔌 **MCP Ready** - Tools and resources for Claude/LLMs
- 🚀 **Service Orchestration** - Run multi-service environments
- 🔍 **Fuzzy Search** - Filter sessions with patterns
- 🎨 **Rich Display** - Tables, boxes, and formatted output

## 📋 Prerequisites

Required system dependencies:
- **tmux** - Terminal multiplexer
- **gum** - Interactive terminal UI components

```bash
# macOS
brew install tmux gum

# Arch Linux
sudo pacman -S tmux gum

# Ubuntu/Debian
sudo apt install tmux
# For gum, see: https://github.com/charmbracelet/gum#installation

# Fedora
sudo dnf install tmux
# For gum, use: go install github.com/charmbracelet/gum@latest
```

## 📦 Installation

```bash
# Install via uv tool (recommended)
uv tool install termtap

# Or with pipx
pipx install termtap

# Update to latest
uv tool upgrade termtap

# Uninstall
uv tool uninstall termtap
```

## 🚀 Quick Start

```bash
# 1. Install termtap
uv tool install "git+https://github.com/angelsen/tap-tools.git#subdirectory=packages/termtap"

# 2. Add to Claude
claude mcp add termtap -- termtap --mcp

# 3. Run REPL
termtap
```

## 🔌 MCP Setup for Claude

```bash
# Quick setup with Claude CLI
claude mcp add termtap -- termtap --mcp
```

Or manually configure Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
  "mcpServers": {
    "termtap": {
      "command": "termtap",
      "args": ["--mcp"]
    }
  }
}
```

## 🎮 Usage

### Interactive REPL
```bash
termtap                     # Start REPL
termtap --mcp               # Start as MCP server
```

### Commands
```python
>>> ls()                    # List all sessions with processes
>>> execute("python3")      # Start Python REPL in tmux
>>> read()                  # Read output with caching
>>> interrupt()             # Send Ctrl+C to current pane
>>> run("demo")             # Run service group from config
```

### Command Reference

| Command | Description |
|---------|------------|
| `execute(command, target=None)` | Run command in tmux pane |
| `read(target=None, page=None)` | Read output with pagination |
| `ls(filter=None)` | List sessions with optional filter |
| `interrupt(target=None)` | Send interrupt signal |
| `send_keys(keys, target=None)` | Send raw key sequences |
| `run(group)` | Run service configuration |
| `track(target=None, duration=10)` | Monitor pane state |

## 🛠️ Service Configuration

Define multi-service environments in `termtap.toml`:

```toml
[init.demo]
layout = "even-horizontal"

[init.demo.backend]
pane = 0
command = "uv run python -m backend"
path = "demo/backend"
ready_pattern = "Uvicorn running on"
timeout = 10

[init.demo.frontend]
pane = 1  
command = "npm run dev"
path = "demo/frontend"
ready_pattern = "Local:.*localhost"
depends_on = ["backend"]
```

Run with: `run("demo")`

## 📁 Examples

See `examples/` directory for:
- Basic usage patterns
- Service orchestration setups
- MCP integration examples

## 🏗️ Architecture

Built on [ReplKit2](https://github.com/angelsen/replkit2) for dual REPL/MCP functionality.

**Key Design:**
- **Pane-Centric** - Everything operates through `Pane` objects
- **Process-Native** - Uses `/proc` and tmux state directly
- **Handler System** - Process-specific capture and filtering
- **0-Based Pagination** - Navigate cached output efficiently

## 📚 Documentation

- [Architecture](docs/ARCHITECTURE.md) - System design
- [Handlers](src/termtap/process/handlers/) - Process-specific handlers
- [Commands](src/termtap/commands/) - Command implementations

## 🛠️ Development

```bash
# Clone repository
git clone https://github.com/angelsen/tap-tools
cd tap-tools

# Install for development
uv sync --package termtap

# Run development version
uv run --package termtap termtap

# Run tests and checks
make check-termtap  # Check build
make format         # Format code
make lint           # Fix linting
```

## 📄 License

MIT - see [LICENSE](../../LICENSE) for details.
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "termtap",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "mcp, session-manager, terminal, tmux",
    "author": null,
    "author_email": "Fredrik Angelsen <fredrikangelsen@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/7e/0f/3d29596241395e51094a80982a840a1f24e0f1130c49c8acb8780bd6aafb/termtap-0.4.1.tar.gz",
    "platform": null,
    "description": "# termtap\n\nProcess-native tmux session manager with MCP support.\n\n## \u2728 Features\n\n- \ud83c\udfaf **Smart Detection** - Auto-detects Python, SSH, Claude processes\n- \ud83d\udcdd **Handler System** - Process-specific output filtering and caching\n- \ud83d\udd0c **MCP Ready** - Tools and resources for Claude/LLMs\n- \ud83d\ude80 **Service Orchestration** - Run multi-service environments\n- \ud83d\udd0d **Fuzzy Search** - Filter sessions with patterns\n- \ud83c\udfa8 **Rich Display** - Tables, boxes, and formatted output\n\n## \ud83d\udccb Prerequisites\n\nRequired system dependencies:\n- **tmux** - Terminal multiplexer\n- **gum** - Interactive terminal UI components\n\n```bash\n# macOS\nbrew install tmux gum\n\n# Arch Linux\nsudo pacman -S tmux gum\n\n# Ubuntu/Debian\nsudo apt install tmux\n# For gum, see: https://github.com/charmbracelet/gum#installation\n\n# Fedora\nsudo dnf install tmux\n# For gum, use: go install github.com/charmbracelet/gum@latest\n```\n\n## \ud83d\udce6 Installation\n\n```bash\n# Install via uv tool (recommended)\nuv tool install termtap\n\n# Or with pipx\npipx install termtap\n\n# Update to latest\nuv tool upgrade termtap\n\n# Uninstall\nuv tool uninstall termtap\n```\n\n## \ud83d\ude80 Quick Start\n\n```bash\n# 1. Install termtap\nuv tool install \"git+https://github.com/angelsen/tap-tools.git#subdirectory=packages/termtap\"\n\n# 2. Add to Claude\nclaude mcp add termtap -- termtap --mcp\n\n# 3. Run REPL\ntermtap\n```\n\n## \ud83d\udd0c MCP Setup for Claude\n\n```bash\n# Quick setup with Claude CLI\nclaude mcp add termtap -- termtap --mcp\n```\n\nOr manually configure Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n```json\n{\n  \"mcpServers\": {\n    \"termtap\": {\n      \"command\": \"termtap\",\n      \"args\": [\"--mcp\"]\n    }\n  }\n}\n```\n\n## \ud83c\udfae Usage\n\n### Interactive REPL\n```bash\ntermtap                     # Start REPL\ntermtap --mcp               # Start as MCP server\n```\n\n### Commands\n```python\n>>> ls()                    # List all sessions with processes\n>>> execute(\"python3\")      # Start Python REPL in tmux\n>>> read()                  # Read output with caching\n>>> interrupt()             # Send Ctrl+C to current pane\n>>> run(\"demo\")             # Run service group from config\n```\n\n### Command Reference\n\n| Command | Description |\n|---------|------------|\n| `execute(command, target=None)` | Run command in tmux pane |\n| `read(target=None, page=None)` | Read output with pagination |\n| `ls(filter=None)` | List sessions with optional filter |\n| `interrupt(target=None)` | Send interrupt signal |\n| `send_keys(keys, target=None)` | Send raw key sequences |\n| `run(group)` | Run service configuration |\n| `track(target=None, duration=10)` | Monitor pane state |\n\n## \ud83d\udee0\ufe0f Service Configuration\n\nDefine multi-service environments in `termtap.toml`:\n\n```toml\n[init.demo]\nlayout = \"even-horizontal\"\n\n[init.demo.backend]\npane = 0\ncommand = \"uv run python -m backend\"\npath = \"demo/backend\"\nready_pattern = \"Uvicorn running on\"\ntimeout = 10\n\n[init.demo.frontend]\npane = 1  \ncommand = \"npm run dev\"\npath = \"demo/frontend\"\nready_pattern = \"Local:.*localhost\"\ndepends_on = [\"backend\"]\n```\n\nRun with: `run(\"demo\")`\n\n## \ud83d\udcc1 Examples\n\nSee `examples/` directory for:\n- Basic usage patterns\n- Service orchestration setups\n- MCP integration examples\n\n## \ud83c\udfd7\ufe0f Architecture\n\nBuilt on [ReplKit2](https://github.com/angelsen/replkit2) for dual REPL/MCP functionality.\n\n**Key Design:**\n- **Pane-Centric** - Everything operates through `Pane` objects\n- **Process-Native** - Uses `/proc` and tmux state directly\n- **Handler System** - Process-specific capture and filtering\n- **0-Based Pagination** - Navigate cached output efficiently\n\n## \ud83d\udcda Documentation\n\n- [Architecture](docs/ARCHITECTURE.md) - System design\n- [Handlers](src/termtap/process/handlers/) - Process-specific handlers\n- [Commands](src/termtap/commands/) - Command implementations\n\n## \ud83d\udee0\ufe0f Development\n\n```bash\n# Clone repository\ngit clone https://github.com/angelsen/tap-tools\ncd tap-tools\n\n# Install for development\nuv sync --package termtap\n\n# Run development version\nuv run --package termtap termtap\n\n# Run tests and checks\nmake check-termtap  # Check build\nmake format         # Format code\nmake lint           # Fix linting\n```\n\n## \ud83d\udcc4 License\n\nMIT - see [LICENSE](../../LICENSE) for details.",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Process-native tmux session manager with MCP support",
    "version": "0.4.1",
    "project_urls": {
        "Repository": "https://github.com/angelsen/tap-tools"
    },
    "split_keywords": [
        "mcp",
        " session-manager",
        " terminal",
        " tmux"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5f8bc325de114cff6db08cae1bd5ccd46973df825cef629c7aaa13a1c007c7c9",
                "md5": "6113607d7ec07f92086959ed57124764",
                "sha256": "c785f51a9b5e0f07f1333c734496003f3531077cfcc3aabeee17cf4882b31c2d"
            },
            "downloads": -1,
            "filename": "termtap-0.4.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6113607d7ec07f92086959ed57124764",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 64877,
            "upload_time": "2025-08-13T23:48:29",
            "upload_time_iso_8601": "2025-08-13T23:48:29.123828Z",
            "url": "https://files.pythonhosted.org/packages/5f/8b/c325de114cff6db08cae1bd5ccd46973df825cef629c7aaa13a1c007c7c9/termtap-0.4.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7e0f3d29596241395e51094a80982a840a1f24e0f1130c49c8acb8780bd6aafb",
                "md5": "ba6375956d9358577dfd6a65b80c950e",
                "sha256": "afe6b631328da4130e7f7099be5d97b8805e2ac2fcf749e9955098202f9277cc"
            },
            "downloads": -1,
            "filename": "termtap-0.4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ba6375956d9358577dfd6a65b80c950e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 16266689,
            "upload_time": "2025-08-13T23:48:33",
            "upload_time_iso_8601": "2025-08-13T23:48:33.524749Z",
            "url": "https://files.pythonhosted.org/packages/7e/0f/3d29596241395e51094a80982a840a1f24e0f1130c49c8acb8780bd6aafb/termtap-0.4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-13 23:48:33",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "angelsen",
    "github_project": "tap-tools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "termtap"
}
        
Elapsed time: 1.08243s