Dutis CLI
CLI на Rust для macOS: смотрит и меняет приложения по умолчанию для файлов и ссылок, есть MCP-сервер и скилл для агента
- 257 ★ репозитория
- Последний коммит
Расширенный доступ
Почему такой уровень
- Меняет приложения по умолчанию для файлов и ссылок во всей учетной записи macOS
- Режим записи MCP включается флагом и требует токена подтверждения
- Слежение за дрейфом может само возвращать ассоциации, если это разрешает политика
Установка
- Работает в
Ручная установка
brew install tsonglew/tap/dutisУстанавливает универсальные бинарники dutis и dutis-event-http и зависимость duti. Скилл ставится отдельно: npx skills add tsonglew/dutis --skill dutis --global --agent claude-code.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Меняет приложения по умолчанию для файлов и ссылок во всей учетной записи macOS
- Режим записи MCP включается флагом и требует токена подтверждения
- Слежение за дрейфом может само возвращать ассоциации, если это разрешает политика
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Dutis — программа на Rust, которая читает и меняет, какое приложение открывает расширение файла, тип UTI или MIME и схему ссылок на macOS. Без подкоманды открывается терминальное меню: оно показывает текущее приложение, сравнивает с новым и меняет значение только после подтверждения. Для скриптов у CLI стабильный вывод в JSON, пробный запуск, точные селекторы и явные коды выхода. Каждое изменение проходит один путь: осмотр, план, проверка политики, подтверждение, применение, проверка результата. Перед правкой сохраняется снимок, и откатить можно через тот же проверяемый план. Есть декларативный файл TOML с планом и разницей, профили для разработчика, дизайнера или минимального набора, а также слежение за дрейфом: Dutis замечает, что ассоциации поменялись, и может вернуть их по политике. Для агентов Dutis запускает локальный MCP-сервер командой `dutis mcp`, он стартует только на чтение, а запись включается флагом `--allow-writes`. Отдельный скилл ведет агента по тому же пути.
Для кого. Пользователям macOS и администраторам парка Mac, которые настраивают, какое приложение открывает файлы и ссылки, и хотят поручить это агенту.
Подходит, если
- Агенту сказали сделать VS Code приложением по умолчанию для Markdown, и перед правкой нужен план
- Надо узнать, какое приложение открывает PDF, и какие установленные программы умеют с ним работать
- После обновления системы ассоциации файлов сбились, и их надо вернуть из снимка
- Нескольким Mac нужен один набор приложений по умолчанию, записанный в файле TOML
Не подходит, если
- Нужен другой системе, чем macOS: Dutis работает через Launch Services и `duti`
- Нужно просто открыть один файл в другой программе, не меняя ассоциацию
- Агент должен менять ассоциации без вашего подтверждения: запись в MCP по умолчанию отключена
Пример запроса к агенту
Покажи, какое приложение сейчас открывает файлы .md, и предложи план замены на VS Code без примененияОграничения
Работает на macOS 10.14 и новее. Менять приложения по умолчанию можно только при установленном `duti`, формула Homebrew ставит его сама, для просмотра он не нужен. Скилл и MCP-сервер не устанавливают сам исполняемый файл `dutis`, он должен быть в `PATH` клиента. В ограниченной оболочке агента Launch Services может быть скрыт, тогда `dutis get` сообщает, что приложения нет, хотя оно задано, и надежнее запрашивать значение через MCP. Лицензия в репозитории не указана.
Как отключить. Удалите папку скилла из каталога скиллов агента, MCP-сервер уберите из конфигурации клиента, например `codex mcp remove dutis`, а программу удалите через `brew uninstall dutis`. Сохраненные снимки остаются на диске.
Частые вопросы
Как подключить Dutis к Claude Code?
Для скилла выполните `npx skills add tsonglew/dutis --skill dutis --global --agent claude-code`, для MCP зарегистрируйте сервер: `claude mcp add --scope user --transport stdio dutis -- dutis mcp`. Оба шага требуют установленного `dutis` в `PATH`.
Может ли агент менять приложения по умолчанию через MCP?
По умолчанию нет: сервер стартует только на чтение. Инструменты записи появляются при `--allow-writes` и требуют свежего дайджеста плана и токена `DUTIS_MCP_APPROVAL_TOKEN` на стороне сервера.
Как откатить неудачную смену приложения?
Перед изменением Dutis сохраняет снимок прежних ассоциаций. Откат идет через тот же проверяемый план, подробности в docs/snapshots-and-rollback.md.
Чем Dutis отличается от самого duti?
`duti` умеет только ставить значение. Dutis добавляет осмотр, план, политику, снимки, проверку результата и слежение за дрейфом, а `duti` использует для записи.
Что такое профили?
Это встроенные наборы для разработчика, дизайнера, медиа и минимальный. Dutis строит по ним предложение с обоснованием и ничего не меняет в системе, пока вы не подтвердите.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыЛокальный MCP-сервер для Mac: Claude, Codex и ChatGPT работают в приложениях, файлах, терминале и браузере по разрешениям
CLI раскладывает мусорную папку вроде Downloads по местам с правилами на естественном языке, а агент судит файлы.
Cunzhi (寸止)
寸止 (Cunzhi)
MCP-сервер на Rust и Tauri: перед завершением ответа агент показывает окно с вариантами, хранит правила проекта и ищет по коду
MCP-сервер и приложение для Mac: один локальный индекс репозиториев, сессий агентов и задач, поиск по смыслу и нити работы
MCP-сервер и замена истории оболочки: SQLite-журнал команд с контекстом, который агенты читают по MCP
Приложение в меню macOS пишет текст активных окон за день в markdown, а MCP-сервер отдает эту запись агенту
Коротко о README
Описание проекта охватывает возможности терминального меню, JSON-режима для скриптов, политики, снимков, слежения за дрейфом и событий. Установка идет через Homebrew или сборку из исходников, а подключение к агенту разделено на скилл и MCP-сервер. Подробности вынесены в документы папки docs.