Key/value & list storage, no accounts

Do you really want to provision entire backend just to store 'theme':'dark'?

localStorage disappears the moment a tab, a device, or a factory reset does. PrefsDB doesn't. No non-sense serverless secure data storage made for AI — no server to run, no account to create, user-pays model.

Claim ticket for this demo — correct-horse-battery-staple 7f3a…e918
0X7F3A · ONE KEY, ANY DEVICE VALID
// before — trapped in this browser
localStorage.setItem("theme", "dark");
localStorage.getItem("theme");

// after — same shape, works everywhere
const db = await PrefsDB.getkey("my-app", ...);
db.setItem("theme", "dark");
const { value } = await db.getItem("theme");
// value === "dark" <-- across browsers, across devices

How it works

Three steps. No form asks for your email.

01

Pick a phrase

Any secret only you know — a passphrase, a word list, a login you already use elsewhere.

02

Hash it into a key

PrefsDB never sees your phrase, only its hash. No email, no password, nothing stored about who you are.

03

Use it anywhere

The same phrase produces the same key on any device, in any browser, indefinitely.


The trade-off you're used to making

Pick two. PrefsDB doesn't make you.

Client-only storage is easy to ship but stays on one device. A backend goes everywhere but means servers, accounts, and upkeep. PrefsDB was built to skip that trade entirely.

 localStorageYour own backendPrefsDB
Works across devicesNoYesYes
Survives a wiped deviceNoYesYes
Storage ceiling~5–10MB / originwhatever you provisionno practical cap
Servers you maintain01+0
Accounts your users create0usually 10
Time to first writeinstantdays–weeksminutes

Why teams reach for it

Everything localStorage promised, minus the catch.

Cross-device

Write on your phone, read on your laptop

The same key resolves to the same data anywhere — five minutes or five years later.

Durable

Survives a wipe

Data lives on PrefsDB's servers, not in a browser profile a factory reset or cache clear can erase.

No ceiling

Outgrows 5–10MB

That's localStorage's per-origin cap. Store a handful of settings or thousands of list entries — the browser stops being the limit.

No backend

Call it straight from client JS

Nothing to provision, deploy, or patch at 2am. The API is the backend.

No accounts

No login stands in the way

A key comes from hashing a phrase you choose. No email, no password, no signup screen between a user and their data.

Secure by design

Nothing to phish

There's no password database to breach and no account to take over — just an opaque key that only works because you already know the phrase behind it.


Beyond setItem/getItem

Structure it when you need to.

Domains, lists, filters and expiry are opt-in — use the plain drop-in shape above, or reach for these when your data grows up.

Namespace with domains
await db.domain("prefs").key("theme").write("dark");
Append-only lists
await db.list("recent-searches").write("tape delay pedals");
Read everything in scope
const all = await db.domain("prefs").readAll();
Auto-expiring data
await db.ttl(7).key("invite-code").write(code);