WallpaperMachine
The wallpapers you love. A new home on your Mac.
A modern, lightweight Windows companion for Home Assistant: notifications, media control, sensors, commands, and one-click updates.
LifestyleC# · PowerShellGitHub @v1k70rk4OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Modern .NET 10 Windows companion app for Home Assistant with MQTT discovery, tray UI, system sensors, media controls, notifications, and optional Windows service support.
Loading the full README. The saved excerpt is shown below.
A modern Windows companion app for Home Assistant.
⭐ Enjoying HASS.Agent? Please star this repo — and the Home Assistant integration too. It helps others find the project and keeps it going!
☕ If HASS.Agent saved you an evening of tinkering, you can buy me a coffee on Ko-fi. Everything stays free — it just helps cover things like the code signing certificate.Read the full README ↗A modern Windows companion app for Home Assistant.
⭐ Enjoying HASS.Agent? Please star this repo — and the Home Assistant integration too. It helps others find the project and keeps it going!
☕ If HASS.Agent saved you an evening of tinkering, you can buy me a coffee on Ko-fi. Everything stays free — it just helps cover things like the code signing certificate.
HASS.Agent .NET10 began as a fork of the classic HASS.Agent and has grown into a project of its own: a lightweight .NET 10 client built for current Windows desktops. The original client was a .NET 6-era application; this one focuses on a smaller, cleaner runtime, Home Assistant integration via MQTT or WebSocket API, Windows 11-friendly UX, and a split tray app/system service model.
It is designed for Windows PCs you want to observe and control from Home Assistant: media playback, notifications, sensors, shutdown/restart, command buttons, and rich machine state.
The .NET10 line starts at version 10.0.0. The classic client is a separate program: if you want to stay with it, it is still available from its own project, and the integration keeps a legacy branch for it. Thinking about switching? See Coming from HASS.Agent.
Stable: 10.12.0 · Beta: 10.13.0-beta.1 · What changed · Full changelog
Windows versions older than Windows 10 2004 are intentionally blocked. The app targets net10.0-windows10.0.19041.0 and uses modern Windows APIs for notifications, media sessions, services, sensors, and desktop state.
If you download a published self-contained build, you do not need to install the .NET runtime separately. If you want to build from source, install the .NET 10 SDK.
Install the Home Assistant integration, v1k70rk4/HASS.Agent.NET10-Integration. It is in the Marketplace (HACS in Home Assistant before 2026.11), so no custom repository is needed: open Settings → Marketplace, search for HASS.Agent (or use the button), download it and restart Home Assistant.
Install the Windows app with winget:
winget install v1k70rk4.HASSAgentNET10
Or download the signed installer from Releases (see Code Signing), or build from source.
Run the installer or start HASS.Agent.NET10.exe directly.
Open the tray icon and go to settings.
On the MQTT page, enable MQTT and enter your broker address and credentials. Whoever can log in to the broker can send this PC commands, so keep that login to yourself (more). Alternatively, on the HA API page, enable the WebSocket connection to Home Assistant (useful for remote access via Nabu Casa or when no MQTT broker is available).
On the Capabilities page, choose which features are handled by the tray app vs. the service.
On the Sensors page, enable built-in sensors and add custom sensors.
Optionally install the Windows service from the Service page.
On MQTT the PC turns up on its own under Discovered in Settings → Devices & services of Home Assistant; click Add there. Over the HA API the first PC is added by hand, with the button below and then ; once the integration has a device, further PCs on the HA API are discovered as well.
The integration creates the Home Assistant entities from what the agent advertises, so what you switch on or off in the settings appears and disappears there on its own.
The setup package is built with Inno Setup. It is also what winget installs and upgrades (winget install v1k70rk4.HASSAgentNET10, winget upgrade v1k70rk4.HASSAgentNET10). winget runs it without its wizard pages, showing only the progress, so the options below keep their defaults on a first install (start on login on, the rest off) and their earlier choices on an upgrade; add --interactive to go through the wizard. Options during install:
The installer automatically configures a Windows Firewall rule (Private profile, TCP port 5115) for the Local HTTP API, so manual firewall setup is not needed if you turn that on (it is off by default).
During upgrades the installer stops the running tray app, stops the system service if installed, replaces the files, reinstalls/starts the service, and restarts the tray app. On uninstall the firewall rule is removed automatically, and you are asked whether the settings (with the tokens and passwords in them) should go too.
| What it does | Details | |
|---|---|---|
| Notifications | Home Assistant notifications as Windows notifications or in the app's own always-visible window, with pictures, buttons and text fields; what is pressed and typed comes back to Home Assistant as an event. | Notifications |
| Media player | The active Windows media session as a media_player: title, play / pause, skip, seek, volume, cover art, TTS and announcements; its own page in the app. | Media Player |
| Sendspin player | The PC as a player of Music Assistant, in sync with the other players of its group; off until turned on, on the Media player page. | Sendspin player |
| Sensors | Built-in system sensors (CPU, memory, drives, network, battery, session, GPU, camera and microphone in use, and more), each with its own polling profile. | Sensors |
| Custom sensors | Your own: a process, a service, a drive, an attribute of a built-in sensor, the output of a command or script, a LibreHardwareMonitor value. | Custom Sensors |
| System commands | Lock, sleep, monitor off, volume, shutdown, restart as buttons and a service call; Hibernate and Log off (off by default). | System Commands |
| Custom commands | Your own buttons: programs, PowerShell scripts, key presses, links, popup windows. | Custom Commands |
The full documentation is the website, v1k70rk4.github.io/HASS.Agent.NET10, built from the pages under docs/:
Starting with 10.6.8, the release assets (HASS.Agent.NET10-Setup-<version>.exe, its uninstaller, and HASS.Agent.NET10.exe in the zip) are signed with a Certum Open Source code signing certificate:
| Issued to | Open Source Developer Viktor Révész |
| Issued by | Certum Code Signing 2021 CA |
| SHA-1 thumbprint | 0C09522639318AF1069507568599DFC5B7F86EE4 |
| Timestamp | time.certum.pl (the signature stays valid after the certificate expires) |
To check a download, open its Properties → Digital Signatures tab, or from the Windows SDK:
signtool verify /pa /v HASS.Agent.NET10-Setup-10.6.8.exe
Signing happens on the maintainer's machine through SimplySign, unlocked with a one-time code from the SimplySign app; the private key lives in Certum's cloud HSM and is never exported. The GitHub Actions build itself is unsigned — the signed files replace its assets on the release. A certificate this new has no SmartScreen reputation yet, so Windows may still show a "Windows protected your PC" prompt for a while; the publisher name on that prompt is what confirms the file is genuine.
From 10.9.0 on, every release also carries a Sigstore signature per asset (<asset>.sigstore.json). A workflow of this repository makes it once the release is out: it checks that the file carries the Certum signature above, then signs it with the workflow's GitHub identity, without any key to keep. It shows that the file is the one this repository published, and it can be checked on any system with cosign:
cosign verify-blob HASS.Agent.NET10-Setup-<version>.exe \
--bundle HASS.Agent.NET10-Setup-<version>.exe.sigstore.json \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp '^https://github\.com/v1k70rk4/HASS\.Agent\.NET10/\.github/workflows/sign-release\.yml@'
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
HASS.Agent .NET10 communicates only with:
api.github.com / github.com), to check for application updates and download release assets.No telemetry, analytics, or usage data is collected or transmitted.
Beta. Out on the beta channel: tick Beta updates on the Danger Zone page to be offered the beta, or take it from the releases page. The current stable release is 10.12.0, below.
The first beta of 10.13.0: the PC as a Sendspin player of Music Assistant. Works with the Home Assistant integration 10.6.7 or newer; there is no new integration with this one. Signed release.
HASS.Agent.NET10.exe --sendspin-token gives the pairing token on the command line. Needs Music Assistant 2.10.7 or newer; the player's entity in Home Assistant comes from Music Assistant's own integration. See Sendspin player.A release for people coming from the classic HASS.Agent: the app takes over its settings. With it, the dashboard popup keeps its zoom, an uninstaller that stops the app, the service's update notes in the registry, and Russian. Works with the Home Assistant integration 10.6.7 or newer; the notice in Home Assistant for a PC on the old client is fixed in the integration 10.12.0, out at the same time. Built on the same .NET 10.0.14 as 10.11.0. Signed release.
Coming from the classic HASS.Agent
Translations
Also in this release
A bigger release: kiosk mode, for a PC where the person in front of the screen must not change anything; German, and the kiosk texts in Simplified Chinese; a media player that cannot start no longer takes the connection down; and the .NET security update of October. Works with the Home Assistant integration 10.6.7 or newer. Signed release.
Kiosk mode
HASS.Agent.NET10.exe --kiosk on USER [USER ...] / --kiosk off. See Kiosk mode. Requested in #155.--kiosk off), and the full app is back from the next logon. In the window you cannot tick yourself, as it would lock your own app; the command line lets you name yourself, on purpose.Translations
Also in this release
Security
Older versions are in the changelog.
This is a project of its own, not the original LAB02 release line, and it is not affiliated with it. It began as a fork of HASS.Agent and has been developed independently since.
The goal is a focused Windows/Home Assistant companion that keeps the useful HASS.Agent ideas, drops legacy weight, and is built around .NET 10, MQTT or the HA API, and a tray app/service split. The classic client stays with its own project; the integration keeps a legacy branch for it.
MIT
| Dashboard popup | A Home Assistant dashboard, or any web page, in a small window above the tray. | Dashboard Popup |
| Display and audio | The screen as a light in Home Assistant, the default audio device as a select, the volume of a single app. | Display and Audio |
| Hotkeys | A named key combination becomes an event in Home Assistant, to start automations from the keyboard. | Hotkeys |
| Windows service | The same program as a system service, for what should work with nobody logged in. | Windows Service |
| Updates from Home Assistant | An update entity with a working Install button; silent when the service is installed; only installers signed by the publisher are run. | Updating |
| Who may use it | The settings, with the Home Assistant token and the commands, for every user of the PC or only for the ones you tick. | Who May Use It |
| Kiosk mode | The tray app runs for the users of a kiosk PC, who cannot open, change or close it; it comes back when it is closed. | Kiosk Mode |
| Danger Zone | Opt-in toolbox: MQTT cleanup, live monitor, debug log, backup / restore, factory reset, beta updates. | Danger Zone |
| Connection | MQTT, the Home Assistant WebSocket API, or both with automatic failover; a notification-only local HTTP API as a fallback. | Connection Modes |