Skip to content

Back up and restore your Thrum data

Free and Pro

Your data is backed up for you. Thrum saves a backup of your messages, your agents’ saved state, your settings and your vault once every 24 hours, as long as Thrum is running. You do nothing to turn it on. Conversation transcripts are added once a week.

Backups are zip files in the archives folder of .thrum/backup/<repo name>/ in your repository. Each is named with its date and time. Thrum keeps the 5 newest, then one per week for 4 weeks, then one per month with no limit. By default, backups go in the .thrum folder, which Git ignores, so they stay on this machine. They leave it only if you choose another backup folder or copy them elsewhere, for example with backup.post_backup.

Your coordinator is the agent you talk to, which starts the other agents, hands out work and reports back to you. The daemon is Thrum’s background process on your machine. To change how often it runs, ask your coordinator, for example: Back up Thrum every 12 hours. It restarts the daemon for you.

Until you set a passphrase, backups are not encrypted. They contain your vault and its key, so anyone with a backup file can read your secrets. Thrum’s web UI is the page you open in your browser to see your agents and their messages. To set one, open the web UI, select Settings at the bottom of the sidebar, then the General tab. Under Backup passphrase, select Set passphrase, type it in New passphrase and Confirm passphrase, and select Save passphrase. This works on Free. Backups made before that stay unencrypted. Keep the passphrase safe: an encrypted backup can’t be opened without it.

Ask your coordinator: When was the last backup?

Do this yourself in a terminal in your repository, because the restore stops Thrum while it runs. It also works on a fresh clone of your repository where you have not run thrum init:

$ thrum backup restore
This will restore thrum data from backup.
Backup dir: ~/scratch-job3-backup/.thrum/backup
Repo: scratch-job3-backup
…
A safety backup will be created first.
Continue? [y/N] y
Daemon stopped for restore.
Safety backup: ~/scratch-job3-backup/.thrum/backup/scratch-job3-backup/archives/pre-restore-2026-10-31T215504.zip
Restored from: ~/scratch-job3-backup/.thrum/backup/scratch-job3-backup/archives/2026-10-31T215426.836224438.zip
…
Daemon restarted. SQLite will rebuild from restored JSONL.

This restores the newest backup. It asks you to confirm, saves a safety copy of what you have now, restores, and starts Thrum again. If the backup is encrypted it asks for the passphrase. The paths in your output will differ. Your output also has more lines where the … are. Thrum prints them while it stops and starts again, and you can ignore them.

To restore an older backup, list the zip files, then give the path of one:

Terminal window
ls .thrum/backup/*/archives
thrum backup restore .thrum/backup/my-repo/archives/2026-02-15T101500.123456789.zip

Replace my-repo and the file name with yours. Files that start with pre-restore- are the safety copies that earlier restores made. The Restored from: line in the output shows which backup was used.