OpenComputerUse

Desktop and mobile app control for agents, run in background sessions over MCP

By Astrid Gealer (individual) Rust Local · stdio Developer toolsTesting

16 popularity score ★ 20

Connect your client

Local (from source)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
brew tap IAmJSD/OpenComputerUse https://github.com/IAmJSD/OpenComputerUse
brew trust iamjsd/opencomputeruse
brew install --cask opencomputeruse
Claude CodeTerminal
claude mcp add opencomputeruse -- opencomputeruse mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "opencomputeruse": {
      "command": "opencomputeruse",
      "args": [
        "mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "opencomputeruse": {
      "command": "opencomputeruse",
      "args": [
        "mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "opencomputeruse": {
      "type": "stdio",
      "command": "opencomputeruse",
      "args": [
        "mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.opencomputeruse]
command = "opencomputeruse"
args = ["mcp"]
Gemini CLITerminal
gemini mcp add --scope user opencomputeruse opencomputeruse -- mcp

Settings 11

OCU_MOBILE Optional: 1 turns on the phone, simulator and emulator tools; 0 turns them off (default off).
OCU_LINUX_DISPLAY Optional: Default Linux display for sessions: x11 (default) or wayland.
OCU_RECIPE_PROVIDER Optional: Which decision model run_recipe uses.
TYPESAFE_API_KEY Optional: Key for the TypeSafe Jev recipe model.
CLOUDFLARE_ACCOUNT_ID Optional: Cloudflare account for the Workers AI recipe model.
CLOUDFLARE_API_TOKEN Optional: Cloudflare token for the Workers AI recipe model.
OCU_LINUX_FILE_PORTAL Optional: 1 lets choose_file answer Linux file dialogs through a private portal.
OCU_WINDOWS_PANEL_HOOK Optional: 1 loads a hook so Windows open/save dialogs go to the agent.
OCU_VIEW_LISTEN Optional: Address for the Linux live view (needs OCU_VIEW_TOKEN).
OCU_VIEW_TOKEN Optional: Token for the live view, at least 16 characters.
OCU_LOG Optional: Set to debug for logs on stderr.

What it does

OpenComputerUse is a computer-use server written in Rust. An agent opens a session on a named app, gets a session id back, and then takes screenshots, reads the accessibility tree and sends clicks, drags, scrolls, keystrokes and typed text to that app's windows. The aim is that the app runs out of the way: on macOS it stays behind your own windows without taking the pointer or keyboard focus, on Linux each session gets a private Xvfb display or a built-in headless Wayland compositor, and on Windows apps are started in a Job Object and sent to the back. Sessions and the apps they started are cleaned up when the server process exits.

Each action returns a new screenshot unless the call turns that off, and elements from the tree (ids such as e12) can be clicked, given a value or sent actions directly. Optional extras: Android phones, Android emulators and iOS simulators or devices as sessions; a run_recipe tool that hands a fixed list of steps to an outside decision model (TypeSafe Jev or Cloudflare Workers AI); a token-protected HTTP mode (serve) so other machines or several clients share one server; and a Linux live view where a person can watch and drive a session from a browser.

From the v0.8.0 source (src/tools.rs), the macOS build also offers an unlock_screen tool not listed in the README's tool table, which unlocks a locked Mac when "Work while the Mac is locked" is turned on. The device tools appear only when mobile support is switched on, and run_recipe only when a recipe provider is set up, so the tool list a client sees varies by platform and settings.

What it needs

RuntimeRust

macOS, Linux or Windows; install the Homebrew cask or a release binary (macOS app, or a single binary on Linux and Windows). macOS needs Accessibility and Screen Recording permission granted to the OpenComputerUse app. Linux needs Xvfb for the default X11 display (or libpixman-1 and xkb-data for Wayland) and dbus-daemon for the accessibility tree. Phones need adb (Android 11+ for the helper) or Xcode for iOS. Recipes need a TypeSafe or Cloudflare account and key.

Limits

On Linux, apps without AT-SPI (Xt, Motif, SDL, most games, Java without the ATK wrapper) give no accessibility tree, so only screenshots and coordinates work; Wayland is opt-in and X11-only apps need X11. choose_file works on macOS, on Windows, and on Linux only with the file portal option on. Device tools are off by default; move_mouse fails on devices, and without the Android helper only ASCII is typed. Recipes have no branching and stop at a step they cannot place. The HTTP mode has no TLS and listens on every adapter unless limited. Live view is Linux only.

Who it suits

Suits developers who want an agent to operate native desktop apps, or test mobile apps on simulators and phones, without giving up their own screen while it works. It runs locally and is a personal project rather than a vendor product. If the target is only web pages, a browser-automation server is a narrower choice; on Linux, apps with no accessibility support reduce it to screenshot-and-click work.

Tools 33

start_session
Launch an app (or attach to the front window) and return a session id and its windows
end_session
End a session and close what it started
list_sessions
List the calling client's live sessions
list_windows
List a session's windows with ids, titles and frames
screenshot
Capture a session window, including one that is covered
get_ui_tree
Read a window's accessibility tree with element ids, roles and actions (depth 25, 1500 nodes by default)
click
Click at window coordinates or on an element id, with optional double/triple click and modifiers
move_mouse
Move the pointer to a point in the window
drag
Drag between two points, optionally holding modifiers
scroll
Scroll at a point in the window
type_text
Type a string into the app
press_key
Press keys or chords such as cmd+s
set_value
Set an element's value, including a dropdown option
element_action
Run an accessibility action such as press, focus or showmenu on an element
choose_file
Answer an open or save dialog with paths, or cancel it
wait
Pause so the app can catch up
permissions
Report which OS permissions are needed and whether they are granted
unlock_screen
macOS: unlock a locked Mac when the setting allowing it is on
run_recipe
Run a fixed list of steps using the configured decision model
phone_list
List connected phones and tablets and what each still needs
phone_apps
List apps on a connected device
phone_start_session
Start a session on an app on a connected device
ios_simulator_list
List iOS simulators (macOS)
ios_simulator_apps
List apps on an iOS simulator
ios_simulator_start_session
Start a session on an app in an iOS simulator, booting it headless if needed
android_emulator_list
List Android virtual devices
android_emulator_apps
List apps on an Android emulator
android_emulator_start_session
Start a session on an app in an Android emulator
http_server
Turn the HTTP server for other devices on or off
list_devices
List devices that hold a key for this computer
generate_skill
Create a key and skill text for a new device
regenerate_key
Replace a device's key, ending its sessions
remove_device
Remove a device and its key

Similar servers