hapbeat-helper is a local daemon that bridges Hapbeat Studio (Web) and Hapbeat devices (Wi-Fi LAN). It relays mDNS discovery, UDP broadcast, and raw TCP — operations a browser cannot perform on its own.
Browser (https://studio.hapbeat.com/)
│ ws://localhost:7703 (JSON)
▼
hapbeat-helper ← this CLI
│ UDP 7700 (PLAY / STOP / PING / streaming)
│ TCP 7701 (config / kit deploy)
│ mDNS (_hapbeat._udp.local.)
▼
Hapbeat device (same LAN)
If the Studio does not show “Helper connected” (green badge), Helper is either not running or port 7703 is blocked.
pipx not recognized — even after restarting the terminal, use py -m pipx install hapbeat-helper as an equivalent alternative.
OneDrive-synced home directory (C:\Users\<you>\ synced by OneDrive) may cause pipx install to fail with WinError 448 untrusted mount point. In that case, move pipx’s storage outside OneDrive:
Run this command once and Helper starts immediately — then restarts automatically every time you log in. Studio will be connected as soon as you open it.
hapbeat-helperinstall-service
You will see output like this right away (no re-login needed):
Task Scheduler (HapbeatHelper task) with a powershell.exe -WindowStyle Hidden action. No VBScript — works on Windows 11 24H2+. stdout/stderr → %LOCALAPPDATA%\hapbeat-helper\hapbeat-helper.log
To check the registration status:
hapbeat-helperservice-status
To remove auto-start:
hapbeat-helperuninstall-service
⚠️ Always run hapbeat-helper uninstall-servicebefore running pipx uninstall hapbeat-helper. If the entry is left behind after the binary is removed, you will get a “command not found” error on the next login.
For details on how auto-start behaves, PC impact, and security risks, see Security & Behavior. Read it before using Helper on a public Wi-Fi network.
Open https://studio.hapbeat.com/ in your browser. If the Helper connection status at the top of Studio shows green “Helper connected”, the connection is working.
To verify from the command line:
hapbeat-helperstatus# checks if a daemon is responding on port 7703
hapbeat-helperversion# shows the installed version
# 1. Stop the current Helper ← required (see "forgot to stop" section below)
hapbeat-helperstop
# 2. Upgrade to the new version
pipxupgradehapbeat-helper
# 3. Verify the version
hapbeat-helperversion
# 4-a. If using auto-start: re-register to start immediately
hapbeat-helperinstall-service
# 4-b. If you want to verify in foreground first
hapbeat-helperstart
macOS note: hapbeat-helper stop uses KeepAlive=true, so sending SIGTERM causes launchd to respawn immediately (effectively a restart). For a clean update, use hapbeat-helper uninstall-service → upgrade → hapbeat-helper install-service.
If Studio’s log drawer shows ERROR: unknown type: <message>, Helper is out of sync with Studio. Update using the steps above.
Running pipx upgrade / pipx uninstall while the auto-start Helper is still resident behaves differently per OS. Follow the OS-specific recovery steps below.
Windows: fails with PermissionError: Access is denied
The .pyd files inside site-packages (e.g. websockets/speedups.cp312-win_amd64.pyd) are locked by the helper process, so pipx’s uninstall (which renames files to trash) fails. This leaves pipx in a half-uninstalled state with the process still alive.
# 6. Re-register auto-start pointing to the new venv path
hapbeat-helper install-service
If Stop-Process reports Cannot find a process with the process identifier <PID>, it simply means the task already died from schtasks /End before Stop-Process ran. This is a harmless race condition.
macOS: pipx succeeds but the old daemon keeps running
On Unix, a running executable can be deleted (the inode lives until the process closes it), so pipx uninstall / pipx upgradecompletes without errors. However, the launchd job holding the old code keeps running, leaving Studio in a state where the version was updated but behavior is still from the old binary.
Recovery:
# 1. Unload the launchd job (also stops the process, no respawn)
Run hapbeat-helper install-service for auto-start, or run hapbeat-helper start in a terminal. Check whether port 7703 is in use by another process (lsof -i :7703 / Windows: netstat -ano | findstr :7703)
Cannot connect to ws://localhost:7703 (Firefox)
Go to about:config → set network.websocket.allowInsecureFromHTTPS to true. Not needed in Chrome / Edge
Device does not appear in the sidebar
Confirm Helper and Hapbeat are on the same Wi-Fi LAN. Some hotspot / AP modes block UDP broadcast and mDNS
Port 7700 or 7703 already in use
Check for a duplicate Helper instance. Run hapbeat-helper service-status; if running, stop with hapbeat-helper stop and restart. If another process owns the port, use lsof -i :7703 (macOS) or netstat -ano | findstr :7703 (Windows) to find its PID and close that app
Windows: Helper does not auto-start after login
On Windows 11 24H2+, VBScript is disabled by default, so old VBS shims in the Startup folder do not run. Run hapbeat-helper uninstall-service → hapbeat-helper install-service to switch to the Task Scheduler method
Windows: pipx uninstall / pipx upgrade fails with PermissionError
The auto-start Helper process is locking .pyd files. Always run hapbeat-helper stop before updating. For recovery after forgetting to stop, see the “Forgot to stop before upgrade / uninstall” section above
macOS 14 (Sonoma) or later: Wi-Fi scan returns nothing
airport -s has been deprecated, so Helper’s SSID auto-detection may not work. Enter the SSID manually in Studio’s Wi-Fi settings (the password field works normally)
USB Serial write does not work on Mac
Confirm the device appears as /dev/cu.usbmodem* (ls /dev/cu.*). If it does not appear, check that your USB-C cable supports data transfer (charge-only cables will not work)
Ctrl+C has no effect on macOS
The Helper registered with install-service runs in the background; there is no foreground process in your terminal. Use hapbeat-helper stop to stop it
hapbeat-helper stop on macOS caused an immediate restart (old version)
Old versions used kickstart -k (SIGTERM → immediate respawn). The current version uses bootout for a proper stop. Run pipx upgrade hapbeat-helper to update