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 for as long as you host your own relay. Pro is for when you'd rather not.
Free while it is young. Download it, break it, tell me what is wrong with it.