Show HN: Tandem Terminal – Share your terminal with a friend

tn_1 pts0 comments

Tandem — share a real terminal

macOS · guests join from any browser

Share a real terminal.<br>Not a video of one.

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

Download for macOS<br>See how it works

Free · Apple silicon · macOS 13+

dana@studio — tandem<br>3 here

dana@studio ~ % ./deploy --dry-run<br>checking 14 services ... ok<br>registry auth ......... ok<br>would restart: api, worker<br>dana@studio ~ % █

priya worker restarts drop the queue — drain first?

you good catch, draining now

Pasting commands

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

Screen sharing

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

Handing out SSH

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

As easy to join as a call

Tandem is a terminal you can invite people into. Start a<br>session, send the link, and they're looking at your live shell — in a<br>browser, in seconds. No install, no account, no SSH keys to hand out. The<br>same "click a link and you're in" as a video call, except what everyone joins<br>is a real running shell.

Send a link, they're in

Guests open it in Chrome or Safari and get a full terminal — on<br>Windows and Linux too. They arrive watching, and you grant typing per<br>person whenever you want it.

Say it instead of typing it

Tap the right ⌘ key and describe what you want. Deepgram<br>transcribes as you speak, and the phrase comes back as a shell command<br>sitting on your prompt — for you to read and run, or not.

Work in it together

Chat that can't reach the shell, a log of who joined and who typed,<br>kick and ban, and tabs so you can host one session while watching<br>another.

One shell, many people

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

guest keystrokes, when the host allows it

YOUR MAC

% zsh<br>one pty

Your terminal<br>loopback · never leaves the Mac

Tandem relay<br>nothing for you to set up<br>routes ciphertext · cannot read it

Guest<br>macOS app

Guest<br>any browser · nothing installed

Guests need nothing

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

Read-only by default

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

Real terminal, real programs

vim, top, colors, job control. Bytes pass<br>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<br>message to your pty.

Tabs

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

Nobody sees your network

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

One terminal. Everyone who needs it.

Five people on four continents, attached to one running<br>shell. Nobody is watching a recording of anybody's screen — the bytes arrive<br>when they arrive. Here are two of them.

ONE SHELL

San Francisco<br>São Paulo<br>Berlin<br>Bangalore<br>Sydney

dana<br>San Francisco<br>HOST

priya is read-only

relay

148 ms

9,100 km

priya<br>Berlin<br>GUEST · BROWSER

read-only<br>nothing installed

priya joins read-only and watches<br>Replay

A scripted illustration — not a<br>live session.

Say it. Don't type it.

Tap the right ⌘ key, say what you<br>want, tap it again. The command appears at your prompt — and stops there.<br>Return is yours to press.

VOICE<br>listening

Command

“find every file bigger than a hundred megs<br>under this directory”

→ heard find every file bigger than 100 megs under<br>this directory<br>→ staged

timmy@mac tandem % find . -size +100M▊

⏎ to run it · edit it first · or just delete it

Command default

Describe the goal. It comes back as a shell command, typed at the prompt<br>but never executed — there is no code path from your voice to a<br>running process that doesn't pass through your Return key.

Dictate

Types exactly what you say, with no interpretation. For a REPL, a chat<br>box, or an agent like Claude Code that wants prose rather than a command.

Stopping is the trigger

Not a pause detector. Thinking mid-sentence used to send half a thought;<br>now the second tap means I'm done. One key, no hold, and no<br>Accessibility permission to grant.

Guests can talk too

The browser client has the same control — so the person you invited can<br>drive the shell by voice with nothing installed, if you've let them type.

No key in the browser

Audio goes to Tandem's relay as plain 16 kHz PCM and it holds the<br>speech credential. A guest's browser never sees one.

Read it before it runs

A wrong transcription is a wrong suggestion, sitting on the<br>prompt where you and everyone watching can see it.

Voice isn't end-to-end encrypted, and it can't be:...

shell terminal read nothing browser tandem

Related Articles