purplemux

skill
Guvenlik Denetimi
Basarisiz
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Basarisiz
  • process.env — Environment variable access in bin/cli.js
  • network request — Outbound network request in bin/cli.js
  • process.env — Environment variable access in bin/purplemux.js
  • os.homedir — User home directory access in electron/main.ts
  • process.env — Environment variable access in electron/main.ts
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

A web-native terminal multiplexer for Claude Code — monitor and manage multiple sessions from any browser

README.md

purplemux

Claude Code, many tasks at once. Faster.

Every session on a single screen. Uninterrupted, even on your phone.

English | 日本語 | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Русский | Português (Brasil) | Türkçe

purplemux

purplemux mobile

Install

npx purplemux

Open http://localhost:8022 in your browser. Done.

Requires Node.js 20+ and tmux. macOS or Linux.

Prefer a native app? Grab the macOS Electron build from the latest release (.dmg for Apple Silicon & Intel).

Why purplemux

  • Multi-session dashboard — See working/needs-input status for every Claude Code session at a glance
  • Rate limit monitoring — 5-hour / 7-day remaining usage with reset countdown
  • Push notifications — Desktop and mobile alerts when a task finishes or needs input
  • Mobile & multi-device — Reach the same session from a phone, tablet, or another desktop
  • Live session view — No more scrolling CLI output. Progress is organized as a timeline

Plus

  • Uninterrupted sessions — Built on tmux. Close the browser and everything stays put. Reconnect and your tabs, panels, and directories are exactly where you left them
  • Self-hosted & open source — Code and session data never leave your machine. No external servers
  • Encrypted remote access — HTTPS from anywhere via Tailscale

How it differs from the official Remote Control

The official Remote Control focuses on single-session remote control. Use purplemux when you need multi-session management, push notifications, and persistent sessions.

Features

Terminal

  • Split panels — Horizontal / vertical splits, drag to resize
  • Tab management — Multiple tabs, drag to reorder, auto titles from process names
  • Keyboard shortcuts — Splits, tab switching, focus movement
  • Terminal themes — Dark / light mode, multiple color themes
  • Workspaces — Save and restore panel layouts, tabs, and working directories as workspaces
  • Git diff viewer — Inspect git diffs right inside a terminal panel. Toggle side-by-side / line-by-line, with syntax highlighting
  • Web browser panel — An embedded browser next to the terminal for checking dev output (Electron)

Claude Code integration

  • Real-time status — Working / needs-input indicators with session switching
  • Live session view — Messages, tool calls, tasks, permission prompts, thinking blocks
  • One-click resume — Restart a paused session directly from the browser
  • Auto resume — Recover previous Claude sessions on server start
  • Quick prompts — Register frequently used prompts and send with one click
  • Message history — Reuse previous messages
  • Usage analytics — Tokens (input / output / cache read / cache write), cost, per-project breakdowns, daily AI reports
  • Rate limits — 5-hour / 7-day remaining usage with reset countdown

Mobile & accessibility

  • Responsive UI — Terminal and timeline on phones and tablets
  • PWA — Add to home screen for a native-app feel
  • Web Push — Receive notifications even after closing the tab
  • Multi-device sync — Workspace changes reflected in real time
  • Tailscale — HTTPS access from outside via a WireGuard-encrypted tunnel
  • Password authentication — scrypt hashing, safe even when exposed externally
  • Multilingual — 11 languages including 한국어, English, 日本語, 中文

AI Agents (Beta)

Create independent AI agents, assign them roles and personalities (souls), and run tasks in parallel across multiple tabs. Each agent has its own chat, memory, and workspace.

Supported platforms

Platform Status Notes
macOS (Apple Silicon / Intel) Electron app included
Linux No Electron
Windows Not supported

Install details

Requirements

npx (fastest)

npx purplemux

Global install

npm install -g purplemux
purplemux

Run from source

git clone https://github.com/subicura/purplemux.git
cd purplemux
pnpm install
pnpm start

Development mode:

pnpm dev

Log level

Set the overall level with LOG_LEVEL (default info).

LOG_LEVEL=debug pnpm dev

To enable specific modules only, list module=level pairs in LOG_LEVELS, separated by commas. Available levels: trace / debug / info / warn / error / fatal.

# Trace only Claude Code hook behavior at debug
LOG_LEVELS=hooks=debug pnpm dev

# Multiple modules at once
LOG_LEVELS=hooks=debug,status=warn pnpm dev

Modules not listed in LOG_LEVELS fall back to LOG_LEVEL.

Remote access (Tailscale Serve)

tailscale serve --bg 8022

Access at https://<machine>.<tailnet>.ts.net. To disable:

tailscale serve --bg off 8022

Security

Password

Set a password on first access. It is hashed with scrypt and stored in ~/.purplemux/config.json.

To reset, delete ~/.purplemux/config.json and restart — the onboarding screen will appear again.

HTTPS

The default is HTTP. Always use HTTPS when exposing the app externally:

  • Tailscale Serve — WireGuard encryption with automatic certificates
  • Nginx / Caddy — Must forward WebSocket upgrade headers (Upgrade, Connection)

Data directory (~/.purplemux/)

File Description
config.json Authentication (hashed) and app settings
workspaces.json Workspace layouts, tabs, directories
vapid-keys.json Web Push VAPID keys (auto-generated)
push-subscriptions.json Push subscription data
hooks/ User-defined hooks

Architecture

┌─────────────────────────────────────────────────────────────┐
│  Browser                                                    │
│  ┌───────────┐ ┌───────────┐ ┌──────────┐ ┌─────────────┐   │
│  │  xterm.js │ │ Timeline  │ │ Status   │ │ Multi-device│   │
│  │  Terminal │ │           │ │          │ │ Sync        │   │
│  └─────┬─────┘ └─────┬─────┘ └────┬─────┘ └──────┬──────┘   │
└────────┼─────────────┼────────────┼──────────────┼──────────┘
         │ws           │ws          │ws            │ws
         │/terminal    │/timeline   │/status       │/sync
         ▼             ▼            ▼              ▼
┌─────────────────────────────────────────────────────────────┐
│  Node.js Server (:8022)                                     │
│  ┌──────────┐  ┌───────────────┐  ┌─────────────────────┐   │
│  │ node-pty │  │ JSONL Watcher │  │ Status Manager      │   │
│  │ PTY↔WS   │  │ File watch →  │  │ Process tree +      │   │
│  │ Binary   │  │ Parse → Send  │  │ JSONL tail analysis │   │
│  └────┬─────┘  └───────┬───────┘  └──────────┬──────────┘   │
└───────┼────────────────┼─────────────────────┼──────────────┘
        ▼                ▼                     ▼
┌─────────────────────────────────────────────────────────────┐
│  System                                                     │
│  tmux (purple socket)         Claude Code                   │
│  ┌────────┐ ┌────────┐       ┌────────────────────────────┐ │
│  │Session1│ │Session2│  ...  │ ~/.claude/sessions/        │ │
│  │ (shell)│ │ (shell)│       │ ~/.claude/projects/        │ │
│  └────────┘ └────────┘       │   └─ {project}/{sid}.jsonl │ │
│                              └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Terminal I/O — xterm.js connects to node-pty via WebSocket; node-pty attaches to tmux sessions. A binary protocol handles stdin/stdout/resize with backpressure control.

Status detection — Claude Code event hooks (SessionStart, Stop, Notification) deliver instant updates via HTTP POST. Polling every 5–15s inspects process trees and analyzes the last 8KB of JSONL files.

Timeline — Watches JSONL session logs under ~/.claude/projects/, parses new lines on change, and streams structured entries to the browser.

tmux isolation — Uses a dedicated purple socket, completely separate from your existing tmux. No prefix key, no status bar.

Auto recovery — On server start, restores previous Claude sessions via claude --resume {sessionId}.

License

MIT

Yorumlar (0)

Sonuc bulunamadi