Kept connects to two open-source hardware projects: OpenShock for shock collars and Buttplug.io for toys. With either one, a Dom can send commands to a sub's device from inside Kept, and you can test your own. Volunteers in each project built the hardware side, and Kept sends them commands.

The two connect in different ways, and that changes what you need running. Read the section for the one you plan to use.

Who can control what

These rules apply to both integrations.

  • You control your own devices. Each setup screen has a test control, so you can check your device responds before anyone else gets access.
  • A Dom needs the sub's permission. Hardware control is a setting in the sub's trust settings for that relationship. With it switched off, the Dom sees "Hardware control disabled" and can't send anything.
  • The wearer sets the limits. The person wearing the device picks a maximum intensity, a maximum duration and a cooldown. Kept's server checks those limits on each command, including a Dom's, so nobody can raise them from their own phone.
  • You can pause an integration. "Manage pauses" on either screen holds commands for a set time or until you clear it. Kept still logs what the Dom tried to send.
  • Stop gets through. Stop skips limits, cooldowns and pauses, so a safety setting can't leave a device running.
  • You accept a safety disclaimer before you connect either integration. If we change the disclaimer, Kept asks you to accept the new version.

OpenShock

OpenShock lets you control shock collars over the internet. You run their hub, most often a small ESP32 board, which talks to the collar over radio, and OpenShock's service relays commands to the hub. Their code is on GitHub.

How it works with Kept

Kept's server talks to OpenShock's servers. When someone sends a command, Kept checks permissions and limits, hands the command to OpenShock, and OpenShock passes it to your hub. You don't need Kept open, and the Dom can be anywhere.

You can send shock, vibrate, sound and stop. The cooldown applies to shock alone.

OpenShock also works with other parts of Kept:

  • Punishments can include a shock step. The wearer's limits still apply.
  • Rewards that use the device send a vibration and skip shock entirely.
  • Patterns hold a sequence of up to 20 steps. Kept checks each step against the wearer's limits as it runs and counts the sequence as one command for the cooldown.

Setting it up

  1. Set up OpenShock first. Get your hub online, pair your shocker, and control it from OpenShock's own dashboard. Their documentation covers the hardware.
  2. Create an API token in your OpenShock account and guard it like a password.
  3. In Kept, open Account → OpenShock in the app, or Settings → Hardware integrations on the website.
  4. Paste the token into API Token. Leave Base URL empty to use OpenShock's service; fill it in if you run your own OpenShock server.
  5. Set your limits: maximum intensity, maximum duration (0.3 to 30 seconds) and the wait between shocks.
  6. Accept the disclaimer and save.
  7. Send a test command and check your device responds before you give anyone else control.

Kept encrypts your token before storing it and decrypts it to send a command. Kept never shows the token back to you, so paste it again each time you save your settings, even for a limit change.

Buttplug.io

Buttplug.io is an open standard for controlling intimate hardware, with support for hundreds of devices across many brands. You use it through Intiface Central, a free app that pairs with your toys over Bluetooth and accepts commands from other apps. Their code is on GitHub.

How it works with Kept

Intiface runs on your own computer, where Kept's server can't reach it. Kept's website fills the gap: you open it in a browser on the computer running Intiface, and that tab connects to Intiface. When a Dom sends a command, Kept's server passes it to your tab, the tab passes it to Intiface, and Intiface moves the toy.

For a command to reach your toy, you need:

  • Intiface Central running, with its server started and your toy connected
  • Kept's website open in a browser on that same computer, connected to Intiface

The Android and iOS apps can set up the integration and send commands. The toy responds through the browser tab alone, so if you close the tab, commands have nowhere to go.

You can send vibrate, rotate, linear (for stroker-style devices) and stop. Your toy supports some or all of these, depending on the model.

If you connect more than one toy, the Stop button reaches the first one alone. We're fixing this. Your safeword stops all of them (see below). Until then, keep one toy connected in Intiface, or stop the others from inside Intiface Central.

Setting it up

  1. Install Intiface Central on your computer, start its server and connect your toy. Make the toy respond from inside Intiface before going further.
  2. Sign in to Kept's website in a browser on the same computer.
  3. Open Settings → Hardware integrations. The Intiface WebSocket URL defaults to ws://127.0.0.1:12345, which matches Intiface. Change it if you changed the port in Intiface.
  4. Set your limits: maximum intensity, maximum duration (0 means no limit) and a cooldown. Kept ships with these off, so set them before you give anyone else control.
  5. Accept the disclaimer, then save and connect.
  6. Send a test command and check your toy responds.

If Kept can't reach Intiface, check that Intiface is running and its server has started. That fixes it in most cases.

The safeword and your devices

Your safeword shuts down both integrations. When you use it, Kept sends Stop to every OpenShock shocker and every Buttplug toy on your account, then refuses any new command from anyone, your Dom and you included, until the safeword is resolved. Your tasks pause and your Dom gets an alert at the same moment.

Resolving the safeword brings the integrations back. Your limits and pauses stay as you left them.

The Buttplug stop travels the same path as any other Buttplug command, so it reaches your toys through the Kept tab in your browser.

Support the projects

Volunteers build and maintain both projects, and Kept couldn't offer any of this without their work. If you use them, consider supporting them: