Engines
Select the engine per job — from the dashboard, or with--engine {claude,openai,nsr} on the
CLI.
All three share the cost and summary path, so switching engines does not change how a job is
accounted for or reported.
Choosing between them
The two vision engines and NSR are different shapes, and the difference decides which to reach for. In a vision-based agent every UI step is an API round-trip: a screenshot goes out, reasoning and a tool call come back. Cost and latency therefore scale with the number of steps, not with how hard the decision was — clicking through four screens of a form costs four round-trips whether or not any of them required judgement. NSR executes those same steps locally, with no API call. So the useful pattern is not “pick one engine” but separate the decision from the execution: let a vision engine handle the step that genuinely needs judgement, and let NSR carry the deterministic navigation around it.All three share the cost and summary path, so a job that switches engines is
still accounted for and reported the same way. That is what makes mixing them
practical rather than a special case.
Deploying NSR’s perception
NSR does not read pixels through a model API. On the web it takes real DOM element boxes from the accessibility tree; on a desktop it uses a local ONNX UI detector, pointed at byNSR_UI_MODEL_PATH.
The detector recognises ten element classes, in a fixed order: button,
text_field, link, checkbox, dropdown, menu, tab, icon, label,
dialog.
Building and validating one:
NSR web capability
NSR drives a headless Playwright browser with no X display and no API calls. A bridge implements the two methods NSR calls —execute and take_screenshot — feeding the
a11y_first perception real DOM element boxes rather than pixels.
On the realistic vertical benchmark, action-task accuracy went from 0% to 80% (12/15). The
remaining misses are the three hardest multi-step purchase and transfer flows.
NSR also gained:
- Real
<select>dropdown support (select_option). - Perceive-and-scroll to reach below-the-fold elements.
- Expanded money-action steps so multi-step finance flows complete.
Commerce MCP stack
OneMCPManager aggregates 25 commerce tools across three servers, so the agent uses APIs
where they exist and falls back to the GUI where they don’t — API-first, GUI-fallback, in one
loop.
Each is a FastMCP stdio server with an agent preset. The Dsco server implements a faithful
OAuth2 client-credentials lifecycle per the v3 Standard API guide — mint, cache to
expires_in,
bearer, and refresh on 401.
Multi-server aggregation required an
MCPManager handshake fix; the multi-server plus
computer-use loop is verified live.OSWorld benchmarking
A real OSWorld score is runnable locally for all three engines, with a Docker/KVM run path.docker.yaml config and an osworld_os_smoke.jsonl of 8 real os-domain
tasks drawn from OSWorld’s evaluation examples — terminal and file operations, settings, and
one infeasible task.
NSR has been validated end to end on the real Dockerized OSWorld VM, scored by OSWorld’s own
evaluator.
There is also a cross-domain benchmark grader for computer-use-preview.
Related
- Computer Use Agent — architecture and agent catalog
- MCP Integration Guide
- All MCP servers