Show HN: Adrafinil – keep a lid-closed Mac awake only while agents work
TL;DR Highlight
Claude Code, Codex, Cursor 같은 AI 코딩 에이전트가 실행 중일 때만 Mac의 절전 모드(뚜껑 닫힘 포함)를 막아주는 macOS 메뉴바 앱으로, 에이전트 세션이 끝나면 즉시 정상 절전으로 돌아온다.
Who Should Read
밤새 AI 코딩 에이전트(Claude Code, Cursor 등)를 돌려놓고 자려는 Mac 개발자 중, caffeinate처럼 항상 깨어있게 하는 게 아니라 작업이 끝나면 자동으로 절전되길 원하는 사람.
Core Mechanics
- caffeinate나 Amphetamine 같은 기존 유틸리티는 '항상 깨어있게' 하는 방식이라, 에이전트 작업이 끝나도 Mac이 계속 깨어있는 문제가 있었다. Adrafinil은 반대 접근법으로, 에이전트 세션이 활성화된 동안만 절전을 막고 세션이 끝나면 즉시 손을 뗀다.
- 지원하는 AI 에이전트는 Claude Code, Codex, Cursor 등이며, macOS 메뉴바에서 실행되는 앱 형태라 별도 설정 없이 백그라운드에서 동작한다.
- 뚜껑을 닫아도 깨어있게 하는 clamshell(클램쉘) 모드 제어는 root 권한이 필요한데, Adrafinil은 이 권한을 별도의 작고 감사된 헬퍼(helper) 프로세스에만 격리했다. 헬퍼는 setSleepBlocked(Bool) 하나만 노출하고, 실제 정책 결정은 일반 권한의 데몬(daemon)에서 처리한다.
- 기술적으로는 일반 idle 절전은 IOPMAssertion(macOS의 표준 절전 방지 API)으로 막고, 뚜껑 닫힘 절전은 pmset disablesleep 명령어로 막는다. 더 깔끔한 private IOPMrootDomain 경로도 검토했지만 온디바이스 검증 후 현재 방식을 채택했다.
- 프로젝트 이름 'Adrafinil'은 각성제 Modafinil의 전구체(prodrug)인 약물 이름에서 따왔다. README에서 스스로를 '기계를 위한 eugeroic(각성 유지제)'이라고 표현하며, 필요할 때만 깨어있고 그 외엔 정상 수면을 유지한다는 철학을 담고 있다.
- macOS Swift로 개발된 오픈소스 프로젝트로, GitHub에 공개되어 있으며 스타 58개를 받았다. Xcode 프로젝트 구조로 CLI, Daemon, Helper, Shared 컴포넌트로 분리되어 있다.
Evidence
- Amphetamine도 '특정 앱이 종료되면 깨우기 중단' 옵션이 있다는 지적이 나왔다. 이에 대해 커뮤니티 일부에서는 AI 에이전트 작업 흐름에 특화된 자동 감지가 Adrafinil의 차별점이라고 봤지만, '기존 솔루션을 재발명하는 것 아니냐'는 회의적 시각도 있었다.
- 뚜껑 닫고 작업하는 것에 대한 발열 논쟁이 있었다. 뚜껑을 닫으면 방열 표면적이 줄어 온도가 올라간다는 주장과, 디스플레이/GPU 렌더링이 없어서 오히려 발열이 줄어든다는 반론이 맞섰으며, 15년 전 백팩 안에서 음악을 틀다가 과열로 몇 번 강제종료됐다는 실제 경험담도 공유됐다.
- 외부 모니터 시뮬레이터(더미 플러그, Amazon에서 구매 가능한 USB-C DDC EDID Dummy Plug)로 절전을 막으려 했지만 여전히 절전이 되는 경우가 많았다는 경험이 공유됐다. 이 방식의 한계를 소프트웨어로 해결하는 접근에 관심을 보였다.
- 간단한 bash 스크립트로도 비슷한 동작을 구현할 수 있다는 의견이 있었다. KEEP_RUNNING 파일을 생성하고 pmset으로 절전을 막은 뒤, 에이전트에게 작업이 끝나면 'rm KEEP_RUNNING'을 실행하도록 지시하는 방식이다. tmux 출력을 감시하는 Ruby 스크립트를 직접 만들어 쓴다는 사람도 있었다.
- macOS에서 수동으로 절전을 제어하는 방법(sudo pmset -a disablesleep 1 / 0)을 공유하는 댓글도 있었으며, 이 앱이 결국 그 명령어를 자동화한 것이라는 시각이 있었다.
How to Apply
- 밤새 Claude Code나 Cursor를 돌려놓고 자야 하는 경우, Adrafinil을 설치하면 Mac 뚜껑을 닫고 자도 에이전트가 작업 중인 동안은 절전이 막히고, 작업이 끝나면 자동으로 정상 절전으로 돌아온다. caffeinate처럼 아침에 일어나서 수동으로 끄는 번거로움이 없어진다.
- bash 스크립트로 간단히 구현하고 싶다면, 작업 시작 시 touch KEEP_RUNNING && pmset -b disablesleep 1을 실행하고, AI 에이전트 프롬프트 마지막에 '작업이 끝나면 rm KEEP_RUNNING을 실행해'라고 지시하면 된다. 에이전트가 완료 후 파일을 삭제하면 스크립트가 pmset을 원래대로 복원한다.
- 외부 모니터 더미 플러그를 써봤는데 여전히 절전이 되는 문제를 겪고 있다면, Adrafinil처럼 pmset 명령어를 직접 제어하는 소프트웨어 방식이 더 안정적이다. 하드웨어 시뮬레이터보다 OS 레벨에서 절전 정책을 직접 건드리는 접근이 확실하다.
Code Example
# 수동으로 맥 절전 비활성화/재활성화
sudo pmset -a disablesleep 1 # 절전 차단
sudo pmset -a disablesleep 0 # 원래대로 복원
# 에이전트 작업 중 절전 막는 bash 스크립트
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'
# 에이전트에게 작업 완료 후 실행하도록 지시
# 프롬프트에 추가: "When done, run: rm KEEP_RUNNING"Terminology
Related Papers
Show HN: OpenKnowledge – open source AI-first alternative to Obsidian/Notion
Git 기반 동기화와 Claude/Codex/Cursor 연동을 내장한 로컬 우선 마크다운 에디터로, AI 에이전트의 두 번째 뇌(LLM Wiki)로 활용할 수 있는 오픈소스 도구다.
The Unfireable Safety Kernel: Execution-Time AI Alignment for AI Agents and Other Escapable AI Systems
AI 에이전트가 자신의 안전장치를 우회할 수 없도록, 에이전트 프로세스 바깥에 수학적으로 증명된 강제 통제 게이트를 배치하는 아키텍처
RubyLLM: A Ruby framework for all major AI providers
OpenAI, Claude, Gemini 등 주요 AI 프로바이더를 단일 인터페이스로 통합한 Ruby 프레임워크로, Rails 통합과 에이전트 기능까지 지원해 Ruby 개발자가 AI 기능을 빠르게 붙일 수 있다.
Qwen-AgentWorld: Language World Models for General Agents
Alibaba Qwen 팀이 AI 에이전트가 행동 결과를 미리 시뮬레이션할 수 있는 'Language World Model'을 공개했다. 에이전트 훈련과 실행 경로 검증에 새로운 패러다임을 제시하는 연구다.
SHERLOC: Structured Diagnostic Localization for Code Repair Agents
버그 위치만 알려주는 게 아니라 '왜, 어떻게 고쳐야 하는지'까지 진단 리포트를 생성해서 코드 수정 에이전트의 성능을 높이는 training-free 프레임워크
Show HN: peerd – AI agent harness that runs entirely in your browser
백엔드 서버 없이 Chrome/Firefox 확장 프로그램으로만 동작하는 AI 에이전트 실행 환경으로, 브라우저 탭을 직접 조작하고 WASM Linux VM까지 구동할 수 있어 프라이버시와 보안을 동시에 챙길 수 있다.