muxdeck

Your tmux sessions, from any browser.

muxdeck is a single Go binary that serves a session manager and a full terminal for the tmux server it runs next to. Every browser tab is a real tmux attach client — splits, scrollback, copy mode, and the status line all just work.

curl -fsSL https://raw.githubusercontent.com/josecarlosrivas/muxdeck/main/install.sh | sh

on a Mac? download the desktop app — signed & notarized, Apple silicon

no accounts · no telemetry · MIT

1:features

Everything tmux gives you, nothing it doesn't

Full terminal in the browser

xterm.js attached over WebSocket. Multiple viewers of one session behave exactly like multiple tmux attach clients — watch a deploy from your laptop and your phone at once.

One static binary

The frontend — xterm.js included — is embedded in the binary. The only runtime dependency is tmux itself. Linux and macOS, amd64 and arm64.

Installable PWA

Add it to the home screen on an iPad or phone. A touch key bar covers what software keyboards lack: esc, tab, arrows, and a sticky ctrl — so ctrl-b works everywhere.

Sessions that survive

Create, kill, rename, deep-link with /#name. Sessions live in the tmux server, not in muxdeck — restart muxdeck and everything is still running.

Agent-aware

Sessions running AI coding agents show a live badge — state, model, spend — and muxdeck notifies you the moment an agent blocks on your input. Agents self-report over one endpoint; adapters ship for Claude Code.

2:demo

The actual UI

Session list on the left, live terminal on the right. What you see is the whole app — there is nothing else to configure.

muxdeck in a browser: a sidebar listing tmux sessions and a full terminal attached to one of them

3:desktop

The Mac app

Everything above, in a window of its own — no terminal required to get started. Signed and notarized, so it opens straight from the download.

download → drag → openthe daemon is bundled; the app starts and stops it for you
plays nice with a servicealready run muxdeck via launchd? The app attaches instead of spawning a second daemon
native notificationsagent needs-input alerts land in Notification Center, even with the window closed

Download muxdeck.dmg — Apple silicon. Prefer the CLI? Keep reading.

4:install

Run it your way

The installer detects your platform, checks for tmux, and offers to set up a systemd or launchd service. Or grab a release binary and run it directly:

./muxdeckloopback, no auth — try it
./muxdeck -addr 0.0.0.0:8300LAN — access code auto-generated
./muxdeck -addr 0.0.0.0:8300 -token s3cretfixed token
./muxdeck -tls-cert cert.pem -tls-key key.pembuilt-in TLS, no proxy needed

A browser terminal is remote code execution by design, so auth is on by default: bind beyond loopback without a token and muxdeck prints access code: XK7M2P at startup. Opting out is explicit (-no-auth), never accidental.

5:roadmap

Where it's headed

linux desktopthe same app for Linux — the daemon already ships linux binaries; the shell follows
web pushagent alerts on your phone — the PWA gets real push, not just in-page notifications
more agent adaptersCodex CLI next; anything that can run a command on state change can report