Sync and privacy
How offline-first vaults, end-to-end encrypted sync, conflict copies, account security, and the AI, Activity, and Apple Health privacy controls work.
A vault is a folder on your disk. Fluks reads and writes ordinary files inside it — Markdown for notes, JSON for structured data — so your work stays editable and portable. If another app changes a file, Fluks notices and reloads it.
This means the app is fully usable without a network:
- macOS can run with a local vault and no account at all.
- Every edit is written to disk first. Sync is a second step, not a requirement for saving.
- Timers, habits, and activity tracking keep working while the network is down.
Sync is configured per vault. On macOS, open Settings → Vault and turn on sync for a vault after signing in. You can keep other vaults local-only.
The sync badge in the top bar shows the current state:
| State | Meaning |
|---|---|
| Local | This vault is not linked to an account. |
| Syncing | Files are being pushed or pulled. |
| Offline | Sync will retry when the connection returns. |
| Paused | Sync is paused for this vault, by you or because the session expired. |
| Error | Sync needs attention; open the badge for details. |
Open the badge to see pending changes, recent transfers, and session totals. From there you can run Sync now, pause, or resume.
- Create an account and verify your email.
- Sign in on the Mac and enable sync for the vault.
- Sign in on the iPhone. The vault appears in the app’s vault list.
Changes made on either device sync through the server. A change made while offline is kept locally and uploaded on the next successful sync.
Fluks encrypts files on your device before they are uploaded. The server stores encrypted file contents plus storage metadata such as file size, revision, and modification time. It cannot read the contents of a file, and encrypted path ids do not reveal the original file names.
- Your password never leaves your device. The app derives a separate key for authentication and sends only that.
- The vault key is wrapped with a key derived from your password. A device needs the password (or an existing unlocked session) to unwrap it.
- API keys for AI providers are stored in the operating system keychain, not in the vault.
- There is deliberately no server-side “reset my password and decrypt my data” action. Without the password or an existing device that holds the vault key, encrypted synced data cannot be recovered.
Most Fluks files merge by row or by event id, so two devices can add tasks, completions, or history entries without overwriting each other. When a file cannot be merged safely — for example, two devices rewrite the same document before syncing — the last writer wins and the losing version is preserved as a conflict copy.
Conflict copies look like this:
tasks.conflict-1762345678901.json They are real files next to the winning file and sync to every device like any other file. Fluks automatically discards copies that contain nothing the winner lacks.
To review a backlog, open Settings → Vault → Review…:
- Restore brings the copy’s content back over its original. If the original was deleted, restoring recreates it.
- Discard deletes that version everywhere.
- Discard all clears the backlog in one go.
Copies whose original was deleted stay reviewable for 30 days, then expire. The server’s version history keeps deleted content for 90 days by default.
- Email verification — new accounts must verify their email before signing in.
- Password — at least 8 characters. Change it from Settings → Account. Changing your password re-wraps the same vault key, so synced files do not re-encrypt. Other signed-in devices are signed out.
- Two-factor authentication — enable TOTP from Settings → Account, then save the single-use recovery codes. You can use a recovery code instead of a 6-digit code at sign-in.
- Sign out — stops sync on that device and removes the local session. Vault files stay on disk.
- Delete account — permanently removes the account, its vaults, file versions, and two-factor settings from the server. Local files are not deleted.
Chat messages go to the AI provider you choose. Vault data is only exposed to the model through the tool groups you enable.
- Capability groups are the privacy boundary. Turning off a group removes its tools, its prompt recipes, and its snapshots. A disabled tool is rejected even if the model tries to call it.
- Destructive tools always ask for confirmation before they run.
- Sensitive groups — Activity, Memory, and Web — are off by default for new vaults. Enable them deliberately.
- Provider transparency — when an OpenRouter provider is selected, Fluks shows whether it trains on data, retains data without training, or has no retention. You can filter to providers that do not train.
- Local providers such as Ollama and LM Studio run on your machine and need no API key.
Automatic activity tracking is a macOS feature. While Fluks is running, it records the foreground app every two seconds and folds that into sessions.
- Track automatically turns capture on and off.
- Excluded apps are never recorded.
- Private title patterns replace matching window titles with “Private Browsing”.
- Retention deletes activity data older than the chosen number of days.
- Window titles require macOS Accessibility permission. App names still work without it; Fluks shows a permission banner when titles are unavailable.
- Activity data is written to the vault, so it follows the vault’s sync setting.
Apple Health connections are created and run on the iPhone. HealthKit access is read-only.
- An imported Health entry becomes an ordinary measure entry. It can feed charts, habits, and goals like any other entry.
- Deleting an imported entry removes it from Fluks only. It does not delete anything in Apple Health, and Fluks will not import that sample again.
- Deleting a connection stops future imports. Entries already imported stay in the measure.
- The Mac shows the synced connection definitions read-only and cannot run them.
| Data | Where it lives | Who can read it |
|---|---|---|
| Vault files | Your disk, plus encrypted sync when enabled | You and your devices |
| Sync server data | Encrypted files and storage metadata | The server cannot read file contents |
| AI chat | Messages go to your chosen provider | You, the provider, and any tool groups you enable |
| AI API keys | OS keychain | Your device only |
| Activity | Vault files on the Mac | You; synced if the vault syncs |
| Apple Health | Read on the iPhone; imported entries become vault entries | You and your devices; Apple Health is never written to |