quoting naddr1qv…9un6Magnitude Relay: The Fastest Nostr Relay
October 2026 · by JSKitty
Vector now runs on its own Nostr relay. Real Vector traffic is answered 38× faster, Community messages land 72× sooner, and the same data takes less than half the disk. View GitHub
300× 72× 38× 59% Headroom ⚡Delivery ⚡Requests Less Disk
Relays are the servers that carry Vector's encrypted messages between devices. They can't read your DMs or Communities (everything is gift-wrapped), but they decide how fast those load, sync and arrive.
Vector's relays ran strfry, the workhorse of Nostr. It served us well, but it's built for every kind of Nostr traffic, and Vector's is specific: gift-wrapped DMs, Concord Communities, negentropy sync and live typing indicators. So we built a relay for exactly that: Magnitude Relay, sibling to Magnitude, our media server. It took over both of Vector's relays on 21–22 October. Nobody had to update a thing.
DMs and Communities Load up to 10× Faster
Same machine, same two CPU cores, the same million Vector-shaped events, every answer checked. Here's how long each relay takes to answer what Vector asks.
What Vector asks, timed. Time to a complete answer, lower is better.
strfry (before) Magnitude Relay Open a DM inbox (500 messages) 4.39 ms 0.50 ms 8.8× faster Catch up on two days of DMs 1.77 ms 0.17 ms 10.4× faster Open a Community channel (500 messages) 4.26 ms 0.41 ms 10.4× faster Scroll back through a busy Community (5 pages) 13.11 ms 1.75 ms 7.5× faster Real Vector traffic (951 requests, 4.9M real events) 17.4 ms 0.45 ms 38× faster
Benchmarks: median time to a complete answer, 2 cores each, 1M Vector-shaped events, best of 3, 21 Oct 2026. Real traffic: mean time to a complete answer for 951 requests drawn from jskitty.com's real data, both relays answering side by side.
The last row counts most. We replayed 951 requests built from jskitty.com's 4.9 million real events against both relays side by side. The answers matched, except for messages their senders or recipients had asked to delete, which strfry was still serving. Magnitude Relay averaged 0.45 ms; strfry, 17.4 ms.
How. Messages live in one append-only log that's regrouped in the background, so each DM inbox and each Community sits together on disk: a 500-message inbox is one short read, not 500 scattered ones. Indexes are compressed, checksummed blocks behind a filter that rules out misses without reading a block, and the hot paths parse JSON and hex with SIMD.
Sync up to 6.7× Faster
After time offline, Vector catches up with negentropy (NIP-77): the app and relay compare compact fingerprints, and only what's missing is sent. Magnitude Relay builds those fingerprints from its index alone, without opening a single message.
Catching up after time offline. NIP-77 sync with the app already holding 90%, lower is better.
strfry Magnitude Relay A busy DM inbox 29.9 ms 4.46 ms 6.7× faster A quiet DM inbox 0.57 ms 0.14 ms 4.1× faster
Median time per sync session, 2 cores each, relay flat out, best of 3. Busy inboxes: 512 sessions/s vs 112. Quiet inboxes: 48,085/s vs 12,365.
The relays sync each other the same way, so a message sent to jskitty.com in Helsinki reaches Vector Asia in Kuala Lumpur in under a second.
Community Messages Arrive 72× Sooner
When someone posts in a Community, the relay stores the message and pushes it to every member online. That gap is the relay's whole share of how instant chat feels.
One message, a 1,000-member Community. Live delivery, median.
Relay Time to reach every member online strfry 41.9 ms Magnitude Relay 0.58 ms
- 72× sooner for a typical message: 0.58 ms vs 41.9 ms.
- 18× sooner for the slowest 1 in 100: 6.1 ms vs 111 ms. --- 1,000 members subscribed, 4 senders, 2,000 messages/s for 20 s, 2 cores each, every delivery checked, none missed by either. 21 Oct 2026.
strfry picks up new messages for delivery in small batches, which adds tens of milliseconds to each one. Magnitude Relay delivers the moment a message is safely on disk.
Ready to Scale
Today each Vector relay averages about 34 requests and 3 new messages a second. On just two CPU cores, Magnitude Relay handles over 11,000 DM inbox loads and 29,000 new messages a second: more than 300× today's reads and 9,000× today's writes.
What one relay can carry on two cores. Work per second, higher is better.
strfry Magnitude Relay New messages stored 5,228/s 29,618/s 5.7× DM inboxes opened 1,603/s 11,267/s 7.0× Community pages loaded 1,653/s 13,213/s 8.0× Busy DM inboxes synced 112/s 512/s 4.6× Duplicate messages skipped 10,911/s 260,132/s 24×
Same machine, 2 cores each, 1M Vector-shaped events, best of 3, 21 Oct 2026. Both relays confirm a message only once it's on disk. Today's load: jskitty.com's average over 22–23 Oct.
Every message reaches each relay more than once (Vector sends to several, and the relays sync each other), so skipping duplicates 24× faster frees the relay for real work.
Proven in Production
Vector's two relays, in the 30 hours after their latest update on 22–23 October:
6,765,112 requests answered 0.23 ms average time to a complete answer 58,402,815 events delivered to apps 856,293 connections served
From each relay's public /stats, 23 Oct 2026. Answer time is measured inside the relay; the network adds its own.
Every Vector relay has a public dashboard. jskitty.com's is at jskitty.com/nostr/dashboard.
A Switch with Zero Downtime
No downtime, a way back at every step, no message lost.
- 20–21 Oct: Dress rehearsal. A hidden copy of Magnitude Relay, fed every new event live, answers real requests side by side with strfry, and catches two bugs before any user could.
- 21 Oct, 21:56 UTC: jskitty.com switches. 4,877,620 events copied over, one web server reload, strfry kept in sync behind it as a way back. Nobody is cut off.
- 22 Oct, 01:44 UTC: Vector Asia switches. The two relays now sync each other directly, typing indicators included.
- 22 Oct, midday: strfry retires on both servers after a quiet night.
Updates roll out one relay at a time, each back online in about half a second. A release that isn't healthy within 30 seconds is rolled back automatically.
Built for Self-Hosters
Our rule: maximum speed on minimum hardware. Every change that cost resources had to prove it made the relay faster.
Less than half the disk. The same 4.9 million events.
Relay Disk used strfry 27 GB Magnitude Relay 11 GB 59% smaller, measured on jskitty.com's real data, 22 Oct 2026.
Most relays, strfry included, slow down once the database outgrows memory; this summer, that happened to jskitty.com. So we tested Magnitude Relay with 13 GB of real data and only 1 GB of memory:
- 0.17–0.30 ms to open the 50 busiest DM inboxes in the dataset
- 9,100+/s busy inboxes served, 50× more than with the data in arrival order
Process held to 1 GiB by the kernel (cgroup), its page cache dropped first, 4.81M real events, 21 Oct 2026.
In production each relay uses 190–370 MB of its own memory while serving over a thousand connections. After loading a million events, its total footprint was 1.2 GB against strfry's 3.1 GB, 61% less (most of both is cached database the system can reclaim).
Updates cost about half a second. Stopping takes 0.3 s and starting again 0.25 s, across 4.9 million events.
jskitty.com, measured at the switch and on later updates: 0.54–0.88 s from restart to answering again. Only the newest part of the log is replayed, so start-up stays short as data grows.
- One program, one settings file.
magnitude-relay initwrites a commented one.- Moves in from strfry. Imports strfry exports directly, checking every signature, and can sync with a running strfry while you try it.
- HTTPS built in. Fetches and renews its own certificates, or sits behind nginx on a local socket.
- Live backups. A consistent copy of the store without stopping the relay.
- Dashboard and metrics. The page above, plus Prometheus metrics.
- Relay-to-relay sync. Keep several relays complete with NIP-77, as jskitty.com and Vector Asia do.
Private by Design
A relay can't read gift-wrapped messages, but it decides what's kept, and whether delete means delete.
What Happens to Your Data
On Vector's relays strfry (before) Magnitude Relay "Request to Vanish" honoured<br>NIP-62: erase everything I sent ⚠️ No Yes Deleted messages wiped from disk<br>not just hidden ⚠️ Not guaranteed Overwritten Typing indicators & push requests<br>ephemeral events ⚠️ Stored 5 min Never stored What it accepts Anything Vector's kinds only Publishes its Tor & I2P addresses ⚠️ No Built in
Moving jskitty.com over, we found 38 vanish requests and 24 deletions strfry had never applied, covering over a thousand events. Magnitude Relay applied them all on import, and now overwrites deleted data on disk. Both relays also serve Tor and I2P, as gateways to the relay only.
Standing on the Shoulders of Giants
- strfry and Doug Hoyte, for carrying Vector's messages from the start, and for negentropy, the sync protocol both relays still speak
- The Nostr community, for an open protocol anyone can build a relay for
- Rust and Tokio, for making fast and safe the same thing
Like Open-Source DOOM, Magnitude Relay was built as a collaboration between a human developer and an AI (Claude, by Anthropic).
Vector needed a relay as fast as its client. So we built one.
Join the Vector Community
Get connected with the Vector Community, where you can meet other like-minded privacy advocates and make friends from around the world. Get the latest updates in development, insights, and some teasers only dropped in the Vector Community!
Vector Privacy is a free, open-source, decentralized communication platform built on Nostr. No KYC. No metadata. No ads. No compromise.
VectorPrivacy on Nostr: Give a warm welcome to Nostr's Fastest Relay! ...
Give a warm welcome to Nostr's Fastest Relay!








