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.
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.
Built around one idea: letting a friend into your machine is a real decision, so make it a deliberate one.
Working directory, environment and shell state persist between commands — and between people. Arjun runs cd /tmp, you run pwd, you get /tmp.
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.
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.
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.
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.
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.
The daemon and relay are plain Node. Nothing to audit but the code itself.
/chat, /run, history on ↑, Tab completion. Or use the CLI.
One small file. Fly.io, a VPS, or loopback — it is ~180 lines you can read.
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.
Free while it is young. Download it, break it, tell me what is wrong with it.