tmtv
Share your terminal over SSH. That's it.
Get started
$ curl -fsSL https://tmtv.se/install.sh | sh
Linux and macOS. Or brew install sa3lej/tap/tmtv on macOS.
Or build from source.
View a session in the browser
Or open a direct link: /s/TOKEN
How it works
Share
Run tmtv.
You get two SSH tokens: read-write for your pair, read-only for spectators. Add a password to lock the door.
Connect
Your pair runs ssh TOKEN@tmtv.se and lands in your session. No plugins, no accounts, no browser.
Or use the browser
Open the web viewer if you don't have a terminal handy. Watch, or type along with a read-write token. Zero install.
Everything you get
SSH sharing
Read-write and read-only tokens. Your pair edits, spectators just watch — all over plain SSH.
Shared clipboard
Copy once, paste everywhere. Yanks sync across every viewer — host and guests, SSH and web.
Inline graphics
SIXEL images render right in the terminal — and in the web viewer. Charts, previews, QR codes.
Locked down
Password-protect any session. Modern SSH crypto, isolated per-session tokens — no weak algorithms.
Modern tmux
Built on tmux 3.6a: popup menus, extended keys, split panes, true color — nine years past tmate.
Web viewer
Watch or type along right in the browser. xterm.js rendering, themes, zero install.
docker compose up Linux + macOS Static binaries, zero deps ISC licensed Debug CI failures over SSH
Drop sa3lej/action-tmtv@v1 into your GitHub Actions workflow. When a job fails, SSH straight into the runner and debug it live. A drop-in replacement for action-tmate.
What it looks like
Try it: add ?theme=tv to any viewer URL
Why tmtv?
I loved tmate but it was stuck on tmux 2.4 from 2017. Nine years of tmux improvements — popup menus, extended keys, sixel graphics — all missing.
So I rebased it on tmux 3.6a and shipped it. Same SSH-based terminal sharing you know, with a modern tmux underneath. The web viewer is a bonus — handy when someone just wants to watch without opening a terminal.
No IDE plugins. No accounts. No Electron app. Just SSH.
What's new
Same session. Same links.
Automatic reconnects now preserve your SSH and web links, backed by a private in-memory host identity. Named sessions keep their assigned names, RW links get stronger tokens, and an old connection can no longer erase its replacement's aliases. Upgrade the hosting client for continuity; a fresh start still creates fresh credentials.
Built by Lars-Erik Jonsson (SA3LEJ) with Claude Code.