Chrome Relay Browser Control
Control the user's local Chrome browser through the OpenClaw Browser Relay extension. This provides access to the user's real logged-in browser sessions.
Setup (First Time)
If user doesn't have Browser Relay extension installed:
-
Get extension path:
~/.openclaw/browser/chrome-extensionOr run:
open ~/.openclaw/browser/chrome-extension(macOS) -
Install in Chrome:
- Open
chrome://extensions - Enable "Developer mode" (top right)
- Click "Load unpacked"
- Select the extension folder
- Open
-
Get Gateway token:
openclaw config get gateway.auth.token -
Configure extension:
- Click extension icon → Settings
- Enter the gateway token
- Save
-
Connect:
- Open the Chrome tab you want controlled
- Click the extension icon to attach (badge shows ON)
Usage
Check Connected Tabs
openclaw browser tabs --profile chrome-relay
Or use the tool:
browser(action=tabs, profile=chrome-relay)
Read Page Content
browser(action=snapshot, profile=chrome-relay, targetId=<targetId>)
Navigate
browser(action=navigate, profile=chrome-relay, targetId=<targetId>, url="https://...")
Interact with Page
Note: aria-ref based selectors have reliability issues in chrome-relay mode. Prefer JavaScript evaluation for complex interactions:
// Click element
browser(action=act, kind=evaluate, profile=chrome-relay,
fn="document.querySelector('selector').click()")
// Type in input
browser(action=act, kind=evaluate, profile=chrome-relay,
fn="document.querySelector('input').value = 'text'")
// Get element info
browser(action=act, kind=evaluate, profile=chrome-relay,
fn="document.querySelector('selector').innerText")
Limitations
- aria-ref selectors may timeout; use JavaScript evaluate instead
- Extension must be attached (icon shows ON) for each tab
- Only works with Chrome browser
- Connection port: 18792
Troubleshooting
Red ! badge on extension:
- Gateway not running → start with
openclaw gateway start - Token mismatch → verify token in extension settings
Can't find element:
- Page may have loaded new DOM → re-snapshot
- Use browser devtools console to find selectors first