$ curl -fsSL https://store.prim.sh/install.sh | sh
spawn.sh VPS is ephemeral. Before destroying, upload artifacts to store.sh. Next VPS pulls them down. State survives infrastructure.
Agent A produces a dataset. Uploads to store.sh. Agent B on a different VPS downloads it. No shared filesystem needed.
Training runs produce checkpoints, logs, weights. Store them with TTLs. Keep the best, let the rest expire.
Agent builds a static site. Uploads HTML/CSS/JS. Gets a CDN URL. Website deployed without a web server.
# Buckets
POST /v1/buckets # Create bucket
GET /v1/buckets # List buckets
GET /v1/buckets/:id # Bucket details
DELETE /v1/buckets/:id # Delete bucket (must be empty)
# Objects
PUT /v1/buckets/:id/objects/:key # Upload object
GET /v1/buckets/:id/objects # List objects
GET /v1/buckets/:id/objects/:key # Download object
DELETE /v1/buckets/:id/objects/:key # Delete object
# Quota
GET /v1/buckets/:id/quota # Get quota + usage
PUT /v1/buckets/:id/quota # Set quota
POST /v1/buckets/:id/quota/reconcile # Recompute usage from R2
# Presign
POST /v1/buckets/:id/presign # Generate presigned URL
| Action | Cost | Notes |
|---|---|---|
| Storage | $0.015/GB/mo | R2 storage pricing |
| Upload | free | R2 Class A op ($4.50/M). Free to encourage adoption |
| Download | $0.001 | R2 egress is free, x402 floor |
| API calls | $0.001 | R2 ops are ~$0, x402 floor |
All buckets and objects are scoped to the wallet address extracted from the x402 payment. Callers can only access their own buckets.