A two-way Windows companion app for Home Assistant. As a smart-home enthusiast who recently rebuilt my home lab without MQTT, I needed a companion app that works over the native HA WebSocket/REST APIs — and couldn't find one I liked, so I built my own.
| Requirement | Details |
|---|---|
| OS | Windows 10 build 19041 (Version 2004, May 2020) or later |
| Runtime | Windows App SDK — bundled when installed via the Store or MSIX; no separate install needed |
| Home Assistant | Any modern HA instance accessible over HTTP/HTTPS with a Long-Lived Access Token |
Tip
Installing via the Microsoft Store or winget handles all runtime dependencies automatically. For building locally, see recommended dev environment setup.
- System theme support — follows Windows light/dark mode and accent color
- Sensor reporting — publishes PC state to Home Assistant as binary sensors:
- Active — whether the PC has been used within the configured idle threshold
- Camera — whether the webcam is currently in use
- Microphone — whether the microphone is currently in use
- Camera or Microphone — combined sensor (useful for detecting calls/meetings)
- Trigger automations — fire HA webhook automations directly from the app dashboard
- Script bridge — expose
.ps1/.batfiles in theScriptsfolder as Home Assistantinput_buttonhelpers; press the button in HA to run the script on your PC - Optional location tracking — report device location to Home Assistant
- Guided setup wizard — connect to your HA instance with a step-by-step flow; credentials are stored securely with Windows DPAPI
The easiest way to install is via the Microsoft Store or winget:
winget install YAHAA
Tip
The easiest path is to open the solution in Visual Studio and use Debug or Deploy from there. If you haven't set up a Windows development environment before, follow the Windows app development setup guide to install Visual Studio, the Windows App SDK workload, and .NET in one step.
Important
Enable Developer Mode in Windows Settings before installing a locally built MSIX.
1. Clone the repo
git clone https://github.com/CodeNeedsCoffee/YAHAA.git
cd YAHAA2. Build a package
dotnet publish -p:PublishProfile=win-x64 -c Release3. Install the MSIX
Navigate to the publish output folder and run the generated .msix installer.
Note
Contributors don't need to do this. Store submission is handled by the maintainer as part of the release process — see Contributing below. These instructions are here for reference only.
Important
Before building for Store submission, you must reserve your app name in Partner Center and update Package.appxmanifest with the identity values from App management → Product identity:
<Identity Name="<PackageIdentityName>"
Publisher="<PublisherDN>"
Version="1.0.0.0" />
<Properties>
<PublisherDisplayName>Your Display Name</PublisherDisplayName>
</Properties>1. Clone the repo (if not already done)
git clone https://github.com/CodeNeedsCoffee/YAHAA.git
cd YAHAA2. Build the Store upload package
msbuild YAHAA\YAHAA.csproj `
/p:Configuration=Release `
/p:Platform=x64 `
/p:PublishProfile=store-upload `
/p:AppxBundle=Always `
/p:AppxBundlePlatforms="x86|x64|arm64" `
/t:PublishThis uses the store-upload publish profile, which:
- Disables local code-signing (Partner Center signs the package)
- Bundles all three architectures (x86, x64, ARM64) into a single file
- Outputs a
.msixuploadfile ready for Partner Center
3. Locate the output
The .msixupload file will be in:
YAHAA\bin\Release\store-upload\
4. Submit to Partner Center
Upload the .msixupload file under Packages in your Partner Center submission.
Contributions are welcome! Please follow the branch workflow below so releases stay coordinated with the Microsoft Store submission process.
feature/* or fix/* → beta → main
- Open a PR into
beta— all feature branches and fixes targetbeta, notmain. This is where code review and testing happen. beta→mainPR — once a set of changes is ready to ship, a PR frombetaintomainis opened. This PR is not merged until Microsoft finishes processing the Store submission and the build is live.- Store upload — the maintainer handles building the
.msixuploadand submitting it to Partner Center after thebeta→mainPR is opened. You don't need to do anything here.
Important
Do not target main directly in your PRs. Changes merged to main represent what is live in the Microsoft Store.
Found a bug or have a feature request? Open an issue and I'll get back to you as soon as I can.
