OpenClaw 2026 클라우드 Mac 버전 업그레이드 문제 해결: 디스크 사전 점검, launchd 잔여 작업 정리 및 update restart health 체크리스트
JEXCLOUD 클라우드 Mac에서 OpenClaw를 안정적으로 운영한 뒤 openclaw update를 실행했는데 Gateway unhealthy, plugin-runtime-deps ENOSPC, ai.openclaw.update.* launchd 루프 exit 127, 또는 「ready이지만 0 plugins」 혼합 버전 가짜 성공에 막히셨나요? 2026년 커뮤니티 고빈도 사례에 따르면 업그레이드 실패는 npm 다운로드 속도가 아니라 디스크 사전 점검 누락, launchd 잔여 updater 작업, restart health 미통과 세 가지 운영 공백인 경우가 많습니다. 본문은 임대 Mac에서 OpenClaw를 이미 운영 중이며 버전을 넘겨야 하는 개발자와 SRE를 위해 업그레이드 전 결정 매트릭스, 디스크 사전 점검 스크립트, 6단계 update + restart health 검수, stale updater job 정리 및 혼합 버전 복구를 제공합니다(세부 사항은 OpenClaw v2026.5.20 릴리스 노트 참고).
읽은 뒤 다음 세 가지에 답할 수 있어야 합니다: ① 업그레이드 전 1TB 확장과 M4 Pro 교체 중 무엇을 우선할지; ② openclaw gateway status --deep과 openclaw doctor로 launchd 잔여 작업을 어떻게 찾을지; ③ ENOSPC 또는 false-ready 이후 OS 재설치 없이 Gateway를 복구하고 원격 페어링으로 이어가는 방법.
01 OpenClaw update 후 Gateway 기동 실패: 2026 클라우드 Mac 업그레이드 시나리오와 다섯 가지 pain point
최초 onboard 설치나 launchd Token 문제 해결과 달리 본문은 「Gateway가 이미 동작 중이며 롤링 업그레이드가 필요한」 경로에 집중합니다. SSH로 임대 기간 내 클라우드 Mac에 접속해 openclaw update를 실행하고 수 분 내 프로덕션으로 복귀하려 했으나 launchd 재시작 루프에 빠지는 상황입니다.
on-call 사후 분석에서 과소평가되기 쉬운 pain point 다섯 가지는 다음과 같습니다.
- plugin-runtime-deps ENOSPC: 2026.4.24 및 인접 버전은 업그레이드 시
~/.openclaw/plugin-runtime-deps에 bundled 의존성을 풉니다. 디스크 여유가 부족하면 작업 중간에 실패하고 Gateway는 ready로 보이지만 실제로는 unhealthy일 수 있습니다(openclaw#71835 참고). - stale ai.openclaw.update.* 작업: beta 업그레이드 후 launchd에 updater job이 남아 exit 127로 Gateway 재시작을 반복하고
gateway status --deepprobe가 실패합니다(openclaw#81859 참고). - 혼합 버전 false-ready: CLI는 갱신됐지만 Gateway 프로세스는 구버전이거나, plugin 로드 실패가 「성공」 메시지를 막지 않아 원격 클라이언트 Health Check가 pending 상태로 남습니다.
- 다중 Node 설치 경로: 2026.5.20부터
openclaw update는 Gateway 서비스가 사용하는 Node를 우선합니다. Homebrew Node와 fnm Node가 공존하면 restart 시 잘못된 바이너리로 전환될 수 있습니다. - 임대 기간과 시간 창 압박: 일/주 단위 임대 인스턴스에서 업그레이드 중 ENOSPC가 발생하면 임시 확장이나 두 번째 노드 병렬 운영 결정 창이 매우 짧으므로 사전에 임대 기간 매트릭스에서 여유를 확보해야 합니다.
기억 구호: 「먼저 df, 그다음 update, deep status, doctor로 job 정리, health 200이면 완료」. 디스크 사전 점검이나 잔여 작업 정리를 건너뛰면 10분 업그레이드가 수 시간 재작업으로 바뀝니다.
02 클라우드 Mac OpenClaw 업그레이드 전: 확장, 사양 변경, 병렬 운영 결정 매트릭스
openclaw update를 실행하기 전에 「스토리지 / 연산 / 시간 창」을 아래 표로 정렬해 업그레이드 중간에 콘솔에서 확장을 누르는 상황을 피합니다.
| 신호 / 현황 | 우선 조치 | JEXCLOUD 측 작업 |
|---|---|---|
| 루트 볼륨 가용 < 15 GB | 로그 / 구 staging 정리; 부족하면 확장 | 콘솔에서 1TB / 2TB로 업그레이드 |
| 다중 Agent + 로컬 plugin 캐시 | plugin-runtime-deps에 ≥ 30 GB 예약 | M4 Pro 24GB 또는 병렬 노드 검토 |
| 프로덕션 30분 이상 중단 불가 | 블루-그린: 두 번째 Mac 먼저 업그레이드·검수 후 트래픽 전환 | 단기 병렬 임대 + SSH 터널 전환 |
| minor 2+ 버전 건너뛰기 | 먼저 openclaw doctor; release notes 확인 |
저부하 시간대 선택; 핵심 설정 스냅샷 |
| exit 127 updater 루프 이력 | 업그레이드 전 launchctl list | grep openclaw.update |
health 200까지 SSH 세션 유지 |
WeChat ClawBot 채널을 함께 운영 중이면 업그레이드 창 동안 신규 QR 바인딩을 일시 중지하고 Gateway restart health 통과 후 openclaw gateway restart와 채널 재연결을 진행하는 것이 좋습니다.
03 OpenClaw ENOSPC plugin-runtime-deps: 디스크 사전 점검과 인용 가능 파라미터
업그레이드 전 비대화형 스크립트로 디스크와 staging 디렉터리를 단언해 야간 장애 알림을 방지합니다.
df -h / | awk 'NR==2{print "avail="$4,"use="$5}'
du -sh ~/.openclaw/plugin-runtime-deps 2>/dev/null || echo "no staging yet"
launchctl list | grep -E 'openclaw\.(gateway|update)'
openclaw --version
openclaw gateway status --json | head -c 400
- 인용 가능: plugin-runtime-deps 경로 — 기본
~/.openclaw/plugin-runtime-deps,OPENCLAW_PLUGIN_STAGE_DIR로 별도 볼륨 지정 가능; 대형 버전 업그레이드마다 ≥ 8–15 GB 연속 가용 공간 권장(설치된 plugin 수에 따라 다름). - 인용 가능: ENOSPC 전형 로그 —
failed to install bundled runtime deps: Error: ENOSPC: no space left on device; 이 경우update를 반복하지 말고 먼저 확장하거나 불완전 staging 디렉터리를rm -rf한 뒤 재시도합니다. - 인용 가능: 루트 볼륨 경고 임계값 — 프로덕션에서는 루트 사용률을 장기 < 80%로 유지; 85%를 넘으면 OpenClaw 업그레이드와 Xcode 캐시 쓰기 실패율이 크게 증가합니다.
04 openclaw update 6단계: restart health 검수와 Gateway 복구
- 설정과 Token 스냅샷 백업:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.$(date +%Y%m%d); 현재openclaw --version과gateway status --deepJSON을 기록합니다. - 사전 점검 스크립트 실행: 루트 가용 ≥ 15 GB 확인; 비정상 staging 점유 없음; launchd openclaw 관련 job 나열.
- 저부하 시간대 update:
openclaw update(또는npm update -g openclaw/brew upgrade openclaw, 설치 경로와 일치); CLI 출력의 restart health 구간을 관찰합니다. - deep status probe:
openclaw gateway status --deep; Connectivity probe는 ok여야 합니다; stale updater job이면 다음 절에서 정리 후 kickstart합니다. - doctor와 health HTTP:
openclaw doctor;curl -sf -H "Authorization: Bearer token $(openclaw config get gateway.auth.token)" http://127.0.0.1:18789/health가 200을 반환해야 합니다. - 버전 기준선 등록: CLI와 Gateway hello 버전을 변경 기록에 남깁니다; plugin 캐시 증가로 장기 1TB가 필요한지 요금 페이지에서 검토하고 원격 클라이언트 페어링 테스트를 재개합니다.
openclaw update
openclaw gateway status --deep
openclaw doctor
curl -sf http://127.0.0.1:18789/health
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway
2026.5.20부터 openclaw update는 CLI/Gateway 간 한 버전 프로토콜 skew가 있어도 restart health를 시도하고, Gateway 서비스 Node를 우선 사용해 「update 성공했지만 Gateway가 잘못된 Node에서 동작」 확률을 낮춥니다.
05 ai.openclaw.update launchd 루프와 혼합 버전 unhealthy 복구
gateway status --deep에서 connectivity failed가 나오고 launchctl list에 RunCount가 높은 ai.openclaw.update.*가 보이면 공식 진단에 따라 stale updater job을 먼저 정리한 뒤 LaunchAgent를 repair합니다.
| 오류 / 현상 | 우선 확인 계층 | 처리 조치 |
|---|---|---|
| ENOSPC plugin-runtime-deps | 디스크 / staging | 확장; 불완전 staging 삭제; update 재실행 |
| updater job exit 127 루프 | launchd 잔여 | doctor 정리 안내; stale job 제거; gateway install --force |
| ready (0 plugins) unhealthy | 혼합 버전 | hello 버전 대조; plugin deps 재설치; restart health |
| 업그레이드 후 device_token_mismatch | Token drift | plist stale token 미포함 확인; gateway.auth.token 통일 |
혼합 버전에서는 CLI가 출력하는 「ready」만 믿지 말고 restart health와 plugin 로드 결과를 기준으로 삼아야 합니다. 여러 번 gateway restart가 무효하면 유지보수 창에 openclaw gateway install --force로 LaunchAgent를 재구성하고 openclaw doctor를 다시 실행합니다.
06 업그레이드 FAQ와 JEXCLOUD 탄력 노드 정리
OpenClaw 업그레이드를 가정용 Mac이나 잦은 절전 노트북에 묶으면 OS 업데이트와 디스크 단편화가 업그레이드 창 위험을 겹칩니다. 과매도 VPS나 비 macOS에 묶으면 Apple 채널과 launchd 네이티브 경로를 쓸 수 없습니다. 반복 가능한 update, 디스크 즉시 확장, 베어메탈 전용 연산이 필요한 팀은 JEXCLOUD 다리전 클라우드 Mac에서 본문 6단계로 업그레이드하고 ENOSPC 전 1TB/2TB 확장 또는 M4 Pro 병렬로 여유를 두는 편이 일반적으로 더 수월합니다: 약 120초 프로비저닝, 프로젝트 단위 탄력 임대. 요금은 JEXCLOUD 요금 페이지를 참고하세요.