Chronicle KeeperDocs
Docs / Multi-device sync

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.

You don't need this.

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

  1. 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.

  2. Add the server URL in Settings

    Paste your server's URL into Settings → Sync and authenticate. Sync stays off until a URL is present.

  3. 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).