OpenClaw
OpenClaw is a self-hosted AI gateway that connects chat apps (WhatsApp, Telegram, Discord, iMessage) to AI coding agents. You can give OpenClaw agents full browser control by connecting them to Vibe through an MCP server, a skill, or both.
This page covers:
- Option A: MCP Server — OpenClaw calls Vibe browser tools through the Model Context Protocol
- Option B: Skill — OpenClaw agents run
vibebrowser-clicommands directly - When to use each option (or combine them)
- How Vibe fits alongside OpenClaw's built-in browser profiles
Prerequisites
Before either option, you need:
- Chrome (or Brave/Chromium) with the Vibe extension installed
- MCP External Control enabled in extension Settings
- Node.js 18+ installed (for the
@vibebrowser/mcppackage) - OpenClaw installed (docs.openclaw.ai)
Option A: MCP Server
This is the recommended integration for cloud-hosted OpenClaw agents. You run vibebrowser-mcp locally on the machine with the browser, and point OpenClaw at its HTTP endpoint.
Step 1 — Start the local HTTP bridge
On the machine where the Vibe extension is running:
npx -y --package @vibebrowser/mcp vibebrowser-mcp start \
--transport http \
--remote YOUR_EXTENSION_UUID
Find your Extension UUID in the Vibe extension Settings under MCP External Control → Remote.
This starts a local MCP endpoint at http://127.0.0.1:8788/mcp. Keep the terminal open.
Step 2 — Register the MCP server in OpenClaw
Add the bridge URL to your OpenClaw configuration:
{
"mcpServers": {
"vibe": {
"url": "http://127.0.0.1:8788/mcp"
}
}
}
Replace 127.0.0.1 with your local machine's IP if the OpenClaw agent runs on a different host. For internet-facing setups, you'll need a tunnel (e.g., Cloudflare Tunnel, ngrok).
Once configured, the OpenClaw agent can use all Vibe browser tools through MCP.
Run vibebrowser-mcp openclaw --remote YOUR_UUID to print the exact commands, URL, and JSON snippet for your setup.
Verify the connection
Ask the OpenClaw agent to list browser tabs or take a snapshot. If the response includes your open tabs, the connection is working.
Option B: Skill
A skill teaches an OpenClaw agent how to use vibebrowser-cli commands directly, without going through MCP. This is useful when:
- You run OpenClaw agents locally (not in the cloud)
- You want the agent to run browser commands as shell calls
- You prefer CLI-style output (JSON on stdout) over MCP tool responses
- You're building automation scripts that chain CLI commands
Install the skill
The skill ships inside the @vibebrowser/mcp npm package. Copy it to your OpenClaw skills directory:
Global (available to all OpenClaw workspaces):
mkdir -p ~/.openclaw/skills/vibebrowser
npx -y --package @vibebrowser/mcp \
node -e "const fs=require('fs'),p=require('path'); \
const src=p.join(p.dirname(require.resolve('@vibebrowser/mcp/package.json')),'openclaw','vibebrowser','SKILL.md'); \
fs.copyFileSync(src, p.join(process.env.HOME,'.openclaw','skills','vibebrowser','SKILL.md'))"
Project-level (only for the current workspace):
mkdir -p skills/vibebrowser
# Copy SKILL.md from the package to skills/vibebrowser/SKILL.md
You can also clone the vibe-mcp repository and copy openclaw/vibebrowser/SKILL.md manually.
OpenClaw auto-discovers skills from these directories — no install command needed beyond copying the file.
Set the environment variable
The skill needs your Extension UUID to connect through the remote relay:
export VIBE_EXTENSION_UUID="your-extension-uuid"
Add this to your shell profile (.bashrc, .zshrc, etc.) so it persists across sessions.
Alternatively, configure the environment variable in ~/.openclaw/openclaw.json:
{
"skills": {
"entries": {
"vibebrowser": {
"enabled": true,
"env": {
"VIBE_EXTENSION_UUID": "your-extension-uuid"
}
}
}
}
}
How the skill works
Once installed, OpenClaw automatically discovers the skill and loads it when relevant. The skill teaches the agent to run commands like:
# Check connection
npx -y --package @vibebrowser/mcp vibebrowser-cli \
--remote "$VIBE_EXTENSION_UUID" --json status
# List open tabs
npx -y --package @vibebrowser/mcp vibebrowser-cli \
--remote "$VIBE_EXTENSION_UUID" --json tabs
# Take a page snapshot
npx -y --package @vibebrowser/mcp vibebrowser-cli \
--remote "$VIBE_EXTENSION_UUID" --json snapshot
# Click an element by ref
npx -y --package @vibebrowser/mcp vibebrowser-cli \
--remote "$VIBE_EXTENSION_UUID" --json click 12
# Type into a field
npx -y --package @vibebrowser/mcp vibebrowser-cli \
--remote "$VIBE_EXTENSION_UUID" --json type 23 "hello" --submit
The skill also includes safety rules — the agent will check tab state before acting, avoid destructive actions unless asked, and report connection errors clearly.
Vibe vs. OpenClaw's Built-In Browser
OpenClaw ships with its own browser tool that supports three profiles:
| Profile | What it does | When to use it |
|---|---|---|
openclaw | Isolated, agent-managed browser | Repeatable cloud tasks, scraping, testing |
user | Attaches to your Chrome via Chrome DevTools MCP | Local tasks when you're at the computer |
| Vibe | Connects to your real browser through a remote relay | Local browser access when the agent runs remotely, or when you need multi-agent support |
When to choose Vibe over the built-in profiles:
- The OpenClaw agent runs in the cloud but needs your local browser sessions
- Multiple agents need to control the same browser simultaneously
- You want browser control without exposing a CDP port or keeping Chrome DevTools MCP running
- The
userprofile requires you to be at your machine — Vibe's relay works without you present
When to use OpenClaw's built-in browser instead:
- The agent needs an isolated, reproducible browser environment
- You're running tasks that don't depend on your personal browser profile
- The agent runs in the cloud and doesn't need your local sessions
You can use both. Vibe handles your real browser; the openclaw profile handles isolated cloud browsing.
MCP Server vs. Skill
| MCP Server | Skill | |
|---|---|---|
| How it works | OpenClaw calls structured MCP tools | Agent runs CLI commands in the shell |
| Setup | Start HTTP bridge + add MCP URL | Copy SKILL.md to skills directory |
| Output format | Structured MCP tool responses | JSON on stdout |
| Best for | Cloud/remote agents | Local agents, shell scripting, CI pipelines |
| Multi-agent | Yes — relay handles multiplexing | Yes — relay handles multiplexing |
You can use both at the same time. The MCP server and the skill both connect through the same relay and do not conflict.
CLI Quick Reference
Whether you use the MCP server or the skill, the vibebrowser-cli binary is available for manual use and scripting.
Current Limitation: Multiple Browsers
vibebrowser-cli does not currently let you choose between multiple local browsers or profiles that all have the Vibe extension connected.
vibebrowser-cli tabsshows tabs from whichever extension session currently owns the relay connection.vibebrowser-cli open <url>opens a page in that same session.- If you keep MCP External Control enabled in multiple browsers at once, behavior is undefined. The safe assumption is that browser selection is not deterministic.
- If a single command appears to affect more than one browser, that is a bug.
Recommended workaround:
- Keep MCP External Control enabled in one browser/profile per relay port.
- Use
--remote <uuid>when you need to target a specific extension instance.
Connection
vibebrowser-cli status # Check connection (local relay)
vibebrowser-cli --remote UUID status # Remote mode
Tabs
vibebrowser-cli tabs # List open tabs
vibebrowser-cli open <url> # Open URL in new tab
vibebrowser-cli navigate <url> # Navigate active tab
Page inspection
vibebrowser-cli snapshot # Text snapshot with element refs
vibebrowser-cli snapshot --format aria --interactive # ARIA tree
vibebrowser-cli screenshot --output page.png # Screenshot
Interaction
vibebrowser-cli click <ref> # Click an element
vibebrowser-cli type <ref> "text" # Type into a field
vibebrowser-cli press Enter # Press a key
vibebrowser-cli hover <ref> # Hover over element
vibebrowser-cli select <ref> "val" # Select dropdown option
vibebrowser-cli fill --fields '[{"ref":"A3","value":"hello"}]'
Network & JavaScript
vibebrowser-cli requests --filter "api/" # List network requests
vibebrowser-cli evaluate --fn "() => document.title" # Evaluate JS
Global options
| Option | Description | Default |
|---|---|---|
-r, --remote <uuid> | Connect via remote relay | — |
--json | Machine-readable JSON output | false |
-d, --debug | Enable debug logging | false |
--timeout <ms> | Command timeout | 30000 |
-p, --port <number> | Relay WebSocket port | 19888 |
--relay-url <url> | Custom relay URL | wss://relay.api.vibebrowser.app |
Architecture
OpenClaw Agent (cloud or local)
|
| MCP (HTTP) OR shell commands (vibebrowser-cli)
| |
v v
[vibebrowser-mcp] [vibebrowser-cli]
| |
+-------------------+---------------------+
|
v
[Relay Daemon] <-- auto-spawned, handles multiplexing
|
v
[Vibe Extension]
|
v
[Your Chrome]
Both paths connect through the same relay. The relay auto-spawns on first connection and multiplexes requests from multiple clients to the browser extension.
Troubleshooting
"No connection to Vibe extension"
- Make sure the Vibe extension is installed and running in Chrome
- Enable MCP External Control in extension Settings
- Check that the extension status shows "Connected"
"Extension UUID not found"
Make sure you've enabled Remote mode in the Vibe extension settings. The UUID only appears when Remote mode is active.
Commands hang or time out
- Use
--debugto see detailed connection logs:vibebrowser-cli --debug status - Check that no other process is using port 19888:
lsof -i :19888 - Try killing any existing relay process and running the command again
MCP bridge "Connection refused"
- Ensure the
vibebrowser-mcp start --transport httpprocess is still running - Verify the URL includes the
/mcppath:http://127.0.0.1:8788/mcp - Check firewall rules if connecting from another machine
Skill not loading
- Verify
SKILL.mdis in one of OpenClaw's skill directories (~/.openclaw/skills/vibebrowser/or<workspace>/skills/vibebrowser/) - Check that
VIBE_EXTENSION_UUIDis set in your shell or inopenclaw.jsonunderskills.entries - Restart OpenClaw after adding the skill
Links
- MCP Integration Guide — setup for Claude Code, Cursor, VS Code, and more
- npm Package
- GitHub Repository
- OpenClaw Documentation
- OpenClaw Skills Reference
- OpenClaw Browser Tool
- Extension Installation