> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beta.b3os.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Benchmarks

How B3OS measures latency, the targets each product is held to, the dev baselines behind them, and what will be published as results.

B3OS sells speed, so its numbers have to survive scrutiny. This page is the method. It holds no product results yet: the products are being built and measured, and a result appears here only once it meets the [measurement rules](/concepts/timing#how-b3os-measures-before-it-publishes), with raw data next to it.

## The loop

The headline benchmark is an agent's loop, not a single call. Each task runs N turns; each turn is a streamed chat completion on a named model with a fixed prompt and token count, plus one tool call that rotates among a sandbox command, a scrape (of a local fixture and of one real site) and a browser action in a session. It reports per-turn and per-task p50 and p95, the share of time spent in transport versus compute, at least 30 tasks, and the raw JSONL.

It runs in three configurations:

| Configuration | Harness | Calls |
|---|---|---|
| A | In a B3OS sandbox on the node | B3OS products and the node's model, over vsock |
| B | In AWS us-west-2 | B3OS through the edge |
| C | The same harness in AWS us-west-2 | Incumbents through their own SDKs: the same open model on an OpenAI-compatible host, E2B, Firecrawl and Browserbase |

Per-hop multipliers are never shown without the per-turn numbers they come from.

## Targets

Every figure below is a **target** from the B3OS build contract, server side and p50 unless noted. None is a result. Each will be published with its arrival rate or concurrency, payload size and pool depth, in the three regimes (back to back, after idle gaps, under mixed load), with idle-gap numbers for every microsecond target.

| Product | Operation | Target |
|---|---|---|
| Vision | Cache hit | 10 ms |
| Vision | Plain fetch, HTML up to 300 KB | Time to last byte plus 25 ms, extraction timed separately |
| Vision | Browser: navigate, ready, HTML, Markdown, against a replayed corpus | 300 ms |
| Vision | Claim a context from the scrape pool | 5 ms, p99 15 ms, pool depth stated |
| Vision | Overhead per browser action in a session | 1 ms |
| Render | Styled screenshot, 1600x900, JPEG or WebP, quiet window included | 150 ms |
| Render | Each extra variant of the same capture | 30 ms |
| Render | 10-second scripted demo / 30-second narrated demo, on a cached app | 5 s / 8 s |
| Sandboxes | Claim and run the first command, at idle and under 100-claim bursts | 5 ms |
| Sandboxes | Pause or resume | 1 ms |
| Sandboxes | Fork, up to 128 MiB of memory and 64 MiB dirty | 50 ms |
| Routines | Dispatch a pure step, 1 KB | 20 µs (p99 1 ms) |
| Routines | Call an action on the same node, 1 KB | 60 µs |
| Routines | Durable standard step | One disk commit plus 100 µs |
| Routines | Webhook to first step | 1 ms plus one disk commit |
| Routines | Cron firing lateness | p99 5 ms |
| Actions | Declarative HTTP action overhead, responses up to 16 KB, upstream excluded | 150 µs |
| Actions | Input validation | 50 µs |
| Actions | Warm JavaScript action overhead | 0.5 ms |

Throughput targets: a million pure routine steps per second, and 100,000 durable effect records per second at 256 bytes each. Infer publishes time to first token and tokens per second for its model at stated concurrency, idle and with the other products under load.

Sandbox start-up as seen by a client will also be measured with the ComputeSDK harness from its own runners, and browsers with Browser Arena from us-east-1, so B3OS appears on the boards others use, in their measurement shape.

## Dev baselines

Before any product code existed, B3OS measured the floors these targets sit on, on the beta node itself. They were dev runs without the benchmark lock, while other work shared the machine, so they inform design and never stand in for product results. [Same-host latency](/concepts/latency) shows the decisions they drove.

| Area | Dev baseline (p50, with n) | Source |
|---|---|---|
| Sandboxes | Restore from a warm snapshot to first reply 3.26 ms (n=100); 100 microVMs from one snapshot, all ready in 32.9 ms (median of 3 bursts) | `bench/baseline/cells/summary.md` |
| Vision | Headless Chrome shell cold start 23.6 ms (n=30); usable tab 8.9 ms (n=100); navigate, load and read the DOM on a 31-page replayed corpus 242 ms (n=186) | `bench/baseline/vision/summary.md` |
| Render | 1080p frame capture 16.5 ms unthrottled (n=420), 13.8 ms with BeginFrame (n=280); screenshot 39 ms at page load, 157 ms with a 50 ms quiet window (n=25 each) | `bench/baseline/render/summary.md` |
| Platform | 4 KiB durable write 213 µs with FUA, 226 µs with fdatasync (n=240,000 each); Unix socket round trip 3.5 µs (3 runs of 100,000) | `bench/baseline/platform/summary.md` |

Each source file lists every result with its percentiles, sample size and conditions, the failures and exclusions, and the scripts to re-run it. Measured 2026-10-25 to 2026-10-26 UTC.

## Raw data

Every published result comes with the script that produced it, the raw data and an environment file recording the commit, versions, machine load and the services running at the time, under `bench/` in the B3OS beta repository.