HALS (Home Automation & Logging System) is a PowerShell 7 application that inventories and controls smart-home devices through optional provider modules, including UniFi, SmartThings, Home Assistant, Google Nest, Philips Hue, WiZ Pro, Ecobee, and Pushbullet. It includes an interactive console, a local web control panel, and optional AI providers.
Current release: 1.0.11
- Windows with PowerShell 7
- Access to the local devices and provider APIs you configure
- Provider credentials stored locally; never commit real credentials
- Open the latest GitHub Release
- Download
HALS-Setup-1.0.11.exe - Run the installer (no admin rights required)
- Launch HALS from the Start Menu
Default install location: %LOCALAPPDATA%\Programs\HALS
irm https://github.com/PhillyOC/HALS/releases/latest/download/Install-FromGitHub.ps1 | iex- Download
HALS-1.0.11.zipfrom Releases - Unzip anywhere (for example
D:\HALS) - Run
Start-HALS.cmd
git clone https://github.com/PhillyOC/HALS.git
Set-Location HALS
.\Start-HALS.cmdAfter install, use Initialize-HALSDeviceProvider or Initialize-HALSAI to connect platforms and AI. Keep live credentials in a private working copy; do not commit them.
HALSAI behavior is defined in AI\HALSAI-SystemPrompt.txt. HALS injects that prompt automatically on every Ask-HALSAI request and sends it during AI provider setup.
.\Web\Start-HALSWeb.ps1Open http://localhost:8080. The default binding is localhost-only.
The web API can scan networks and control devices and does not currently provide user authentication. Do not bind it to a LAN address or expose it through a tunnel/reverse proxy unless you add an authentication layer and restrict CORS.
- HALS is folder-portable: launch with
Start-HALS.ps1,Start-HALS.cmd, orHALS.ps1from the copy you want to use. Launchers bind the session to that folder, so you can move or copy the tree between drives without editing paths. HALS_ROOTis set automatically for the session. A stale machine/userHALS_ROOTpointing at an old location is ignored when that path is no longer a valid HALS tree.HALS_UNIFI_HOST,HALS_UNIFI_PORT,HALS_UNIFI_SITE,HALS_UNIFI_USERNAME, andHALS_UNIFI_PASSWORDmay be used instead ofSecrets\UniFi.json.Config\AI.jsonselects and configures the AI provider.Secrets\contains local provider credentials and OAuth tokens.Knowledge\andSnapshots\contain private runtime device and network data.
Example files contain placeholders only. Keep local files at their non-.example names so .gitignore excludes them.
Run Initialize-WiZ (or choose WiZ Pro from Initialize-HALSDeviceProvider) and enter the client ID and redirect URI registered with WiZ Pro. HALS opens the OAuth-PKCE authorization page, stores the resulting tokens in Secrets\OAuth\WiZ.json, inventories the authorized building topology, and exposes supported light operations to HALSAI. WiZ Pro credentials are issued by WiZ; this official cloud integration is separate from the undocumented consumer-bulb LAN protocol.
Inside a HALS session:
Remove-HALSAIProvider -Provider Ollama
Remove-HALSDeviceProvider -Provider PhilipsHueAI removal edits Config\AI.json (and deletes it if nothing remains). Device removal deletes that provider's Secrets\*.json / Secrets\OAuth\*.json files. Run HALS afterward to refresh inventory.
- Start Menu → Uninstall HALS, or
- Run
Install\Uninstall-HALS.cmdfrom the install folder, or - Remove the portable folder if you used the zip
See SECURITY.md. If credentials have ever been placed in a copy of this project, rotate them before publishing that copy.
CI parses every PowerShell source file for syntax errors. Provider integrations require local credentials and hardware, so they are not exercised in CI.
.\Scripts\New-HALSPackage.ps1Output lands in dist\:
HALS-1.0.11\— clean portable treeHALS-1.0.11.zip— portable archiveAssets\HALS.ico/Assets\HALS.png— application branding
Requires Inno Setup 6:
.\Scripts\Build-HALSInstaller.ps1This stages the portable tree, compiles dist\HALS-Setup-1.0.11.exe, and copies the bootstrap installer scripts into dist\.
- Ensure
VERSIONmatches the release (currently1.0.11) - Update
ReleaseNotes.mdfor the GitHub release page - Commit and push to
main - Tag and push:
git tag v1.0.11
git push origin v1.0.11The Release workflow builds the zip, compiles HALS-Setup-<version>.exe with Inno Setup, and uploads the assets.
MIT