r/electronjs • u/CustardHungry9554 • Oct 12 '26
I built a better version of Claude Code as an Electron app, and now I use it every day instead of the terminal
The video is Helm, an Electron app I use every day to run several Claude Code sessions in one window. Here's how it's put together, since that's the part this sub will care about.
Main process: Electron 44. Each session is one Claude Agent SDK query that launches the claude CLI already installed on the machine, so the app never calls a model API itself. Sign-in goes through the CLI as well: you log into your Claude account inside Helm via Claude Code's own login, and no separate API key is needed. The main process also hosts a small HTTP and WebSocket server, and the UI talks to it entirely in JSON frames.
Renderer: the BrowserWindow loads the UI from that server over loopback, with a token in the query string. It's Preact, htm and signals through an import map, with no bundler and no build step.
Phone: since the desktop window is just a page from a local server, the phone loads the same UI over Tailscale and gets the same controls the desktop has. The server listens on loopback and the Tailscale address only, every request needs the key, the WebSocket checks Origin, and HTTPS comes from tailscale serve. A service worker handles Web Push, so the phone shows a notification once a session wants input or wraps up.
What it gives me day to day: a four-way split so a bunch of sessions run side by side, a context bar on every sub-agent, and a pace readout (under pace, on pace or hot, plus burn rate and a projection) that keeps my usage from running away. The backgrounds are my favourite bit, with 23 bundled photos or your own image and sliders for blur and dim.
Bug that cost me the most time: phone pairing kept bouncing back to the pairing page. Opening the link from a QR scan in the camera app doesn't count as same-site, so the SameSite=Strict cookie never got sent. Lax fixed it.
I built it with Claude Code, one agent per slice of files (engine, server, shell, chat, panels). Windows only for now.
It's not out yet. Is this something you'd want? If enough people do, I'll put real work into a public release. This only scratches the surface, and there are a lot more features in it that I haven't shown. Ask about any feature or architecture detail and I'll answer, with screenshots if that helps.
