2026-04-25 헤드리스 임대 클라우드 Mac에서 OpenClaw doctor, CLI 설정 및 모델 허용 목록: 업그레이드 후 트리아지
HK / JP / KR / SG / US에서 임대한 Mac mini M4에서는 보통 SSH가 먼저이고 GUI가 꼭 필요할 때만 VNC입니다. OpenClaw가 겨냥하는 실패 모드입니다: 장수 gateway, JSON 설정, 빠른 npm 릴리스—“git diff는 없는데 프로덕션만 깨짐”. 검증 강화, 기본값 이동, 모델 허용 목록 조이기 때문입니다. 이 2026-04-25 글은 트리아지 경로이며 이그레스·DNS나 온보딩 반복이 아닙니다. openclaw doctor(선택 --fix), CLI 관리 키와 수동 편집 파일 분리, LaunchAgent가 실제로 읽은 ~/.openclaw 증명, “대화형 ssh -t에서는 되는데 launchd에서는 실패” 함정 회피를 한 줄에 놓습니다. doctor가 오래된 네이티브 모듈이나 중복 gateway를 가리키면 npm + 이중 재시작을 롤백 스토리에 넣으세요.
업그레이드가 헤드리스 Mac에서 ‘유령’ 이슈를 드러내는 이유
시계는 세 개입니다: 노트북(풍부한 PATH, zshrc, 잊은 VPN의 HTTPS_PROXY), 자동화가 쓰는 CI형 SSH 세션, 데몬에게만 중요해야 할 launchd 환경. npm -g나 태그된 OpenClaw 이후 스키마가 키를 거부하거나 gateway가 두 번째 PID를 쓰거나, 예전엔 암묵이던 도구 호출이 verbose에만 나오는 승인/능력을 요구할 수 있습니다. readiness는 127.0.0.1:18789 리스너용 빠른 필터이지 페르소나 설정 전체가 일관된다는 증명이 아닙니다.
첫 90초: openclaw doctor(와 --fix)
비파괴 후 롤백 가능한 수정으로: openclaw status --all로 버전·PID·포트·부품 개요; openclaw doctor로 스키마·충돌 키; openclaw doctor --fix는 CLI가 안전히 치울 잔해용—크래시 뒤 오래된 ~/.openclaw/gateway.pid 등. 위키에 순서를 박아 두세요. kill -9 후 doctor와 openclaw gateway stop 후 doctor는 출력이 다릅니다. 플러그인 로드 실패는 WebSocket 1006 계열과 대조하고, “다른 gateway가 listen” 한 줄에서 멈추지 말고 오래된 clawdbot류가 없는지 같은 계정에서 확인하세요.
단일 진실: CLI config와 디스크 JSON
변경은 openclaw config set/get(버전별) 우선—손으로 ~/.openclaw/openclaw.json을 건드려 쉼표 하나나 UI가 썼지만 CLI가 더 이상 직렬화하지 않는 키가 남으면 스키마가 표류합니다. 수동 편집 후엔 반드시 doctor. 핫 리로드는 많은 agent/model/prompt를 덮지만 gateway.port·gateway.bind는 전체 openclaw gateway restart가 맞습니다. nginx + webhook 스택의 절반만 바꾼 것과 같습니다. 비밀은 ~/.openclaw/.env에 두고 launchd API 키와 같은 EnvironmentVariables로 상속하세요.
모델 허용 목록: ‘허용되지 않음’은 종종 정책입니다
제공자 문자열이 바뀌었는데 skill은 anthropic/claude-3-5-sonnet-latest이고 gateway는 고정 목록만 허용하면 자격 증명처럼 보입니다. openclaw config get agents.defaults.models로 실효 목록을 보고 카탈로그와 완전 일치—대소문자, 벤더 접두사, 슬롯. 이그레스 글과 함께: 오류가 TLS·HTTP/2 이후면 라우팅, TCP가 안 끝나면 DNS/TLS입니다. cron·서브에이전트는 잊은 별 프로필의 얇은 목록을 물려받지 않게 하세요.
Gateway, PID, ‘이미 kill 했는데’
이중 리슨은 사용자 LaunchAgent가 재시작했는데 수동 포그라운드가 포트를 쥐거나 업그레이드 후 자식 Node가 launchd에 붙을 때 납니다. lsof -iTCP:18789 -sTCP:LISTEN과 ps는 plist 소유 동일 계정에서—root가 아닙니다. 강제가 필요하면 문서 순서로 중지 후 doctor 다음 시작. gateway 업그레이드/롤백 표와 함께 이전 PID, node 버전, sidecar용 DEVELOPER_DIR를 티켓에 남기세요.
openclaw doctor와 저장된 status --all 로그가, 텔레그램 스크린샷보다 낫습니다.
증상 / 계층 / 안정화
| 증상 | 계층 | 안정화 |
|---|---|---|
| 마이너 범프 직후 ‘모델이 허용 목록에 없음’ | 설정 정책 | 목록 확장, 문자열 고정, debug에서 한 번 채팅 |
| doctor OK인데 셸의 새 키로도 403 | launchd 환경 / 이그레스 | 실행 중 PID에서 환경 출력 후 이그레스 TLS 검사 |
| 플러그인 추가 후 WebSocket 1006 | Node 플러그인 그래프 | npm install 재실행, gateway stderr—서브에이전트 노트 대조 |
관련 MacXCode 런북
운영 척추 연결: ClawHub skills, 구조화 로그, 100.64/ 설계면 Tailscale. 부트스트랩이면 온보딩+데몬 선행. 같은 날 CI 측: xcodebuild 테스트+커버리지 게이트.
FAQ: 공유 빌더에서 doctor
| 질문 | 실무 답 |
|---|---|
| 매 배포 전 doctor? | npm 변경·gateway/바이너리 업 후 최소한. 주말 채팅 끊김보다 빠릅니다. |
| 수동 JSON은? | 업스트림 예제 병합 시—즉시 doctor+스모크 채팅. 맹목 재시작 금지. |
| HK가 US보다 이미지가 늦다? | 시차는 정상. 정책·이그레스 차이는 비정상. 대시보드는 리스 라벨로 나누고 지역 플랜으로 확장. |
다섯 리전 베어메탈 M4가 이기는 이유
진단·gateway는 피크 FLOPS보다 지터와 반복 가능 I/O. MacXCode Mac mini M4는 단일 테넌트 NVMe로 장황한 JSON 로그, 상시 SSH, 국가별 provider 허용 분리 시 두 번째 노드까지. 2026에 OpenClaw를 실제 배송 파이프라인과 같이 돌리면 Xcode 테스트+커버리지 게이트도 같은 계열에 실을 수 있습니다. 리스는 p95로 측정할 수 있는 용량으로 보세요.