DesktopCtl CLI
DesktopCtl — локальный CLI для macOS: агент смотрит на экран через OCR, кликает и печатает, облако и зрение у модели не нужны
- 71 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Агент получает управление мышью и клавиатурой и читает содержимое всего экрана, включая закрытые приложения вроде почты и мессенджеров
- Нужны разрешения Accessibility и Screen Recording, а установка идет скриптом из интернета с локальной подписью без нотаризации
Установка
- Работает в
Ручная установка
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-инструментыCLI на Rust для macOS: агент читает интерфейс любого приложения через дерево доступности и кликает, печатает, листает по ссылкам на элементы без скриншотов
MCP-сервер дает агенту видеть экран и управлять macOS, Windows и Linux: скриншоты, клики, ввод, OCR и память экрана
Open Computer Use
open-computer-use
Открытый MCP-сервер для управления рабочим столом: агент читает состояние приложений и кликает, печатает, скроллит на macOS, Linux и Windows
MCP-сервер на Swift дает агенту управлять любым приложением macOS: кликать, печатать и читать дерево интерфейса
CLI и MCP-сервер для macOS: скриншоты, разбор интерфейса через accessibility и управление приложениями по кликам и вводу
Mano skill
Mano skill (mano-cua)
CLI и скилл для управления рабочим столом по текстовой задаче: скриншоты, клики, ввод, прокрутка, в облаке или локально на Apple Silicon
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| DesktopCtl (эта карточка) | нет | 71 | ||
| agent-desktop | нет | 22 602 | другой инструмент управления рабочим столом для агентов, со своим набором команд | |
| mcp-screenshot-website-fast | нет | не нужна | 111 | делает снимки сайтов для агента и не управляет окнами и мышью |
Коротко о README
Страница представляет DesktopCtl как локальный CLI для ИИ-агентов, перечисляет достоинства и три компонента архитектуры. Дальше идут раскладка файлов и каталогов, текущий охват (macOS, OCR, токены, меню), требования и установка одной командой. Быстрый старт показывает пример с Заметками и вызов меню, в конце приведены статус и планы.