bin/board-state.sh hard-codes python3, which does not exist on Windows, so the script fails outright.
Environment
- Windows 11, Git Bash
- Python 3.14.7, available as
py and python
python3 is not present (this is normal on Windows — the python.org installer provides py and python, not python3)
Symptom
$ ./barehands/bin/board-state.sh
./barehands/bin/board-state.sh: line 29: python3: command not found
The server was up and healthy at the time; curl http://127.0.0.1:8794/state returned normally.
Cause
Two places call python3 directly:
bin/board-state.sh:25 — reading the port out of barehands.json
bin/board-state.sh:29 — the heredoc that renders the state
Line 25 is harmless because it has a fallback (|| echo 8794). Line 29 has none, so the script dies there.
bin/board.sh has the same bug, currently masked
bin/board.sh:34 calls python3 the same way. It only appears to work because its call has the || echo 8794 fallback and the default port happens to be correct. Change port in barehands.json on Windows and board.sh will silently talk to the wrong port instead of failing loudly — arguably worse than the crash in board-state.sh.
Why this matters beyond the one script
The CLAUDE.md block that the installer appends tells the agent to run board-state.sh before commenting on the board, precisely so it reads the real scene instead of trusting memory. On Windows that instruction cannot be followed at all — the agent's only sanctioned way of seeing the board is broken, and the failure is easy to miss because board.sh keeps working.
Suggested fix
Probe for an interpreter once, trying python3 first so macOS and Linux behaviour is completely unchanged:
PYBIN=$(command -v python3 2>/dev/null || command -v python 2>/dev/null || command -v py 2>/dev/null || true)
if [ -z "$PYBIN" ]; then echo "No Python found (tried python3, python, py)." >&2; exit 1; fi
then use "$PYBIN" in place of python3 in both files.
I am running this locally and it resolves both issues — board-state.sh now returns e.g.:
ON THE BOARD — 1 item(s), last tracker heartbeat:
- the assistant ring @ center
Happy to open a PR if that is useful.
Verified working after the fix
For what it is worth, everything else on Windows checked out end to end once this was patched: camera and hand tracking live, present moving the ring center-stage, and the ring correctly reflecting agent state written to barehands/state/state.
bin/board-state.shhard-codespython3, which does not exist on Windows, so the script fails outright.Environment
pyandpythonpython3is not present (this is normal on Windows — the python.org installer providespyandpython, notpython3)Symptom
The server was up and healthy at the time;
curl http://127.0.0.1:8794/statereturned normally.Cause
Two places call
python3directly:bin/board-state.sh:25— reading the port out ofbarehands.jsonbin/board-state.sh:29— the heredoc that renders the stateLine 25 is harmless because it has a fallback (
|| echo 8794). Line 29 has none, so the script dies there.bin/board.shhas the same bug, currently maskedbin/board.sh:34callspython3the same way. It only appears to work because its call has the|| echo 8794fallback and the default port happens to be correct. Changeportinbarehands.jsonon Windows andboard.shwill silently talk to the wrong port instead of failing loudly — arguably worse than the crash inboard-state.sh.Why this matters beyond the one script
The CLAUDE.md block that the installer appends tells the agent to run
board-state.shbefore commenting on the board, precisely so it reads the real scene instead of trusting memory. On Windows that instruction cannot be followed at all — the agent's only sanctioned way of seeing the board is broken, and the failure is easy to miss becauseboard.shkeeps working.Suggested fix
Probe for an interpreter once, trying
python3first so macOS and Linux behaviour is completely unchanged:then use
"$PYBIN"in place ofpython3in both files.I am running this locally and it resolves both issues —
board-state.shnow returns e.g.:Happy to open a PR if that is useful.
Verified working after the fix
For what it is worth, everything else on Windows checked out end to end once this was patched: camera and hand tracking live,
presentmoving the ring center-stage, and the ring correctly reflecting agent state written tobarehands/state/state.