Local daemon bridging Hapbeat Studio (web) to Hapbeat devices
Project description
hapbeat-helper
Local daemon that bridges Hapbeat Studio (Web SPA at https://devtools.hapbeat.com)
to Hapbeat hardware on the local network.
The browser cannot do mDNS, UDP broadcast, or raw TCP sockets directly.
hapbeat-helper runs in the background, exposes a WebSocket on
ws://localhost:7703, and relays Studio requests to the devices using
UDP (port 7700) and TCP (port 7701).
Studio (https://devtools.hapbeat.com)
│ ws://localhost:7703 (JSON)
▼
hapbeat-helper (this daemon)
│ UDP 7700 (PLAY / STOP / PING / streaming)
│ TCP 7701 (config / kit deploy)
│ mDNS (_hapbeat._udp.local.)
▼
Hapbeat devices
Install
hapbeat-helper is distributed as a Python CLI that runs in its own
isolated environment. The recommended installer is pipx — it puts
each Python tool in a separate venv and exposes the entry point on your
PATH, so you don't need to think about Python versions or dependency
conflicts.
Step 1 — Install pipx (once per machine)
macOS
brew install pipx
pipx ensurepath
Windows
py -m pip install --user pipx
py -m pipx ensurepath
# Close and reopen your terminal so the new PATH takes effect.
pipx --version # should print the version
Windows tip: if
pipxis still "not recognized" after reopening the shell, usepy -m pipx ...for everything below (it works identically). The barepipxcommand becomes available once%APPDATA%\Python\Python3xx\Scriptsis on yourPath.OneDrive / cloud-synced home directory: if your
C:\Users\<you>\is synced by OneDrive, pipx may fail withWinError 448 — untrusted mount point. Move pipx out of the synced tree by setting these environment variables (User scope) and reopening the shell:[Environment]::SetEnvironmentVariable('PIPX_HOME', 'C:\pipx\home', 'User') [Environment]::SetEnvironmentVariable('PIPX_BIN_DIR', 'C:\pipx\bin', 'User')
Step 2 — Install hapbeat-helper
Once pipx is on your PATH:
pipx install hapbeat-helper
That's it. hapbeat-helper will be available in any new terminal.
Local development (from a clone of this repo)
# editable install via pipx (changes in src/ are picked up live)
pipx install -e .
# or — preferred during active dev — a plain venv:
python -m venv .venv
# macOS:
.venv/bin/pip install -e ".[dev]"
.venv/bin/hapbeat-helper start
# Windows:
.venv\Scripts\pip install -e ".[dev]"
.venv\Scripts\hapbeat-helper start
Updating
pipx upgrade hapbeat-helper
If you installed editable from a clone (pipx install -e . or
pip install -e ".[dev]"), updates are automatic — just git pull and
restart the daemon. The Python package picks up changes in src/ on
the next process start.
WS protocol mismatch? When Studio reports
ERROR: unknown type: <message>in the log drawer, your helper is older than the Studio build.git pull && restart(orpipx upgrade).
Uninstalling
pipx uninstall hapbeat-helper
Run
Option A — Auto-start service (recommended)
Register hapbeat-helper as an OS-level service so it starts automatically every time you log in. After this one-time setup you never need to open a terminal again:
hapbeat-helper install-service
To check the registration state:
hapbeat-helper service-status
To remove the auto-start registration:
hapbeat-helper uninstall-service
Platform notes:
- macOS — creates
~/Library/LaunchAgents/com.hapbeat.helper.plist(launchd) - Windows — drops a hidden VBS shim into the Startup folder (
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\hapbeat-helper.vbs) that launches the daemon at login with no console window. stdout/stderr →%LOCALAPPDATA%\hapbeat-helper\hapbeat-helper.log
Option B — Foreground (dev / debug)
hapbeat-helper start
Then open https://devtools.hapbeat.com — Studio will connect automatically.
Press Ctrl+C to stop.
Other commands
hapbeat-helper status # check whether a daemon is reachable on 7703
hapbeat-helper version # print version
hapbeat-helper config show # show config path
Verify
Quick smoke test using websocat:
echo '{"type":"ping","payload":{}}' | websocat ws://localhost:7703
echo '{"type":"list_devices","payload":{}}' | websocat ws://localhost:7703
Troubleshooting
-
Studio reports "Helper 未接続" — run
hapbeat-helper install-service(once) or start manually withhapbeat-helper start. -
Browser cannot connect to
ws://localhost:7703from HTTPS Studio — Chrome and Edge allow this by default. Firefox requiresnetwork.websocket.allowInsecureFromHTTPS = trueinabout:config. -
No devices found — confirm the Hapbeat devices and this PC are on the same Wi-Fi network. Some hotspot/AP modes block UDP broadcast and mDNS.
-
Port 7700 / 7703 already in use — stop any running
hapbeat-manager(it owns the same ports). The two cannot run at the same time. -
Windows:
pipx installfails withWinError 448 — untrusted mount point— your home directory is under OneDrive (or another reparse point). pipx finished installing the package but cannot finalize the shim under~/.local/bin/. Either runhapbeat-helper.exefrom that path directly, or relocate pipx outside the synced tree:[Environment]::SetEnvironmentVariable('PIPX_HOME', 'C:\pipx\home', 'User') [Environment]::SetEnvironmentVariable('PIPX_BIN_DIR', 'C:\pipx\bin', 'User') # Reopen the shell, then: py -m pipx ensurepath py -m pipx install hapbeat-helper
-
pipxnot recognized afterpip install --user pipx— the user Scripts dir is not onPathyet. Runpy -m pipx ensurepathand open a new terminal. As a fallback, everypipx Xcall also works aspy -m pipx X.
ドキュメント
公式ドキュメントは https://devtools.hapbeat.com/docs/helper/ を参照してください。 インストール手順 / CLI リファレンス / セキュリティ解説などをまとめています。
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hapbeat_helper-0.1.4.tar.gz.
File metadata
- Download URL: hapbeat_helper-0.1.4.tar.gz
- Upload date:
- Size: 60.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9eb0adceff9d483577f12f6033facea89783c81747f37b2581bbac2131202b8a
|
|
| MD5 |
9f112eea7b108787c92f9840ee8a80d0
|
|
| BLAKE2b-256 |
e23a79d098f55f2efadfebf50496a4b4d82c4879ab703de22a90acc1bd6fa8e0
|
Provenance
The following attestation bundles were made for hapbeat_helper-0.1.4.tar.gz:
Publisher:
publish.yml on hapbeat/hapbeat-helper
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hapbeat_helper-0.1.4.tar.gz -
Subject digest:
9eb0adceff9d483577f12f6033facea89783c81747f37b2581bbac2131202b8a - Sigstore transparency entry: 1840631005
- Sigstore integration time:
-
Permalink:
hapbeat/hapbeat-helper@73fbbbc70a88327eb81de7f1c4eab017b497275a -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/hapbeat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@73fbbbc70a88327eb81de7f1c4eab017b497275a -
Trigger Event:
push
-
Statement type:
File details
Details for the file hapbeat_helper-0.1.4-py3-none-any.whl.
File metadata
- Download URL: hapbeat_helper-0.1.4-py3-none-any.whl
- Upload date:
- Size: 59.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e516356619a15931e221511e47d38b8edcff1d936107d247b541a747cadc7fd9
|
|
| MD5 |
e1f3d23e82f660b6e7c48e81f8e27f1a
|
|
| BLAKE2b-256 |
8198680c484415b7c3af83f88c42481a17c8c3116a99e430d8a1757100cf345f
|
Provenance
The following attestation bundles were made for hapbeat_helper-0.1.4-py3-none-any.whl:
Publisher:
publish.yml on hapbeat/hapbeat-helper
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hapbeat_helper-0.1.4-py3-none-any.whl -
Subject digest:
e516356619a15931e221511e47d38b8edcff1d936107d247b541a747cadc7fd9 - Sigstore transparency entry: 1840631041
- Sigstore integration time:
-
Permalink:
hapbeat/hapbeat-helper@73fbbbc70a88327eb81de7f1c4eab017b497275a -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/hapbeat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@73fbbbc70a88327eb81de7f1c4eab017b497275a -
Trigger Event:
push
-
Statement type: