crates.io
crates.io · Storage · 2 records · JSON
- crates.io Storagecaveatemail?card?Rpull-count
- iroh-n0des (crate) Storagefails: quotaemail?card?R
crates.io Storage
caveatemail?card?Rpull-count
| Free tier | 10 MB per .crate file. No limit on versions per crate ('There is no limit to the number of versions which can be published'), no documented cap on total crates or total bytes per account. unit MB; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | | Effectively permanent — 'the code cannot be deleted', 'publish is generally permanent' |
| Egress | Free and unmetered, Cloudflare-fronted, CORS-open. Probe: static.crates.io .crate GET -> 200, Server: cloudflare, Cache-Control: 'public,max-age=31536000,immutable', Access-Control-Allow-Origin: *, Accept-Ranges: bytes. |
| Identity | email (placeholder) not published |
| Limits |
10 MB per .crate. Publish rate: burst 5 new crates, then 1 per 10 min; burst 30 new versions, then 1 per minute (documented, leaky-bucket). No delete after 72h unless <1000 downloads/month-per-month AND no dependents AND single owner. Version numbers can never be reused or overwritten. |
| Binding | pull-count a per-object fetch counter turns a serving workload into a counting problem |
| Interface | rest, rclone rest |
| Tooling | PUT /api/v1/crates/new (binary metadata+body protocol), GET https://static.crates.io/crates/<name>/<name>-<ver>.crate. Clients: cargo publish, cargo-upload style wrappers. No rclone backend. |
| Composes with | UNBOUNDED on crates x versions but throttled hard: 5 new crates burst then 1 per 10 minutes; 30 versions burst then 1 per minute. At 10 MB/crate, 10 TiB needs ~1,048,576 crates — at 1 new crate per 10 min that is ~20 years, so crates.io is *capacity*-unlimited and *throughput*-useless for bulk. Use it as a low-priority shard, not the primary. |
| Reliability | Effectively permanent — 'the code cannot be deleted', 'publish is generally permanent'. Excellent durability, terrible write throughput: ~144 crates/day sustained, i.e. ~1.4 GB/day at 10 MB. Never disappears, but you cannot fill it fast. |
| Notes | 10 MB per .crate file. No limit on versions per crate ('There is no limit to the number of versions which can be published'), no documented cap on total crates or total bytes per account. |
| 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 | doc.rust-lang.org/cargo/reference/publishing.html | 'crates.io currently has a 10MB size limit on the .crate file'; 'There is no limit to the number of versions which can be published'; 'the version can never be overwritten, and the code cannot be deleted' |
| 2026-10-21 | crates.io/docs/rate-limits | 'allow a burst of 5 new crates published at once by a single user account, with a rate limit of 1 crate every 10 minutes'; 'burst of 30 new versions ... 1 crate per minute' |
| 2026-10-21 | crates.io/policies | deletion only if published <72h, or <1000 downloads per month published, and no dependents |
| 2026-10-21 | static.crates.io/crates/serde/serde-1.0.0.crate | probe: GET -> 200, Content-Length: 58433, Server: cloudflare, Cache-Control: public,max-age=31536000,immutable |
Unknown or withheld values (6)
$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted
iroh-n0des (crate) Storage
fails: quotaemail?card?R
| Free tier | The old standalone rendezvous/discovery crate for 'p2p quic connections dialed by public key'. Superseded by the iroh 1.x address-lookup/pkarr path; repo README now just renders iroh-service unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | The old standalone rendezvous/discovery crate for 'p2p quic connections dialed by public key'. Superseded by the iroh 1.x address-lookup/pkarr path; repo README now just renders iroh-service |
| Notes | The old standalone rendezvous/discovery crate for 'p2p quic connections dialed by public key'. Superseded by the iroh 1.x address-lookup/pkarr path; repo README now just renders iroh-service |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | crates.io/crates/iroh-n0des | The old standalone rendezvous/discovery crate for 'p2p quic connections dialed by public key'. Superseded by the iroh 1.x address-lookup/pkarr path; repo README now just renders iroh-service |
| 2026-10-21 | github.com/n0-computer/iroh-n0des | cited as the basis of the rejection: The old standalone rendezvous/discovery crate for 'p2p quic connections dialed by public key'. Superseded by the iroh 1.x address-lookup/pkarr path; repo README now just renders iroh-service |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "The old standalone rendezvous/discovery crate for 'p2p quic connections dialed by public key'. Superseded by the iroh 1.x address-lookup/pkarr path; repo README now just renders iroh-service",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded