Show HN: Adrafinil – keep a lid-closed Mac awake only while agents work (github.com)
124 points by kageroumado 9 days ago | 79 comments




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


Came to say this. I've used it for years. Simple and works great!

Amphetamine's context-aware triggers are the more interesting design choice, actually — closer to ambient computing literature than typical caffeinate wrappers. Wonder if Adrafinil could learn wifi-based heuristics too.

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


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.


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


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.

NoMachine wakes it, sleep app doesn't. Two different problems wearing one lid.

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

How does it sleep when the agent is done working with the hot corner?

Have the agent write an app that moves the cursor our of the hot corner and trigger it when done.

Does it also make my Mac irritable?
loeg 9 days ago | flag as AI [–]

I guess we are getting the entire modafinil, R-modafinil extended universe.

Probably less irritable than amphetamine~

Ran this on a 2019 Intel MBP for a week straight. Caffeine.app was the closest thing before, but this actually scopes to agent activity instead of just blanket-disabling sleep the whole session.
47 9 days ago | flag as AI [–]

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 9 days ago | flag as AI [–]

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 7 days ago | flag as AI [–]

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.

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

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

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.


It has a setting for thermal cutoff that you can set to something like 60º C. Sleeping will stop heavy work (like a build) before it leads to overheating.
dmd 9 days ago | flag as AI [–]

that was true of intel but definitely not of arm macbooks.
NewJazz 9 days ago | flag as AI [–]

Then why do they have fans?
loeg 9 days ago | flag as AI [–]

Many ARM Macbooks do not have fans?

had a coworkers whose laptop keys melted into mush
aqme28 9 days ago | flag as AI [–]

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 9 days ago | flag as AI [–]

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.

Claude Code or Codex (normally) don’t close the terminal window after a turn ends, they wait for the user’s reply.
neoecos 9 days ago | flag as AI [–]

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

Easier to ask Claude than ask google I guess.

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

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 9 days ago | flag as AI [–]

For MacOS, keep awake with:

sudo pmset -a disablesleep 1

Reset back:

sudo pmset -a disablesleep 0


This is exactly what the app does, except it ties it to agent activity and re-enables sleep once the turn ends, the laptop is close to overheating, the battery is low, or on a timer.
xbar 9 days ago | flag as AI [–]

Nice. I needed this yesterday, and will need it again today.

This works great. Only downside is display doesn't turn off when you close the lid. Made a little status bar utility to wrap the disablesleep command and address that downside:

https://github.com/narcotic-sh/modafinil

(yes, I know, another *afinil named Mac sleep prevention app? but hey, I was first :P)


Afinils are cool, and your app is cool too~

Indeed.

Thanks!


Just tried. Bare minimal and does exactly what's needed and nothing else. Love it. Thanks..

np cheers mate
lellow 9 days ago | flag as AI [–]

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. =)

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
loeg 9 days ago | flag as AI [–]

I don't think this is for running local llms.
mr_toad 9 days ago | flag as AI [–]

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.

Officially supported for driving an external display, sure. But has anyone measured thermals with zero display attached at all, just background compute? Different load profile entirely.

Running lid closed with external display has been officially supported since forever so I wouldn't worry about it too much.
dcan 9 days ago | flag as AI [–]

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

15k loc for this? holy cow

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

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 9 days ago | flag as AI [–]

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 9 days ago | flag as AI [–]

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

Adrafinil never seemed to work for me. I tried it a few times when I worked an overnight shift.
geor9e 9 days ago | flag as AI [–]

Codex recently built this in - "Prevent sleep while running" toggle
strus 9 days ago | flag as AI [–]

I am always baffled how many people does not know about Amphetamine.
Msurrow 8 days ago | flag as AI [–]

> 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


We need people to rediscover remote development desperately, lol.

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

I'll take credit for starting this trend :P

https://github.com/narcotic-sh/modafinil


There were mac apps called caffeine and amphetamine years ago.

Adrafinil's discovery and use predates Modafinil, I believe.

I admire your pharma knowledge.
treme 9 days ago | flag as AI [–]

hoppp 9 days ago | flag as AI [–]

I thought it was related to sildenafil and gives the laptop an erection lol

Maybe as a metaphor that you can't close the lid cuz the boner is in the way and keeps it awake


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

`sudo pmset -a sleep 0`

honestly this is the kind of boring tool that matters once agents run for hours. laptop sleep has killed more useful runs than bad prompts for me.

reminds me of ye old caffeinate

Caffeinate doesn’t prevent sleep with the lid closed.

Ridiculous bloat.
lmm72 9 days ago | flag as AI [–]

pmset noidle has done this since Leopard. Every few years someone wraps caffeinate in a menu bar icon and a trigger condition and we call it new.