● 커뮤니티
instavm
⚡ 바로 사용
CodeRunner
제작: instavm · instavm/coderunner
에이전트를 위한 VM 격리 코드 실행 — Python, Playwright, 영속 Jupyter 커널, 모두 호스트에서 샌드박스 처리.
CodeRunner는 Claude(와 다른 에이전트)에게 안전하고 영속적인 샌드박스를 제공합니다: 장기 실행 Jupyter 커널로 Python 실행, Playwright로 스크래핑, PDF 및 이미지 조작. 컨테이너 기반 VM 수준 격리로 에이전트가 내 컴퓨터를 망가뜨리지 않고 신뢰할 수 없는 코드를 실행할 수 있습니다. MCP 서버로 노출돼 모든 클라이언트에서 작동합니다.
왜 쓰나요
핵심 기능
- VM 수준 격리 — 호스트 파일시스템과 네트워크 보호
- 영속 Jupyter 커널 — 변수와 import가 호출 간에 유지
- 웹 스크래핑 / 브라우저 자동화를 위한 Playwright 번들
- 사전 패키징된 skills: PDF 조작, 이미지 처리
- coderunner.local:8222의 MCP 서버로 사용 가능 — 모든 클라이언트에 연결
사용 사례
실전 활용법: CodeRunner
언제 쓸까: Claude가 완전히 검토하지 않은 스크립트를 작성하고 실행하길 원할 때.
흐름
-
작업 전달
Use coderunner. Write a Python script that downloads my Strava activities CSV from <url>, parses, and computes weekly mileage. Run it in the sandbox.✓ 복사됨
→ 스크립트 실행됨; 출력 표시; 내 파일시스템은 건드리지 않음
-
반복
Add a chart of weekly mileage. Re-run.✓ 복사됨
→ 차트 렌더링됨; 커널 상태 유지 (재import 없음)
-
결과 내보내기
Save CSV + chart to ./out/ on host (this only).✓ 복사됨
→ 그 경로만 쓰여짐; 샌드박스는 봉인 유지
결과: '앗, /Users 삭제됐어' 없는 빠른 실험.
함정
- 샌드박스에서도 네트워크 접근은 허용됨 — 진정한 신뢰할 수 없는 코드를 실행한다면 네트워크 비활성화; 그렇지 않으면 데이터 유출 가능
언제 쓸까: 커널 상태를 잃지 않고 30분짜리 탐색적 데이터 세션을 원할 때.
흐름
-
한 번만 데이터 로드
Use coderunner. Load /data/sales.csv into df. Show schema + 5 sample rows.✓ 복사됨
→ df가 커널에; 세션 내내 유지
-
임시 쿼리
Pivot by region × month, show top 5 anomalies.✓ 복사됨
→ 피벗 + 플래그된 행
-
내보내기
Save the anomalies subset to /out/anomalies.csv on host.✓ 복사됨
→ /out/에 CSV
결과: 실제로 코드가 실행되는 채팅을 통한 노트북 수준 분석.
함정
- 긴 세션에서 커널 상태가 벗어남; 오래된 변수 기반 결과 — 관련 없는 작업 사이에 커널 재시작; Claude가 %reset 실행 가능
언제 쓸까: 사이트에 완전한 브라우저가 필요한데 호스트에서 Chrome 프로세스를 실행하고 싶지 않을 때.
흐름
-
세션 시작
Use coderunner Playwright. Open <url>, wait for the table, extract rows as JSON.✓ 복사됨
→ JSON 반환됨; 브라우저는 샌드박스에 유지
-
셀렉터 수정
Selector missed the price column; adjust to find it.✓ 복사됨
→ 업데이트된 셀렉터; 데이터 완성
결과: 데이터 추출됨; 호스트 브라우저 흔적 없음.
함정
- 사이트가 headless를 감지하고 차단 — skill이 노출하는 --headed=false-but-stealth 옵션으로 chromium 전환
조합
다른 MCP와 조합해 10배 효율
마운트된 경로를 통해서만 샌드박스로/에서 데이터 이동
Mount only /Users/me/data and /Users/me/out; everything else is read-only.✓ 복사됨
검색 → 페치 → 분석 파이프라인
Search via duckduckgo, scrape via coderunner Playwright, analyze in Python.✓ 복사됨
비용 및 제한
운영 비용
- API 쿼터
- 없음 — 로컬
- 호출당 토큰
- 코드/출력 token만
- 금액
- 무료
- 팁
- 영속 커널로 재import 대비 token 절약; 상태가 잘못됐을 때만 재설정
보안
권한, 시크릿, 파급범위
최소 스코프: Mounted filesystem paths only Network on/off via config
자격 증명 저장: 에이전트가 볼 수 있어도 괜찮지 않으면 샌드박스에 비밀 키 넣지 않기
데이터 외부 송신: 네트워크가 켜져 있으면 샌드박스가 모든 URL에 접근 가능 — 민감한 실행에서는 비활성화
절대 부여 금지: $HOME 또는 /의 마운트 금지 — 샌드박스의 의미가 없어짐
- 샌드박스가 피해 범위를 줄이지만 만능은 아님 — 실행 전 에이전트의 계획을 검토
문제 해결
자주 발생하는 오류와 해결
Linux에서 install.sh 실패
프로젝트는 macOS Apple Silicon이 1등급; Linux 지원은 다양함. 배포판별 메모는 issues 확인
Playwright 오래된 상태
kernel_reset 실행; 오래된 브라우저 컨텍스트가 호출 간에 지속될 수 있음
샌드박스가 인터넷에 접근 불가
설정에서 네트워크 비활성화됨; 필요하면 켜기. 반대로, 불필요할 때는 격리
PDF/이미지 skill 의존성 누락
컨테이너 이미지에 일반적인 것들이 번들됨; 커스텀 의존성 추가를 위해 이미지 재빌드
대안
CodeRunner 다른 것과 비교
| 대안 | 언제 쓰나 | 단점/장점 |
| Anthropic code execution beta | 로컬 샌드박스 없이 서버 측 실행을 원할 때 | 클라우드 측; 데이터가 내 컴퓨터를 나감 |
| Docker by hand | 컨테이너 이미지를 완전히 제어하고 싶을 때 | 수동 설정; MCP 서버가 기본 제공되지 않음 |