SleepLess app icon: a sun rising over a horizon inside a rounded lid

SleepLess

Keep your Mac awake — lid open or closed.

Free menu-bar app for macOS 13+ on Apple Silicon.

Version 1.3.5 · .pkg installer · macOS 13+ on Apple Silicon · install help · all releases

By Weta Technologies LimitedSwift & SwiftUIFreeware · all rights reservedNo analytics · signed updates

Lives in your menu bar

A screen with the app icon's sunrise inside. Off is a hollow sun resting on the bottom of the screen. Turn SleepLess on and the sun climbs in and five rays fan out one after another; they breathe slowly while it is on, and it all sets again when it turns off. In lid-closed mode the sun lifts to the middle of the screen as a full disc. It is a template image, so it fits light and dark menu bars, and the animation pauses while your screens sleep.

Animated SleepLess menu-bar icon on a light and a dark menu bar: a screen with a hollow sun when off, the sun rising with rays when on, the sun lifted into the middle of the screen for lid-closed mode, then setting again

Everything you need, nothing you don't

One panel, a handful of switches, automations that mind themselves, and guard rails so it never bites you.

☀️

Keep awake

Lid open: the Mac never idle-sleeps — the same assertions as caffeinate -di. No admin rights. When idle the screen can stay on, dim to a brightness you pick after 30 s to 10 min (any key press brings it straight back), or sleep as usual while the Mac keeps going — for overnight downloads and renders.

⚡️

Automations

Keep awake by itself while an app is running (a call, a presentation, a build), on the power adapter, with an external display, or on a schedule — overnight windows included. All off by default; the status line says which one is holding, and a click pauses it until its reason ends. No polling, no permissions.

💻

Keep awake with lid closed

Sets the one flag that beats lid-close sleep on Apple Silicon (SleepDisabled) through a tiny root helper you set up once — one prompt, your password or Touch ID — and that afterwards updates itself only from signed files. Close the lid and the screen and keyboard light go dark while everything keeps running — no unlock when you open it.

🛡️

Safety cut-offs

Only while charging. Pause when running hot. Low-battery cutoff (default 20 %). Turn on when you plug in, off when you unplug. All under one Safety disclosure with a one-line summary.

⏱️

Turn off — after, or at a time

15 min to 4 hours, or at a time you pick (tomorrow if it has passed). The status line counts down, a progress bar runs, and the time left can sit beside the menu-bar icon. Then everything turns off and normal sleep is back.

👆

Click, hold, right-click

A quick click on the menu-bar icon turns SleepLess on (bringing back the modes you last had on) or off. Press and hold for the settings panel. Right-click for the quick menu: 15 minutes to 4 hours, until a time, indefinitely.

⌨️

Shortcut & scripting

Record a keyboard shortcut that works in any app — no Accessibility permission. Drive it from a shortcut, a script or a shell with sleepless://on?minutes=30, on?until=17:30, off, toggle. Optional notifications when a timer ends or a safety rule steps in.

🐕

Watchdog

If the app crashes or hangs, the helper restores normal sleep within about two minutes; quitting normally restores it immediately. Your Mac can never get stuck unable to sleep.

How it works

Two different problems, two different mechanisms — both readable in a few hundred lines of Swift and one shell script.

Lid open

SleepLess holds two IOKit power assertions, PreventUserIdleDisplaySleep and PreventUserIdleSystemSleep, and releases them the moment you turn it off or quit. Dimming uses the same private DisplayServices brightness calls the keyboard keys use, and watches the session idle time to restore your brightness on the first input.

Lid closed

1
The app writes 1 or 0 to a request file and rewrites it every 30 s.
2
launchd runs the root helper — a short shell script — on every write and every 30 s; it runs pmset -a disablesleep 1|0 to match.
3
A request older than 90 s counts as 0 — the watchdog. The helper only undoes a SleepDisabled it set itself.
4
Close the lid (no monitor plugged in) and the app turns the screen and keyboard light down to 0 — without putting the display to sleep, so macOS doesn't lock — while the Mac stays fully awake. Open it and you're straight back where you left off. (Want a password on the way back? Press ⌃⌘Q before closing.)
5
The MagSafe charging light switches off while the lid is shut, and comes back in the right colour when you open it — handy in a dark bedroom. (Switch under Safety.)

The panel reads the live SleepDisabled flag, so it shows whether lid-closed mode is really active — and tells you if something else has disabled sleep.

The panel

Press and hold the menu-bar icon. A status header that says what is happening — the mode, the time left, which automation is holding — a card per mode, the timer, and the safety rules, automations and extras each one click away behind a one-line summary. Light or dark, it follows your Mac — and Reduce Motion, Increase Contrast, the keyboard and VoiceOver. Right-click the icon for the quick menu.

SleepLess panel in light appearance
Light
SleepLess panel in dark appearance
Dark
The Automations section of the panel, expanded, light appearance
Automations
The right-click menu on the menu-bar icon: the current state, Turn On, Keep awake for 15 minutes to 4 hours, Until a time, Indefinitely, Settings and Quit
The quick menu (right-click)

Download & install

Download the installer and open it: Continue, Agree, Install — one password (or Touch ID), and SleepLess is in your menu bar with everything set up.

⬇︎ Download SleepLess.pkg

  1. Open the package. It is Developer ID signed and notarized by Apple (the official builds are signed and notarized by Weta Technologies Limited), so there is no Gatekeeper step — and the app it installs opens without a warning.
  2. Continue, Agree to the licence, Install. macOS asks for your password or Touch ID once: SleepLess goes into Applications, its helper for lid-closed mode and the charging light is set up, and SleepLess opens in the menu bar. Nothing asks again — later updates arrive signed, from inside the app.

Or build it from source

A few seconds with Apple's command-line developer tools (xcode-select --install):

git clone https://github.com/Weta-Technologies/SleepLess.git
cd SleepLess
./build.sh install

Builds build/SleepLess.app, copies it to /Applications and launches it. Look for the screen-with-a-sunrise icon in the menu bar (if you use a menu-bar organiser app, or the bar is crowded near the notch, it may be tucked away there). Click it to turn SleepLess on or off; press and hold it for the settings panel; right-click it for the quick menu. Built from source, the panel offers a one-time setup for the helper behind lid-closed mode (your password or Touch ID, once — the package does this for you); the helper then updates itself from signed files, and SleepLess itself checks GitHub for updates about once a day and installs them from the panel. To uninstall, quit SleepLess, run sudo /bin/sh /Applications/SleepLess.app/Contents/Resources/sleepless-helper.sh uninstall (removes the helper and restores normal sleep) and move the app to the Trash — or ./build.sh uninstall from a source checkout.

  • Test it: SleepLess.app/Contents/MacOS/SleepLess --selftest checks the click logic, settings migration, the timer clock, schedules, automations and the URL scheme without changing anything on the Mac (--selftest-hardware is the one that nudges brightness and the keyboard light for a second); ./test-helper.sh checks the helper's watchdog with a fake pmset.
  • Privacy: no analytics; the only network activity is the daily update check (a plain request to GitHub, which you can turn off) and the update you start. Updates are Ed25519-signed and verified before anything is unpacked. Automations use only what macOS tells every app (running apps, displays, power, the clock), the shortcut is a system hot key rather than an event tap, notifications are sent only if you turn them on, and the URL scheme accepts nothing but its own few verbs. The helper only ever runs pmset; any process running as your user could write the request file, but the worst case is a Mac that stays awake, and the watchdog still applies.