The browser engine for agents.
Plasmate compiles HTML into a Semantic Object Model, a structured representation that LLMs can reason about directly. 50x faster than Chrome. 10x fewer tokens.
Reduced motion is enabled. Background particles are disabled.
Chrome takes 252ms. Lightpanda takes 23ms. Plasmate takes 4.
Chrome uses ~20GB for 100 concurrent pages. Plasmate uses 28MB.
Across 38 sites. Up to 864x on heavy SPAs. The DOM is verbose. SOM is not.
One file. No dependencies. 54 MB with plugins.
The DOM was built for humans
The Document Object Model represents a page as a tree of elements. It includes styling, layout, accessibility attributes, event handlers, and rendering state. All of it.
Agents don't need all of it.
The Semantic Object Model extracts what matters: structure, content, and interactive elements. It's a projection of the DOM optimized for reasoning, not rendering.
DOM
47,000 tokens
SOM
4,500 tokens
Wikipedia homepage, same page.
SOM is not lossy compression. It's a different representation for a different purpose.
7 methods. That's the protocol.
Chrome DevTools Protocol has hundreds of methods. Most exist for debugging, profiling, and human-driven inspection.
AWP has seven:
These are intents, not instructions. Plasmate handles the implementation. Your agent handles the reasoning.
If you've used Puppeteer, the API will feel familiar. The token cost will not.
CDP compatibility is included as a legacy bridge. AWP is the native protocol.
Infrastructure, not product
Plasmate is Apache 2.0 licensed. Use it, fork it, embed it, sell it.
SOM and AWP are specifications, not features. We want them implemented everywhere: in other browser engines, in agent frameworks, in production systems we'll never see.
The web has standards for documents, for styling, for scripting. It needs a standard for agents. This is that standard.
One binary. Two modes.
Embed in your agent. Call the Rust API directly.
plasmate fetch <url>
Run as a service. Connect over AWP or CDP.
plasmate serve --protocol awp
200+ tests passing. Actively maintained.
What's new
SPA rendering bridge with bidirectional V8/DOM sync. Network interception. TLS fingerprint tuning. Wasm plugin system. Multi-page sessions (50 concurrent). page.click(), page.type(), page.waitForSelector(). Auth profiles with encrypted storage. ~25K lines of Rust. 200+ tests passing.
Performance in context
| Engine | Per page | 100 pages | Memory | Binary |
|---|---|---|---|---|
| Plasmate | 4-5 ms | 405-512 ms | 28 MB | 45.8 MB |
| Lightpanda | 23 ms | 2,300 ms | ~2.4 GB | 59-111 MB |
| Chrome | 252 ms | 25,200 ms | ~20 GB | 300-500 MB |
Local harness, 100 pages, 231KB average HTML. No caching. Methodology matches Lightpanda's published benchmarks.