█

AI/TLDR

Buy me a coffee
Buy me a coffee

agent-desktop

A computer-use CLI and C library that lets AI agents read and operate desktop apps through the OS accessibility tree

Computer & Browser UseOpen source
Latest
v1.1.0
Updated
3 Nov 2026
Language
Rust
License
Apache-2.0
Coverage
1 story
$npm install -g agent-desktop

What's new

v1.1.03 Nov 2026

Fixes the Windows overlay (crashes at exit, double scaling, a black flash at startup) and lets macOS reach the Dock, menu bar items and system panels. Adds `type --interval-ms` for steady typing and more reliable ref re-identification on all three platforms.

Latest news

IN SHORT

What is agent-desktop?

agent-desktop is an open-source tool from Vercel Labs that gives an AI agent hands on a desktop computer. It sits in the Computer & Browser Use category of the Agents & Automation tools and is open-source, written in Rust and licensed Apache-2.0. To get started: install the CLI.

Updated Markdown version ↗
Demo: an OpenCode agent uses agent-desktop to write a formatted note in TextEdit, save it and check the file in Finder
An agent drives TextEdit and Finder through agent-desktopagent-desktop repository ↗

Overview

agent-desktop is an open-source tool from Vercel Labs that gives an AI agent hands on a desktop computer. It is a command-line program and a C library that read the user interface of native apps on macOS, Windows and Linux and act on it: click, type, scroll, manage windows, read notifications and the clipboard. It is a tool that agents call, not an agent itself, and it contains no model. For web pages, the same team points you to its sibling project, agent-browser.

The key design choice is the accessibility tree. Instead of matching pixels in screenshots, agent-desktop reads each app through the operating system's own accessibility APIs — the AX API on macOS, UI Automation on Windows and AT-SPI on Linux. A snapshot returns JSON with a snapshot ID and a ref for every element an agent can act on, and actions target those refs (for example `@s8f3k2p9:e8`). The trade-off is stated plainly: an app that publishes no accessibility tree is invisible to it.

Every CLI call runs as its own process, and the reasoning loop stays in the agent: observe with a snapshot, act on a ref, then snapshot again to verify. Errors such as `STALE_REF` and `AMBIGUOUS_TARGET` tell the agent to look again. Ref actions are headless by default, so they do not move the pointer or steal focus; a global `--headed` flag switches to physical input. The binary also ships its own skill docs matched to its version, which an agent can load with `agent-desktop skills get desktop`.

What it does

  • Reads native desktop apps through the OS accessibility tree on macOS (AX API), Windows (UI Automation) and Linux (AT-SPI) — no pixel matching
  • JSON snapshots with a snapshot ID and a ref per actionable element; bare refs like `@e8` are rejected so stale targets are caught
  • About 60 commands with the same names on every platform: observation, ref actions, keyboard and mouse, apps and windows, notifications, clipboard, waits and sessions
  • Headless by default — ref actions don't move the pointer or take focus — with a global `--headed` flag for physical input
  • Version-matched agent skill docs built into the binary (`agent-desktop skills get desktop`)
  • An in-process C library (`libagent_desktop_ffi`) for calling it from other languages, shown with a Python `ctypes` example
  • Native binaries for x64 and ARM64, installed through npm, Bun, Yarn or pnpm

Getting started

agent-desktop supports macOS 13 or later, Windows 10 1809 / Windows Server 2019 or later, and Ubuntu 24.04 or later. On macOS it needs Accessibility permission; on Linux it needs a graphical session with `at-spi2-core`.

Install the CLI

Install the package globally (Bun, Yarn and pnpm work too), then check the version and what your platform supports.

bashbash
npm install -g agent-desktop
agent-desktop version
agent-desktop status

Grant permissions on macOS

macOS requires Accessibility permission for the terminal that runs agent-desktop. The built-in guide walks you through it. Windows needs no extra grant for apps at the terminal's integrity level.

bashbash
agent-desktop permissions --guide

Observe, act, verify

Take a snapshot of an app's interactive elements, act on a ref from that snapshot, then snapshot again to confirm the change. Refs are tied to the snapshot they came from.

bashbash
agent-desktop snapshot --app Finder -i      # interactive elements, each with a ref
agent-desktop click @s8f3k2p9:e8            # act on a ref from that snapshot
agent-desktop snapshot --app Finder -i      # observe again to verify

Hand it to your agent

Load the version-matched skill guide into your agent first, list the running apps, and map dense apps with a compact skeleton before drilling into a region.

bashbash
agent-desktop skills get desktop
agent-desktop list-apps
agent-desktop snapshot --skeleton --app Slack -i --compact

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Letting a coding agent such as OpenCode write a note in a native text editor, save it, and confirm the file in Finder
  • Automating desktop apps that have no API, by acting on their accessibility elements instead of screen coordinates
  • Giving an agent the same command set on a Mac, a Windows machine and a Linux desktop
  • Calling desktop automation in-process from a Python or other program through the C library

How agent-desktop compares

agent-desktop alongside other open-source computer & browser use tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
Browser Use★ 120kA Python library that lets agents control a real browser to read pages and complete tasks online from natural-language instructions.
Open Interpreter★ 68.8kA lightweight coding agent that runs code on your own computer to carry out tasks from natural-language requests.
Chrome DevTools MCP★ 54.7kThe Chrome team's MCP server that lets a coding agent control and inspect a live Chrome browser — performance traces, network requests, console messages and Puppeteer-backed automation.
UI-TARS Desktop★ 39.5kByteDance's multimodal agent stack and desktop app that controls a computer's graphical interface using vision-language models.
CloakBrowser★ 32.7kStealth Chromium build with source-level fingerprint patches that drops into Playwright or Puppeteer code, so agents and scrapers browse without tripping bot detection.
invisible_dots★ 32.4kSelf-hosted AI agents that each run in their own QEMU VM with a desktop and a stealth Firefox, on any OpenRouter model.
AIHawk★ 32.4kBrowser agent on a stealth Firefox that takes plain-language tasks and clicks, types and reads real pages - usable as an MCP server from Claude Code, Codex or Gemini CLI, or via its own web UI.
agent-desktop—A computer-use CLI and C library that lets AI agents read and operate desktop apps through the OS accessibility tree