Getting started
Stow stores objects in a native S3 server, an embedded runtime, or a file workspace. Browser APIs store editing history in IndexedDB and sync to remote storage. Choose the API that matches your application.
Build a checkout
git clone https://github.com/chester-hill-solutions/stow-s3
cd stow-s3
make build build-wasm
The Go version is pinned in .go-version. For the TypeScript library and browser
examples, also install and build the package:
npm ci --ignore-scripts --omit=optional --prefix packages/stow-s3
npm run build --prefix packages/stow-s3
The Go module can be added directly:
go get github.com/chester-hill-solutions/stow-s3/pkg/stow
Use a source checkout for the unpublished 0.3.0 TypeScript and Python clients.
Choose your storage surface
| Workload | Start with |
|---|---|
| Existing S3 SDKs or disposable integration tests | Native server and the TypeScript client |
| An agent's working directory and checkpoints | Workspace guide |
| Small-file offline editing with undo and redo | Browser file history |
| Several files, retained revisions or larger assets | Browser project storage |
| Bounded worker requests and streaming object payloads | Browser worker runtime |
| A local cache in front of a remote bucket | Run-through guide |
Try the browser editor
make browser-editor
The editor walkthrough uses real WASM, IndexedDB and a private local S3 fixture. It demonstrates offline reload, retained edits, undo/redo and conditional remote sync.
Guarantees to check
Local mode is the default. Enable native upstream writes explicitly. Browser applications supply the transport and choose when to sync. A conflict preserves local work; the application decides how to resolve it. Budget storage for retained history. The browser can evict local data.
Read the compatibility contract for the native S3 subset, and the relevant browser guide for host and persistence limits.