Introducing VacuScripter v1.0.31.0 (Now in the Microsoft Store)- A local script maker/player for VacuGlide 2 and Buttplug/Intiface Devices (DeoVR, Intiface Central, and Heresphere support)

Edgy stuck on scanning. This Shows up in logs.

[2026-03-26 16:45:44.440] Buttplug Transparent Proxy stopped
[2026-03-26 16:45:44.440] ListenerLoop stopped cleanly
[2026-03-26 16:45:44.440] ListenerLoop exited
[2026-03-26 16:46:37.024] :rocket: Transparent Proxy started on ws://127.0.0.1:12345
[2026-03-26 16:46:42.334] :white_check_mark: Website WebSocket upgrade accepted
[2026-03-26 16:46:42.334] :counterclockwise_arrows_button: Connecting to Intiface Central on ws://127.0.0.1:12346
[2026-03-26 16:46:44.377] :cross_mark: Failed to connect to Intiface Central: Unable to connect to the remote server

[2026-03-26 18:09:02.394] :rocket: Transparent Proxy started on ws://127.0.0.1:12345
[2026-03-26 18:10:26.563] Buttplug Transparent Proxy stopped
[2026-03-26 18:10:26.564] ListenerLoop exited

Hmm, strange, I just tried it and theedgy.app site connects immediately… not even a delay from when I click connect to the button turning to say ‘Disconnect’.

I’m currently working my day job right now, but later today I’ll get around to making a step by step video for this process.

But just to confirm the steps you took to try to connect to theedgy.app site:

  1. Launch Intiface Central, navigate to App Modes, click server port, change server port to ‘12346’, then click ‘Start Server’
  2. Launch VacuScripter, navigate to ‘Edit’ then ‘Options’, change Listen Intiface Port to ‘12346’, click ‘SAVE’, and then navigate to ‘Tools’ then click ‘Listen as Buttplug Client’
  3. VacuScripter will now say “Buttplug Proxy Server ACTIVE (background thread)”
  4. Open theedgy.app/app and make sure you click ‘Intiface’ for the Handy Connection, make sure WebSocket URL is: ws://localhost:12345 and then click ‘Connect to Initface’

As shown in screenshot #1 (Intiface Port):

Screenshot #2 (Enable Listen as Buttplug Client):

At this point, after clicking ‘Connect to Intiface’, theedgy.app/app site should immediately go to the screen in screenshot #3 below:

Here is my log from being able to start the session and receive commands a minute ago. (Time of last edit to this reply)

I don’t currently have my VacuGlide 2 connected to VacuScripter and nothing is paired with Intiface Central, but my test last night worked with my VacuGlide 2 connected to VacuScripter

Log:

[2026-03-26 14:27:59.692] :rocket: Transparent Proxy started on ws://127.0.0.1:12345
[2026-03-26 14:28:00.934] :white_check_mark: Website WebSocket upgrade accepted
[2026-03-26 14:28:00.935] :counterclockwise_arrows_button: Connecting to Intiface Central on ws://127.0.0.1:12346
[2026-03-26 14:28:00.938] :white_check_mark: Connected to Intiface Central - bidirectional forwarding started
[2026-03-26 14:28:00.943] :right_arrow: Website → Intiface: [{“RequestServerInfo”:{“ClientName”:“The Edgy”,“Id”:1,“ProtocolVersionMajor”:4,“ProtocolVersionMinor”:0}}]
[2026-03-26 14:28:00.944] :right_arrow: Intiface → Website: [{“ServerInfo”:{“Id”:1,“MaxPingTime”:0,“ProtocolVersionMajor”:4,“ProtocolVersionMinor”:0,“ServerName”:“Intiface Server”}}]
[2026-03-26 14:28:00.945] :outbox_tray: Intiface → Website[{“ServerInfo”:{“Id”:1,“MaxPingTime”:0,“ProtocolVersionMajor”:4,“ProtocolVersionMinor”:0,“ServerName”:“Intiface Server”}}]
[2026-03-26 14:28:00.947] :right_arrow: Website → Intiface: [{“RequestDeviceList”:{“Id”:2}}]
[2026-03-26 14:28:00.948] :right_arrow: Intiface → Website: [{“DeviceList”:{“Devices”:{},“Id”:2}}]
[2026-03-26 14:28:00.948] :outbox_tray: Intiface → Website[{“DeviceList”:{“Devices”:{“1”:{“DeviceFeatures”:{“0”:{“FeatureDescription”:“”,“FeatureIndex”:0,“Output”:{“HwPositionWithDuration”:{“Duration”:[0,100000],“Value”:[0,100]}}}},“DeviceIndex”:1,“DeviceMessageTimingGap”:100,“DeviceName”:“The Handy”}},“Id”:2}}]
[2026-03-26 14:28:00.950] :right_arrow: Website → Intiface: [{“StopScanning”:{“Id”:3}}]
[2026-03-26 14:28:00.950] :right_arrow: Intiface → Website: [{“Ok”:{“Id”:3}}]
[2026-03-26 14:28:00.951] :outbox_tray: Intiface → Website[{“Ok”:{“Id”:3}}]
[2026-03-26 14:28:00.978] Forward error in Website → Intiface: Response status code does not indicate success: 502 (Bad Gateway).
[2026-03-26 14:28:05.352] :white_check_mark: Website WebSocket upgrade accepted
[2026-03-26 14:28:05.353] :counterclockwise_arrows_button: Connecting to Intiface Central on ws://127.0.0.1:12346
[2026-03-26 14:28:05.355] :white_check_mark: Connected to Intiface Central - bidirectional forwarding started
[2026-03-26 14:28:05.355] :right_arrow: Website → Intiface: [{“RequestServerInfo”:{“ClientName”:“The Edgy”,“Id”:4,“ProtocolVersionMajor”:4,“ProtocolVersionMinor”:0}}]
[2026-03-26 14:28:05.358] :right_arrow: Intiface → Website: [{“ServerInfo”:{“Id”:4,“MaxPingTime”:0,“ProtocolVersionMajor”:4,“ProtocolVersionMinor”:0,“ServerName”:“Intiface Server”}}]
[2026-03-26 14:28:05.358] :outbox_tray: Intiface → Website[{“ServerInfo”:{“Id”:1,“MaxPingTime”:0,“ProtocolVersionMajor”:4,“ProtocolVersionMinor”:0,“ServerName”:“Intiface Server”}}]
[2026-03-26 14:28:07.446] :right_arrow: Website → Intiface: [{“OutputCmd”:{“Id”:5,“DeviceIndex”:1,“FeatureIndex”:0,“Command”:{“HwPositionWithDuration”:{“Value”:5,“Duration”:221}}}}]
[2026-03-26 14:28:07.447] :right_arrow: Intiface → Website: [{“Error”:{“ErrorCode”:4,“ErrorMessage”:“{"ButtplugDeviceError":{"DeviceNotAvailable":1}}”,“Id”:5}}]
[2026-03-26 14:28:07.936] :right_arrow: Website → Intiface: [{“OutputCmd”:{“Id”:6,“DeviceIndex”:1,“FeatureIndex”:0,“Command”:{“HwPositionWithDuration”:{“Value”:77,“Duration”:354}}}}]
[2026-03-26 14:28:07.937] :right_arrow: Intiface → Website: [{“Error”:{“ErrorCode”:4,“ErrorMessage”:“{"ButtplugDeviceError":{"DeviceNotAvailable":1}}”,“Id”:6}}]
[2026-03-26 14:28:08.566] :right_arrow: Website → Intiface: [{“OutputCmd”:{“Id”:7,“DeviceIndex”:1,“FeatureIndex”:0,“Command”:{“HwPositionWithDuration”:{“Value”:5,“Duration”:354}}}}]
[2026-03-26 14:28:08.567] :right_arrow: Intiface → Website: [{“Error”:{“ErrorCode”:4,“ErrorMessage”:“{"ButtplugDeviceError":{"DeviceNotAvailable":1}}”,“Id”:7}}]

You will see errors from Intiface because Intiface knows it is not paired to a device, this is normal. What will be an issue is if VacuGlide 2 does not move when action is happening on theedgy.app/app site.

Eventually I’m going to eliminate the need for Intiface to be started and running so you can use VacuScripter as a standalone Intiface for sites like theedgy.app for strictly controlling the VacuGlide 2.

1 Like

I was able to quickly make a demostration video:

2 Likes

Keep in mind that the ‘Pause’ and ‘Stop’ buttons on theedgy.app site do not interact with the VacuGlide 2. So you won’t be able to stop the VacuGlide 2 using those buttons.

To stop VacuGlide 2, click ‘Disconnect’ and that will pause/stop VacuGlide 2.

You should be able to reconnect as normal afterward (you may have to refresh the website to reestablish the Intiface/VacuScripter connection).

It is an issue with how the site sends commands to Intiface.

Hello there,
I have tested the Setup.
Yes, Vacuglide recieves strokings from theedgy.app with this Setup but its not in line with the animation of the Webside; Example: If wou push the regulators to the max. and the animation of the thandy slows down to 0, Vacuglide doesn’t also slow down.
But without that functioning propperly the whole thing is jut a random generator wich we already have.
Have you also tried other stuff than the theedgy.app?

If the vacuscripter works as intended with most games and websides that connect to Intiface I would see 5 $ to be a fair price for this, but we are not there yet.

theedgy.app is the only thing I have managed to get working so far. Other Websites/Apps either get stuck trying to connect or won’t work because a device needs to be selected. Definitely something you should look into @bchiemara.

1 Like

When the vacuscripter is put into fullscreen the mouse is hidden on the interface. I have to restart the program to get the mouse to reappear.

Also what do the auto suction and auto valves do? I find when either or both of these settings are turned on, the vacuglide no longer follows the funscript and the stroke length is greatly decreased and much less pleasurable.

I’ll look into it, I currently only programmed spoofing the handy connection with the json data from theedgy site, so the data stream from other sites/apps will need to be dissected to determine what each site/app is looking for in a response.

It was in the works and I knew it would be necessary, I just assumed some other sites/apps would be very similar to theedgy in the handshake/communication to Intiface. That’s what I get for assuming.

Any specific sites/apps you want to mention for me to put at the top of the list to troubleshoot?

I’m still tweaking the Auto Suction and Auto Valve functions.

Auto Suction - when enabled will begin creating a vacuum when you click play, each time you click play it will begin creating suction for the time specified in the Options menu (pausing the video resets the timer so when you click play it will start again). In the Edit → Options section of VacuScripter you can specify how long to create the vacuum for, in seconds.

This is simulating like you are physically pressing the Valve- button on the VacuGlide 2.

Auto Valve feature - similar to the Auto Suction but when Auto Valve is enabled, it is random. It will randomly start creating a vacuum then randomly release, then repeat this at a random intervals. It is to simulate a blowjob where they are randomly sucking on you. Originally I had it also set to random suck and release durations but when the commands start getting rejected, and it is pumping air into the sleeve, it gets stuck in valve+ open and will actually pop the sleeve right off you and the case… which is bad.

The issue is with fast scripts sending lots of speed changes consecutively will get begin to be rejected by the VacuGlide API. This is primarily on the device/API side. I’ve tried to mitigate it with certain stop gaps in place to prevent sending too many commands at once and skipping some that are within too short of an interval.

When you add in valve commands with the speed commands then you are compounding it.

So I continue to tweak it so I can find a solution. I think I might have one that will work but I need time to implement and test it. Maybe this weekend.

I can push an update in the meantime to reduce the amount of times it sends valve adjustment commands while the script is running… that should help.

I was trying to implement hiding the mouse cursor when the menu slides out of the way, I found it to be problematic and I thought I removed it but obviously some of the code is still active… I’ll look for it and remove it. I haven’t had an issue with it but I don’t do fullscreen much (mostly I’m using VR).

Update will be in certification tonight.

I just finished testing the Intiface Central function changes/adjustments I made and VacuGlide 2 is working now with theedgy.app, machimo.app, and faptap.net.

Tested working with the Handy and VacuGlide 2 connected simulatneously and tested with only VacuGlide 2 connected and all three sites are working for both conditions.

1.0.27.0

  • Added other Intiface sites/apps (Tested with theedgy.app, machimo.app, and faptap.net)
  • Auto Suction / Auto Valve adjustment
  • Fixed hidden cursor bug
  • Fixed play button not working after adding a video to playlist and selecting it
  • Update to Random Generator function
1 Like

v1.0.27.0 is live

The Intiface compatibility works for sites connecting to Intiface Central and expecting the Handy.

Great work with theedgy.app and machimo.app so far.
faptap.net already had Vacuglide support.
Unfortunately stopping Vacuglide doesn’t work in theedgy.app and machimo.app.
It would be great if you get that to work also, especially since stopping is part of the game in machimo.app.


It would be even greater to get general support for intiface, mening:
Any game send commands to intiface;
Vacuscripter takes commands fom intiface and sends them to vacuglide.
I tested it with Koikatsu (paid software) and it didn’t work. But there are many free games on eroscript under the “Game”-Tag where you can get free games and test it.

1 Like

Seems each Intiface app/site has slight differences on what json response it is looking for and how it sends commands, that I have to account for in VacuScripter. I can get them working as long as I can debug the json stream and see what needs adjusted.

I have not heard of Koikatsu, but I think I could get it working if I had it to test with.

I did not try each of those buttons in machimo, I was going to test them and I completely forgot.

So I’ll add a fix in the next update for those.

I used faptap as a test to see v3 of the Intiface / Handy api calls (theedgy.app uses v4 and those are different json commands from machimo and faptap). Getting faptap working helped me get machimo working.

Koikatsu is a game that uses a mod/plugin to add intiface support.

https://codeberg.org/Sauceke/LoveMachine

1 Like

I’ll look into it, thanks!

I made a bunch of updates to VacuScripter

1.0.28.0

  • Fixed VacuGlide sometimes not starting with script in DeoVR
  • Fixed Playlist double click not working consistently
  • Fixed Playlist functionality (No Loop, loop current, loop playlist now work more consistently)
  • Auto Suction is now only for creating suction at the start of playing a video/script
  • Auto Pump feature added as a sub-feature of Auto Suction which then enables a pump mode

However I hit a snag.

It seems that a recent update to Intiface Central broke the currently working VacuScripter proxy server function.

SO, I am building bluetooth pairing with full buttplug client / server functionality directly into VacuScripter to eliminate any need for Intiface Central. I was hoping to not replace or compete with Intiface Central but if updates are going to be an ongoing issue, I will rather just ditch them completely and make VacuScripter its own standalone app, complete with device pairing and everything.

If you want to keep current functionality with connecting to websites like theedgy.app to control VacuGlide 2, then I advise you to not update Intiface Central (if you haven’t already updated) so you can continue using the current proxy connection until I get the new update rolled out.

Almost ready to put this update into certification.

VacuScripter no longer needs Intiface Central running.

You can pair buttplug devices directly to VacuScripter to run them along side VacuGlide 2.

So far, theedgy.app works and faptap.net works with rumble, linear, and VacuGlide 2 all connected to VacuScripter simultaneously.

I need to do some more testing and tweaking before I put this into certification.

Ok, just got VacuScripter connected and working with JOI Lustbound game

So far VacuScripter connects with and works with:
-theedgy.app
-faptap.net
-JOI Lustbound game (might have fixed the connection issues with other Intiface games/sites, needs more testing to confirm)

No need to run Intiface Central anymore to use VacuGlide 2 with Intiface sites/games when using VacuScripter.

I’ll do some final tests and the put this in for Certification for release.

1 Like

I just submitted v1.0.28.0 for certification.

You should get a notification when the new version is available.

I will update here as well.

1.0.28.0

  • Fixed VacuGlide sometimes not starting with script in DeoVR
  • Fixed Playlist double click not working consistently
  • Fixed odd form behavior when double-clicking selected video in playlist
  • Play button will now play the selected video
  • Fixed Playlist functionality (No Loop, loop current, loop playlist now work more consistently)
  • Auto Suction is now only for creating suction at the start of playing a video/script
  • Auto Pump feature added as a sub-feature of Auto Suction which then enables a pump mode
  • VacuScripter no longer requires Intiface Central, completely standalone (you can pair buttplug/Intiface devices to VacuScripter)
  • VacuScripter now connects to JOI Lustbound, theedgy.app, and faptap.net to control VacuGlide 2
  • You can now double left-click the volume level icon to mute and unmute
  • You can now doulbe left-click the Loop: label to cycle through playlist loop functions in addition to the right-click menu on the playlist
  • Adjustment to Random Generator function
    (Plateau Max Duration is how long to hold the current speed and stroke length pattern in seconds before randomly changing the speed and stroke pattern
    Intensity controls how intense the speed and stroke length patterns will be [stroke length affects linear devices, for VacuGlide 2 it will only use the speed value]
    Upper stroke is the max stroke upper limit - at 100% it will be like a position point in a script at the very top
    Lower stroke is the minimum stroke bottom limit - at 0 it will be like a position point at the very bottom of the graph
    If you set lower stroke to 25% and Upper stroke to 75% then the linear device will only stroke up to 75% and down to 25%)

VacuScripter v1.0.28.0 (Microsoft Store)

VacuScripter v1.0.28.0 (Microsoft Store Web Link)

3 Likes