vibatchium
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vibatchiumLog in with the vault credentials and extract the data from the protected page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vibatchium
Agent-piloted browser automation that clears Cloudflare. Patched Playwright + multi-session daemon + credential vault + vision clicking + prompt-injection safety. One MCP server, N parallel Chromes, persistent per-session profiles.
pipx install vibatchium # core: browse / extract / screenshot / N parallel sessions
# want the stealth HTTP fetch lane (vb fetch), the credential vault, VLM read, or the REST shim?
pipx install 'vibatchium[all]' # everything; or pick extras: vibatchium[fetch], [secrets], [llm], [rest]
patchright install chrome
vb setup # register MCP + an auto-discoverable skill so agents reach for vb (idempotent)Core install covers all browsing. vb fetch (the curl_cffi TLS-fingerprint lane) is the
[fetch] extra; vb install reports which optional lanes are available. On a uv venv
(no pip), add an extra with uv pip install --python <venv>/bin/python curl_cffi.
Bleeding edge from
master:pipx install 'git+https://github.com/trueoriginlabs/vibatchium#egg=vibatchium[all]'
Coding agents (Codex / Cursor / Claude Code): read
AGENTS.mdfirst — it has the one-call recipes (explore,research) and the env-discovery traps to skip.
vb explore https://example.com # one-call: text-first (screenshot only as a fallback)
vb research --target https://example.com \ # parallel fan-out, N intents
--intent "pricing model" --intent "customers" --intent "tech stack"Status: active development, alpha. 606 tests green. 31/31 on bot.sannysoft.com. Cleared HackerOne Cloudflare cold-launch. Apache-2.0 (AGPL only via the opt-in nodriver extra).
Updating
vb update # upgrade to the latest PyPI release + restart the daemon
vb update --version 0.6.8 # or pin a specific versionvb update detects how vibatchium was installed (pipx, uv tool install,
a pip-less uv venv, or pip with a PEP-668 --break-system-packages fallback)
and then stops the running daemon so the next command loads the new code.
Manual equivalent:
pipx upgrade vibatchium # or: uv tool upgrade vibatchium / pip install -U vibatchium
vb shutdown # bounce the daemon — it serves old code until you do
vb --version # confirmThe daemon-restart step is the one people miss: the long-running daemon keeps serving the old version until it's bounced.
vb updatedoes it for you; if you upgrade by hand, runvb shutdown(the nextvbcall auto-respawns the new version). Optional features upgrade viapipx install 'vibatchium[all]' --force.
Related MCP server: @meshbrow/mcp-server
Why vibatchium
Vibium | Patchwright | Browser-Use | vibatchium | |
LLM-friendly | ✅ | ❌ | ❌ | ✅ |
Cloudflare CDP-leak patches | ❌ | ✅ | ❌ | ✅ |
Multiple parallel browsers, one daemon | ❌ | manual | ❌ | ✅ |
Per-session persistent profile (cookies, login) | ✅ | manual | manual | ✅ |
CDP-attach to manually-logged-in Chrome | ❌ | manual | ❌ | ✅ |
Encrypted credential vault (passwords + TOTP) | ❌ | ❌ | ❌ | ✅ |
IMAP email-code polling (2FA) | ❌ | ❌ | ❌ | ✅ |
Per-session proxy + WebRTC leak guard | ❌ | manual | ❌ | ✅ |
Vision-first clicking with spend cap | ❌ | ❌ | ✅ | ✅ |
Prompt-injection classifier on scraped content | ❌ | ❌ | ❌ | ✅ (0% FP / 204 samples) |
Live-view stream with takeover (WebSocket) | ❌ | ❌ | partial | ✅ |
Bearer-token REST shim + caps gating | ❌ | ❌ | manual | ✅ |
| ❌ | ❌ | ❌ | ✅ |
Real Chrome vs fake Chrome
A wave of "headless browser for AI agents" tools rebuild the browser from scratch (Rust + V8, no Blink/Skia) to hit tiny memory and sub-100ms page loads. The catch is structural: with no rendering engine, they can't produce a real device's fingerprint — they synthesize one. And synthetic fingerprints don't hold still.
vibatchium drives real Google Chrome, so its fingerprints are real — and, more to the point, stable. The single test that separates the two is fingerprint stability across navigations. Run the same canvas + WebGL probe on two pages in one session:
vibatchium (real Chrome) | synthesized-fingerprint engines | |
canvas hash, page A → page B | identical | reseeded per navigation |
WebGL | real, deterministic pixels | often |
WebGL renderer | a real ANGLE renderer¹ | stub / zeros |
¹ Chrome's own software renderer (SwiftShader) by default — still a coherent, deterministic Chrome value, not a stub. A hardware-GPU string (e.g. ANGLE (Intel …)) needs the opt-in --gpu flag.
A real device returns the same fingerprint every page load; a fingerprint keyed
off Date.now() does not — and that inconsistency is exactly what lie-detection
fingerprinters (CreepJS and friends) flag. Measured: vibatchium's canvas hash and
WebGL readback are byte-identical across navigations, and CreepJS reports 0 %
stealth-tampering (no synthetic-environment signatures).
This is not a claim of invisibility. The moat is fingerprint authenticity,
not hiding that a browser is automated — vibatchium still reads as headless on the
headless-specific tells (see Honest limits), and real-GPU WebGL
(--gpu) is opt-in. But real, consistent fingerprints pass the consistency tier
that synthetic ones fail by construction — and that tier is what stands between
you and a login wall.
Multi-session in 10 lines
vb session new work
vb --session work start
vb --session work go https://github.com # log in by hand once
vb session new banking
vb --session banking start
vb --session banking go https://bank.example.com
vb --session work click @e3 & # truly parallel —
vb --session banking fill @e5 hi & # separate Chromes, no cookie bleed
wait
vb session listActive-session resolution: --session FLAG → $VIBATCHIUM_SESSION env → ~/.config/vibatchium/active-session → default. Cap via VIBATCHIUM_MAX_SESSIONS=8 (default 8).
Multi-agent: shared sessions vs a private daemon
On one shared daemon, sessions give real fingerprint isolation (separate Chromes, no cookie bleed) but share the host: the session count budget, the memory, and the blast radius of an OOM or a daemon bounce. Two models, pick per trust level:
Cooperating agents (your own fleet): the shared daemon is right — just give each concurrent agent a unique
--sessionname so stateful flows don't collide ondefault.vb session leasecoordinates a shared name.A private blast radius: a per-agent daemon on its own socket +
HOME— separate profiles/config/state, its own session budget, zero contact with the shared daemon.vb daemon start --isolatedprints theXDG_RUNTIME_DIR/HOMEto export for subsequent calls;vb mcp --isolatedruns the MCP server on its own private daemon directly.vb daemon reapcleans up abandoned ones. (Same UID = same trust domain — this bounds blast radius, not a security boundary between distrusting tenants; for that, separate UIDs/containers.)
Resource governance. The session cap bounds process count, not bytes. On a
shared box, set VIBATCHIUM_SESSION_RAM_FLOOR_MB to refuse a new launch when free
memory is low (a portable admission belt). For a hard ceiling, run the daemon
under a cgroup — systemd-run --user --scope -p MemoryMax=4G vb daemon start puts
the daemon and all its Chromes in one cgroup sharing the limit: an aggregate
daemon-wide cap (not per-renderer), and a breach OOM-kills inside the scope, which
can include the daemon. It's the only non-racy memory bound, so size it for the
whole fan-out.
Idle CPU. Parked sessions can't burn cores either: the daemon SIGSTOPs a
launched session's renderer processes after VIBATCHIUM_IDLE_FREEZE_AFTER seconds
with no verb (default 90) and thaws them on the next call, so an idle WebGL /
animation page drops to zero CPU without a teardown (default on;
VIBATCHIUM_IDLE_FREEZE=0 disables).
Documentation
AGENTS.md— coding-agent contract (Codex / Cursor / Claude Code)
Server modes
Mode | Surface | Auth |
| stdio JSON-RPC; defaults to the lean ~80-verb profile ( | n/a (stdio) |
| FastAPI on | bearer token ( |
REST capability gating: vb serve --caps=core,nav,input,vision restricts the HTTP surface the same way mcp --caps does. Without it, REST grants local-code-equivalent access (eval + secret_* + file-writing verbs all exposed) — safe for localhost dev, not for hosted/multi-tenant.
Stealth tiers — what clears what
Stealth is a ladder, not a boolean. Pick the lowest tier that clears your target (higher tiers cost more setup / a visible browser / a manual login). vibatchium does not claim cold-launch defeat of behavioral walls — those need a real human-driven session, and attach-mode is the honest answer.
Tier | How | Clears | Doesn't clear |
Standard (default) | headless cold launch, real | Cloudflare IUAM / managed challenge, | aggressive Turnstile, DataDome/Kasada, anything behind a login |
Hardened | retry | aggressive Cloudflare/Turnstile, GPU/screen tells that headless leaves | behavioral biometrics, DataDome/Kasada sensor-fusion |
Attach |
| DataDome / Kasada / HUMAN behavioral walls, and any authenticated session — your real fingerprint + cookies | nothing here is automated cold; it needs the human login first |
Measured scores
vb evals --update-readme writes measured numbers into the block below, so
what we publish is generated rather than asserted. It is empty until someone
runs it — an empty block is honest; a number with no run behind it is not.
No eval run has been published yet. Generate with: vb evals --update-readme
What these do and don't cover. These are fingerprint scoreboards — the static axis. Through 2026 the major anti-bot vendors moved to session-lifetime behavioural scoring, which none of these targets measure, and which we have not measured against any commercial vendor. Treat a good score here as evidence about environment coherence only.
For the behavioural axis itself, vb oracle run is a self-hosted probe: it drives a
page with humanize off then on and grades trajectory curvature, dwell, keystroke
cadence and scroll dynamics against a human-plausible band (vb oracle record
captures a real-operator baseline; literature defaults until you do). It measures
our model of human rather than a named vendor — but it turns "we humanize" into a
measured on/off delta, and it's honest about the one axis synthetic input can't
reach: CDP input emits no raw-pointer / coalesced events, which only attach-mode
against real hardware closes.
Escalation ladder when a wall trips: headless → --headed → humanize on →
--backend nodriver → attach-mode after a manual login. Patchright's CDP-layer
patches apply in all tiers, including attach (connect_over_cdp).
The
fetchverb is an orthogonal fast-path, not a tier: once you're past a wall in the browser,vb fetchreuses that session's cookies+proxy to hit JSON/API endpoints at TLS-fingerprint-correct speed — but it runs no JS, so it can't clear a JS challenge itself.
Attach mode — the practical Cloudflare workaround
For DataDome / Kasada / hardened auth that walls cold-launch automation:
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/cdp-profile &
# log into the walled site by hand
vb attach http://localhost:9222
vb go https://target.example.com # now reads as your real browserPatchright's CDP-layer stealth still applies over connect_over_cdp — attach mode gets the same protocol-level patches as cold launch, plus your real-browser fingerprint and any cookies from the manual login.
Security model
vibatchium is built to drive real logins from an untrusted agent loop, so the threat model is "a credential must never reach the model, a screenshot, or a log":
Encrypted vault. Passwords and TOTP secrets live in an XSalsa20-Poly1305 vault keyed from the OS keyring or
VIBATCHIUM_SECRETS_KEY. A resolved secret never appears in logs, HAR captures, the observe cache, or any agent-visible response field (grep-tested in CI).Secrets are never rendered in the clear.
fill --use-secretmasks the field in the page (-webkit-text-security), applied before the value is written, so every path that turns the viewport into bytes — thescreenshotverb, the 5 fps live-view stream, and VLMvision_*calls that ship the frame to a model — captures dots, not the value. The mask fails closed (no write if it can't be confirmed), covers password fields so a show-password toggle can't unmask, and the accessibility snapshot returned bymap/diff_mapstrips masked values so the secret can't leak into the model's context as text either.Live-view is authenticated. The WebSocket requires a per-server token and rejects foreign-
Originconnections (the CSWSH class), and driving the page is a separate token from watch-only — a read-only link can be shared without handing over the keyboard. Binds127.0.0.1by default (--insecure-publicto override).Scraped content is marked untrusted. MCP verbs that return page-derived text carry
openWorldHint, so a host can taint the output against prompt injection instead of treating a scraped page as instructions; pure probes arereadOnlyHintand mutating verbs (stop,secret_delete,storage_restore) aredestructiveHint.REST shim. Without
--caps, the bearer token grants every verb includingeval,secret_*, and file-writing verbs — local-code-equivalent, so always pass--caps=...in hosted mode. All vibatchium-written files are0600; directories0700.
Honest limits
5+ concurrent sessions = 1-2GB RAM. Each persistent-context Chrome is ~200-400MB. Bump cap with
VIBATCHIUM_MAX_SESSIONS=8.Vision spend cap is process-wide. N fan-out agents share one daily/lifetime budget.
Init scripts don't work on patchright backend.
chrome.runtimestaysundefined— accepted trade for stealth wins.Login walls (X, LinkedIn) require attach mode. Cold-launch fan-out can't defeat sites requiring authenticated sessions.
Synthetic input has a CDP coordinate signature. Every
click/type/hover/scrollrides Playwright over CDPInput.dispatchMouseEvent/dispatchKeyEvent(pageX==screenX, noCoalescedEvents). Patchright patches the JS-context leaks, not the Input domain, andhumanize onimproves trajectory/timing realism but does not change the per-event signature. Behavioral walls that fingerprint it (DataDome/Kasada/HUMAN) want attach-mode against a real headful Chrome you drive — OS-level synthetic input (CDP-Patches) is headful + active-tab only and doesn't fit a headless, N-parallel daemon.fetchis a static-fingerprint lane, not a browser. The curl_cffifetchverb matches Chrome's JA3/HTTP2 but runs no JavaScript — it clears TLS-fingerprint gates, not DataDome/Kasada/Turnstile JS challenges. Fall back togofor those.Single daemon = single point of failure. No HA built in.
License
Apache-2.0 core. Every default-install extra is permissive too — the fetch lane's curl_cffi is MIT. The only copyleft option is the opt-in nodriver backend (AGPL-3.0) — consult licensing before integrating it commercially. Nothing GPL/AGPL ships in the base install or [all].
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides LLMs with stealth browser automation capabilities via CloakBrowser to bypass bot detection services like Cloudflare and reCAPTCHA. It supports full page interaction, content extraction, and human-like behavior through 30 specialized tools.Last updated2012Apache 2.0

@meshbrow/mcp-serverofficial
Alicense-qualityAmaintenanceMCP server for Meshbrow that gives AI agents full browser automation capabilities with stealth anti-detection, enabling natural language control of browser sessions, data extraction, and multi-browser fleets.Last updatedMIT- Alicense-qualityBmaintenanceStealth Chrome MCP server for AI agents providing 77 tools, perfect bot detection scores, proxy pools, encrypted sessions, and live human handoff via Cloudflare tunnel.Last updatedMIT
- Flicense-qualityDmaintenanceProduction-grade MCP server for autonomous web automation with stealth features, designed for complex booking workflows like tickets, tours, hotels, and transport.Last updated
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/trueoriginlabs/vibatchium'
If you have feedback or need assistance with the MCP directory API, please join our Discord server