Control LeRobot SO-101 from RoboBuddy on GitHub Pages
RoboBuddy on GitHub Pages runs in your browser. It cannot access your SO-101 hardware by itself. To control the robot, run the RoboBuddy local bridge on the same computer that has the SO-101 connected, then connect to that bridge from the GitHub Pages app.
What You Need
- A desktop or laptop computer with the SO-101 connected by USB.
- Chrome or Edge.
- Python 3.12.
- A calibrated LeRobot SO-101 follower.
- RoboBuddy open from GitHub Pages.
Install the Local Bridge
Download or clone the RoboBuddy repository, then open PowerShell in the repository folder.
py -3.12 -m venv .venv-so101
.\.venv-so101\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".\bridge[so101]"
Prepare the SO-101
Find the robot port:
lerobot-find-port
If the motors have not been configured, run setup once with your port:
lerobot-setup-motors --robot.type=so101_follower --robot.port=COM24
Calibrate the robot before browser control:
lerobot-calibrate --robot.type=so101_follower --robot.port=COM24 --robot.id=classroom_so101_01
Replace COM24 with the port shown on your machine.
Start the Bridge
In PowerShell:
.\.venv-so101\Scripts\Activate.ps1
python -m robobuddy_bridge
Leave this PowerShell window open. The bridge listens on:
http://127.0.0.1:8765
The bridge prints a local token when it starts. Keep it nearby. You will enter it in RoboBuddy.
Bridge Token
The bridge token is a local safety token for your computer. It is not an OpenAI key, GitHub token, password, or cloud secret.
- If you start the bridge with
python -m robobuddy_bridge, the token is printed in that PowerShell window. - If you start the bridge with
.\tools\start-so101-bridge.ps1 -Restart, the helper prints the token after the bridge reports ready. - If you restart the bridge, the token can change. Click
Test Bridgeagain and enter the current token. - If a bridge is already running and you did not save its token, close it or restart it so a new token is printed.
- Use
--no-tokenor-NoTokenonly for local development, not for normal robot control from GitHub Pages. - If you intentionally started the bridge without a token, check
No-token localin the Diagnostics panel instead of entering a token. - If
No-token localis checked but the running bridge is still token-protected, RoboBuddy keeps the checkbox checked and blocks Connect. Restart the bridge with--no-tokenor-NoToken, then clickTest Bridge, or uncheckNo-token localand enter the printed token.
Connect from GitHub Pages
- Open RoboBuddy on GitHub Pages in Chrome or Edge.
- Select
LeRobot SO-101 F. - In the Local Bridge panel, click
Test Bridge. - If the browser asks for local network access, allow it.
- Enter the bridge token if RoboBuddy asks for it. If you intentionally started the bridge with
--no-tokenor-NoToken, checkNo-token localinstead. - Select the SO-101 port.
- Click
Connect SO-101. - If RoboBuddy reports
NEEDS_CALIBRATION, run the calibration command shown, then test/connect again. - Check
Arm motion for this sessiononly when the robot is clear to move. - Use the sliders or programs to control the robot.
Safety Notes
- Keep the robot on a stable surface with a clear workspace.
- Do not arm motion until calibration has passed.
- Use STOP immediately if movement is unexpected.
- Do not enter cloud API keys or passwords as the bridge token.
- Close the PowerShell bridge window when finished.
Troubleshooting
Bridge unavailable: start the bridge and confirm it is listening on127.0.0.1:8765.- Browser blocks the request: allow local network access or apps-on-device access for the RoboBuddy page, then click
Test Bridgeagain. Bridge token required: enter the token printed by the currently running bridge. IfNo-token localis checked, the bridge was not actually started in no-token mode; restart it with--no-tokenor-NoToken, then clickTest Bridge.Port list unavailable: install the bridge extras and reconnect the robot USB cable.SO-101 port is busy: close other serial tools, restart the bridge, or replug the robot.LEROBOT_NOT_INSTALLED: install withpython -m pip install -e ".\bridge[so101]".NEEDS_CALIBRATION: run the displayedlerobot-calibratecommand before trying motion again.