Keepresso
Keepresso
Использование Keepresso

Не давайте Mac засыпать из командной строки

György
Проверил
György
Обновлено Jul 23, 2026 4 min

Keepresso поставляется с небольшим инструментом командной строки, чтобы управлять им из терминала, shell-скрипта, Makefile или задачи CI, не обращаясь к строке меню. Команда называется keepresso, и она работает двумя способами: она может общаться с приложением в строке меню или сама держать Mac активным, как встроенная caffeinate.

Установите команду

Если вы установили Keepresso через Homebrew, команда keepresso уже есть в вашем PATH, ничего делать не нужно:

brew install --cask gyorgysh/keepresso/keepresso

Если вы установили приложение из DMG, инструмент лежит внутри пакета приложения, и ваш PATH пока о нём не знает. Свяжите его один раз:

sudo ln -s /Applications/Keepresso.app/Contents/Helpers/keepresso /usr/local/bin/keepresso

Проверьте, что всё подключено:

keepresso version

Управление приложением

Эти команды передаются приложению Keepresso, запуская его, если оно ещё не работает. Это управляемый скриптами двойник меню.

keepresso start                 # запустить сессию без ограничения по времени
keepresso start --for 90        # запустить сессию на 90 минут
keepresso start --until 18:00   # работать до заданного времени
keepresso stop                  # завершить текущую сессию
keepresso toggle                # включить или выключить

Так долгая задача может будить Mac при начале и давать ему заснуть по завершении:

keepresso start
make release
keepresso stop

Читайте статус

keepresso status сообщает, выполняется ли сессия, и её код выхода легко использовать для ветвления в скрипте:

  • 0 Mac поддерживается активным
  • 1 не поддерживается
  • 2 приложение не запущено
keepresso status && echo "awake" || echo "asleep"

Добавьте --json для ответа, пригодного для машинной обработки:

keepresso status --json

То же состояние сессии также отражается в файле, так что приложение в строке меню, строка статуса или виджет могут прочитать его, ничего не запуская:

~/Library/Application Support/Keepresso/status.json

В нём хранится текущее состояние и метки времени в формате ISO 8601.

Автономное удержание без приложения

Иногда вы вообще не хотите привлекать приложение, вам просто нужно, чтобы вот эта конкретная оболочка не давала Mac заснуть, точно как caffeinate. В этом режиме сам процесс keepresso удерживает power assertion, и Mac свободен снова заснуть в момент его завершения.

keepresso -i            # удерживать до нажатия Ctrl-C
keepresso -t 3600       # удерживать заданное число секунд
keepresso -w 5123       # удерживать до завершения процесса 5123
keepresso -d            # также не давать засыпать дисплею (сочетается с остальными)
keepresso -u            # объявить активность пользователя: разбудить дисплей сейчас

Самый полезный паттерн, это привязать бодрствование к жизни команды или оболочки:

keepresso -w $$ &       # оставаться активным, пока жива эта оболочка
ffmpeg -i in.mov out.mp4 & keepresso -w $!   # держать, пока не закончится кодирование

Поскольку эти удержания, это настоящие power assertion macOS, они видны в pmset -g assertions и в собственной панели активности Keepresso, рядом с любым другим приложением, удерживающим Mac активным.

Аренда для автоматизации, для скриптов и агентов

start без stop может навсегда приковать Mac к бодрствованию, если скрипт упадёт. Для автоматизации без присмотра берите вместо этого аренду: ограниченный по времени грант, который владелец должен постоянно продлевать. Если инструмент умирает, аренда истекает, и Mac снова может уснуть.

ID=$(uuidgen)
keepresso lease acquire --id "$ID" --tool my-script --task "nightly render" --ttl 600
keepresso lease heartbeat --id "$ID"   # renew before half the TTL elapses, on a loop
keepresso lease release --id "$ID"     # done, let the Mac rest
keepresso lease list --json            # every live lease, machine-readable

Активные аренды видны в меню с обратными отсчётами, Keepresso объединяет их все, а максимальное время жизни (не более 7 дней) это потолок, который heartbeat не может продлить. Полный протокол, MCP-сервер и навык агента в один клик описаны в статье позвольте ИИ-агентам держать Mac активным.

Расписание пробуждения

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

keepresso wake status                          # read the schedule, always allowed
keepresso wake set --at "2026-07-24 07:30"     # one-shot wake
keepresso wake set --repeat MTWRF --time 07:30 # repeating wake
keepresso wake clear

status работает для всех. set и clear применяют общесистемное изменение через помощника администратора, поэтому они работают только пока в разделе Настройки, «Автоматизация» включена опция Разрешить автоматизации менять расписание пробуждения. По умолчанию она выключена.

Смотрите также

Получите Keepresso

Бесплатно и с открытым исходным кодом, для macOS 14 и новее. Установите его и не давайте Mac засыпать на ваших условиях.

Ещё в Использование Keepresso

Держите Mac активным заданное время
Запустите сессию поддержания активности по таймеру, чтобы Mac оставался активным во время загрузки или рендеринга, а затем засыпал сам.
Не давайте MacBook засыпать с закрытой крышкой
Не давайте MacBook засыпать при закрытии крышки, от батареи, без внешнего дисплея и без кабеля питания, с помощью бесплатного приложения с открытым исходным кодом.
Умные триггеры держат Mac активным, только когда нужно
Задайте условия, чтобы Keepresso не давал Mac засыпать только пока работает приложение, идёт звонок, вы на питании от сети и не только. Никогда не активен там, где не нужно.
ИИ-агенты держат Mac активным через аренду автоматизации
Дайте ИИ-агентам и скриптам безопасный способ удерживать Mac активным. Аренда для автоматизации ограничена по времени и истекает сама, а MCP-сервер и встроенный навык агента обучают вашего агента всему протоколу.