@flowwright/store-s3
v0.1.1
Published
FlowWright S3-compatible object storage backend — ArtifactStore for shared/remote artifacts.
Readme
@flowwright/store-s3
S3-compatible object storage for FlowWright — implements the runtime's ArtifactStore,
LogStore, and CacheStore interfaces against S3 or MinIO so artifacts, logs, and build
cache are shared across servers and workers instead of living on one host's disk. The cache
tars a directory tree into a single object keyed by its cache key.
FlowWright · Runtime · Worker
Use it
import { openArtifactStore, openLogStore, openCacheStore } from "@flowwright/store-s3";
const connection = {
endpoint: process.env.FW_S3_ENDPOINT, // e.g. MinIO "http://localhost:9000"
bucket: process.env.FW_S3_BUCKET!,
region: process.env.FW_S3_REGION ?? "us-east-1",
};
// Each selector falls back to the local filesystem store when S3 is not configured.
const artifacts = openArtifactStore({ s3: connection });
const logs = openLogStore({ s3: connection });
const cache = openCacheStore({ s3: connection });Public surface
| Area | Main exports |
|---|---|
| Stores | ObjectArtifactStore, ObjectLogStore, ObjectCacheStore (+ their config types) |
| Selectors | openArtifactStore, openLogStore, openCacheStore, isS3Selected |
| Client | buildS3ClientConfig, S3Connection |
| Proxy | proxyRequestHandler, ProxyNodeAgents |
Design boundary
- Implements the runtime
ArtifactStore/LogStore/CacheStoreinterfaces — the same contracts the local filesystem stores satisfy, so the runtime is backend-agnostic. - The selectors choose S3/MinIO or the local store from config; callers never branch.
- Egress goes through the shared proxy request handler; no HTTP server, no scheduling here.
Part of the SCALE4 shared/remote-storage design.
Development
$ pnpm --filter @flowwright/store-s3 typecheck
$ pnpm --filter @flowwright/store-s3 test
$ pnpm --filter @flowwright/store-s3 buildRequires Node.js 24+. Licensed under MIT.
