An id stays with its control
Most tools number things by position. Remove one row and every number after it now means something else. Try it.
YouxPC lets Claude Code, Codex or any MCP agent work your Mac apps. It reads each window as a short numbered list and presses the controls itself, while you keep working. Open source, and it runs on your Mac.
$ curl -fsSL https://raw.githubusercontent.com/Ar5en1c/youxpc/main/install.sh | bash
Your screen is pixels. Underneath, macOS keeps a description of every button and field. YouxPC hands that to the agent with an id on each control, and presses by id.
These are real runs from the benchmark, replayed step by step with the calls and answers exactly as recorded. A web page cannot control your Mac, so nothing here is happening live.
Each demo here is a small imitation of the rule, so you can poke at it. The real behaviour is described in the README.
Most tools number things by position. Remove one row and every number after it now means something else. Try it.
Most of a run is the model thinking between calls. pc_do lets one thought carry a whole sum or a whole form.
Every action answers with the lines that were added, removed or changed once the screen settles. No second look needed.
Ask it to press "Approve" when six rows have one and it stops and lists them, each with its row, instead of pressing the first. Press a row's own id and it goes straight there.
Four tools, the same 17 tasks, three runs each, one model on one Mac. A run counts only if the app or page itself shows the right result, not if the model says it did.
Bold is the quickest tool that passed every run of that task, whoever it is. A red mark means that tool failed some of its runs. Seven of the seventeen tasks are the harder ones I wrote and prepared YouxPC against; they are tagged.
I wrote seven of the seventeen tasks and fixed YouxPC against them by hand before any model ran them. The other tools ran as installed, with no tuning, by someone who had never configured them.
Cua Driver passed every run, one more than YouxPC. Playwright MCP is as good or better on web pages; it drives its own browser and cannot reach desktop apps. YouxPC's one failed run is shown here, as recorded.
One model, one Mac, one day. Every run and every failure is in the full write-up, with the command to repeat it.
Accessibility access is all or nothing at the operating-system level, so the narrowing happens in YouxPC. Pick an app and see what an agent gets back.
Three steps, no account, no key. It is an ordinary MCP server that runs on your Mac.
A short script that downloads the release, checks it and puts youxpc in ~/.local/bin. Read it first if you like.
curl -fsSL https://raw.githubusercontent.com/Ar5en1c/youxpc/main/install.sh | bashIt speaks plain MCP over stdio. For Claude Code:
claude mcp add youxpc -- ~/.local/bin/youxpc mcpmacOS asks for Accessibility permission for the app your agent runs in. That app is what you are trusting, so choose it deliberately.
~/.local/bin/youxpc doctorPrefer to build it? git clone https://github.com/Ar5en1c/youxpc.git && cd youxpc && swift build -c release (needs Xcode 26; this is also the way on an Intel Mac).
Where it stops. macOS only, and terminal sessions use Apple's Terminal.
Canvas apps, games and custom-drawn interfaces have nothing to list, so they still need the real pointer for a moment.
Shortcuts with Command or Option bring the app to the front.
There is no confirmation step before sending, deleting or paying. The never-press list is the only guard, and you have to set it.
VS Code exposes almost nothing to accessibility, so it is close to unusable here.
Tested on Chrome, Brave, Calculator, TextEdit and Terminal. Other apps will have rough edges; please report them.
A browser imitation of what YouxPC does for Mac apps: one line per thing, an id on everything you can act on. Press an id to go there.