Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (browserground) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
browserground
Drop-in local UI grounding for AI agents. Qwen3-VL-2B LoRA. Strict-JSON bbox output. Runs locally on Apple Silicon / CUDA / CPU.
What you get
browserground parse screenshot.png --target "Submit button"
# {"bbox_2d": [344, 612, 478, 658]}A single-line strict-JSON bbox of the element to click. No markdown fences. 100% format compliance on the eval set.
Install
npm install -g browserground
# or: bun install -g browsergroundPrerequisites
The CLI shells out to Python for inference. Install once:
# Option A (recommended): uv
brew install uv # or: pipx install uv
uv pip install --system 'torch>=2.4' 'transformers>=4.55' 'peft>=0.13' huggingface_hub pillow
# Option B: pip
pip install 'torch>=2.4' 'transformers>=4.55' 'peft>=0.13' huggingface_hub pillowOn first browserground parse, the model auto-downloads from Hugging Face to ~/.cache/huggingface/:
- base
Qwen/Qwen3-VL-2B-Instruct(~4.3 GB) - LoRA adapter
renezander030/browserground(~67 MB)
Usage
# one-shot (loads model each call — slow first time)
browserground parse screenshot.png --target "Submit button"
# daemon mode (loads once, fast subsequent calls)
browserground serve &
browserground parse a.png --target "Chrome icon"
browserground parse b.png --target "the back arrow"
browserground stop
# raw model output (for debugging)
browserground parse screenshot.png --target "X" --text
# status
browserground statusHooks
Claude Code
In a repo with .claude/skills/, drop the file at plugins/claude-code/SKILL.md into .claude/skills/browserground/SKILL.md. Claude Code will route screen-grounding prompts to the CLI automatically.
Codex CLI
Add to your AGENTS.md per plugins/codex/AGENTS.md.
browser-use (Python)
import subprocess, json
def ground(screenshot_path, target):
out = subprocess.check_output(["browserground", "parse", screenshot_path, "--target", target])
return json.loads(out)["bbox_2d"]Benchmark
ScreenSpot-v2 point-grounding accuracy (300 items, 100/split: mobile / desktop / web):
| Model | Params | Overall | Mobile |
|---|---|---|---|
| GPT-4o (cloud) | — | 18.3% | — |
| browserground v0.1 | 2 B | 45.3% | 64.0% |
| SeeClick | 9.6 B | 55.1% | — |
| ShowUI-2B | 2 B | 75.5% | — |
| UI-TARS-2B-SFT | 2 B | 89.5% | — |
v0.1 is a one-epoch / 12k-example fine-tune intended to validate the recipe. v0.2 (Tier 2) is in progress with target ≥ 60%.
Limitations
- v0.1 desktop & web accuracy lag mobile (training mix is mobile-heavy)
- English-only training data
- Single-target per call (batch mode in v0.2)
- No mouse-action prediction (only location)
License
Apache 2.0.