purplemux / for Claude Code

Claude Code, many sessions, all at once. Faster.

A multi-session dashboard on tmux.
Browser, mobile, terminal — one seamless workflow.

$ npx purplemux
Download for macOS
Node.js 20+ tmux required macOS / Linux
purplemux desktop dashboard purplemux on mobile
Why purplemux

Every session, in one dashboard.

As sessions multiply, tracking state gets harder.
purplemux gathers every session onto one screen so you can see what's running and where your input is needed at a glance.

Rate limit sidebar
5h 2h 14m left (85%)
7d 4d 9h left (60%)

Your quota, in real time.

Hitting a limit mid-focus breaks your flow. Work stalls while you wait for the next reset.

purplemux keeps 5-hour and 7-day quotas pinned to the sidebar. Colors shift at 50% and 80%, so you can pace yourself before you hit the wall.

purplemuxin progress
docs-siteneeds input
landingreview
refactoridle
Multi-session dashboard
See every Claude Code session's running / needs-input state at a glance.
Refactor auth module
readsrc/lib/auth.ts
editsrc/lib/auth.ts
00:24
Live session view
Progress laid out as a timeline — no more scrolling CLI logs.
IN PROGRESS3
landing-copy
REVIEW2
fix-auth-bug
tsc-errors
DONE7
Status-grouped sessions
Every session gets sorted into Review · In Progress · Done automatically.
term diff
web
Save & restore workspaces
Running on tmux, sessions survive closing the browser. Panel layout, tabs, and working paths restore tomorrow with a single click.
src/lib/auth.ts
12
13
14
15
12
13
14
15
Git diff viewer
Check diffs in a panel next to the terminal. Side-by-side or inline, with syntax highlighting.
~/devdocker compose up
~/devvim src/handler.ts
~/devssh prod.example.com
~/devpnpm dev
A real terminal
Not Claude-only. A full xterm.js + node-pty terminal for vim, docker, ssh, REPLs — whatever you need.
Mobile & push

Away from your desk, unchanged.

You don't need to stay at your desk just to watch a long task run. Open a mobile browser, add to home screen, and it behaves like a native app. Close the tab and task-completion / needs-input notifications still arrive via Web Push.

purplemux mobile push notification

Add to home screen (PWA)

Open in a browser and add to the home screen to get a full-screen app icon.

iOS (Safari)
  1. Open http://<host>:8022 in Safari
  2. Tap the Share button at the bottom
  3. Choose Add to Home Screen
  4. Tap Add in the top right
Android (Chrome)
  1. Open the URL in Chrome
  2. Open the menu in the top right
  3. Choose Install app or Add to Home Screen

Turn on push notifications

  1. Enable Settings → Notification → On and grant browser notification permission
  2. Delivered via Web Push, even in the background
  3. Alerts for task completion and input needed
  4. Tap a notification to jump straight to the session

External access via Tailscale

For access outside your network, Tailscale Serve is the cleanest route. WireGuard encryption and HTTPS certificates come for free.

$ tailscale serve --bg 8022

Then reach https://<machine>.<tailnet>.ts.net from anywhere. iOS Safari requires HTTPS for PWA and Web Push to work.

Stats & analytics

Every usage metric, on one screen.

Today's tokens, this month's cost, usage by project, breakdown by model — scattered numbers gathered in one place to show the rhythm and cost structure of your work.

purplemux usage stats dashboard
01
Four overview cards Sessions · Total · Today · Month
02
Daily activity trend Sessions · messages, last 30 days
03
Work streaks Longest · Current · Count · Avg
04
Weekly timeline Day × hour streak + concurrent sessions
AI daily report

Your day, auto-summarized.

When the day is done, session logs are gathered and an LLM writes a one-line brief and a detailed summary. Saved as Markdown — drop it straight into retros, reports, or 1:1s.

2026-04-13 (Mon) 15 sessions · $5.87
Drafted the purplemux landing page. Wired up the mobile / PWA section and stats dashboard. Unified copy with an Apple tone and replaced all feature card mockups.
∧ Collapse
purplemux
Landing page draft
  • Designed the eight-section structure with Hero / Why / Mobile / Stats layouts
  • Made the purple brand color an OKLCH variable
  • Applied desktop / mobile screenshot mockup frames
Feature card mockups
  • Reproduced real spinner / pulse indicators on the multi-session dashboard
  • Tightened Git Diff, workspace, and self-hosted mockup CSS
  • Added the Tailscale access diagram animation

Brief + detailed, together

The one-line brief lives on the dashboard; expand to the detailed view with one click. It's Markdown — paste it straight into a retro or a report.

Batch & regenerate

Fill missing days in a single batch, or regenerate any single day on its own. The LLM processes session by session so context never gets lost.

Anywhere, fast

Lives in the sidebar as Notes, and opens with Cmd ⇧ E (macOS) / Ctrl ⇧ E (Linux). Stored locally — nothing leaves your machine.

Features

Every feature you need, nothing you don't.

Terminal 7
  • Split panesHorizontal · vertical splits, drag to resize
  • Tab managementMultiple tabs, reorder, auto title from process name
  • ShortcutsSplit · switch tab · move focus
  • ThemesDark / light · multiple color sets
  • WorkspacesSave & restore panes · tabs · working paths
  • Git diff viewerSide-by-side · syntax highlighting
  • Web browser panelBuilt-in Electron preview
Claude Code integration 10
  • Real-time statusIn progress / needs input, instant transitions
  • Sidebar session modeWorkspace ↔ Sessions toggle, status-grouped views
  • Live session viewMessages · tool calls · tasks · permission prompts
  • One-click resumePick up interrupted sessions right from the browser
  • Auto restoreRecovers previous sessions on server restart
  • Quick promptsRegister favorites, run with one click
  • Message historyReuse previous messages
  • Usage analyticsTokens · cost · per project · daily reports
  • Rate limit countdown5h / 7d remaining · time to reset
  • Limit usage warningsSidebar bar shifts to amber / red at 50% / 80%
Mobile & accessibility 7
  • Responsive UITerminal · timeline on phones and tablets
  • PWAAdd to home screen · native-app feel
  • Web PushNotifications even after closing the tab
  • Multi-device syncWorkspace changes reflected in real time
  • TailscaleHTTPS-safe external access
  • Password authscrypt hashing
  • i18n한국어 · English · 日本語 · 中文 · 11 languages total
Customize 9
  • ThemesLight / Dark / System auto
  • Font sizeNormal · Large · X-Large
  • Custom CSSFull override via CSS variables
  • Terminal themesSeparate color sets for light / dark
  • Sidebar reorderShow/hide items · drag to reorder
  • Quick prompts libraryAdd custom prompts · drag to sort
  • Editor integrationExternal editor via code-server URL
  • Notification controlSystem notifications on/off
  • Claude optionsToggle CLI options like skip permissions
How it works

Browser ↔ Node.js ↔ tmux · Claude Code.

xterm.js connects to node-pty over WebSocket, and node-pty attaches to a tmux session on the dedicated purple socket. State is tracked by Claude Code hooks and a JSONL log watcher together.

Browser UI
xterm.js
Terminal
Timeline
events
Status
indicators
Multi‑device
sync
WebSocket
/terminal /timeline /status /sync
Node.js Server :8022
node-pty
Binary PTY ↔ WS
JSONL Watcher
file → parse → send
Status Manager
process tree + JSONL tail
Binary PTY · binary stdin/out Hooks + 5–15s polling Permission prompt intercept 1MB backpressure · 10 queue
spawn · read
System local
tmux · purple socket
session 1 session 2
Isolated purple socket Parallel recovery after reboot
Claude Code
~/.claude/sessions/ ~/.claude/projects/{id}.jsonl
vs. official Remote Control

Beyond remote control — a unified workspace.

Official Remote Control is a remote-access tool for continuing Claude Code sessions from another device. purplemux adds a multi-session dashboard, terminal extensions, and usage analytics on top — a self-hosted operating environment.

Feature Official Remote Control purplemux
Concurrent session view Open one at a time from a list All sessions, all states, on one dashboard
Status indicators Online / offline Busy · Review · Needs-input · Idle in real time
Push notifications Requires Claude mobile app Web Push · any browser, no install
Terminal persistence Only while the claude process is running tmux-backed · auto recovery after restart
Bundled tools Claude Code session only Split terminal · Git diff · workspace save
Usage analytics Tokens · cost · per project · AI daily report
Strengths Official from Anthropic · Claude mobile app integration · auto-update Third-party OSS · manual install & maintenance
Install

30 seconds, start to finish.

All you need is Node.js 20+ and tmux. One line to install, then open your browser.

1

Run

Start right away with npx. A global install also works.

$ npx purplemux
2

Open the browser

Default port is 8022. Override with the PORT env var.

 http://localhost:8022
3

Remote access (optional)

For external access we recommend Tailscale Serve. WireGuard encryption and automatic certificates are included.

$ tailscale serve --bg 8022
4

Native app (optional)

On macOS you can also use the Electron build. Apple Silicon and Intel both supported.

Download the latest release →
FAQ

Things you might be wondering.

Does it save me money?

It makes your usage transparent. Today's, this month's, and per-project cost; per-model token breakdowns; 5h / 7d rate-limit remaining — all on one screen, so you can tune spending yourself.

Can I approve permission prompts from my phone?

Yes. purplemux intercepts Claude Code permission dialogs from the terminal and forwards them to the dashboard and mobile notifications. Approve from anywhere — no more stalled tasks.

If my system crashes, do I lose my sessions?

Closing the browser or losing the network is fine — tmux keeps the sessions alive. Even after a full reboot, purplemux scans the workspace layout and recovers previous Claude sessions in parallel. No manual restore required.

Where is my data stored?

All settings and session data are stored locally under ~/.purplemux/. Nothing is sent to external servers. Authentication is kept as a scrypt hash in config.json.

Does it work on Windows?

Not officially. Due to tmux and node-pty platform constraints, only macOS and Linux are supported. It may work under WSL2, but that's outside our test coverage.

Does it conflict with my existing tmux sessions?

purplemux runs an isolated tmux instance on a dedicated purple socket. It is fully independent from your existing tmux sessions and ~/.tmux.conf.

How do I access it from outside my network?

Tailscale Serve is recommended — you get WireGuard-based encryption and automatic HTTPS certificates. If you prefer your own reverse proxy, make sure to forward the Upgrade and Connection headers in Nginx / Caddy.

Is there any cost?

purplemux itself is MIT-licensed open source and free. Claude Code usage is billed separately.

Is it actually usable on mobile?

Yes. Responsive UI, PWA, and Web Push are built in. Add it to the home screen for a native-app feel; close the tab and you'll still receive task-completion and input-needed notifications.

Is it localized?

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

Get started

One line is all it takes.

With Node.js 20+ and tmux ready, you can be running in 30 seconds.

$ npx purplemux
Download for macOS
Self-hosted · open source

On your machine, yours to own.

purplemux is a self-hosted tool that runs locally. Session data, settings, and history live only in ~/.purplemux/ and never leave your machine. The full source is MIT-licensed — read it, change it, contribute.

MIT License 100% local 0 telemetry
~/.purplemux/
├─ config.json
├─ workspaces.json
└─ sessions/
MIT local-only