Repository navigation
Session Vault Phase B: hosted vault on overdeck.ai (encrypted, user-keyed) #4297
Description
Part of PAN-2350 (Overdeck Anywhere). Split out of PAN-2609 on 2026-09-28, as its PRD directs ("Phase B … separate issue; do not build under PAN-2609").
PRD: .pan/drafts/pan-2609.md, section "Phase B — hosted vault on overdeck.ai"
What
A hosted Session Vault backend on overdeck.ai: pan vault setup overdeck://… stores the vault's encrypted chunks and refs at overdeck.ai instead of in a user-owned git remote. The service stores ciphertext it cannot read; the vault key stays on the user's devices.
Architecture from the PRD (decision D-4: an object store with a compare-and-swap ref service, not a git server):
- storage: Cloudflare R2 (no egress fees; adoption and restore are download-heavy);
- refs and CAS: one Cloudflare Durable Object per vault;
- API: a Worker at
vault.overdeck.aiimplementingVaultStoreover HTTPS (PUT/GET/HEAD /objects/:id,GET/PUT /refs/:namewithIf-Match: <version>); - identity and billing: the shared overdeck.ai account and the Anywhere subscription (sold through Creem as merchant of record); quota on stored bytes.
Why
Phase A (PAN-2609) needs the user to own and configure a private git remote. A hosted backend makes the vault one command for users who don't want to run storage, and it is the anchor product of the Anywhere subscription.
Requirements (carried from the PRD)
- HB-1 The
overdeck://backend passes the sameVaultStorecontract tests asgitanddir. - HB-2 The server never receives plaintext or the vault key (acceptance by traffic capture).
- HB-3 Account deletion deletes all objects within 24 h.
- HB-4 Export:
pan vault migrate <new-backend>copies every object and ref, so users are never locked in. - HB-5 Web viewing, if ever built, decrypts in the browser with the key entered locally and never uploads it.
Dependencies
- PAN-2609 Phase A (format, encryption,
VaultStoreinterface). - PAN-4293 overdeck.ai account service.
- PAN-4294 subscription and billing.
- Epic decision D-7 as amended 2026-09-28: overdeck.ai may store encrypted, user-keyed data it cannot read (PAN-2350).
- Pricing: decided 2026-09-28; see "Pricing" below. (The earlier ~$5/month placeholder is superseded.)
- Order: step 6 (paid tier) of the PAN-2350 sequence, after the account service and billing, before the PAN-2356 relay.
Pricing (decided 2026-09-28)
Operator-approved. Not yet available.
| Plan | Price | Includes |
|---|---|---|
| Self-hosted (open source) | $0 forever | Unlimited on your own backend (git, dir); all of Session Vault Phase A |
| Vault Free (hosted) | $0 | 1 GB stored, 2 machines, end-to-end encrypted |
| Anywhere | $96/yr (shown as $8/mo), or $10 month-to-month | 100 GB hosted vault, unlimited machines, relay (PAN-2356) and push (PAN-2354) as they ship; hosted compute (PAN-4298) billed separately by usage |
| Founding price | $60/yr, annual only, locked while subscribed | Same as Anywhere; first 500 subscribers or until the relay ships, whichever comes first |
| Storage add-on | +$3/mo or +$30/yr per +100 GB | |
| Team | Not at launch | Needs a key-sharing design and PAN-658 |
- The vault is not sold separately; it anchors the one Anywhere subscription.
- Payment provider: Creem as merchant of record. Creem is the legal seller and collects and remits VAT, GST and sales tax. Fees: 3.9% + $0.40 per successful charge, no international card fee; payouts on the 1st and 15th at the higher of $7 or 1% of the payout (pricing, payouts, checked 2026-09-28).
- Fees per charge: $96/yr: $4.14 (4.3%); $60/yr: $2.74 (4.6%); $10/mo: $0.79 (7.9%). A $5 monthly price would lose 11.9%, which is why the plan pushes annual billing.
- Cost basis: Cloudflare R2 at $0.015/GB-month; all-in cost per user is about $0.10-0.24/month at 5 GB and $1.52-1.66/month at 100 GB. A heavy user adds about 4 GB stored per month (zstd about 3.2x).
- Margins (vault only, Creem fees with payout at 1%): Anywhere annual about 92% typical / 74% at the 100 GB cap; $10 monthly 89% / 75%; founding 90% / 61%. Relay and push cost is not modeled yet and will lower the bundle margin.
- At the cap nothing is deleted: uploads stop, local copies stay, and the user is offered a retention rule, the add-on, or migration. Version history is never gated.
- Public reasoning, for operator review before publishing: docs page PR #4309.
- PRD: .pan/drafts/pan-2609.md "Phase B pricing (decided 2026-09-28)".
Part of PAN-2350.
Activity
eltmon commentedon Sep 29, 2026
Additions: serve
keywrap/v1(PAN-4328, #4328) only to authenticated devices; addGET /v1/vaultdiscovery so a newly signed-in device knows a vault exists; ship first in tester mode behind atesterentitlement stub (10 GB, unlimited machines) whose signature PAN-4294 later implements; WIP snapshot objects (PAN-4329, #4329) count toward quota.Design: .pan/drafts/anywhere-accounts.md