From bac70f376ef539a03a25e187f706fe8f9f67f01e Mon Sep 17 00:00:00 2001 From: eunhhu Date: Sun, 27 Sep 2026 19:45:25 +0100 Subject: Record the messenger between two nodes and its latency (089) The roadmap's E2EE messenger made of the runtime's general parts, with no messenger code in it: sealed, authenticated sessions between nodes (086, 088), Vega on each node's display as a surface (design 010), the app in Vega's examples. Vega's check runs two nodes through a recording relay: a line typed on one display is drawn on the other, frames match the vega command's, and the relay sees no text. A line takes 0.79 ms at p50 and 1.1 ms at p99 from one node's program to the other node's views with stores in RAM, both commits, the HTTP delivery and the seal included (sealing adds nothing measurable); on the Pi's SD card 3.5 ms at p50, the long tail being the card's syncs. --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index bf9c167..b9fa6e4 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,14 @@ terminal UI, a CLI, spoken sentences and a web page through [Vega](/srv/git/vega durable, a commit being one contiguous write and one sync; views are read from a snapshot of the last save, so reads never wait for a sync. What an app sends is saved with its event and delivered over HTTP in order and in batches, and a receiving app applies each message once; sealed to the receiver's key (HPKE, one session a wire, -authenticated by the sender's key), no relay between them can read or change it, at the speed of unsealed sends. Measurements against axum and drogon on a Raspberry Pi 5 +authenticated by the sender's key), no relay between them can read or change it, at the speed of unsealed sends. +People use a node through surfaces it runs, reading its states where they are (Vega's display: a two-node messenger +shows a line on the other node's screen in about a millisecond). Measurements against axum and drogon on a Raspberry Pi 5 are in [075](docs/research/075-http-host-against-axum.md), [077](docs/research/077-apps-as-http-services.md), [080](docs/research/080-snapshot-reads.md), [081](docs/research/081-tail-records.md), [082](docs/research/082-json-in-place.md), [083](docs/research/083-delivery-over-http.md), -[086](docs/research/086-sealed-sends.md), [087](docs/research/087-small-reads-and-idle-memory.md) and -[088](docs/research/088-sealed-sessions.md); the status table is +[086](docs/research/086-sealed-sends.md), [087](docs/research/087-small-reads-and-idle-memory.md), +[088](docs/research/088-sealed-sessions.md) and [089](docs/research/089-messenger.md); the status table is [CHECKPOINT.md](CHECKPOINT.md). The source follows the principle below, a small core with the rest selected around it -- cgit v1.2.3