Guide

Workspace storage + R2 costs, metered per project

How much you can stash in `/workspace`, what Cloudflare charges for it, and how the core meters storage per project so the bill is always traceable to a source.

5/18/2026 · connect0 · 3 min

The core meters storage per project, so every gigabyte on the bill traces back to a workspace you can name.

/workspace is backed by an R2 prefix per project (projects/<project-id>/...). R2 has its own pricing — storage by GB-month, operations by class, and notably zero egress. Here's the practical mental model.

What it costs

AxisCostWhen it matters
Storage~$0.015 / GB / monthLinear in /workspace/ contents. Dominant axis for big-data users.
Class A ops~$4.50 / 1MEvery upload PUT, every sh "cat > file" write. Per-operation pricing — file size doesn't matter on this axis.
Class B ops~$0.36 / 1MEvery read (sh "cat /workspace/foo", FUSE mount metadata). Cheap.
Egress$0Never charged by Cloudflare. connect0 doesn't add a markup.

The realistic shapes

  • Light user — chats, configs, small artifacts. Storage is a rounding error. Class A ops are bounded by how chatty the agent is. Total: cents/month.
  • Data-science user — multi-GB datasets, repeated analyses. Storage is the bill. 10 GB persisted for a month is ~$0.15. 100 GB is ~$1.50. Class A still dominated by writes (each tool call's sh "tee" is one op).
  • CI uploads from a busy repo. Ops count up fast — every push is one PutObject. 100,000 PUTs/month is ~$0.45 on Class A. Still small.

What connect0 charges

A monthly plan that includes a generous workspace allowance plus per-GB overage. Check info's plans for the current numbers — pricing changes as we calibrate.

Where storage actually lives

  • Visible in your account's workspaceconnect0-sandbox-fs/projects/<project-id>/ in R2. You don't pay R2 directly; connect0 fronts the bill and meters per-project.
  • upload_link audit rows in Postgres — bytes, but tiny (~200 bytes per row). 90-day retention. Not a meaningful cost axis.
  • Cloudflare Queue messages — Cloudflare bills queues by op too, but R2 events into the connect0-r2-uploads queue are well inside free-tier limits.

Practical advice

  • Don't stash huge intermediate files. If the agent generates a 5 GB intermediate, have it clean up after itself.
  • Compress before uploading. A 200 MB raw CSV is a 30 MB gzip. Storage charges by uncompressed size on disk, so compress + decompress-in-sandbox is real savings.
  • Use sh "du -sh /workspace" to check. Cheap query, useful periodic ops habit.

What we'd do differently with hindsight

R2 was the right pick because zero-egress + Cloudflare Sandbox FUSE mount lined up perfectly. The cost story for users is dominated by storage, which is fine — that's the one we can ration. Class A ops are a noise floor.

Next steps

Where this fits

This is the One system of record pillar of connect0 — the core that connects everything your company runs on. Because every workspace lives behind the core, storage is metered per project — so cost is transparent and attributable, not a mystery line on the Cloudflare invoice. Start building → · All guides →