lightpanda-browser▌
aradotso/trending-skills · updated Apr 8, 2026
Skill by ara.so — Daily 2026 Skills collection
Lightpanda — Headless Browser for AI & Automation
Skill by 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.txtvia--obey_robotsflag - Beta status, actively developed
- License: AGPL-3.0
Installation
macOS (Apple Silicon)
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-aarch64-macos
chmod a+x ./lightpanda
Linux (x86_64)
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux
chmod a+x ./lightpanda
Docker
# Supports amd64 and arm64
docker run -d --name lightpanda -p 9222:9222 lightpanda/browser:nightly
CLI Usage
Fetch a URL (dump rendered HTML)
./lightpanda fetch --obey_robots --log_format pretty --log_level info https://example.com
Start CDP Server
./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:
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
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
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.Fatal(err)
}
fmt.Println("Title:", title)
}
Python Integration
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp("http://127.0.0.1:9222")
context = browser.contexts[0] if browser.contexts else await browser.new_context()
page = await context.new_page()
await page.goto("https://example.com", wait_until="networkidle")
title = await page.title()
content = await page.content()
print(f"Title: {title}")
print(f"HTML length: {lenDiscussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.5★★★★★33 reviews- ★★★★★Dhruvi Jain· Dec 28, 2024
Useful defaults in lightpanda-browser — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Sofia Robinson· Dec 28, 2024
lightpanda-browser reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★William Harris· Dec 12, 2024
lightpanda-browser has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Ava Mehta· Dec 8, 2024
Registry listing for lightpanda-browser matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Oshnikdeep· Nov 19, 2024
lightpanda-browser is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★William Khan· Nov 3, 2024
lightpanda-browser fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Amelia Ghosh· Oct 22, 2024
We added lightpanda-browser from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Ganesh Mohane· Oct 10, 2024
Keeps context tight: lightpanda-browser is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Rahul Santra· Sep 25, 2024
Registry listing for lightpanda-browser matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Jin Ramirez· Sep 25, 2024
I recommend lightpanda-browser for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
showing 1-10 of 33