laya-browser-agent
Local browser agent that picks each step's operation and element with a Jev-shaped model such as a fine-tuned Laya, no cloud needed.
Overview
laya-browser-agent provides multi-backend constrained decision support for Jev-like models in a browser-driving role. The agent presents the decision model with a numbered table of page controls and constrains which operation and element it may propose; the model returns probabilities over those options. Backends include Laya through MLX or PyTorch, any object with a synchronous answer(state, questions) method, or any System One-shaped HTTP endpoint, and it speaks TypeSafe's /v1/systemone dialect so Jev tooling can point at it by changing a base URL. It works with browser-use's jev-ultrafast via the same wire format.
The recommended default is the project's own open fine-tuned checkpoint, laya-browser-v32b, pinned to an immutable revision, with an upstream legacy option. The README is candid about limits: authentication and password fields, long or dynamic forms, collapsed menus, canvas or shadow DOM, sites blocking headless browsers and vocabulary mismatches can fail, and the model-free test suite asserts no model results. It works with Playwright or CDP, is MCP-friendly, and has documentation in four languages.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which operation should be performed next? | — |
| Choice | Which numbered page element should the operation target? | — |
How it works
- Capture the page as a numbered table of controls
- Decision backend scores allowed operations and elements
- Agent validates and executes the chosen action via Playwright or CDP
- Outcome checks and human confirmation catch errors
- Repeat until the task is done
Strengths
- Runs fully local with open weights
- Pluggable backends including any System One endpoint
- Pinned model revisions for reproducibility
- Honest list of failure cases
Caveats
- Known failures on auth fields, dynamic forms and shadow DOM
- Model can be confidently wrong; validation needed
- Test suite does not assert model quality
Getting started
from localdecide import BrowserDecider, then configure the browser checkpoint ichenney/laya-browser-v32b (subfolder v32b).At a glance
- Type
- MCP server
- Status
- beta
- Language
- Python
- Runtime
- library with Playwright/CDP drivers, MLX or PyTorch
- Has code
- yes
- Has tests
- yes
- Stars
- 20
Use cases and integrations
How curated lists describe it
Browser agent: derives each step from a Jev-shaped model — Laya through MLX or PyTorch, any duck-typed backend, or an arbitrary System One HTTP endpoint.
yibie/awesome-jevLocal, open-source Jev alternative: browser agent decisions with Laya (System One model) on your own machine. No cloud, no API key. Playwright/CDP, MCP-friendly.
wh000wh000/awesome-jev-liveLocal, open-source Jev alternative: browser agent decisions with Laya (System One model) on your own machine. No cloud, no API key. Playwright/CDP, MCP-friendly.
hellogumbo/awesome-jevBrowser agent whose next action is decided by Laya on your own machine, with no cloud and no API key. Japanese.
MrJev/awesome-jev
Frequently asked questions
Does it need TypeSafe?
No, it runs Laya locally; it can also call any System One endpoint including Jev.
What can it not handle well?
Password fields, long dynamic forms, collapsed menus, canvas or shadow DOM and some headless-blocking sites.
Which model is recommended?
The project's fine-tuned laya-browser-v32b checkpoint.
Related projects
Open 2B browser-agent decision model fine-tuned from MiniCPM5 that serves the System One protocol for jev-ultrafast.
ProjectresearchPythonRuns jev-browser entirely on a local Jev-style engine (Qwen2.5 1.5B decisions, 0.5B typing) on an RTX 2060 SUPER, with no cloud API.
BenchmarkprototypePython, TypeScriptOpenJev 1.7B-8B: open decision models distilled for general decisions and browser-agent steps, served behind /v1/systemone.
ModelbetaPythonComputer-use platform (Cua Spaces, Driver, Lume) with CUA-S1 small decision models and a preview jev-use example for bounded actions.
ProjectbetaPythonFork of the jev-chat Windows app adding a key-free local LAYA judgment backend and a DPI-aware screen capture fix.
ProjectbetaPythonSelector-free pytest UI tests for saucedemo using a jev-ultrafast-style agent run fully locally with laya-browser and a small Ollama model.
ProjectprototypePython