Keep your Mac awake for a reason, and know why it won’t sleep
“Awake 1h 23m, because Vite is serving :5173.” Stat Space holds your Mac awake for exactly as long as the job needs, then lets it sleep, and tells you which other apps are keeping it up.
Timers
15 minutes, 1 hour, until a time, or forever. Keep just the system awake, or the system and the display.
Until the job is done
Stay awake until a download finishes (network quiet for a minute), while on the charger, or until a command you pick in your terminal exits.
Why won’t it sleep
A live list of every other app holding a sleep assertion, with its reason, and a 7-day history of what kept your Mac awake.
Lid-closed warning
If something kept your Mac awake with the lid closed for more than a few minutes, you get told which app it was when you open it.
Rules (Pro)
Stay awake while an app, process or port runs, while the network or CPU is busy, or on a schedule, with guards for AC power or an external display.
From the terminal
statspace awake 2h --display,statspace awake offandstatspace blockers, plus akeep_awakeMCP tool for agents on long runs.
One assertion, a clear reason
macOS decides whether to sleep by checking power assertions: requests from apps to stay awake. Stat Space holds exactly one, and the Awake tab always says why: the timer, the download, or the Pro rule that matched (“because Vite is on :5173”). The cup icon in the menu bar fills while it’s held, so you never leave it on by accident.
The other half: what else is keeping it awake
Most “my Mac won’t sleep” problems aren’t caused by a keep-awake app. They’re a browser tab playing video, a stuck backup, a Docker VM or a sync client. The Blocking sleep list shows each app’s assertion with its type and reason, read straight from IOPMCopyAssertionsByProcess, the same source as pmset -g assertions. The History section keeps 7 days of it, merged and grouped by day, so you can see what held your Mac up overnight.
Built for long jobs
The task mode is the one developers reach for: pick a command already running in your terminal, a build, a test run or a large rsync, and the Mac stays awake until that process exits, then sleeps on its normal schedule. “Download ends” watches network throughput and lets go once download and upload stay quiet for a minute. “On charger” holds until you unplug. From a script or an agent run, statspace awake 2h and the keep_awake MCP tool hold it for a set time or until a given time.
Lean by design
The engine is event-driven: it listens for powerd’s assertion notifications instead of polling, and Pro rules reuse samplers that are already running. A timer costs nothing beyond the assertion itself.
Questions
How is this different from caffeinate?
It uses the same kind of power assertion, so the effect on sleep is identical. The difference is that you can see it, it ends on its own when the task does, and it shows you every other app’s assertions too.
Can it keep my MacBook awake with the lid closed?
No. Staying awake with the lid closed and no external display needs a root helper, which Stat Space doesn’t install for this. With an external display, power and a keyboard, macOS’s own clamshell mode works.
Does it drain the battery?
Only as much as an awake Mac does. Stat Space holds one assertion and releases it when the timer or task ends. Pro rules can be limited to AC power so they never run on battery.
Which keep-awake features are free?
Timers, the task, download and charger modes, the sleep blockers list, sleep history and the lid-closed warning are free. Rules that switch on by app, port, network, CPU or schedule are Pro.
Know what your Mac is doing, without adding to it.
Free, no account. Pro is $9.99 once for the first 100 buyers.