{"eid":"docs","name":"walrus","domain":"docs.wal.app","resolved_by":"domain","topics":["storage"],"n_records":3,"best_vorder":1,"review":null,"aliases":["Walrus Testnet public publishers (Mysten Labs + community)","docs.wal.app","walrus","walrus (sui)","walrus mainnet (public upload)"],"records":[{"rid":"storage/walrus-testnet-public-publishers","card":{"rid":"storage/walrus-testnet-public-publishers","eid":"docs","topic":"storage","slug":"walrus-testnet-public-publishers","provider":"Walrus Testnet public publishers (Mysten Labs + community)","url":"https://docs.wal.app/docs/system-overview/public-aggregators-and-publishers","domain":"docs.wal.app","category":"p2p","tier":null,"verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","confidence":"reported","binding":"per-object-cap","identity_kind":"anonymous","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"rest,cli","egress_metered":0,"per_object_bytes":1073741824,"retention_days":1,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":5,"usd_month":null,"usd_per_tb_month":null,"summary":"No account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by default'. In practice the ref...","duplicate_of":null,"n_unknown":4},"record":{"topic":"storage","slug":"walrus-testnet-public-publishers","provider":"Walrus Testnet public publishers (Mysten Labs + community)","url":"https://docs.wal.app/docs/system-overview/public-aggregators-and-publishers","category":"p2p","free_tier":{"stated":"No account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by default'. In practice the reference publisher accepted 300 MiB and 1 GiB. Max storage duration is 53 epochs; on Testnet 1 epoch = 1 day.","unit":"mixed","metered_on":"stored-bytes","source_url":"https://docs.wal.app/docs/network-reference","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"per-object-cap: 1 GiB","bytes":1073741824,"source_url":"https://docs.wal.app/docs/network-reference","notes":"not stated"},"retention":{"stated":"retention: 53 epochs max, 1 day per epoch on Testnet = 53 days, and 'Walrus wipes the data periodically without warning'","days":1,"source_url":"https://docs.wal.app/docs/network-reference","notes":"not stated"},"egress":{"terms":"unmetered. Reads are served by ~55 independent community aggregators plus the Mysten reference aggregator; all returned CORS-open bytes with no metering observed and no auth header.","metered":false},"interface":["rest","cli"],"interface_detail":"rest","tooling":"Plain HTTP: PUT $PUBLISHER/v1/blobs?epochs=N --upload-file; GET $AGGREGATOR/v1/blobs/<blobId>. OpenAPI at /v1/api. Machine-readable operator list at https://docs.wal.app/operators.json (updated weekly). Walrus CLI + TypeScript SDK also exist (github.com/MystenLabs/walrus).","chaining":"16 public Testnet publishers in operators.json (3 live-tested: walrus.space, tududes, banansen) x unlimited keyless PUTs x unlimited blobs. Any number of blobs per publisher; distinct content hashes so no account dimension is needed at all. Store 10 TiB as 20,000 x 500 MiB blobs, or 10,000 x 1 GiB against community aggregators. Also: 53-epoch max means re-upload on a rolling schedule, so 'capacity' = (publishers x disk) not a per-identity tier.","limits":[{"kind":"retention-clamped","value":"retention: 53 epochs max, 1 day","source":"https://docs.wal.app/docs/network-reference"},{"kind":"per-object-cap","value":"per-object-cap: 1 GiB","source":"https://docs.wal.app/docs/network-reference"}],"limits_note":"per-object-cap: 1 GiB verified write; read path has a per-object-cap of 500 MiB on the Mysten reference aggregator (403 SIZE_EXCEEDED, 'the blob size exceeds the maximum allowed size: 524288000') while community aggregators served the same 1 GiB blob fine. retention: 53 epochs max, 1 day per epoch on Testnet = 53 days, and 'Walrus wipes the data periodically without warning'. request-rate: 10 x 1 MiB PUTs back-to-back all returned 200, no shaping seen; no rate limit documented on Testnet.","identity_cost":{"kind":"anonymous","detail":"derived from the record's prose, not from an identity field, and no signup was executed: No account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by de","country":null},"reliability_note":"Testnet is periodically wiped without warning and publishers are volunteer-run (2 of 5 tested endpoints were down: h2o-nodes 502, atalma connection refused); treat as ephemeral, not archive.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://docs.wal.app/docs/system-overview/public-aggregators-and-publishers","date":"2026-10-21","proved":"'You do not need to run your own daemon... community operators expose public aggregator and publisher services'; 'Most aggregators and publishers limit requests to 10 MiB by default'"},{"url":"https://docs.wal.app/docs/network-reference","date":"2026-10-21","proved":"epoch duration Testnet 1 day, Mainnet 2 weeks; 'Maximum number of epochs for which storage can be bought 53'; 'Data persistence ... Walrus wipes the data periodically without warning'"},{"url":"https://publisher.walrus-testnet.walrus.space/v1/blobs?epochs=53","date":"2026-10-21","proved":"probe: PUT --upload-file <1 GiB random> -> 200 in 165 s, blobId AzBDr3weHh3aHfjIdql5DT8z357Y1FGK3nDIJC5KEeI, storageSize 4888852000"},{"url":"https://aggregator.walrus-testnet.walrus.space/v1/blobs/<1","date":"2026-10-21","proved":"probe: GET GiB id> -> 403 SIZE_EXCEEDED 524288000; GET https://walrus-testnet-aggregator.stakely.io/v1/blobs/<same id> -> 200, 1073741824 bytes, sha256 matches original byte-for-byte"},{"url":null,"date":"2026-10-21","proved":"probe: 16 parallel 3 MiB ranged GETs of a 50 MiB blob -> 200/206, 50,331,648 bytes in 1.98 s (25.4 MB/s) vs 3.97 MB/s single-stream (13.2 s) — 6.4x from concurrency"}],"verdict":"qualifies-with-caveat","verified_at":"2026-10-21T00:00:00.000Z","notes":"No account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by default'. In practice the reference publisher accepted 300 MiB and 1 GiB. Max storage duration is 53 epochs; on Testnet 1 epoch = 1 day.","extras":{"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."},"binding":"per-object-cap","binding_note":"the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":10.0,"unit":"MiB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[0].value","kind":"limit:retention-clamped","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[1].value","kind":"limit:per-object-cap","num":1.0,"unit":"GiB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.evidence[4].url","private-url"],["$.free_tier.notes","process"],["$.per_object_cap.notes","not-extracted"],["$.retention.notes","not-extracted"]],"history":[],"drift":[]},{"rid":"storage/walrus-2","card":{"rid":"storage/walrus-2","eid":"docs","topic":"storage","slug":"walrus-2","provider":"walrus (sui)","url":"https://docs.wal.app/docs/system-overview/storage-costs","domain":"docs.wal.app","category":"rejected-provider","tier":null,"verdict":"paid-only","vorder":3,"grp":"paid","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":null,"egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":2,"usd_month":null,"usd_per_tb_month":null,"summary":"$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would...","duplicate_of":null,"n_unknown":15},"record":{"topic":"storage","slug":"walrus-2","provider":"walrus (sui)","url":"https://docs.wal.app/docs/system-overview/storage-costs","category":"rejected-provider","free_tier":{"stated":"$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e","unit":"none","metered_on":"none","source_url":"https://docs.wal.app/docs/system-overview/storage-costs","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not recorded","bytes":null,"source_url":"https://docs.wal.app/docs/system-overview/storage-costs","notes":"not recorded"},"retention":{"stated":"not recorded","days":null,"source_url":"https://docs.wal.app/docs/system-overview/storage-costs","notes":null},"egress":{"terms":"not recorded","metered":false},"interface":["unknown"],"interface_detail":null,"tooling":"not recorded","chaining":"not recorded","limits":[],"limits_note":null,"identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e","confidence":"reported","confidence_note":null,"evidence":[{"url":"https://docs.wal.app/docs/system-overview/storage-costs","date":"2026-10-21","proved":"$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e"},{"url":"https://docs.wal.app/docs/sponsored-uploads","date":"2026-10-21","proved":"cited as the basis of the rejection: $0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e"}],"verdict":"paid-only","verified_at":"2026-10-21T00:00:00.000Z","notes":"$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e","extras":{"dead_end":{"failure_class":"paid","why":"$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e","retry_when":null,"first_recorded":"2026-10-21"}},"binding":"none","binding_note":"no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":64.0,"unit":"MB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.chaining","not-recorded"],["$.confidence_note","withheld"],["$.egress.terms","not-recorded"],["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.interface","interface-unknown"],["$.interface_detail","withheld"],["$.limits_note","process"],["$.per_object_cap.notes","not-recorded"],["$.per_object_cap.stated","not-recorded"],["$.retention.notes","process"],["$.retention.stated","not-recorded"],["$.tooling","not-recorded"]],"history":[],"drift":[]},{"rid":"storage/walrus-mainnet","card":{"rid":"storage/walrus-mainnet","eid":"docs","topic":"storage","slug":"walrus-mainnet","provider":"walrus mainnet (public upload)","url":"https://docs.wal.app/docs/http-api/storing-blobs","domain":"docs.wal.app","category":"rejected-provider","tier":null,"verdict":"fails-quota","vorder":6,"grp":"rejected","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":null,"egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":3,"usd_month":null,"usd_per_tb_month":null,"summary":"No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store s...","duplicate_of":null,"n_unknown":15},"record":{"topic":"storage","slug":"walrus-mainnet","provider":"walrus mainnet (public upload)","url":"https://docs.wal.app/docs/http-api/storing-blobs","category":"rejected-provider","free_tier":{"stated":"No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no","unit":"none","metered_on":"none","source_url":"https://docs.wal.app/docs/http-api/storing-blobs","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not recorded","bytes":null,"source_url":"https://docs.wal.app/docs/http-api/storing-blobs","notes":"not recorded"},"retention":{"stated":"not recorded","days":null,"source_url":"https://docs.wal.app/docs/http-api/storing-blobs","notes":null},"egress":{"terms":"not recorded","metered":false},"interface":["unknown"],"interface_detail":null,"tooling":"not recorded","chaining":"not recorded","limits":[],"limits_note":null,"identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no","confidence":"reported","confidence_note":null,"evidence":[{"url":"https://docs.wal.app/docs/http-api/storing-blobs","date":"2026-10-21","proved":"No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no"},{"url":"https://docs.wal.app/docs/sponsored-uploads","date":"2026-10-21","proved":"cited as the basis of the rejection: No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no"},{"url":"https://docs.wal.app/operators.json","date":"2026-10-21","proved":"cited as the basis of the rejection: No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no"}],"verdict":"fails-quota","verified_at":"2026-10-21T00:00:00.000Z","notes":"No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no","extras":{"dead_end":{"failure_class":"quota","why":"No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no","retry_when":null,"first_recorded":"2026-10-21"}},"binding":"none","binding_note":"no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.chaining","not-recorded"],["$.confidence_note","withheld"],["$.egress.terms","not-recorded"],["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.interface","interface-unknown"],["$.interface_detail","withheld"],["$.limits_note","process"],["$.per_object_cap.notes","not-recorded"],["$.per_object_cap.stated","not-recorded"],["$.retention.notes","process"],["$.retention.stated","not-recorded"],["$.tooling","not-recorded"]],"history":[],"drift":[]}]}