Amirhossein HosseinpourAmirhpCom
Resume Book a consultationBook
Active macOS app · Open source

KeepMeUp

Keep the Mac awake, then run it from your phone.

A small menu bar app. One click stops display sleep, the screensaver and idle sleep, and timers turn the display off, lock, sleep or shut down the Mac later. Connect your own Telegram bot and you can do the same from anywhere, plus screenshots, apps, media, files and alerts.

Download for Mac Source on GitHub

Free, MIT licence, no accounts or servers. The app is not notarized, so the first launch needs right-click, Open. Figures from the GitHub API, 3 October 2026.

On GitHub2026 to today

What it does

A coffee cup in the menu bar. It is filled while the Mac is being kept awake.

One-click keep-awake

Blocks display sleep, the screensaver and idle system sleep, whatever your Energy and Lock Screen settings say. Turn it off and macOS goes back to normal.

Timers

After 15 minutes, an hour or any time you type (45m, 1h30m, 2:15): stop keeping awake, turn the display off, start the screensaver, lock, sleep, restart or shut down.

Alerts and schedules

A Telegram message when the battery runs low, the charger is plugged or unplugged, or the Mac comes online. Actions that repeat daily, like sleep at 1 AM on weekdays.

Built-in updates

Checks GitHub for new releases, verifies the download's signature, installs it in place and relaunches. Launch at login, and keep-awake can resume after a restart.

Screenshots

The menu bar window and two Settings tabs, on macOS 26.

  • The KeepMeUp menu: a Staying awake card with a switch, a Timer card with 15m, 30m, 1h and 2h buttons, a custom time field and a Turn display off action, then Settings, the version 1.4.1 and Quit.
    The menu bar window
  • KeepMeUp Settings, General tab: launch at login, resume keeping awake after relaunch, and Telegram alerts for low battery, power adapter changes and Mac is online.
    Settings, General
  • KeepMeUp Settings, Commands tab: Screen Recording, Camera, Automation and Files and Folders permissions all allowed, then a switch for each bot command, starting with /status and /on.
    Settings, Commands

Try the commands

A copy of the app's Commands tab next to a chat with the bot. Switch a command off and it leaves the bot's menu and the /help reply, as it does in the app.

KeepMeUp Settings
Screen Recording Camera Automation Files & Folders

32 of 45 on. Commands marked can see the screen, read files or run code: they start off, and turning one on asks for your password or Touch ID.

Keep awake

  • /status

    Current state

  • /on [time]

    Keep awake, optionally for a while

  • /off [time]

    Stop keeping awake, now or later

  • /timer <time> <action>

    Schedule an action

  • /cancel

    Cancel the running timer

  • /caffeinate <app>

    Keep awake only while an app runs

Power and screen

  • /displayoff

    Turn the display off

  • /screensaver

    Start the screensaver

  • /lock

    Lock the screen

  • /sleep

    Sleep now

  • /restart

    Restart (asks first)

  • /shutdown

    Shut down (asks first)

  • /brightness [0-100]

    Show or set display brightness

Desktop

  • /desktop

    Hide all apps and show the desktop

  • /show

    Bring hidden apps back

Screen and info

  • /screenshot

    Capture the screen

  • /webcam

    Take a photo with the camera

  • /info

    Battery and system info

Apps

  • /apps

    List running apps with quick quit links

  • /open [name or number]

    List installed apps or launch one

  • /quit [name or number]

    Quit an app

Sound and media

  • /volume [0-100]

    Show or set the output volume

  • /mute

    Mute or unmute the output

  • /play

    Play or pause the current media

  • /next

    Skip to the next track

  • /previous

    Go to the previous track

System

  • /say <text>

    Speak text out loud on the Mac

  • /notify <text>

    Show a notification on the Mac

  • /clip [text]

    Read the clipboard, or set it

Network

  • /wifi

    Wi-Fi network and signal

  • /ip

    Local and public IP addresses

Terminal and shell

  • /terminal

    Open Terminal

  • /term <command>

    Run in Terminal and send a screenshot

  • /run <command>

    Run a shell command and get the output

Files

  • /find <name>

    Find files anywhere in your home folder

  • /desk [name]

    Search Desktop, or list its newest items

  • /docs [name]

    Search Documents, or list its newest items

  • /dl [name]

    Search Downloads, or list its newest items

  • /recent [days]

    Files you opened recently (Finder Recents)

  • /get <path or number>

    Send a file to this chat

  • /openfile <path or number>

    Open a file on the Mac

  • /upload

    Save a file you send into Downloads

Automation

  • /schedules

    List scheduled actions

  • /schedule <time> <action> [weekdays]

    Add a scheduled action

  • /unschedule <number>

    Remove a scheduled action

KeepMeUp

bot

/help

KeepMeUp commands

Keep awake
/status – Current state
/on [time] – Keep awake, optionally for a while
/off [time] – Stop keeping awake, now or later
/timer <time> <action> – Schedule an action
/cancel – Cancel the running timer
/caffeinate <app> – Keep awake only while an app runs

Power and screen
/displayoff – Turn the display off
/screensaver – Start the screensaver
/lock – Lock the screen
/sleep – Sleep now
/restart – Restart (asks first)
/shutdown – Shut down (asks first)
/brightness [0-100] – Show or set display brightness

Desktop
/desktop – Hide all apps and show the desktop
/show – Bring hidden apps back

Screen and info
/info – Battery and system info

Apps
/apps – List running apps with quick quit links
/open [name or number] – List installed apps or launch one
/quit [name or number] – Quit an app

Sound and media
/volume [0-100] – Show or set the output volume
/mute – Mute or unmute the output
/play – Play or pause the current media
/next – Skip to the next track
/previous – Go to the previous track

System
/say <text> – Speak text out loud on the Mac
/notify <text> – Show a notification on the Mac

Network
/wifi – Wi-Fi network and signal
/ip – Local and public IP addresses

Terminal and shell
/terminal – Open Terminal

Automation
/schedules – List scheduled actions
/schedule <time> <action> [weekdays] – Add a scheduled action
/unschedule <number> – Remove a scheduled action

Times: 30m, 2h, 1h30m, 90s or 1:30

/timer 1h30m shutdown

⏰ Shut down in 1h 30m.

/status

☕️ Keep-awake is ON
⏰ Shut down in 1h 30m
🔋 82% · charging
💻 MacBook Pro

Message

Bot replies are the app's own wording; the Mac name, battery and times are examples.

Private by design

A bot that can shut down your Mac or read its files has to say no to almost everyone.

Only chats you approve on the Mac itself can send commands. Pairing closes after the first chat is approved, so a stranger who finds the bot cannot ask for access; adding another chat opens pairing for five minutes. In a group, only people who already paired privately can give commands.

The commands marked 🛡 can see the screen, read files, use the camera or run code. They start turned off, and turning one on asks for your password or Touch ID. The bot token sits in a file only your user account can read. There are no servers, analytics or accounts: the app talks to Telegram, to GitHub for updates, and to ipify only when you ask /ip for the public address.

How it works

Native Swift with no third-party code. Keep-awake uses the same power assertions as macOS's own caffeinate.

A SwiftUI MenuBarExtra holds the menu, with glass cards on macOS 26 and a material fallback before it. Keep-awake is an IOKit power assertion, released the moment you turn it off, so nothing is left changed in System Settings. The bot long-polls Telegram's getUpdates, so no port is opened on your Mac.

Launch at login uses SMAppService, sensitive switches go through LocalAuthentication, and updates are only installed when the zip's Ed25519 signature matches the key built into the app.

// what the cup does when it fills
IOPMAssertionCreateWithName(
    kIOPMAssertionTypePreventUserIdleDisplaySleep,
    IOPMAssertionLevel(kIOPMAssertionLevelOn),
    "KeepMeUp" as CFString, &assertionID)

// and when it empties
IOPMAssertionRelease(assertionID)
The IOKit calls behind keep-awake; display, idle and system sleep each get one.

Getting started

macOS 13 Ventura or later. Telegram is optional: the menu bar part works without it.

  1. Install

    Download KeepMeUp.zip from the latest release, unzip it and move KeepMeUp.app to Applications.

  2. First launch

    The app is not notarized, so right-click it, choose Open, then Open again. If macOS still blocks it, click Open Anyway in System Settings, Privacy & Security.

  3. Connect a bot

    In Telegram, send /newbot to @BotFather and copy the token. In Settings, Telegram, paste it, enable Telegram control and click Save & Connect.

  4. Pair your chat

    Click Open in Telegram, tap Start, then click Allow on your Mac. The bot replies with every command that is turned on.

Releases

Every GitHub release with the first line of its notes and its download count, refreshed from the GitHub API every day.

VersionReleasedWhat changedDownloads
1.4.12 Oct 2026/webcam and the Camera permission now work.2
1.4.02 Oct 2026Grant access buttons at the top of the Commands tab for Screen Recording, Camera, Automation and Files.0
1.3.22 Oct 2026Once your Telegram bot is connected, the Telegram tab tells you that you can turn each command on or off in the Commands tab, with an Open Commands button…0
1.3.12 Oct 2026When you open KeepMeUp, a small tip appears under its menu bar icon saying it's running there.0
1.3.02 Oct 2026Sound and media: /volume, /mute, /play, /next, /previous1
1.2.02 Oct 2026/desk, /docs and /dl search Desktop, Documents and Downloads separately.1
1.1.22 Oct 2026Screen Recording, Automation and other permissions now survive updates.2
1.1.12 Oct 2026Updates are now verified with a release signature (Ed25519).1
1.1.02 Oct 2026Redesigned menu with glass cards on macOS 26 and later0
1.0.02 Oct 2026Keeps your Mac awake by blocking display sleep, the screensaver and idle sleep1
branch main 28 active projects ↑ 125 releases open-source/keep-me-up.md Sari --:-- UTC+3:30 its@amirhp.com