Sparsh

Performance

Every measured number, with the instrument that produced it.

Every figure on this site is read from docs/perf/data/*.jsonl when the page is built. None is typed. Those files are appended by the test harnesses themselves, one JSON line per run, each carrying the commit that produced it.

A claim without an instrument is a hope, not a claim.

Latency

Two headless peers over loopback on one Apple M5 Pro.

WhatValue
application round trip, median of 300.21 ms
the same, p950.54 ms
cold connect, process start to first byte0.59 s
warm first byte, second file on the same session0.7 ms
a tools/call through the whole MCP chain, median0.67 ms
the same, p951.15 ms

The round trip is at the floor. A fraction of a millisecond over loopback is the runtime and the kernel, not the protocol, so effort spent optimising messaging would be effort wasted.

The MCP figure is the interesting one. It crosses four process boundaries: your agent, the sparsh mcp pipe, the Unix socket, the daemon, the channel, the far daemon, and the exposed server's stdin. All of that costs about half a millisecond above the raw channel.

Throughput, and why one number is a lie

A transfer costs a fixed amount plus a rate:

seconds = fixed + size / rate

Measured: the fixed part is roughly 3.3 to 3.6 s in a browser and 0.59 s headless. So a single megabits figure at a single file size is the two mixed together, and which one it mostly reports depends on the size.

FileComposite rateHow much is the fixed cost
32 MiB60 Mbpsmost of it
128 MiB173 Mbpsabout half the seconds
512 MiB287 Mbpsabout a fifth

The same wire does 368 to 379 Mbps steady state. Every 128 MiB row understates it, and overstates the effect of any change.

So quote the size with the number, and quote the instrument too. At 512 MiB one harness measures 287 Mbps and another measures 394 on the same machine, because one instruments both pages and the other only the sender.

Real devices

RouteRate
Mac to Android, 1.59 GB, local network9 to 17.8 MB/s
Mac to Mac, loopback46.8 MB/s

No iPhone row exists yet. When one does it will appear here, because this page reads the ledger rather than describing it.

The rules

  1. A regression under 10% is noise on one machine. Run it twice. The rows span plus 15.7% to minus 10.1% around their median, which is why the gate takes a median of three rather than trusting one.
  2. Never quote one run at one size.
  3. Label everything: measured has an instrument, a date and a device; verified was read in a primary source and cited; suspected is a hypothesis with a plan to test it.

On this page