
Every move counts
Lose a round, take a hit, level up. The game plays back.
Apps and games
Any moment in your app can reach a Velvet toy: a lost round, a level up, a partner’s tap. It runs right in the browser.
Higher card wins
Ideas
If it happens on screen, it can happen in their hands. A few places to start.

Lose a round, take a hit, level up. The game plays back.

One partner taps, the other’s toy answers, whatever the distance.
A message that buzzes the moment it lands.
The toy follows the bass of a track or a playlist.
A slow, steady wave to wind down and breathe along to.
A party game where every miss gets a buzz.
Patterns
Start with a pattern from the cookbook, then make your own. Tap one to try it.
How it works
No server and no app store. The toy pairs with the browser over Bluetooth.
Join, create a test app and copy your key. It works on localhost straight away.
One tap opens the browser’s pairing window. No toy yet? Use the virtual one.
Call vibrate or a pattern whenever something happens in your app.
// when the player loses a round const toy = await velvet.connect(); await toy.vibrate({ strength: 70, durationMs: 3000, });
Toys
13 toys in 4 kinds. Build for what a toy can do and every model in that kind just works, new ones too.
One motor. Strength, patterns and twelve built-in presets.
Outer and insertable motors, together or one at a time.
Suction you set and pulse, just like vibration.
Vibration plus gentle warmth, low or high.
Made with it
A simple card game for two: higher card wins, and the loser’s toy buzzes. Open it, connect a toy (or the virtual one) and play a round in a minute.
Start
Already have a key? Go straight to the dashboard.

Tell us about your app. We help with launch, production keys and getting featured on Velvet.