vercel-labs/agent-desktop
vercel-labs/agent-desktop has 19,870 GitHub stars and 1,475 forks. GitHot measured +752 stars in 24 hours and +10,303 in 7 days. Last checked 2026-11-09 07:42 UTC. Last push 2026-11-01.
Agent Desktop 让任何智能体都能可靠地操作桌面电脑。它基于 Rust 构建,通过操作系统无障碍树识别任意应用的真实 UI 结构并进行操作——引用标识保持稳定,操作可安全重试,而不是根据像素猜测。
实测星标增长
- 24小时
- +752
- 7天
- +10,303
- 15天
- 正在收集历史
- 1个月
- 正在收集历史
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.md
原文agent-desktop
Computer use for AI agents: read and operate desktop apps through the OS accessibility tree.
A CLI and C library for macOS, Windows and Linux. A snapshot returns JSON with a ref for every element an agent can act on. The agent acts on a ref and snapshots again to check, with no pixel matching; the loop stays in your agent.
On macOS, CLI calls reuse a private command host for each snapshot namespace and binary build. It retains native accessibility objects so a removed row cannot silently resolve to a surviving row with the same identifier. The host exits after 15 idle minutes. TMPDIR must be owned by the current user with mode 0700; the standard macOS per-user temporary directory satisfies this requirement. Headless calls still prohibit foreground activation and synthesized input.
Snapshots, clipboard reads, screenshots, command output and debug artifacts can contain private desktop content. Keep them out of public logs and uploads. The optional JEV helper sends screen descriptions to a configured model provider; it is separate from the native CLI. See privacy and data handling.
Installation
Install on macOS, Windows or Linux with npm:
npm install -g agent-desktop
agent-desktop version
Bun, Yarn and pnpm can install the same package. It includes native binaries and platform helpers for x64 and ARM64. For direct execution without a JavaScript launcher, download the matching native archive from GitHub Releases and keep its helper beside the executable.
Official Homebrew and Scoop packages are being submitted; they are not yet available in the default catalogs. The repository no longer maintains a custom Homebrew tap or Scoop bucket.
- macOS needs Accessibility permission:
agent-desktop permissions --guide. - Windows needs no grant for apps at your terminal's integrity level.
- Linux needs the user's graphical session with
at-spi2-core.
See installation and permissions for package-manager behavior, release archives, and building from source.
Quick start
Observe, act on a ref, observe again. Any app name from agent-desktop list-apps works; Finder is the macOS example.
Each command prints one JSON envelope; a trimmed snapshot follows the commands.
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
{
"version": "2.5",
"ok": true,
"command": "snapshot",
"data": {
"app": "Finder",
"window": { "id": "w-204749", "title": "Downloads" },
"snapshot_id": "s8f3k2p9",
"ref_count": 59,
"complete": true,
"tree": {
"role": "window",
"name": "Downloads",
"children": [
{ "role": "treeitem", "name": "Documents", "ref_id": "@s8f3k2p9:e8", "available_actions": ["Click"] }
]
}
}
}
- Refs belong to their snapshot. A bare
@e8is rejected withINVALID_ARGS. When the UI changes, an action returnsSTALE_REForAMBIGUOUS_TARGET: take a new snapshot and use its refs. - Several windows give
AMBIGUOUS_TARGET;snapshotlists the candidate window ids inerror.details. Pass one with--window-id. - Dense apps: map first with
snapshot --skeleton --app Slack -i --compact, then drill into one region withsnapshot --root @s8f3k2p9:e3 -i --compact. - Headless by default. Ref actions go through the accessibility API without moving the pointer or taking focus.
The global
--headedflag allows physical input. - PowerShell. Quote every ref (
'@s8f3k2p9:e8'), because a bare@tokenis the splatting operator.
For AI agents
The binary carries its own docs, matched to its version:
agent-desktop skills get desktop # the loop, refs, verification and retry rules
agent-desktop skills get platform # what differs on the OS you run on
agent-desktop <command> --help # flags for one command
Install the skill into an agent harness from skills.sh:
npx skills add https://github.com/vercel-labs/agent-desktop --skill agent-desktop
Or add this to your AGENTS.md:
Use `agent-desktop` to see and operate desktop apps. Before the first use, run
`agent-desktop skills get desktop` and `agent-desktop skills get platform`, and follow them.
Every command prints one envelope with ok and either data or error. An error carries a code, a disposition and usually a suggestion; retry only when error.disposition.retry is safe. The contract, error codes and exit codes are in docs/json-output.md.
Commands
It ships 60 command names, 56 operational commands. The other four (key-down, key-up, mouse-down, mouse-up) refuse to run until a daemon can release a held key or button.
| Group | Commands |
|---|---|
| Observe | snapshot, find, get, is, screenshot, list-surfaces |
| Act on a ref | click, double-click, triple-click, right-click, type, set-value, clear, focus, select, toggle, check, uncheck, expand, collapse, scroll, scroll-to |
| Keyboard and mouse | press, hover, drag, mouse-move, mouse-click, mouse-wheel, key-down, key-up, mouse-down, mouse-up |
| Apps and windows | launch, close-app, list-apps, list-windows, list-displays, focus-window, resize-window, move-window, minimize, maximize, restore, open-system-surface |
| Notifications | list-notifications, dismiss-notification, dismiss-all-notifications, notification-action |
| Clipboard | clipboard-get, clipboard-set, clipboard-clear |
| Wait | wait |
| Sessions | session, trace, cursor-overlay |
| System | status, permissions, version, batch, skills |
Platform support
| macOS | Windows | Linux | |
|---|---|---|---|
| Accessibility tree | Yes | Yes | Yes (AT-SPI) |
| Click / type / keyboard | Yes | Yes | AT-SPI; X11 / GNOME keys |
| Mouse input | Yes | Yes | X11, --headed |
| Screenshot | Yes | Yes | X11 windows; Wayland portal |
| Clipboard | Yes | Yes | Yes; Wayland needs wl-clipboard |
| App & window management | Yes | Yes | Launch/list; X11 window control |
| Notifications | Yes | Yes | GNOME Shell |
Shell surfaces (open-system-surface) |
Planned | Yes | GNOME tray, Action Center |
The Windows surface and launch notes and the Linux X11 and Wayland notes are in docs/install.md.
agent-desktop skills get platform prints the full capability table for the OS you run on.
Language bindings
Each release also ships libagent_desktop_ffi for macOS, Linux and Windows, so a program can call the tool in process instead of starting the CLI for each command. agent-desktop skills get ffi covers the entry points, memory ownership and threading rules.
import ctypes
lib = ctypes.CDLL("./lib/libagent_desktop_ffi.dylib")
lib.ad_adapter_create.restype = ctypes.c_void_p
lib.ad_adapter_destroy.argtypes = [ctypes.c_void_p]
assert lib.ad_init(6) == 0 # AD_RESULT_OK when the header's AD_ABI_VERSION_MAJOR matches the library
adapter = lib.ad_adapter_create()
lib.ad_adapter_destroy(adapter)
Development
Each platform adapter builds only on its own OS, so scope cargo to the host's packages. On macOS:
HOST_PKGS=(-p agent-desktop-core -p agent-desktop-macos -p agent-desktop -p agent-desktop-ffi)
cargo test "${HOST_PKGS[@]}"
cargo clippy "${HOST_PKGS[@]}" --all-targets -- -D warnings
On Windows, replace agent-desktop-macos in that list with agent-desktop-windows; on Linux, with agent-desktop-linux.
CONTRIBUTING.md lists every gate. Build from source: docs/install.md.
Documentation
| I want to... | Read |
|---|---|
| Fix an install problem, grant permissions, verify a download or build from source | docs/install.md |
| Parse the JSON envelope, error codes and exit codes | docs/json-output.md |
| Drive the tool as an AI agent | agent-desktop skills get desktop (skills/agent-desktop/) |
| Learn what differs on one OS | macOS, Windows, Linux |
| Call the C library | skills/agent-desktop-ffi/ |
| Look up the vocabulary: refs, snapshots, sessions | CONCEPTS.md |
| Contribute and pass the gates | CONTRIBUTING.md |
| Read the engineering rules | AGENTS.md |
| Learn from past bugs and lessons | docs/solutions/ |
| Find answers to common questions | docs/faq.md |
| Report a vulnerability | SECURITY.md |
| Get help | SUPPORT.md |
License
Apache-2.0
探索相关项目
n8n-io/n8n
具备原生 AI 能力的 Fair-code 工作流自动化平台。可将可视化构建与自定义代码相结合,支持自行部署或使用云服务,并提供 400 多种集成。
209,882 星标langgenius/dify
在同一个协作工作区中构建智能体工作流和 RAG 流水线,并提供丰富的 AI 模型与工具支持。可部署到云端、VPC 或自行部署,团队无需重建技术栈即可从原型进入生产。
160,680 星标microsoft/PowerToys
Microsoft PowerToys 是一组提升 Windows 生产力和自定义能力的实用工具
140,755 星标stablyai/orca
Orca 是使用智能体集群开展工作的地方(例如 Grok Bot、Claude Code)。可使用你自己的订阅运行任意编程智能体。支持桌面端、移动端和远程运行时。
119,636 星标