Skip to content
MrJev

arc-cua

Lets a planner hand bounded desktop subtasks to a decision model that runs the UI loop, with a lean macOS driver usable on its own.

View on GitHub →

Checked, not fully reviewed

A planner hands off a small desktop task and Jev picks each click from what is on screen. Checked, not fully reviewed: macOS or Chrome only; not run on Jev.

Good for

  • Letting a large model plan a desktop task while Jev picks each click, so the large model is not asked about every step
  • A careful example of turning a screen into Jev `Choice` questions whose answers can only name controls that are really there

Watch out for

  • The desktop backends are macOS-only and the browser backend needs Chrome; on Linux we could run only the in-memory demo
  • Window text, element names and values, and the subtask go to TypeSafe on every step; secret inputs are masked, but the goal text is not
  • Calls the HTTP API with its own client, not the official SDK, and asks only `Choice` questions

Tested Oct 27, 2026 at 6b353039111c · python:3.12-slim in Docker on 2 CPU cores, Linux, with the dev and browser extras (httpx 0.28.1); its test suite, the no-key demo, and the Jev policy on the in-memory demo desktop against a local stand-in for /v1/systemone

Checked, not fully reviewed. We installed it in Docker on Linux, ran its test suite and its no-key demo, then ran the Jev policy on the demo’s in-memory desktop against a local stand-in for Jev that followed a fixed script. So the stand-in, not Jev, chose the clicks. We had no Mac and no Chrome in the container, so we did not drive a real app. No Jev calls. The README’s timings and success rates are the author’s own.

The repository has two tools. arc-driver lets an agent such as Claude Code read and act on a macOS app; it does not use Jev. arc-cua is the Jev part. A planner passes a subtask: a goal, literal inputs, checks for success and a step limit. Each step it reads the app’s controls and asks Jev one request of Choice questions: which operation, which target, which input, which key. Jev can pick only the controls it was shown, and only the input values the planner supplied. A missing value stops the run with NEEDS_INPUT instead of typing something made up. Each success check is its own three-way Choice.

What we saw. The suite passed 368 tests; the 8 failures and the skipped Chrome tests need macOS libraries or Chrome. With the stand-in, the demo finished in four requests of 6.7 to 10 KB each. An answer naming an operation that was not offered was asked again once, then raised an error with nothing done. A 429 was retried twice, then failed. A token-limit error was named plainly. Controls whose labels mean deleting, sending, buying or closing are not offered, and the runtime refuses to click them unless the subtask allows that category.

What leaves your machine. Every step sends the app and window names, the visible controls with their names and values, the last eight actions and the subtask. Inputs marked secret were masked in all of those, but when we also put the secret in the goal text, it was sent as written. It defaults to jev-latest. The README also shows an OpenAI transport; we did not run it.

MIT. 324 stars.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Oct 27, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Browser & Computer Use

jev-ultrafast

★ 24k▲ 400

browser-use/jev-ultrafast

Fast browser agent from Browser Use. Jev decides each step and which element to act on; a small model is called only when text needs to be typed. The authors report a full Google Flights search in about 7.1 seconds.

PythonReviewed

agent-desktop

★ 8.5k▲ 6.6k

vercel-labs/agent-desktop

macOS desktop automation over accessibility trees. Since v0.9.2, its jev-desktop scripts let Jev choose which control to operate and which action to take.

RustReviewed

typesafe-computer-use

★ 1.3k▲ 16

awlevin/typesafe-computer-use

macOS computer use without sending screenshots to a large model. The screen is read deterministically and Jev picks the next action.

PythonReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.