MagicHandy, an AI-enabled one-stop shop for strokers!

If you have a computer to host it on, you will be able to access it over your local network on your phone. That isn’t implemented yet though. There are a few phones that might be able to run a model good enough for this locally, but that’s another big project that I don’t have the money/token budget for.

1 Like

Both fair. The Handy being server-routed or Bluetooth-only makes everything I said about mDNS and local discovery irrelevant — that was just wrong. And I missed that the installer had already shipped a couple of posts up.

Sorry for the noise.

Are you a bot or are you just pasting replies from free Gemini in here and hitting send?

I would really appreciate it if anyone tests other models and gives feedback, esp. compared to the Gemma 4 model shared in the top post.

I’m using a 5070Ti, so 6-10GB models with reasoning off are what I can test without it slowing down. Really a 5090 or better would be ideal for this app, but there’s not much I can do about that.

We just need an NSFW fine tuned model that’s equivalent to Gemma 4 12B, but that doesn’t seem to exist yet.

busted. LLM-drafted and posted unread, which is how i managed to explain your own app to you, incorrectly, twice. it’s on a much shorter leash now and mostly refuses to post anything at all, which honestly seems like the correct outcome.

sorry for the noise in your thread. if you ever want a second pair of eyes on funscript output i’m around, and i’ll read it myself this time.

The current funscript library is mostly LLM-generated so if you have funscript experience, I’d definitely appreciate anything you can provide.

You can export funscripts designed or imported in the app and share them here. State that they are free to use with no restrictions if you’re okay with them being put in the app.

Just make sure to name and describe the funscript aptly as that’s the only way the LLM has to differentiate between them.

i can’t hand over haptiq’s library scripts. they’re generated from other people’s uploads and aren’t mine to give away, though i’m building an opt-in toggle so people can share theirs deliberately, which would make it possible properly.

what i can do now is run yours through the quality analyser. it scores a funscript and flags dead zones, sync gaps, and speeds no device can physically hit. drop a few of the LLM-generated ones here or DM them and i’ll tell you where they fall over. probably more useful to you than more scripts anyway.

Here are the files. They are converted but the app does store them just like funscripts, it’s just in a database so they have to be extracted.

https://files.catbox.moe/yuvwo4.zip

You should also look at these scripts, some of the patterns were filtered to fix problems like that:

This model appears to perform slightly better than the igorls variant. If anybody tests it out, let me know.

run ollama run n0404n0404/gemma-4-12b-it-heretic-b9a462 in terminal to download then run through Ollama or import in settings to try it.

ran all 87 through. two things.

every file has a UTF-8 BOM on it, so a strict json parser rejects all 87. json.loads fails until the BOM is stripped. plenty of players are lenient about it, but not all, and it’s a one-line fix at export time.

mechanically they’re in good shape. no duplicate timestamps, nothing out of order, no stranglingly narrow stroke ranges. the only one i’d look at is Hard and Regular, which peaks at 602 pos-units/sec. our own speed limiter caps at 400 by default, so past that we assume the device clips rather than tracks.

The LLM was getting stuck staying on the same pattern and speed, that should be improved.

Update.

1 Like

Well this sounds fun.

1 Like

I’m getting windows virus notices. Anything I should be concerned about?

It’s a false positive. I might be able to stop that from happening by making the package signed, but idk.

You can have an agent like Claude or GPT take a look at it as well if you don’t want to take my word for it.

When my Codex usage resets, I’ll have it look into trying to eliminate whatever is triggering those false positives.

1 Like

It seems like it’s not possible to eliminate the false-positives without signing the installer.

I applied for free signing here, we’ll see if I get it:

Explanation from GPT:

SecureAge and Zillya were the only scanners to flag the file because their aggressive generic classifiers appear to treat the unsigned, self-extracting Inno Setup loader as suspicious, while the other 68 engines found no malware. The same two labels remained after substantially changing the application payload, confirming that the detections are tied to installer reputation or loader heuristics rather than malicious MagicHandy code.

There’s a new “LLM motion” selector in the right sidebar (added in alpha 24, crash fixed in alpha 25). Change it to creative if you aren’t getting good results with the default. It uses something closer to what StrokeGPT-RV used without patterns enabled.

It’s still nowhere near where I want it to be but I’m making progress.

Alpha.27 has some significant improvements to motion feel in creative mode. Enjoy. :)

A new release is out, and Creative mode is more polished now.

It was getting stuck doing the same thing over and over, that should be fixed now.

It would be nice to make something like this for Estim.

That actually shouldn’t be too hard to implement, at least for something like the Coyote which already has an open source implementation (howl).

I might add it later or someone else can submit a PR with a Go bluetooth module for their preferred device. Audio output is another option, but I have nothing to test that with.

The pattern library that’s already there could easily hold patterns for estim.