o-browser
Python async browser automation client built on Patchright.
Install
pip install o-browser
Usage
from o_browser import BrowserClient, RemoteBrowser
# Local headless browser
async with BrowserClient() as browser:
await browser.goto("https://example.com")
text = await browser.get_text()
# Persistent Chrome profile (cookies survive between runs)
async with BrowserClient(profile_path="~/.config/browser/linkedin") as browser:
await browser.goto("https://linkedin.com")
# With recording (HAR + video)
async with BrowserClient(record=True) as browser:
await browser.goto("https://example.com")
# Interactive (opens browser window, waits for user to close)
async with BrowserClient(interactive=True) as browser:
await browser.wait_closed()
# Connect to remote Chrome (e.g. o-browser-full)
# RemoteBrowser auto-creates a session via POST /api/sessions if none active.
async with RemoteBrowser("http://host:8080", workflow="my-app") as browser:
await browser.goto("https://example.com")
# Disable auto-session if you manage sessions yourself
async with RemoteBrowser("http://host:8080", auto_session=False) as browser:
...
Features
- Headless and headful modes
- Persistent Chrome profiles
- HAR + video recording (HAR captured Python-side, survives the user closing the window in interactive mode)
- Proxy support
- Cookie management
- CDP connection to existing Chrome instances
- Anti-detection via Patchright
Site adapters (plugins)
Site-specific scrapers are separate distributions, not bundled in core. Each registers in the
o_browser.sites entry-point group and is discovered at runtime:
from o_browser import load_site, available_sites
available_sites() # -> ['vivatech', ...] (installed adapters)
VivaTechClient = load_site("vivatech") # pip install o-browser-vivatech
Scope — kept & consolidated as the local-CLI browser
o-browser is the canonical, kept browser lib of Otomata, consolidated as the local-CLI browser tooling: disco/scraping on your own machine, where a local Chrome (persistent profiles + anti-detection + HAR) is all you need.
Server-side browser automation in production runs on the hosted Browserbase substrate (cf. oto-backend) — a real remote Chrome with persistent Contexts and Live View, off-box (anti-OOM). The former self-hosted remote-Chrome service o-browser-full (VNC + CDP proxy + recording) is archived/decommissioned: it overlapped Browserbase entirely and is never needed locally. It stays re-hostable for a sovereign self-hosted setup, which we don't run.
Release files for o-browser 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| o_browser-0.4.1.tar.gz | 19.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| o_browser-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.1 kB
Release files / o_browser-0.4.1.tar.gz
| Download URL | o_browser-0.4.1.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2e05526b082e9a8f1b64d72d5928bfb028f78112b3f1fbcf112e0c055c50b3f3
|
|
BLAKE2b-256 checksum How to use checksums |
19b87a0b259258ae2479d5d622679ef9cf29e085c759de2b899b67609ccd7a4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / o_browser-0.4.1-py3-none-any.whl
| Download URL | o_browser-0.4.1-py3-none-any.whl |
|---|---|
| Size | 14.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c330e5abf9fb9cf01051b7a353f4b17cd14bca76592ee7d20798dd6e02cbd4b0
|
|
BLAKE2b-256 checksum How to use checksums |
2050efaeb80488f36c4454a8a5cedada256270a9cda1e2867aad98573fcae38a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log