🜂 Hearth

One install, any screen. Run your apps where they live. See them anywhere else.

Get on GitHub → How it works

One app from the hearth, streamed as a native window.

One command on each machine

# Desktop (the hearth):
hearth-agent serve

# Laptop, phone, Pi — anywhere:
hearth-client stream-window --agent <desktop-ip>:9430 --start --with-audio --real-audio

That's it. No accounts. No cloud. The laptop pops a native window with the app from the desktop — keyboard, mouse, audio, everything.

The pitch

You own a fast desktop, a laptop, a phone, maybe a Pi, maybe a Steam Deck. Every piece of software you actually use lives on one of them. When you sit down at another, you either re-install everything or you suffer.

Hearth installs once on your hearth — the powerful machine. Every other device becomes a native-feeling window into the apps that live there. No cloud. No sync. No re-installing. Your apps where you want them, on the screen in front of you.

How it works

Your hearth

Apps stay installed once on your beefy desktop — your files, logins, plug-ins, everything.

Encrypted mesh

WireGuard between all your devices. No third party sees your data. Runs at LAN speed when close, over the internet when you're away.

Per-window streaming

A single app pops up as a native window on your client. Not a whole desktop. Not a browser tab. An app.

Files that just work

Save from the streamed app to your local laptop. Or the hearth. Or a shared folder that appears on both. Your call, per app.

Install

Three ways. Pick one.

1. One-line installer (Linux / macOS)

curl -fsSL https://hearthstream.dev/install.sh | bash

2. Debian / Ubuntu / Pop!_OS package

curl -fsSLO https://hearthstream.dev/hearth_0.1.0_amd64.deb
sudo apt install ./hearth_0.1.0_amd64.deb

3. From source

git clone https://github.com/hearth-stream/hearth
cd hearth/code
make build

Use it

# On the machine with your apps (the hearth):
hearth-agent serve

# In another terminal on the same machine:
hearth-agent pair

# On the device you want to USE your apps from:
hearth-client pair ABC-DEF-GHI --host <agent-ip>
hearth-client connect

# Prove everything is working:
hearth-agent selftest
hearth-agent doctor

Numbers

End-to-end pipeline

1080p @ 5.6 ms encode, 100% delivery, 7.5 Mbps on a live loopback benchmark. Capture → NVENC → UDP + FEC → decode, measured with hearth-agent benchmark.

Packet-loss recovery

Under 5% datagram loss, FEC delivers 99.5% of frames vs 80.5% without. Drops in the test case mostly become invisible to the viewer instead of stutters.

Footprint & observability

11 MB .deb with completions. Prometheus /metrics + /health endpoints. 19-check selftest. Userspace WireGuard — no kernel module, no root.

What works today

Honest status, updated as things ship.

✓ Shipping

Encrypted WireGuard mesh • H.264 encode/decode • Terminal ANSI viewer • File transfer • Clipboard sync • Linux X11/Wayland capture • Pair-by-QR • selftest + doctor

↻ In progress

Native Tauri client window • PipeWire zero-copy capture • uinput remote input • macOS ScreenCaptureKit • Windows WGC

○ Coming

NVENC hardware encode • Opus audio • iOS/Android clients • Steam Deck viewer • Privacy Edition installer

FAQ

Is this just Parsec / Moonlight / Sunshine / RDP?
Those stream a whole desktop. Hearth streams one app as its own native window. You're not taking over the host's screen. Two people on two devices can each be streaming a different app from the same hearth, at the same time.

Is this just Tailscale?
Tailscale moves packets. Hearth moves apps. The mesh underneath is WireGuard (same primitives Tailscale uses) because that's the right primitive. The value is the capture + encode + per-window rendering on top.

Does my data leave my network?
Only if you want it to. When devices are on the same LAN, frames go LAN-direct. When you're away, traffic is end-to-end encrypted WireGuard — no Hearth server in the path, ever. No account required.

Why not just use a browser?
Browsers can't run your native apps. Browser tabs can't hold your Photoshop, your IDE, your DAW, your local AI models, your games, or the thousand little tools that have your settings and files in them. Hearth can.

Is this open source?
Yes. Apache 2.0. The Privacy Edition is a paid, signed, self-hosted bundle with installers for non-technical users — the code is the same, the convenience is the product.

Any screen you own becomes a window into the hearth.

Where this is going

Built by Matthew Rife. Not affiliated with Citrix, Parsec, NVIDIA, Tailscale, NetBird, or anyone else. WireGuard is a registered trademark of Jason A. Donenfeld.

Source is Apache 2.0 licensed.