mrkeyoor.com_
Sat 19 Sept 18:02 UTC
Automationevaluationupdated 19 Sept 2026

agent-desktop review

Agent Desktop lets an AI agent inspect and control macOS applications through the operating system's accessibility tree, returning JSON and reusable element references instead of depending on screenshots alone. It covers observation, clicks, typing, windows, clipboard, notifications, sessions, and traces; Windows and Linux desktop control are still listed as planned.

Verdict

Our Debian run installed 65 packages in 22 seconds, then Agent Desktop failed both build and test compilation, so Linux buyers should not read its multi-platform library artifacts as working desktop control. On macOS 13+, its structured refs, action checks, and trace format make it a serious candidate for an agent that must operate native apps. Try v0.9.2 on a dedicated Mac, but keep fresh snapshots and inspect delivery status around physical actions.

We ran it

Lab card: what happened when we ran agent-desktopScreenshot of agent-desktop (github.com/lahfir/agent-desktop)
Install✓ · 22s65 packages
Build✗ · 55s
Tests✗ · 23sran, no count parsed
Repo1237 files~135,393 lines of source · 48.6 MB · 6 CI workflows · tests dir

Answers from our run

Does agent-desktop build from source?

Dependencies installed in 22 seconds (65 packages), and the build failed. We cloned commit 7a8e4a1 into a clean Debian container with 3 CPUs and no project-specific setup.

Do agent-desktop's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use agent-desktop?

Windows or Linux users seeking working desktop automation today: the README marks every desktop capability on those systems as planned.

What are the alternatives to agent-desktop?

Peekaboo, nut.js, OmniParser. Our Debian run installed 65 packages in 22 seconds, then Agent Desktop failed both build and test compilation, so Linux buyers should not read its multi-platform library artifacts as working desktop control.

Setup2/522-second install, but Debian build and tests did not compile
Docs5/5Commands, refs, permissions, errors, and tracing are documented
Community4/5September 2026 release with active issues and pull requests
Maturity3/5Active v0.9.2, macOS-only control, and open ref edge cases

Who it’s for

macOS agent builders who need structured UI state and element references instead of coordinate guesses.
Teams that can follow explicit retry, actionability, and delivery rules around desktop mutations.
Developers embedding desktop control through a CLI or C-compatible library from Python, Swift, Go, Ruby, Node, or C.
Claude Code skill users who want a documented observe, act, and verify loop for native applications.

Who it’s NOT for

Windows or Linux users seeking working desktop automation today: the README marks every desktop capability on those systems as planned.
Teams requiring a clean source build in a fresh Debian environment: our build and test compilation both failed inside the macOS crate.
Operators who depend on automatic recovery of an existing npm binary: open issue 143 says the install fast path does not recheck that binary against a checksum.
Workflows where a moved target must always remain clickable without a new snapshot: issue 155 documents a physical pointer action failing after the element moved.
Consumers that need every truncated branch identified inside a snapshot: issue 159 says a globally incomplete macOS tree can omit all per-node truncation markers.

Setup reality

Our sandbox installed 65 packages in 22 seconds at commit 7a8e4a1. The build failed with exit 101 after 55 seconds, and tests failed with exit 101 after 23 seconds. The 48.6 MB checkout contained 1,237 files and about 135,393 source lines.

The build log ended after the agent-desktop-macos crate produced 113 errors and 69 warnings, including unresolved accessibility_sys references. The test compile ended with 216 errors and 64 warnings, including missing retry_incomplete_until and stale_ref_error functions. Those messages show where compilation stopped, not why the code reached that state.

The main README requires Rust 1.89+ and macOS 13.0+. Useful macOS control also needs Accessibility permission; screenshots need Screen Recording, and Notification Center opening needs Automation permission. The local CLI needs no hosted credential, while its optional CDP endpoint is bound to 127.0.0.1.

Version v0.9.2 controls macOS through accessibility data

Agent Desktop exposes 58 command names, 54 of which are operational in the stateless CLI. An agent can read an application's accessibility tree, select an element reference, act on it, and inspect the result as JSON. The remaining 4 held-input names are reserved and fail closed until a daemon can own their lifetime.

Our checkout had 1,237 files, about 135,393 lines of source, and occupied 48.6 MB before installation. The code is split across the core command contract, a macOS adapter, tracing, an FFI layer, tests, and skill documentation. This is a substantial codebase for a command-line desktop tool.

Skeleton snapshots cut tokens by a claimed 78% to 96%

Dense apps can produce large accessibility trees, so Agent Desktop starts with a shallow skeleton and lets the caller drill into one branch. The README reports a 78% to 96% token reduction for this progressive path. Each snapshot carries an ID, and qualified references include that ID. Reusing a reference from the wrong session or after the UI changes is supposed to return an explicit stale or ambiguous result instead of choosing a nearby control.

That contract matters more than the number of commands. Before an action, the tool checks visibility, stability, enabled state, supported action, policy, and editability. Its errors also describe whether delivery was safe to retry. Our 3-CPU, 12 GB sandbox could inspect only compilation behavior, not a live Mac accessibility tree, so we did not verify the claimed token savings or action semantics.

What happened when we ran it

Our sandbox installed 65 packages in 22 seconds at commit 7a8e4a1. The build then failed with exit code 101 after 55 seconds. The final compiler output came from agent-desktop-macos: it reported 113 errors and 69 warnings, including unresolved references to accessibility_sys. We cannot turn that tail into a broader diagnosis, but the result is clear enough for buyers using Debian CI: this checkout did not complete the documented Cargo build there.

The test command also stopped during compilation, with exit code 101 after 23 seconds. Its tail reported 216 errors and 64 warnings in the macOS library tests. Named failures included missing retry_incomplete_until and stale_ref_error functions. No test-result count was produced, so it would be wrong to describe any tests as passing or failing individually. The measured outcome is a failed test compile, not a run of the test cases.

Our scan found 6 CI workflow files and a tests directory, with no Dockerfile. The checkout ran unprivileged, had 3 CPUs and 12 GB of RAM, and carried no secrets. The README says the main source path requires macOS 13.0+ and Rust 1.89+, while its platform table marks Windows and Linux desktop features as planned.

macOS 13 permissions are part of the deployment

The shortest documented route is npm install -g agent-desktop, which downloads a prebuilt binary. macOS users must then grant Accessibility permission for UI control. Screen Recording is needed for screenshots, and opening Notification Center needs Automation permission for System Events. Permission checks do not prompt by themselves; a separate bounded helper requests what is missing.

The 48.6 MB source checkout also builds a C-compatible library for in-process calls from several languages. Release v0.9.2 ships FFI archives for macOS, Linux, and Windows, while its CLI archives are macOS-only. That distinction is easy to miss. Linux and Windows can load parts of the common interface, but the README's platform table still says accessibility trees, clicks, screenshots, clipboard, windows, and notifications are planned there.

Chromium applications get a second route. launch --cdp starts a fresh app with a verified DevTools port on 127.0.0.1, so a browser automation client can handle web contents while Agent Desktop handles native menus and windows. Any local process running as the same user can reach that port until the app closes. The split is useful for Slack or VS Code, provided the operator treats the local endpoint and captured session artifacts as sensitive.

Twenty-one open items include pointer and snapshot defects

GitHub listed 21 open issues and pull requests combined, with several detailed bug reports from September 2026. Issue 155 says physical pointer actions can fail when a target moves after its snapshot, even after the auto-wait observes a stable new position. Issue 159 says a globally truncated macOS snapshot can lack the promised per-node marker that identifies where the tree was cut. Both concern the information an agent uses to decide whether an action is safe.

The 1,237-file repository also has a packaging concern. Issue 143 says the npm install fast path accepts an existing binary without checking it against a stored checksum, which can leave a stale or corrupt file in place. That does not mean every install is bad. It does mean managed deployments should verify the downloaded release and avoid assuming that a repeated install repaired an earlier binary.

The September release is active, with a narrow safe path

Release v0.9.2 and the last repository push both landed on September 17, 2026. GitHub showed 1,288 stars, and open pull requests were still being updated on September 19. The latest release note addresses headless action reporting, which is directly related to the tool's core promise. This is active maintenance rather than a dormant experiment, though the version number and open action bugs argue for staged adoption.

Our 65-package install was quick; the 55-second build and 23-second test compile were the stops. On a supported Mac, start with read-only snapshots, enable one mutation class at a time, and preserve traces without exposing screenshot data. On Debian, Windows, or Linux, choose a tool whose desktop adapter works today. Agent Desktop earns a Mac trial because its failure contract is unusually explicit, and that same contract tells you where trust still has limits.

Alternatives

ProjectWhat it isPick it when
PeekabooA macOS CLI, menu-bar app, and optional MCP server for screen capture and native UI automation.pick this instead when you want a signed Mac app, visual capture, and an MCP entry point alongside accessibility control.
nut.jsA Node toolkit for cross-platform keyboard, mouse, and image-based desktop automation.pick this instead when Windows or Linux matters and you can build the open-source packages yourself.
OmniParserA vision-based parser that turns UI screenshots into structured elements for GUI agents.pick this instead when screenshot grounding or a Windows 11 VM matters more than native accessibility references.

What people are saying

  1. [github-trending] lahfir/agent-desktop

Sources

  1. Agent Desktop README
  2. Agent Desktop v0.9.2 release
  3. Physical pointer action after target movement issue
  4. Missing per-node snapshot truncation marker issue
  5. npm existing-binary verification issue

More automation reviews

yichen-skills · py12306 · goldie · TikTokDownloader · goreleaser · obscura · the whole board →