haydenbleasel/files-sdk

A unified storage SDK for object and blob backends. One small, honest API. Web-standards I/O.

What it solves

It eliminates the need to write provider-specific code when working with different cloud storage backends. Instead of managing separate implementations for S3, Google Cloud Storage, Azure, or Vercel Blob, developers can use a single, unified API to handle file operations across any of these services.

How it works

The SDK provides a common interface (Files) that wraps various storage adapters. It uses web-standard I/O (like Blob and ReadableStream) to ensure that provider-specific types do not leak into the application logic. It also includes a lazy loader for runtime provider selection and "file handles" for repeated operations on the same object. For those needing advanced features, it provides an "escape hatch" via files.raw to access the native client of the underlying provider.

Who it’s for

Backend and full-stack developers who want to avoid vendor lock-in or who need their application to support multiple storage backends without rewriting their file-handling logic.

Highlights

  • Unified API: Consistent methods for uploading, downloading, deleting, and listing files across S3, GCS, Azure, Vercel Blob, and more.
  • AI Tooling: Built-in wrappers that turn storage operations into ready-made tools for the Vercel AI SDK, OpenAI Agents SDK, and Claude Agent SDK.
  • Web-Standard I/O: Uses standard types like Blob and File for data transfer.
  • Tree-shakeable: Adapters are separate entry points, ensuring only the necessary code is bundled.

Related

  • Project
  • Project
  • Project
  • Project
  • Project