Settings

Theme

Show HN: Adrafinil – keep a lid-closed Mac awake only while agents work

github.com

124 points by kageroumado 10 days ago · 97 comments · 2 min read

Reader

A month ago there was a wave of posts and tweets about engineers walking around cafes and parks with their MacBooks propped half-open, as fully closing the lid forces sleep that stops their AI agents. Some people made snarky comments about using tmux or Amphetamine, and some defended their choice with “but I only need it sometimes, and forgetting to disable Amphetamine and finding my laptop discharged in my bag is worse.”

This is a solution to this problem. Unlike caffeinate, it will prevent your MacBook from sleeping even with the lid closed, with no external power or display, using pmset disablesleep 1. Unlike other sleep-preventing apps, Adrafinil only activates when there’s an agent actively doing something. It detects agent activity through hooks it installs into Claude Code, Codex, and others. To reassure you it’s working, the app shows the active status in the menu bar, and it plays a chime when you close the lid.

Once the agent is done, Adrafinil detects it and lets the laptop go to sleep by setting pmset disablesleep back to 0. It will also let it sleep in case of overheating. And if you want to manually toggle it, you can install an optional MCP and tell your agent to keep the MacBook awake for a specific time.

It has four binaries, one of which is a root helper exposing a single setSleepBlocked call. All the logic and policy live in the unprivileged parts. They’re all notarized, and the app is fully open source (MIT).

exabrial 10 days ago

Amphetamine is what I use. It has a robust set of triggers, like if you ip address changes to a certain subnet (like private IPs on a work network)

https://apps.apple.com/us/app/amphetamine/id937984704?mt=12

chopete3 10 days ago

This is great. Will check it.

Recently I bought a usb-c empty external monitor card to prevent mac from going to sleep. There are many of these external monitor simulators on Amazon.

I still see the laptop go to sleep many times with the external monitor simulator.

This is the one I bought.

4K 60Hz USB-C Type-C Virtual Display Adapter DDC EDID Dummy Plug Headless Ghost Display Emulator 2K 60hz1080P@120Hz

  • kageroumadoOP 10 days ago

    The dummy display enables “clamshell mode,” which lets your MacBook stay awake even with the lid closed, provided that it’s also on AC power. If the MacBook is not connected to power, the clamshell mode isn’t activated and it will sleep normally.

    Adrafinil simply disables the global sleep without spoofing hardware, and re-enables it once the agent is done working, the temperature is too high, or the battery is low.

    • chopete3 10 days ago

      My requirement was to keep the laptop on with the lid closed. Sleep normally when idle but wake up when a nomachine request comes in.

      I will see how this app fits into my specific need.

      I have to check this on Mac Sequoia 15.7

      • kageroumadoOP 10 days ago

        The app is built for 26+, as I never tested it on earlier versions. It won’t solve your specific case, though, as it only prevents sleep. It won’t wake it once it’s already sleeping.

  • bluedino 10 days ago

    Can't you just use a hot corner configured as "prevent sleep"?

processunknown 10 days ago

Does it also make my Mac irritable?

moralestapia 10 days ago

What's old is new again, but I welcome this.

I used to do this 15 years ago to keep listening to music from my laptop (one of the white chiclet ones) in my backpack, can't remember the name of the app I used then.

One caveat, your laptop cannot cool inside a backpack, it will overheat and shut down anyway. This happened to me several times.

47 10 days ago

I have been using the builtin macOS `caffeinate` command for this.

For example:

caffeinate -dimsu

That keeps the Mac awake so I can use Claude remotely from phone.

You can also wrap your command as well, but I rarely use it.

caffeinate -dimsu your-agent-command

  • zxexz 10 days ago

    Caffeinate is burned into my muscle memory at this point. I attribute that to the realization that you could repeat opt flags. There's something catchy about

    caffeinate -dimsum

    • port11 9 days ago

      Yum, dim sums with caffeine! I didn’t know you could repeat flags, I’m gonna steal the idea for some of my own scripts.

  • kageroumadoOP 10 days ago

    Claude Code actually uses caffeinate -i -t 300 during Claude’s turn, restarted automatically until the turn finishes.

  • steve-atx-7600 10 days ago

    The new wave apps named after speed / modifinil must be hard core?

aqme28 10 days ago

Thank goodness. I can’t leave my laptop for a second unattended because my cat loves nothing more than to dance on the keyboard. I’ve need something like this.

dawnerd 10 days ago

But Amphetamine has an option to end when an app closes. I’m just so confused why everyone using ai is reinventing solutions that already exist.

  • kageroumadoOP 10 days ago

    Claude Code or Codex (normally) don’t close the terminal window after a turn ends, they wait for the user’s reply.

  • neoecos 10 days ago

    I think the same...It happend to me that I just ask Claude to build whatever I need for my personal very specific use case without looking what else it's outhere

  • conception 10 days ago

    Easier to ask Claude than ask google I guess.

  • flexagoon 10 days ago

    Everyone dreams about making the next cool AI tool and doesn't bother checking if someone has already made the same thing years ago without the word "AI" in the description

    • kageroumadoOP 10 days ago

      In order to get the same behavior with Amphetamine you’ll need to: 1. Install it from the AppStore (no brew, no GitHub) 2. Not forget to enable lock on lid close 3. If you ever connect/disconnect power while the lid is closed without the optional “Power Protect” system, the MacBook will sleep. The system is a script and a configuration file making sudo pmset -a disablesleep passwordless. 4. Add hooks to Claude Code configuration that will use Apple Script to start and stop Amphetamine sessions. For Codex you’ll have to make a script that will watch process activity to know when a turn ends.

      It’s not like Amphetamine can’t do the same, it’s that this app is made specifically for AI agents and nothing else.

rancar2 10 days ago

For MacOS, keep awake with:

sudo pmset -a disablesleep 1

Reset back:

sudo pmset -a disablesleep 0

lellow 10 days ago

Interesting. Kind of similar in purpose, but I created a simple app to schedule and type the "continue" word in my terminal after X time has passed, since I have to wait for my usage to be restored. =)

IncreasePosts 10 days ago

At some point, if you closed the lid and didn't have an external monitor plugged in, macos would put the GPU in power save mode, which would tank local llm performance. Is that not the case any more? There were even small singles you could get which would trick the ps into thinking an external monitor was plugged in

mr_toad 10 days ago

I’ve often wondered about the thermal performance or running a MacBook with the lid closed. One argument is that the reduced surface area from a closed lid increases temperature. Others argue that not running & rendering the display (and thus GPU) generates less heat. I’m not sure who to believe.

dcan 10 days ago

Does closing the M-series laptop lid no longer throttle the CPU like it did on the Intel ones?

slopinthebag 10 days ago

15k loc for this? holy cow

AussieWog93 10 days ago

How does this differ from https://github.com/samber/cc-caffeine?

  • kageroumadoOP 10 days ago

    It’s an Electron app that uses powerSaveBlocker to prevent display sleep. It won’t prevent macOS system sleep on lid close with no power.

xlii 10 days ago

Um so it is

    sudo bash -c 'touch KEEP_RUNNING; pmset -b sleep 0; pmset -b disablesleep 1; while [ -e KEEP_RUNNING ]; do sleep 1; done; pmset -b sleep 5; pmset -b disablesleep 0'
and

    Agent, when you're done do `rm KEEP_RUNNING`, kthxbye.
?

(personally I have Ruby scripts that check activity on "tmux capture-output" for that)

tam159 10 days ago

It would be great if adrafinil can also track the battery and token usage while agents are working

NDlurker 10 days ago

Adrafinil never seemed to work for me. I tried it a few times when I worked an overnight shift.

geor9e 10 days ago

Codex recently built this in - "Prevent sleep while running" toggle

strus 10 days ago

I am always baffled how many people does not know about Amphetamine.

Msurrow 10 days ago

> month ago there was a wave of posts and tweets about engineers walking around cafes and parks with their MacBooks propped half-open, as fully closing the lid forces sleep that stops their AI agents

Why don’t they just ask the agents to code up something to prevent the Mac sleeping.. and that will auto enable/disable depending on if they have the agent running or not

I mean, agents makes human devs redundant, right? This seems like a trivial little problem for an agent to fix

2001zhaozhao 10 days ago

We need people to rediscover remote development desperately, lol.

operatingthetan 10 days ago

So now we're naming apps after obscure Modafinil derivatives?

cyanydeez 10 days ago

you can run opencode inside a docker container and expose it's webui.

kylehotchkiss 10 days ago

`sudo pmset -a sleep 0`

WUMBOWUMBO 10 days ago

reminds me of ye old caffeinate

cyclopeanutopia 10 days ago

Ridiculous bloat.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection