Skip to content

Jev-cu

Codex computer-use skill where Jev picks the next on-screen element, action, completion and risk from text candidates.

Agent skillprototypeMIT

Overview

Jev-cu hands the 'where to click next' step of computer use to Jev. Codex Computer Use reads the interface and executes actions, while Jev chooses from text candidates taken from the accessibility tree: which element, which action, how complete the task is, and how risky the step is. Only text is sent, never screenshots, and a local policy gate stops sensitive operations.

It is a Codex skill with scripts for the Jev call, the policy gate, the decision loop, offline evaluation and installation. Runs default to dry-run, and actions such as delete, send, pay, authorise, upload, captcha, install or system settings stop at a confirmation step for a human. An app allow-list must be edited explicitly to add apps, and on-screen text is treated as data, not instructions. A P0 case set from accessibility snapshots of a calculator, a calendar and the NetEase home screen measures element-selection accuracy. Documentation is in Chinese.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich on-screen element should be acted on next?—
ChoiceWhich action should be taken on it?—
ScoreHow complete is the task, and how risky is this step?—

How it works

  1. Capture accessibility-tree text candidates from the target app
  2. Ask Jev for element, action, completion and risk
  3. Local policy gate checks app allow-list and sensitive actions
  4. Execute via Codex Computer Use (dry-run by default) and repeat up to maxSteps

Strengths

  • No screenshots leave the machine, only text
  • Sensitive actions require human confirmation
  • Offline unit tests and a P0 evaluation set

Caveats

  • Runs inside the Codex desktop app's cua_repl runtime
  • README notes Jev is most accurate with English goals
  • Small evaluation set

Getting started

`npm run install-skill` copies the skill to ~/.codex/skills/jev-cu; put TYPESAFE_API_KEY in .env.local and call runTask from the cua_repl runtime.

At a glance

Type
Agent skill
Status
prototype
Language
JavaScript
Runtime
Codex skill (desktop Computer Use)
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Computer use: drives a GUI through Jev decisions with a `jev-decide` script and ships a P0 case set taken from accessibility-tree snapshots of a calculator, a calendar, and the NetEase home screen.

    yibie/awesome-jev
  • A Codex Computer Use loop sending text candidates to Jev while desktop tools observe and act.

    logicrw/awesome-jev-projects
  • Codex computer-use skill where Jev picks the next element and action from on-screen text, with a local policy gate for sensitive steps. README in Chinese.

    MrJev/awesome-jev

Frequently asked questions

What does Jev decide?

The next element and action, plus task completion and step risk, from text candidates.

Is it safe to let it click?

It defaults to dry-run, has an app allow-list, and stops sensitive actions for human confirmation.

Does it send screenshots?

No, only accessibility-tree text.

Related projects

  • Accessibility-first macOS computer-use MCP server and CLI, with optional Jev guards on targets and inputs before irreversible actions.

    PluginbetaPython
  • MCP server that lets agents observe and control Android phones over ADB, with Jev picking controls and judging goal completion.

    MCP serverbetaTypeScript
  • Zero-dependency Node library with MCP and ACP adapters adding Jev decisions and gated computer use beside any LLM agent.

    MCP serverbetaTypeScript
  • macOS computer-use package: a background app driver for any agent, plus a loop where Jev picks each UI action for a bounded subtask.

    ProjectbetaPython
  • Windows MCP server and CLI where Jev observes windows and chooses controls so agents can hand off whole desktop tasks.

    MCP serverbetaPython
  • Computer-use MCP server for macOS and Windows that reads the UI tree and uses Jev to find elements, check screens and wait for states.

    MCP serverbetaPython