macOS 메뉴바에서 OpenAI Codex 세션을 무한히 또는 턴 예산만큼 계속 실행시키는 앱. Codex Stop 훅을 글로벌로 설치하여 자동으로 세션을 연장.
개요
Loopndroll은 macOS 전용 메뉴바 앱으로, ~/.codex에 글로벌 Codex Stop 훅을 설치하여 Codex 세션이 멈추지 않고 계속 실행되도록 한다. 무한 실행 또는 스레드별 턴 예산 설정이 가능하다. 최신 릴리즈는 v1.1.5(2026-04-15)이며, GitHub 스타 359+를 기록 중이다.
핵심 기능
- 글로벌 Stop 훅 설치:
~/.codex/config.toml에[features].hooks = true추가,~/.codex/hooks.json에 관리형 Stop 훅 생성/병합 - 무한 실행 모드: Codex 세션을 무기한 유지
- 턴 예산 모드: 스레드별 턴 수 제한 설정
- Telegram/Slack 연동: 진행 상황 알림 + 양방향 인터랙션 (reply로 작업 리다이렉트)
- 메뉴바 UI: SwiftUI 기반, Start/Stop 토글로 즉시 상태 변경
- 훅 지속성: 앱이 꺼져도 훅은 유지됨 (비활성 시 helper가 no-op)
- 런타임 상태:
~/Library/Application Support/loopndroll/state.json에 저장
작동 원리
Codex Stop 훅을 사용하여 {"decision":"block","reason":"..."}를 반환하면 런타임이 Codex를 계속 실행. 새 스레드에 훅이 안정적으로 적용됨. 기존 실행 중인 스레드는 훅 설치 전에 시작된 경우 동적으로 인식하지 못할 수 있음.
Telegram/Slack 연동
Telegram으로 최신 assistant 메시지를 전송받고, reply로 작업 방향을 리다이렉트할 수 있다. 전역 설정과 개별 작업별 모드 오버라이드를 모두 지원한다.
실행 모드
| 모드 | 설명 |
|---|---|
| Infinite | Codex가 멈출 때마다 자동 프롬프트 재전송, 계속 진행 |
| Await Reply | 사용자 응답 대기, Telegram reply를 Codex에 피드백 |
| Stop | 정상적으로 중지 (기본 동작) |
Telegram 설정
- Telegram에서
@BotFather와 채팅 시작 /newbot명령으로 봇 생성- BotFather가 보내주는 bot token 복사 (
123456789:AA...) - 앱에서
Settings→Notifications→Add Notification→Telegram선택 후 token 입력
Telegram 명령어
/mode global infinite— 전역 모드를 Infinite로 설정/mode global await— 전역 모드를 Await Reply로 설정/mode C22 infinite— 특정 채팅(C22) 모드 설정- 작업 리다이렉트: 텔레그램 reply로 작업 방향 변경
프라이버시
완전히 로컬에서 실행되며, 채팅·프롬프트·앱 데이터가 Loopndroll 서버로 전송되지 않는다. Telegram/Slack 연동 시에도 자신의 봇 토큰 또는 자신의 webhook을 사용한다.
설치
# 사전 빌드 앱 다운로드
# 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— 릴리즈 패키징
관련 노트
- 2026-03-30-openai-codex-plugin-claude-code — Claude Code에서 Codex 플러그인 사용