JET BROWSER · RUNTIME REPORT 01
a small browser boundary,
measured honestly.
Architecture, reproducible container runtime measurements, exact source pins, environment normalizations, and the limits of what these numbers establish.
- captured
- 2026-10-07
- runs
- 1 warm-up + 7 measured
- host
- isolated Linux x86_64
- license
- Apache-2.0
01abstract
Jet Browser is a self-contained WPE WebKit runtime for agent harnesses. Its standalone contract is deliberately narrow: one isolated browser session per container, ordered JSON commands on standard input, and machine-readable results on standard output. It does not require MASAKA identity, billing, scheduling, or a hosted control plane.
On one pinned offline fixture and one host, Jet recorded the lowest median time to a verified browser page and the lowest active container-memory snapshot among four measured self-hosted runtime images. Those results describe cold runtime cost under this method; they do not establish end-to-end agent quality or public-site compatibility.
02runtime boundary
| Execution | One browser session per standalone container |
|---|---|
| Protocol | Versioned JSONL commands over stdin/stdout |
| Browser | WPE WebKit 2.54 on headless Wayland |
| Included | Navigation, state, bounded script, screenshot, native input, tabs, file selection |
| Application-owned | Agent loop, identity, credits, scheduling, profiles, artifacts, live view, human takeover |
03benchmark method
The comparison starts each warmed local image with the same Docker limits and a container-local fixture. Ready time begins at docker start and ends only after the title and DOM marker are verified. The same sample then verifies JavaScript execution and a non-empty screenshot; active working-set memory is sampled while that verified page remains open.
- task
- offline fixture: title + DOM + script + screenshot
- resources
- 2 CPU · 1 GiB · 256 MiB shm · 512 pids
- viewport
- 1280 × 800
- concurrency
- 1
- run order
- Jet → Browser Use → Steel → Browserless
- system
- Linux 7.0.0-28 · Xeon Gold 6538Y+ · Docker 29.5.3
All 28 measured samples passed their title, DOM, JavaScript, and screenshot checks. A failed or unverified sample would not be reported as a successful timing.
04results
| Runtime | Passed | Ready median | Active memory median |
|---|---|---|---|
| Jet Browser | 7 / 7 | 1,445.25 ms | 189.6 MiB |
| Browser Use | 7 / 7 | 6,374.59 ms | 283.8 MiB |
| Steel Browser | 7 / 7 | 8,490.13 ms | 424.9 MiB |
| Browserless | 7 / 7 | 5,292.05 ms | 402.2 MiB |
Bounded conclusion. Relative to the next result in each column, Jet used 72.7% less ready time and 33.2% less active memory on this host and task.
05environment normalizations
Normalizations were limited to making a pinned upstream image runnable on this host without changing its browser implementation or timed task.
- Browser Use: a permission-only overlay restores read/traverse access to its ACL-built
/apptree; its declared/datascratch volume uses a 64 MiB tmpfs because the host driver cannot set POSIX ACL xattrs. Startup temporarily normalizes root traversal, then returns to the image's defaultbrowseruseuser. Default extensions are disabled for the offline fixture. - Browserless: startup normalizes OCI root traversal, then returns to the image's default
blessuser. - Steel: the runner uses the official
/v1/sessionsboundary and the returned browser WebSocket. - Jet: the pinned repository builds its standalone image and uses the same JSONL runtime boundary documented for users.
06pinned sources
| Runtime | Version / commit | License | Image digest |
|---|---|---|---|
| Jet Browser | afcb22bf2a1ad75d76da88475d0db1f7ebc9e5c7 | Apache-2.0 | ae9b473c26e39291… |
| Browser Use 0.13.11 | 914c59bdd4acd50e9628a97a96a3919313aebc85 | MIT | 24ec14760d250b1f… |
| Steel 0.5.3 | 1131a0222a27f391bf8f27cca6f278ddf7ace8dd | Apache-2.0 | 26be1193d1f200f6… |
| Browserless 2.57.0 | f7edf0f526e5fefa2db8abca22f47b32ac165c89 | SSPL / commercial | 6bac628b3d8293f8… |
| Stagehand 4.0.0 | fdd179582b6b1f9e43c3d18ad27917cf2e66631e | MIT | not measured |
Stagehand is covered in the product comparison but excluded from the runtime chart because its extension plus hosted/model-backed action stack is not an equivalent standalone browser-runtime boundary.
07limitations
- The fixture is local and offline. It does not measure public-site success, anti-bot behavior, proxy quality, or hosted network latency.
- The comparison measures browser runtime, not model reasoning, token use, action accuracy, or the quality of an agent harness.
- Jet uses WPE WebKit while the measured alternatives use Chromium. Extension support, site compatibility, and CDP-specific behavior require separate evaluation.
- Memory is one active working-set snapshot, not peak RSS or a long-duration leak test.
- Run order was fixed rather than randomized, concurrency was one, and the test does not establish fleet throughput.
- The result is reproducible evidence for this boundary, not a universal performance ranking.
08reproduce
The public source repository contains the source lock, Dockerfiles, runner, chart generator, raw results, and tests that reject an unverified sample.
git clone https://github.com/masakaai/jet-browser.git
cd jet-browser
npm ci
npm run standalone
npm test