Skills venus-ble-vibrator

Control a Venus (Cachito) BLE vibrator from natural language. Calls a local HTTP server that broadcasts BLE commands to the toy via macOS CoreBluetooth. Requires hardware setup — see the ToyBridge repo before installing.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/amandaclarke61/venus-ble-vibrator" ~/.claude/skills/openclaw-skills-venus-ble-vibrator && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/amandaclarke61/venus-ble-vibrator" ~/.openclaw/skills/openclaw-skills-venus-ble-vibrator && rm -rf "$T"
manifest: skills/amandaclarke61/venus-ble-vibrator/SKILL.md
source content

Venus BLE Vibrator Control

Control a Venus / Cachito (小猫爪) BLE vibrator using natural language through OpenClaw.

This is a device-specific skill for Cachito-protocol toys. If your device is supported by Buttplug.io, use the

intiface-control
skill instead — no reverse-engineering needed.

macOS only. The server uses CoreBluetooth.


Setup

Follow the ToyBridge setup guide — complete Steps 1–3 (discover device ID, configure, verify locally), then start the server:

uv run 4-bridge/server.py

Leave this terminal open. The server runs on port 8888.


Commands the agent will use

Vibrate at intensity

curl -s -X POST http://host.docker.internal:8888/vibrate \
  -H "Content-Type: application/json" \
  -d '{"intensity": 60}'

intensity
: 0–100 (0 = stop)

Stop immediately

curl -s -X POST http://host.docker.internal:8888/stop

Check status

curl -s http://host.docker.internal:8888/status

If OpenClaw runs natively (not in Docker), replace

host.docker.internal
with
localhost
.


Intensity guide

RangeFeel
1–20Gentle
30–50Medium
60–80Strong
90–100Maximum

Preset patterns

PatternWhat it does
pulse
Bursts of 80%, 5 times
wave
Ramp up 20→100%, then back down, x2
tease
30% → 70% → 100%, escalating, then stop

Example: "Run the wave pattern" or "Give me a 30-second tease session"


Agent rules

  • Always stop (intensity 0) after a timed session unless user says to keep going
  • Do not use the
    notify
    tool — use
    bash
    with
    curl
  • Replace
    host.docker.internal
    with
    localhost
    if OpenClaw is not in Docker

Troubleshooting

ProblemFix
BT not ready
error
Check Bluetooth is on, grant permission in System Settings → Privacy
connection refused
Make sure
uv run 4-bridge/server.py
is running
Device doesn't respondDouble-check
DEVICE_ID
in
4-bridge/ble_worker.py
matches your Cachito controller
Wrong intensityValues are clamped to 0–100