Data and memory

Source-review guidance

Know which data boundary you are evaluating.

“Stored locally,” “encrypted,” “backed up,” and “deleted” are different properties. This guide keeps them separate so a source evaluator can make an informed choice.

Current disclosure: OAuth-token storage is mixed. The credential vault can encrypt new or reconnected grants when it is initialized and unlocked; without that state, legacy plaintext token columns remain possible. Current local twin profile, preferences, and textual memory should be treated as plaintext to anyone with access to the CockroachDB files. Full-disk encryption is the practical host-level protection today.

What is stored

Kind Purpose Current boundary
Profile and preferences Versioned model of stated preferences, confidence, and feedback. Local CockroachDB data; see the privacy disclosure before adding personal information.
Decision records and explanations What the system considered, what stopped it, and how a person can correct it. Persisted for supported paths; release-wide explanation coverage remains a beta gate.
OAuth tokens and secrets Credential material for a connector. Credential-vault envelope encryption when initialized and unlocked; otherwise legacy plaintext token storage remains possible. Real-account connectors are unavailable in the supported preview.
Inference receipts Structured record of a completed inference attempt. Local records with intentionally constrained fields; read the receipt contract for current limitations.

Memory choices

The default memory backend is SkyTwin's gbrain-compatible, in-process CockroachDB implementation. It combines vector and text search with reciprocal-rank fusion. Upstream gbrain itself supports PGLite and PostgreSQL, not the supported CockroachDB path, and its CLI adapter does not implement SkyTwin's complete write, episode, and graph contract; SkyTwin therefore never selects that CLI adapter at runtime. The optional hybrid mode pairs the CRDB-backed implementation with the legacy mempalace adapter; mempalace alone remains selectable for people who explicitly prefer its spatial model. These are source configuration choices, not a promise of equivalent results across backends.

For exact capability differences, migration semantics, embedding-provider configuration, and database-gated verification, use the memory backend reference. A hosted embedding endpoint is a networked provider choice; a local embedding server is a separately configured local service.

Backup and restore

The source CLI exports one user’s twin data to a passphrase-protected archive. It intentionally excludes OAuth tokens, dispatch leases, callback fences, sessions, recovery codes, and device-pairing state. Restore refuses to overwrite an existing user and preserves restored decisions as non-replay history rather than queued work. Backup schema v6 also carries versioned workflows, immutable versions, proposals, activation history, and the active Watch projection. Watch run history and exact run evidence remain installation-local. Restore validates ownership, hashes, lineage, transitions, and projection pins before one transaction writes any portable state.

export SKYTWIN_BACKUP_PASSPHRASE='use-a-long-passphrase'
pnpm --filter @skytwin/db backup export --user <userId> --out my-twin.stbk
pnpm --filter @skytwin/db backup restore my-twin.stbk

Use the backup and restore reference before relying on this workflow. It documents format compatibility, passphrase handling, exit behavior, and the fresh-install requirement.

Control boundaries

Pause, approvals, audit history, and deletion are user-control mechanisms; they are not proof that every stored field has the same encryption, retention, or release-evidence status. Start with the fictional sample, then read privacy, safety, and release evidence together before adding any personal data.

FAQ · Operations · Architecture