Quick backstory. At home, HA is great. The moment I leave the wifi it gets annoying.
I had Tailscale for remote access and it works fine, until it doesn’t. Pull into the driveway, phone’s still on LTE, Tailscale is up, or maybe not, who knows. Open the HA app, spinner. Wifi kicks in, the app still hangs on to the old connection. Kill it, reopen, spinner again. And there I am in the car in front of a closed garage door, poking at my phone like it’s 2009. Pretty much the opposite of what I set up home automation for.
Port forwarding on my router? Nope. Nabu Casa just so I can toggle one cover? Didn’t feel right either. And I really didn’t want another VPN that needs to be “up” before anything works.
So I built ha-iroh. Small Android app + a HACS integration, talking over iroh, a peer-to-peer QUIC thing. The phone and your HA each get a keypair, everything is end-to-end encrypted, iroh punches through NAT when it can and goes via a relay when it can’t. The relay only sees ciphertext.
The part that actually fixed my problem: there’s nothing to “connect” first. Open the power menu, tap the garage cover, it opens. The app dials HA on demand over whatever network the phone currently has (wifi, LTE, crappy hotel wifi), and drops the connection when you’re done. Switching networks is a non-issue because there’s no long-lived tunnel to lose in the first place.
What you get
- Device Controls in the Android power menu / quick settings: lights, switches, fans, climate, covers, locks, scenes, scripts, buttons, with live state
- Assist from a quick settings tile or launcher shortcut (text for now, voice is on the list)
- your normal HA dashboard inside the app, log in once, works with any auth provider incl. MFA
- multiple HA instances in one app
- nothing exposed on your router. Pair by scanning a QR code in HA, delete the device in HA to kick the phone out again
What it’s not
Not a replacement for the official app, and not trying to be. No sensors, no location, no notifications, no widgets, no Wear OS, no iOS. I run both: official app for all of that, ha-iroh for the “I’m standing outside and want the thing to happen now” moments.
Where it’s at, honestly
- v0.2.x. I use it daily, so the tester count is roughly one. Expect rough edges.
- Android 12+, arm64 APK via GitHub Releases / Obtainium. Not on Play.
- HA side: HACS custom repo, HA 2026.3 or newer. The integration runs a small Rust bridge as a subprocess, bundled for x86_64 and aarch64, so HA OS / Container / Supervised all work.
- Want lower latency from outside? You can forward one UDP port and iroh goes direct. Totally optional, the relay path works everywhere.
- Two HA settings that can bite you, both in the README:
ip_ban_enabled(the bridge talks to HA from localhost, so a few wrong passwords from any phone lock out 127.0.0.1 = every phone), and never put loopback intotrusted_networks.
Links
- Repo + install guide: https://github.com/pzeinlinger/ha-iroh
- Design doc if you want to know how the pipe works: SPEC.md in the repo
- MIT
- Buy me a coffee if you feel like it: https://buymeacoffee.com/pzeinlinger
Bug reports very welcome, especially from people behind CGNAT, on Fritz!Box / MikroTik, or with unusual HA setups. If it saves you one minute in front of a garage door, mission accomplished.


Cool! I’ll try this. bout the garage door, I’d like to tell you how I do it: a car tracker (Teltonika FMB120 for about 45€), a small push button under the steering wheel, when I push it, it does a curl request to my Node Red instance that, based on the car location, opens the gate of my home, or office or parents. Bonus: the FMB120 can connect to the CAN bus and you can get some telemetry and you can also always locate your car (I use Traccar). It does need a data SIM card, but with 1NCE, you can get one that lasts 10 years and it only costs 10€ (not per month, not per year, for the whole 10 years.)