Skip to main content
BlobRouter v0.1 · Last updated: August 2026 · Architecture version: 2.0
BlobRouter’s routing engine is deterministic. No ML. Decisions use live provider pricing (cached in Cloudflare KV) plus explicit assumptions about how a file will be used.
The routing engine makes decisions using configurable assumptions (storage duration, request frequency, egress estimates).These assumptions are visible and configurable.BlobRouter always exposes the assumptions behind every recommendation.

Priority tiers

Pass priority on upload: If you omit priority, the API/SDK default is cold.

Cost formula

For each candidate provider we estimate total cost over the assumption window:
savedVsAws is the difference between that total on AWS S3 and the chosen provider (never negative). Pricing rates come from KV (refreshed daily), not hardcoded in the router.

Default assumptions

These defaults are honest estimates used when you pick a priority. They are returned on routing decisions so you can see exactly what was assumed: Assumptions drive the formula — they are not a guarantee of future traffic. Tune your priority to match expected access patterns.

Preferred provider vs cost formula

  1. Hot → use R2 if you have R2 credentials; otherwise fall back to cheapest configured provider and set a warning.
  2. Archive → use B2 if configured; otherwise fall back with a warning.
  3. Cold → always pick the cheapest configured provider using the formula above.

When preferred provider is missing

Routing never fails solely because R2 or B2 is missing (as long as at least one provider is configured). Example warning when hot prefers R2 but R2 is not connected:
The SDK surfaces this as routingWarning (TypeScript) / routing_warning (Python) and may emit a console / warnings.warn notice.

EU compliance routing

If you pass region: "eu", BlobRouter checks whether the chosen provider is expected to support EU presence. If residency cannot be guaranteed for the choice, a compliance warning is attached:
This does not block the upload in v1 — it warns so you can decide.

What routingWarning means

Treat warnings as actionable configuration gaps, not hard failures.