Use Velvet toys with Intiface
Intiface Central is the free hub app behind Buttplug.io, the open-source toy-control project. Hundreds of games, VR mods, video and script players and hobby projects talk to toys through it. With one small file, every Velvet toy works there too: no Velvet key, no code.
| Toy | In Intiface today |
|---|---|
| Pixie and the other single-motor toys | Vibration, full strength range |
| Aurora | Suction (its motor), full strength range |
| Ember | Vibration (heat isn't available in Intiface yet) |
| Eclipse | The outer motor (the insertable motor isn't available in Intiface yet) |
Tested on 18 Oct 2026 with Intiface Central 3.2.2. Official Velvet support in Buttplug is on its way, with Eclipse's second motor, Ember's heat, battery and the real model names. Once it's released, this file won't be needed.
Set it up (5 minutes)
-
Install Intiface Central from intiface.com/central (Windows, macOS, Linux, Android, iOS). Open it once, allow Bluetooth, then quit it.
-
Download buttplug-user-device-config-v5.json. Keep the file name exactly as it is.
-
Put it in Intiface's
configfolder, next to the filebuttplug-device-config-v5.json:- macOS: in Finder, choose Go → Go to Folder… and paste
~/Library/Containers/com.nonpolynomial.intifacecentral/Data/Library/Application Support/com.nonpolynomial.intifacecentral/config - Windows and Linux: search your computer for
buttplug-device-config-v5.jsonand put the download in the same folder.
If a
buttplug-user-device-config-v5.jsonis already there, you've customised devices in Intiface before: see Already have a user config? instead of replacing it. - macOS: in Finder, choose Go → Go to Folder… and paste
-
Open Intiface Central, press the play button at the top to start the server, go to Devices and press Start Scanning.
-
Switch your Velvet toy on. It shows up as Cupido Device. Open it and move the vibrate slider to try it. Any Intiface app can now use it.
Close the Velvet app on your phone first: a toy talks to one app at a time.
Why it works
Velvet toys share their firmware family with toys Buttplug already supports as Cupido: the same motor command (B0 03 … AA). Intiface just doesn't know Velvet's Bluetooth name (VR-…) and service yet. The file tells it: toys named VR-* with Velvet's service speak Cupido. It's Intiface's own user device config format.
Already have a user config?
Add this entry to the user_configs.protocols object in your existing file (keep what's there):
"cupido": {
"communication": [
{
"btle": {
"names": ["VR-*"],
"services": {
"53306c9a-0b82-4faa-9686-06a720c3b175": {
"tx": "8b3c35a4-1d6f-4d15-bb3d-8a8b7b41b4f1",
"rx": "e2a371f4-77f1-4bfc-b1aa-128d6478e395"
}
}
}
}
]
}
Developers on macOS can also run install.py from the SDK repository's integrations/intiface folder, which merges the entry and keeps a backup.
Intiface or the Velvet SDK?
| Intiface (Buttplug) | Velvet Toy SDK | |
|---|---|---|
| Best for | Games, VR, desktop and script players that already support Buttplug | Web apps, cam sites (Velvet Live), stories and media sync |
| Toy connection | The Intiface app on the user's device | The browser, over Web Bluetooth |
| Velvet key | Not needed | Needed (free test key) |
| Safety limits | Intiface's | Velvet's: duration caps, auto-stop, stop on hide and close |
| All features | Not yet (see the table above) | Yes: both Eclipse motors, heat, presets, tracks |
If your users already run Intiface, use it. For anything on the web, or with Velvet's safety limits built in, use the SDK.