Native Windows 11 app · Free and open source

Home Assistant, one hotkey away.

Press Win Ctrl H — or any combo you pick — and your home slides in over whatever you are doing: live tiles, shortcuts, your real Lovelace dashboards.

PowerShell
irm https://raw.githubusercontent.com/Elias0505/ha-companion-windows/main/install.ps1 | iex

Per-user install, no admin rights needed, about a minute. Run the same line again any time to update — your settings are kept.

The HA Companion quick panel slid in over a Windows 11 desktop, showing live Home Assistant tiles.
One hotkey, anywhere in Windows — Home Assistant slides in over whatever you are doing.

At a glance

Actually native

WinUI 3 and .NET 9. Not Electron — only the Lovelace view uses WebView2.

Free, and open

AGPL-3.0. Every release is built by GitHub Actions from this source.

No cloud in between

It talks to your Home Assistant directly. No account, no relay, no telemetry.

No MQTT, no YAML

It uses Home Assistant's own mobile_app API. Nothing to set up in HA.

What you get

Everything the app does, grouped.

One panel, both directions, and a lot of boring reliability work underneath.

The quick panel

One hotkey in, same hotkey out.

  • Slides over anything — even full-screen games
  • Tiles auto-detected from your entities, zero setup
  • Drag, resize 1×1–4×3, right-click for brightness / temperature / volume

Always one keystroke away

Invisible until you need it.

  • Any key combo → any device, scene or script
  • OSD toast confirms what really happened, live from HA
  • Ctrl K in the panel: type, Enter, done

Windows ⇄ Home Assistant

Both directions. No MQTT, no YAML.

  • WHEN the PC locks → ONLY IF after 22:00 → THEN lights off
  • Your PC becomes a real HA device — 11 sensors, opt-in
  • HA sends toasts with buttons + seven permission-gated commands

Feels like Windows, because it is

WinUI 3 + .NET 9 — native, not Electron.

  • Mica window, Fluent dark UI, real Windows toasts
  • Your Lovelace dashboards 1:1, already signed in
  • Seven UI languages, switchable live — Arabic fully right-to-left
  • English
  • Deutsch
  • Español
  • Français
  • 中文
  • हिन्दी
  • العربية

Live, and it stays live

Push, not polling.

  • State changes arrive over WebSocket, instantly
  • Reconnects on wake and network return — by itself
  • Tiles go visibly unavailable instead of lying

Built to be trusted

Boring on purpose.

  • Token encrypted with Windows DPAPI, never plain text
  • Backup without secrets, diagnostics with the token redacted
  • 300+ unit tests, warnings-as-errors

Explore the app

Six tabs, no clutter.

Real screenshots from a real Home Assistant instance — same order as the app's own navigation.

The Start page with favourite tiles, category filters and live entity tiles.
Favourites, category filters, a live tile for every actionable entity — plus pinnable sensor tiles.
A Lovelace climate dashboard rendered inside the app.
Your real Lovelace dashboards, rendered 1:1 in a native window and already signed in.
The Shortcuts tab, where key combinations are bound to entities.
Bind any key combination to any device, scene or script — with an OSD toast that confirms what actually happened.
The Automations tab showing Windows-event rules.
WHEN a Windows event, ONLY IF your conditions hold, THEN Home Assistant acts. Named, testable, no YAML.
The My PC tab with sensor states and command permissions.
Your PC as a Home Assistant device: 11 live sensors, local notification rules, and per-command permissions.
The Settings page with connection, quick panel, language and backup cards.
One page: connection, quick panel, language, autostart, opt-in PC sensors and backup — diagnostics and the factory reset live just below.

All screenshots, with notes → docs/SCREENSHOTS.md

The part other clients don't have

Your PC is a device, not just a viewer.

Most companions let you look at your home. This one lets your home and your PC react to each other — over Home Assistant's own mobile_app API, so there is no broker to run and nothing to write in YAML.

Windows → Home Assistant

Built in the app, in a form that looks like the rule you were going to describe out loud:

WHENThe PC is locked
ONLY IFIt is after 22:00
THENTurn off the desk light, arm the alarm

Triggers include lock and unlock, sleep and resume, idle, shutdown, full-screen apps, the microphone or camera going live, and a schedule. Every rule can be tested with one click.

Home Assistant → Windows

Switch on Report PC state and your PC registers itself as a device. Then this works from any HA automation:

service: notify.mobile_app_my_pc
data:
  title: "Doorbell"
  message: "Someone is at the door"
  data:
    actions:
      - action: "OPEN"
        title: "Unlock"

Toasts with action buttons come back as HA events. command_lock, command_sleep and five more control the PC — each behind a permission switch in My PC (volume and mute share one), and the risky ones (sleep, shutdown, launch) stay off until you enable them.

Get it

Install it in one line.

Paste this into PowerShell. It installs everything needed and launches the app — no admin rights, no Visual Studio, no setup wizard.

irm https://raw.githubusercontent.com/Elias0505/ha-companion-windows/main/install.ps1 | iex
What does this command actually do?

It downloads install.ps1 from this repository and runs it. The script checks your Windows build, installs the Microsoft WebView2 Runtime via Microsoft's own bootstrapper if it is missing, copies a self-contained build to %LOCALAPPDATA%\Programs\HaCompanion, adds a Start-menu shortcut and an entry under Settings → Apps → Installed apps, and starts the app.

The app itself needs no administrator rights and writes nothing outside your user profile; only the one-time WebView2 Runtime install (Windows 10 without it) may show a UAC prompt. It also does not touch your PowerShell execution policy — the piped install command is not subject to it, so this line needs no -ExecutionPolicy Bypass. (Only the uninstaller, which Windows starts as a script file, runs with a per-process bypass; your stored policy is never changed.) Read the script first if you like — it is plain PowerShell: install.ps1.

Updating, uninstalling, starting over

Update — run the same line again. Your settings, tiles, shortcuts and rules are kept.

Uninstall — Settings → Apps → Installed apps → HA Companion for Windows → Uninstall. It removes the program folder, the Start-menu shortcut, the autostart entry and the notification registration, and asks once whether your settings and token should go too.

Start over — no uninstall needed: Settings → Reset to factory settings wipes the configuration, token, tiles, rules and logs and restarts the app in its first-run state.

Two things it deliberately leaves alone: the mobile_app device inside Home Assistant (only HA can delete that) and the WebView2 runtime (other apps share it).

After installing

  1. Open Settings and enter your Home Assistant URL — or hit the search button and let mDNS find it.
  2. Paste a long-lived access token. It is encrypted with Windows DPAPI and never stored in plain text.
  3. Press Win Ctrl H — or pick your own combination in Settings.

Requirements

Windows
Windows 11, or Windows 10 version 2004 (build 19041) or newer. x64.
Home Assistant
Any reachable instance plus a long-lived access token, created under your HA profile.
Also installed
Microsoft Edge WebView2 Runtime — already present on Windows 11; the installer adds it if missing.
Not needed
No admin rights, no MQTT broker, no add-on, no YAML, no cloud account.

Prefer a ZIP? Download the latest release.
Self-contained — the .exe bundles .NET 9 and the Windows App SDK.

Licensing

Open source, and it stays that way.

AGPL-3.0 is a deliberate choice, not a default: it keeps this code from being taken, closed and resold.

AGPL-3.0-only

Use it, study it, share it, change it. If you distribute it or run a modified version as a network service, your complete corresponding source has to be available under the AGPL too.

Commercial licence

Want to use this inside a closed-source or commercial product without the copyleft obligations? That needs a separate agreement — get in touch.

Contributing

Issues and pull requests are welcome. Contributions are signed off (DCO) and dual-licensed so the commercial option above stays possible.

Questions

Before you paste that command.

Is this an official Home Assistant app?

No. It is an independent client “for Home Assistant”, not affiliated with or endorsed by the Home Assistant project or Nabu Casa. “Home Assistant” is a trademark of its respective owners.

Do I need MQTT, an add-on or YAML?

No. The app uses Home Assistant's own mobile_app API, the same one the official phone apps use. There is nothing to install or configure inside Home Assistant — you only create a long-lived access token.

Does anything go to a cloud?

No. The app talks to the Home Assistant URL you enter and to nothing else. There is no account, no relay server and no telemetry. This website has no analytics and makes no third-party requests either.

Why does Windows SmartScreen warn me?

Because the binary is not code-signed yet — a certificate is a recurring cost for a free project. Click “More info” → “Run anyway”. Every release is built in public by GitHub Actions from this repository, and the installer is a readable PowerShell script.

Where is my access token stored?

In %LOCALAPPDATA%\HaCompanion\settings.json, encrypted with the Windows Data Protection API (DPAPI) and bound to your Windows user account. It is never written in plain text, and it is excluded from the backup export and the diagnostics report.

Does it work with a remote or HTTPS instance?

Yes — any URL the PC can reach, including HTTPS behind a reverse proxy or Nabu Casa. For a self-signed certificate there is an explicit “ignore certificate errors” switch, off by default.

What exactly does the installer put on my PC?

A self-contained build in %LOCALAPPDATA%\Programs\HaCompanion, a Start-menu shortcut, and one entry under Settings → Apps → Installed apps so Windows can uninstall it properly. Settings live separately in %LOCALAPPDATA%\HaCompanion.

No services, no drivers, no scheduled tasks, nothing outside your user profile — and no administrator rights for the app itself (only a missing WebView2 Runtime may trigger one UAC prompt).

How do I uninstall it, or start over?

Settings → Apps → Installed apps → HA Companion for Windows → Uninstall. It asks once whether your settings and token should be removed too. If you only want a clean slate, Settings → Reset to factory settings inside the app does that without uninstalling. The mobile_app device in Home Assistant has to be deleted in Home Assistant.

Is it really free?

Yes, under AGPL-3.0-only, with no paid tier, no ads and no data collection. A separate commercial licence exists only for people who want to build closed-source products on this code.

Support

Keep the commits coming.

You’re not joining for exclusive content, secret files, or special treatment.

You’re joining because you want more of my GitHub projects to exist.

Your support goes straight into fueling more code, more random repositories, more late-night commits, and more unfinished experiments that somehow still end up public.