Skip to content

c3ll256/dsh-toy

495Last commit Aug 14, 2026

dsh-toy DSH plugin

dsh-toy enables DSH agents to connect and control physical toys such as vibrators. It automatically selects the connection method (CoreBluetooth, Intiface, MonsterParty) based on the brand and model. The plugin enforces safety guardrails like max intensity and duration, and supports unknown hardware discovery on macOS.

How to install the dsh-toy DSH plugin

dsh plugin --profile web add github:c3ll256/dsh-toy

Copying does not run this command. Review the repository and version before installing the dsh-toy DSH plugin.

dsh-toy DSH plugin data source

dsh-toy DSH plugin snapshot date: Aug 16, 2026

discovered

What the dsh-toy DSH plugin can do

  • Automatic connection method selection (CoreBluetooth, Intiface, MonsterParty) based on brand/model.
  • Read-only raw BLE advertisement discovery on macOS for unknown hardware.
  • Scalar control with configurable intensity and duration limits.
  • Global stop and device-level stop/disconnect.
  • Plugin starts Intiface Engine automatically when needed, with optional download.
  • Supports known brands like Lovense, Ankni, MizzZee, Zuiqingfeng, and RoomFun.

Where the dsh-toy DSH plugin fits

  • Connect a Lovense Lush 3 and control vibration intensity.
  • Discover unknown Bluetooth toys on macOS using raw BLE scanning.
  • Use a MonsterParty sharing link to control a toy remotely.
  • Safely stop all toy output with a single command.
  • Integrate toy control into a DSH agent workflow for interactive experiences.

Who the dsh-toy DSH plugin is for

  • Developers building interactive or adult-oriented DSH applications.
  • Users who want to control physical toys through natural language commands via DSH agents.

dsh-toy DSH plugin limitations

  • Raw BLE advertisement discovery is macOS-only and requires Xcode Command Line Tools.
  • MonsterParty connection implements only relay behavior documented by Chemtrails; vendor changes may require updates.
  • Buttplug connection currently exposes scalar features only; position, direction, sensors, etc. are not supported.
  • Tests use local protocol fixtures rather than physical hardware.

dsh-toy DSH plugin: from the repository README

Quoted from the c3ll256/dsh-toy README, the upstream source of the dsh-toy DSH plugin. Copyright remains with the original authors.

English | [简体中文](README.zh-CN.md) `dsh-toy` is a DeepSeek Harness plugin for connecting small toys to DSH. At connection time, the agent first asks for the brand and model, then selects the connection method automatically. If the user genuinely does not know, the agent starts unknown-hardware discovery: - On macOS, unknown hardware first uses read-only raw **CoreBluetooth** advertisement discovery, without starting Intiface or connecting to devices. - Regular Bluetooth, serial, and USB models use **Buttplug / Intiface**. The plugin starts local Intiface Engine automatically when needed. - Known sharing-link models from Ankni (安可尼), MizzZee (谜姬), and Zuiqingfeng (醉清风) use **MonsterParty**. Known dual-output devices expose their channels separately. Users do not need to understand or select an underlying connection method, or manually start Intiface. Brand and model names are not an allowlist. The agent passes any user-reported name through unchanged; unfamiliar names still use local hardware discovery. The plugin also supplies a verified local compatibility mapping for `RoomFun` devices reporting model `RF_CANNON_PT3`, exposed as **RoomFun Cannon** with one vibration channel.

Read the full READMERepository license: BSD-3-Clause

dsh-toy DSH plugin questions

How do I install dsh-toy?

Run `npx -y @deepseek-ai/dsh plugin --profile web add github:c3ll256/dsh-toy` in your terminal. Make sure you have Node.js 22.19+ and pnpm installed. Then start DSH with `npx -y @deepseek-ai/dsh web`. The plugin is installed persistently in the web profile.

My toy is not connecting. What should I do?

First, ensure the toy is powered on, nearby, and not connected to another app. If using Bluetooth, turn off other controllers. If the brand/model is unknown, try saying "I do not know the brand or model. Try Bluetooth discovery directly." On macOS, the plugin will attempt raw BLE discovery. If that fails, it falls back to Intiface with unknown model.

How do I configure MonsterParty?

Set the environment variable `MONSTERPARTY_TOKEN` with your sharing token. Then override the plugin configuration in your profile's `cordis.patch.yml` with the `monsterPartySessionToken` set to `!!js process.env.MONSTERPARTY_TOKEN`. Sharing tokens are often single-use; generate a new link before reconnecting.

Can I set maximum intensity or duration?

Yes, you can configure `maxIntensityPercent` (default 100) and `maxDurationSeconds` (default 300) in the plugin config. The plugin enforces these limits before sending commands. You can also set `allowHold: false` to disable zero-duration holds.

I get "spawn intiface-engine ENOENT". What's wrong?

This means the Intiface Engine executable was not found. Ensure `intifaceAutoDownload` is set to true (default) so the plugin downloads a pinned build. If you are on an unsupported platform (e.g., macOS ARM64 is supported but Linux ARM64 is not), set `intifaceExecutable` to the path of your installed engine. Also check that GitHub is reachable for the download.