DELETE YOUR my_settings FILE IF YOU ALREADY HAVE ONE. THE AI WILL MAKE A NEW UPDATED VERSION!
Added min/max speed to the onboarding guide & clarfied mix/max depth. Keep in mind that this is a very sensitive setting, so even 3-10% speed can be plenty fast enough.
All automodes now function as they should.
Telling the AI to stop will make it stop (edge cases may apear).
Every move the AI performs is now 100% invented on the fly. If you like the way it feels at any given moment, click the “like” button and the AI will then save that to memory to be used again in future. The more likes a move gets, the more often it will be used.
Persona can be set at any time during chat.
You can safely message the AI during any automodes, just keep in mind that it has taken over and you’re there to get milked lol.
The AI now creates a much more detailed my_settings file which stores important info, names, dates, memories etc. It also stores your Handy Key as well as your min/max depth and mix/max speed. You can change these at any time by simply editing the values in the file.
The model should be less drowned in commands from its system prompt now so it may respond faster on slower hardware.
The UI now contains easy to edit timing windows that control how often the AI responds during automodes. Change them, click save timings and have fun!
A little something called Edging Mode.
Errors you may come across.
Elevenlabs support may be wonky at times but should work fine for the most part.
If you didn’t like any values you set in the strating guide, just change their values in your my_settings file.
Edging Mode is experimental. Keep this in mind.
Pattern memory may be janky for now.
The AI doesn’t understand me! This is likely because you’re speaking to the model using slang and assuming it knows what you know. Assume otherwise and always speak to language models clearly. If you’re expecting complex responses and features up there with chatgpt, this is definitely not that.
Help, the AI won’t do my taxes! . This app runs alongside a small local large language model, so its brains aren’t what one would call smart. But, this is the best I can do while aiming to get the system working on lower end hardware. If you want to update the model, you’re free to change it in the app file. If you still want more, I’m afraid your five years too early lol.
Next, I’ll be working on fixing trickier (rare) bugs that still persist, refining all three automodes, and I’m going to start work on the AI inventing miniscripts rather than simple movements.
This update was a large effort so I would very much like any feedback bug reports you have, and, as always, I appreciate you all tons.
I fresh installed 1.4 after trying 1.2, but it’s stuck doing the short jackhammering others mentioned about 1.3.
I can see looking at the stroke range on handyfeeling.com that it keeps picking short 20%ish length strokes, regardless of the depth the “My Handy AI Chat” control site says.
Do you mean that the model is only sending up/down strokes on various parts of the shaft? If so, that’s all the model is capable of doing right now as it can’t yet create any form of scripts other than variations on the basic up/down movements at differing speeds and depths. It you ask it to work the entire shaft (I’m testing it as I type) it appears to do so (well, worded however you want within reason).
If the above is the case, it’ll be able to create actual looping scripts in time but development is a slow process.
Also, please make sure that you set your minimum and maximum speed accordingly. If you’ve already done the guide on startup you can change min/max speed easily in your my_settings file. For example, even a 2% minimum and 10% max speed is pretty quick. It’s also worth checking that you have your min/max depth set how you want it, too, as the model calculates dick size based on the min/max depth settings in your my-settings file.
Just to avoid any confusion. You shouldn’t be relying on any official handy depth control sliders or speed sliders on the official Handy website etc. The model has no way to know about those as it isn’t connected to them. Only use the one that starts with the app or simply edit your my_settings file.
Finally, just to check, do you definitely have both the v1.4 app.py and index files and you deleted your my_settings as mentioned in the post?
To clarify - Regardless of what depth is set via the setup or manually via the .json (and displayed on the My Handy AI Chat screen), or what instructions are given via chat/messages, it will only stroke a range of roughly 19-20% (not always exactly but always close to 20%). It can pick different parts of the shaft (ie. 20%-40% or 70%-90%) and it seems to understand speed (as much as it can within the 20% limit) but the stroke range refuses to extend beyond about 20%.
I’m only looking at the values on the official Handy website to compare and troubleshoot, I’m not changing anything on there. Though it’s showing clearly that once it receives a command and starts stroking, it’s only choosing a 19%-20% range regardless of what was requested or what the control site says.
I’ve reinstalled everything fresh several times and yes, I am using your recently uploaded 1.4 app.py and index files. I didn’t have a my_settings.json because I updated from 1.2 but I’ve reinstalled/deleted it several times now since while trying 1.4.
Essentially, it is incapable of doing any strokes deeper than 20%. It can’t work the entire shaft.
I’ll look into this in the coming days. It’s likely an issue with the models outputs calculating the whole shaft within the users min/max depth range, and looking for only region-specific requests.
Don’t worry. Not having the my_settings file before starting doesn’t matter as the AI will always create one if needed.
Other than that, are there any other issues you’ve experienced besides the inability to move up/down your entire mix/max stroke range at once?
The only other issue I’ve experienced is that the “Set the Tip” and “Set the Base” steps are a little confusing. Are the Out and In buttons supposed to move the sleeve? (it doesn’t for me)
Or do you just estimate where your tip and base are and pick a %?
I was able to figure out what settings it was changing in the .json and manually configure (though the depth issue remains), but just thought I’d mention.
They should nudge the sleeve up/down each time you press them, yes.
It’s hard for me to test things like this until I get more reports, but I’m wondering if it’s a firmware issue on my end. I’ll check I have my on the latest firmware later and go from there. I’ve reset the Handy so many times during development I could have wound up running old firmware
Can anybody let me know if their handy does NOT slowly job up/down when pressing the in and out buttons during the initial setup stage where you set your tip and base (just remove your current my_settings file to test.)
@DamnFineCoffee Just updating you. I’ve located the issue limiting strokes, and you were spot on with 20%. Super easy fix, too, so I’ll try and update later today.
You mentioning firmware earlier made me remember I rolled back my Handy to firmware v3 at some point for another program, oops! My bad!
I’ve now tried firmware 4.0.14 and now 4.0.15, these both fixed the tip and base setup so the nudging is working! Apologies for the confusion.
(FYI for anyone else, check your stroke settings on handyfeeling and make sure it’s not still set to a short range, that will block the nudging from moving out of the range)
Btw, is it possible to add a manual number% entry to the tip/base setup in addition to the nudge buttons? So you could tell the handy to go straight to like 90%, then you could just nudge it a bit to fine-tune. Because having to nudge slowly all the way from 50% or 100% is a bit tedious.
This is a really cool project, keep up the good work!
EDIT: I just saw you already replied to someone else asking about manual input for tip/base, awesome.
Gotta say – this is some good stuff man. Been trying it with some different models and it seems to be working good with some additional prompting. Pretty bare bones now, but excited to see what it’s like as you flesh it out more.
Biggest request for me right now would be to add some more variation within the individual patterns themselves if its possible to make them feel more natural. Auto mode still seems like it’s effectively having an AI control the random stroker on handyfeeling. There is definitely a lot more nuance there than that, but would be nice to have even more.
Also-- are you able to go into more detail on edging mode?
Would be cool to have integration with a locally run tts AI model as well, elevenlabs is amazing and I’m ripping through credits lol.
Very freaking cool!
Got this all set up and looking forward to giving it a shot later.
Reading over the thread, one thing you might consider is buttplug.io for device control.
They’ve done a ton of work over there and have a huge list of supported devices already.
When you query the API, you’ll get back a list of device names and control types/axis which could open you up to some pretty wild intelligence I’d think.
i fixed it on my side with the same fix as for 1.3
in app.py
find
span_abs = (calibrated_range_width * 0.20) / 2.0
and replace it with
span_abs = (calibrated_range_width * 1.0) / 2.0
this is what chatgpt had to say
calibrated_range_width is your allowed stroke range (e.g., 80% if min=10, max=90).
That .20 means only 20% of the full stroke range is actually used for movement, centered around your current “depth” position.
The result: the calculated min and max for the slide command are very close together, so the Handy only moves back and forth in a small band.
Why did the dev do this?
The intention may have been to provide finer “focus” near a target depth (like simulating short thrusts or edge play), but in most cases it makes all movement very shallow.