Bare-metal · Rust · QuickJS

Zero-overhead browser execution for agent swarms.

A hard-boiled headless engine in pure Rust. No DOM tree, no GPU, no C++ legacy. Just a flat Structure-of-Arrays ECS over a Unix socket, exposed as a REST API for LLM agents that run at scale.

~4 MB
Static binary
~6 MB
Idle RSS
17,215/s
Soak G1 single-page
543×
vs Playwright soak
Design decisions

No tree. No paint. No bloat.

EntityArray (SoA)

11 parallel Vecs — ids, xs, ys, widths, heights, z, styles, state tags, content hashes, content offsets, packed content. Single bincode call.

Ghost-Fleet QuickJS

OnceLock JS sandbox, lazy 2–4 workers, 5 s idle TTL, native fetch bridge, ECS↔JS hydration for SPAs and challenge scripts.

High-Fidelity Client Fingerprinting

Integrated a native-tls JA3 identity engine with automated HTTP/2 window negotiation and adaptive User-Agent rotation.

FrameDelta wire

State-tagged entities — STATIC omitted, MOVED ≈22 B, CHANGED full, REMOVED 3 B. 30 wire variants in fixed discriminant order.

Pre-serialized cache

LRU caches raw DaemonMessage bytes. tab_id patched at offset 4. Zero-clone, zero-encode on a hot hit.

Action log + selectors

Every click/input logged as ActionEntry, auto-prunes at 1000. ClickSelector by role/intent/text is stable across re-renders.

Stable · 0 KB leak / 200 navs

Strip the browser. Keep the web.

Run the daemon, point your swarm at it, watch your bills evaporate.

Try the demo