Personal Sync
Personal Sync is a private full-archive backup, not a selective sharing feature. It always includes sessions, memories, unredacted provider backups, attachments, and artifacts. It has no repository, folder, owner, or provider selector.
Profile and device identity
Section titled “Profile and device identity”Creating a Personal Sync space writes a random profile identity to
<prefix>/personal.json. Each of the owner’s devices receives a stable derived
device ID and uploads below:
<prefix>/personal/<profile-id>/devices/<device-id>/...Renaming a person or device does not change these IDs. Any number of the same person’s devices can connect to one profile, but one Hansard installation can connect to only one Personal Sync profile at a time.
The endpoint, bucket, region, prefix, sync direction, cadence, and credentials
remain local connection settings. Credential values do not appear in
personal.json or the viewer settings payload.
Create a Personal Sync space
Section titled “Create a Personal Sync space”-
Choose a new, private storage prefix.
A local or mounted private folder needs no cloud credentials:
Terminal window hansard personal-sync create --endpoint file:///srv/hansard-privateCloudflare R2, Amazon S3, and other S3-compatible services use the cloud form:
Terminal window hansard personal-sync create \--target r2 \--endpoint https://ACCOUNT_ID.r2.cloudflarestorage.com \--bucket example-hansard-privateFor S3 or a compatible service, pass
--target s3or--target customand add--regionwhen required. -
Review the preview and confirm the first upload.
Creation first checks that no Personal Sync manifest already exists at the prefix, previews the archive write, then creates the profile and runs the first sync only after confirmation. In non-interactive use,
--yesis required to proceed. -
Check the connected profile.
Terminal window hansard personal-sync statushansard sync status
Connect another device
Section titled “Connect another device”Use the same destination and prefix from the second device. Connect reads the
existing personal.json and refuses to attach the installation to a different
profile at that connection.
hansard personal-sync connect --endpoint file:///srv/hansard-privateFor a cloud destination, use the same --target, --endpoint, --bucket,
--region, and --prefix values and supply that device’s storage credentials
separately.
After connecting, run the configured target through the normal sync engine:
hansard syncPersonal Sync connections default to two-way mode. Two-way sync uploads the
current device first and then receives other device namespaces under the local
read-only received/devices/ tree. Received memories and raw backups are
included automatically for a first-class Personal Sync target.
Sync behavior
Section titled “Sync behavior”uploadsends changed local objects in this device’s namespace.receivemirrors other device namespaces locally as read-only data.two-wayruns upload and then receive under one lock.- Normal sync never treats a missing local object as a remote deletion.
- Plain receive does not delete a local mirror when an object disappears remotely; pruning is a separate, confirmed operation.
- Derived search indexes are rebuilt locally rather than uploaded.
- Deep Recall research threads remain device-local by default.
Use hansard sync status --json for a machine-readable view of the configured
target and its most recent upload and receive state.
Disconnect this installation
Section titled “Disconnect this installation”hansard personal-sync removeRemoving the connection changes local Hansard configuration only. It does not delete the remote manifest, device objects, snapshots, bucket versions, or storage-provider backups. Remove retained data through an explicitly previewed Hansard wipe operation or the destination’s own retention controls.
For repository-scoped collaboration, use Teams instead. Teams have a narrower upload contract and exclude raw provider backups and memories.