Blossom server
24242.io · Storage · 2 records · JSON
- Blossom server fleet (24242.io, blossom.oslim.dev / Lotus, blossom.nostr.build) Storage★ qualifiesanonymousno cardRper-object-cap
- 24242.io — public Blossom blob server (Nostr) Storagecaveatanonymousno cardRper-object-cap
Blossom server fleet (24242.io, blossom.oslim.dev / Lotus, blossom.nostr.build) Storage
★ qualifiesanonymousno cardRper-object-cap
| Free tier | 24242.io 100 MiB/file, deleted if not accessed for 60 days. blossom.oslim.dev (Lotus): 100 MB/file and 8 GB per pubkey, retention 'permanent', cost 'free'. blossom.nostr.build: 20 MiB/file free tier, 'no limit on how many files, and no expiry'. unit mixed; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | 100 MiB/file (104857600 bytes) |
| Retention | 24242.io 100 MiB/file, deleted if not accessed for 60 days (60 days) |
| Egress | unmetered / CDN-fronted. nostr.build advertises 'Global CDN delivery' on free uploads. |
| Identity | anonymous anonymous |
| Limits |
per-object-cap 100 MiB on most servers (20 MiB on nostr.build free). This is chunk-sized, not object-sized. 24242.io caps /list at the first 250 hits, so enumeration needs date ranges. |
| 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 Blossom BUD-01/02/04/05/06/10. GET /<sha256>, PUT /upload, PUT /mirror, GET /list/. |
| Tooling | curl; hzrd149/blossom CLI; any Blossom client. BUD-04 /mirror lets one server pull a blob from another given a URL, so replication is a server-side call, not a client re-upload. |
| Composes with | aggregate GB is the sum over the fleet x number of keypairs (oslim's 8 GB is per-pubkey, and pubkeys cost nothing). 24242.io's 60-day access-based retention is defeated by any periodic HEAD. |
| Reliability | small volunteer hosts, several with unstated total capacity. 24242.io states 'Free and unrestricted... for now'. Prefer BUD-04 mirroring to two servers per chunk. |
| Notes | 24242.io 100 MiB/file, deleted if not accessed for 60 days. blossom.oslim.dev (Lotus): 100 MB/file and 8 GB per pubkey, retention 'permanent', cost 'free'. blossom.nostr.build: 20 MiB/file free tier, 'no limit on how many files, and no expiry'. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (5)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | 24242.io/ | 'Free and unrestricted... with no warranties... for now.', 'Files are deleted if not accessed for 60 days', 'Max file size: 100MiB', 'BUD-06 /mirror will only accept a URL from another blossom server' |
| 2026-10-21 | blossom.oslim.dev/ | 'Max file size —, Storage per user —, Retention permanent, Cost free'; README of 0ceanSlim/lotus shows max_upload_size_bytes 104857600, max_storage_per_pubkey_bytes 8589934592 |
| 2026-10-21 | blossom.nostr.build/ | 'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention' |
| 2026-10-21 | oddbean.com/e/note17emh2aqsswd6fkzezpzykpus4226qkgu3z5gzqrc7 | agent report: nostr.download, 24242.io, files.sovbit.host and blossom.primal.net accepted BUD-06 checks at 5 MB AND 100 MB 'with a brand-new key that has never paid anywhere' |
| 2026-10-21 | blossom.primal.net/upload | HTTP 400 (endpoint live, rejects unsigned body) |
More fields (1)
{
"unit_note": "free_tier.unit is 'mixed' because the headline is denominated in MiB or KiB, which the schema enum does not carry; the verbatim free_tier.stated keeps the true unit. See the storage-dossier handover."
}Unknown or withheld values (3)
$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted
24242.io — public Blossom blob server (Nostr) Storage
caveatanonymousno cardRper-object-cap
| Free tier | No account, no quota, no total cap stated — 'Free and unrestricted... with no warranties... for now.' Per-file 100 MiB. First person to upload an object owns it (SHA-256 addressed). unit unlimited; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | 100 MiB/file (104857600 bytes) |
| Retention | 100 MiB/file; files deleted if not accessed for 60 days; /list returns only the first 250 hits; BUD-08 (NIP-94) not implemented (60 days) |
| Egress | free, unauthenticated GET by SHA-256; served from a public host with no metering published |
| Identity | anonymous anonymous — a Nostr keypair is the credential; no email, no phone. Verified: HEAD /upload with a BUD-06 pre-flight but no auth header returns 401 'x-reason: Authorization header missing, when required'. |
| Limits | 100 MiB/file; files deleted if not accessed for 60 days; /list returns only the first 250 hits; BUD-08 (NIP-94) not implemented |
| 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 | unknown BUD-01 HTTP: PUT /upload (NIP-98 auth header), GET /<sha256>, HEAD /upload for BUD-06 pre-flight, /mirror for BUD-06 |
| Tooling | any Blossom client (nostr.build, ditto, Amethyst); nak for key generation; plain curl once you can sign a NIP-98 event |
| Composes with | Content-addressed means a chunk map is trivial: (sha256 → server) is a complete locator, and BUD-06 /mirror lets one server pull a blob from another — so replication is a one-request operation per chunk. |
| Reliability | 60-day access-decay retention makes this an ephemeral tier, not an archive. 100 MiB/file means ~5,000 objects per 500 GB. |
| Notes | No account, no quota, no total cap stated — 'Free and unrestricted... with no warranties... for now.' Per-file 100 MiB. First person to upload an object owns it (SHA-256 addressed). |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (4)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | 24242.io/ | 'Max file size: 100MiB'; 'Files are deleted if not accessed for 60 days'; 'First person to upload an object owns it'; BUD-06 /mirror accepts only another blossom URL |
| 2026-10-21 | 24242.io/upload | HEAD (BUD-06 headers) — 401, x-reason: 'Authorization header missing, when required' |
| 2026-10-21 | files.sovbit.host/upload | HEAD — 401 (same BUD-06 shape) |
| 2026-10-21 | blossom.ditto.pub/upload | HEAD — 401, X-Reason: 'This needs a Nostr auth token (BUD-11)' |
Unknown or withheld values (4)
$.free_tier.notesprocess$.interfaceinterface-unknown$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted