Backup (JSON / CRDT)
Portable snapshot: users and crdt_log (replay on restore rebuilds ideas/elements/assets).
Backup (raw PostgreSQL)
Native pg_dump -Fc of the public schema. Restore with pg_restore or upload here (same as JSON flow; format is detected automatically).
Restore
Upload a JSON backup or a PostgreSQL custom-format dump (.dump).
This will replace all current data.
A JSON restore keeps every device logged in for any user still present in the backup — API keys are never wiped for them. Only a user who is genuinely absent from the backup being restored is removed, and only that user's devices need to re-enroll.
Attachment file contents are not included in either backup format. Only bookkeeping (filename, hash, size) travels with the backup — the actual file bytes live in MinIO and are not captured or restored by this page.