Lightpanda 1.0 — the Browser Built for AI to Use the Internet

Lightpanda dropped 1.0 after ditching Chrome for something 16x lighter. A browser designed not for people but for AI agents, with its own Zig engine — install, model wiring, scan modes, and MCP integration, from a practitioner's angle.
Markdown source·Anything to add or correct?

Lightpanda 1.0 — the Browser Built for AI to Use the Internet

On October 2, 2026, Lightpanda shipped 1.0 after two years in beta. The project started from a simple idea: if AI is going to use the internet, it doesn't need a browser built for people — it needs a browser built for AI.

Chrome draws screens for humans. It renders photos, CSS, animations, video, all of it. But when you ask an AI to read a webpage, does it need any of that? What an AI needs is the structure and the meaning — where the button is, where a link goes when you click it, what belongs in the form field.

Lightpanda didn't build a graphics rendering pipeline at all. Here's what that got them.

Chrome (headless)Lightpanda
Memory (100 pages)~2 GB~123 MB (16x less)
Runtime (100 pages)~46 sec~5 sec (9x faster)
EngineChromium (C++)Zig proprietary engine
WPT passing2.18M subtests1.74M (~80%)

Based on Lightpanda's public benchmark (933 web pages). Results won't be identical across all sites.


What separates it from a plain crawler

A crawler that just fetches HTML can't handle today's web. Sites that only show content once JavaScript runs, logins, clicking buttons, infinite scroll, Shadow DOM, WebAssembly — until now you handled all that with Chrome plus Playwright or Puppeteer. And Chrome is heavy.

Lightpanda is a browser that runs JavaScript but throws away the part that draws the screen. It's written in Zig from scratch. It is not a Chromium fork.

Modern web features it supports:

  • HTML, DOM, JavaScript (ES2024 level)
  • Fetch, XHR, WebSocket
  • Cookies, IndexedDB, Shadow DOM
  • WebAssembly
  • CDP (Chrome DevTools Protocol) plus WebDriver Classic and WebDriver BiDi (added in 1.0)

Install and download

Python (simplest)


pip install lightpanda

Requires Python 3.10+. The binary is bundled, so it runs right away with no separate install.

Node.js


npm install lightpanda
# or
npx lightpanda

Direct binary download (for CI/servers)

Per-platform binaries on GitHub Releases:

  • lightpanda-linux-x64
  • lightpanda-linux-arm64
  • lightpanda-macos-x64
  • lightpanda-macos-arm64

# e.g. Linux x64
curl -L -o lightpanda https://github.com/lightpanda-io/lightpanda/releases/latest/download/lightpanda-linux-x64
chmod +x lightpanda
./lightpanda --help

Docker


docker pull lightpanda/lightpanda:latest
docker run --rm lightpanda/lightpanda --help

Setup and wiring up a model (AI agent integration)

Lightpanda's focus is on making it possible for an AI agent to use the browser as a tool.

1. MCP server built in (easiest integration)


pip install lightpanda
# or npm install lightpanda

Then use it straight from SKILL.md-compatible agents like Claude Code, Cursor, or Codex:


// example in mcp.json or .cursor/mcp.json
{
  "mcpServers": {
    "lightpanda": {
      "command": "lightpanda",
      "args": ["mcp"]
    }
  }
}

Tell the agent "go to this site and find me the latest info," and it browses directly through Lightpanda.

2. Playwright / Puppeteer / Selenium (reuse existing code)

It supports WebDriver BiDi, Classic WebDriver, and CDP, so existing automation scripts run almost unchanged.


# Playwright example
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.connect_over_cdp("http://localhost:9222")
        # or WebDriver BiDi
        browser = await p.chromium.connect("http://localhost:4444")
        page = await browser.new_page()
        await page.goto("https://example.com")
        # ...

# run Lightpanda (separate terminal)
# lightpanda --cdp --port 9222
# or WebDriver
# lightpanda --webdriver --port 4444

3. Direct Python use (async API)


import asyncio
from lightpanda import Lightpanda

async def main():
    async with Lightpanda() as browser:
        page = await browser.new_page()
        await page.goto("https://example.com")
        # HTML
        html = await page.content()
        # Markdown
        md = await page.markdown()
        # Semantic Tree (most useful for AI)
        tree = await page.semantic_tree()
        print(tree)

asyncio.run(main())

4. Direct CLI use


# get page HTML
lightpanda https://example.com --format html

# as Markdown
lightpanda https://example.com --format markdown

# Semantic Tree (structured meaning)
lightpanda https://example.com --format semantic-tree

# wait for JavaScript to finish
lightpanda https://spa-site.com --wait-network-idle

# pass auth cookies
lightpanda https://app.example.com --cookie "session=abc123"

# add headers
lightpanda https://api.example.com --header "Authorization: Bearer token"

Scan / task modes

You can dial depth up or down depending on the goal (not official terms, but useful for automation):

ModeUseTraits
Fast explorationLink collection, sitemap buildingMinimal JS execution, short network waits
StandardLogin plus data extraction, form submissionFull JS execution, waits for network idle
Deep explorationFull SPA crawling, infinite scrollLong timeouts, waits for all resources

Controlled through CLI options like --wait-network-idle, --timeout, --max-depth.


Security: CORS on by default (key 1.0 change)

If AI agents are going to roam the internet, browser security is agent security. From 1.0, CORS (Cross-Origin Resource Sharing) checks are on by default. That blocks a malicious page from reaching internal services or other domains at the browser level.

Turn it off only when you need to (internal testing, etc.):


lightpanda https://internal.site --disable-cors

Output formats — what do you hand the AI?

FormatUse
HTMLSave or archive as-is
MarkdownEasy for humans to read, drops straight into LLM context
Semantic TreeFor AI agents — pulls out only the meaning: "button: login," "input: email," "link: next"

Semantic Tree example:


{
  "type": "page",
  "children": [
    {"type": "heading", "level": 1, "text": "Login"},
    {"type": "form", "children": [
      {"type": "input", "name": "email", "placeholder": "Email"},
      {"type": "input", "name": "password", "type": "password"},
      {"type": "button", "text": "Login", "action": "submit"}
    ]}
  ]
}

For an AI this is far more efficient than a rendered screen.


Cost comparison (rough)

ApproachCost
Local (Lightpanda + local LLM)Hardware only, $0 API cost
Lightpanda + OpenRouter / local modelToken cost only (a few dollars a day)
RunPod GPU rental (8x A100)~$15/hr, no data-leak concern
Old way: Chrome headless server farm16x the memory, 9x the CPU cost

Limits (still not a Chrome replacement)

  • No CSS rendering — no design verification, no visual regression testing
  • No video or audio playback
  • No extension ecosystem
  • 80% of WPT — possible behavior differences on complex web apps
  • If a human is looking at it, always use Chrome

So what Lightpanda actually means

For 30 years the internet was built for people. Browsers evolved toward showing graphics prettier and prettier.

But now AI has started using the internet too. AI doesn't need a screen. It needs structure, meaning, interaction, speed, and low cost.

So browsers are beginning to split into one for people and one for AI. Lightpanda 1.0 is the first stable release of the infrastructure for the AI side.

This isn't finished. It's just getting started.


References

  • GitHub: https://github.com/lightpanda-io/lightpanda
  • Docs: https://docs.lightpanda.io
  • 1.0 announcement: https://github.com/lightpanda-io/lightpanda/releases/tag/v1.0.0
  • PyPI: https://pypi.org/project/lightpanda/
  • npm: https://www.npmjs.com/package/lightpanda

This post was put together from Lightpanda's 1.0 announcement materials, official docs, the GitHub repository, and public benchmarks.