drift Docs
Start
What is Drift?
The tour, if you are new here.
Why Drift?
The case for a smaller cloud.
Getting started
Nothing to deployed, in one command.
Architecture
How a slice is put together.
What it costs
The free grant, five unit prices, two rules.
Build
Canvas
Static sites, same origin as your API.
Tools
Operate
Auth
Accounts, tokens and scopes.
Security
Boundaries, sandboxing and hardening.

Deed Vault

A user-scoped store for a blob the slice cannot read. The client encrypts under a key the slice never sees and hands over the ciphertext. That makes it the natural home for an account-recovery bundle pairing with KeyAuth. Put appends a new entry; Get returns the newest one for a uid.

Go
drift.Deed.Vault.Put(uid, ciphertext)   // the slice stores bytes it can't read
blob, _ := drift.Deed.Vault.Get(uid)

Vault does not authenticate its caller.

uid is a plain argument, so any function in your slice can read or write any uid's blob. The confidentiality guarantee rests entirely on the client having encrypted first, so check who is asking before you hand a blob back. Pocket is the primitive that enforces per-identity isolation for you.

History is bounded rather than infinite: past the per-uid entry cap the oldest entries are deleted, so Put appends within a window. See Limits for the numbers.

The ciphertext that belongs here is the one e2ee.js produces: a content key wrapped under a passphrase or a recovery seed.