stable

store capabilities

Which essential or extended to-* store exposes which shape, its per-record CAS atomicity, and whether db.transaction() can commit atomically.

Consult this page when choosing a store: it answers which store exposes which shape, whether concurrent same-record writes are CAS-protected, and whether db.transaction() can commit through one atomic store-level batch. Generated from features.yaml (adapters[].capabilities, the 3 essential stores) and registry/generated/to-capabilities.json (the 19 extended noy-db-to stores, itself generated by registry/scan-to-capabilities.mjs statically scanning the noy-db-to source — never hand-typed).

Scope: this matrix covers all 22 to-* stores across the family — the 3 essential stores (2 ship with noy-db itself, @noy-db core; to-meter from noy-db-in), and the 19 extended stores — cloud, SQL, server, and remote-filesystem backends such as to-postgres, to-aws-s3, and to-supabase — that ship from the separate noy-db-to repository under the same @noy-db/* scope, binding the same @noy-db/hub/to contract. The Scope column names which repo ships each row; browse the full catalog at the to-* catalog. Extended rows show a Use case/Status tag only where features.yaml still carries an entry for them — today just to-memory, which kept its entry when it relocated out of core; noy-db-to tracks neither field, so the rest show —.

  • record — per-record key-value store (NoydbStore: get / put / list / loadAll). The default shape for databases and object stores.
  • vault — whole-vault bundle store (NoydbPodStore: readBundle / writeBundle / listBundles). One encrypted .noydb blob per vault; the destination for withSnapshots() and bundle-mode sync.

A backend may expose both shapes — in the extended family, @noy-db/to-aws-s3 ships toAwsS3() for records and s3Bundle() for whole-vault bundles. casAtomic is shown as n/a for vault-only stores (concurrency there is per-bundle OCC, not per-record CAS).

txAtomic reports whether the store declares the capability db.transaction() delegates to for a statically-safe batch: ✅ full contract, conditional when it depends on a runtime detail (only to-turso today — whether the injected client exposes batch()), ❌ no (every transaction on this store takes the per-record OCC path), n/a for vault-only stores (no NoydbStore, so no per-record tx() to declare).

AdapterScoperecordvaultcasAtomictxAtomicUse caseStatus
to-aws-dynamonoy-db-to✅❌✅✅serverless-cloud-kvstable
to-aws-s3noy-db-to✅✅✅❌object-store-and-bundlesstable
to-browser-fsnoy-db-to✅❌❌❌browser-local-directorystable
to-browser-idb@noy-db core✅❌✅❌pwa-offline-firststable
to-browser-localnoy-db-to✅❌❌❌browser-small-vaultstable
to-cloudflare-d1noy-db-to✅❌✅✅edge-sqlstable
to-cloudflare-r2noy-db-to✅❌✅❌edge-object-storestable
to-drivenoy-db-to❌✅n/an/apersonal-drive-bundlesstable
to-file@noy-db core✅❌❌❌usb-or-local-diskstable
to-icloudnoy-db-to❌✅n/an/aapple-personal-bundlesstable
to-memorynoy-db-to✅❌✅✅testingstable
to-meternoy-db-in✅❌❌❌observabilitystable
to-mysqlnoy-db-to✅❌✅✅self-hosted-sqlstable
to-nfsnoy-db-to✅❌❌❌network-filesystemstable
to-postgresnoy-db-to✅❌✅✅self-hosted-sqlstable
to-restnoy-db-to✅❌✅❌remote-http-storestable
to-smbnoy-db-to✅❌❌❌windows-network-sharestable
to-sqlitenoy-db-to✅❌✅✅embedded-sqlstable
to-sshnoy-db-to✅❌❌❌remote-filesystem-over-sshstable
to-supabasenoy-db-to✅❌✅✅managed-postgresstable
to-tursonoy-db-to✅❌✅conditionaledge-sqlitestable
to-webdavnoy-db-to✅❌❌❌webdav-sharestable

Totals: 22 adapters (3 essential + 19 extended) — 20 record-capable, 3 vault-capable (1 both).

See also

  • Stores — the NoydbStore / NoydbPodStore contracts these adapters implement, and the two-repo split
  • to-* family — the full storage-destination catalog, including the extended cloud/SQL/remote-FS stores
  • transactions — the db.transaction() atomicity guarantee this txAtomic column feeds