Compared · September 2026

spawnd vs Happy

Two open-source answers to the same 9pm problem — the agent is asking, and you’re not at the desk. They differ on what travels, and on where the session lives.

Happy is the nearest thing to a peer.

Happy (happy.engineering) is a mobile and web client for Claude Code and Codex — its CLI wraps Gemini CLI as well — released under MIT. You install the app on iOS or Android, run npm install -g happy, then start happy claude or happy codex instead of the bare command. A QR code pairs the phone; from then on the session shows up as a conversation on the phone, with push notifications when the agent needs a permission or hits an error, and one keypress on the computer to take control back.

What it does well, it does genuinely well. The native apps are quick and feel native; a conversation view is a better shape than a terminal for reading an agent’s reasoning on a five-inch screen; voice is built in, so you can talk a request at Claude Code from a walk; and conversation history is readable on the phone even when the computer is off. The relay server is open source and self-hostable with one command, and the code that encrypts everything before it leaves your machine is there to audit. If your question is “can I approve Claude Code’s diff from the sofa?”, Happy answers it today.

The difference is what travels, and where the session lives.

Happy’s architecture is a wrapper and a relay. The happy command starts the agent through Happy’s own runner; when you take control from the phone it restarts the session in remote mode, and everything the app shows is a stream of encrypted blobs the phone decrypts and renders as chat. Those blobs travel through Happy’s server — hosted or yours — on every message, and the server stores them, which is how history survives the computer being off. By design the server is blind to content; what it keeps in the clear, per Happy’s privacy policy, is metadata: message IDs, timestamps, device and session IDs, push tokens. Voice, which goes to ElevenLabs, sits outside that encryption boundary.

spawnd’s architecture is a daemon and a terminal. One daemon on each host you own dials out; a worker process on the host owns each session’s PTY, so the session survives the closed tab, the dropped connection, the laptop lid, and a daemon restart, scrollback intact. What reaches your phone is the real terminal — your browser talks to each daemon peer-to-peer, end-to-end encrypted; when a relay is unavoidable it forwards ciphertext it cannot decrypt, and the server that introduces them never sees session content. Sessions live on the host. And because the unit is a shell rather than a message stream, any CLI is an agent — Claude Code, Codex, OpenCode and Aider are built-in shortcuts, anything else is a named command — and several hosts sit side by side in one workspace grid.

Row by row.

spawndHappy
What the phone showsThe real terminal — the same PTY the host is runningA conversation view: messages, tool calls, permission prompts
AgentsAny CLI; Claude Code, Codex, OpenCode, Aider built inClaude Code and Codex; Gemini CLI through the wrapper
The pathBrowser to daemon peer-to-peer, E2E; a relay only when unavoidable, ciphertext onlyEvery message through Happy’s relay as encrypted blobs, hosted or self-hosted
Where the session livesOn the host: a worker owns the PTY; survives tab, lid, daemon restartIn the wrapper, restarted in remote mode; history stored encrypted on the relay, readable while the computer is off
What the middle seesCiphertext, when a relay is used at all; the introducer never sees contentCiphertext plus metadata: message IDs, timestamps, device and session IDs, push tokens
On the phoneInstallable web app; no client app, no keys on the deviceNative iOS and Android apps, a macOS app, a web app
VoiceNoneBuilt in via ElevenLabs: a free allowance, then a subscription; outside the E2E boundary
Cost and provenanceOpen source, MIT/Apache-2.0Open source, MIT; free app, optional voice subscription; self-hostable server

Happy is the better chat. spawnd is the terminal.

If what you want is to read Claude Code’s reasoning and tap approve from a native app, with voice, on a phone that never needs to see a shell, Happy is the more comfortable product and there is no shame in choosing it. Its encryption is real, its relay is yours if you want it to be, and a conversation is the right shape for a thumb.

spawnd is for the person who wants the terminal itself — because the agent is OpenCode or Aider or a script Happy doesn’t wrap, because the session must outlive everything including the wrapper that started it, because three machines belong in one view, or because the only acceptable middle is one that never sees the session at all. It gives up the native app and the voice. It keeps the shell.

Choose spawnd when

  • The agent is any CLI, not only Claude Code or Codex
  • You want the real terminal, scrollback and all, on the phone
  • Several hosts belong in one grid
  • Session content should live on the host, not on a relay

Choose Happy when

  • A chat view is what you want on a small screen
  • Voice control matters
  • History must be readable while the computer is off
  • You want a native app from the store

Start

One line on any host you own.

$curl -fsSL https://spawnd.dev/install.sh | sh
Sign up free
Install the daemon

Questions

Is Happy really end-to-end encrypted?
Yes, by its published design: content is encrypted on your devices with NaCl secretbox or AES-256-GCM before it reaches the relay, and the relay stores what it cannot read. The parts outside that boundary — metadata, and the voice feature — are set out in Happy’s own privacy policy.
Can I run Happy and spawnd on the same machine?
Yes. Happy wraps the agent command; spawnd gives you a persistent shell on the host. Start happy claude inside a spawnd session and you get both: the chat in Happy’s app, the terminal in your browser.
Does spawnd have a native app or voice?
No. The console is your browser, installed to the home screen as a web app, and there is no voice feature. If those matter more than the terminal, Happy is the honest recommendation.