Skip to main content
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.
  1. 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.
  2. 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.
  3. 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.
  1. Download remote.luau and copy it to your Rebind scripts directory (Windows: %APPDATA%\Rebind\scripts\).
  2. Open Rebind → Scripts → start Remote.
  3. It binds a WebSocket server on ws://0.0.0.0:19561 (the port is a slider in the script’s settings panel).
  4. 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.