vnhax
lightpanda-io / browser
View on GitHub ↗

Independent review by VNHAX. Not affiliated with or endorsed by the project's authors.

🔥 827 STARS IN ONE DAY (2 NOV 2026)WRITTEN IN ZIGNOT A CHROMIUM FORKCDP · MCP · AGENT MODEAGPL-3.0 LICENSE
Lightpanda architecture: Puppeteer, Playwright, MCP clients and the built-in agent drive a lightweight Zig browser
lightpanda-io / browser — the headless browser built for AI and automation

Lightpanda: A Lightweight Headless Browser for AI Agents, Scrapers & Tests

Headless Chrome was built for people. Lightpanda was built for machines.
A new browser written from scratch in Zig, with V8 for JavaScript. It speaks the Chrome DevTools Protocol, so Puppeteer and Playwright can connect, and it adds an MCP server and an agent mode for AI workflows.

123 MB
Peak memory, 100 pages
vs 2 GB for headless Chrome (project benchmark)
5 s
Execution time, 100 pages
vs 46 s for headless Chrome (project benchmark)
3 protocols
CDP · WebDriver BiDi · MCP
Plus a built-in agent mode
HOW IT WORKS

Ways to Use Lightpanda

One binary, several modes, according to the README:

lightpanda fetch

Load a URL and dump it as HTML, Markdown, PNG, PDF or structured data (JSON-LD, OpenGraph, meta tags).

lightpanda serve

Run a CDP server (default) or WebDriver BiDi server for Puppeteer, Playwright and other clients.

lightpanda mcp

Expose the browser as an MCP server over stdio or HTTP, with isolated or shared sessions per agent.

lightpanda agent

Drive the browser with plain-English tasks, then /save the session as a replayable PandaScript.

lightpanda run

Replay a saved PandaScript deterministically, with no LLM and no tokens at runtime.

The Benchmark, Read Carefully

Lightpanda's own test: 933 real web pages requested over the network on an AWS EC2 m5.large. Figures below are for 100 pages.

MetricLightpanda vs Headless Chrome
Peak memory123 MB vs 2 GB, about 16x less
Execution time5 s vs 46 s, about 9x faster
Who measured itThe Lightpanda team; benchmark details are in the lightpanda-io/demo repository

Platforms & Install

PlatformHow
Linux (x86_64, aarch64)Nightly binary from GitHub Releases; needs glibc 2.35+ (x86_64) or 2.38+ (arm64), so not Alpine/musl
macOS (Apple Silicon, Intel)Nightly binary, or brew install lightpanda-io/browser/lightpanda
Dockerdocker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:latest
WindowsNo native binary: install inside WSL2 using the Linux steps
Nix / Archnix run github:lightpanda-io/browser -- --help · yay -S lightpanda-nightly-bin
Quick Start

Run the CDP Server

docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:latest

Then connect Puppeteer with puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222" }). The rest of your script stays the same. Binding to 127.0.0.1 keeps the browser off your network.

More Commands:
Dump a page as Markdown:
./lightpanda fetch --obey-robots --dump markdown https://example.com
MCP server for agents (stdio):
./lightpanda mcp
Agent mode with a task:
./lightpanda agent --task "top story on news.ycombinator.com?"
Turn off telemetry:
export LIGHTPANDA_DISABLE_TELEMETRY=true

Why a New Browser Instead of a Chromium Fork

A Chromium fork carries everything needed to paint pages for people: compositing, GPU work, fonts and much more. An agent or scraper mostly needs the DOM, JavaScript and the network. Building only that is what lets Lightpanda use far less memory and start fast, which matters when you run many pages at once.

PandaScript: Prototype With an LLM, Ship Without One

In agent mode you describe a task in plain English and the model drives the browser. Run /save to export the session as PandaScript, plain JavaScript with a few browser primitives, then replay it with lightpanda run. The replay is deterministic and uses no tokens, so production jobs do not need a model at all.

HONEST NOTES

Limits to Plan Around

From the README and from what a young browser implies:

  • Not every site will work: Lightpanda is a new engine, not Chromium. Test your target pages before swapping it into production.
  • Telemetry is on by default: Disable it with LIGHTPANDA_DISABLE_TELEMETRY=true.
  • No native Windows or Android: Use WSL2 on Windows; Android/Termux is not supported. Linux builds need glibc, not musl.
  • AGPL-3.0: Offering a modified version as a network service can trigger AGPL source-sharing obligations. Check with your legal team.
🤖 AI Providers (Agent Mode)

Anthropic, OpenAI, Gemini, Vertex AI, Mistral, Hugging Face, OpenRouter, Vercel AI Gateway, and local models via Ollama or llama.cpp.

⚖️ License

AGPL-3.0. Free to use; read the terms before offering it as a hosted service.

📘 Docs

lightpanda.io/docs: MCP server guide, agent mode and PandaScript reference.

Frequently Asked Questions

Can Lightpanda replace headless Chrome in my Puppeteer scripts?

Often, yes. Lightpanda runs a Chrome DevTools Protocol server, so you connect with puppeteer.connect and its browserWSEndpoint. Test your pages first, since Lightpanda is a new browser and may not support every web feature that Chrome does.

Does Lightpanda work on Windows?

Not natively. The README says to install it inside WSL2 using the Linux steps; your automation client can run on Windows and reach it on localhost:9222.

How do I turn off Lightpanda telemetry?

Set the environment variable LIGHTPANDA_DISABLE_TELEMETRY=true. Telemetry is enabled by default.

Can AI agents use Lightpanda directly?

Yes. Run lightpanda mcp to expose it as an MCP server, or use lightpanda agent to drive it with plain-English tasks using models from Anthropic, OpenAI, Gemini, Mistral, OpenRouter or local models.