Adapter
Tigris
Overview
Tigris is a globally distributed S3-compatible object storage service. Snapshots and forks are first-class on Tigris: the adapter calls createBucketSnapshot and createBucket({ sourceBucketName, sourceBucketSnapshot }) directly — no manifest sidecar, no bytewise copying.
storage.raw is a proxy over the entire @tigrisdata/storage module with this adapter’s config auto-injected. Reach for any provider-specific op as storage.raw.<fn>(...) and it’s fully typed.
Configuration
import { Storage } from '@storagesdk/core';
import { tigris } from '@storagesdk/adapters/tigris';
const storage = new Storage({
adapter: tigris({
bucket: 'agent-runs',
accessKeyId: process.env.TIGRIS_ACCESS_KEY_ID,
secretAccessKey: process.env.TIGRIS_SECRET_ACCESS_KEY,
}),
});
tigris({
bucket: string;
accessKeyId: string;
secretAccessKey: string;
endpoint?: string; // defaults to Tigris production
forcePathStyle?: boolean;
});
Notes
- Peer dependency:
@tigrisdata/storage. - Credentials are explicit — supply
accessKeyIdandsecretAccessKey(or pass viaprocess.env). There’s no env-based fallback at the adapter layer. download()doesn’t surface an etag even thoughupload(),head(), andlist()do.- Snapshot-scoped presigned URLs (
snapshots.get(id).url(key)) currently return a URL for the live bucket, not the snapshot version — upstream support is pending.
Compatibility
| Capability | Support |
|---|---|
| Snapshots | Native — createBucketSnapshot |
| Forks | Native — createBucket({ sourceBucketSnapshot }) |
| Byte-range reads | ✓ |
| Multipart upload | ✓ |
| Enforced upload limits | ✓ |
| User metadata | ✓ |
| Signed URLs | ✓ |