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로 작업 방향을 리다이렉트할 수 있다. 전역 설정과 개별 작업별 모드 오버라이드를 모두 지원한다.

실행 모드

모드설명
InfiniteCodex가 멈출 때마다 자동 프롬프트 재전송, 계속 진행
Await Reply사용자 응답 대기, Telegram reply를 Codex에 피드백
Stop정상적으로 중지 (기본 동작)

Telegram 설정

  1. Telegram에서 @BotFather와 채팅 시작
  2. /newbot 명령으로 봇 생성
  3. BotFather가 보내주는 bot token 복사 (123456789:AA...)
  4. 앱에서 SettingsNotificationsAdd NotificationTelegram 선택 후 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 test

Swift 기반 (SwiftUI). 앱 번들에 ad-hoc 서명만 되어 있어 다른 Mac에서는 Gatekeeper 우회 필요 (우클릭 → 열기).

프로젝트 구조

  • Sources/LoopndrollCore — 훅 설치/복구, 상태 저장, 훅 결정 엔진, 프롬프트 렌더링
  • Sources/LoopndrollApp — SwiftUI 메뉴바 앱
  • Sources/LoopndrollHook — 테스트 및 CLI 전용 헬퍼 실행 파일
  • scripts/package_app.sh — 릴리즈 패키징

관련 노트

출처