stable

Compose your own setup

The static form of the Orientation map: the four decision dimensions, every capability's exact requirements, and the full service catalog with costs.

When no recipe matches your use case, compose your own: every noy-db build is the same four decisions, and this page lists every option each decision offers, with exactly what it adds to your createNoydb({...}). It is generated from the same data as the interactive Orientation map — use that for a guided version that writes the code block for you; use this page to read, search, or diff the whole option space at once.

The floor — an always-on kernel of ~6,500 LOC — gives you encrypted typed records, queries, and the in-memory store with zero opt-ins. Everything below is added only when you choose it, and tree-shakes away when you don't.

The four decisions

D1 — Architecture & persistence

where data lives.

CapabilityWhat to addDepth
In-memory (dev / test)kernel built-in defaultessential
Local — file / browser-IDBfamily to-file / to-browser-idbessential
Pod — data at rest (.noydb backup / transport)pod layerimportant
Snapshots — checkpoint / restore + retentionsnapshots serviceimportant
Multi-tab (same browser)family by-tabsimportant
Same-room P2P (same network)sync + family by-peerimportant
Multiple stores / routingrouting serviceadvanced
Blob attachmentsblobs serviceimportant
Cloud + attestationto-aws-* + at-* sealing + attestationadvanced
Fleet / multi-vaultcargo + pod → klum-dbadvanced

D2 — Encryption, identity & access

who unlocks, who reads what.

CapabilityWhat to addDepth
Encrypt / decrypt at restkernel enclave — always-onessential
3-tier unlock — secret · authenticate · unlocksession + on-webauthn / on-oidc / on-pinimportant
Mixed step-up (policy gates + 2FA factors)tiers + on-totp / on-shamiradvanced
Public directory — readable label before unlockpublic-envelope serviceimportant
Recover credentials — paper / Shamiron-recovery / on-shamirimportant
Sensitive fields — verify-without-reveal, blind indexclassified serviceimportant
Multiple usersteam service (withTeam())important
Roles · grant / revoke / rotate (DEK/KEK)team serviceimportant
Multiple owners (co-ownership / deed)team + createDeedOwner (core)advanced
Delegation (magic-link grant)team / magic-linkadvanced
Exportfamily as-* + portabilityimportant
Audited access / export of sensitive dataclassified + consent + historyadvanced

D3 — Data & query

shape and operations.

CapabilityWhat to addDepth
Typed records + refskernel schema — freeessential
Field metadata / describe()kernel /ui portimportant
Joins · cross-joinjoins (+ indexing)important
Aggregate / groupByaggregate serviceimportant
Indexindexing serviceimportant
Search / full-text (BM25 + lexical)search serviceimportant
Versioning / time-machinehistory serviceimportant
Live / reactivelive serviceimportant
i18n / multi-localei18n serviceimportant
CRDTcrdt serviceadvanced
Derived / materialized / overlay viewsderivations · materialized-views · overlay-viewsadvanced

D4 — Schema evolution & operations

lifecycle — mostly planned.

CapabilityWhat to addDepth
Schema update — field rename + backfill@noy-db/hub/migrations(planned)
Migration between hub versionsmigrations + peer-range policy(planned)
Coordinated cut-over (multi-consumer)migration recipe + minVersion guard(planned)

The service catalog

Each service is one with*() factory passed to createNoydb under its option key. Its page states its prerequisites; its LOC is the approximate bundle cost you accept by opting in.

ServiceOpt-inAdds ~LOCWhat it does
indexingwithIndexing() → indexingStrategy (@noy-db/hub/indexing)~886Eager + lazy persisted indexes (equality + orderBy).
joinswithJoins() → joinsStrategy (@noy-db/hub/joins)~470Multi-FK joins — indexed nested-loop / hash strategy. (always-core today; subpath reserved)
reducewithReduce() → reduceStrategy (@noy-db/hub/reduce)~886
searchwithSearch() → searchStrategy (@noy-db/hub/search)~400Full-text — BM25 scan (L0) + client lexical index (L1). (preview)
livewithLive() → liveStrategy (@noy-db/hub/live)~210(always-core today; subpath reserved)
historywithHistory() → historyStrategy (@noy-db/hub/history)~1880Versioning, diff, revert, time-machine, audit ledger.
crdtwithCrdt() → crdtStrategy (@noy-db/hub/crdt)~221LWW-Map / RGA / Yjs interop.
derivationswithDerivations() → derivationsStrategy (@noy-db/hub/derivations)~550Deterministic derived data — source row → typed outputs.
materialized-viewswithMaterializedViews() → materializedViewsStrategy (@noy-db/hub/materialized-views)~1400Query-level materialized views with refresh modes.
overlay-viewswithOverlayViews() → overlayViewsStrategy (@noy-db/hub/overlay-views)~600Operator-editable overlay over a materialized view.
blobswithBlobs() → blobsStrategy (@noy-db/hub/blobs)~2376Binary attachments + compaction + MIME-magic.
i18nwithI18n() → i18nStrategy (@noy-db/hub/i18n)~854Multi-locale records + dict-key resolution.
classifiedwithClassified() → classifiedStrategy (@noy-db/hub/classified)~1150Sensitive fields — verify-without-reveal, blind index.
periodswithPeriods() → periodsStrategy (@noy-db/hub/periods)~334Accounting periods + closed-period write guard.
consentwithConsent() → consentStrategy (@noy-db/hub/consent)~194Consent audit log (GDPR / PIPL-friendly).
guardswithGuards() → guardsStrategy (@noy-db/hub/guards)~700Record lock + field freeze + role-gated amendment.
portabilitywithPortability() → portabilityStrategy (@noy-db/hub/portability)~300Client data portability + public-envelope label.
attestationwithAttestation() → attestationStrategy (@noy-db/hub/attestation)~500Signed attestation / verification of records.
teamwithTeam() → teamStrategy (@noy-db/hub/team)~1000Multi-user grant / revoke / rotate + magic-link + delegation.
sessionwithSession() → sessionStrategy (@noy-db/hub/session)~839Token sessions + dev-unlock + policy enforcement.
syncwithSync() → syncStrategy (@noy-db/hub/sync)~856P2P replication engine + presence.
tierswithTiers() → tiersStrategy (@noy-db/hub/tiers)—Three-tier auth + policy gates (design). (design)
shadowwithShadow() → shadowStrategy (@noy-db/hub/shadow)~129Read-only vault.frame() views.
snapshotswithSnapshots() → snapshotsStrategy (@noy-db/hub/snapshots)~200Vault checkpoint / restore + retention.
routingrouteStore() from @noy-db/hub/store — wraps a store, not a createNoydb option~1800Multi-store routing + middleware + sync-policy.

The six families

Satellite packages named by their relationship to the trust boundary — each binds exactly one port subpath and nothing else (see Families & ports):

FamilyPortPurposeMembers
to-*/toStorage destinations — the only layer that touches ciphertext on the wire.file browser-idb browser-local · aws-s3 aws-dynamo cloudflare-r2 cloudflare-d1 · postgres mysql sqlite turso supabase · webdav ssh smb nfs · icloud drive · probe meter
on-*/onUnlock / auth methods — how a user proves identity to open the vault.webauthn oidc · magic-link · recovery shamir · totp email-otp password · pin · threat
at-*/atSealing-key providers — the one non-zero-knowledge family: a host you control can decrypt the scoped slice it unseals.env macos-keychain · aws gcp azure
in-*/inFramework integrations — reactive glue between a vault and your UI layer.vue react solid svelte nuxt nextjs · pinia zustand · tanstack-query tanstack-table rest · yjs · ai
by-*/bySession-share transports — move an unlocked session between contexts.peer · tabs
as-*/asImport / export data slices — portable artefacts in and out of a vault.csv xlsx · json ndjson xml · sql · blob zip · noydb

Worked compositions

The recipes are this page's worked examples, smallest to most opted-in: personal notebook (core only) → React invoice app (a framework binding + a store) → unlock ceremonies (on-* + session) → collaborative app (crdt + sync + team) → accounting app (six services composed). Each shows the resulting createNoydb({...}) block in its Setup section.

See also

  • Orientation map — the interactive form of this page: tick capabilities, watch the code write itself.
  • Services — every catalog entry's full page, prerequisites included.
  • Recipes — start from the closest worked composition and add what's missing.