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 — in the language you already use, 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.

Four ways to drive it

All three speak the same JSON protocol against the same server; pick whichever fits how you work.
  1. From the browser — open a web page that connects to the server and sends commands as you click. Good for dashboards, control panels, and a phone or tablet on the same network. See what this looks like in the browser demo.
  2. From your language — the official TypeScript, Python, and Rust clients wrap the protocol in typed, auto-reconnecting APIs. The recommended path for real programs. See Client libraries.
  3. 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.
  4. 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.luaurecommended. 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 the browser demo, a client library, or your own code.
Note: 0.0.0.0 means the server is reachable from the LAN, not just localhost — there is no script-side way to restrict it. Set an auth token whenever the machine is on an untrusted network.