x5browser — hidden Chrome + VNC live link + agent tools
pip install x5browser # core only (CDP + live view)
pip install "x5browser[annotate]" # + Pillow for screenshot(annotate=true)
from x5browser import LiveBrowser
live = LiveBrowser() # hidden Chrome (WSL on Windows) + VNC link
await live.start()
print(live.live_url) # minimal noVNC page, open / embed in <iframe>
await live.navigate("https://example.com") # tools return result + screenshot
await live.take_control() # user drives the same browser
await live.agent_control() # agent resumes with fresh observe
await live.stop()
- Live: the remote Chrome in any browser tab or
<iframe>(x5-live.html— no toolbar, no scrollbars, no fixed size: the screen fills its host, scales to it and re-scales when the host changes size, showing a spinner with the word "Loading" until the stream is drawn). Any VNC player can attach to the same machine atvnc://<host>:5900. Embed:<iframe src="...live_url..."></iframe>. - Tools: an acting tool answers with its output plus one image taken
after the event (
ActionResult(ok, message, screenshot)); a read-only tool answers with data only (text/JSON, never an image). The page map is never attached: ask for it withpage_snapshot/find_elements. - Profile: created on first start, reused afterwards.
close_profile()onX5Browsercloses Chrome quietly, data is kept.
Setup (once)
python scripts/setup_local.py
Starts Xvfb + headed Chrome + x11vnc + noVNC + CDP relay inside WSL (Ubuntu) and publishes them on Windows localhost (6080/5900/9334).
Demo page (optional)
scripts/agent_popup_demo.html is a tiny page with three real popups
(alert, prompt, in-page dialog) for trying the tools by hand.
Tool console + live gate (one command)
python scripts/run_ui.py # stack + UI on http://127.0.0.1:8790/
http://127.0.0.1:8790/— the tool console: one section per tool, each with its own inputs, a Test button, the organized JSON log and the returned image. A Test runs the real library tool, never a copy of it.http://127.0.0.1:8790/view?token=...— the live link. Every browser start mints a new token; the old link answers Not Connect, and closing the browser revokes the link automatically.- Tools:
open_browser/close_browser(quiet, data kept) drive the browser, and any other tool opens it by itself when it is closed. human_controlanswers the control link (the user drives),live_previewanswers a watch-only link.
Metadata
Release files for X5Browser 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| x5browser-1.0.0.tar.gz | 130.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| x5browser-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 248.2 kB
Release files / x5browser-1.0.0.tar.gz
| Download URL | x5browser-1.0.0.tar.gz |
|---|---|
| Size | 130.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
da6f76d1b7d01565af71a6cb832358c0f5fcf50710338c0d683f7de6eed74df3
|
|
BLAKE2b-256 checksum How to use checksums |
b68cc6e5160d402446bebeb0b968ddbbd9f8f8b8b26a84e9e15e7f648878abfb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / x5browser-1.0.0-py3-none-any.whl
| Download URL | x5browser-1.0.0-py3-none-any.whl |
|---|---|
| Size | 117.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0bda480bc26cc98f7dc6526760d4a81d1ed878d54698ef515209230326a505b6
|
|
BLAKE2b-256 checksum How to use checksums |
cd261046d9da0b1c9e6d98dbe2c05dbc6b8756f80c527017b1f37b88b4b2611e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|