mrkeyoor.com_
Fri 16 Oct 18:52 UTC
Automationevaluationupdated 12 Oct 2026

laya-ultrafast review

Laya Ultrafast is a browser agent that fills forms and opens matching results using a local decision model on an Apple Silicon Mac. It adapts Jev Ultrafast so repeated browser choices can run locally, while a separate text model translates your goal into instructions.

+2 / 3dstars / 7d
Verdict

Our Laya Ultrafast run installed 57 packages in 13 seconds and passed all 51 tests, but the suite substitutes a fake model for local inference. Use it for supervised browser experiments on Apple Silicon with a separate check of the final page. Skip it if your workflow needs frames, uploads, or unattended robot-check handling.

We ran it

Lab card: what happened when we ran laya-ultrafastScreenshot of laya-ultrafast (github.com/ipenywis/laya-ultrafast)
Install✓ · 13s57 packages · 150 MB
Build✓ · 1s
Tests✓ · 3s51 passed · 0 failed of 51 (pytest)
Known vulns0(pip-audit)
Repo43 files~3,037 lines of source · 2.7 MB · 0 CI workflows · tests dir

Answers from our run

Does laya-ultrafast build from source?

Dependencies installed in 13 seconds (57 packages), and the build succeeded in 1 seconds. We cloned commit 571431b into a clean Debian container with 3 CPUs and no project-specific setup.

Do laya-ultrafast's tests pass?

Yes: 51 of 51 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does laya-ultrafast have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use laya-ultrafast?

Linux, Windows, or Intel Mac users needing the local Laya path: the README requires Apple Silicon and MLX.

What are the alternatives to laya-ultrafast?

Jev Ultrafast, Browser Use, Playwright. Our Laya Ultrafast run installed 57 packages in 13 seconds and passed all 51 tests, but the suite substitutes a fake model for local inference.

Setup3/513-second install passes; real use needs a Mac, weights, and Chrome
Docs4/5Clear hardware, planner, browser, and unsupported-control guidance
Community2/5253 stars and one open adapter PR after a September 22 push
Maturity2/551 offline tests pass; narrow site evidence and no CI workflows

Who it’s for

Mac developers trying local model decisions for narrow search and form tasks.
Browser-agent builders who want to inspect a small Python policy and verify the resulting page themselves.
Users willing to configure a local text server so both planning and decisions stay on their machine.

Who it’s NOT for

Linux, Windows, or Intel Mac users needing the local Laya path: the README requires Apple Silicon and MLX.
Teams automating uploads, frames, shadow roots, canvas, or pop-up tabs: the README explicitly excludes these controls.
Unattended Skyscanner jobs: the documented robot check requires a person to intervene.
Applications treating DONE as proof of completion: the README requires independent final-page verification.

Setup reality

Our sandbox installed commit 571431b in 13 seconds, adding 57 packages and occupying 150 MB. The build passed in 1 second, and pytest passed in 3 seconds with 51 passed and 0 failed. Pip-audit reported 0 known vulnerabilities.

Useful browsing also needs the Laya checkpoint, Chrome remote debugging through Browser Harness, and a text-model endpoint. Remote planning needs TEXT_MODEL_API_KEY. A localhost OpenAI-compatible server can replace that credentialed path.

The local decision runtime requires an Apple Silicon Mac, macOS 14 or newer, and Python 3.12 or newer. Our Debian suite used a fake Laya model, so passing it does not verify Mac inference or live browser-task success. The scan found 0 CI workflows and no Dockerfile.

Local browser decisions still need an Apple Silicon Mac

Laya Ultrafast can install cleanly on Debian while its actual decision model remains tied to a Mac. Our checkout occupied 2.7 MB, and the Python environment grew to 150 MB. That makes the code approachable, but the hardware restriction decides whether you can use it. The project README requires Apple Silicon because local decisions run through MLX. A Linux server passing the offline suite does not establish that it can run the local agent.

The port takes Browser Use's Jev Ultrafast browser loop and replaces its hosted decision calls with Laya. A separate text model turns your goal into field values and a finish condition. Laya then answers narrower questions, such as which field means destination or which suggestion matches London. Rules connect those answers into actions. This is most appealing when you already have the right Mac and want to keep repeated decisions local.

What happened when we ran it

Our run installed commit 571431b in 13 seconds, adding 57 packages and using 150 MB on disk. The build succeeded in 1 second. Pytest finished in 3 seconds with 51 passed and 0 failed. We ran the October 9, 2026 check in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Pip-audit reported 0 known vulnerabilities.

Those 51 passing tests support a narrower conclusion than the name suggests. The offline policy tests replace Laya with a fake model, so they can check action selection and state handling without downloading weights or making paid calls. The supplied measurements contain no browser-task latency or success rate. They show that installation, packaging, and the available suite worked in our sandbox. They leave real inference and website behavior for a separate trial.

The planner can still send your goal to a hosted model

The 57-package installation does not include a decision about where planning happens. By default, the text endpoint points to OpenRouter and requires TEXT_MODEL_API_KEY. You can instead set TEXT_MODEL_BASE_URL to a local OpenAI-compatible server, such as Ollama. With that choice and cached Laya weights, planning and decisions can stay on your machine. Websites the browser visits still receive its requests.

Follow the quick start beyond uv sync: download the named Hugging Face checkpoint, configure the planner, and connect Chrome through Browser Harness. Chrome needs remote debugging enabled, and the README supplies browser-harness --doctor for connection problems. The inspector gives you a way to watch the agent work. I would start with a separate browser profile and a harmless search task, then check whether its chosen fields match what you intended.

A DONE decision needs an independent page check

Our 3-second test step cannot certify that a flight search returned the right itinerary. The README explicitly warns that a DONE decision is not proof of success. Its flight examples inspect the final page independently and stop before selecting or booking a flight. That separation is worth keeping in your own integration: finishing the action loop and satisfying the user request are different events.

The model's job is deliberately constrained. It chooses among elements the agent observed instead of inventing a target. The inherited executor also checks whether the page is fresh and a target is covered. Those checks can prevent some bad clicks, but they do not establish that the goal was understood. For a search, verify the query and returned item. For a form, inspect saved values before allowing any consequential submission.

Frames, uploads, and robot checks remain outside the useful path

The 51-test result should not outweigh the README's explicit exclusions: shadow roots, frames, canvas, uploads, pop-up tabs, nested scrolling, and arbitrary keyboard widgets. If your internal app depends on a framed editor or an upload flow, that is a reason to choose another approach immediately. Testing a supported hotel fixture will not make those unsupported controls usable. Map your actual screens against this list before investing in integration.

Skyscanner adds another boundary. The README says the agent stops at its robot check and expects you to solve it in everyday Chrome. That makes attended browsing a better fit than unattended travel scraping. Planning can also return malformed JSON, for which the project retries. A local decision model removes repeated decision API calls, but it does not remove planner errors or a website's ability to block automation.

The small checkout has a small maintenance record

The repository was last pushed on September 22, 2026, and GitHub showed 253 stars on October 12. The sole open item was pull request 2, updated September 27, proposing CLI-backed planning through Codex or Claude. It remained open, so that adapter should not influence an adoption decision as an available feature. GitHub's latest-release endpoint returned no release. Together, these facts describe a young port with limited visible follow-up, not proof of abandonment.

Our scan found 0 CI workflow files and no Dockerfile in the 43-file checkout. Choose the original Jev Ultrafast when you want its hosted policy, or Browser Use when you want a different general browser-agent framework. Playwright is the better choice for flows you can script explicitly. For Laya, make the adoption gate one complete task on your Mac, checked against the resulting page. Keep that check after every change to the planner or website.

Alternatives

ProjectWhat it isPick it when
Jev Ultrafast gh↗The original browser agent with hosted Jev decisions.pick this instead when you want the original hosted decision policy rather than the local MLX port.
Browser Use gh↗A separate framework for model-driven browser agents.pick this instead when you want to evaluate a broader browser-agent framework against your own workflows.
Playwright gh↗A framework for scripted browser automation and testing.pick this instead when you can specify the browser flow explicitly and want to own its assertions.

What people are saying

  1. [velocity-scout] ipenywis/laya-ultrafast

Sources

  1. Laya Ultrafast README and limitations
  2. Offline Laya policy tests at measured commit
  3. CLI-backed planning proposal, open pull request 2
  4. Repository metadata
  5. GitHub release history

More automation reviews

supersidian · genspark-claw · orc-claude-plugin · tiktok-views-bot · Ydisks-Xianyu-Helper · jev-gui-delegate · the whole board →