AI / Automation 2026년 4월 25일

2026-04-25 헤드리스 임대 클라우드 Mac에서 OpenClaw doctor, CLI 설정 및 모델 허용 목록: 업그레이드 후 트리아지

MacXCode 엔지니어링 팀 2026년 4월 25일 약 17분 읽기

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에만 나오는 승인/능력을 요구할 수 있습니다. readiness127.0.0.1:18789 리스너용 빠른 필터이지 페르소나 설정 전체가 일관된다는 증명이 아닙니다.

첫 90초: openclaw doctor(와 --fix)

비파괴 후 롤백 가능한 수정으로: openclaw status --all로 버전·PID·포트·부품 개요; openclaw doctor로 스키마·충돌 키; openclaw doctor --fix는 CLI가 안전히 치울 잔해용—크래시 뒤 오래된 ~/.openclaw/gateway.pid 등. 위키에 순서를 박아 두세요. kill -9doctoropenclaw gateway stopdoctor는 출력이 다릅니다. 플러그인 로드 실패는 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가 재시작했는데 수동 포그라운드가 포트를 쥐거나 업그레이드 후 자식 Nodelaunchd에 붙을 때 납니다. lsof -iTCP:18789 -sTCP:LISTENps는 plist 소유 동일 계정에서—root가 아닙니다. 강제가 필요하면 문서 순서로 중지 후 doctor 다음 시작. gateway 업그레이드/롤백 표와 함께 이전 PID, node 버전, sidecar용 DEVELOPER_DIR를 티켓에 남기세요.

머지 차단 규칙: 버려도 되는 임대 스테이징에서 업그레이드 후 CI에서 녹색 openclaw doctor와 저장된 status --all 로그가, 텔레그램 스크린샷보다 낫습니다.

증상 / 계층 / 안정화

증상 계층 안정화
마이너 범프 직후 ‘모델이 허용 목록에 없음’ 설정 정책 목록 확장, 문자열 고정, debug에서 한 번 채팅
doctor OK인데 셸의 새 키로도 403 launchd 환경 / 이그레스 실행 중 PID에서 환경 출력 후 이그레스 TLS 검사
플러그인 추가 후 WebSocket 1006 Node 플러그인 그래프 npm install 재실행, gateway stderr—서브에이전트 노트 대조

운영 척추 연결: 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로 측정할 수 있는 용량으로 보세요.

안정적인 SSH 우선 Mac에서 OpenClaw 실행

HK · JP · KR · SG · US · 선택 VNC