Dutis CLI

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

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

Расширенный доступ

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

  • Меняет приложения по умолчанию для файлов и ссылок во всей учетной записи macOS
  • Режим записи MCP включается флагом и требует токена подтверждения
  • Слежение за дрейфом может само возвращать ассоциации, если это разрешает политика
Все причины и проверки

tsonglew/dutis

Установка

Работает в

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

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 строит по ним предложение с обоснованием и ничего не меняет в системе, пока вы не подтвердите.

Обсуждение

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

Локальный MCP-сервер для Mac: Claude, Codex и ChatGPT работают в приложениях, файлах, терминале и браузере по разрешениям

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

CLI раскладывает мусорную папку вроде Downloads по местам с правилами на естественном языке, а агент судит файлы.

CLIРасширенный доступ109Звезды репозитория

Cunzhi (寸止)

寸止 (Cunzhi)

MCP-сервер на Rust и Tauri: перед завершением ответа агент показывает окно с вариантами, хранит правила проекта и ищет по коду

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

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

MCP-серверРасширенный доступ76Звезды репозитория

MCP-сервер и замена истории оболочки: SQLite-журнал команд с контекстом, который агенты читают по MCP

MCP-серверРасширенный доступ127Звезды репозитория

Приложение в меню macOS пишет текст активных окон за день в markdown, а MCP-сервер отдает эту запись агенту

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

Коротко о README

Описание проекта охватывает возможности терминального меню, JSON-режима для скриптов, политики, снимков, слежения за дрейфом и событий. Установка идет через Homebrew или сборку из исходников, а подключение к агенту разделено на скилл и MCP-сервер. Подробности вынесены в документы папки docs.

Бейдж для README

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