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: ctx – Search the coding agent history already on your machine
Claude Code, Cursor, Codex 등 코딩 에이전트가 이전 세션의 논의·결정·실패 시도를 잊지 않도록 SQLite로 인덱싱해 재사용할 수 있게 해주는 오픈소스 CLI 도구다.
Micro-Agent: Beat Frontier Models with Collaboration Inside Model API
vLLM 팀이 단일 모델 API 호출 뒤에서 여러 모델이 협업하는 'Micro-Agent' 개념을 공개했습니다. 별도의 에이전트 코드 없이 라우터 레이어에서 모델 조합을 실행해 GPT-4급 결과를 더 저렴하게 낼 수 있다는 아이디어입니다.
Ornith-1.0: self-improving open-source models for agentic coding
Gemma 4와 Qwen 3.5를 기반으로 파인튜닝한 코딩 특화 오픈소스 모델로, RL(강화학습)을 통해 스캐폴드(에이전트 실행 구조)까지 함께 최적화하는 방식을 주장하지만, 커뮤니티에서는 벤치마크 과최적화에 불과하다는 의심을 받고 있다.
Entity Binding Failures in Tool-Augmented Agents
AI 에이전트가 올바른 도구를 선택해도 잘못된 대상에 실행하는 'Entity Binding 실패' 문제를 정의하고, 이를 막는 실행 정책을 평가한 논문.
Herdr: Agent multiplexer that lives in your terminal
여러 AI 코딩 에이전트(Claude, Codex 등)를 하나의 터미널에서 동시에 실행·관리할 수 있는 Rust 기반 오픈소스 툴로, tmux처럼 세션이 유지되고 SSH로 원격 접속도 가능해 멀티 에이전트 워크플로우를 크게 단순화해준다.
Ornith-1.0: Self-scaffolding LLMs for agentic coding
모델이 문제 풀이 전략(scaffold)을 직접 생성하고 개선하는 자기강화 학습 프레임워크를 적용한 오픈소스 코딩 특화 LLM으로, 9B 소형 모델부터 397B 대형 모델까지 라인업을 갖추고 SWE-Bench 등 주요 벤치마크에서 Claude Opus 4.7을 능가하는 성능을 보여줬다.