Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getbased.health/llms.txt

Use this file to discover all available pages before exploring further.

getbased can sync your profiles, lab data, and AI settings across as many devices as you like. Sync is opt-in and end-to-end encrypted: a relay server carries the data between your devices, but it only ever stores ciphertext. Without your mnemonic, the relay cannot read anything.

How it works

Sync is powered by Evolu, a local-first CRDT (Conflict-free Replicated Data Type) engine. When you enable sync:
  1. A 24-word mnemonic is generated — this is both your sync identity and your encryption key.
  2. Your data is encrypted with a key derived from that mnemonic and pushed to the relay.
  3. Any other device that uses the same mnemonic can pull and decrypt your data.
The relay acts as a blind store-and-forward server. It holds encrypted blobs and forwards them to your other devices. It never sees your plaintext.

Set up sync on your first device

1

Open sync settings

Go to Settings → Data, or click the Protect your data pill on the dashboard and select Cross-device Sync.
2

Enable sync

Toggle Cross-device sync on. A setup modal appears.
3

Choose New setup

Click New setup to generate a fresh mnemonic for this account.
4

Save your mnemonic

Your 24-word mnemonic is displayed in cleartext. Write it down and store it somewhere offline — a piece of paper in a safe place, a password manager, or both. Then check I have saved my mnemonic somewhere safe.
5

Finish

Click Done. Your data begins syncing to the relay immediately.
Anyone who has your mnemonic can access your synced data. Treat it like a password — store it offline and never share it.

Add more devices

1

Open sync settings on the new device

Go to Settings → Data and toggle Cross-device sync on.
2

Choose Join existing

Click Join existing in the setup modal.
3

Enter your mnemonic

Paste or type your 24-word mnemonic from your first device.
4

Restore

Click Restore. The page reloads and pulls your data from the relay. All profiles and AI settings appear immediately.

What syncs

The following data flows across all paired devices:
  • All profile data — lab entries, context cards, notes, supplements, cycle data, custom markers, EMF assessments
  • Profile metadata — name, sex, date of birth, location, tags
  • AI settings — provider, API keys, model selections, Venice E2EE toggle
  • Chat threads, messages, and custom personalities
  • Display preferences — unit system, range mode, chart overlays
Settings such as theme are device-specific and do not sync.

Wearable data

Wearable sync follows a deliberate split:
  • Wearable summary syncs. The latest values, baselines, weekly trends, and anomaly events for every connected wearable metric flow to your other devices alongside everything else. Strip cards on Device B show the right numbers immediately after sync.
  • Raw daily rows stay local. The full 90-day history (every per-day HRV, sleep score, RHR, and manual entry) lives in a per-device IndexedDB and is excluded from the sync payload. Detail-modal charts on Device B will be empty until you connect each wearable vendor separately on that device.
  • OAuth tokens never sync. Each device must authorise each wearable independently. This is by design — a stolen mnemonic should not grant continuous access to your live wearable feeds.

Sync status indicator

When sync is enabled, a small colored dot appears in the header next to the settings gear:
DotMeaning
GreenSynced — relay connected, data confirmed
Blue (pulsing)Syncing — push or pull in progress
AmberOffline — relay unreachable, changes saved locally
RedError — sync failed
Click the dot to see relay connectivity details, last push and pull timestamps, and a Sync now button for manual retry. The Settings link in that panel opens the Data tab directly.

Conflict resolution

Sync uses last-write-wins per item, based on timestamps. Each save ships small per-item CRDT deltas — one lab entry, one marker note, one sun session — rather than re-sending your entire health record. If two devices edit the same item simultaneously before they sync, the most recent push wins. Edits to different items always merge cleanly.

Mnemonic security

Your mnemonic is your encryption key. getbased takes several precautions to protect it:
  • Masked by default — displayed as bullet characters in Settings, with a Show/Hide toggle.
  • Clipboard auto-clear — when you copy the mnemonic, the clipboard is cleared after 60 seconds.
  • No server storage — the mnemonic is generated and stored locally by the Evolu engine and is never sent to any server.

Regenerating your mnemonic

Disabling sync resets your identity. Re-enabling sync generates a fresh mnemonic. Your other devices will need to join with the new mnemonic.
If you lose your mnemonic, there is no recovery. You can still access your local data on each device, but you will need to set up sync again from scratch with a new mnemonic on all devices.

Profile deletion across devices

When you delete a profile, getbased marks it as deleted on the relay (a tombstone). On the next pull, every other paired device sees the tombstone and wipes its local copy automatically — single-profile deletes propagate without prompting. For batched deletes (two or more profiles deleted at once), the receiving device quarantines the wipe and shows a confirmation UI in Settings → Sync. Each pending delete has Apply delete and Restore buttons. This protects against a leaked mnemonic: an attacker publishing tombstones for all your profiles would otherwise silently wipe every paired device on the next pull. To reject a quarantined delete, click Restore — getbased re-publishes the local profile data, which beats the tombstone on the next sync. To accept, click Apply delete — the local wipe runs and the entry clears.

Run your own relay server

The relay is open source (the Evolu relay) and runs as a single Docker container with an embedded SQLite database. You need a Linux VPS with at least 1 CPU and 1 GB RAM, Docker, and a domain with TLS.
1

Start the relay container

docker run -d \
  --name evolu-relay \
  --network host \
  --restart unless-stopped \
  evoluhq/relay:latest
This starts the relay on port 4000 (WebSocket only).
2

Add TLS with Caddy

Install Caddy and create /etc/caddy/Caddyfile:
sync.yourdomain.com {
    reverse_proxy 127.0.0.1:4000 {
        transport http {
            versions h1
        }
    }
}
The versions h1 directive is required — WebSocket upgrades need HTTP/1.1.
systemctl restart caddy
Caddy provisions a TLS certificate automatically via Let’s Encrypt.
3

Point DNS

Add an A record for sync.yourdomain.com pointing to your server’s IP address.
4

Connect getbased to your relay

In getbased, go to Settings → Data → Advanced and enter wss://sync.yourdomain.com. The status dot turns green when connected.
For a production relay, disable SSH password authentication, enable a firewall (allow only ports 22, 80, and 443), and enable automatic security updates.

Relationship to local encryption

Cross-device sync and local encryption are independent systems:
  • Local encryption (passphrase → AES-256-GCM) protects your localStorage data at rest on each device.
  • Sync encryption (mnemonic → Evolu’s key derivation → XChaCha20-Poly1305) protects data in transit and on the relay.
You can use either, both, or neither. Enabling local encryption does not affect sync, and vice versa.