먼저 답할 질문: Agent를 맨 macOS에서 바로 돌리면 안 되나요?
많은 팀이 처음에는 「테스트니까 SSH로 클라우드 Mac에 들어가 Agent에게 맡기면 된다」고 생각합니다.
문제는 LangGraph, AutoGen, Cursor Background Agent 같은 최신 프레임워크가 도구 호출을 현재 사용자 권한으로 실행한다는 점입니다——
파일 읽기, 자식 프로세스, 네트워크 접근의 경계가 본인이 터미널에 직접 들어갔을 때와 동일합니다.
내부 파일럿에서 Agent에게 Swift 저장소 스캔과 컴파일 경고 자동 수정을 맡겼더니,
세 번째 반복에서 ~/Library/Keychains 읽기와 security find-identity 실행을 시도했습니다.
「서명 인증서를 찾아드릴게요」라는 의도는 이해되지만, Distribution 인증서가 있는 빌드 머신에는 치명적입니다.
계정을 바꾸거나 작업마다 재설치하는 것은 비용이 큽니다. Docker는 macOS에서 전체 Xcode 툴체인을 커버하지 못합니다.
OpenClaw의 접근은 Agent를 실제 macOS 위에서 돌리되(xcodebuild와 Apple Neural Engine 사용 가능),
모든 시스템 호출 전에 정책 엔진이 판단하고, 위반 시 거부·전부 감사 로그에 기록하는 방식입니다.
컴플라이언스가 필요한 팀이라면 어떤 경로에 접근했고 어떤 동작이 차단됐는지 증명할 수 있어, 빌드 노드 전체를 내릴 필요가 없습니다.
이 글은 제로에서 첫 샌드박스 작업이 통과할 때까지의 최단 경로만 다룹니다. 아키텍처, 다중 사용자 제로 트러스트, CI 배선은
OpenClaw 완전 가이드를 보세요.
하드웨어: Mac mini M4 · 10코어 CPU · 16 GB 통합 메모리 · 256 GB NVMe · 1 Gbps 전용 대역폭(PixVPS 한국·서울 노드).
OS: macOS 15 Sequoia. OpenClaw CLI 0.9.4, 정책 형식 v2.
샘플 작업: Agent가 공개 저장소 clone → rg로 TODO 주석 스캔 → Markdown 보고서 작성(읽기 중심, 외부 네트워크 없음).
전 과정 SSH만 사용. VNC 미사용.
시작 전 준비할 세 가지
로컬 Mac은 필요 없습니다——Windows나 Linux 노트북에서 SSH만 되면 됩니다. 아래 세 가지를 미리 확인하지 않으면 중간에 멈춥니다:
클라우드 노드: 아직 없다면 주문 페이지에서 리전과 기간을 선택하세요.
다섯 노드(싱가포르, 일본·도쿄, 한국·서울, 홍콩, 미국 동부)는 하드웨어와 가격이 동일합니다——지연 시간 기준으로 고르면 됩니다. 국내에서는 한국·서울 노드가 가장 낮은 RTT를 보였습니다.
instance-token: 콘솔 「보안 및 샌드박스」에서 OpenClaw를 처음 켤 때 발급됩니다. 한 번만 표시되므로 팀 시크릿 저장소에 즉시 보관하세요.
정책 파일: 4절의 복사용 템플릿을 ~/policies/quickstart-readonly.yaml로 저장하세요.
5분 플로우: 개설부터 첫 샌드박스 작업까지
아래 시간은 실측 기준입니다. 싱가포르 노드에서 5회 반복했을 때 익숙해지면 전체 약 4분 20초였습니다. 첫 시도는 5–8분을 잡으면 충분합니다. 각 단계마다 명확한 완료 조건이 있으니, 기대 출력이 나온 뒤 다음으로 넘어가세요.
-
01
1분: 콘솔에서 OpenClaw 활성화
PixVPS 콘솔 로그인 → 인스턴스 상세 → 「보안 및 샌드박스」→ OpenClaw 켜기. 표시된
instance-token을 1Password 또는 Bitwarden에 복사. 완료 조건: OpenClaw 상태가 「활성」으로 표시됨. -
02
2분: SSH 접속 및 CLI 설치
콘솔 「접속 정보」에서 SSH 명령을 복사해 인스턴스에 로그인한 뒤 설치 스크립트와 인증을 실행. 완료 조건:
openclaw status에서 Policy Engine, Sandbox Runtime, Audit Bus가 모두healthy. -
03
3분: 최소 읽기 전용 정책 작성
~/policies/를 만들고 4절 YAML을 붙여넣기.openclaw policy validate -f ~/policies/quickstart-readonly.yaml로 구문 검사. 완료 조건:policy valid출력, 경로 충돌 경고 없음. -
04
4분: 샌드박스 생성 및 프로브
openclaw sandbox create --name quickstart --policy ~/policies/quickstart-readonly.yaml, 이어서openclaw sandbox exec quickstart -- /bin/zsh -lc 'ls -la /workspace'. 완료 조건: 샌드박스 안에서 빈 워크스페이스 목록이 보이고 권한 오류 없음. -
05
5분: Agent 진입 스크립트 실행 및 감사 tail
샌드박스 안에서 Agent 진입(또는 아래 샘플) 실행. 다른 터미널에서
openclaw audit tail --sandbox quickstart --follow로 실시간 로그 확인. 종료 후openclaw sandbox stop quickstart. 완료 조건: 감사 로그에decision: allow와decision: deny기록(차단 경로 접근 시).
인스턴스 SSH 세션에서 실행:
curl -fsSL https://api.pixvps.com/openclaw/install.sh | bash
openclaw auth login --token <instance-token>
openclaw status
최소 권한 YAML: 읽기 전용 코드 스캔 템플릿
퀵스타트 원칙은 먼저 엄격하게, 나중에 완화입니다. 첫 정책은 Agent가 필요한 최소만 열어야 합니다.
아래 템플릿은 /workspace 읽기·쓰기, git / rg / python3 실행을 허용하고,
키체인·SSH 경로는 차단, 외부 네트워크는 전부 거부합니다——
「공개 저장소 clone → 정적 스캔 → 보고서 작성」에 충분합니다.
apiVersion: openclaw.pixvps.com/v2
kind: SandboxPolicy
metadata:
name: quickstart-readonly
spec:
filesystem:
allow:
- path: /workspace
access: [read, write]
deny:
- path: "**/Keychains/**"
- path: "**/.ssh/**"
process:
allow: [git, rg, python3, zsh]
network:
egress: deny-all
참고: /workspace에 쓰기 권한이 있는 이유는 스캔 보고서를 디스크에 남겨야 하기 때문입니다.
순수 읽기 작업이면 access를 [read]로 바꿀 수 있습니다.
GitHub에서 코드를 받으려면 network.egress를 allow-list로 바꾸고 github.com:443을 추가해야 합니다——
퀵스타트 이후 가장 흔한 「2단계 완화」입니다. 네트워크 화이트리스트 전체 패턴은
완전 가이드 5절을 참고하세요.
첫 Agent 작업 실행: 복사용 진입 스크립트
LangGraph나 자체 오케스트레이터를 연결하기 전에, 약 20줄짜리 shell로 「정책 + 샌드박스 + 감사」 루프를 검증하는 것을 권장합니다.
아래를 호스트 측 /workspace/agent-entry.sh로 저장하세요(샌드박스가 해당 디렉터리를 자동 매핑합니다):
#!/bin/zsh
set -euo pipefail
cd /workspace
git clone --depth 1 https://github.com/apple/swift-sample-code.git repo 2>/dev/null || true
rg -n "TODO|FIXME" repo/ > scan-report.txt || true
echo "Scan done: $(wc -l < scan-report.txt) matches" > summary.txt
cat summary.txt
egress: deny-all이 유지되면 git clone은 네트워크 정책으로 차단됩니다——
의도된 데모입니다. 감사 tail을 열면 decision: deny network 기록이 보입니다.
GitHub을 허용 목록에 넣고 다시 실행하면 decision: allow와 summary.txt 생성을 확인할 수 있습니다.
실행:
openclaw sandbox exec quickstart -- /bin/zsh /workspace/agent-entry.sh.
M4 노드 실측에서는(clone 포함) 약 38초였고, 정책 평가 누적 오버헤드는 200 ms 미만으로 무시할 수준입니다.
끝나면 openclaw sandbox stop quickstart로 워크스페이스를 해제하세요. 좀비 샌드박스는 디스크를 차지합니다——인스턴스당 동시 세션 기본 상한은 5개입니다.
감사 로그를 보관하려면 openclaw audit export --sandbox quickstart --format jsonl로 파일로 보낼 수 있습니다.
자주 막히는 세 가지와 한 줄 수정
첫 실행에서 거의 모두 아래 중 하나에 부딪힙니다. 긴 매뉴얼 없이 표대로 처리하면 됩니다.
| 증상 | 가능한 원인 | 한 줄 수정 |
|---|---|---|
openclaw auth login이 token 무효 보고 |
복사 시 공백 포함, 또는 token 로테이션됨 | 콘솔에서 다시 복사. 이전 token은 로테이션 직후 무효 |
Agent가 E_POLICY_DENY: filesystem 반환 |
경로가 허용 목록에 없음 | openclaw audit query --decision deny --since 1h로 경로 확인 후 YAML 수정 |
git clone 실패(파일 오류 없음) |
네트워크 정책이 deny-all | network.egress를 allow-list로 바꾸고 github.com:443 추가 |
instance-token을 Git에 커밋하거나 Slack 스크린샷에 넣지 마세요.
파일럿 후 여러 팀원이 접근해야 하면 콘솔에서 제로 트러스트 디바이스 인증서와 viewer / operator / admin 역할을 설정하세요——
완전 가이드 6절 참고.
파일럿 이후: 권한을 넓히고 속도에 맞게 확장
5분짜리 읽기 전용 샌드박스는 출발점일 뿐입니다. 실제 워크로드는 xcodebuild, npm 레지스트리,
push마다 새 샌드박스가 필요한 CI를 요구합니다. 이는 「파일럿에서 프로덕션」 영역——더 세밀한 정책 단계와 감사보내기——
OpenClaw 완전 가이드에서 장별로 다룹니다(고급 권한 YAML, GitHub Actions 배선, 90일 감사 보존).
클라우드 Mac이 아직 없다면 대안마다 트레이드오프가 있습니다. 로컬 노트북에서 Agent를 24/7 돌리면 전력 소모가 크고 고정 해외 IP도 없습니다. 퍼블릭 클라우드 macOS VM은 OpenClaw 네이티브 통합과 작업 단위 감사가 부족합니다. 사무실에 Mac mini를 사면 감가상각과 운영 인력이 듭니다. PixVPS는 전용 물리 Mac mini M4(16 GB 통합 메모리, 38 TOPS, 1 Gbps 전용 대역폭)를 제공하며, OpenClaw는 표준 인스턴스에 내장. 결제 후 1–5분 배포, $21.1/일부터—— Agent 실험은 일 단위로 빌리고, 안정되면 $105.7/월 상주로 전환. 수요가 불확실할 때 장비를 먼저 사는 것보다 유연합니다.
권장 경로: 오늘 읽기 전용 샌드박스 통과 → 내일 작업 유형에 맞는 정책 템플릿 복사(빌드 / 문서 수집 / 운영 패트롤——완전 가이드 비교표 참고) →
3주차에 YAML을 Git에 넣고 CI에서 openclaw audit export를 필수화.
빌드 Agent를 병렬로 돌릴 때 M4 16 GB 1대에서 DerivedData 포함 샌드박스 2개가 안정적으로 돌아가는 실측이 있습니다.
더 많은 병렬이 필요하면 Thunderbolt 5 클러스터링으로 80 Gbps 멀티 머신 풀을 검토하세요.
설정 중 문의는 [email protected]으로 연락하세요——1시간 이내 응답, 7×24.
5분 안에 Agent에게 OpenClaw 클라우드 Mac 제공
PixVPS Mac mini M4 전용 노드에 OpenClaw 샌드박스 내장: 작업 단위 격리, 제로 트러스트 액세스, 추적 가능한 감사 로그. Agent와 Xcode 병행에 16 GB 통합 메모리——$21.1/일부터, 전 세계 5개 노드.