jev-browser-wingman is a browser-tool proxy: the agent plans the task, but Jev chooses among observed page elements for each step. The wrapper acts in a shared Chromium session and hands back ambiguous choices. Unlike an unconstrained browser agent, its decision menu is constructed in code—but the page and goal still go to TypeSafe.

What is implemented

  • The proxy hides most direct page-action tools in its default hand-off mode while keeping read, tab, dialog, and some pointer tools. src/core/jev-client.ts actually posts state and choice questions to TypeSafe and validates returned option names and probabilities.
  • src/core/pick.ts resolves a chosen role/name against observed elements and refuses an ambiguous match; src/core/egress.ts strips URL query strings and redacts bound values before constructing the model state.
  • Important default: sensitive-page blocking and the irreversible-action confirmation gate are both off unless configured. The project says page text is transmitted to TypeSafe by default, even on banking and mail pages. A typed choice is neither a correct action nor a security guarantee.

The author’s comparison

  • The README reports 17 tasks, twice per route: Wingman completed 34/34, direct Playwright 32/34; both direct failures were file upload. The author reports median per-run list-price token costs of $0.162 vs $0.177, while Wingman was slower (13.1 s vs 11.7 s). These are author-reported, not independently reproduced here.
  • Half of Wingman runs handed at least one step back; the README says no direct agent click/type/script followed those handoffs. The benchmark uses mostly local practice pages, only two live-site tasks, and two runs per task.
  • The README says its cited raw bench/results file is gitignored and not committed. I inspected the README, task definitions, and key TypeSafe, choice-resolution, egress, and gate code; I did not install, run, or security-audit the project or rerun its paid benchmark.

The narrower lesson is about harness design, not a model speed victory: move decisions into explicit menus, check actual page state, and keep sensitive-site and confirmation policy enabled where appropriate. Related: Relay’s browser action menu has a fake-provider test but no measured live Jev run.