# macOS Always-On Setup

맥 미니 등에서 NanoClaw를 24/7 운영할 때 필요한 설정.

## 문제

macOS는 잠금/유휴 시 슬립 모드에 진입하여 NanoClaw, Docker 등 백그라운드 프로세스가 멈춤.

## 서비스 상태 확인

```bash
# NanoClaw 실행 여부 (PID가 숫자면 실행 중, -면 중지)
launchctl list | grep nanoclaw

# 로그 실시간 확인
tail -f logs/nanoclaw.log
```

## 슬립 방지

### 방법 1 — caffeinate (임시)

```bash
caffeinate -s &
```

디스플레이는 꺼지지만 시스템은 깨어 있음. 터미널/세션 종료 시 해제.

영구적으로 유지하려면 launchd에 등록:

```bash
cat > ~/Library/LaunchAgents/com.caffeinate.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.caffeinate</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/caffeinate</string>
        <string>-s</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.caffeinate.plist
```

### 방법 2 — pmset (영구, 권장)

```bash
# 시스템 슬립 비활성화
sudo pmset -a sleep 0
sudo pmset -a disksleep 0

# 디스플레이만 끄기 (10분 후)
sudo pmset -a displaysleep 10

# 네트워크 접근으로 깨우기 (Wake on LAN)
sudo pmset -a womp 1
```

설정 확인:

```bash
pmset -g
```

### 방법 3 — 시스템 설정 GUI

시스템 설정 > 에너지 절약 (또는 배터리) > "디스플레이가 꺼져 있을 때 자동으로 잠자기 방지" 활성화.

## 자동 로그인 (헤드리스 운영)

맥 미니를 재부팅해도 자동으로 로그인되도록:

시스템 설정 > 사용자 및 그룹 > 자동 로그인 > 계정 선택

## Docker Desktop 자동 시작

시스템 설정 > 일반 > 로그인 항목 > Docker 추가

또는:

```bash
osascript -e 'tell application "System Events" to make login item at end with properties {path:"/Applications/Docker.app", hidden:true}'
```

## 전체 부팅 순서

1. macOS 자동 로그인
2. Docker Desktop 자동 시작 (로그인 항목)
3. caffeinate 슬립 방지 (launchd)
4. NanoClaw 서비스 시작 (launchd: com.nanoclaw.plist)
