Production object storage for product data
One storage layer for objects, search, permissions, watches, and local-first data.
Anvil stores bytes, then keeps the derived systems that make those bytes useful attached to the same source of truth: path and metadata indexes, full text search, vector search, relationship authorisation, durable watches, source artefacts, model artefacts, and PersonalDB witnessing.
A write becomes a platform event
01
Commit object
bytes + metadata + version
02
Maintain views
path, text, vector, authz, PersonalDB
03
Serve safely
authorised reads, searches, watches, sync
No sidecar search service guessing what changed. No app-only permission filter trying to hide leaked snippets. No projection job without a cursor.
Why Anvil exists
Object storage is easy until the object becomes product state.
The first upload works with any bucket. The hard part arrives when users need filtered timelines, private search, semantic retrieval, live updates, local-first sync, and evidence that every derived view is current. Anvil makes those capabilities part of storage instead of application glue.
Search must know permissions
Counts, snippets, vectors, facets, and suggestions can leak data if authorisation is only applied after the query.
Indexes must prove what they consumed
Derived state is useful only when it exposes cursors, generations, manifests, lag, and repair findings.
Local-first sync needs a witness
SQLite changesets need validation, commit certificates, snapshots, and projections that follow the same authorisation model.
Capabilities
The feature set is broad because the source facts are shared.
Objects, indexes, authorisation, watch streams, PersonalDB, source artefacts, and model artefacts all refer to the same buckets, keys, versions, checksums, metadata, and durable mutation cursors.
Store
Buckets, keys, versions, checksums, range reads, multipart uploads, append streams, JSON patching, manifest compare-and-swap.
Tutorial
Find
Directory indexes, metadata filters, full text search, vector search, hybrid ranking, source indexes, model tensor lookup.
Tutorial
Protect
Token scopes, public access policy, relationship tuples, caveats, permission checks, authz watches, fail-closed internal namespaces.
Tutorial
React
Bucket metadata watches, prefix watches, index definition watches, partition watches, authz watches, source watches, PersonalDB watches.
Tutorial
Sync
PersonalDB groups, changesets, catch-up, snapshots, projections, row metadata, projection writeback, witness certificates.
Tutorial
Operate
Index repair, directory repair, authz derived repair, PersonalDB log-chain repair, diagnostics, release smoke tests, package publishing.
Tutorial
How to evaluate it
Read the docs as a course, then use the tutorials as operating muscle memory.
The Learn section teaches concepts from first principles. The tutorial section turns those concepts into operations through the Rust client shipped in this release. The operator section covers deployment, identity, indexing operations, backup, recovery, and releases.
1
Learn
Understand object storage, keys, indexes, vectors, authorisation, watches, and PersonalDB.
2
Build
Run tutorials that create buckets, write objects, query indexes, stream watches, and submit PersonalDB changes.
3
Operate
Deploy nodes, issue credentials, monitor lag, repair derived data, and publish release artefacts.
Choose your path
A storage platform has more than one audience.
Start with the conceptual path if the vocabulary is new. Jump to tutorials when you need a concrete operation. Use operator and reference pages when preparing a deployment or release.
Learn the model
Concepts from first principles.
Perform operations
Rust client tutorials.
Run production
Deployment and operations.
Check exact settings
Configuration and errors.
Adopt Anvil when storage has become product infrastructure.
It gives teams one place to reason about stored bytes, searchable meaning, authorisation, live change streams, and local-first database witness state.