> · 7 мин

Lightpanda — headless-браузер на Zig, который в 11 раз быстрее Chrome и создан специально для AI-агентов

Lightpanda — headless-браузер на Zig, который в 11 раз быстрее Chrome и создан специально для AI-агентов

Lightpanda — headless-браузер на Zig, который в 11 раз быстрее Chrome и создан специально для AI-агентов

Каждый AI-агент, которому нужно работать с вебом, упирается в одну и ту же стену: headless Chrome. Один инстанс жрёт гигабайт оперативки. Сто параллельных вкладок превращают EC2-инстанс в обогреватель. А ведь агенту не нужны CSS-анимации, шрифты и GPU-композитинг — ему нужен DOM и JavaScript.

Lightpanda — первый headless-браузер, написанный с нуля именно для этого сценария. Не форк Chromium, не обёртка над WebKit. Новый браузерный движок на Zig с V8 внутри, который отбрасывает всё визуальное и оставляет только то, что нужно автоматизации.

TL;DR: Lightpanda — headless-браузер на Zig, 11x быстрее Chrome в бенчмарках, 19x меньше памяти. Совместим с Puppeteer и Playwright через CDP. 26.2K звёзд на GitHub. Но бета: скриншоты не работают, CORS не реализован, сегфолты случаются. Ставить в staging — да, в прод — подождать.

Почему вообще нужен другой браузер

Команда Lightpanda до этого проекта занималась скрапингом и прогоняла миллионы страниц в день через headless Chrome. Боль была конкретной: на одном сервере помещалось 15 инстансов Chrome. Каждый — отдельный процесс с рендерингом, композитингом и пятью подпроцессами, которые никому в headless-режиме не нужны.

Идея простая: если убрать CSS, layout, painting и GPU-слой — останется HTTP + HTML-парсер + DOM + JavaScript. Это и есть Lightpanda. Браузер для машин, а не для людей.

Бенчмарки — впечатляющие, но с оговоркой

Все бенчмарки проведены на AWS m5.xlarge (Ubuntu), исходники и методология открыты в репозитории demo.

Краулер (933 страницы, chromedp, Go):

  • 1 процесс: Lightpanda 51 сек, 27 МБ RAM | Chrome 82 сек, 1.3 ГБ RAM
  • 100 параллельных процессов: Lightpanda 5 сек, 410 МБ | Chrome 69 минут, 4.2 ГБ

Разница в параллельном режиме — не проценты, а порядки. Chrome на 100 вкладках работал больше часа. Lightpanda — пять секунд.

E-commerce (Puppeteer/CDP, 100 итераций):

  • Chrome: 18,551 мс (185 мс/запуск), пик 402 МБ RAM, CPU 158%
  • Lightpanda: 1,698 мс (16 мс/запуск), пик 21 МБ RAM, CPU 4.6%

11x по скорости, 19x по памяти. Но есть важная оговорка: e-commerce бенчмарк использовал специально созданную тестовую страницу, потому что «Lightpanda browser is not yet fully compliant» с веб-стандартами, как честно пишут авторы. То есть 11x — это не на реальном Amazon, а на странице, которую оба движка гарантированно обрабатывают корректно.

Для краулера (933 реальных страниц) цифры честнее, и там разница тоже впечатляющая — особенно по памяти.

Как устроен

Архитектура минималистичная:

  • Zig — системный язык, который команда выбрала за простоту и контроль над памятью (на HN это вызвало жаркий спор — почему не Rust?)
  • V8 — движок JavaScript (тот же, что в Chrome)
  • html5ever — HTML-парсер на Rust
  • libcurl — HTTP-клиент
  • CDP (Chrome DevTools Protocol) через WebSocket — именно поэтому работает с Puppeteer и Playwright

Никакого CSS-парсера, layout engine, GPU-композитинга. Lightpanda парсит HTML, строит DOM, выполняет JavaScript — и всё. Этого достаточно, чтобы кликнуть кнопку, заполнить форму, перехватить запрос и вытащить данные.

Установка за 2 минуты

Самый быстрый способ:

curl -fsSL https://pkg.lightpanda.io/install.sh | bash

Docker:

docker run -d --name lightpanda -p 9222:9222 lightpanda/browser:nightly

Или скачать бинарник напрямую (Linux x86_64):

curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux
chmod a+x ./lightpanda

macOS (Apple Silicon):

curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-aarch64-macos
chmod a+x ./lightpanda

Как использовать

Запустить CDP-сервер:

./lightpanda serve --host 127.0.0.1 --port 9222

Подключиться через Puppeteer — тот же код, что для Chrome, только endpoint другой:

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();
console.log(title);

await page.close();
await browser.disconnect();

Или просто вытащить HTML:

./lightpanda fetch --obey-robots https://example.com

Флаг --obey-robots — приятная деталь: браузер из коробки уважает robots.txt. Chrome headless этого не делает.

Подводные камни

Сегфолты. Issue #1304 озаглавлен прямо: «Very unstable, the browser is crashing frequently in segmentation faults». На ARM64 с 64K page kernel — отдельный баг (#1370). Это бета, и она ведёт себя как бета.

Нет скриншотов и PDF. page.screenshot() и page.pdf() не работают — Lightpanda не рендерит визуально. Для AI-агентов, которым нужна визуальная верификация (а таких всё больше), это стоп-фактор.

CORS не реализован. Issue #2015 открыт. Если ваши страницы делают cross-origin запросы — а они почти наверняка делают — будут проблемы.

Multi-client баг. Закрытие одного CDP-соединения убивает все остальные (#1892). Для сценария «один процесс, много агентов» это критично.

WebSocket не определён. Issue #1952 — если страница использует WebSocket (чаты, нотификации, real-time данные), Lightpanda упадёт.

Playwright — с оговорками. Авторы предупреждают: Playwright использует промежуточный JS-слой, который адаптирует стратегию выполнения под возможности браузера. Когда Lightpanda добавляет новые Web API, Playwright может маршрутизировать на ещё нереализованные фичи — и скрипт сломается.

AGPL-3.0 лицензия. Если вы встраиваете Lightpanda в коммерческий продукт, который вы распространяете — придётся открывать исходный код или покупать коммерческую лицензию.

Альтернативы

  • Browser Use — Python SDK для AI-агентов поверх обычного Chrome/Playwright. 78K+ звёзд, проверенный подход. Медленнее и тяжелее, зато 100% совместимость с вебом. Если стабильность важнее скорости — это выбор.

  • Browserless — облачный headless Chrome как сервис. Зрелый продукт с готовой инфраструктурой, но $200+/мес за серьёзные объёмы. Для тех, кому лень поднимать своё.

  • Browserbase — облачная браузерная инфраструктура, поддерживаемая Y Combinator. Фокус на AI-агентов, интеграция со Stagehand. Дороже, чем self-hosted, но без головной боли с масштабированием.

  • Steel.dev — open-source cloud browser API. Позиционируется как «Browserbase, но с открытым кодом». Раньше по функционалу, но активно развивается.

Вердикт

Если ты гоняешь сотни headless Chrome инстансов для скрапинга или AI-агентов и платишь за серверы больше, чем за модель — Lightpanda стоит попробовать в staging прямо сейчас. На 100 параллельных задачах разница в 800 раз по скорости — это не оптимизация, это другая лига.

Но в продакшен рано. Сегфолты, отсутствие CORS, баг с мульти-клиентом — всё это говорит «бета». Подожди версию, где закроют хотя бы #1304 и #2015. А если тебе нужны скриншоты для визуальной верификации — Lightpanda пока вообще не вариант, смотри на Browser Use.

Как попробовать

  1. Установить: curl -fsSL https://pkg.lightpanda.io/install.sh | bash
  2. Запустить CDP-сервер: ./lightpanda serve --host 127.0.0.1 --port 9222
  3. Подключить Puppeteer: puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222" })
  4. Попробовать краулинг: ./lightpanda fetch --obey-robots https://news.ycombinator.com
  5. Прогнать свой Puppeteer-скрипт и сравнить время/память с Chrome — результат удивит
$ ls ./related/

Похожие статьи

subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe