ai-setup 7 min read

Vibium – Browser Automation for AI Agents by Selenium's Creator

Open-source browser automation tool by Selenium's creator — gives AI agents a verification layer through CLI, MCP server, or JS/Python/Java libraries.

By
Share: X in
Vibium – Browser automation for AI agents

TL;DR

TL;DR: Vibium is an open-source browser automation tool built by Selenium’s creator, giving AI agents a lightweight verification layer via CLI, MCP server, or JS/Python/Java libraries.

Source and Accuracy Notes

⚠️ This section is MANDATORY. All links must be verified from actual source, not guessed.

What Is Vibium?

Vibium describes itself as “the verification layer for coding agents.” It was created by Simon Stewart, the original creator and lead maintainer of Selenium WebDriver, which is one of the most widely used browser automation frameworks in existence.

Rather than building yet another browser automation library, Vibium is designed specifically for AI agents that need to verify their own output — checking whether a generated page renders correctly, a form submits, or a button click produces the expected result. It runs as a standalone binary (roughly 10 MB), installs via npm globally, and can be used as a CLI skill, an MCP server, or a direct library in JavaScript, Python, or Java.

The protocol underneath is WebDriver BiDi — a W3C standard that enables bidirectional communication between a driver and a browser, as opposed to the older WebDriver Wire Protocol (which Selenium itself historically relied on). This means Vibium is standards-based and not tied to any single corporation’s browser automation agenda.

Setup Workflow

Step 1: Install Vibium

npm install -g vibium

This installs the vibium binary and automatically downloads Chrome (visible mode by default).

Step 2: Add as an Agent Skill

Vibium ships as an installable skill for AI coding agents using the open agent skills CLI:

npx skills add https://github.com/VibiumDev/vibium --skill vibe-check

This installs the skill manifest to {project}/.agents/skills/vibium. The skills CLI is vercel-labs/skills.

Step 3: Use as MCP Server (Alternative)

For agents that prefer the MCP protocol over CLI skills:

# Claude Code
claude mcp add vibium -- npx -y vibium mcp

# Gemini CLI
gemini mcp add vibium npx -y vibium mcp

Core CLI Commands

The primary workflow is: go to a URL, map to discover interactive elements, then interact using element references.

# Navigate
vibium go https://example.com

# Map interactive elements → @e1, @e2, ...
vibium map

# Interact by reference
vibium click @e1
vibium fill @e2 "[email protected]"

# Find elements by semantic queries (no CSS selectors needed)
vibium find text "Sign In"
vibium find label "Email"
vibium find placeholder "Search"
vibium find role button

# Read and capture
vibium text
vibium screenshot -o page.png
vibium screenshot --annotate -o annotated.png
vibium pdf -o page.pdf

# Wait for dynamic content
vibium wait ".modal"
vibium wait url "/dashboard"
vibium wait text "Success"

# Verify state changes
vibium diff map

Deeper Analysis

Why “Verification Layer”?

The framing here is deliberate. Simon Stewart has noted in the HN discussion that most browser automation tools are designed for human testers who know what they are looking for. Vibium is built for the opposite case: an AI agent that has generated some code or configuration and needs to check whether the result actually works in a real browser.

This means Vibium prioritizes clarity of output over raw speed or exotic browser support. The annotated screenshot mode (--annotate) overlays element labels (@e1, @e2) directly on the screenshot so that a human or agent can correlate the visual output with the element references used in commands.

WebDriver BiDi vs Legacy Protocols

WebDriver BiDi is a relatively new W3C standard. Unlike the older Selenium Wire Protocol (JSON over HTTP), BiDi supports bidirectional events — the browser can push DOM mutation events, console logs, and network events back to the controlling script without polling. This makes it better suited for agents that need to react to asynchronous browser state.

Vibium’s decision to build on BiDi specifically (rather than CDP or the older protocol) positions it as a forward-looking choice, assuming the standard continues to gain browser vendor support.

Cross-Language Support

The same underlying engine is exposed via JavaScript, Python, and Java client libraries, all published to their respective package registries (npm, PyPI, Maven Central). This is notable because most browser automation tools in this space are either JavaScript-only or require a separate maintained port.

Practical Evaluation Checklist

  • [ ] Chrome downloaded and visible browser launches on vibium go <URL>
  • [ ] vibium map correctly identifies interactive elements with @eN references
  • [ ] vibium click @e1 performs a real browser click (verify with screenshot)
  • [ ] vibium find text "..." returns correct element without CSS selector knowledge
  • [ ] vibium wait correctly blocks until condition is met
  • [ ] vibium diff map shows delta after a page state change
  • [ ] MCP server starts cleanly with npx -y vibium mcp
  • [ ] Annotated screenshot mode renders element labels legibly
  • [ ] vibium pdf produces a valid PDF of the current page

Security Notes

  • Vibium runs Chrome in visible mode by default — no headless-by-default surprise
  • The skill manifest is fetched from GitHub at install time; verify the repo before adding to agent configs
  • vibium eval executes arbitrary JavaScript in the browser context — do not use on untrusted pages
  • No built-in authentication or access control; treat it as a local development tool

FAQ

Q: How is this different from Playwright or Puppeteer? A: Playwright and Puppeteer are general-purpose browser automation libraries for developers. Vibium is specifically designed for AI agents and frames every operation around verification — element discovery, state diffing, annotated screenshots. It also ships as an MCP server and a CLI skill that agents can install in one command.

Q: Does it support Firefox or Safari? A: The README advertises Chrome by default. WebDriver BiDi support in Firefox and Safari varies; check the Vibium docs for the current browser matrix.

Q: What is the file size and dependency footprint? A: The README states the binary is approximately 10 MB with no runtime dependencies. Chrome downloads separately.

Q: Can it run headless? A: Yes, though the exact flag is not documented in the README’s quick reference — check vibium --help or the docs for headless options.

Q: Is this production-ready? A: Vibium is open-source with an Apache-2.0 license and 2,920 GitHub stars. The project is active (last push 2026-08-19), but as with any young open-source tool, audit it yourself before using it in critical pipelines.

Conclusion

Vibium fills a specific niche: browser automation designed from the ground up for AI agents that need to verify their own work. The combination of Simon Stewart’s credibility (Selenium creator), standards-based WebDriver BiDi foundation, multi-language library support, and one-command agent skill installation makes it worth evaluating if you are building coding agents that interact with web interfaces.

The tool is actively maintained, lean (~10 MB binary), and installs in seconds. If you are running Claude Code, Gemini CLI, or any agent framework that supports the MCP protocol, adding Vibium takes one command. The DNS issue on vibium.dev is a temporary infrastructure hiccup — the GitHub repo and package registries are the reliable canonical sources.