This is an extension for SillyTavern that allows you to connect and control Intiface_Central devices using Intiface Desktop.
- Connect to Intiface Central: Easily connect to your toys via the Buttplug protocol, powered by Intiface.
- Manual Control: Simple sliders and input fields in the UI allow you to manually control the vibration intensity, oscillation, linear position, and movement duration of your connected device.
- Chat-Driven Control: Automate the experience by sending commands directly through the SillyTavern chat. The extension scans the latest message (both AI and User) for specific commands to adjust the device's functions.
- Sequential Execution & Reading Pace: When multiple commands are present in a message, they are executed in sequence. The extension simulates a "reading speed" to delay the execution of subsequent commands based on the distance between them in the text, creating a natural flow synced with the text.
- Visual Highlights:
- Reading Highlight (Yellow): A "karaoke-style" highlight scans through the text to visualize the simulated reading progress.
- Command Highlight (Pink): When a command is triggered, it lights up in pink to indicate activation.
- Colors are customizable in settings.
- Playlist & Loop Modes:
- A-B Segment Playback: Set a "Start Flag" and an "End Flag (Checkered)" next to messages to play only a specific section of the chat.
- Full Playlist (Default): Plays through to the end (or the set End Flag) and automatically loops back to the first message (or the Start Flag).
- Last Message Only: Continuously repeats only the very last message.
- Smart UI: The control panel automatically hides unsupported features (like Linear controls on a Vibrator) unless "Developer Mode" is enabled.
- Open SillyTavern.
- Click the "Extensions" button in the top toolbar.
- Click "Install Extension".
- Copy this URL into the input field: https://github.com/Enclave0775/Intiface_Central-Sillytavern-plugin
- Click "Install just for me" or "Install for all users".
- Start Intiface Desktop: Launch Intiface and start the server. This will open a WebSocket server at
ws://127.0.0.1:12345, which the extension needs to connect to. - Open SillyTavern: Navigate to your SillyTavern instance.
- Connect the Extension:
- You will see a new electrocardiogram icon in the top-right menu. Click it to open the control panel.
- Click the Connect button. The status should change to "Connected".
- The extension will automatically scan for and list connected devices.
- Settings:
- Loop Patterns: Check this to repeat the commands in messages. Unchecking this stops the loop. (Note: Manually pausing a device also unchecks this).
- Full Playlist: Loops from the active message to the end, then restarts.
- Last Message Only: Repeats only the final message.
- Loop Interval: Set the delay (in ms) between loops.
- Reading Speed: Set the speed (chars/second) for the reading highlight simulation. Default is 20.
- Developer Mode: Check this to show all control sliders regardless of device capabilities.
- Colors: Customize the highlight colors for reading and commands.
- Loop Patterns: Check this to repeat the commands in messages. Unchecking this stops the loop. (Note: Manually pausing a device also unchecks this).
- Control Your Device:
- Manual Control: Drag the sliders to set the vibration, oscillation, and linear position.
- Chat Control: Send a message in the chat containing specific commands.
The extension supports multiple commands, including VIBRATE, OSCILLATE, LINEAR, LINEAR_SPEED, and LINEAR_PATTERN.
To control the vibration, your message must contain a "VIBRATE" key. The value can be a number between 0 and 100, or an object for pattern-based vibration.
Example (Single Value):
"VIBRATE": 80
Example (Pattern):
To create a vibration pattern, provide an object with a pattern array and an interval (or array of intervals).
"VIBRATE": {"pattern": [20, 40, 20, 40, 30, 100], "interval": [1000, 3000]}
To control the oscillation, your message must contain an "OSCILLATE" key.
Example (Single Value):
"OSCILLATE": 80
Example (Pattern):
"OSCILLATE": {"pattern": [20, 40, 20, 40, 30, 100], "interval": [2000, 3000]}
To control linear movement.
Example:
To move the device from 10% to 90% position over 2 seconds (2000ms):
"LINEAR": {"start_position": 10, "end_position": 90, "duration": 2000}
To create a smooth, gradual change in speed (a speed ramp).
Example:
To move the device between 10% and 90%, and have the speed gradually increase from a 2-second stroke to a 0.5-second stroke over 10 steps:
"LINEAR_SPEED": {"start_position": 10, "end_position": 90, "start_duration": 2000, "end_duration": 500, "steps": 10}
To create complex linear movement patterns with variable positions, speeds, and loops.
"LINEAR_PATTERN": {
"repeat": true,
"segments": [
{ "start": 10, "end": 90, "durations": [1000, 500], "loop": 3 },
{ "start": 20, "end": 80, "durations": [1200], "loop": 5 }
]
}