Introduction
Adapters
Overview
Every adapter implements the same Adapter contract: upload, download, head, list, copy, move, delete, url, uploadUrl, plus the snapshots and forks namespaces. Pick one based on your provider; the call site doesn’t change.
Snapshots and forks are native on Tigris (and its branded aliases Fly.io and Railway) and on GitHub — the adapter calls the provider’s native APIs and no data is copied. On GitHub specifically, every snapshot is a git tag and every fork is a git branch. On every other provider they’re emulated as sibling buckets, and the adapter does the bookkeeping via a small .storagesdk.metadata.json manifest.
Each adapter’s provider SDK is an optional peer dependency. Install only the SDKs for the adapters you actually import.
Adapters
- Tigris — native snapshots & forks via
@tigrisdata/storage. - Amazon S3 — and any S3-compatible provider.
- Cloudflare R2 — thin wrapper over S3 with R2-friendly defaults.
- Google Cloud Storage — sibling buckets via server-side copy.
- Azure Blob — sibling containers via
Copy Blob. - Vercel Blob — sibling prefixes inside a single Blob store.
- MinIO — S3-compatible self-hosted.
- Backblaze B2 — S3-compatible.
- DigitalOcean Spaces — S3-compatible.
- Wasabi — S3-compatible.
- Supabase Storage — S3-compatible (the dedicated S3 endpoint).
- Linode Object Storage — S3-compatible.
- GitHub — native: snapshots are tags, forks are branches.
- WebDAV — any WebDAV server (Nextcloud, ownCloud, Apache mod_dav, NAS, pCloud, mailbox.org, kDrive). Sibling collections via native server-side
COPY. - Fly.io — branded alias of the Tigris adapter.
- Railway — branded alias of the Tigris adapter.
- Filesystem —
node:fs/promisesfor local development and tests. - Write your own — the adapter contract and the conformance suite.