Developers

Give your agent real hands.

Your agent sees the screen, moves the mouse, presses keys, and runs Luau. Drive the same input from TypeScript, Python, and Rust over a local WebSocket.

Field demo

One prompt. Safari opens.

One prompt, start to finish. An agent opens Safari, reads Hacker News, and returns three AI stories as JSON. No browser framework. No scraping API.

The whole instruction: open Safari, go to Hacker News, return the first three AI stories as JSON. Rebind tools only.

Connect an agent

One command per client.

One command wires Rebind into Claude Code, Codex, or Cursor. Start the Remote Control script in the app and your agent has a desktop.

$npx add-mcp "bunx @rebind.gg/mcp-server" --name rebind -g -a claude-code

Then restart the client. Check the link with bunx @rebind.gg/mcp-server --selftest

GitHub(opens in a new tab)npm package(opens in a new tab)Documentation(opens in a new tab)

The whole desktop, in six groups.

One job per tool. Coordinates come back in the pixel space of the last screenshot, so the model never rescales.

perception

See before acting

Capture any display and zoom into a region at native resolution. Windows also captures a single window. On macOS, read_page reads a page as text in any browser but Safari.

screenshotscreenshot_windowzoomread_page

pointer

Clicks that land

Left, right, middle, or double click. Every click is checked against the real cursor and corrected before it lands.

clickmove_mousescroll

keyboard

Keys and text

Type into the focused element or press any key and combo, from Enter to LCtrl+L to LAlt+Tab.

typekey

windows

Windows and displays

Enumerate displays and windows, read the active window, bring one to the front, and place a window by title at a known size.

list_windowsfocus_windowposition_windowactive_windowlist_displays

scripting

Program a sequence

Launch apps, place windows, run shell commands, and search pixels in one Luau script. The agent reads the full SDK types itself.

run_lualua_docs

control

Timing and calibration

Read the cursor back, pause between steps, and calibrate mouse movement against the current setup.

get_cursorwaitcalibrate

Drive Rebind from your own code.

Remote Control listens on port 19561 by default. TypeScript, Python, and Rust clients move the mouse, type, and read pixels.

import { RebindRemote } from "@rebind.gg/client-ts";

const r = new RebindRemote("ws://127.0.0.1:19561");
await r.connect();

r.hidMove(30, -5);
r.hidPress("Mouse1", 20);
r.hidType("hello");

const { x, y } = await r.systemMouse();
const px = await r.screenPixel(x, y);
r.close();

npm install @rebind.gg/client-tsTypeScript docs(opens in a new tab)

Developers

Hand your agent the mouse.

Install v3.18.1RebindGPT

luau / typescript / python / rust