#Full browser control
1 messages · Page 1 of 1 (latest)
There are a few approaches depending on how much automation you need:
Option 1: Chrome with Remote Debugging + CDP
Start Chrome on Windows with remote debugging enabled:
chrome --remote-debugging-port=9222 --user-data-dir="C:\ChromeDebug"
Then Clawdbot can connect via CDP. You'll need to expose port 9222 to your Debian LXC (SSH tunnel or firewall rules). This works if Chrome is already running, but doesn't handle starting Chrome.
Option 2: Selenium Server on Windows
Run Selenium Grid or a standalone Selenium server on the Windows VM. Clawdbot can send commands to the Selenium API, which then controls Chrome. This handles start/stop since Selenium can launch Chrome.
Option 3: Playwright/Puppeteer as a Service
Run a small Node.js service on Windows using Playwright or Puppeteer. Expose an HTTP API that Clawdbot calls to control the browser. More manual to set up but very flexible.
Option 4: RDP + UI Automation (Most Complex)
Use Windows RDP combined with UI automation libraries, but this is overkill for browser control.
Honest take: The Chrome Extension Relay exists precisely because browser automation is tricky. For most use cases, Option 2 (Selenium) is the cleanest path to full start/stop/control without manual extension attachment.
Want me to look up specific docs or walk through any of these approaches in more detail?
But with the extension relay I have to manually open a tab, and then attach the extension relay to that specific tab, right? So the agent will never be able to just open new tabs by it self etc. I always have to do it manually and then hand it off to the agent??
Perfect! I found it. Clawdbot does support remote CDP connections. Here's how to set it up:
Configuration
In your ~/.clawdbot/clawdbot.json, add a browser profile for your remote Chrome:
{
"browser": {
"profiles": {
"windows-vm": {
"cdpUrl": "http://YOUR_WINDOWS_VM_IP:9222",
"color": "#00AA00"
}
}
}
}
On Your Windows VM
- Create a batch file
start-chrome-debug.bat:
start chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\ClawdbotChrome" --no-first-run --no-default-browser-check
-
Configure Windows Firewall:
- Allow inbound connections on port 9222 from your Debian LXC IP
-
Start Chrome on the VM (manually or via Windows startup)
On Your Debian LXC
Make sure the network is accessible. You may need to create an SSH tunnel:
ssh -L 9222:localhost:9222 user@WINDOWS_VM_IP
Or configure Proxmox to allow direct access.
Summary: Once configured, Clawdbot can connect directly via CDP and has full autonomous control — no extension, no manual tab handoff needed. It can open new tabs, navigate, interact with pages, etc. all on its own.
Can the LXC itself run jts own browser? It’s a headless installation. If so how?
Yes! The LXC can run its own browser headlessly. Here's how:
Option 1: Chrome/Chromium with Xvfb (X Virtual Framebuffer)
This gives you a "virtual" display that Chrome can render to:
# Install dependencies
sudo apt install xvfb chromium chromium-driver
# Start a virtual display
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
# Start Chrome with remote debugging
chromium --remote-debugging-port=9222 --no-sandbox --disable-gpu --disable-dev-shm-usage
Option 2: Puppeteer/Playwright (Easier)
Both have headless mode built-in:
# Install Node.js first if not present
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install nodejs
# Install Puppeteer
npm install puppeteer
# Or Playwright
npm install playwright
npx playwright install chromium
Option 3: Clawdbot's Built-in Sandboxed Browser
Clawdbot already has sandboxed browser support built-in:
# Check if browser is enabled
clawdbot config get browser.enabled
# Enable if needed
clawdbot config set browser.enabled true
For your use case, I'd recommend Option 3 first — it's the simplest since Clawdbot already knows how to talk to it. If that doesn't work as expected, Option 1 with Xvfb is the most robust for headless environments.
Want me to help you set any of these up?
How should the clawdbot.json file browser section look if I want to use option 3 headless
Here's the config for headless browser in your ~/.clawdbot/clawdbot.json:
{
"agents": {
"defaults": {
"sandbox": {
"enabled": true,
"browser": {
"enabled": true,
"headless": true,
"autoStart": true,
"cdpPort": 9222
}
}
}
}
}
Key settings:
enabled: true— turns on the sandboxed browserheadless: true— runs Chromium without a display (perfect for LXC)autoStart: true— browser starts automatically when needed
Then run the browser image setup:
cd ~/clawdbot-ref && ./scripts/sandbox-browser-setup.sh
The browser will run in a Docker container and Clawdbot can control it autonomously — no manual extension handoff needed.
Tried option 3:
clawdbot@clawdbot:~/.clawdbot$ clawdbot browser status
🦞 Clawdbot 2026.1.16-2 (49c35c7) — I read logs so you can keep pretending you don't have to.
profile: chrome
enabled: true
running: false
controlUrl: http://127.0.0.1:18791
cdpPort: 18792
cdpUrl: http://127.0.0.1:18792
browser: unknown
detectedBrowser: unknown
detectedPath: auto
profileColor: #00AA00
clawdbot@clawdbot:~/.clawdbot$ clawdbot browser start
🦞 Clawdbot 2026.1.16-2 (49c35c7) — Pairing codes exist because even bots believe in consent—and good security hygiene.
Error: 500: {"error":"Error: Chrome extension relay is running, but no tab is connected. Click the Clawdbot Chrome extension icon on a tab to attach it (profile "chrome")."}
clawdbot@clawdbot:~/.clawdbot
The issue is that Clawdbot is still trying to use the Chrome extension relay. You need to enable the sandbox browser instead. Here's how:
1. First, stop the extension relay
clawdbot browser stop
2. Enable the sandboxed headless browser
Add this to your ~/.clawdbot/clawdbot.json:
{
"agents": {
"defaults": {
"sandbox": {
"enabled": true,
"browser": {
"enabled": true,
"headless": true,
"autoStart": true
}
}
}
}
}
3. Build the browser image
cd ~/clawdbot-ref
./scripts/sandbox-browser-setup.sh
4. Restart Clawdbot
clawdbot gateway restart
5. Test
clawdbot browser status