Nostr relays + NIP-94/NIP-96 file metadata
github.com · Storage · 1 record · JSON
Nostr relays + NIP-94/NIP-96 file metadata — index only, not bytes Storage
fails: quotaemail?card?Rper-object-cap
| Free tier | Zero bytes. NIP-94 is a *metadata* event: url, m (mime), size, dim, i (torrent infohash), thumb. The relay stores the JSON pointer, the file lives elsewhere.unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | per-object-cap = relay event size limit (~64 KB (64000 bytes) |
| Retention | until the instance is recycled; not persistent |
| Egress | n/a — relay never serves the file. |
| Identity | email (placeholder) not published |
| Limits |
per-object-cap = relay event size limit (~64 KB typical), of which base64 payload is ~75%, so ~48 KB of real data per event — three orders of magnitude short of useful. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | cli websocket |
| Tooling | nostr websocket protocol (EVENT/REQ), nak CLI. Relays are free and accept arbitrary events, but the event size limit (typ. 64 KB) caps any inline-base64 trick at ~48 KB. |
| Composes with | Chains with Blossom: NIP-94/NIP-96 events make Blossom blobs discoverable and re-mirrorable. On its own this is not storage. |
| Reliability | Relays are ephemeral and freely delete events; free relays exist in the thousands but none is a byte store. |
| Notes | Zero bytes. NIP-94 is a *metadata* event: url, m (mime), size, dim, i (torrent infohash), thumb. The relay stores the JSON pointer, the file lives elsewhere. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | raw.githubusercontent.com/nostr-protocol/nips/master/94.md | tags are url, m, size, dim, i (torrent infohash), thumb; 'A relay for indexing shared files. For example, to promote torrents.' — confirms metadata-only semantics |
More fields (2)
{
"verdict_note": "PLAN.md §3.2 rules fails-quota by default, because no row in this set clears 500 GiB per unit for a user.",
"dead_end": {
"failure_class": "quota",
"why": "Zero bytes. NIP-94 is a *metadata* event: `url`, `m` (mime), `size`, `dim`, `i` (torrent infohash), `thumb`. The relay stores the JSON pointer, the file lives elsewhere.",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (6)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted