Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Remote Control

Drive physical input from any program. 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 a Teensy 4.x, or OS-level output in software mode.

Three 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.

Run the server

The server is one script — remote_access.lua — a reference implementation you can read and extend locally, no SDK update needed.

  1. Download remote_access.lua and copy it to your Rebind scripts directory (Windows: %APPDATA%\Rebind\scripts\).
  2. Open Rebind → Scripts → start Remote Access.
  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.