커서 방해 없이 macOS 앱을 제어하는 Cua Driver 등장!
Cua Driver는 macOS에서 커서 이동 없이 백그라운드에서 앱을 제어하는 도구로, UI 자동화 에이전트(UI Automation Agent)를 위한 솔루션임.
CGEventPost의 커서 워프(Warp) 문제와 Chromium의 이벤트 드롭(Event Drop) 문제를 해결하기 위해 SkyLight를 활용한 SLEventPostToPid 방식을 채택함.
개발자들은 macOS 자동화 및 에이전트(Agent) 활용에 대한 새로운 가능성에 주목하며, 윈도우(Windows) 지원에 대한 기대감을 표명함.
텔레메트리(Telemetry) 기본 활성화에 대한 우려와 감사 추적(Audit Trail)의 필요성이 제기됨.
macOS UI 자동화의 기술적 난제와 해결
Cua Driver는 macOS에서 커서(Cursor) 방해 없이 백그라운드에서 앱을 제어하기 위해 다양한 기술적 난관에 직면했다. 특히, CGEventPost는 커서를 워프(Warp)시키고, CGEvent.postToPid는 Chromium에서 이벤트를 드롭하는 문제가 있었다. 개발자는 SkyLight의 SLEventPostToPid를 활용하여 이러한 문제를 해결했으며, 이는 윈도우 서버 채널(WindowServer Channel)을 통해 Chromium이 신뢰하는 방식으로 이벤트를 전달하는 방식이다. 또한, yabai의 focus-without-raise 패턴과 오프스크린(Off-screen) 클릭을 통해 윈도우를 활성화하지 않고도 클릭을 처리한다.
에이전트(Agent) 기반 자동화의 활용 사례
Cua Driver는 Claude Code와 같은 코딩 에이전트(Coding Agent)를 활용하여 다양한 자동화 작업을 수행할 수 있다. 예를 들어, 데모(Demo) 녹화, Vercel의 에이전트-브라우저(Agent-Browser) 대체, 개발 루프(Dev-Loop) QA 에이전트, 개인 비서(Personal-Assistant) 흐름 구현 등에 활용될 수 있다. 특히, 스크린샷(Screenshot) 기반의 시각적 컨텍스트(Visual Context)를 활용하여 API 의존성 없이 정보를 추출하는 것이 특징이다.
아키텍처(Architecture) 및 구현 세부 사항
Cua Driver는 CLI 인터페이스(Interface)를 통해 사용되며, 스크립트(Script) 또는 코딩 에이전트(Coding Agent) 쉘(Shell)에서 호출하기 용이하다. 내부적으로는 멀티 에이전트(Multi-Agent) 컴퓨터 사용 샌드박스(Sandbox)인 cuabot, AI 에이전트 프레임워크(Framework)인 cua-agent, 샌드박스 제어 SDK인 cua-sandbox 등 다양한 패키지를 활용한다. 또한, Lume을 통해 macOS/Linux VM을 관리하며, OSWorld, ScreenSpot, Windows Arena 등에서 벤치마킹(Benchmarking) 및 RL 환경을 제공한다.
커뮤니티 반응 및 향후 과제
Hacker News 댓글에서는 Cua Driver의 구현에 대한 긍정적인 평가와 함께, 텔레메트리(Telemetry) 기본 활성화에 대한 우려가 제기되었다. 또한, 감사 추적(Audit Trail)의 필요성이 강조되었으며, 에이전트(Agent)가 수행한 작업에 대한 설명과 규정 준수(Compliance) 문제를 해결해야 한다는 의견이 제시되었다. 윈도우(Windows) 지원에 대한 기대감과 함께, macOS 자동화 및 에이전트(Agent) 생태계 발전에 대한 기대가 높다.