Use when an agent needs to install or use indexbind from Node, browsers, Web Workers, or Cloudflare Workers. This skill helps choose the right package, CLI,...
Browser
Rebind Computer Use
Try itDrive your machine with a real hardware keyboard and mouse via Rebind. Click, type, browse, fill forms, operate any desktop GUI. The OS sees a real USB HID device.
What it does
Drive THIS computer with a real hardware keyboard and mouse via Rebind — click, type, browse, fill forms, operate any desktop GUI. The OS sees genuine USB input, so it works even in apps that reject synthetic input.
The skill document
Rebind Computer Use
You can drive a real computer through a hardware keyboard and mouse. The OS sees genuine USB input — there is no automation API to detect, and it works in any application, including ones that block synthetic input.
Setup (do this first — the skill does nothing without it)
This skill controls the machine through Rebind, a separate app. You need Rebind installed and its relay running before the agent can do anything.
- Install Rebind on the machine to be controlled — https://rebind.gg/download (Windows or macOS). Rebind drives a genuine USB HID device (a Teensy) for truly undetectable input, or a software-mode fallback if you have no device.
- Start the relay: in Rebind, load and run the Remote Access script.
The skill talks to it over
ws://127.0.0.1:19561. This is the #1 reason a first attempt fails — no relay, nothing works. - Install this skill + register the MCP server:
openclaw skills install @usinput/rebind-computer-use openclaw mcp add rebind --no-probe \ --command bunx --arg @rebind.gg/mcp-server \ --env REBIND_URL=ws://127.0.0.1:19561 openclaw config set skills.entries.rebind-computer-use.env.REBIND_URL ws://127.0.0.1:19561 - Confirm the relay is reachable:
bunx @rebind.gg/mcp-server --selftest - Start a NEW OpenClaw session — skills are snapshotted at session start, so one installed mid-session stays invisible until you restart.
Full walkthrough (Windows pointer-precision note, auth tokens, troubleshooting) is in README.md. The rest of this file is the operating policy the agent follows once setup is done.
Script first, screenshots second
Screenshots are by far the most expensive thing you do: every one you take is re-sent on every later turn, so a screenshot-per-action loop costs quadratically. The discipline that keeps tasks fast and cheap:
- Batch every deterministic sequence into ONE
run_luacall — launching apps, placing windows, focusing, typing known text, pressing known keys, waiting for a window or process. End the script withreturnand use that return value as your verification; it costs almost nothing. - Verify once, at checkpoints — after a batch, after a navigation, before an irreversible step. Not after every keystroke.
- Prefer the cheap reads:
screenshot_window(one window, monitor-proof) overscreenshot(whole display);zoom(small crop) over either when you only need to read a value or a label;run_luareturn values over any image. - Fall back to full screenshots only for genuinely visual reasoning a script cannot resolve.
Open → place → interact
New windows open wherever the OS pleases — often on a display you are not looking at. Never guess with screenshots on a multi-monitor machine. Open the app, wait for its window, move it somewhere known, THEN look:
System.ExecDetached("cmd", {"/c", "start", "", "https://news.ycombinator.com"})
local h = Window.Wait("Hacker News", 8000)
Window.Move(h, 0, 0, 1600, 1000) -- pin to the primary display
return Window.Get(h)
Then screenshot_window that window and continue.
The visual loop (when scripts can't decide)
screenshot_window(orscreenshot) — capture. The cursor is a red crosshair. ALLclick/move_mousecoordinates are pixel coordinates in the most recent capture, never in the real screen.- Reason about what to do next from what you see.
- Act —
click,type,key,scroll,focus_window, or arun_luabatch. - Verify at the next checkpoint — cheaply (
zoom,screenshot_window, a script return value). If an action didn't do what you intended, correct and retry — do not assume success, and do not fire two blind actions in a row.
Tools
run_lua(source)— run a Luau script on the machine and get itsreturnvalue as JSON. Namespaces: System, HID, Input, Screen, Window, Process, File, Clipboard, Net, Macro, Env, Log. Your primary tool for anything deterministic.screenshot(display?)— capture a whole display.screenshot_window(title?)— capture one window (active if omitted). Smaller, cheaper, monitor-proof. Prefer this.zoom(x,y,w,h)— re-read a region of the last capture at native resolution. Read-only: click coordinates still refer to the last full capture.list_displays— enumerate monitors.click(x,y,button?,double?)— landing is verified & corrected before pressing.move_mouse(x,y)— move without clicking.type(text)— type into the focused element.key(combo)— press a key/combo. Names:Enter,Escape,Tab,Backspace, arrowsUp/Down/Left/Right, letters/digits, and modifiersLCtrl,LAlt,LShift,LMeta. Join combos with+:LCtrl+L(focus the address bar),LCtrl+C,LAlt+Tab.scroll(clicks)— wheel; positive up, negative down.list_windows(filter?)/focus_window(handle)— window management.wait(ms)— let pages/animations settle (1–10000).get_cursor/active_window— cheap state reads.calibrate— re-run the mouse scale probe (auto-runs at startup).
No shortcuts
System.Exec/System.ExecDetached exist to launch and manage applications —
not to do the task itself. If the user asked you to operate a GUI, operate the
GUI: do not curl a page instead of browsing it, and do not read an app's
files instead of its window. Shortcutting produces answers the user did not
ask for and skips the verification the GUI gives you.
Ergonomics
- Prefer keyboard shortcuts over mouse for fiddly widgets: address bars
(
LCtrl+L), tabs, dropdowns, menus. Faster and far more reliable than pixel-hunting. zoombefore clicking anything with small text.- If a capture warns the mouse is not calibrated, treat every click as unverified: verify each one and correct.
- Wait for loads (
wait500–1500ms, orWindow.Waitin a script) before capturing after a navigation. - When you learn something machine-specific (display layout, an app's quirks, where a window opens), reuse it for the rest of the session instead of rediscovering it.
Safety — non-negotiable
- Confirm before irreversible or outbound actions. Before sending an email, submitting a form, making a payment, deleting anything, or posting publicly: STOP, summarize exactly what you are about to do (recipient, amount, content), and ask the user to confirm in the chat. Only proceed on an explicit "yes".
- Never enter credentials, payment details, or 2FA codes unless the user supplied them in this conversation for this exact purpose.
- When unsure whether an action is reversible, treat it as irreversible.
- If you get lost (3 failed verifications in a row), stop and report what you see — do not flail.
Related skills
Automates desktop GUI workflows via computer use API with screenshot capture
Interact with the desktop GUI — take screenshots, list/raise windows, click with grid targeting, type text, press key combos. Use when you need to see the sc...
Run a browser-driving agent on a Linux VM — Xvfb, Chromium launch traps, egress cost tiers. Use when headless fails on your VM or Chromium dies on launch. St...
Connect to and control the Acasis Flow HID dock hardware (VID=0x35e6 PID=0xa4ac, 64-byte reports). Use when: the user asks to connect, check, switch view/pag...
GUI automation on KylinOS. V11 (Wayland/wlcom) uses wlcctrl; V10SP1 (X11) uses xdotool. Find/launch/focus windows, screenshot, click/type/drag with correct coordinates, and verify GUI results.