Moli is a headless browser for AI agents that fetches and extracts web pages, searches the web, and automates browser tasks. It is a standalone browser kernel written in Rust rather than a Chromium wrapper, and it runs on Linux, macOS, and Windows. Agents drive it through a CLI or through CDP, WebDriver Classic, and WebDriver BiDi, which all share one endpoint, so Playwright connects directly over CDP with no separate driver or browser install.
The design is structure first, pixels on demand. Most agent requests (extracting HTML or Markdown, querying the DOM, running JavaScript, inspecting network and storage) read the native DOM and style state directly and never trigger layout or paint. Reading an element's geometry runs one layout pass and keeps only the latest frozen layout tree, and a screenshot rebuilds from the current DOM, renders one frame, and discards the paint state. Layout, screenshots, and optional media resources stay off unless a flag enables them.
Under that model it keeps a full web runtime: streaming HTML parsing, V8 JavaScript, iframes and workers, the CSS cascade through Servo's Stylo, Fetch, XHR and WebSocket, cookies, WebCrypto, and profile-scoped storage. The CLI writes Markdown, HTML, JSON, a compact semantic tree for models, screenshots, and PDFs. Moli is the open-source engine behind Lexmount's managed cloud browser and works on its own without it.
| Browser | Useful pages (of 192) | Success rate | Median time | Median memory |
|---|---|---|---|---|
| Moli | 103 | 53.6% | 1.43 s | 73 MiB |
| Chrome Headless | 101 | 52.6% | 1.43 s | 773 MiB |
| Lightpanda | 85 | 44.3% | 0.97 s | 40 MiB |
| Obscura | 57 | 29.7% | 1.30 s | 39 MiB |
On the Lexbench-Headless-Browser suite of 1,308 comparable tasks, Moli passed 81.9% against Chrome's 99.8%, Kitesurf's 62.1%, and Lightpanda's 53.3%, using about 15% of Chrome's CPU time and 13% of its peak memory. It deliberately has no GUI or GPU compositor and does not aim for pixel parity with Chrome or high-fidelity Canvas, WebGL, or media playback.
Features
- On-demand rendering: DOM-first by default, with layout and paint built fresh only when geometry or pixels are requested
- Three automation protocols: CDP, WebDriver Classic, and WebDriver BiDi on one endpoint
- Playwright compatibility: Playwright connects over CDP without a separate browser install
- Extraction outputs: HTML, Markdown, JSON, semantic text trees, and frame-aware serialization with selector, script, and response waits
- Visual output: viewport and full-page screenshots, paginated PDFs, and DevTools screencast frames
- Web runtime: V8 JavaScript, workers, CSS cascade, Fetch, WebSocket, cookies, WebCrypto, localStorage, and IndexedDB
- Cost controls: layout, media resources, and persistence are opt-in per workload
- Operational options: profiles, HTTP cache, proxies, connection limits, timeouts, private-network policy, and network tracing
- Agent skills: packaged skills let an agent install Moli and fetch pages
- WebMCP playground: a CLI to list and call a site's native WebMCP tools

