Bezlo — open agent layer
Bezlo puts any web page inside a true-to-size iPhone / iPad / Android frame and lets an
AI agent see it and act on it: screenshots, interactive-element lists, layout
diagnostics (overflow, safe-area, touch identity), console/page errors, network mocks,
tap/type/scroll flows, device matrix runs — and report.json / JUnit / mp4 evidence.
This repository is the MIT-licensed agent layer:
mcp/— MCP stdio server + CLI + session/capture engine (also on npm asbezlo-mcp)action.yml+examples/— composite GitHub Action (PR screenshots + JUnit + video)skill/— thebezlo-previewskill for Claude Code / skills-compatible agentsserver.json— official MCP registry manifestdocs/MCP.md— full tool reference
The Chrome extension itself is proprietary and lives in a separate private repo
(extension/, store art, brand). This repository contains no extension code, store
assets or brand artwork. The name Bezlo and its logo are not licensed for reuse.
Install
# MCP (Claude Code / Claude Desktop / Cursor)
npm install -g bezlo-mcp
claude mcp add bezlo -- npx -y bezlo-mcp
# or run from a checkout
node mcp/cli.mjs --list
The package bundles no browser: install Chrome/Chromium (or set RP_CHROME). Chrome for
Testing is recommended; WebKit mode additionally needs npx playwright install webkit.
Quick CLI
node mcp/cli.mjs --url http://localhost:3000 --device iphone16 --out shot.png
node mcp/cli.mjs --url http://localhost:3000 --matrix --devices iphone16,ipadpro11,px10 --out ./matrix
node mcp/cli.mjs --url http://localhost:3000 \
--actions '[{"type":"click","text":"Sign in"},{"type":"type","selector":"#email","value":"a@b.c","submit":true}]' \
--record --assert '[{"type":"noOverflow"},{"type":"noConsoleErrors"}]' --out after.png
GitHub Action
- uses: gba3124/bezlo@main
id: bezlo
with:
url: http://localhost:3000
device: iphone16
steps: '[{"type":"click","text":"Sign in"}]'
asserts: '[{"type":"noOverflow"},{"type":"noConsoleErrors"}]'
record: 'true'
Artifacts: final screenshot, report.json, junit.xml, optional mp4/gif.
Outputs: pass, report, junit, video, gif, screenshot, artifacts.
Engines
- chromium (default) — Chrome's own emulation engine (same as the extension's frames): real touch, mobile UA and client hints, DPR; full recording and CDP accessibility.
- webkit — Playwright WebKit, a Safari-flavoured approximation (not real iOS Safari; no recording / CDP a11y).
License
MIT — see LICENSE. The Chrome extension, store assets and the Bezlo brand are not
covered by this license and are not part of this repository.