Choose Macchiato if you want a free, open-source switch and are comfortable approving a root helper that turns sleep off for the whole system with pmset disablesleep. Choose Clamshell if you want no admin step, a change limited to lid-close sleep, an automatic thermal cutoff and scripting, and will pay $9.99 once. Neither app detects coding agents.
Macchiato is a small menu bar app with one switch, Keep Awake. It is the tool recommended by a Kanaries article on keeping Codex and Claude Code running with the lid closed, which is where many people first hear of it. Clamshell for Mac is the app this site makes. Both exist for the same moment: an agent is halfway through a task and you need to shut the laptop.
Everything below about Macchiato comes from its GitHub repository: the README, the source files, the 0.1.0 release and the issue tracker, all read on October 11, 2026. We found no separate Macchiato website or store listing. "Not stated" means we could not find it there; it does not mean the feature is missing.
The decision rule
Pick Macchiato if
You want to pay nothing, you want to read the code, you are fine approving a privileged helper once, and you know how to check and reset SleepDisabled yourself. It also suits you if you want one switch that blocks sleep with the lid open or closed.
Pick Clamshell if
You cannot or will not grant admin rights, you want the change limited to the lid and gone after a restart, you want a thermal cutoff that needs no attention, or you want to arm it from a script.
Pick neither if
The Mac sits at a desk on power with a monitor attached. Apple's own closed-lid display setup already keeps it awake. The lid-closed overview covers the free options.
Side-by-side comparison
| Macchiato | Clamshell for Mac | What it means for you | |
|---|---|---|---|
| Price | Free. | $9.99 once for one Mac, or $19.99 for three, after a 7-day trial. Also on Setapp. | Macchiato wins on cost. |
| Source code | Open source, Apache-2.0. A few Swift files. | Closed source. | You can audit Macchiato and build it yourself. |
| How lid-closed works | An IOKit PreventUserIdleSystemSleep assertion plus pmset -a disablesleep 1. |
The unprivileged IOKit lid sleep-state control plus the same kind of idle-sleep assertion. Never sets SleepDisabled. |
System-wide setting against a lid-only one. |
| Admin rights | A privileged LaunchDaemon helper, registered through SMAppService. Approve "Macchiato Helper" in System Settings once. |
None. No sudo, helper, driver or kernel extension. | On a managed Mac, the helper may not be allowed. |
| How you turn it on | The Keep Awake switch in the menu. Stays on until you switch it off or quit. | Menu, right-click, Option while closing the lid on supported Macs, URL scheme or Shortcuts. | Macchiato is simpler. Clamshell has more ways in. |
| Agent detection | Not stated. The README describes a manual switch. | None. It does not detect agents. | With both, you decide when it is on. |
| Automation | Not stated. | clamshell://arm, disarm, toggle, and four Shortcuts actions. |
Only Clamshell documents a way to script it. |
| Thermal safeguard | Not stated. The README says to "keep an eye on battery and heat". | Always on. Serious or critical thermal pressure disarms it and blocks arming until the Mac cools. | With Macchiato, watching heat is your job. |
| Battery safeguard | Not stated for 0.1.0. A low-battery cutoff is an open, unmerged pull request. | Optional "Disarm on low battery" at a level you choose. Off by default. | Neither protects the battery out of the box. |
| After a crash or force quit | README: run sudo pmset -a disablesleep 0 to restore normal sleep. |
The lid change is never saved across a restart. The direct edition can relaunch after an unexpected exit when its crash-recovery agent is permitted. | Know the Macchiato undo command before you need it. |
| External display connected | Not stated. | Pauses instead of arming. | Clamshell steps aside for Apple's display mode. |
| Screen for agents, lid closed | Not stated. | Agents can use the screen while the built-in display stays black. On by default. | Matters for computer use and the iOS Simulator. |
| macOS and chip | macOS 14.0 or later per Info.plist. Chip not stated; the 0.1.0 DMG is arm64 only. |
Apple Silicon Mac laptops, macOS 14 or later. | The same Macs, as released. |
| Signing | Not stated in the README. The 0.1.0 DMG is ad-hoc signed and not notarized. | Notarized by Apple. | Expect a Gatekeeper warning with Macchiato's download. |
| Last update | Release 0.1.0 and the latest commit are both dated April 30, 2026. | Updated in October 2026. | Macchiato has had one release so far. |
How each one keeps the lid from sleeping the Mac
Macchiato's README is direct about its method: it "uses an IOKit PreventUserIdleSystemSleep assertion plus macOS' pmset disablesleep setting". The assertion stops idle sleep. The pmset setting is what handles the lid, and changing it needs root. So the app "ships a privileged LaunchDaemon helper, installed through SMAppService, so the system-level pmset work is approved once instead of prompting on every toggle".
The source matches. The helper runs /usr/bin/pmset -a disablesleep 1 or 0, and the app then reads pmset -g live back to confirm that SleepDisabled changed before it reports the switch as on. That read-back is a careful touch. The effect is the same as typing the command yourself: sleep is off for the whole system, lid open or closed, until it is turned back on. Our guide to what pmset disablesleep does explains that setting.
Clamshell holds an idle-sleep assertion of the same type, but for the lid it uses an IOKit control that macOS lets an ordinary app call, so there is no helper and nothing to approve. It never touches SleepDisabled, and the change is not kept across a restart. The four methods apps use, and which app uses which, are laid out in how keep-awake apps keep a closed MacBook awake.
Where Macchiato is the better choice
- It is free. If $9.99 is the deciding factor, that settles it.
- You can read all of it. The app, the helper and the shared protocol are a handful of Swift files under Apache-2.0. For a tool that gets a root helper, being able to read exactly what the helper runs is a real advantage, and here it runs two
pmsetcommands. - It is one switch. On, off, quit. There are no modes to learn, and quitting from its menu turns Keep Awake off first.
- It blocks sleep with the lid open too. Because the setting is system-wide, the same switch covers a Mac you leave open. Clamshell's own job is the closed lid.
- It verifies its work. The app reads the setting back and shows an error instead of claiming success when the helper did not apply it.
- You can build it yourself with the documented
xcodebuildcommand if you would rather not run someone else's binary.
What Macchiato asks of you
- A privileged helper. You approve "Macchiato Helper" in System Settings, and a LaunchDaemon then runs as root on the app's behalf. On a company Mac that step may be blocked.
- A Gatekeeper warning. We inspected the 0.1.0
Macchiato.dmgon October 11, 2026 without running it:codesignreports an ad-hoc signature with no team identifier, there is no notarization ticket, andspctlrejects it. An open issue from July 2026 quotes the macOS message that Apple cannot verify the app. The README describes "internal distribution" through "the project's private signing flow". - Knowing the undo. The README says that after a force quit or crash you can run
sudo pmset -a disablesleep 0. Check withpmset -g live | grep SleepDisabled. Our undo guide walks through it. - Watching heat and battery yourself. The release has no stated cutoff for either. A closed Mac with sleep disabled keeps running in a bag until the battery is empty.
- An early project. There are eight commits, all from April 30, 2026, and one release. Open user reports include a menu bar icon that did not render on macOS 15.5. Unmerged pull requests propose a low-battery cutoff and recovery when
SleepDisabledis cleared by something else while the switch is on. These are reports and proposals, not confirmed defects, and a quiet repository can also mean a small tool that is finished.
About the article that recommends it. The Kanaries page lists Macchiato as "Recommended" and links to the repository. The repository belongs to a GitHub account whose profile says its owner is the founder of Kanaries. The article does not mention that connection. It is still a clear walkthrough of caffeinate and pmset; read its recommendation the way you should read ours, as a publisher writing about its own tool.
Where Clamshell is the better choice
- No admin step at all. Nothing to approve in System Settings and no root process.
- The change is narrow and does not persist. Lid-close sleep only, while armed, restored on disarm or quit, and never kept across a restart.
- Thermal safety is always on. It disarms toward normal lid sleep at serious or critical thermal pressure.
- It can be scripted. A wrapper can run
open "clamshell://arm"before a job andopen "clamshell://disarm"after it. The request is asynchronous, so check the menu bar state before closing the lid. - Agents keep a screen. With the lid closed and the built-in display black, computer use and the iOS Simulator keep working.
- Notarized, with a refund window. A 14-day money-back guarantee applies to direct purchases.
And where it is worse: it costs money, the source is closed, and it pauses while an external display is connected. It also has more arming modes to understand. Arming from the menu covers the next lid close only, and an Option-close session ends when the lid opens, while right-click and Shortcuts arming stay on until you disarm.
Clamshell for Mac keeps a MacBook awake with the lid closed while armed. No sudo, no helper, no monitor. Free for 7 days.
Download free trialApple Silicon, macOS 14+. Notarized by Apple. 3.6 MB. Or buy now, $9.99. Reading this on your phone? Send the Mac download link to yourself.
For Claude Code and Codex, the routine is the same
Neither app knows whether an agent is running. With either one the routine is: start the task, turn the app on, check that it is on, close the lid, and turn it off when the work is done. The difference is what "forgot to turn it off" costs. With Macchiato, sleep stays disabled for the whole system until you flip the switch. With Clamshell, it depends how you armed it, and a restart always clears it.
- Clear prompts with the lid open. Approve any permission dialog the agent or the app raises, including Macchiato's helper approval the first time.
- Turn it on and confirm. Macchiato's menu should read "Keeping this Mac awake". Clamshell's menu should show it is armed.
- Prove it once. Close the lid for two minutes with the task running, reopen, and check that the agent's log has timestamps from while it was shut.
- Turn it off afterwards, and with Macchiato confirm
SleepDisabledis back to 0 before the Mac goes in a bag.
Agent-specific setup is in keep Claude Code running with the lid closed and keep Codex running with the lid closed. If automatic agent detection is the feature you want, neither of these two has it; Hold My Lid and Adrafinil are the apps we have compared that are built around it.
Want lid-closed without a root helper or a system-wide setting? Clamshell is free for 7 days, then $9.99 once for one Mac.
Download free trialApple Silicon, macOS 14+. Notarized by Apple. 3.6 MB. Also on Setapp.
Frequently asked questions
Is Macchiato free?
Yes. Macchiato is published on GitHub under the Apache-2.0 license, with a packaged Macchiato.dmg on its releases page. Clamshell for Mac costs $9.99 once for one Mac after a free 7-day trial.
Does Macchiato need admin rights?
It needs a privileged helper. Macchiato's README says the app ships a privileged LaunchDaemon helper, installed through SMAppService, which runs pmset disablesleep. macOS asks you to approve Macchiato Helper in System Settings the first time. Clamshell uses no sudo, admin rights or helper.
Does Macchiato detect Claude Code or Codex?
Its README does not say so. It describes one manual Keep Awake switch that you turn on before a task and off afterwards. Clamshell does not detect agents either; it can be armed from scripts with a URL scheme or Shortcuts.
What happens if Macchiato crashes while Keep Awake is on?
Macchiato's README says that if it is force-quit or crashes while enabled, you can restore normal sleep by running sudo pmset -a disablesleep 0 in Terminal. You can check the setting with pmset -g live and look for SleepDisabled.
Does Macchiato run on Intel Macs?
The README does not state chip support. The 0.1.0 release DMG we inspected on October 11, 2026 contains an arm64 build only, and the app's Info.plist sets macOS 14.0 as the minimum. Building from source for Intel is not documented. Clamshell runs on Apple Silicon Mac laptops only.
Does Macchiato have thermal or battery protection?
None is stated for the 0.1.0 release. The README advises keeping an eye on battery and heat during long sessions. A low-battery cutoff has been proposed in an open pull request that was not merged as of October 11, 2026. Clamshell's thermal cutoff is always on and its low-battery disarm is optional.
Related guides
- How to keep a MacBook awake with the lid closed
- Is sudo pmset disablesleep 1 safe?
- How to undo sudo pmset disablesleep 1
- How keep-awake apps keep a closed MacBook awake
- Best apps to keep a MacBook awake with the lid closed
- Clamshell vs Sleepless
Macchiato details were read on October 11, 2026 from its GitHub repository: README, source, release 0.1.0 and the issue tracker. The release DMG was inspected with lipo, codesign and spctl and was not run, so nothing here is a hands-on test of Macchiato. Projects change; check the repository before deciding. Clamshell is an independent app, not affiliated with Macchiato, Kanaries, Anthropic or OpenAI.