Documentation

User guide and developer references.

User Guide

Devices & toys

Every toy connection runs in your browser. The server never sees device traffic. Pairings, intensities, and live session data stay between the page and the hardware. Coyote has its own page.

How device control works

Each toy is its own extension. Some pair over Web Bluetooth, some use Web Serial, some hit a cloud API with your key, and some talk to a local helper like Intiface Central over a WebSocket. The flow is the same in every case: install the extension from My Toys, open its detail page, connect a device, and the AI picks up the tools it needs to drive it.

Once a toy is connected, its status icon shows up in the top bar. Click the icon for the quick-control dropdown with current intensity, current pattern, a settings shortcut, and a link to Configure Toys for the full page.

Browser prerequisites

Web Bluetooth

Chrome or Edge on desktop, or Firefox with the flag turned on. HTTPS only. You get a native browser picker when you scan, and the device has to be in pairing mode for it to show up.

Used by Coyote V2/V3, OSSM, and Buttplug (WebBluetooth).

Web Serial

Chrome or Edge only. Firefox and Safari don't implement it. HTTPS only.

Used by EStim Systems 2B over USB serial.

Network

Works in any modern browser. Some integrations need a local helper running on your machine, some hit a vendor cloud with an API key, and a couple use a WebSocket to a device on your LAN.

Used by Lovense, Hismith, The Handy, OpenShock, and Buttplug (Intiface).

Supported families

  • Lovense — vibrators and insertables over Game Mode (Remote app on your LAN).
  • Coyote V2 / V3 — DG-Lab dual-channel e-stim over Web Bluetooth. See the Coyote page for waveforms and packs.
  • OSSM — open-source stroker over Web Bluetooth, with looping programs and live ramping.
  • Hismith — fucking machines over the Remote Play WebSocket using a token from the app.
  • The Handy — cloud stroker, driven through your connection key.
  • OpenShock — shockers via the OpenShock cloud API, with per-shocker safety caps.
  • EStim Systems 2B — four-channel e-stim box over USB serial (protocol courtesy of buttplug.io).
  • Buttplug (Intiface) — broad device coverage through Intiface Central running on your machine.
  • Buttplug (WebBluetooth) — Bluetooth toys driven straight from the browser. Chrome and Edge only.
  • Audio Estim — pleasure and pain samples played through your speakers. No hardware required.
  • Virtual Vibrator — dummy device for testing tool calls and prompt state without anything connected.

Connecting

From My Toys, click into the extension you want and follow its setup. Paste a key, pair over Bluetooth, point at an Intiface address, whatever the extension asks for. When it's ready, the device appears in the top bar. Most extensions have a Test action somewhere on their settings page. Use it before you commit to a scene.

If the connection drops mid-session, the status icon turns gray and any tool calls that would have driven the toy fail loudly rather than silently. Reconnect from the same place you originally paired and the AI picks up where it left off.

Emergency stop

The Toy E-Stop button sits in the top bar and signals every supporting extension to stop immediately. It only appears when all three of the following are true:

  • You have at least one connected toy extension that declares emergency-stop support.
  • Show toy emergency stop in the chat top bar is enabled under Settings → Advanced.
  • You're on a chat route with a persona selected.
Test your e-stop before you rely on it. It is a per-extension signal. If the extension implements it correctly the toy stops; if it doesn't, the toy keeps going. Verify each device at a low intensity before you ever need to count on it.

Playing safely

  • Start every new device at the lowest intensity it offers. Walk it up from there.
  • Keep the e-stop reachable on whichever device you're using. Don't bury the tab.
  • For e-stim, never place electrodes so the current can cross your heart. Don't share electrodes between people.
  • If a session goes somewhere you didn't consent to, the fastest stop is closing the tab. Every connection lives in the page.