Showcase · Muxplex

Your Terminal
Sessions, Everywhere

Monitor and interact with all your tmux sessions across all your machines from a single browser tab — on any device, including your phone.

v0.3.3 · MIT License
May 2026 · Brian Krabach (bkrabach)
The Problem

Terminal sessions
live on islands

🖥️

SSH Whack-a-Mole

You have tmux sessions running on your dev box, your build server, and a VM. Checking on them means SSH’ing into each machine one at a time.

🚫

No Mobile Access

Terminal apps on iOS are clunky. There’s no good way to glance at your running sessions from your phone or tablet on the go.

🔔

Missed Activity

A build finishes, a test fails, a process bells — but you don’t notice until you manually reconnect and check.

You shouldn’t have to remember which machine is running what. Your sessions should come to you.

The Solution

Muxplex

A web-based tmux session dashboard powered by FastAPI, xterm.js, and ttyd. Live-preview tiles, full interactive terminals, and federation across machines — all in one browser tab.

📋

Dashboard

Live ANSI-colored preview tiles in a responsive grid — auto-refreshed, hover-to-expand

📟

Terminal

Full interactive xterm.js terminal with clipboard, search, clickable URLs, and inline images

🌐

Federation

Multiple muxplex instances share sessions across machines with heartbeat sync

📱

PWA

Add to home screen on iOS/iPadOS — touch scroll, responsive layout, works everywhere

# Install and run — that's it uvx --from git+https://github.com/bkrabach/muxplex muxplex # Open http://localhost:8088
Dashboard

See everything at a glance

Live Session Grid

ANSI-colored terminal snapshots rendered as preview tiles. Two view modes: Auto (scrollable grid) and Fit (all sessions fill the viewport). Configurable column count and font size.

Activity Indicators

Bell notification badges glow on tiles with unseen activity. The browser tab shows (N) count and the favicon gets an amber dot overlay — so you notice from another tab.

Session Management

+ button to create sessions with custom command templates. × to delete. Device selector dropdown when federation is enabled — create sessions on any connected machine.

Hover Preview

Full-size overlay of session content appears on tile hover (configurable delay). Sidebar session switcher provides quick-switch between sessions with live previews.

Federation · v0.3.0

One dashboard,
every machine

Multiple muxplex instances federate into a unified view. Sessions from all your devices appear in a single dashboard.

1

Remote Aggregation

Configure remote instance URLs in Settings. The poll cycle fetches sessions from each remote, merging them into the local dashboard with device badges.

2

Settings Sync

User preferences sync across all connected servers using a P2P newer-wins protocol with per-server timestamps. 30-second poll interval. Offline servers catch up automatically on reconnect.

3

Heartbeat Bell Clearing

Viewing a remote session clears its activity bell on the remote server automatically via POST /api/bell/clear. No stale notification badges across federation.

4

Secure & Resilient

Bearer token auth between instances. Self-signed TLS accepted. Unique remoteId:name session keys prevent collisions for identically-named sessions on different machines.

Terminal & Mobile

Full terminal, any device

📋

Native Clipboard

Ctrl+Shift+C to copy, mouse-select auto-copies. OSC 52 tmux bridge sends tmux copy-mode selections to system clipboard.

🔍

Search & Links

Ctrl+F opens scrollback search. Ctrl+Click opens URLs in terminal output. Powered by xterm-addon-search and xterm-addon-web-links.

🖼️

Inline Images

Sixel and iTerm2 graphic protocols via xterm-addon-image. File managers like yazi render previews directly in the browser terminal.

📱

iOS/iPadOS

Touch scroll fixes for Safari. PWA-capable — add to home screen for app-like experience. Responsive grid adapts from phone to desktop.

🔒

Authentication

PAM auth (Linux/macOS system credentials) or password mode. Localhost bypass for convenience. Secure signed session cookies with configurable TTL.

🔧

TLS/HTTPS

muxplex setup-tls auto-detects Tailscale, mkcert, or self-signed certs. Required for browser clipboard API on non-localhost.

Architecture

Clean stack, thorough tests

Tech Stack

  • Python 3.11+ with FastAPI backend
  • xterm.js + ttyd for interactive terminals
  • WebSocket proxy for federation terminal access
  • httpx for async federation HTTP
  • Hatchling build, installable via uv/pip
  • systemd (Linux/WSL) and launchd (macOS) services

Project Layout

  • main.py — FastAPI app, routes, WebSocket proxy (1,602 lines)
  • cli.py — CLI entry point and subcommand dispatch (1,067 lines)
  • app.js — Dashboard, sidebar, settings, previews (2,625 lines)
  • terminal.js — xterm.js terminal + clipboard (604 lines)
  • style.css — All styles, dark theme (1,862 lines)
  • 12 Python modules + frontend SPA

2.2:1 Test Ratio

22,679 lines of tests (Python + JS) against ~10,000 lines of source. 18 test files cover API, CLI, frontend rendering, CSS validation, federation sync, and more.

Config-Driven

All settings in ~/.config/muxplex/settings.json. CLI flags override config, config overrides defaults. Browser settings panel at , shortcut.

Self-Managing

muxplex doctor for diagnostics, muxplex upgrade for smart version check + auto-update + service restart. Service installs with one command.

Development Velocity

Built in a sprint

407
commits
7
tagged releases
18
calendar days
22.6k
lines of tests

From first commit to federated multi-device dashboard with full test coverage in under three weeks. v0.1.0 through v0.3.3 — seven releases shipping real features and federation.

Release Timeline

v0.1 → v0.3.3 in 18 days

4 Apr

v0.1.0 — Initial Release

Live session grid, xterm.js terminal, ttyd integration, PAM auth, PWA manifest. The core dashboard.

7 Apr

v0.1.1 — TLS & Activity

Auto TLS setup (Tailscale/mkcert/self-signed). Favicon activity badge, (N) tab count. Terminal search, clickable URLs, inline images. Federation SSL fixes.

8 Apr

v0.2.1 — Settings Consolidation

All display preferences moved server-side. Federation session deletion. Session creation error reporting. 10+ bug fixes.

8 Apr

v0.3.0 — Federation Sync

Settings sync across all connected servers (P2P newer-wins). Heartbeat-driven bell clearing. New sync API endpoints. The federation milestone.

13 Apr

v0.3.3 — Polish

Federation auth hotfix (v0.3.1), hidden sessions filter for federated sessions (v0.3.2), iOS/iPadOS touch scroll fix (v0.3.3). Community PR from @samueljklee.

Get Started

Try muxplex

One command to install. Run it on every machine, federate them together, and never SSH just to check on a session again.

# Run directly — no install needed uvx --from git+https://github.com/bkrabach/muxplex muxplex # Or install permanently uv tool install git+https://github.com/bkrabach/muxplex # Install as a service muxplex service install
github.com/bkrabach/muxplex
MIT License · Python 3.11+ · Requires tmux + ttyd
Sources & Methodology

How we got these numbers

All data in this deck was extracted directly from the bkrabach/muxplex repository on 2026-05-20.

Feature descriptions sourced from README.md and CHANGELOG.md. No metrics were fabricated or estimated.

More Amplifier Stories