An SKSE plugin for Skyrim SE / AE that implements continuous follower hand-holding: a hand connection that survives walking, running, and terrain movement without breaking. Built on a combination of a Havok ball-and-socket constraint and kinematic position control.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ On AI use
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Most of this plugin's code was generated by Claude Code (Anthropic). The author (KEI997) handled:
- Spec decisions, prioritization, trade-off calls
- In-game testing and bug reports
- Pointing the AI at specific reference mod sources ("read this, use as reference")
- Reviewing and accepting/rejecting generated code
- SSEEdit ESP construction, Papyrus compilation, OAR animation authoring
All reference sources the AI read are publicly-licensed. Per-feature attribution is listed in the GitHub README:
https://github.com/Kei-BWV997/TETHER
If any listed author objects to their source being used this way, please contact and I will rework the affected feature or adjust the credit.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Features
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- One hotkey to engage / release the hand-hold (default H, works with both keyboard and Xbox controller)
- While tethered, hands are physically bound via a Havok ball-and-socket constraint (the palms actually stay stuck together, not just visually near each other)
- The follower is kept directly behind the player via KeepOffsetFromActor
- While tethered, the player's max movement speed scales with distance to the follower — try to sprint away and you'll automatically be slowed down to a speed the follower can match (natural since you're literally holding their hand)
- Custom OAR conditions let you swap in dedicated tether animations
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Animation status in v1.0.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Only ONE pattern currently has an authored motion: player-male (the puller). The other three folders (player-female, follower-male, follower-female) exist as empty structure — they contain only the OAR config.json, no .hkx files. Actors matching those conditions will just play vanilla locomotion while tethered.
The plugin ships this structure so users can drop their own .hkx into the correct folder to enable that pattern, or wait for future updates / a community animation pack.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Known issues
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Sometimes on engage, the follower doesn't start moving to the tether position. Workaround: release, walk a few steps away, then re-engage. Cause not yet identified.
- Third-person only (no first-person support)
- One active tether at a time (no multi-follower)
- Doesn't work while a weapon is drawn (deliberate — releases on draw)
- Very rare CTD possible if an actor's state changes at an unfortunate moment (auto-release handles the common cases: cell change, save load, weapon drawn, etc., but edge cases remain)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ MCM options
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Toggle key rebind (keyboard + gamepad)
- Follower offset position, Follow / Catchup radius
- Elastic tether curve (ideal/slack distance, speed multipliers at both ends)
- Follower speed boost while tethered
- Palm attachment offset
- Auto-release toggles (on weapon drawn / on combat start / on extreme distance)
- R key resets a single option; "Reset All Settings" button
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Source code / technical details
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Open source under MIT license:
https://github.com/Kei-BWV997/TETHER
The GitHub README covers:
- Per-feature reference-source table (which mods were used for which techniques)
- Technical details of each feature (hook sites, Papyrus APIs called, state machine)
- License and third-party file handling
Bug reports and pull requests are welcome via GitHub Issues.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ About the author
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
I'm normally an OStim animator, active on the OStim Community Discord. If you want to chat about this mod, request features, or just say hi — come by:
(TETHER is not an adult mod, but I develop from that community and that's where I hang out.)
What's New in Version 1.1.0
Released
TETHER v1.1.0
https://file.garden/aD8d9pSm3U0NqMYA/TETHER/0929 (1).mp4
IMPORTANT - GAME VERSION
I play on Skyrim 1.6.1170.0 and built and tested this version only there. It is NOT updated for the recent 1.7.x Skyrim updates. If you are on 1.7.x and want to use it, downgrade to 1.6.1170.
WHAT'S NEW
1. Head no longer tilts upward while holding hands
While holding hands, the player's (and follower's) head used to look diagonally upward even when the animation was authored looking straight ahead.
Cause: to make the hand-holding physical, TETHER puts both actors into an active ragdoll state. At that moment the angle between the upper body and the head is locked in whatever pose the actor happened to be in. The hand-holding animation then leans the chest back, but the head keeps its old angle, so it ends up pointing upward. Head animation from the idle is ignored from that point on.
Fix: since that relation gets locked anyway, TETHER now locks it in the right pose. When you start holding hands, a short reach-out animation (about 1 second) plays first, while the actors are still fully animated. Only after that does the active ragdoll and hand constraint kick in, so the upper body / head angle that gets locked is the correct hand-holding one.
2. SkyPrompt support
A "Hold hands" prompt now appears over a follower in front of you. Press the key to hold hands. Press the same key again to let go (no prompt is shown while holding hands). If you prefer no prompt, turn it off in the settings and the key works directly, like the old hotkey.
3. Settings moved to SKSE Menu Framework
The SkyUI MCM is gone. All settings are now in SKSE Menu Framework under TETHER > Settings and are saved to Data/SKSE/Plugins/TETHER.ini. Changes apply immediately, no reload needed.
4. TETHER.esp is no longer needed
No ESP, no MCM quest, and powerofthree's Tweaks is no longer required.
REQUIREMENTS
- SKSE64
- Address Library for SKSE Plugins
- Open Animation Replacer
- SkyPrompt (required for the "Hold hands" prompt; without it, turn the prompt off and use the key)
- SKSE Menu Framework (needed to change settings; without it TETHER runs with the values in TETHER.ini)
UPGRADING FROM 1.0.x
1. Load your game, make sure you are not holding hands, and save.
2. Install 1.1.0 over the old version. Make sure TETHER.esp and Scripts/TETHER_MCM.pex are removed (remove the old version first if your mod manager keeps them).
3. Load the save. Skyrim will warn that the save relies on content that is no longer present (TETHER.esp). This is expected; continue. The old TETHER MCM entry disappears on its own (SkyUI cleans up removed menus on load).
4. Your old MCM values are not carried over. Set them again in SKSE Menu Framework.
Optional: the save keeps a small amount of orphaned script data from the old MCM. It is harmless; you can clean it with ReSaver if you want.
SETTINGS (SKSE Menu Framework > TETHER > Settings)
General
- Keyboard key (default H): holds hands, and lets go while holding hands.
- Gamepad button (default none): same, for gamepad.
- Show 'Hold hands' prompt (default ON): ON shows the prompt over a follower in front of you. OFF shows nothing; press the key while a follower is in front of you.
- Hold hands distance (default 512 units, ~7 m): the prompt appears, and hand-holding can start, only when the follower is within this distance and roughly in front of you (within 45 degrees of your character's facing).
- Auto-release: On weapon drawn (default ON), On combat start (default OFF), On extreme distance (default OFF).
- Distance threshold / Duration (defaults 500 units / 3 s): used by "On extreme distance". Releases when the follower stays farther than the threshold for that long.
Position
- Offset right (default 0): follower's sideways position. Negative = left.
- Offset back (default -30): follower's forward/back position. Negative = behind.
- Follow radius (default 30): within this distance from its spot the follower stops moving.
- Catch-up radius (default 60): beyond this distance the follower runs to catch up.
Tension & Grip
- Ideal distance (default 40): below this player-follower distance your speed is not limited.
- Slack distance (default 120): at this distance your speed is limited the most. In between it changes gradually. (You can't suddenly run off while holding someone's hand.)
- Player speed near / far (defaults 1.00x / 0.35x): your speed at the ideal and slack distances.
- Follower speed boost (default 1.30x): helps the follower keep up.
- Palm offset (default 5): how deep into the palm the hands connect. 0 = wrist.
Advanced (Animation-critical)
- Grip delay (default 1.00 s): time from the start of the reach-out animation until the hands connect. The pose at that moment is the one kept while holding hands. Tuned to match the shipped animation; changing it can make the head angle wrong again.
Presets
- Restore from shipped defaults: resets everything to the values shipped with the mod.
- Export current settings as defaults: for mod authors; writes TETHER_defaults.ini.
If something breaks, please attach Documents/My Games/Skyrim Special Edition/SKSE/TETHER.log. I'm usually around on the OStim Community Discord server, feel free to come by.
1. Install all Requirements first
2. Install the TETHER zip via your mod manager (MO2 / Vortex) and enable it
3. Make sure TETHER.esp is enabled in your load order
4. Launch the game, load a save
5. Confirm "TETHER" appears in the MCM list
■ In-game usage
- With your weapon sheathed
- Look directly at your follower
- Press the hotkey (default H, rebindable in MCM) to hold hands
- Same hotkey releases
- Drawing a weapon automatically releases
■ Verifying it loaded correctly
On a clean launch, Documents\My Games\Skyrim Special Edition\SKSE\TETHER.log should contain lines like:
TETHER v1-0-0-0
TETHER loaded
OAR condition register (TETHER_IsTetheredPlayer): OK
OAR condition register (TETHER_IsTetheredFollower): OK
Settings::Load: 16/16 globals bound from TETHER.esp
kDataLoaded: TETHER ready
If you see "Settings::Load: 0/16", the plugin can't read EditorIDs. Make sure powerofthree's Tweaks is installed and TETHER.esp is enabled.
■ Uninstalling
Release the tether (make sure you're not currently holding hands), save the game, then disable the mod. This avoids leaving any Havok state in the save.
- CommonLibSSE-NG — Ryan-rsm-McKenzie / powerof3 (SKSE runtime API)
- Precision — Ersh (build system template)
- Open Animation Replacer — Ersh (OAR SDK)
- OpenAnimationReplacer - RaySense — Smooth (OAR custom-condition implementation pattern)
- FollowersAsCompanions — Alek323 (KeepOffsetFromActor usage and initial parameter values)
- FOMS — coexistence principle for follower AI management mods
- Wade In Water Redone / Keep Up! / Dragonborn's Cohort — TESFAN (SetMaximumMovementSpeed trampoline hook technique)
- FeetOfSkyrim — fenix31415 (post-behavior animation-layer hook approach)
- HIGGS — adamhynek (bone-local-transform override layer concept)
- Bow Charge Plus / Quick Light SE / Simple Recycling (MCM Papyrus structure reference)
- Gulan0 walk_run_sprint - OAR — GUlan0 (OAR JSON structure and folder conventions)
- asdsad121's 2024 Nexus forum post — the discovery that AddHavokBallAndSocketConstraint works on alive actors if ForceAddRagdollToWorld is called on both first
- @Ashihito1 (X/Twitter) demo video — the visual reference that led me to switch to the constraint approach
Fumito Ueda — ICO (2001), the origin point for the idea of a game built around continuous hand-holding
Anthropic — Claude Code (the code-generation AI)
