Headless tarayıcılar yapay zekâ yığınının en gösterişsiz katmanı ve giderek bir ajanın gerçekte ne yapabileceğini belirleyen katman hâline geliyor. On yıldır varsayılan cevap Chrome oldu: çatalla, arayüzü sök, konteynere sığacağını um. Lightpanda'nın iddiası, doğru cevabın hiç arayüzü olmamış bir tarayıcı olduğu.
Proje cumartesi günü GitHub'ın trend sayfasının zirvesinde yer aldı: bir günde 827 yıldız, toplamda yaklaşık 36.000 yıldız ve 1.700 çatal. Sıfırdan Zig ile yazılmış bir headless tarayıcı — Chromium çatalı değil, WebKit yaması değil. Grafik işleme motoru hiç yok. JavaScript V8 üzerinde çalışıyor, HTML html5ever ile ayrıştırılıyor, sayfalar libcurl ile çekiliyor. Geriye otomasyonun gerçekten dokunduğu yüzey kalıyor: DOM, XHR ve fetch, çerezler, tıklama, form doldurma, ağ müdahalesi, proxy, reklam engelleyici, isteğe bağlı robots.txt denetimi ve iki otomasyon protokolü: Chrome DevTools Protocol ile WebDriver BiDi.
Satıcının kıyaslamaları ana argüman. AWS m5.large üzerinde 933 gerçek sayfa üzerinden 100 sayfa için tepe bellek 2 GB'lik headless Chrome'a karşı 123 MB ölçülmüş; 100 sayfa 46 saniyeye karşı 5 saniye sürmüş. Yani kabaca 16 kat az bellek, 9 kat hız. Bu, bağımsız bir denetim değil, satıcının kendi sayfa karışımıyla yaptığı bir kıyaslama; bu tür testlerde her şeyi sayfa karışımı belirler.
Daha ilginç tasarım kararı haziranda geldi: `lightpanda agent`. Görevi düz dille anlatıyorsunuz, tarayıcı kendini yönetiyor: sayfalarda geziyor, akışlarda tıklıyor, formları dolduruyor, yapılandırılmış veri çıkarıyor. Sağlayıcıdan bağımsız: Anthropic, OpenAI, Gemini, Vertex AI, Mistral, Hugging Face, Vercel AI Gateway, OpenRouter, `OPENAI_BASE_URL` ile herhangi bir OpenAI uyumlu uç nokta veya Ollama ve llama.cpp üzerinden yerel modeller; yalnızca tarayıcıyı isteyenler için `--no-llm` REPL'i de var.
Asıl mesele ajan oturumunun ne ürettiği. Yapılan iş bir PandaScript olarak kaydediliyor: Lightpanda'ya derlenmiş küçük bir yerel tarayıcı ilkelleri kümesiyle düz JavaScript. `/save` ile kaydedin, `lightpanda run script.js` ile yeniden oynatın. Tekrarlar deterministik ve jeton harcamıyor; model bir kez, programı yazmak için kullanılıyor. README'nin deyişiyle: "LLM ile prototipleyin, çıktıyı üretime model olmadan gönderin."
Aynı mantık MCP sunucusunda da görünüyor. Stdio üzerinden tek bağlantı; `lightpanda mcp --port 9223` ile HTTP olarak servis ediliyor ve her `Mcp-Session-Id` kendi gezinti oturumunu — kendi sayfasını, çerezlerini ve belleğini — alıyor. Böylece iki ajan artık birbirinin sekmesini ezmiyor. Aynı kimliği gönderirseniz bilinçli olarak tek bağlamı paylaşıyorlar.
Uyarılar küçük değil. Lisans AGPL-3.0. Telemetri varsayılan olarak açık ve kapatmak için `LIGHTPANDA_DISABLE_TELEMETRY=true` gerekiyor. Yerel Windows ikilisi yok (yalnızca WSL), Android veya Termux derlemesi yok, Linux ikilileri glibc'ye bağlı olduğu için Alpine bağlayıcı hatasıyla düşüyor. `--dump png` ekran görüntüsü değil, sayfanın yalnızca metin tabanlı bir render'ı. En önemlisi, özellik listesi Chrome'unkinden kısa ve projenin her gün yayımladığı Web Platform Tests sonuçları boşlukların dürüst skor tabelası; başarısız olanlar genellikle gerçek siteleri bozan tarayıcı API'leri oluyor.
Neden önemli: modeli ve tarayıcıyı tek süreçte birleştirmek, sonra oturumu yeniden oynatılabilir kod olarak kaydetmek, bir ajan koşusunu opak bir sohbet dökümünden inceleyebileceğiniz, diff'leyebileceğiniz ve CI'da çalıştırabileceğiniz bir esere dönüştürüyor. Tuzak ise her crawler ekibinin bildiği tuzak: web deterministik değil. Seçiciler kayar, onay duvarları değişir, hesaplar dolar. Kaydedilmiş bir betik, yalnızca kaydedildiği sayfa kadar sağlamdır.




