Windows · macOS · Linux

Make the gear you already own scriptable.

Every keypress and mouse movement runs through your Lua scripts at up to 8,000 Hz, then outputs through real USB hardware your computer sees as a standard keyboard and mouse.

RebindGPT

Describe what you want. AI writes the script.

RebindGPT turns plain English into a working Rebind script — full SDK, ready to run on your device in seconds.

A programmable input primitive.

Your physical devices are captured in a sealed environment. A scripting engine transforms every event. Dedicated hardware outputs the result — output reaches your computer as standard USB input.

Hardware-isolated output

Output leaves through real USB hardware, so your computer sees a standard keyboard and mouse. The transformation layer — your scripts, your logic, your timing — runs on dedicated hardware with deterministic timing. No driver hooks, no host-side software footprint.

8,000 Hz Transform Pipeline

Every input event passes through your code at 125 microsecond intervals. Sub-millisecond interception, modification, suppression, or injection — with deterministic timing independent of system load.

Windows, macOS, and Linux

One unified protocol across all three desktop operating systems. Same scripts, same hardware, same behavior. Write on Windows, run on macOS. Switch platforms and nothing changes.

Any USB Device, Zero Drivers

Plug in any keyboard or mouse you already own. No proprietary peripherals. No vendor lock-in. Your devices are captured at the USB level and forwarded through the scripting engine.

Full Scripting SDK

20+ namespaces: HID output, screen sampling, window detection, HTTP servers, WebSocket, clipboard, macro recording with drift compensation, shared memory IPC, and more. Scripts define their own UI panels.

HTTP request in. Real mouse movement out.

Run an HTTP or WebSocket server inside a script — a web app, a Python process, or an AI model drives a real keyboard and mouse. ~1 ms p50 RPC, ~100k fire-and-forget writes/s, up to 8,000 Hz output. Typed clients in TypeScript, Python, and Rust.

Context-aware scripting

Read pixel colors, detect the active window, react to application state, and sample mouse position to drive your scripts — output reaches your PC as standard USB HID.

Not a config file. A real desktop app.

A full Luau editor with autocomplete, an auto-generated settings panel for every script, live telemetry, and a built-in marketplace — on Windows, macOS, and Linux.

The Rebind script editor — Luau code with an auto-generated config panel of sliders and toggles
The Rebind dashboard — live CPU and memory telemetry with subsystem status
Rebind settings — transport, preferences, diagnostics, and developer options

SDK & Examples

Scripts are Luau with full access to HID output, screen sampling, network I/O, window management, and macro playback. Every example runs at hardware level.

1-- rebind: min_sdk=3.0.0
2-- rebind: name=WASD Remapper
3-- rebind: description=Last-input-wins resolution for opposite key pairs
4
5local cfg = UI.Schema({
6 enabled = UI.Toggle(true, { label = "Enable" }),
7})
8
9-- opposite key pairs to resolve: hold both, the newest wins
10local pairs_ = { A = "D", D = "A", W = "S", S = "W" }
11
12local held = {}
13local virt = {}
14local last = {}
15
16local function setVirt(key, on)
17 if virt[key] == on then return end
18 if on then HID.Down(key) else HID.Up(key) end
19 virt[key] = on
20end
21
22local function resolve(key)
23 local opp = pairs_[key]
24 if held[key] and held[opp] then
25 last[key] = true
26 last[opp] = false
27 setVirt(key, true)
28 setVirt(opp, false)
29 else
30 setVirt(key, held[key] or false)
31 setVirt(opp, held[opp] or false)
32 end
33end
34
35function OnDown(key)
36 if not cfg.enabled or not pairs_[key] then return true end
37 held[key] = true
38 resolve(key)
39 return false
40end
41
42function OnUp(key)
43 if not cfg.enabled or not pairs_[key] then return true end
44 held[key] = false
45 resolve(key)
46 return false
47end
48
49function OnBlur()
50 for k, _ in pairs(virt) do setVirt(k, false) end
51 held = {}
52 virt = {}
53end

Questions & Answers

Your mouse.
Your keyboard.
Your rules.