70BPMBLE REQUIREDSIMULATOR ACTIVENO SKIN CONTACTHOLDING LAST READINGSIGNAL RESTOREDWARM-UP: 5:00DUAL STIM (-15 BPM)DECAY: -0 BPMLEARNED -0 BPMCEILING140 BPMHOLD TO 140MIC LISTEN
Resting HR:
Climax HR:
WATCHDOG: NO HEART-RATE READING, MOTORS HALTED
💬"Calm and steady. Breathe."
Voice Active
Primary Channel (Strokers / Machines)
Zone: 0-100%0%
Secondary Channel (Prostate / Milker)
0%
GAME MODE ACTIVE
SOFT LANDING IN PROGRESS: DECELERATING TO 0%
⚡ Stimulation Intensity
100% (Default Balanced)
50% Gentle100% Balanced (Center)150% Intense
Real-time stimulation multiplier. Dial left for lighter tease or right for more aggressive power without changing your HR thresholds.
Edges
0
Pauses
0
Active Mode
Full Length Strokes Only
Locks physical sleeve travel to full bounds regardless of mode
Configuration
Connect to chest straps or watches broadcasting Bluetooth GATT Heart Rate (0x180D).
Current Device
No device paired
Battery: --%
Status: Not connected
Test motor reactions without a physical sensor.
Simulated Heart Rate70 BPM
Enter your Handy Connection Key from handyfeeling.com.
Status: Offline
Stimulation RolePrimary (Tease)
Max Speed Cap:100%
Bounds: 0% - 100%
Protects against sleeve slip-out or base jamming. Strokes scale inside these physical bounds.
Min % (Lower Guard):
Max % (Upper Guard):
Keeps the carriage off the mechanical ends of the slider. The Handy's firmware stops the
slider when it reads as blocked, and a carriage driven hard into its end stop can read
exactly like that. Only strokes that reach within this margin of 0% or 100% are moved;
a narrower Travel Envelope is sent untouched, and 0 sends the full range.
A full-length stroke reaches the device as 5% - 95%
Bridge toys via Intiface Central (server started, URL ws:// not wss:// for localhost). OSR2 / SR6 / OSSM: add the serial/T-code device in Intiface first, connect EdgeLoop to ws://localhost:12345, then use Test on each Linear and Rotate axis. Stroke maps to Linear; twist/roll map to Rotate. Assign leftover axes Secondary or OFF. Roles, caps and rotation settings are remembered per toy.
WebSocket URLOffline
Connect to Intiface server to detect your toys.
Drive an OSR2, SR6, OSSM or any other T-Code v0.3 stroker straight over its USB serial port (115200 baud), without Intiface Central. Close Intiface Central, MultiFunPlayer or any other app that holds the COM port first, then press Connect and pick the port in the browser dialog. On Linux your user must be in the dialout group.
Serial portOffline
No device
Connect to list the device axes.
Bounds: 0% - 100%
Protects against sleeve slip-out or base jamming. Linear (L) axes scale inside these physical bounds; STOP rests at the lower guard. Shared with The Handy modal.
Min % (Lower Guard):
Max % (Upper Guard):
L0 (stroke) is Primary by default and follows the stroke zone and the hardware travel envelope; V0 is Secondary; every other axis is OFF until you assign it. Rotation axes swing around centre by the engine speed. Tap Test to see which motor an axis is. Roles, caps and invert are remembered per device name.
Recorded Sessions & Funscripts
No completed sessions recorded yet.
5 Minutes
Restricts strokes to lower half (0%–55%) while soft, expanding as erection builds.
Target Mode
Exact Session Length:
min
Mystery Window:
tomin
Endless Mode:Runs indefinitely until manually stopped
With The Oracle, climax and denial stay locked until the Mystery minimum you typed - always, including on the roll that lands on it. A Fixed length has no window of its own, so there they unlock halfway through instead. Endless has no minimum.
Endgame Trigger
What the strokers do once your pulse crosses the pullback percent of Climax HR below. Full Stop parks the primary at 0%; Crawl keeps a 10% micro-motion so the edge stays alive. This applies in every mode that teases you down, including every Edge Training and Oracle state you reach while on the mark (the training hold and its recover alike). Two modes it does not govern: Survival Mode, where the speed climbs on its own clock whatever your pulse does and a breach of the ceiling ends the run, and Ruin & Leak, whose 18 s lockout cuts the primary dead whichever you picked. Force Orgasm overrides both.
% of Climax HR
100% is the Climax HR you typed; 95% pulls back early. It never goes above 100%: your Climax HR is a hard ceiling. The percentage is taken from the working ceiling, so dual-stim dampening, decay and the learned offset move the mark down with it (the preview below and the cockpit HOLD TO badge show where it sits right now). Crawl / Full Stop and the stall timers start at this mark, and it is always kept far enough above your Resting HR to leave a release band. The edge releases 5 BPM below the mark.
Pullback at 140 BPM (100% of 140)
Two timers, only used with Crawl. Allow on the edge is how long pulse may sit at the pullback mark before the primary is cut. Pause the primary is how long that halt lasts (then crawl resumes and the allow window starts again). Turn the guard off to stay on crawl until you recover, Force Orgasm, or STOP. The secondary channel keeps running either way.
Allow on the edge:
sec
Pause the primary:
sec
ALWAYS ON
Stops every motor and pauses the session when no usable pulse has arrived for the timeout. A short gap keeps the last reading instead of dropping to 0. Watches and relay apps often update only every 2-5 s, so keep this at 8 s or more for them.
Signal-loss timeout:
sec
Auto-resume when signal returnsOff: the session stays paused until you press RESUME.
Offsets ceiling down automatically when secondary prostate toys are active.
Ceiling Offset:
BPM
Every X Edges:
Drop Heartrate Max By:
Heartrate Floor:
Shows each cue on the dashboard and speaks it with the browser's local voice.
One phrase per line. As many lines as you want for each event — a random unused line is picked each time. Empty a box and that cue is muted: it says nothing and paints nothing, and Export phrases carries the mute so Import phrases restores it. Tokens: {hr}{maxHr}{minHr}{edges}{minutes}.
A hand-written file needs a # edge style section header above every phrase. Anything before the first header (a title, a date, a note) cannot be placed, so the import is refused and names the line rather than filing it as a phrase and reading it back at you; start such a line with // to make it a comment. A file with no headers at all is taken as build-up encouragement.
Encouragement every
sec (0 = off)
Listens for your voice and panting. The louder you get above the gate, the closer the loop treats you to the edge, so the tease modes slow down sooner (extra BPM on the speed the toys run at, never past Climax HR). It can only ever ease the toys off, on both channels: every part of the engine that RISES with arousal - the climb in Edge Training and The Oracle, and the milking modes' secondary - is driven by your measured pulse alone, so a loud room can never push a toy harder. The BPM readout, the edge counter, the games, the guards and the saved record all use the pulse your monitor measured. While the signal watchdog is holding a reading the boost is frozen at its last measured value rather than dropped, so a missed packet cannot make the toys jump. Stroker and vibrator rumble is filtered out. Raise the noise gate until the meter stays dark with toys running, then speak or pant to confirm it lights. Set extra BPM to 0 to listen without affecting the toys. The cockpit badge reads MIC +N only while a boost is really reaching the toys, and MIC LISTEN otherwise.
Live level
Tap Test, then make noise. Toys should stay below the gate.
Noise gate
40
Louder → closer (max extra BPM)
8
Backup & Restore
Exports every Session Setup value (voice-phrase lists included), your Handy channel role and speed cap, your saved Intiface and T-Code device maps, and the age / wizard flags. Import restores them and tells you what it put back. Session history is never included. Phrase files can also be exported on their own from the Audio & Mic tab.
Local Bio-Learning Memory
Zero breakthrough events recorded. Calibrated limits active.
Tap Came Early after an accidental climax. EdgeLoop stores that locally and lowers the working climax ceiling on every future session (your typed Climax HR stays as the baseline). Wipe memory to restore the original ceiling.
Share this direct WebRTC link with a single controller. A second controller replaces the first.
1-on-1 Session URL
Controller Status:Waiting for controller...
Share this link with any number of read-only viewers. They see the live telemetry exactly as the controller does, but every control is disabled. Only the 1-on-1 link can control the session.
Viewer Join Link
Connected Viewers0 Watching
No viewers currently connected.
Health & Operational Disclaimer
1. Age Restriction: EdgeLoop is designed exclusively for adults 18 years of age or older.
2. Health Safety: Discontinue use immediately if you experience dizziness or palpitations.
3. Zero Content Hosting: EdgeLoop does not host adult media; it is a telemetry controller.
4. Privacy: Telemetry and keys remain strictly in your browser session.
EdgeLoop reads any sensor that broadcasts the standard Bluetooth Heart Rate service. Then click HR Monitor → Scan & Pair.
Galaxy Watch: install the "Heart for Bluetooth" app on the watch and start its broadcast.
Apple Watch: broadcast with HeartCast or Echo to EdgeLoop on a second device (PC, Mac, tablet). iOS cannot loop back on the same iPhone; in Bluefy on the iPhone, pair a chest strap instead.
Budget GloryFit / Da Fit watches do not broadcast the Heart Rate service and cannot work.
Chest straps
Polar H10, Coospo H6M, Cycplus H2 Pro, Garmin, Wahoo: pair directly; the most stable option.
Wet the electrodes before wearing, or the strap reports nothing or poor contact.
Browsers
Chrome / Edge on Windows, macOS, Android and ChromeOS: works out of the box. iPhone / iPad: use Bluefy.
Linux Chrome: enable chrome://flags/#enable-experimental-web-platform-features and use a native (non-Flatpak / non-Snap) browser, or Bluetooth stays hidden.
Firefox and Safari do not support Web Bluetooth.
Step 1 of 3
Connect a heart rate monitor
Tap HR Monitor and Scan & Pair a BLE strap or watch. Chest straps (Polar H10, etc.) stay more stable than optical sensors. You can also use the built-in HR simulator while testing.
Apple Watch cannot loop back on the same iPhone. Broadcast HeartCast/Echo to EdgeLoop on a PC, Mac, or tablet, or use a chest strap.
Step 2 of 3
Connect your toys
Three ways in: The Handy with its Wi-Fi connection key; Intiface Central at ws://localhost:12345 for vibrators and Bluetooth toys; or TCode Serial for OSR2, SR6 and OSSM strokers straight over USB (Chrome or Edge on a desktop, no Intiface needed). The heart-rate simulator in the HR Monitor modal stands in for a sensor, not for a toy.
In the TCode or Intiface tray, assign each axis Primary, Secondary, or OFF, then tap Test so you know Linear (stroke) and Rotate (twist/roll) are mapped. The Hardware Travel Envelope (Handy or TCode modal) bounds every stroke.
Step 3 of 3
Set your ceiling and start
Enter Resting HR and Climax HR, then open Session Setup for duration, warm-up, and guards. Pick a mode (or a game) and press Start when both HR and a toy are ready.
The engine throttles automatically. If you go over, tap Came Early so local bio-learning lowers the working ceiling next time. Two guards watch the sensor: the signal-loss timeout (3-20 s) pauses the motors when readings stop, and auto-resume picks the session back up when they return.
Age Verification
You must be at least 18 years old to use EdgeLoop.
Opened as a local file — the app cannot start
Chrome blocks the JavaScript modules when you double-click index.html. Serve the folder over http, then open that address:
cd ~/Desktop/EdgeLoop
python3 -m http.server 8787
Then visit http://127.0.0.1:8787 (or use npx wrangler dev).