clearcote-browser
AGENTS.md236 starsChanged yesterdayBSD-3-ClauseView on GitHub
Agents open this repository for one of two reasons: Clearcote is a Chromium build with its fingerprint controls in the engine. It is driven by Playwright, Puppeteer or any Chrome DevTools Protocol (CDP) client. Install the SDK; it downloads the browser on first use and checks its SHA-256, so playwright install is not needed. - Keep the existing Playwright code. Replace only the chromium.launch(...) call with launch(...). - Tools that take a CDP URL (browser-use, Crawl4AI, Playwright MCP, Puppeteer): start…
- Reads credentials
- Installs packages
We split this AGENTS.md into the rules it gives an agent
8 rules. About 1 is common, 6 are distinctive, and 1 is very specific to this project.
≈1
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Common: line 91
No secrets, no blobs: Never commit credentials, tokens, or opaque binaries.
- Distinctive: line 92
Privacy-relevant patches are mandatory: Do not drop a privacy/identity patch to make a build pass.
- Very specific: line 114
Add it to patches/series in the right order.
- Distinctive: line 116
Document the intent in the patch header and your PR.
- Distinctive: line 120
Prefer small, reviewable PRs with a clear description of intent and verification steps.
- Distinctive: line 121
Never introduce network calls that phone home or fetch unverified code at runtime.
- Distinctive: line 122
If a change affects what the browser exposes to websites, say so explicitly and explain the privacy reasoning.
- Distinctive: line 123
When in doubt, open an issue to discuss before large changes.
≈ “Common” is an estimate: at least 1 in 5 of the 36,368 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md — guide for automated tools and contributors
Agents open this repository for one of two reasons:
- To use Clearcote in a project (scraping, testing, an AI agent that needs a browser): read Using Clearcote in a project.
- To work on Clearcote itself (patches, build, SDK code): skip to What this project is.
Using Clearcote in a project
Clearcote is a Chromium build with its fingerprint controls in the engine. It is driven by Playwright,
Puppeteer or any Chrome DevTools Protocol (CDP) client. Install the SDK; it downloads the browser on first
use and checks its SHA-256, so playwright install is not needed.
pip install clearcote # Python
npm install clearcote # Node.js / TypeScript
dotnet add package Clearcote # .NETfrom clearcote import launch # asyncio: from clearcote.async_api import launch
browser = launch(fingerprint="user-7423", platform="windows") # returns a standard Playwright Browser
page = browser.new_page()
page.goto("https://example.com")
browser.close()- Keep the existing Playwright code. Replace only the
chromium.launch(...)call withlaunch(...). - Tools that take a CDP URL (browser-use, Crawl4AI, Playwright MCP, Puppeteer): start an endpoint with
serve()orclearcote-serve --port 9222, then connect tohttp://127.0.0.1:9222. - One seed per identity. The same
fingerprintstring returns the same machine on every launch; a new string gives a new, unlinked one. - Do not add stealth plugins (
puppeteer-extra-plugin-stealth,playwright-stealth). They patch values from JavaScript and conflict with the persona set in the engine. - Selenium and WebDriver are not supported. Clearcote is driven over CDP.
- Hosted browsers:
launch(cloud=True, country="us")withCLEARCOTE_API_KEYset runs the browser on Clearcote's servers and returns the same PlaywrightBrowser.
To give an assistant (Claude, Cursor, Cline) a browser over MCP:
{ "mcpServers": { "clearcote": { "command": "npx", "args": ["-y", "clearcote-mcp"] } } }References: llms.txt · SDKs: Python, Node,
.NET · MCP server: mcp/ · Docker: docker/ · docs: https://www.clearcotelabs.com/docs
What this project is
Clearcote Browser: an open-source, reproducible Chromium build with engine-level privacy/identity controls. Base is ungoogled-chromium; changes are delivered as readable source patches. Builds target Windows x64 and Linux x64 and are produced on a Linux host (native for Linux, cross-compiled for Windows).
Repository layout
clearcote-browser/
├── README.md # what/why, quickstart, credits
├── llms.txt # summary for AI tools
├── ROADMAP.md # phased plan
├── AGENTS.md # this file
├── CONTRIBUTING.md # contribution workflow
├── CREDITS.md # upstream attributions + licenses
├── DISCLAIMER.md # responsible use + legal
├── SECURITY.md # reporting vulnerabilities
├── UPSTREAM_REVISION # pinned Chromium revision the patches target
├── build.sh # one-shot Linux cross-build orchestrator
├── Dockerfile # reproducible build environment
├── scripts/ # numbered build stages (00-05) + release and CI checks
├── patches/ # Clearcote's source patches (unified diffs) + series
├── config/ # args.gn and build configuration
├── sdk/ # SDKs: python/, node/, dotnet/ (published as `clearcote` / `Clearcote`)
├── mcp/ # MCP server (`clearcote-mcp`)
├── docker/ # the CDP-endpoint Docker image
├── tools/ # fingerprint collector, canvas bridge server
└── docs/
├── BUILDING.md # build from source
├── VERIFY.md # verify a release
├── RELEASING.md # maintainer release runbook (canonical)
├── PATCHES.md # patch-set overview
├── RESEARCH.md # design research
└── RESEARCH-DOSSIER.md # deep build/stealth dossierConventions
- Patches over forks. Changes to Chromium are unified diffs under
patches/, listed inpatches/series, applied with the ungoogledpatches.pytooling. Keep one logical change per patch with a descriptive name and a header comment explaining why. - Pin everything. Patches target the revision in
UPSTREAM_REVISION. If you bump it, re-test the whole series and update both together. - Engine-level, not JS injection. Identity/privacy behavior belongs in compiled code, not in injected scripts.
- No secrets, no blobs. Never commit credentials, tokens, or opaque binaries. The tree is source + text patches only.
- Privacy-relevant patches are mandatory. Do not drop a privacy/identity patch to make a build pass; fix the patch.
Common commands
# Apply the full patch set onto a prepared Chromium source tree
python3 <ungoogled>/utils/patches.py apply build/src ./patches
# Configure + build
cp config/args.gn build/src/out/Default/args.gn
( cd build/src && gn gen out/Default && ninja -C out/Default chrome )
# Hash an artifact
sha256sum out/Default/<artifact>See docs/BUILDING.md for the complete pipeline and docs/VERIFY.md for verification.
Adding or fixing a patch
- Make the source change in
build/src. - Generate a clean unified diff and place it under
patches/with a clear name. - Add it to
patches/seriesin the right order. - Re-run a full apply on a clean tree to confirm it applies without rejects.
- Document the intent in the patch header and your PR.
Ground rules for automated contributors
- Prefer small, reviewable PRs with a clear description of intent and verification steps.
- Never introduce network calls that phone home or fetch unverified code at runtime.
- If a change affects what the browser exposes to websites, say so explicitly and explain the privacy reasoning.
- When in doubt, open an issue to discuss before large changes.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 28,693 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repositoryOne other file it gives its agents.
- llms.txtllms.txt
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

