Install
openclaw skills install toybridgeControl any BLE toy that has been reverse-engineered and connected via the ToyBridge server. Calls a local HTTP API to send vibrate/stop commands. Requires t...
openclaw skills install toybridgeControl any BLE toy through OpenClaw, as long as you have the ToyBridge server running.
This skill is for devices that are not supported by Buttplug.io/Intiface — devices with proprietary or unknown protocols that you've reverse-engineered yourself using the ToyBridge toolkit.
If your device IS supported by Buttplug.io, use the
intiface-controlskill instead — it's easier.
4-bridge/ble_worker.py for your deviceuv run 4-bridge/server.pySee the full setup guide for step-by-step instructions.
curl -s -X POST http://host.docker.internal:8888/vibrate \
-H "Content-Type: application/json" \
-d '{"intensity": 60}'
intensity: 0–100 (0 = stop)
curl -s -X POST http://host.docker.internal:8888/stop
curl -s http://host.docker.internal:8888/status
If OpenClaw runs natively (not in Docker), replace
host.docker.internalwithlocalhost.
| Range | Feel |
|---|---|
| 1–20 | Gentle |
| 30–50 | Medium |
| 60–80 | Strong |
| 90–100 | Maximum |
| Pattern | What it does |
|---|---|
pulse | Bursts of 80%, 5 times |
wave | Ramp up 20→100%, then back down, x2 |
tease | 30% → 70% → 100%, escalating, then stop |
To run a pattern:
curl -s -X POST http://host.docker.internal:8888/vibrate \
-H "Content-Type: application/json" \
-d '{"pattern": "wave"}'
notify tool — use bash with curlhost.docker.internal with localhost if OpenClaw is not in Docker| Problem | Fix |
|---|---|
connection refused | Make sure uv run 4-bridge/server.py is running |
| Device doesn't respond | Check your device config in ble_worker.py |
| Wrong intensity | Values are clamped to 0–100 |