69 ns to decide.
Every number names its clock.
The decision runs in memory. The page comes from the edge. The paint, the test gate and the ship are each timed on their own clock, with a date and a source. A number measured on one clock is never quoted as another.
The best we have measured, clock by clock
Best and latest sit in separate columns. Where a number has slipped since its best, the slip is printed beside it. The same rows as JSON: /speed.json.
| What | Best | Before | Latest | Sample · source |
|---|---|---|---|---|
| Routing decision — follow_route over the real production graph (357 edges) decision in RAM | 69 ns 2026-09-17 | 1.2–1.6 s as a live TypeDB query | same as best | 100,000 iterationstext/ram.md |
| A prerendered page — /speed, served from the edge time to first byte, production | 71 ms median 2026-09-25 | — | same as best | n=7, sequential, unique nonce, Bangkok edgetext/speed.md § story_shape |
| The home page — one.ie/ time to first byte, production | 78 ms median 2026-09-25 | 366 ms median (2026-08-20) · 832 ms while the worker ran in Virginia (2026-09-25) | same as best | n=7, all 200, Bangkok edge, worker at the local edge; /signin control 74 mstext/speed-results.md § 12 B |
| A tenant page — one.ie/u/one time to first byte, production | 248 ms median 2026-09-25 | 2,246 ms (n=1, 2026-08-19) → 1,292 ms (2026-08-20) → 2,692 ms in Virginia (2026-09-25) | same as best | n=7, all 200; range 233–362 mstext/speed-results.md § 12 C |
| The chat page on desktop — one.ie/chat largest paint, Lighthouse, production | 874 ms · Performance 99 2026-08-20 · directional | 3,143 ms · 76 | 1,075 ms · 98 2026-09-25 | 3 samples, deploy advisory step; latest from a /speed run on a quiet boxtext/speed-results.md § 12 E |
| The home page on desktop — one.ie/ largest paint, Lighthouse, production | 649 ms · Performance 100 2026-09-25 | 3,035 ms · 67 (2026-08-19) → 933 ms · 99 (2026-09-24) | same as best | best of 3, /speed run on a quiet box (load 2.9 on 10 cores)one.ie/web/src/data/speed-latest.json |
| The home page on a phone — the weakest surface largest paint, Lighthouse, production | 2,494 ms · Performance 94 2026-09-25 | 3,412 ms · 85 (2026-08-20) → 4,390 ms · 75 (2026-09-24) | same as best | best of 3, /speed run on a quiet box (load 2.9); the h1 now plain HTML, the island client:onlytext/perf-baseline.prod.json |
| The (slug, ts) index on the messages read database read, production | ~16× faster, 51× fewer rows read 2026-08-20 | — | same as best | identical query as controltext/speed-results.md § 1 |
| The full web test suite (~1,135 files) test gate, vitest Duration | 87.3 s 2026-09-01 | 518 s | same as best | same tree, all greenCLAUDE.md § Tests |
| The ship gate — tests only what changed since the last green gate test gate, vitest Duration | 17.2 s 2026-09-23 | 161 s (full vitest gate on the same release) | same as best | 139 files, 7f3d258a5..c8c439bc6CLAUDE.md § The dev → prod loop |
| A ship, operator time commit to production | ~61 s 2026-09-05 | 227 s | same as best | Lighthouse check detached from the shipCLAUDE.md § The dev → prod loop |
Directional: the source measured it on a busy machine and has not yet re-run it on a quiet one. The one journey behind these numbers, phase by phase: /speed-metrics.
The latest run
One run of /speed at 2026-09-28 05:06 UTC. It frees the box, warms production, then reads first byte on every route from the BKK edge. Lighthouse runs after that, in the background.
First byte · median of 7 · production
| /signin | 159 ms | 7/7 ok · 133–196 ms |
| / | 159 ms | 7/7 ok · 135–267 ms |
| /chat | 152 ms | 7/7 ok · 139–362 ms |
| /speed | 142 ms | 7/7 ok · 131–150 ms |
| /speed.json | 140 ms | 7/7 ok · 125–172 ms |
| /u/one | 443 ms | 7/7 ok · 332–1350 ms |
Lighthouse · best of 3 · production
| / desktop | perf 100 · LCP 397 ms · TBT 0 ms · CLS 0.001 · 528 KB |
| /chat desktop | perf 80 · LCP 3622 ms · TBT 0 ms · CLS 0.003 · 870 KB |
| / mobile | perf 72 · LCP 1791 ms · TBT 1313 ms · CLS 0.007 · 529 KB |
Run at 2026-09-28 05:10 UTC, on a quiet box (load 4.89 on 10 cores). regression beyond the noise band (advisory).
Box at the start: load 6.29 on 10 cores, 62% memory free, room for 1 test gate. The same file as JSON: /speed.json.
Cost is a clock — D1 rows per day
On 2026-09-25 production read 282M rows in a day on a plan that allowed 5M, and every tenant page went down. Nothing measured rows; this does. Read at 2026-09-25 08:21 UTC, paid plan (25B rows read/month, 50M written/month — billed past it). Red at 50.0% of the daily share, warn at 25.0%.
| one-owners | 50,329,753 read | 357,891 written |
| claw | 26,960 read | 3,032 written |
| one | 10,378 read | 0 written |
The five statements that read the most
| 43,062 rows/run | × 415 | SELECT COUNT(*) AS n FROM agent_events_warm WHERE slug = ? AND visitor_hash = ? |
| 17,173 rows/run | × 294 | SELECT (SELECT region FROM agent_events_warm WHERE slug = ? AND visitor_hash = ? AND region != '' ORDER BY ts DESC LIMIT ?) AS region, MAX(t |
| 24,919 rows/run | × 194 | SELECT thread_id, id, role, substr(content_json, 1, 8000) AS content_json, ts, total FROM ( SELECT thread_id, id, role, content_json, ts, RO |
| 144,540 rows/run | × 8 | SELECT event, COUNT(*) AS n FROM agent_events_warm WHERE ts > ? GROUP BY event ORDER BY n DESC LIMIT ? |
| 306 rows/run | × 1396 | SELECT t.id AS id, t.last_msg_at AS ts, t.agent_id AS agentId, (SELECT content_json FROM messages m WHERE m.thread_id = t.id ORDER BY m.ts D |
Re-run: bash .claude/scripts/d1-budget.sh --write. The 24-hour window rolls, so a fix shows in full a day after it ships.
Speed
Speed is a measurement. Not a claim.
The page times itself while you read: page load, first token, latest audit — dated, reproducible, measured on the surface making the claim. The bars carry the proportions; ask the chat for the figures, dates attached.
Live — your browser measured this
Lighthouse measured
Against the competition, 2026-07-19 — fast network (rttMs=40, 10Mbps, 4× CPU)
Matches the config quoted in our own speed claims — so competitors aren't run under a harsher preset than we are.
| Site | Perf | A11y | Best Practices | SEO | TBT |
|---|---|---|---|---|---|
| one.ie/chat | 94 | 90 | 96 | 100 | 0ms |
| platform.openai.com/playground | 62 | 96 | 81 | 91 | 400ms |
| claude.ai (→ /login) | 26 | 97 | 54 | 92 | 1,280ms |
| chatgpt.com | 44 | 91 | 73 | 92 | 450ms |
Run-to-run variance is ±5 points on this test rig; differences under 5 are noise, not signal.
Against the competition, 2026-07-19 — Slow 4G (Lighthouse's stock mobile preset)
The harsher, default test. Our Performance score drops under a throttled connection too — everyone's does — but the gap to competitors holds.
| Site | Perf | JS + assets transferred |
|---|---|---|
| one.ie/chat | 79 | 545 KB |
| chatgpt.com | 93 | 364 KB |
| platform.openai.com/playground | 37 | 969 KB |
| claude.ai | 26 | 6,132 KB |
How to re-run this yourself
Every Lighthouse number on this page comes from a CLI run against a live URL. The first-byte numbers are plain curl -w %{time_starttransfer} reads, run one at a time with a unique query string so no cache answers for the page.
Raw reports: text/build/lighthouse/*.report.json. Full write-up: text/build/lighthouse/comparison.md.
What I'll be honest about
Three gaps in this proof, named upfront — a caveat you find yourself costs more trust than one we hand you.
- ·ChatGPT now beats us on Slow 4G — 93 vs our 79, and a lighter payload (364 KB vs our 545 KB). Their page got dramatically lighter since our last check in May (it was 4.4 MB then). That's a real change on their end, not a mistake on ours, and we're naming it instead of quietly re-quoting the old comparison.
- ·Our own scores softened too — Accessibility 95→90, Best Practices 100→96 since May. On the follow-up list, not swept under the rug.
- ·claude.ai's score is for its logged-out /login redirect, not the authenticated chat app — an unauthenticated visitor never sees the heavier real interface, so the comparison likely undersells how much heavier Claude's actual app is.
- ·asi1.ai's numbers in the panel above are estimated, not measured — hover the bar and it says so. We haven't run Lighthouse against it yet; treat that row as a placeholder until it is.
"The faster you go, the more it feels like a different product."