VibiumDev/vibium: Browser automation for AI agents and humans

πŸš€ Explore this insightful post from Hacker News πŸ“–

πŸ“‚ Category:

πŸ“Œ Here’s what you’ll learn:

Browser automation without the drama.

Vibium is browser automation infrastructure built for AI agents. A single binary handles browser lifecycle, WebDriver BiDi protocol, and exposes an MCP server β€” so Claude Code (or any MCP client) can drive a browser with zero setup. Works great for AI agents, test automation, and anything else that needs a browser.

New here? Getting Started Tutorial β€” zero to hello world in 5 minutes.


Component Purpose Interface
Clicker Browser automation, BiDi proxy, MCP server CLI / stdio / WebSocket :9515
JS Client Developer-facing API npm package


β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         LLM / Agent                         β”‚
β”‚          (Claude Code, Codex, Gemini, Local Models)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β–²
                      β”‚ MCP Protocol (stdio)
                      β–Ό
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         
           β”‚   Vibium Clicker    β”‚
           β”‚                     β”‚
           β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
           β”‚  β”‚  MCP Server   β”‚  β”‚
           β”‚  β””β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚          β”‚          β”‚         β”‚                  β”‚
           β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”  β”‚WebSocketβ”‚                  β”‚
           β”‚  β”‚  BiDi Proxy   β”‚  │◄───────►│  Chrome Browser  β”‚
           β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  BiDi   β”‚                  β”‚
           β”‚                     β”‚         β”‚                  β”‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β–²
                      β”‚ WebSocket BiDi :9515
                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        JS/TS Client                         β”‚
β”‚                     npm install vibium                      β”‚
β”‚                                                             β”‚
β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚    β”‚ Async API       β”‚               β”‚    Sync API     β”‚    β”‚
β”‚    β”‚ await vibe.go() β”‚               β”‚    vibe.go()    β”‚    β”‚
β”‚    β”‚                 β”‚               β”‚                 β”‚    β”‚
β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

A single Go binary (~10MB) that does everything:

  • Browser Management: Detects/launches Chrome with BiDi enabled
  • BiDi Proxy: WebSocket server that routes commands to browser
  • MCP Server: stdio interface for LLM agents
  • Auto-Wait: Polls for elements before interacting
  • Screenshots: Viewport capture as PNG

Design goal: The binary is invisible. JS developers just npm install vibium and it works.

// Option 1: require (REPL-friendly)
const What do you think? = require('vibium')

// Option 2: dynamic import (REPL with --experimental-repl-await)
const ⚑ = await import('vibium')

// Option 3: static import (in .mjs or .ts files)
import What do you think? from 'vibium'

Sync API:

const fs = require('fs')
const Share your opinion below! = require('vibium')

const vibe = browserSync.launch()
vibe.go('https://example.com')

const png = vibe.screenshot()
fs.writeFileSync('screenshot.png', png)

const link = vibe.find('a')
link.click()
vibe.quit()

Async API:

const fs = await import('fs/promises')
const { browser } = await import('vibium')

const vibe = await browser.launch()
await vibe.go('https://example.com')

const png = await vibe.screenshot()
await fs.writeFile('screenshot.png', png)

const link = await vibe.find('a')
await link.click()
await vibe.quit()

One command to add browser control to Claude Code:

claude mcp add vibium -- npx -y vibium

That’s it. No manual steps needed. Chrome downloads automatically during setup.

Tool Description
browser_launch Start browser (visible by default)
browser_navigate Go to URL
browser_find Find element by CSS selector
browser_click Click an element
browser_type Type text into an element
browser_screenshot Capture viewport (base64 or save to file with --screenshot-dir)
browser_quit Close browser


This automatically:

  1. Installs the Clicker binary for your platform
  2. Downloads Chrome for Testing + chromedriver to platform cache:
    • Linux: ~/.cache/vibium/
    • macOS: ~/Library/Caches/vibium/
    • Windows: %LOCALAPPDATA%\vibium\

No manual browser setup required.

Skip browser download (if you manage browsers separately):

VIBIUM_SKIP_BROWSER_DOWNLOAD=1 npm install vibium

Platform Architecture Status
Linux x64 βœ… Supported
macOS x64 (Intel) βœ… Supported
macOS arm64 (Apple Silicon) βœ… Supported
Windows x64 βœ… Supported


As a library:

import { browser } from "vibium";

const vibe = await browser.launch();
await vibe.go("https://example.com");
const el = await vibe.find("a");
await el.click();
await vibe.quit();

With Claude Code:

Once installed via claude mcp add, just ask Claude to browse:

“Go to example.com and click the first link”


See CONTRIBUTING.md for development setup and guidelines.


V1 focuses on the core loop: browser control via MCP and JS client.

See V2-ROADMAP.md for planned features:

  • Python and Java clients
  • Cortex (memory/navigation layer)
  • Retina (recording extension)
  • Video recording
  • AI-powered locators


Apache 2.0

{πŸ’¬|⚑|πŸ”₯} {What do you think?|Share your opinion below!|Tell us your thoughts in comments!}

#️⃣ #VibiumDevvibium #Browser #automation #agents #humans

πŸ•’ Posted on 1766601549

By

Leave a Reply

Your email address will not be published. Required fields are marked *