agent-desktop — AI エージェント向けにデスクトップ操作機能を提供する Rust 製 CLI ツール
vercel-labs/agent-desktop
★ 21,408 ・ Rust ・ Apache-2.0
概要
agent-desktop は、AI エージェントがデスクトップアプリケーションを認識・操作するためのツールです。スクリーンショットやピクセルマッチングに頼らず、OS のアクセシビリティツリーを読み取って JSON として返却するのが特徴です。エージェントは各要素に割り当てられたリファレンス(ref)を指定してクリックや文字入力を行い、結果を再度 UI から読み取って確認するループを実行します。AI モデル自体はツール内蔵ではなく、エージェント側がロジックを持ちます。CLI ツールおよび C ライブラリとして提供されており、デスクトップアプリの自動化やエージェント連携を効率的に行いたい開発者に向いています。
主な特徴
- スクリーンショットを使わず、OS のアクセシビリティ API 経由でデスクトップアプリの構造を JSON ツリーとして取得します。
- 各 UI 要素には一意の ref が割り振られ、エージェントはこれを利用して正確に対象を指定・操作できます。
- デフォルトではヘッドレス動作となり、フォーカスを奪わずにバックグラウンドでの操作が可能です。
- 観察、アクション実行、キーボード・マウス操作、アプリ制御、通知、クリップボード管理など、多数のコマンドを備えています。
- Model Context Protocol (MCP) をサポートしており、stdio 経由で各コマンドを MCP ツールとして提供できます。
- macOS、Windows、Linux の主要なデスクトッププラットフォームに対応しています。
使い方
npm を利用してグローバルインストールを行います。
npm install -g agent-desktop
agent-desktop status
agent-desktop permissions --guide
主な操作コマンドの例は以下の通りです。対象アプリのスナップショットを取得し、要素の ref を指定してアクションを実行します。
agent-desktop snapshot --app Finder -i
agent-desktop click @s8f3k2p9:e8
agent-desktop snapshot --app Finder -i
MCP サーバーとして起動する場合は、設定ファイル等に以下の構成を記述します。
{ "mcpServers": { "agent-desktop": { "command": "agent-desktop", "args": ["mcp"] } } }
技術的なポイント
実装言語として Rust が採用されており、コアロジックと各 OS 向けのプラットフォームアダプター(macOS の AX API、Windows の UI Automation、Linux の AT-SPI)に分かれた構造になっています。CLI バイナリのほか、libagent_desktop_ffi という C ライブラリも同梱されており、プログラム内からインプロセスで呼び出すことも可能です。エラー発生時は詳細な JSON エンベロープが返却され、安全にリトライできるかどうかの判断基準が提供されています。
注意点
ライセンスは Apache-2.0 です。スナップショットやクリップボードの読み取り、スクリーンショット、コマンド出力などのデータにはプライベートなデスクトップコンテンツが含まれる可能性があるため、パブリックログやアップロードへの混入には注意が必要です。また、プラットフォームごとに利用可能な機能や前提条件(必要な OS のバージョンや権限設定など)が異なるため、公式ドキュメントを確認する必要があります。
まとめ
agent-desktop は、AI エージェントにデスクトップアプリの操作能力を安全かつ効率的に与えるための基盤を提供するツールです。アクセシビリティツリーを活用した堅牢な設計と、多様なコマンドや MCP サポートにより、エージェント開発におけるデスクトップ自動化の選択肢を広げます。





