포스트

trycua/cua VM이면 AI에 Mac을 맡겨도 안전할까: Lume, CUI, Network 경계

trycua/cua의 VM은 AI가 호스트를 직접 조작하는 위험을 줄이지만, 네트워크, 비밀, 공유 폴더까지 격리하지 않으면 Mac을 맡겨도 안전하다고 말할 수 없습니다. API나 DOM 자동화가 불가능한 작업만 골라 일회용 image에서 반복 성공률과 외부 효과를 측정하는 것이 현실적인 출발점입니다.

Playwright 대신 OS 전체가 필요한 경우

DOM이 있는 웹페이지라면 Playwright나 Selenium처럼 요소를 직접 찾는 방식이 빠르고 재현하기 쉽습니다. 데스크톱 앱, 접근 가능한 API가 없는 ERP나 브라우저 밖의 여러 앱을 잇는 작업은 화면과 키보드, 마우스를 다루는 Computer-Use Agent가 필요할 수 있습니다.

호스트에서 에이전트를 실행하면 잘못된 클릭이나 쉘 명령이 실제 파일과 자격 증명에 닿습니다. trycua/cua가 제안하는 답은 완전한 데스크톱을 일회용 VM에 띄우고 에이전트에게 그 환경만 주는 것입니다. 작업 후 VM을 버릴 수 있어야 같은 테스트를 깨끗한 상태에서 다시 시작할 수 있습니다.

그러므로 “브라우저 자동화의 종말”보다는 API, DOM이 없는 마지막 구간을 보완하는 도구로 보는 편이 정확합니다. 웹 업무를 모두 화면 클릭으로 바꾸면 정확도와 토큰 비용이 오히려 나빠질 수 있습니다.

Lume, CUI, Agent의 역할을 나눠 본다

Lume은 Apple의 Virtualization.Framework를 이용해 Apple Silicon에서 macOS나 Linux VM을 구동하는 하단 계층으로 설명됩니다. 원문은 네이티브 CPU 성능의 97%라는 수치를 제시하지만, 이는 모든 앱과 입력 지연의 보장값이 아니라 특정 환경의 성능 주장입니다. 부팅, 화면 캡처와 실제 앱 반응 시간을 별도로 재야 합니다.

CUI(Computer-Use Interface)는 화면과 접근성 트리를 읽고 클릭, 드래그와 키 입력을 실행하는 눈과 손입니다. 상단 Agent는 OpenAI, Anthropic이나 Ollama 같은 모델을 연결해 다음 행동을 고릅니다. MCP를 통해 외부 코딩 도구가 격리된 데스크톱을 하나의 도구처럼 호출하는 구성도 소개됩니다.

이 세 층을 구분하면 실패 원인을 찾기 쉽습니다. VM이 느린지, CUI가 요소를 잘못 찾았는지, 모델이 잘못 계획했는지 같은 화면만 보고는 알기 어렵습니다. 각 단계의 관측과 작업 ID가 필요합니다.

원문의 Python은 v0.7.18 개념 스냅샷이다

예시에는 from cua_agent import CuaSandbox, Agent, macOS VM의 CPU, 메모리, isolate_network=True, 모델과 computer_use 도구가 등장합니다. 하지만 패키지 설치, 이미지와 라이선스, 실제 import 경로, 모델 인증, 파일 전달과 오류 처리가 없습니다.

따라서 이 조각을 현재 SDK의 실행 예제로 보거나 isolate_network=True 한 줄이 완전한 망분리를 보장한다고 가정하면 안 됩니다. 원문도 v0.7.18 시점의 프로비저닝 버그와 특정 리전 고정 사례를 언급합니다. 현재 버전의 API와 지원 OS를 저장소에서 확인해야 합니다.

또한 작업 중 예외가 나면 destroy()까지 도달하지 못할 수 있습니다. 실제 구현에는 종료 보장, 시간 제한, 고아 VM 정리와 자원 사용 상한이 필요합니다.

VM 밖으로 이어지는 통로를 먼저 닫는다

격리는 벽보다 통로에서 깨집니다. VM에 호스트 디렉터리를 쓰기 가능으로 마운트하거나 운영 자격 증명을 넣고 외부 네트워크를 열면 일회용 VM이어도 피해가 밖으로 나갑니다.

파일럿에서는 다음 원칙이 유용합니다.

  • 테스트 전용 계정과 최소 권한의 데이터만 넣는다.
  • 호스트 공유는 읽기 전용이거나 결과 전용 경로로 제한한다.
  • 필요한 엔드포인트만 네트워크 허용 목록에 둔다.
  • 클립보드, 파일 업로드와 MCP 도구 호출을 감사한다.
  • 작업 시간, 클릭 수, 모델 토큰에 상한을 둔다.
  • 시작 이미지를 고정하고 작업 후 VM을 폐기한다.

운영 데이터를 다루는 작업에는 삭제, 전송, 결제 같은 행동 전 사람 승인을 추가해야 합니다. VM 스냅샷은 외부 시스템에 이미 보낸 요청을 되돌리지 못합니다.

속도보다 작업 성공 비용을 비교한다

화면을 볼 때마다 고해상도 스크린샷과 접근성 정보가 모델로 전송되면 토큰이 늘어납니다. 원문도 단순한 Excel 조작에 수천 토큰이 들 수 있다고 경고합니다. VM의 CPU 성능이 높아도 모델 왕복과 시각 추론이 느리면 전체 작업은 오래 걸립니다.

API, Playwright와 CUA 세 방식으로 같은 업무를 수행해 성공률, 평균 행동 수, 토큰, 복구 시간과 유지보수 비용을 비교하십시오. CUA가 빛나는 곳은 셀렉터를 쓸 수 없는 데스크톱 업무와 격리된 E2E 시험입니다. 구조화된 API가 있는 작업까지 화면 조작으로 바꾸는 것은 더 안전하거나 저렴한 선택이 아닙니다.

VM 생명주기와 자격 증명을 작업 단위로 묶는다

운영용 pilot은 검증된 golden image에서 시작합니다. OS, 앱, font, locale, screen size와 CUI version을 image digest에 고정하고, 작업마다 새 VM을 복제합니다. 실행 중 snapshot을 다음 업무에 재사용하면 이전 문서, cookie와 clipboard가 남을 수 있습니다. 성공, 실패와 무관하게 종료 단계에서 VM, disk, temporary credential을 폐기하고, 고아 instance 수와 storage quota를 감시해야 합니다.

자격 증명은 image에 bake하지 않고 작업 시작 때 최소 범위, 짧은 만료로 주입합니다. 로그인 뒤에는 secret 문자열을 화면이나 model context에 다시 노출하지 않는 방식을 우선합니다. 출력 파일은 정해진 export 경로만 통과시키고 malware, 민감 정보 검사를 거친 뒤 host로 옮깁니다. VM이 격리돼도 이메일 전송이나 SaaS 변경은 이미 외부에서 일어난 일이므로 삭제, 결제, 전송 직전에는 대상과 diff를 사람에게 보여 줍니다.

화면 에이전트에는 관찰과 행동 사이의 stale 상태도 있습니다. 모델이 screenshot을 본 뒤 dialog가 바뀌거나 다른 창이 앞에 뜨면 같은 좌표가 전혀 다른 버튼이 됩니다. 각 관찰에 frame, window, accessibility element ID와 시각을 붙이고 행동 직전 상태가 달라졌으면 다시 관찰합니다. 비가역 동작은 좌표 클릭만으로 승인하지 않고 현재 앱, 문서, control label과 예상 결과를 함께 검증합니다.

평가는 로그인, 문서 열기, 값 입력, 저장, export처럼 단계가 분명한 업무를 20회 이상 반복해 단계별 실패를 기록하는 방식이 유용합니다. task success 외에 p50, p95 시간, model 호출, screenshot byte, 행동 수, 사람 개입과 잘못된 side effect를 측정합니다. 간헐적 실패가 재시도로 가려지면 token, 시간과 중복 저장이 늘기 때문에 최초 성공률과 재시도 후 성공률을 분리합니다.

API는 정상이어도 CUA가 실패할 수 있는 조건을 미리 정합니다. 화면 해상도, locale 변경, 느린 animation, popup, network 단절과 app update를 주입해 timeout 안에 안전하게 멈추는지 봅니다. 자동 복구가 동일한 전송이나 결제를 반복하지 않도록 외부 작업에는 idempotency key나 결과 조회를 사용합니다. 이 시험을 통과하지 못한 업무는 VM 성능과 무관하게 자동화 범위에서 제외합니다.

원문과 버전 확인

함께 읽으면 이해가 이어지는 글

자주 묻는 질문

trycua/cua의 VM을 쓰면 host data가 자동으로 안전해지나요?

아닙니다. 공유 folder, clipboard, network, MCP, 주입한 credential이 VM 밖으로 이어질 수 있으므로 각 통로를 최소 권한으로 별도 제한해야 합니다.

웹 업무도 모두 Computer-Use Agent로 바꾸는 편이 좋은가요?

아닙니다. 안정적인 API나 DOM selector가 있으면 그 방식을 우선하고, CUA는 desktop app이나 접근 가능한 interface가 없는 구간에 제한하는 편이 낫습니다.

CUA pilot에서 무엇을 성공으로 측정해야 하나요?

화면 한 장의 성공이 아니라 반복 실행 성공률, 행동, token 수, p95 시간, 사람 개입, 복구 시간과 잘못된 외부 side effect를 함께 측정해야 합니다.

참고 자료:

THE END / OPSOAI

여기까지 읽었습니다

핵심 장면을 한 번 더 떠올려 보세요. 이해가 남았다면 이 책은 제 역할을 다했습니다.

다른 책 고르기
표지 1

키와 좌우 스와이프를 지원합니다. 읽던 페이지는 이 기기에 저장됩니다.

CONTENTS

이 책의 목차

    9개 장 15 분읽는 시간