
Lightpanda Browser
Install and operate Lightpanda—a Zig headless browser with CDP—for low-memory AI scraping and Playwright/Puppeteer-style automation.
Overview
Lightpanda Browser is an agent skill most often used in Build agent-tooling (also Ship testing) that documents installing and driving the Zig CDP headless browser for AI automation and scraping.
Install
npx skills add https://github.com/aradotso/trending-skills --skill lightpanda-browserWhat is this skill?
- Zig-native headless browser—not Chromium/WebKit—with V8 for JavaScript
- Claimed 9x lower memory and 11x faster vs Chrome headless for agent workloads
- CDP-compatible: Playwright, Puppeteer, and chromedp integration paths
- Install via nightly macOS/Linux binaries or Docker (amd64 and arm64)
- Optional robots.txt respect via --obey_robots for scraping ethics
- 9x less memory than Chrome headless (vendor claim)
- 11x faster than Chrome headless (vendor claim)
- CDP compatible with Playwright, Puppeteer, chromedp
Adoption & trust: 1.4k installs on skills.sh; 31 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent workflows need headless browsing but Chrome-based stacks eat memory and slow down parallel agent runs.
Who is it for?
Indie builders prototyping agent scrapers, CDP automations, or high-volume headless jobs on constrained VMs.
Skip if: Teams that require mature Chromium feature parity, proprietary sites needing full browser extensions, or workloads that cannot accept AGPL licensing.
When should I use this skill?
User mentions Lightpanda, lightweight headless browser for AI, CDP automation, Zig browser, or fast web scraping automation.
What do I get? / Deliverables
You can run Lightpanda via CLI or Docker, attach Playwright or Puppeteer over CDP, and automate pages with a smaller runtime footprint for agent pipelines.
- Installed Lightpanda binary or container
- CDP server launch commands
- Automation client connection examples
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Build agent-tooling is the primary shelf because the skill equips agents and automations with a dedicated browser runtime, not growth analytics or launch SEO. Agent-tooling fits CDP servers, CLI binaries, and driver integrations that agents invoke for web tasks.
Where it fits
Point your coding agent at a local Lightpanda CDP endpoint for structured page extraction in a tool loop.
Run faster headless smoke flows against staging URLs before release without provisioning full Chrome grids.
Harvest public competitor or catalog pages with --obey_robots when building a research dataset for content planning.
How it compares
Skill package for a specialized headless runtime—not a hosted browser MCP and not a replacement for full Chrome when you need complete compatibility testing.
Common Questions / FAQ
Who is lightpanda-browser for?
Solo builders and agent authors who want CDP-compatible headless automation with lower resource use than typical Chrome headless setups.
When should I use lightpanda-browser?
Use it in Build when wiring agent browse/scrape tools; in Ship when running lean E2E or smoke automation; in Grow when collecting structured web data—always weighing beta maturity and AGPL terms.
Is lightpanda-browser safe to install?
You download nightly binaries and run a network-facing browser—review the Security Audits panel on this page and treat scraped targets and robots.txt policy as your compliance responsibility.
SKILL.md
READMESKILL.md - Lightpanda Browser
# Lightpanda — Headless Browser for AI & Automation > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection Lightpanda is a headless browser built from scratch in Zig, designed for AI agents, web scraping, and automation. It uses 9x less memory and runs 11x faster than Chrome headless. **Key facts:** - Not based on Chromium, Blink, or WebKit — clean-slate Zig implementation - JavaScript execution via V8 engine - CDP (Chrome DevTools Protocol) compatible — works with Playwright, Puppeteer, chromedp - Respects `robots.txt` via `--obey_robots` flag - Beta status, actively developed - License: AGPL-3.0 ## Installation ### macOS (Apple Silicon) ```bash curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-aarch64-macos chmod a+x ./lightpanda ``` ### Linux (x86_64) ```bash curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux chmod a+x ./lightpanda ``` ### Docker ```bash # Supports amd64 and arm64 docker run -d --name lightpanda -p 9222:9222 lightpanda/browser:nightly ``` ## CLI Usage ### Fetch a URL (dump rendered HTML) ```bash ./lightpanda fetch --obey_robots --log_format pretty --log_level info https://example.com ``` ### Start CDP Server ```bash ./lightpanda serve --obey_robots --log_format pretty --log_level info --host 127.0.0.1 --port 9222 ``` This launches a WebSocket-based CDP server for programmatic control. ### CLI Flags | Flag | Description | |------|-------------| | `--obey_robots` | Respect robots.txt rules | | `--log_format pretty` | Human-readable log output | | `--log_level info` | Log verbosity: `debug`, `info`, `warn`, `error` | | `--host 127.0.0.1` | Bind address for CDP server | | `--port 9222` | Port for CDP server | | `--insecure_disable_tls_host_verification` | Disable TLS verification (testing only) | ## Playwright Integration Start the CDP server, then connect Playwright to it: ```javascript import { chromium } from 'playwright-core'; const browser = await chromium.connectOverCDP('http://127.0.0.1:9222'); const context = await browser.contexts()[0] || await browser.newContext(); const page = await context.newPage(); await page.goto('https://example.com', { waitUntil: 'networkidle' }); const title = await page.title(); const content = await page.content(); console.log(`Title: ${title}`); console.log(`HTML length: ${content.length}`); await browser.close(); ``` ## Puppeteer Integration ```javascript import puppeteer from 'puppeteer-core'; 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(); const text = await page.evaluate(() => document.body.innerText); console.log(`Title: ${title}`); console.log(`Body text: ${text.substring(0, 200)}`); await page.close(); await browser.close(); ``` ## Go (chromedp) Integration ```go package main import ( "context" "fmt" "log" "github.com/chromedp/chromedp" ) func main() { allocCtx, cancel := chromedp.NewRemoteAllocator(context.Background(), "ws://127.0.0.1:9222") defer cancel() ctx, cancel := chromedp.NewContext(allocCtx) defer cancel() var title string err := chromedp.Run(ctx, chromedp.Navigate("https://example.com"), chromedp.Title(&title), ) if err != nil { log.Fat