arc-cua
PyPI arc-cua on macOS: arc-driver MCP controls apps in the background without Jev; arc-cua hands bounded subtasks to JEV or your choice provider.
Overview
arc-cua (github.com/shhivv/arc-cua, MIT, PyPI package arc-cua) from Shiv Shanmugam ships two tools in one install. arc-driver is a macOS background driver exposed as MCP tools for Claude Code, Codex, and other clients; your agent decides each action and arc-driver does not use Jev or TypeSafe. The arc-cua decision loop is separate: a planner passes a bounded payload with goal, inputs, verification, constraints, and max_actions; a fast decision model runs the observe, legal action space, pick, execute, and settle loop until SUBTASK_COMPLETE or a terminal handoff. JEV through TypeSafe is the default decision backend; ChoicePolicy and custom ChoiceTransport let you plug other typed choice providers. Launch post on X from @sxhivs, Oct 8, 2026: x.com/sxhivs/status/2108239774893138358.
Problem: Computer-use agents that send every click to a frontier model burn time and money on steps that are really one pick from a short legal menu.
Built for: macOS builders who want a planner or CUA agent to hand off bounded desktop subtasks to a fast decision model, or who need a background MCP driver without any decision API.
First indexed on Jev Directory: 2026-09-20
Creator and team
- Name
- Shiv Shanmugam
- Handle
- @shhivv
How Jev is used
- Role in the product flow
- arc-cua loop only: per-step Choice over dynamically built desktop operations and targets; arc-driver MCP path has no Jev calls
- Primitives
- Choice
- State in
- DesktopSnapshot elements from AX plus local OCR on macOS or Chrome backend text; subtask inputs supply literal strings the model may type, never invent.
- Decision out
- Next UI operation and target id from the legal menu; verification criteria checked via separate choice heads before SUBTASK_COMPLETE.
- Planner or script calls execute_payload with goal, verification, inputs, and max_actions
- Runtime observes desktop, builds finite action space, freshness guard, and settle probes
- TypeSafeJevPolicy or ChoicePolicy sends typed questions to JEV or a custom transport
- Returns SUBTASK_COMPLETE, BLOCKED, NEEDS_AGENT, NEEDS_INPUT, or DRY_RUN to the planner
arc-cua optimizes planner-to-decision-model handoff, not full-session macOS loops that own every step. awlevin-typesafe-computer-use is a Python clicker where Jev picks OCR and accessibility actions each turn in one repo. sac-y-jev-cu wraps Codex Computer Use with text-only Jev gates. browser-use-jev-ultrafast stays in Chromium DOM tables. arc-driver adds MCP observe and act tools with no API key; only the arc-cua subtask loop calls JEV or your ChoiceTransport. Other macOS demos, such as Paul Smith's computer-use-jev, take a similar approach. The details here come from the arc-cua README. Type literal values in inputs; the README blocks invented text from goal prose alone.
Sourced performance claims
- README provider comparison table lists JEV on headless Chrome tasks with 5/5 verified runs, median 2.0 to 2.9 s end-to-end, 2 to 5 decisions, and median decision latency 273 to 319 ms per task row.Source: github.com/shhivv/arc-cua README Provider comparison
- README states arc-driver does not use decision models, JEV, or TypeSafe and is documented separately in docs/driver.md.Source: github.com/shhivv/arc-cua README arc-driver section
- Public GitHub repo shhivv/arc-cua had 306 stars as of October 9, 2026.Source: GitHub API, 2026-10-09
Features and stack
Features
- arc-driver MCP server via uvx --from 'arc-cua[macos]' arc-cua mcp for background macOS control
- execute_payload JSON API with verification, constraints, and max_actions
- TypeSafeJevPolicy default plus OpenAIDecisionsTransport and custom ChoiceTransport
- Runtime-owned UI settling with freshness guard and late_reaction retry
- ChromeBackend and hybrid macOS AX plus OCR backends
- pip install arc-cua[macos] or arc-cua[browser] per README
Stack
- Python
- macOS Accessibility and Apple Vision OCR
- TypeSafe JEV for default arc-cua loop
- MCP for arc-driver
- Chrome remote debugging for browser backend
Pricing: MIT open source; arc-cua loop needs TYPESAFE_API_KEY for default JEV per README. arc-driver needs no model key.
Links
FAQ
- Does arc-driver use Jev?
- No. The README table states arc-driver does not use decision models, JEV, or TypeSafe. Only the arc-cua subtask loop uses a decision backend.
- Do I need a TypeSafe API key?
- The arc-cua decision loop defaults to JEV through TypeSafe; README shows export TYPESAFE_API_KEY. Custom ChoicePolicy transports can replace it.
- How is this different from typesafe-computer-use?
- Aaron Levin's repo runs a single-agent click loop with Jev every step. arc-cua returns control to a planner after bounded subtasks and also ships a separate MCP driver without Jev.
- Can Jev see screenshots in the default policy?
- README states JEV does not accept images; TypeSafeJevPolicy does not offer screenshot_checks. Other transports may attach screenshots when configured.
Related learn guides
Original Jev guidance that pairs with this product pattern.
- Jev use cases
The patterns builders actually search for: moderation, routing, triage, RAG verify, and agent gates.
- Jev vs LLM classification
When to gate with System One probabilities instead of asking a chat model to label things.
Related products
Hand-picked neighbors with rich profiles or overlapping tags.