API reference / @evolu/common / local-first / Owner

Interface: Owner

Defined in: packages/common/src/local-first/Owner.ts:66

The Owner represents ownership of data in Evolu. Every database change is assigned to an owner and encrypted with its OwnerEncryptionKey. Owners allow partial sync, only the AppOwner is synced by default.

Owners can also provide real data deletion, while individual changes in local-first/distributed systems can only be soft deleted, entire owners can be completely deleted from both relays and devices (except for AppOwner, which must be preserved for sync coordination).

Evolu provides different owner types depending on their use case:

  • Coordination: AppOwner for sync coordination and long-term persistence
  • Data partitioning: ShardOwner for partitioning application data
  • Collaboration: SharedOwner for collaborative write access
  • Data sharing: SharedReadonlyOwner for read-only access to shared data

Owners are cryptographically derived from an OwnerSecret using SLIP-21, ensuring secure and deterministic key generation:

See

Extends

Extended by

Properties

PropertyModifierTypeDescriptionInherited fromDefined in
encryptionKeyreadonlyUint8Array<ArrayBufferLike> & Brand<"Entropy"> & Brand<"Length32"> & Brand<"EncryptionKey"> & Brand<"OwnerEncryptionKey">TODO: Wrap with Redacted in the next major version.ReadonlyOwner.encryptionKeypackages/common/src/local-first/Owner.ts:32
idreadonlystring & Brand<"Id"> & Brand<"OwnerId">-ReadonlyOwner.idpackages/common/src/local-first/Owner.ts:30
writeKeyreadonlyUint8Array<ArrayBufferLike> & Brand<"Entropy"> & Brand<"Length16"> & Brand<"OwnerWriteKey">TODO: Wrap with Redacted in the next major version.-packages/common/src/local-first/Owner.ts:68

Was this page helpful?