s3onghyun / bulchimbeon
git clone https://github.com/s3onghyun/bulchimbeon.git
v0.7.0 · 4d ago
🪖 불침번 — Your Mac's night-watch soldier. Keeps your Mac awake only while AI agents work. No hooks, no daemon, macOS 13+.
—
stars, 24h
+36
stars, 7 days · #1,156
+36
stars, 30 days · #7,859
36
★ total · +36% this week
6
forks · 15 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageSwift
LicenseMIT
Created2026-10-13 (7d ago)
Last push3d ago
Watchers1
OwnerUser
GitHub topics
ai-agentsamphetaminecaffeinateclamshellclaude-codecodexcoding-agentskeep-awakemacosmenu-bar-appmenubarsleep-preventionswiftswiftui
Links
README excerpt
# 🪖 Bulchimbeon (불침번) > **Your Mac's night-watch soldier.** > A menu bar app that keeps your Mac awake **only while your AI coding agents are actually working**, > then salutes *"Shift over!"* and lets it sleep. > > **No hooks, no daemon, no installed root helper. One app. macOS 13 and later.** > On Linux, a small command-line daemon does the same job: see Linux. *Bulchimbeon* (불침번) is the night-watch duty in the Korean army: someone stays up all night so everyone else can sleep. A pixel-art private takes that shift for your Mac. > 🌐 한국어 · 日本語 · 简体中文 | State | The private | When | |-------|-------------|------| | 💤 Off duty | Dozing in his helmet, zzz | Nothing to guard | | 👀 Standing by | Looking around | Waiting for an agent to clock in | | 🪖 On duty | Flashlight on, on patrol | The Mac won't sleep | | 🫡 Shift over | `^ ^` salute | Agents went quiet / watch time is up | | 🥵 Combat rest | Sweating, eyes closed | The Mac is overheating | ### 🚶 Patrol mode The private patrols just under your menu bar with a flashlight. While standing by he looks around in the corner; at shift change he salutes with a speech bubble. Clicks pass straight through, he fades when your pointer comes close, and he stays out of full-screen apps (presentations, screen sharing, video). Size 2× / 3×, or turn him off. ### 🗣️ The private's lines | When | He says | |------|---------| | On watch | "Won't doze off! …probably." · "Sleep tight. I've got this!" | | Standing by | "Polishing my rifle… standing by." | | Mac heating up | "Heat advisory! Hydrating 🥵" → "Combat rest! Cooling down 🧊" | | Low battery | "Reporting to the duty officer 🔋 Battery at 15%… out of strength, standing down." | | Sleep block lost | "Not AWOL! Back on post! 🫡" | | You come back | "Handover report! 📋" | ## Why To leave an agent running overnight I used to do this: [code] Bulchimbeon stays awake **only while an agent is working** and hands the Mac back to normal sleep when it's done. ## Features | Feature | What it does | |---------|--------------| | 🤖 Agent watch | Detects Claude Code, Codex, Gemini CLI, Cursor Agent, Copilot CLI, Aider, OpenCode (plus your own). **Only counts agents that are actually working**, not sessions that are merely open. Clocks in when one starts working and hands over 5 minutes (adjustable) after everything goes quiet | | 🪖 Timed watch | 30 min / 1 h / 2 h / 4 h / indefinitely | | Watch modes | Keep display on (`caffeinate -d`) · Display may sleep, Mac stays awake (`caffeinate -i`) · **Stay awake with the lid closed** (admin) | | 🔋 Battery stand-down | Stands down when running on battery below your threshold (default 20%) | | ⚠️ Lid safety net | Restores normal lid sleep (`disablesleep` back to off) when the watch ends or the app quits; after a crash, the next launch offers **Restore lid sleep** in the menu | | 🌡️ Heat advisory → 🔥 combat rest | Warns when the Mac heats up; when it gets critical, pauses the watch to cool down and **resumes automatically** once it cools (no