Quickstart (Local)
Get rayobrowse running locally in under 5 minutes. All you need is Docker and any CDP client (Playwright, Puppeteer, Selenium, etc.) — no SDK required.
-
Set up environment
Terminal window git clone https://github.com/rayobyte-data/rayobrowse.gitcd rayobrowsecp .env.example .envOpen
.envand setSTEALTH_BROWSER_ACCEPT_TERMS=trueto accept the license. -
Start the container
Terminal window docker compose up -dDocker automatically pulls the correct image for your architecture (x86_64 or ARM64).
-
Verify it’s running
Terminal window curl http://localhost:9222/health# Should return: {"success": true, "data": {"status": "healthy", ...}} -
Connect and automate
Point any CDP client at the
/connectendpoint — rayobrowse creates a fresh browser on connection and cleans it up when you disconnect.# pip install playwright && playwright installfrom playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.connect_over_cdp("ws://localhost:9222/connect?headless=false&os=windows")page = browser.new_context().new_page()page.goto("https://example.com")print(page.title())browser.close()// npm install playwrightconst { chromium } = require('playwright');(async () => {const browser = await chromium.connectOverCDP('ws://localhost:9222/connect?headless=false&os=windows');const page = await browser.newPage();await page.goto('https://example.com');console.log(await page.title());await browser.close();})();// npm install puppeteer-coreconst puppeteer = require('puppeteer-core');(async () => {const browser = await puppeteer.connect({browserWSEndpoint: 'ws://localhost:9222/connect?headless=false&os=windows',});const page = (await browser.pages())[0] || await browser.newPage();await page.goto('https://example.com');console.log(await page.title());await browser.disconnect();})();# pip install seleniumfrom selenium import webdriverfrom selenium.webdriver.chromium.options import ChromiumOptionsoptions = ChromiumOptions()options.debugger_address = "localhost:9222"driver = webdriver.Remote(command_executor="http://localhost:9222/connect?headless=false&os=windows",options=options,)driver.get("https://example.com")print(driver.title)driver.quit()
View the browser live at http://localhost:6080/vnc.html (noVNC).
Next steps
Section titled “Next steps”- /connect parameters — customize fingerprints, proxy, headless mode
- Configuration — environment variables, ports, noVNC
- SDKs — optional Python and Node.js clients for programmatic control
- Integrations — Playwright, Puppeteer, Selenium, OpenClaw, Scrapy