Integrators
Teams embedding the wrapper into a web or mobile app. Start with the Liquida integration guide to mint user and space tokens and wire rate limits and CORS.
The Webcloster Storage Wrapper is a multi-tenant file-storage API. It sits in front of an object store (Cloudflare R2, or any S3-compatible bucket) and turns raw blob storage into a governed service: projects, per-user quotas, plans, signed URLs, asynchronous image compression, per-integration rate limits, and — its defining feature — isolation that survives a leaked API key.
One deployment serves many projects (tenants). Each project brings its own users, files, quota rules, and one or more client applications. The wrapper keeps every tenant’s data strictly partitioned, and then goes one step further: it partitions data within a tenant, down to an individual end-user and even to a single workspace (“Ruta”) beneath that user.
Most “storage-as-a-feature” backends authorize with a shared integration key: the mobile or web app ships with one API key, and that key can read and write everything the tenant owns. This is convenient and dangerous. A key baked into an app build is extractable — an APK can be unpacked in minutes — and once extracted, it grants the attacker the same blanket access the app had: every user’s files, every workspace, across the whole tenant.
The wrapper refuses to make the integration key the security boundary. The key only answers the question “which app is calling?”. The real boundary is the login: when an end-user (or a workspace) signs in, the wrapper mints a short-lived, subject-bound token scoped to exactly that identity. That token — not the shared key — decides what the caller can see.
Integrators
Teams embedding the wrapper into a web or mobile app. Start with the Liquida integration guide to mint user and space tokens and wire rate limits and CORS.
Platform / DevOps
Operators bringing the stack up. See Deployment and Redis, migrations & env.
New engineers
Anyone who needs to understand why the system is built this way, not just which endpoints exist. Read the isolation model and authorization axes.
Security reviewers
The guard-per-axis design and its rationale are documented in authorization axes and design decisions.
max_file_size, allowed_mimes, and
storage_limit, enforced atomically on upload.202 immediately; a
separate worker compresses with Sharp and replaces the object in place.dev_mode bypass./api/v1/docs, plus a machine-readable /llms.txt guide for LLMs
and coding agents.The portal and demo front-ends reach the Hono API — directly, or through the demo BFF that holds the integration key server-side. The API and a separate, CPU-isolated compression worker share Postgres, Redis, and Cloudflare R2.