macOS · guests join from any browser

Share a real terminal.
Not a video of one.

Everyone in the session is attached to the same shell. You type, they see it. They type, you see it. No pasting commands back and forth, no read-only screen share, no handing out SSH.

Free · Apple silicon · macOS 13+

Pasting commands

They typo it. You re-paste it. Nobody is sure which machine produced the output on screen.

Screen sharing

Read-only and re-compressed. They can see your terminal. They can't use it.

Handing out SSH

All-or-nothing access to a box, and no record of who did what.

One shell, many people

The host runs a real login shell in a pty. Every byte it emits fans out to everyone; every keystroke that's allowed goes back into the same pty. There is only one shell, so there is nothing to merge and nothing to drift.

host's shell (pty) │ output ├──────────────▶ host's terminal ├──────────────▶ guest (macOS app) ◀── keystrokes ──┐ └──────────────▶ guest (browser) ◀── keystrokes ──┤ │ relay ──▶ api.tandem-terminal.com ──────────────────┘

Guests need nothing

Send a link. It opens a full terminal in the browser — no account, no install, no extension. Works on Windows and Linux today.

Read-only by default

Everyone arrives watching. Grant typing per person, revoke it mid sentence.

Real terminal, real programs

vim, top, colors, job control. Bytes pass through untouched, so nothing is emulated badly.

Chat that can't touch the shell

A separate frame type, not a filter — there is no code path from a chat message to your pty.

Tabs

Each tab is its own session with its own shell. Host one while watching another.

Nobody sees your network

The listener binds loopback only. No inbound port, no firewall change, and guests never see each other's addresses.

Built for sharing something real

1 A token in the link

24 characters, checked during the HTTP handshake — before a WebSocket exists. Scanners that find the hostname get a refusal, not a terminal.

2 A passcode that isn't in the link

Shared out of band. Until it passes, that connection receives zero terminal bytes. Three wrong tries drops the connection; ten locks joining until you re-open it.

End-to-end encrypted

Terminal traffic is AES-GCM encrypted between host and guest. The key travels in the link's fragment, which browsers never send to a server — so the relay routes your session without being able to read it.

Kick, ban, and a log

Remove someone with a message explaining why. Every join, refusal and permission change is recorded with a timestamp.

Worth saying plainly: a guest you let type has your shell, as you. There is no command filtering. Grant it to people you'd hand the keyboard to.

Get it

Download for macOS

Signed with a Developer ID · Apple silicon · macOS 13+

Drag it to Applications. Nothing else to install, no account to make.

This build isn't through Apple's notary service yet, so the first launch needs right-click → Open instead of a double-click. macOS will warn once and then remember. That goes away with the next release.