Rebind runs a small WebSocket server that speaks plain JSON: external code sends
HID output, reads screen and input state, and subscribes to live event streams,
all in the language you already use, with no Luau on the client side.
A web app, a Python process, a home-automation hub, or a local AI model connects to
the running Rebind instance and controls a real keyboard and mouse: standard USB
HID from the Rebind Link, or OS-level output in software mode.
Three ways to drive it
All three speak the same protocol against the same server; pick whichever
fits how you work.
- From your language: the official TypeScript, Python, and Rust clients
wrap the protocol in typed APIs, with automatic reconnection in TypeScript
and Python. The recommended path for real
programs. See Client libraries.
- From any language: the protocol is just JSON over WebSocket, so anything
that can open a socket can drive Rebind directly. The
Protocol is a single page.
- From an AI agent: the MCP server exposes screenshot,
click, type, and
run_lua as Model Context Protocol tools, so an agent
(OpenClaw, Claude Desktop, your own) drives a real keyboard and mouse.
Run the server
The server is a single script you can read and extend locally, no SDK update
needed. Two reference implementations ship:
remote.luau: recommended. Exposes the full SDK (HID,
System, Screen, Window, Input, Clipboard, App, Process, Env, Hash, Codec, Regex,
Config, File, Net, Dialog, Math, Macro, Audio, Timer, Registry, UI) over
protocol 1.2, a backward-compatible superset. The auth token is a field in
the settings panel and dangerous surfaces (shell exec, filesystem, registry,
lua.exec) are gated off by default.
remote_access.lua: the minimal v1.1 server (the
original six namespaces). Kept for compatibility; new integrations should use
remote.luau.
- Download
remote.luau and copy it to your Rebind scripts
directory (Windows: %APPDATA%\Rebind\scripts\).
- Open Rebind → Scripts → start Remote.
- It binds a WebSocket server on
ws://0.0.0.0:19561 (the port is a slider in the
script’s settings panel).
- Connect with a client library, the MCP server, or your own code.
0.0.0.0 exposes the server to every network interface. Without an auth token,
any peer that can reach the port can send input and use every enabled read or
control command. There is no script setting for a localhost-only bind. Set a
strong auth token before starting the server on any machine connected to a LAN,
and restrict port 19561 with the host firewall when remote access is not needed.