Nostr relays + NIP-94/NIP-96 file metadata — index only, not bytes
- Free allowance
- Zero bytes. NIP-94 is a metadata event:
url,m(mime),size,dim,i(torrent infohash),thumb. - Verdict
- fails: quotathe free allowance is too small to matter
- Cost
- free tier
- Identity
- email?placeholder, not evidence; card unknown, phone unknown
- Binding limit
- per-object-capper-object-cap = relay event size limit (~64 KB
- Evidence
- reported1 source; a third party said so
- Freshness
- stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
| 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 |
| Limits |
|
| Identity | email (placeholder) not published |
| Egress | n/a — relay never serves the file. |
| Per-object cap | per-object-cap = relay event size limit (~64 KB (64000 bytes) |
| Retention | until the instance is recycled; not persistent |
| 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. |
| 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 1
| 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 values 2
- per object cap notes: the field may be stated in a source that was not read
- retention notes: the field may be stated in a source that was not read