BlobRouter v0.1 · Last updated: August 2026 · Architecture version: 2.0
Step by step
upload()— SDK validates local options and starts the control-plane sequence.POST /v1/upload/init— Auth, plan checks, decrypt provider credentials, run routing engine, insert apendingfile row, return{ fileId, presignedUrl, provider, savedVsAws, routingWarning? }.route()— Deterministic. Hot prefers R2, archive prefers B2, cold uses the cost formula. Missing preferred provider → warn + fallback (never fail if any provider exists).- Presigned URL — Minted with your credentials against your bucket.
PUT— Client uploads directly to AWS / R2 / B2. Retries here are outside BlobRouter’s control; the SDK does not retry this PUT.POST /v1/upload/complete— SDK tells BlobRouter the PUT finished.HeadObject— API verifies the object exists at the expected size/key. Protects savings accuracy.- Done — Status becomes
active; ausage_eventsrow records GB routed.