// veilbrowser · open-source · MIT

The stealth browser that keeps your agents alive.

Veil drives real Chrome over raw CDP for AI agents — no Playwright, no Puppeteer, no WebDriver, zero runtime dependencies. To Cloudflare, Google, and every bot-check, Veil is Chrome. We don't reimplement the browser — we replace the automation layer that gets your agent caught.

$ bun add github:acunningham-ship-it/veilbrowser
57/57
bot.sannysoft.com
Cloudflare ✓
walks the JS challenge
0
runtime dependencies

Not an "anti-detect browser." Veil isn't a multi-accounting or ban-evasion tool. It's a developer runtime for AI agents and MCP hosts — TypeScript-native, accessibility-tree driven, built so an LLM can operate a real browser on real sites. Different job, different audience.

// why_veil

Everything Playwright leaks, Veil doesn't.

Undetectable by design

No navigator.webdriver, no automation switches, no Runtime.enable tell. Self-gating patches fire only when a value is genuinely anomalous — over-patching is itself a signature, so Veil doesn't.

Agent-first, not selector-first

An accessibility-tree snapshot returns stable integer refs — your agent never writes a brittle CSS/XPath selector. Human-like mouse (Bézier paths, eased timing) and real keystroke cadence.

MCP-native

Ships an MCP server, so any agent host gets stealth browsing as tools with zero glue — snapshot, click, fill, press, scroll, upload, and more.

"Sign in with Google" (FedCM)

Drives the native federated account chooser over CDP — agents are otherwise walled out of Google-SSO apps entirely. Veil is one of the only runtimes that can.

No localhost / LAN leak

Blocks visited sites from port-scanning your localhost, private network, and tailnet — on by default. Your agent browses; the page can't reach back into your machine.

Zero dependencies

Node 24 / Bun ship a global WebSocket, so the entire CDP transport is ~120 lines Veil owns. Nothing to patch, nothing to leak, MIT-licensed.

// quick_start

Running in three lines.

# install (Bun + Chrome/Chromium on PATH)
bun add github:acunningham-ship-it/veilbrowser

# or from npm
npm i @achamm/veilbrowser

# drive real Chrome
import { Browser } from "@achamm/veilbrowser";
const page = await (await Browser.launch()).newPage();
await page.goto("https://example.com");
const tree = await page.snapshot(); // a11y refs the agent can act on

Free, open-source, and part of HamTek's agent toolware.

Star it on GitHub More HamTek tools