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
Nothing rattles the relay.
Six hardening fixes: malformed or empty protocol messages can no longer crash a session, a flood of silent web connections can't stall SSH accepts, and runaway message streams are capped. Your terminal sharing stays up — SSH first, always.
Built by Lars-Erik Jonsson (SA3LEJ) with Claude Code.