How to access Happier from your phone over Tailscale
The setup I use to get a stable HTTPS link to Happier on my phone, without opening ports or relying on a LAN IP.
- CLI
- 0.1.0
- Preview ref
- f36aa45
The first time I tried to access a self-hosted Happier stack from my phone, I hit a confusing browser constraint.
http://localhost works fine.
But the moment you switch to something like:
http://192.168.x.x:PORThttp://100.x.y.z:PORT(Tailscale IP)
…some browsers stop treating it as a secure context.
And Happier relies on secure-context browser features (WebCrypto), so “it loads but things feel broken” is a real failure mode.
The setup that actually worked for me was: Tailscale Serve, so I get an HTTPS *.ts.net URL that’s only reachable inside my tailnet.
TL;DR
- Install Tailscale on your computer and your phone.
- Enable Serve for your Happier stack (via
hstack tailscale enable). - Open the resulting
https://*.ts.netURL on your phone.
What I tried first (and where I bounced off)
-
LAN IP + port: easy, but not HTTPS, and can break secure-context requirements.
-
Tailscale IP + port: still not HTTPS by default, so you hit the same issue.
-
Tailscale Serve: gives you the HTTPS URL you actually want, without opening ports to the internet. Trade-off: you need Tailscale installed/signed-in on each device.
If you’re new to Happier (what it is, and where to get it)
If you haven’t seen Happier before: it’s an open-source companion app (mobile/web/desktop) for AI coding agents like Claude Code, Codex, and OpenCode.
The workflow here is: run Happier on a machine you trust, then access it from your phone over a stable HTTPS link.
Get set up:
- How to run Happier from your phone
- GitHub: https://github.com/happier-dev/happier
- Install/download: https://github.com/happier-dev/happier#how-it-works
- Discord (community + support): https://discord.gg/W6Pb8KuHfg
Why HTTPS matters here (the secure-context constraint)
Browsers treat http://localhost as secure, but they don’t treat random http://<ip>:<port> endpoints the same way.
So for remote access, you want HTTPS.
Tailscale Serve solves that in a nice, low-effort way: it gives you an HTTPS URL that’s only available inside your tailnet.
Step-by-step: enable Tailscale Serve for Happier
On the machine running Happier:
- Install Tailscale and sign in.
- Run:
hstack tailscale enable
hstack tailscale url- Copy the URL.
On your phone:
- Install Tailscale and sign in to the same tailnet.
- Open the URL in Safari/Chrome.
Tip: on iOS, you can “Add to Home Screen” in Safari so it feels more app-like.
Automation (optional)
If Serve is already configured, hstack start can prefer the https://*.ts.net URL for canonical/share links.
For self-hosted servers, it can also help to set HAPPIER_PUBLIC_SERVER_URL so deep links and QR codes point to the HTTPS URL.
Troubleshooting
Symptom: the page loads, but things act weird (crypto / auth issues)
Likely cause:
- you’re using plain HTTP over LAN/Tailscale IP instead of HTTPS
Fix:
- switch to Tailscale Serve and use the
https://*.ts.netURL