v1.0 · macOS, Windows & Linux

A shared terminal
for friends.

Drop into the same shell together. Chat inline, run commands, watch the same output scroll past — end-to-end encrypted, through a relay that can read none of it.

free · no account · nothing leaves your machines but ciphertext
meet@hearth FIRE-SIDE-2026-CHAT
14:02 arjunmy deploy keeps failing on your box, mind if I poke at it?
14:02 meetgo for it, giving you access
· arjun can now run commands on this machine
 
npm run build — arjun
> hearth@1.0.0 build > node scripts/bundle.js bundled 41 modules in 1.2s
ok 1.4s /Users/meet/dev/api
 
cat ~/.ssh/id_ed25519 — arjun
blocked the host declined this command (SSH private key)
 
~/dev/api

Everything a shared shell should be.
Nothing it shouldn't.

Built around one idea: letting a friend into your machine is a real decision, so make it a deliberate one.

One shell, everyone in it

Working directory, environment and shell state persist between commands — and between people. Arjun runs cd /tmp, you run pwd, you get /tmp.

cd /tmp — arjun
ok 4ms
 
pwd — meet
/tmp

Guests start as watchers

They read everything and can chat. Running is granted per person and revoked instantly. A leaked join code costs you a spectator, not a shell.

who is here
meet (you) host
arjun can run
priya watching
sam watching

It stops you before you leak

Two different hazards, handled differently: commands that could wreck the machine, and commands that would print your secrets into a room. It tells you which, who asked, and how many people are watching.

THIS WOULD EXPOSE SECRETS
arjun wants to run:
cat ~/.aws/credentials
flagged: AWS credentials
2 other people are watching

The relay is blind

It routes opaque blobs between rooms and holds no key — it cannot read a message, a command, or what came back. Run it on a small VPS, or keep everything on localhost.

relay log
join a3f1c8d2 c1 (2 in room)
join a3f1c8d2 c2 (3 in room)
— no message content, ever —

Signed, not just encrypted

Everyone in a room shares the encryption key, so encryption alone proves nothing about who sent something. Ed25519 signatures stop an insider forging command output or faking a permission grant from the host.

host key
C247-438C-7107-1534
 
dropped a "grant" from priya —
only the host may send that

Everything is written down

Who ran what, when, the risk verdict, the exit code — including the commands you blocked. Kept locally, in plain JSON lines you can read with anything.

~/.hearth/audit-29a03a7c.jsonl
grant arjun
command arjun "npm run build" exit=0
blocked arjun risk=sensitive

Zero dependencies

The daemon and relay are plain Node. Nothing to audit but the code itself.

Terminal-native

/chat, /run, history on ↑, Tab completion. Or use the CLI.

Your relay, your rules

One small file. Fly.io, a VPS, or loopback — it is ~180 lines you can read.

201 tests, 3 platforms

Linux, macOS and Windows on every commit, including real PowerShell.

A shared terminal is remote code execution on your machine.
That is the whole point — so Hearth makes it deliberate rather than accidental.

Get Hearth

Free while it is young. Download it, break it, tell me what is wrong with it.

macOS

macOS 11 or newer · Apple Silicon & Intel

Windows

Windows 10 or newer · 64-bit
Two things worth knowing before you install. The builds are not code-signed yet, so macOS will say the developer cannot be verified — right-click the app and choose Open the first time, and Windows SmartScreen will want "More info → Run anyway". Signing certificates are on the list. And Hearth is new: the Windows app is built and tested on every commit, but it has had far fewer real hours than the Mac one. If something breaks, please tell us — early reports are worth a great deal right now.