Skip to content

Releases: mhrsdev/zero-use-computer

computer-use-mcp v5.5.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 21:49
22c399c

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v5.5.0

The settings panel in Persian, Chinese and Russian, an import you can look
at before it is made, settings that go back with the program, and stop and
settings buttons on the overlay's label
(all commits).

  • The settings panel speaks Persian, Chinese and Russian (English as
    before): a language picker at the top, panel.language (auto follows
    the browser). Persian is laid out right to left (mirrored layout, the
    switch's knob, tables and numbers kept left to right, no letter spacing
    that would break joined letters) and brings its own font (Vazirmatn, SIL
    OFL); Chinese uses the system's. Every setting, its help, the guide pages
    and the messages are translated; a text without a translation shows in
    English. scripts/panel-i18n.mjs makes the list of texts and
    scripts/panel-i18n-check.mjs checks a translation against it; a test
    fails when a text of the page isn't in the list or a language lacks one.
  • An import is shown before it is made. Paste settings and the page lists
    each one as it is now and as it would be, which ask for a yes, and which
    this version can't take (a setting only a newer version has, or a value
    out of range): those are flagged, left out, and named afterwards. An
    export says which version made it (# Zero Use Computer 5.0.2 settings),
    so the page can say why a setting is unknown. The settings from before an
    import are kept (settings-before-import.toml) and Undo the last
    import
    brings them back.
  • Going back to a version brings its settings back. The settings file is
    kept with the program an update replaces, and update --rollback / the
    panel's Go back put it back with it (--keep-settings or the
    checkbox to leave the settings as they are); the ones it replaces stay
    beside the file as config.toml.before-rollback.
  • A page of the panel that waits on the server no longer lands on the page
    the user went to meanwhile.
  • Stop and settings buttons beside the overlay's label
    (overlay.show_buttons, on). A round stop button on the side the label
    starts from stops every agent, as the stop key does; with the pointer
    on it, a list drops out with "All agents" and each agent as its label
    names it ("2 · codex", its state colour, its app): a row stops that one
    agent alone (it is refused its calls as with the stop key), or lets a
    stopped one continue. A gear on the other side opens the settings panel,
    as Ctrl+Alt+J does. They light up under the pointer, say what they do,
    and are at least 24 px across. Only they and the list take the pointer:
    the rest of the overlay stays click-through, and nothing takes the
    keyboard focus. The agent can't press them: before it moves or clicks
    the real mouse the overlay lets its input through them (and says so
    before the engine goes on), until the action is over. With any agent
    stopped, the stop key now lets every agent continue.
  • X11 tested (Xvfb, two agents on a hub, clicks through XTEST); the
    Windows, macOS and Wayland code is built for those systems but not yet
    run there. Without a pointer to read (a Wayland seat without one), the
    buttons aren't shown.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

Full Changelog: v5.0.2...v5.5.0

computer-use-mcp v5.0.2

Choose a tag to compare

@github-actions github-actions released this 08 Oct 21:12
504cd18

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v5.0.2

The plugin installs the program itself: the repository's plugin/ folder,
the one the Claude directory lists, starts a small launcher that downloads
the right build on first use, checks it, and runs it. The program is the
same as v5.0.1's
(all commits).

  • plugin/: the plugin from the repository. The manifest, the MCP
    entry, the skills and launcher/ (Node.js 18 or newer, no
    dependencies). The launcher runs the program in ~/.computer-use/bin
    (the folder install.sh / install.cmd and the updater use) when it is
    the plugin's version or newer. When it is missing, it downloads
    computer-use-mcp-<system>.zip of the plugin's release (or the latest,
    if that one is not out yet), checks it against the release's SHA-256,
    runs the program once and only then moves it into place; a download cut
    off goes on where it stopped, two chats starting at once install once,
    an http(s):// proxy in HTTPS_PROXY is used. Meanwhile a stand-in
    answers the client with one tool, setup_status, and hands over to the
    program when it is ready (the client is told its tools changed). An
    older program runs at once and the plugin's version is installed for the
    next start. COMPUTER_USE_MCP_BIN runs another program instead.
  • Each release zip has its SHA-256 beside it (<zip>.sha256), so the
    launcher needs no call to GitHub's API (60 an hour from one address).
  • The repository no longer carries the launch films (promo/).

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

Full Changelog: v5.0.1...v5.0.2

computer-use-mcp v5.0.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 19:15
028c803

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v5.0.1

v5.0: the settings panel, and a hub that shares the screen out by what
each agent at work needs; with a fix for every Linux version so far (one
call could take a KDE session down). What was tried out as v5.0.0-preview
and v5.0.1-preview; a preview build takes this release
(plan,
guide,
upgrading,
all commits).

Fixes and the hub

  • Qt apps crashed when the server read them, KWin and Plasma too. The
    server asked each app for all of an element's properties at once
    (Properties.GetAll). Qt's accessibility bridge, up to Qt 6.9, reads a
    second argument from every such call, and that one has only one: the app
    crashes. KWin is a Qt program, so one list_apps (or doctor, which
    install.sh runs) closed every window, and a restarted KWin was crashed
    again by the next look. Each property is now asked for on its own, as Qt
    expects, and an element is asked for its extents and actions only when it
    says it has them (GTK printed warnings for the others). A new live test
    in CI reads, clicks and types in a real Qt app; the old code fails it.
  • The desktop's own processes are never asked anything: the compositor
    (KWin, GNOME Shell, Xwayland), Plasma, the session manager, portals,
    kded, KWallet, the polkit agent. Their pid comes from the bus, not from
    them, and they aren't listed as apps.
  • An app that quits while answering is left alone for 10 minutes (by
    its program, so a restarted copy is too): a call that crashes an app is
    never made to it again and again. Its windows are still listed, for
    screenshots and the mouse and keyboard.
  • doctor no longer switches the desktop's accessibility on; it says
    whether it is on. A server switches it on when it is off (Qt, Firefox and
    Chromium show nothing without it) and the last server to end switches it
    off again.
  • The hub shares the screen out by need, among the agents at work.
    Every server took a part of the screen as soon as it started, so other
    chats that never used the computer split it with the one at work (one
    agent working in a third of the screen, its glow around that third), and
    the parts were even or a fixed half, third or quarter. Now only agents at
    work have a part (one that makes no call for hub.release_after_secs,
    120, gives it up until its next call); each gets what its window needs
    (a full-size window and two small ones: a half and two quarters; 35% and
    65% windows: just that); a window the agent moved, resized, tiled or
    maximized itself stays where it put it while the others share the rest;
    a window that won't shrink keeps its least size; agents area takes a
    share such as 35%. The parts follow where the windows are, a change of
    under 4% of the screen moves nothing, and a window moves only when its
    agent looks next. agents list marks the idle ones. (The hub protocol is
    version 2: a server of this version and a hub of an older one don't mix.)
  • install.sh and install.cmd add the program as zero-use-computer
    when Claude Code keeps the name computer-use for itself
    ("this name
    is reserved"), as the panel's Connect page already did, and say if adding
    it failed. --uninstall removes either name.

If a KDE session crashed: log out and back in (or restart), then update. To
switch accessibility off again: busctl --user set-property org.a11y.Bus /org/a11y/bus org.a11y.Status IsEnabled b false and, on GNOME-based
desktops, gsettings set org.gnome.desktop.interface toolkit-accessibility false.

The settings panel

  • One panel for every setting (computer-use-mcp settings,
    Ctrl+Alt+J, or decide setup="open"): 187 settings in 22 groups, each with
    its help, its default and a reset, search, "changed from default", light,
    dark and automatic themes in Material Design 3 style with an accent colour.
    A test fails when a setting has no entry in the panel. Its address is the
    same every time (panel.port, a token in a file only you can read); it
    listens only while it is open. It sends its schema once and only the
    values that differ from the defaults after that (45 KB a request to 0.2 KB).
  • The agent never uses it. A window whose title says "Zero panel
    [private]" is refused by every tool. Settings that limit the agent or the
    updates ask you to confirm, in the page and in the server; secrets are
    written but never sent back.
  • Previews: how the pointer glides (from the program's own path maker),
    how the overlay's border, label and colours fit, what a picture costs in
    tokens.
  • Profiles (Low tokens, Balanced, Best quality, Showcase, and your own),
    the tool list with what each tool costs, the apps report, the
    audit log, the settings file as text (checked as a whole, secrets
    covered) and import and export as TOML.
  • Update controls: look every 5 minutes or more (check_every_mins) or
    never, stable or pre-release channel, pin a version, skip a version. A look
    asks GitHub only "has it changed?" (the tag is kept once a look is over);
    GitHub's "slow down" is waited out for an hour. The program an update
    replaces is kept, and Go back / update --rollback puts it in place.
    The panel shows when it last looked, what waits and its notes.
  • One button to add it to the agents you use: the Connect page and
    computer-use-mcp install for Claude Code, Claude Desktop, Codex, Cursor
    and VS Code. Only its own entry is written, the rest of each file stays in
    its own order with its comments, a .bak copy is kept, a file with
    mistakes is left alone, and the program is kept at
    ~/.computer-use/bin so it stays where the agents look. Newer Claude Code
    keeps the name computer-use; the program is then added as
    zero-use-computer.
  • A shortcut that opens the panel: on the desktop and with the system's
    apps (a .desktop file on Linux, a small app on a Mac, a .lnk on
    Windows), made, made again or taken away from the panel's Desktop shortcut
    page or with computer-use-mcp shortcut. It starts
    computer-use-mcp settings, which serves the panel on its own port and
    opens it in the browser, or shows the one already open. Only shortcuts the
    program made are ever removed. settings now serves the panel even when no
    browser can be opened, and prints its address.
  • A guide inside the panel: nine short pages.
  • More to turn: the pointer's trail, lean_strength and breathe
    (and how strong each is), and the real mouse's mouse_speed,
    mouse_overshoot and mouse_jitter. The real mouse travels only the last
    stretch of a reach, so mouse_overshoot (0 by default, as before) decides
    how often a long reach comes in a touch past its target.
  • A reset leaves no empty section in the settings file.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

Full Changelog: v4.0.1...v5.0.1

computer-use-mcp v5.0.1-preview

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Oct 10:39
6032370

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v5.0.1-preview

A fix for every Linux version so far (one call could take a KDE session
down), and a hub that shares the screen out by what each agent at work
needs (all commits).

  • Qt apps crashed when the server read them, KWin and Plasma too. The
    server asked each app for all of an element's properties at once
    (Properties.GetAll). Qt's accessibility bridge, up to Qt 6.9, reads a
    second argument from every such call, and that one has only one: the app
    crashes. KWin is a Qt program, so one list_apps (or doctor, which
    install.sh runs) closed every window, and a restarted KWin was crashed
    again by the next look. Each property is now asked for on its own, as Qt
    expects, and an element is asked for its extents and actions only when it
    says it has them (GTK printed warnings for the others). A new live test
    in CI reads, clicks and types in a real Qt app; the old code fails it.
  • The desktop's own processes are never asked anything: the compositor
    (KWin, GNOME Shell, Xwayland), Plasma, the session manager, portals,
    kded, KWallet, the polkit agent. Their pid comes from the bus, not from
    them, and they aren't listed as apps.
  • An app that quits while answering is left alone for 10 minutes (by
    its program, so a restarted copy is too): a call that crashes an app is
    never made to it again and again. Its windows are still listed, for
    screenshots and the mouse and keyboard.
  • doctor no longer switches the desktop's accessibility on; it says
    whether it is on. A server switches it on when it is off (Qt, Firefox and
    Chromium show nothing without it) and the last server to end switches it
    off again.
  • The hub shares the screen out by need, among the agents at work.
    Every server took a part of the screen as soon as it started, so other
    chats that never used the computer split it with the one at work (one
    agent working in a third of the screen, its glow around that third), and
    the parts were even or a fixed half, third or quarter. Now only agents at
    work have a part (one that makes no call for hub.release_after_secs,
    120, gives it up until its next call); each gets what its window needs
    (a full-size window and two small ones: a half and two quarters; 35% and
    65% windows: just that); a window the agent moved, resized, tiled or
    maximized itself stays where it put it while the others share the rest;
    a window that won't shrink keeps its least size; agents area takes a
    share such as 35%. The parts follow where the windows are, a change of
    under 4% of the screen moves nothing, and a window moves only when its
    agent looks next. agents list marks the idle ones. (The hub protocol is
    version 2: a server of this version and a hub of an older one don't mix.)
  • install.sh and install.cmd add the program as zero-use-computer
    when Claude Code keeps the name computer-use for itself
    ("this name
    is reserved"), as the panel's Connect page already did, and say if adding
    it failed. --uninstall removes either name.

If a KDE session crashed: log out and back in (or restart), then update. To
switch accessibility off again: busctl --user set-property org.a11y.Bus /org/a11y/bus org.a11y.Status IsEnabled b false and, on GNOME-based
desktops, gsettings set org.gnome.desktop.interface toolkit-accessibility false.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

Full Changelog: v5.0.0-preview...v5.0.1-preview

computer-use-mcp v5.0.0-preview

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Oct 04:39
5a9d73a

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v5.0.0-preview

A preview of v5.0: the settings panel, and everything it needed (what was
planned as v4.8). A preview build takes the finished v5.0.0 release when it
comes out; it isn't offered to anyone by the updater itself
(plan,
guide,
all commits).

  • One panel for every setting (computer-use-mcp settings,
    Ctrl+Alt+J, or decide setup="open"): 187 settings in 22 groups, each with
    its help, its default and a reset, search, "changed from default", light,
    dark and automatic themes in Material Design 3 style with an accent colour.
    A test fails when a setting has no entry in the panel. Its address is the
    same every time (panel.port, a token in a file only you can read); it
    listens only while it is open. It sends its schema once and only the
    values that differ from the defaults after that (45 KB a request to 0.2 KB).
  • The agent never uses it. A window whose title says "Zero panel
    [private]" is refused by every tool. Settings that limit the agent or the
    updates ask you to confirm, in the page and in the server; secrets are
    written but never sent back.
  • Previews: how the pointer glides (from the program's own path maker),
    how the overlay's border, label and colours fit, what a picture costs in
    tokens.
  • Profiles (Low tokens, Balanced, Best quality, Showcase, and your own),
    the tool list with what each tool costs, the apps report, the
    audit log, the settings file as text (checked as a whole, secrets
    covered) and import and export as TOML.
  • Update controls: look every 5 minutes or more (check_every_mins) or
    never, stable or pre-release channel, pin a version, skip a version. A look
    asks GitHub only "has it changed?" (the tag is kept once a look is over);
    GitHub's "slow down" is waited out for an hour. The program an update
    replaces is kept, and Go back / update --rollback puts it in place.
    The panel shows when it last looked, what waits and its notes.
  • One button to add it to the agents you use: the Connect page and
    computer-use-mcp install for Claude Code, Claude Desktop, Codex, Cursor
    and VS Code. Only its own entry is written, the rest of each file stays in
    its own order with its comments, a .bak copy is kept, a file with
    mistakes is left alone, and the program is kept at
    ~/.computer-use/bin so it stays where the agents look. Newer Claude Code
    keeps the name computer-use; the program is then added as
    zero-use-computer.
  • A shortcut that opens the panel: on the desktop and with the system's
    apps (a .desktop file on Linux, a small app on a Mac, a .lnk on
    Windows), made, made again or taken away from the panel's Desktop shortcut
    page or with computer-use-mcp shortcut. It starts
    computer-use-mcp settings, which serves the panel on its own port and
    opens it in the browser, or shows the one already open. Only shortcuts the
    program made are ever removed. settings now serves the panel even when no
    browser can be opened, and prints its address.
  • A guide inside the panel: nine short pages.
  • More to turn: the pointer's trail, lean_strength and breathe
    (and how strong each is), and the real mouse's mouse_speed,
    mouse_overshoot and mouse_jitter. The real mouse travels only the last
    stretch of a reach, so mouse_overshoot (0 by default, as before) decides
    how often a long reach comes in a touch past its target.
  • A reset leaves no empty section in the settings file.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

Full Changelog: v4.0.1...v5.0.0-preview

computer-use-mcp v4.0.1

Choose a tag to compare

@github-actions github-actions released this 07 Oct 16:20
f814484

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v4.0.1

Two fixes to v4.0.0
(all commits).

  • The user's pointer followed the agent's on Windows and Linux: where
    an action used the real mouse, v4.0.0 moved the user's pointer the whole
    way from where it was, up to 0.8 s, before bringing it back. An app sees
    the pointer only over its own window, so the way across the rest of the
    screen showed it nothing and only took the pointer from the user. Now
    the pointer goes at once to a short stretch (70–140 px) from the target
    and travels only that, in a hand's way, then goes back: under traced
    X11, 0.34 s away from where the user left it (it was 0.6–0.8 s).
    natural_mouse = false still makes it a jump there and back.
  • The pointers looked rough at their real size: a picture shrunk about
    sixfold in one step lost its edges and its fine light to speckle (the
    crystal most), and some vanished on some backgrounds (ice on white,
    orbit on dark, chrome on grey). Each picture is now drawn from a halved
    copy near its size on screen, with a thin light edge and a soft shadow
    cut from its solid part, so it stays clear on light, grey and dark.
  • The pointers are 17% bigger (a 3D picture needs the room to show),
    and their name tag sits under them: beside them it covered the
    metal's drop and the paper's tail. Typed text runs out under the tag.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

What's Changed

  • v4.0.1: the user's pointer no longer follows the agent's; sharper, bigger pointers with the tag under them by @mhrsdev in #18

Full Changelog: v4.0.0...v4.0.1

computer-use-mcp v4.0.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 14:10
f789ba0

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v4.0.0

New pointers for the agent that move like a hand, a mouse that moves like
one too in five ways, updates that install themselves after a restart,
and the overlay kept out of screenshots on X11
(all commits).

  • Six new pointers, each clicking its own way: crystal, paper, jelly,
    ice, liquid metal and orbit, 3D renders cut out with their glow (about
    65 KB each, in assets/cursors). A click moves the picture itself:

    • jelly: it squashes flat and wobbles back;
    • ice: it runs down in drips, drops fall from its points, then it
      freezes back;
    • paper: the wing opens out from the fold and folds back;
    • metal: it gives a little and drops of chrome splash out;
    • crystal: light floods through it and breaks out in colours;
    • orbit: the pearl leaves its place and races once round the ring.

    Each session picks one at random; agents working at once each get a
    different one while there are pointers to go round. The state colour
    glows behind the pointer, and the name tag takes the pointer's own
    look (clear glass with a rainbow edge, satin paper, jelly, frost,
    chrome edged in gold, dark crystal); a click shows
    for 0.7 s (was 0.45). overlay.cursor_style names one ("jelly", …),
    "classic" keeps the plain arrow, "random" is the default.

  • The pointer moves like a hand (overlay.cursor_motion, on): it
    swings to where it acts in a gentle arc, leans into the move and leaves
    a trail of its own material (sparkles of colour, gold flecks, a gooey
    tail, frost, drops of chrome, a glowing streak); waiting, it breathes
    (the jelly wobbles, the paper sways, a glint runs over glass, ice and
    chrome). A drag draws its line along the way it went, in the pointer's
    material, and fades; a scroll shows arrows the way it goes.

  • Keys and typing by the pointer (overlay.show_keys, on): keys
    pressed show as keycaps in the pointer's material that go down and come
    up ("Ctrl" "S"); typed text runs out a letter at a time in a bubble
    under the name tag, with a caret. Into a password field it shows dots.

  • A pointer per agent (overlay.agent_cursors): { codex = "metal", "claude-code" = "jelly" } gives an agent its pointer by its MCP
    client's name or its tag, whatever cursor_style says.

  • The real mouse moves like a hand (natural_mouse, on): where an
    action falls back to the mouse (a click, a drag, a scroll, a hover, the
    way to a drawing's strokes), the pointer no longer jumps there or goes
    in a straight line at an even speed, which some apps notice. It goes
    along a gentle curve to one side, quick to start and slower to settle,
    with a slight tremor, a long reach sometimes a touch past and back
    (Fitts's law timing: about 0.3 s for a short reach, 0.6 s across the
    screen); the wheel turns a notch at a time. On X11, Wayland (wlroots) and Windows the
    real pointer moves so; on macOS the app gets the same path of events
    without the user's cursor moving. Afterwards the pointer still goes
    straight back where the user left it (restore_pointer). natural_mouse = false brings back the jump.

  • Five ways to move (mouse_path for the real mouse,
    overlay.cursor_path for the agent's pointer; "mixed", the default,
    picks one at random for each move): a hand's curve, a sine wave (one or
    two swings across the way, calm at both ends), a circular arc, a spring
    (an underdamped step: 6–10% past the target and back, settling) and a
    spiral in to the target (a sixth to a third of a turn). Each takes a
    hand's time and ends exactly on the target. A drag goes straight
    whatever the setting, with a hand's timing and a faint tremor: it may be
    drawing a line in a paint program.

  • Updates ([update], on): five minutes after the server starts,
    then every 12 hours (shared by the servers on the computer), it asks
    GitHub for the latest release. A newer one is downloaded, checked
    against GitHub's SHA-256 for it (none, no update; only the repository's
    own release files, no pre-releases), unpacked into
    ~/.computer-use/updates/ and its program asked its version, then left
    waiting: nothing is replaced while an agent may be working. The first
    time the server starts after the computer restarts, the new version
    takes the program's place (and the package's skills and files, when it
    runs from an unpacked package or plugin) and the server goes on as it.
    install = "start" or "manual" changes when; computer-use-mcp update
    looks now, update --install puts it in now; doctor shows what waits.

  • The overlay could be in the agent's screenshots on X11 without a
    compositor: the engine waited 150 ms for the overlay to say it was
    hidden, and a helper busy drawing (a glide, a fade) answered later, so
    the picture was taken with the border in it, about one time in two in
    the live test. It now waits up to a second for that answer.

Checked

  • 522 tests in the library (new: every pointer keeps its tip on the spot
    through a click and while it breathes; agents at once get different
    pointers; every path style ends on the target in a hand's time without
    jumps, has its own shape, and a drag goes straight; the swing, lean and
    trail; keys, typing, scrolls and drags show and go; an agent's own
    pointer; versions, SHA-256 and CRC-32 against known values, only a newer
    checked release of the repository is taken, a zip unpacks and a bad or
    escaping one is refused, an update goes in as install says and
    replaces the program and the package), 55 in the server; clippy on Linux,
    Windows and macOS; Rust 1.88; the live Linux tests 10 of 10 with the
    natural mouse on, the overlay test 10 runs of 10 (5 of 10 before); four
    agents on one hub under Xvfb showed four different pointers. Under Xvfb
    the real pointer was traced through a click: 650 px along a curve up to
    54 px off the straight line in about 0.55 s, then back where it was;
    keycaps, the typed bubble and a drag's line were seen on the live
    overlay. Updates end to end: a build calling itself 3.9.6 downloaded
    the real v3.9.7 from GitHub (its SHA-256 matched), waited while the
    computer had not restarted, and with install = "start" put v3.9.7 and
    its package in place and went on as it; the look five minutes in found
    this version the latest. Not seen on a Windows or macOS desktop, nor on
    Wayland.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

What's Changed

  • v4.0.0: picture pointers, natural mouse in five ways, keys/typing/drags/scrolls by the pointer, self-updates after restart; overlay kept out of X11 screenshots by @mhrsdev in #17

Full Changelog: v3.9.7...v4.0.0

computer-use-mcp v3.9.7

Choose a tag to compare

@github-actions github-actions released this 06 Oct 21:19
eb53cd3

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v3.9.7

A debugging release: the whole project read twice, line by line, and what
was wrong fixed (all commits).
The first read found about 100 problems, the second (of the fixed code)
about 50 more, some of them in the first read's fixes. Most are small; the
ones that matter:

Security and privacy

  • Anyone who could reach the HTTP port could stop the server, without
    the token: a request declaring a huge body made the HTTP library
    allocate that much and abort, and requests that never sent their body
    could hold every slot for good. The HTTP library (tiny_http 0.12) is now
    a patched copy in vendor/ (each change in vendor/tiny_http/PATCHED.md):
    unread bodies are drained within limits, header lines are capped, and a
    request that stops arriving times out after 10 s. A body left unread is
    no longer read as the next request.
  • Text read off the screen inside a private field reached the model
    (a verification code in a field whose value the app doesn't expose):
    the screenshot was blacked out, the tree still had it. OCR lines inside
    private areas are left out, also after the window moves.
  • The audit log kept values: the first line of a set_value result
    holds the value set, passwords included. The log keeps only what comes
    before any quoted text or expectation.
  • Scripts: a path going up (..) out of a folder not made yet got past
    the private-folder check (with [script] files = "all" a script could
    rewrite the server's settings); a script importing itself crashed the
    server; regular expressions, CSV and numbers could use up all memory or
    run past the time limit; a failed download deleted the file it was to
    replace; elements(), colors() and page() ignored tools switched off.
  • A settings file that holds the HTTP token is now readable by its owner
    only, and config show / config get show only the token's end.
  • Exports go to a folder only the user can open (computer-use-exports-<uid>
    on Linux and macOS), not a shared one.
  • Windows: text a password manager marks as concealed is not read from
    the clipboard (as on macOS).

Wrong results

  • After window moved a window, a click by element index landed where
    the element used to be (perhaps in another app), and full-screen
    screenshots blacked out private areas at their old places.
  • Text read off a window (OCR) was reused at its old place after the window
    moved; it now moves with the window.
  • decide pick: a number in the model's answer was taken as a position
    (the 57th option, not element 57), and 65, 129, … candidates made the
    whole pick fail.
  • The two OCR readings were merged badly when they split words differently
    (a word lost or doubled); "7 8 9" and "1 2 3 4 5" were taken for a ruler
    and dropped; a lone digit read unsurely was kept as text.
  • macOS: text with a broken emoji (a lone half of a pair) crashed reading a
    window or the clipboard. Windows: such text was dropped.
  • Windows: a console program launched with launch_app shared the
    server's (often hidden) console instead of getting its own window.
  • Linux: windows of apps without accessibility could be confused (two
    terminals titled "~"); a missing modifier key (no Super on the layout)
    was silently left out of a shortcut; a hung session bus could switch
    accessibility off for good; minimize on window managers that keep
    minimized windows mapped was reported as refused.
  • Wayland overlay: a cursor moved to another monitor went invisible.
  • The hub: a working stop key could be reported as not working, and an
    agent could miss that its key was replaced; a stop could undo the user's
    "continue" a moment after it.
  • press_key "ctrl + s" (with spaces) failed; a batch step written as
    {"tool": "get_app_state", "app": "Safari"} dropped the app; a zoom on the
    last column of a screenshot was refused; a notification's code was not
    masked when only its title said "PIN".
  • The long bench scenario's rare failure: the test app filtered its table
    150 ms late, and the scripted run reused an old element number.
  • Two servers writing apps.json at once lost counts; new apps were never
    kept once 200 were recorded.
  • CI could publish a release with failing tests; it now waits for them.

Not fixed

  • On Hyprland with force_zero_scaling and a scaled monitor, element
    positions in X11 apps may be off (needs that desktop to fix safely).
  • A client with the token that stops reading answers can still slow the
    other sessions (the HTTP library gives no write timeout).
  • The hub doesn't prove to an agent that it is the real one (a protocol
    change).

Checked

  • 501 tests in the library, 55 in the server (each fix with a test where it
    can run without a desktop); clippy on Linux, Windows and macOS; Rust 1.88;
    the live Linux tests under Xvfb (10 of 10); the scripted long and table
    benchmark 40 of 40 runs. The Windows and macOS fixes were checked by
    reading and by CI (the Windows overlay live test), not on real desktops.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

What's Changed

  • v3.9.7: a debugging release, the whole project read twice line by line by @mhrsdev in #15
  • Fix a Windows test that rewrote the settings file twice in a moment by @mhrsdev in #16

Full Changelog: v3.9.6...v3.9.7

computer-use-mcp v3.9.6

Choose a tag to compare

@github-actions github-actions released this 05 Oct 13:18
a0998f0

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v3.9.6

The stop key on a Mac, named so it is pressed
(all commits).

  • On a Mac the stop key was called "Ctrl+Option+Esc" (and "Ctrl+Alt+Esc"
    in the README and in doctor). Read on a Mac keyboard, "Ctrl" passes for
    Cmd, and Cmd+Option+Esc is the system's Force Quit window: pressed in an
    emergency, it opened that window and the agent went on. The key itself
    was always Control+Option+Esc (the two don't clash). Now the overlay,
    what the agent is told and doctor name it as the Mac keyboard does,
    Control+Option+Esc, and the README and the guide say it isn't
    Cmd+Option+Esc. Windows and Linux keep "Ctrl+Alt+Esc".
  • doctor shows both keys as the keyboard names them (it printed the
    setting as written, "ctrl+alt+escape").

Checked

  • 429 tests in the library (a new one for the names on each system), 41
    in the server; clippy on Linux, Windows and macOS; Rust 1.88. Not seen on
    a Mac: CI only type-checks macOS.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

What's Changed

  • v3.9.6: on a Mac the stop key is named Control+Option+Esc by @mhrsdev in #14

Full Changelog: v3.9.5...v3.9.6

computer-use-mcp v3.9.5

Choose a tag to compare

@github-actions github-actions released this 04 Oct 20:06
be95a03

MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.

What's new in v3.9.5

An urgent fix for Windows: the overlay and the stop key went away during a
session (all commits).

  • The overlay disappeared, and with it the emergency stop key, on
    Windows, from v3.9.0 (when the hub came) to v3.9.4. Joining the hub, the
    server waits at most 3 s for its welcome and then clears that wait; but
    Windows keeps a socket's read timeout per handle, and it was cleared on
    another handle than the one that reads. So every 3 quiet seconds (a
    model thinking between two calls) read as "the hub went away": the
    server joined again, three times, then counted it as a failure, and
    after a few of those stopped trying. From then on the agent worked
    with no overlay and Ctrl+Alt+Esc did nothing ("the emergency stop key
    is not working" in the server's log). Now the wait is cleared on every
    handle, a read that times out is never taken for the end, and a hub
    connection that held for a minute starts the count of losses again.
    Linux and macOS share a socket's settings between handles and weren't
    affected.
  • Found and checked on Windows. A new live test runs the server on a
    Windows runner against Notepad, with calls 4 s apart as a model's
    come, and lists the overlay's windows after each call. v3.9.4 lost the
    hub three times in 12 s and showed no overlay after the fifth call; this
    release kept the hub and showed it after every call, on Windows Server
    2025 (the Windows 11 24H2 core) and 2022. It is now part of CI.
  • Not yet seen on the Windows 11 desktop where it was reported.

Install

Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.

As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.

macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.

Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.

What's Changed

  • README: v3.9.4 by @mhrsdev in #12
  • v3.9.5: on Windows the overlay and the stop key no longer go away by @mhrsdev in #13

Full Changelog: v3.9.4...v3.9.5