DesktopCtl CLI

DesktopCtl — локальный CLI для macOS: агент смотрит на экран через OCR, кликает и печатает, облако и зрение у модели не нужны

  • 71 ★ репозитория
  • Последний коммит
  • MIT
CLI

Широкий доступ

Почему такой уровень

  • Агент получает управление мышью и клавиатурой и читает содержимое всего экрана, включая закрытые приложения вроде почты и мессенджеров
  • Нужны разрешения Accessibility и Screen Recording, а установка идет скриптом из интернета с локальной подписью без нотаризации
Все причины и проверки

yaroshevych/desktopctl

Установка

Работает в

Ручная установка

curl -fsSL https://desktopctl.com/install.sh | bash

Только macOS на Apple Silicon. Скрипт из интернета, прочитайте его перед запуском. Нужны разрешения Accessibility и Screen Recording.

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Агент получает управление мышью и клавиатурой и читает содержимое всего экрана, включая закрытые приложения вроде почты и мессенджеров
  • Нужны разрешения Accessibility и Screen Recording, а установка идет скриптом из интернета с локальной подписью без нотаризации

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

DesktopCtl дает любому агенту управлять компьютером через экран, мышь и клавиатуру. Состоит из трех частей: приложение DesktopCtl.app в строке меню с запуском и настройками, служба `desktopctld`, которая отвечает за восприятие, состояние, выполнение и проверку, и `stateless` CLI `desktopctl` с командами и запросами по локальному IPC. Все работает локально. Скриншоты в облако не отправляются, текст на экране распознается на ускорителе GPU. Команда `desktopctl screen tokenize` превращает окно в структурированный набор токенов: текст по OCR и элементы интерфейса с предсказуемыми идентификаторами вроде button_7 или text_settings. Поэтому подходит любая модель, даже без зрения. Действия адресуются селектором (--text, --token) с запасным вариантом по координатам. Команды `app open`, `window focus`, `pointer click`, `keyboard type` и `keyboard press` работают с окном по его id, а `menu list` и `menu click` вызывают пункты меню через Accessibility. После каждого действия по умолчанию идет цикл наблюдения за изменением экрана, который отключается флагом --no-observe. Есть явные ожидания и JSON-ответы с request_id и стабильными кодами ошибок. В репозитории лежат два скилла: для Obsidian (через его CLI) и для напоминаний.

Для кого. Пользователям macOS на Apple Silicon, которые хотят дать Claude Code, Codex или другому агенту управление рабочим столом и держать данные экрана на своей машине.

Подходит, если

  • Приложение открывается, окно находится по идентификатору, текст вводится в нужное поле
  • Модель без зрения работает по токенам и тексту экрана, который выдает OCR
  • Скриншоты экрана нельзя отправлять в облако, и распознавание идет на самой машине
  • Пункт меню вызывается по идентификатору menu_file_new_window, мышью его искать не нужно
  • Автоматизация ждет появления или исчезновения текста на экране и проверяет итоговое состояние окна

Не подходит, если

  • Рабочая машина на Windows или Linux: поддерживается только macOS на Apple Silicon
  • Нужна автоматизация без выдачи прав: приложению нужны разрешения Accessibility и Screen Recording
  • Агент управляет приложением с API или командной строкой: прямой путь надежнее, чем клики по экрану
  • Нужна проверенная в продакшене подпись: сборка подписана локально и не имеет нотаризации Developer ID

Пример запроса к агенту

Открой приложение Заметки через `desktopctl`, найди окно, введи "Список покупок" и проверь командой `screen tokenize`, что текст появился

Ограничения

  • Поддерживается только macOS на Apple Silicon, другие платформы указаны в планах.
  • Приложению нужны разрешения Accessibility и Screen Recording.
  • Сборка подписана локально и не имеет нотаризации Developer ID. Установщик снимает атрибут com.apple.quarantine только с установленных приложения и CLI, системные настройки Gatekeeper он не меняет.
  • Служба выполняет одну команду за раз, очередь ожидания дольше около 5 секунд заканчивается ошибкой TIMEOUT с кодом выхода 3.
  • Автор называет проект активной разработкой: в планах команда `doctor`, вывод причин сбоя и лучшее локальное зрение.
  • Лицензия MIT.

Как отключить. Приложение DesktopCtl.app удаляется из ~/Applications, CLI из ~/.local/bin, а данные из каталога ~/.local/share/desktopctl или папки из DESKTOPCTL_HOME. Выданные разрешения Accessibility и Screen Recording снимаются в системных настройках macOS.

Частые вопросы

Как поставить DesktopCtl?

Командой curl -fsSL https://desktopctl.com/install.sh | bash. Установщик кладет CLI в ~/.local/bin/desktopctl и приложение в ~/Applications/DesktopCtl.app. Работает только на macOS с Apple Silicon.

Отправляются ли скриншоты в облако?

Нет, инструмент работает локально: распознавание текста идет на машине с ускорением GPU, никаких облачных зависимостей нет.

Нужна ли модель со зрением?

Нет. Команда `screen tokenize` выдает текст экрана и элементы интерфейса с идентификаторами, поэтому подходит любая модель, в том числе без поддержки изображений.

Какие разрешения нужны приложению?

Accessibility и Screen Recording для DesktopCtl.app. Выдаются они в системных настройках macOS.

Как вызвать пункт меню?

Командой `desktopctl menu list` получить список с идентификаторами вида menu_file_new_window, затем `desktopctl menu click --id` <идентификатор>. Можно указать и полный путь заголовков.

Обсуждение

Вопросов и отзывов пока нет.

CLI на Rust для macOS: агент читает интерфейс любого приложения через дерево доступности и кликает, печатает, листает по ссылкам на элементы без скриншотов

CLIШирокий доступ22,6 тыс.Звезды репозитория
Официальный

MCP-сервер дает агенту видеть экран и управлять macOS, Windows и Linux: скриншоты, клики, ввод, OCR и память экрана

MCP-серверШирокий доступ92Звезды репозитория

Open Computer Use

open-computer-use

Открытый MCP-сервер для управления рабочим столом: агент читает состояние приложений и кликает, печатает, скроллит на macOS, Linux и Windows

MCP-серверШирокий доступ2,9 тыс.Звезды репозитория

MCP-сервер на Swift дает агенту управлять любым приложением macOS: кликать, печатать и читать дерево интерфейса

MCP-серверШирокий доступ358Звезды репозитория

CLI и MCP-сервер для macOS: скриншоты, разбор интерфейса через accessibility и управление приложениями по кликам и вводу

MCP-серверШирокий доступ5,5 тыс.Звезды репозитория

Mano skill

Mano skill (mano-cua)

CLI и скилл для управления рабочим столом по текстовой задаче: скриншоты, клики, ввод, прокрутка, в облаке или локально на Apple Silicon

СкиллШирокий доступ47Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
DesktopCtl (эта карточка)нет71
agent-desktopнет22 602другой инструмент управления рабочим столом для агентов, со своим набором команд
mcp-screenshot-website-fastнетне нужна111делает снимки сайтов для агента и не управляет окнами и мышью

Коротко о README

Страница представляет DesktopCtl как локальный CLI для ИИ-агентов, перечисляет достоинства и три компонента архитектуры. Дальше идут раскладка файлов и каталогов, текущий охват (macOS, OCR, токены, меню), требования и установка одной командой. Быстрый старт показывает пример с Заметками и вызов меню, в конце приведены статус и планы.

Бейдж для README

Сообщить о проблеме