Skip to content

board-state.sh fails on Windows: hard-coded python3 does not exist there #2

Description

@zxwolfpirexz

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions