Offline & sync

Offline & sync

Local-first storage makes the app instant and offline-capable; real-time sync keeps every device and teammate current.

createtodo is local-first: your workspace is stored in a database inside your browser. The app reads and writes locally, which is why it opens instantly and every interaction feels immediate — no spinner between you and your todos.

Real-time sync

Changes are streamed to the server and out to every other tab, device, and teammate the moment they happen. There is no save button and no refresh; a todo a teammate closes — or an agent files from a terminal — appears in your list as it happens, and a row that changed under you pulses once so you notice. View settings, favorites and drafts travel the same way.

Working offline

Because the app runs against local data, losing your connection doesn’t stop you. Keep creating, editing, and completing todos; changes queue locally and flush automatically when you’re back online.

The sync indicator

The workspace menu — the workspace name at the top of the sidebar — opens with where things stand: Synced, Syncing changes, Offline (“Saved locally”), or Sync issue, with the detail under it. After a reload the app shows your local data at once and a Syncing local database… toast while it catches up in the background.

If the server refuses a change — typically a tab running a build older than the API — the changes are held rather than lost: the workspace menu shows the server’s message and offers Retry now. Held changes also retry on their own after a deploy and on a short ladder of intervals.

Collaborative editing

Todo descriptions go further than last-write-wins: they are collaborative documents, so simultaneous edits from multiple people or agents merge cleanly instead of overwriting each other. Other fields take the last write.

The CLI, offline

ct pull builds the same kind of local replica for the command line, so ct ready, ct list, ct show and ct prime keep working without a connection, and writes made offline wait in ct queue until the next online run.