Loopndroll — OpenAI Codex 무한 실행 메뉴바 앱
macOS 메뉴바에서 OpenAI Codex 세션을 무한히 또는 턴 예산만큼 계속 실행시키는 앱. Codex Stop 훅을 글로벌로 설치하여 자동으로 세션을 연장.
개요
Loopndroll은 macOS 전용 메뉴바 앱으로, ~/.codex에 글로벌 Codex Stop 훅을 설치하여 Codex 세션이 멈추지 않고 계속 실행되도록 한다. 무한 실행 또는 스레드별 턴 예산 설정이 가능하다.
핵심 기능
- 글로벌 Stop 훅 설치:
~/.codex/config.toml에codex_hooks = true추가,~/.codex/hooks.json에 관리형 Stop 훅 생성/병합 - 무한 실행 모드: Codex 세션을 무기한 유지
- 턴 예산 모드: 스레드별 턴 수 제한 설정
- 메뉴바 UI: SwiftUI 기반, Start/Stop 토글로 즉시 상태 변경
- 훅 지속성: 앱이 꺼져도 훅은 유지됨 (비활성 시 helper가 no-op)
- 런타임 상태:
~/Library/Application Support/loopndroll/state.json에 저장
작동 원리
Codex Stop 훅을 사용하여 {"decision":"block","reason":"..."}를 반환하면 런타임이 Codex를 계속 실행. 새 스레드에 훅이 안정적으로 적용됨. 기존 실행 중인 스레드는 훅 설치 전에 시작된 경우 동적으로 인식하지 못할 수 있음.
설치
# 사전 빌드 앱 다운로드
# dist/Loopndroll.app.zip에서 압축 해제 후 /Applications으로 이동
# 소스 빌드
swift build
swift run Loopndroll
# 테스트
swift testSwift 기반 (SwiftUI). 앱 번들에 ad-hoc 서명만 되어 있어 다른 Mac에서는 Gatekeeper 우회 필요 (우클릭 → 열기).
프로젝트 구조
Sources/LoopndrollCore— 훅 설치/복구, 상태 저장, 훅 결정 엔진, 프롬프트 렌더링Sources/LoopndrollApp— SwiftUI 메뉴바 앱Sources/LoopndrollHook— 테스트 및 CLI 전용 헬퍼 실행 파일scripts/package_app.sh— 릴리즈 패키징
관련 노트
- OpenAI Codex Plugin for Claude Code — Claude Code에서 Codex 플러그인 사용