Live Nov 18 · Cohort 3Nov 18, 19:00 MSK — free hands-on AI agents live workshop · Live Cohort 3 starts Nov 23Join Nov 18 Live →Cohort 3 (Nov 23)

Vercel releases agent-desktop: agents control any app without screenshots

Vercel Labs has released agent-desktop, a tool that lets an agent control desktop applications through the operating system's accessibility tree rather than screenshots. The agent receives JSON with a ref for every button, clicks, and rereads the tree to verify. It is faster and more reliable than image-based computer use, and it is licensed under Apache-2.0.

AI-processed from TG: @ai_product (AI Product / Igor Akimov); edited by Hamidun News
Vercel releases agent-desktop: agents control any app without screenshots
Source: TG: @ai_product (AI Product / Igor Akimov). Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceTG: @ai_product (AI Product / Igor Akimov) ↗
Editor-in-Chief
Key metric #1A single Rust binary of ~15 MB, 60 identical commands on Mac, Windows and Linux
Key metric #2A tree skeleton instead of a full dump saves 78–96% of tokens
Key metric #3Does not work if the app does not publish an accessibility tree

If you have ever tried to automate a desktop application with a screenshot-based model, you know the pain: it is slow, expensive and brittle. A single shifted pixel or a change of theme, and the agent misses the button. Vercel Labs proposes a different path: agent-desktop, a tool that does not look at the picture at all.

How it works

The operating system already knows what is on the screen. For screen readers it has an accessibility tree: a tree of elements with roles, names, states and focus. On macOS this is the AX API, on Windows UI Automation, on Linux AT-SPI. agent-desktop reads this tree and hands the agent JSON in which every element has a ref.

The loop is simple. The agent requests the tree, finds the button it needs, clicks it by its ref, reads the tree again and checks that the action worked. For example, instead of "click roughly at point 540×320", the agent says "press ref e12, this is the Send button" and confirms that the input field has been cleared.

Under the hood is a single Rust binary of about 15 MB with no dependencies. It is installed with the command npm install -g agent-desktop. There are 60 commands, identical on all three platforms; each prints JSON and exits. There is no LLM inside: the "look, act, verify" loop lives in your agent. The license is Apache-2.0, and there is also a skill that the agent reads before it starts working. For Electron and Chromium, the tool opens a DevTools port, which agent-browser can then connect to.

The main problem: context

A full application tree is huge. A Slack dump can easily weigh more than 50,000 tokens, and the agent drowns before the first click. So a "skeleton" a couple of levels deep is fetched first, and only the needed branch is expanded. According to the author, on Slack, VS Code and Notion this saves 78–96% of tokens. These figures are the author's own and have not been independently verified yet, so measure on your own application.

The project's history is also interesting. It began as the work of a single developer inspired by agent-browser, and now the tool is released under the Vercel Labs brand and sits in their documentation. Either the person was hired or the project was acquired. A classic open-source path.

Limitations

The main limitation follows from the idea itself: if an application does not publish an accessibility tree, the agent cannot see it. Custom-drawn controls, games and some Electron builds with accessibility turned off will slip through. On Windows there is a separate trap: if a window runs with elevated privileges, the tool runs into a security policy.

This matters especially for enterprise software. That is exactly where, in 1C, accounting packages and internal clients, automation is needed most, and accessibility support is often rudimentary. Loud claims about the death of RPA should be taken with a grain of salt: first check that your application exposes a tree at all.

What to do in practice

The analogy with Playwright is accurate: structure instead of pixels. If you have internal desktop systems, spend an hour and look at their accessibility tree through agent-desktop. If it is rich, you get automation that is noticeably cheaper and more stable than computer use on screenshots. If it is empty, screenshots remain the fallback.

Product people and founders should note one more thing: the tool is not tied to a particular agent harness. It is simply a CLI that can be plugged into any agent, and that is its strength. Start with one routine task, for example exporting a report from an old client, and compare token cost and the share of successful runs with your current approach.

This is not the end of RPA, but it is a serious step: agents now have a cheap, portable way to see an interface the way the system itself sees it.

Story

Key Questions Answered

How it works?

The operating system already knows what is on the screen. For screen readers it has an accessibility tree: a tree of elements with roles, names, states and focus. On macOS this is the AX API, on Windows UI Automation, on Linux AT-SPI. agent-desktop reads this tree and hands the agent JSON in which every element has a ref. The loop is simple. The agent requests the tree, finds the button it needs, clicks it by its ref, reads the tree again and checks that the action worked.

What are the key details on The main problem: context?

A full application tree is huge. A Slack dump can easily weigh more than 50,000 tokens, and the agent drowns before the first click. So a "skeleton" a couple of levels deep is fetched first, and only the needed branch is expanded. According to the author, on Slack, VS Code and Notion this saves 78–96% of tokens. These figures are the author's own and have not been independently verified yet, so measure on your own application. The project's history is also interesting.

What are the key details on Limitations?

The main limitation follows from the idea itself: if an application does not publish an accessibility tree, the agent cannot see it. Custom-drawn controls, games and some Electron builds with accessibility turned off will slip through. On Windows there is a separate trap: if a window runs with elevated privileges, the tool runs into a security policy. This matters especially for enterprise software.

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
What do you think?
Loading comments…