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 object and blob storage backends. Instead of managing separate integrations for S3, Google Cloud Storage, Azure, or Vercel Blob, developers can use a single, unified API to handle file operations.

How it works

The SDK provides a common interface for standard actions like uploading, downloading, and deleting files. It uses a system of adapters for different storage providers; you install the specific native SDK for the provider you need, and files-sdk wraps it in a consistent API. It uses web-standard I/O (such as Blobs and ReadableStreams) to ensure that provider-specific types do not leak into the application code. For advanced needs, it provides a "raw" escape hatch to access the underlying native client.

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 storage logic.

Highlights

  • Unified API: Consistent methods (upload, download, exists, etc.) across S3, GCS, Azure, Vercel Blob, and local filesystems.
  • AI Tool Integration: Includes ready-made wrappers to expose storage operations as tools for the Vercel AI SDK, OpenAI's Responses/Agents SDK, and Anthropic's Claude Agent SDK.
  • Web-Standard I/O: Supports Blob, File, ReadableStream, and other standard types.
  • Tree-shakeable: Adapters are separate entry points, ensuring only the necessary code is bundled.