AutoCua: 좌표 대신 번호로 화면을 누르는 컴퓨터 사용 에이전트
README의 데모 영상에서 웹 에이전트가 항공권 검색 한 번을 6.1초에 끝내요
- 누가
- Ashish Yadav가 만들고 관리해요.
- 언제
- 2026년 10월 8일 저장소를 열었고, 10월 26일 v0.1.5에서 리눅스가 들어왔어요.
- 어디서
- macOS, Windows 10/11, GNOME 리눅스, Chrome 등 브라우저, 맥에 연결한 iPhone·iPad. Python 3.10+.
이게 불편했어요
화면을 다루는 에이전트는 스크린샷을 보고 좌표를 짐작해 누르곤 해요. 버튼을 살짝 빗나가거나 다른 창 뒤에 숨은 것을 누르려 하고, 긴 작업은 맥락 한도에 걸려 끝을 보지 못했어요.
그래서 이렇게 풀어요
AutoCua는 모델에게 좌표 대신 번호를 줘요. 운영체제의 접근성 트리와 OCR을 합쳐 화면의 요소마다 번호를 찍고, 모델이 번호를 고르면 운영체제 입력층에 진짜 마우스·키보드 이벤트를 넣어요. 따로 도는 압축 에이전트가 대화를 요약해 끼워 넣어서 긴 작업도 이어 가요.
안에서는 이렇게 돌아가요
- 1
나 (main.py) → run_agent()
run_agent(mode=, provider=, model=, task=)mode 문자열 하나로 데스크톱, 셸, 웹, iOS 중 무엇을 움직일지 정해요.AutoCua/agent_launcher.py - 2
run_agent() → computer use 에이전트
computer use 루프 시작부모 에이전트가 화면을 맡고, 코드 일은 코더 에이전트에게 넘길 수 있어요.AutoCua/mac/agent/computer_use/service.py - 3
접근성 트리 + OCR 스캐너 → computer use 에이전트
번호 붙은 요소 트리 + 표시된 스크린샷접근성 트리와 OCR을 합치고, 다른 창에 가린 요소는 버린 뒤 자홍색 번호를 찍어요.AutoCua/mac/tree/element.py - 4
computer use 에이전트 → 고른 모델 제공자
다음 동작: 번호 하나모델은 좌표를 보지 않아요. 보여 준 적 없는 번호는 아무것도 움직이기 전에 거절돼요.AutoCua/llm_provider/llm_manager.py - 5
computer use 에이전트 → 내 화면의 앱
운영체제 입력층으로 클릭·입력macOS에선 kCGHIDEventTap에 마우스 이벤트를 넣어, 앱은 손으로 누른 것과 같은 이벤트를 받아요.AutoCua/mac/controller/service.py
넣으면 이렇게 나와요
나한테 맞을까요
이럴 때 좋아요
- 여러 앱을 오가는 반복 업무를 에이전트에게 맡기고 싶은 사람
- 로그인된 내 Chrome 그대로 웹 작업을 시키고 싶은 사람
- 모델 제공자를 문자열 두 개로 바꿔 가며 쓰고 싶은 Python 개발자
이건 안 돼요
- shell 도구는 샌드박스가 아니에요. 실행 전에 묻는 단계가 없고 홈 폴더 대부분에 닿아요.
- 내 실제 컴퓨터, 브라우저 프로필, 로그인을 그대로 써요. README도 그게 핵심이자 위험이라고 적어요.
- 고른 모델 제공자의 API 키가 필요해요. 안드로이드는 아직 안 되고, iOS 모드는 맥에서만 돼요.
- Windows UAC 처리에 쓰는 Interception 드라이버는 상업적으로 쓰려면 저자에게 따로 라이선스를 사야 해요.
발행 전에 Devalley 편집자가 검토했어요. 칼럼은 어떻게 만드나요
AutoCua: a computer use agent that clicks by number, not pixel
In the README's demo clip, the web agent finishes a flight search in 6.1 seconds.
- Who
- Built and maintained by Ashish Yadav.
- When
- The repository opened on October 8, 2026; v0.1.5 on October 26 brought Linux.
- Where
- macOS, Windows 10/11, Linux with GNOME, Chrome and other browsers, and an iPhone or iPad on a Mac. Python 3.10+.
What was hard
Agents that work a screen often look at a screenshot and guess where to click. They miss a button by a few pixels or aim at something behind another window, and long tasks die at the context limit before they finish.
What it does about it
AutoCua gives the model numbers instead of coordinates. It merges the operating system's accessibility tree with OCR, stamps a number on each element, and when the model picks one, sends real mouse and keyboard events in at the OS input layer. A separate compression agent splices a summary into the transcript so long tasks keep going.
How it runs inside
- 1
You (main.py) → run_agent()
run_agent(mode=, provider=, model=, task=)One mode string decides whether it drives the desktop, a shell, the web or iOS.AutoCua/agent_launcher.py - 2
run_agent() → The computer use agent
The computer use loop startsThe parent agent owns the screen and can hand code work to the coder agent.AutoCua/mac/agent/computer_use/service.py - 3
Accessibility tree + OCR → The computer use agent
A numbered element tree and annotated screenshotAccessibility tree and OCR are merged, elements hidden behind other windows dropped, magenta numbers stamped on.AutoCua/mac/tree/element.py - 4
The computer use agent → Your model provider
Next action: one numberThe model never sees a coordinate; a number it was never shown is refused before anything moves.AutoCua/llm_provider/llm_manager.py - 5
The computer use agent → The apps on your screen
Click and type at the OS input layerOn macOS mouse events go in at kCGHIDEventTap, so apps get what your hand on the mouse would send.AutoCua/mac/controller/service.py
What goes in, what comes out
Is it for you
Good for
- Handing repetitive work that hops between apps to an agent
- Web tasks in your own Chrome, already logged in
- Python developers who want to swap model providers by changing two strings
Not for
- The shell tool is not a sandbox: no approval prompt before a command runs, and most of your home folder is reachable.
- It drives your real machine, browser profile and logins; the README calls that both the point and the risk.
- You need an API key for your model provider. Android is not available yet, and iOS mode needs a Mac.
- The Interception driver used for Windows UAC needs a paid licence from its author for commercial use.
Reviewed by Devalley’s editor before publishing. How the column is made