Multi-device sync
Optional. Keep your campaigns and notes in step across machines via a small server you host yourself. Text only, and completely off until you switch it on.
Chronicle Keeper is fully functional on a single machine with sync off. Only turn it on if you work across more than one computer and want them to share the same notes.
What syncs (and what doesn't)
- Synced: campaigns, sessions, transcripts, summaries, the Codex, and metadata — the text that makes up your chronicle.
- Not synced: the bulky source audio files. They stay on the machine that did the recording, which keeps the server small and cheap to run.
How it works
Sync is offline-first: you keep working locally and changes push and pull in the background when a server is reachable. The desktop app is purely a client of the sync server — all transcription and LLM work still happens on your machine. The server only stores and serves rows of data, with auth.
Importantly, there is no Chronicle Keeper cloud. The sync server is a separate, minimal component (chronicle-keeper-sync-server) that you run yourself — your LLM keys and audio never touch it.
Turning it on
Run a sync server
Self-host the sync-server (a small FastAPI service — data CRUD + auth only) on a VPS, home server, or anywhere you can reach.
Add the server URL in Settings
Paste your server's URL into Settings → Sync and authenticate. Sync stays off until a URL is present.
Repeat on your other devices
Point each machine at the same server. They'll converge on the same campaigns and notes.
For the technically curious
The push/pull protocol — change tracking, conflict handling, and the row format — is defined by the code on both ends: the client in crates/ck-core/src/sync.rs and the open-source reference server chronicle-keeper-sync-server (app/sync.py).