Synthesize organically varied, human-like mouse movement.
This project aims to test the abilities of deep-learning for mouse imitation.
demo.mp4
npm i -g mousecrackWarning
This project is still experimental! For educational purposes only.
Available as an SDK (for developers) and CLI (for agents).
import { move, steps } from 'mousecrack';
await move(200, 400);
// or alternatively...
const from = { x: 100, y: 200 }
const to = { x: 200, y: 400 }
await steps(from, to);
// [
// { x: 100, y: 200, t: 0 },
// { x: 95, y: 202, t: 10.528131778472712 },
// { x: 90, y: 210, t: 21.040190062833986 },
// { x: 81, y: 223, t: 31.892832399406224 },
// ...mousecrack move 200 400 # (x, y)
mousecrack steps 100 200 200 400 # from (x, y), to (x, y)Install the Skill
For Claude Code:
/plugin marketplace add puffinsoft/mousecrack
/plugin install move-mouse@mousecrack
For Codex:
codex plugin marketplace add puffinsoft/mousecrack
codex plugin add move-mouse@mousecrack
To support all hardware systems, we develop two models- Standard (2x128 LSTM) and Lite (2x64 LSTM).
Append lite or standard as a parameter to each CLI command to choose:
mousecrack move 200 400 lite # or standard
mousecrack steps 100 200 200 400 lite # or standardAnd with the SDK:
import { ModelType, move, steps } from 'mousecrack';
await move(200, 400, ModelType.LITE);
await steps(from, to, ModelType.LITE);Caution
Lite is not recommended, unless your hardware forces you to.
It performs inference, on average, 29% faster, but the end-to-end generation time can take up to 8x as long.
This is because the smaller model tends to veer off course more often.
Mousecrack treats mouse prediction like a time forecasting problem.
It models mouse movement as a change in position (dx, dy) and time (dt), and tries to predict the next step in this multivariate time series.
To avoid the mode collapse problem, Mousecrack uses a Mixture Density Network to model several trajectories as a probability distribution.
Mousecrack is open source software, licensed under the MIT license.
