Lightpanda trades browser completeness for automation focus
Lightpanda is a new headless browser written mainly in Zig. It is not a Chromium or WebKit wrapper. The project implements an HTML parser, DOM, V8 JavaScript, network loading, forms, cookies, headers, proxies, interception, and a Chrome DevTools Protocol server. That scope targets crawlers and agents that need page structure and interaction but do not need tabs, extensions, video playback, or a human-facing interface.
The repository's own benchmark covers 933 pages on an AWS EC2 m5.large and reports lower time and memory than headless Chrome. Those are project figures, not our lab results, so they should be treated as a reason to benchmark your workload rather than a guarantee. Our checkout contained 1,082 files, about 4,803 source lines in the measured Rust subtree, and 12.6 MB on disk. The project's full Zig and vendored structure is broader than that source-line figure implies.
CDP compatibility makes trials cheap
Lightpanda exposes a WebSocket CDP endpoint that Puppeteer can connect to with browserWSEndpoint. Existing scripts may therefore need only connection changes for a first experiment. The browser also has direct commands for HTML, Markdown, and text-only PNG output, with wait controls for navigation, time, selectors, or scripts. This is a sensible surface for extraction jobs because it avoids pretending that every automation task needs a full testing framework.
The catch is coverage. The README labels Lightpanda beta, warns about errors and crashes, and says hundreds of Web APIs remain to be implemented. CORS is still unchecked in the status list, while 102 issues and pull requests were open in GitHub's combined count. Recent work on XHR response types, meta-refresh navigation, hidden elements, subframes, and CSS visibility shows how ordinary web behavior is still being filled in.
Agent mode can leave the model out of production
Agent mode accepts a plain-English task, drives pages inside the browser process, and can save the result as PandaScript. That generated JavaScript uses Lightpanda's native browser primitives and can be replayed later with lightpanda run. The useful idea is separation: use an LLM while discovering a procedure, inspect the saved script, then run deterministic code without paying for a model on every production execution.
Six provider routes are documented, including Anthropic, OpenAI, Gemini, Vertex AI, Hugging Face, and local Ollama. A --no-llm REPL avoids credentials entirely. Generated scripts still deserve code review because page actions can submit forms or expose session data. Lightpanda does not turn a model's browsing choices into trusted automation merely by saving them as JavaScript. Stable selectors, explicit navigation checks, and restricted credentials remain your responsibility.
MCP is native and session-aware
The browser can run an MCP server over stdio or HTTP. HTTP clients receive separate browsing sessions through the Mcp-Session-Id header, while agents can intentionally share an ID when collaborating on one page. Session tools create, list, and close contexts. This is more useful than a single global browser tab because 2 concurrent agents should not overwrite each other's cookies or navigation state.
Native MCP also removes an adapter process from an agent stack, but it widens the security boundary. An HTTP MCP listener can control a browser that reaches internal or authenticated pages. Bind it deliberately, protect network access, and close sessions when work ends. The README's example uses port 9223 for MCP and 9222 for CDP. Neither port should become a public unauthenticated browser-control endpoint.
What happened when we ran it
Our sandbox installed 122 Rust packages in 22 seconds under ./src/rust/. That subtree built successfully in 108 seconds using 3 CPUs and 12 GB of RAM. Cargo test completed in 8 seconds and reported 0 passed and 0 failed out of 0. The repository has no tests directory, although GitHub shows 9 CI workflow files.
This measurement needs a narrow reading. Lightpanda's README says the full browser build uses Zig 0.15.2, V8, libcurl, html5ever, Rust, and system libraries. Our harness identified and built the Rust project, not the complete Zig browser described by the quick start. A green Rust build with 0 discovered tests does not establish that page navigation, CDP, MCP, or JavaScript compatibility works. It establishes that the measured Rust component compiled in our fresh container.
Binaries are easier than the source build
Most evaluators should start with the nightly binary or official Docker image. Linux downloads cover x86_64 and aarch64 but require glibc, so Alpine users need a glibc base or a source build. macOS has both architectures. Windows has no native binary; the documented path is WSL2, which forwards localhost so a Windows-side client can reach port 9222.
Source contributors face a more involved stack and separate test layers. Unit tests run through make test. End-to-end coverage needs the adjacent demo repository, Node requirements, and Go newer than 1.24. Web Platform Tests use a project fork and publish results daily. The nightly release label was created in 2024 and stays current as an asset channel, so its old publication date is not proof of inactivity. The last repository push was 2026-08-26.
Use a fallback until compatibility is proven
Lightpanda is most convincing for repetitive extraction where a controlled set of sites dominates cost. Run the same corpus through Lightpanda and Chrome, compare completed tasks and extracted fields, and keep failure samples. The project's claimed resource gains matter only after correctness clears your threshold. A browser that finishes quickly with a missing field is still a failed job.
AGPL-3.0 licensing and default telemetry also need an operational decision. Telemetry can be disabled through an environment variable, and core dumps have a separate suppression control. For internal evaluation, those switches are simple. For a commercial service, have counsel review the license and keep Chromium available for unsupported pages. Lightpanda has enough working surface to test now, but its own beta warning should shape the rollout.

