Skip to content

Your data

Your entire database is one human-readable JSON file:

~/Library/Application Support/studio.obra.todo/todo.json

No accounts, no sync service, no lock-in — see the open format for the full schema.

Four layers keep the file safe:

  1. Autosave — every change is written a few hundred milliseconds after you make it, and immediately when the window loses focus.
  2. Atomic writes — each save goes to a temp file first, then renames over the real one. A crash mid-write can never corrupt the database, and the backend refuses to persist anything that isn’t valid JSON.
  3. Close waits for the disk — closing the window holds until the last edit is written. If the file ever fails to load, the app runs in-memory and refuses to save rather than overwrite good data.
  4. Daily backups — on the first launch of each day, the database is copied to backups/todo-YYYY-MM-DD.json alongside the original, keeping the newest 30. Even a successful save of bad data — a wrong bulk delete, a misbehaving agent — costs at most a day.

Quit the app, then copy the backup over the live file:

Terminal window
cd ~/Library/"Application Support"/studio.obra.todo
cp backups/todo-2026-07-24.json todo.json

Relaunch and you’re back.

  • The data lives outside the app bundle: rebuilding, reinstalling or updating Obra Todo never touches your todos.
  • Application Support is on your boot volume, so Time Machine (if you use it) already keeps off-machine copies of the database and its backups.
  • External edits — by you or an agent — are picked up automatically every time the app window regains focus. Last writer wins; there is no merge.