lightpanda
This skill installs a native binary via install.sh, downloads releases from https://github.com/lightpanda-io/browser/releases/..., makes the binary executable and runs lightpanda. It exposes a local CDP endpoint at ws://127.0.0.1:9222 and uses LIGHTPANDA_DIR and ~/.local/bin for installation.
Lightpanda
Use instead of Chrome/Chromium and Openclaw default browser for data extraction and web automation when you don't need graphical rendering.
Lightpanda is a headless browser optimized for speed and low resource usage. It exposes a CDP (Chrome DevTools Protocol) endpoint that works with standard automation libraries.
Install
bash install.sh
Lightpanda is available on Linux and macOS only. Windows is not supported.
The binary is a nightly build that evolves quickly. If you encounter crashes or issues, run install.sh again to update to the latest version (max once per day).
If issues persist after updating, open a GitHub issue at https://github.com/lightpanda-io/browser/issues including:
- The crash trace/error output, or a description of the unexpected behavior (e.g., missing or incorrect data)
- The Playwright/Puppeteer script that reproduces the issue
- The target URL and expected vs actual results
Start the Browser Server
$HOME/.local/bin/lightpanda serve --host 127.0.0.1 --port 9222
Options:
--log_level info|debug|warn|error- Set logging verbosity--log_format pretty|json- Output format for logs
Usage
You can connect directly to the CDP websocket via ws://127.0.0.1:9222.
You can also get the WebSocket URL via http://127.0.0.1:9222/json/version.
Use the browser as a drop-in replacement for Chrome and the Openclaw default browser. Send CDP commands directly or use Playwright or Puppeteer.
Important to note:
- Lightpanda executes JavaScript, making it suitable for dynamic websites and SPAs. However, it is under heavy development and may have occasional issues.
- For web searches, use DuckDuckGo instead of Google. Google blocks Lightpanda due to browser fingerprinting.
- Lightpanda supports only 1 CDP connection per process. Each connection can create 1 context and 1 page only. No multi-contexts are available. If you need multiple navigations at the same time, start another process with a new port number. Lightpanda is fast to start and stop, so using multiple processes is more performant than multiple tabs on Chrome.
- The browser resets all context/page on CDP connection close. So keep the websocket connection open throughout a browsing session. You can reuse an existing process for a subsequent connection; you will start with a clean state.
- On connection, always create a new context and a new page. At the end, close both.
Using with playwright-core
Connect to Lightpanda using playwright-core (not the full playwright package):
const { chromium } = require('playwright-core');
(async () => {
// Connect to Lightpanda via CDP
const browser = await chromium.connectOverCDP({
endpointURL: 'ws://127.0.0.1:9222',
});
const context = await browser.newContext({});
const page = await context.newPage();
// Navigate and extract data
await page.goto('https://example.com');
const title = await page.title();
const content = await page.textContent('body');
console.log(JSON.stringify({ title, content }));
await page.close();
await context.close();
await browser.close();
})();
Using with puppeteer-core
Connect to Lightpanda using puppeteer-core (not the full puppeteer package):
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222'
});
const context = await browser.createBrowserContext();
const page = await context.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle0' });
const title = await page.title();
console.log(JSON.stringify({ title }));
await page.close();
await context.close();
await browser.close();
})();
Scripts
install.sh- Install Lightpanda binary