moli: A production-ready headless browser for AI agents that builds layout and pixels only on demand.
What problem it solves
Browser automation for AI agents often requires a full visual rendering stack even when a task only needs page structure, text, or DOM state, which raises resource use and slows down common operations. Moli addresses this by treating the native DOM and style state as the single source of truth and triggering layout or software paint only for operations that genuinely need them, while still exposing standard automation protocols and real visual capabilities on request.
Key features
On-demand layout and rendering — Moli skips layout and paint for structure-first work and builds real geometry, hit-testing, screenshots, and screencast frames only when a request asks for them, keeping only the latest frozen layout tree.
Source: README, moli-layout
Complete web runtime — The kernel includes streaming HTML parsing, a native DOM, V8 JavaScript, CSS cascade, networking APIs, cookies, WebCrypto, and profile-scoped storage, implemented as a standalone Rust browser rather than a Chromium wrapper.
Source: README, moli-core
Unified automation protocols — CDP, WebDriver Classic, and WebDriver BiDi share one kernel and scheduler on the same endpoint, so clients such as Playwright can connect directly without separate driver or browser installations.
Source: README, moli-protocol-server
Extraction-focused outputs from the CLI — The CLI produces HTML, Markdown, JSON, semantic text trees, and frame-aware serialization, with selector, script, and response waits plus network tracing for agent-friendly results.
Source: README, moli-html2md
Explicit cost controls — Optional visual and media resource families, persistence, proxies, timeouts, and user-agent overrides are opt-in, so each workload only pays for the capabilities it enables.
Source: README
Quick start
Copied verbatim from the project's README.
curl --proto '=https' --tlsv1.2 -fsSL \
https://github.com/lexmount/moli/releases/latest/download/moli-installer.sh | shmoli fetch \
--dump markdown \
--wait-until done \
https://example.comWho it may suit
This may suit teams building browser-use agents, crawling or retrieval pipelines, evaluation environments, and reinforcement-learning workloads that need page structure rather than a continuously rendered visual state.
Topics to discuss
Which agent workloads would benefit most from structure-first fetching with layout enabled only on demand, and where does that trade-off break down?
How should a headless browser balance standard automation protocol compatibility against behaviors that are intentionally not implemented, such as pixel-for-pixel Chrome parity?
What operational controls and diagnostics do agent developers need most when running headless browsers in production pipelines?
Written by ReadmeX AI from the project's README, source and public GitHub data; it may contain mistakes.
Read the original README https://github.com/lexmount/moli#readme
ReadmeX opened this community for a trending project; it is not run by the project. Maintainers can claim it from the community page.
Comments
…