A Chromium-based browser
for developers and automation.

A real Chromium binary with source-level Chromium modifications for consistent, reproducible behavior across supported platforms. Not a config tweak, not a JavaScript layer — it is a real browser.

Drop-in Playwright/Puppeteer replacement for Python and JavaScript. Same API, same code. 3 lines of code to get started.

CloakBrowser includes a free public version, with Pro subscriptions available for latest releases, updates, and support.

Platforms: Linux x64 v146 · Linux ARM64 v146 · macOS Intel v145 · macOS Apple Silicon v145 · Windows x64 v146
$ pip install cloakbrowser
$ npm install cloakbrowser
$ docker run --rm cloakhq/cloakbrowser cloaktest

Start in three lines

Same Playwright/Puppeteer API you already know. Just swap the import.

from cloakbrowser import launch

browser = launch()
page = browser.new_page()
page.goto("https://example.com")
browser.close()
import { launch } from 'cloakbrowser';

const browser = await launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
import { launch } from 'cloakbrowser/puppeteer';

const browser = await launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();

Migrating? One line change.

- from playwright.sync_api import sync_playwright
- pw = sync_playwright().start()
- browser = pw.chromium.launch()
+ from cloakbrowser import launch
+ browser = launch()

page = browser.new_page()
page.goto("https://example.com")
# ... rest of your code works unchanged

Why CloakBrowser?

Built from Chromium with source-level modifications for consistent behavior and automation compatibility.

🔧

Source-level patches

58 C++ patches compiled into the Chromium binary. Not JavaScript injection, not config flags. Canvas, WebGL, audio, fonts, and GPU behavior are handled at the browser source level for consistency and reproducibility — because it is a real browser.

🛡

Browser and driver consistency

C++ source modifications keep browser characteristics (GPU, screen, UA, hardware reporting) consistent. The driver layer is designed to keep automation behavior consistent with regular browser sessions. Most tools only do one or the other.

🔄

Drop-in replacement

Same Playwright API. Same Puppeteer API. No new abstractions, no extra services, no new SDK to learn. Change your import, keep your code.

🖱

Interaction timing controls

humanize=True adds optional interaction timing controls for testing realistic user flows. One flag, no extra code.

🤖

Works with any automation framework

Works with Playwright, Puppeteer, Selenium, and AI browser-agent workflows.

📦

Production-ready

Docker image, timezone configuration, persistent browser profiles, Chrome extension loading, and a binary management CLI. Everything you need to deploy at scale.

CloakBrowser is a browser environment, not an automation service. It bundles no third-party solving services and no network rotation — use it within your own environment, with the Playwright API you already know.

How it works

A thin wrapper around a custom-built Chromium binary.

Install

pip install cloakbrowser or npm install cloakbrowser

First launch

Binary auto-downloads for your platform (~200MB, cached locally)

Every launch

Playwright or Puppeteer starts with our binary + launch args

Write code

Standard Playwright/Puppeteer API — nothing new to learn

58 source-level patches

Canvas behavior WebGL renderer Audio behavior Font enumeration Hardware concurrency Client rects GPU vendor/renderer Screen properties Automation compatibility Device memory WebGPU adapter Driver input behavior Timezone

Compiled into the binary — not injected via JavaScript, not set via flags.

Now Available

v0.3.31 — Chromium 146

Chromium 146 on Linux and Windows, 145 on macOS. 58 source-level patches, optional interaction timing, CDP input handling, binary management CLI.

58 source patches Linux + Windows
consistency layers binary + driver
CDP-compatible driver layer
Optional interaction timing CDP input handling Persistent browser profiles Docker Hub image Cross-platform profile consistency Timezone configuration Binary management CLI