Backup: the whole store, off the host
Every onboarded project's tasks live in virta's log, and an immutable log
doesn't survive losing the host, the Firebase project or the account
(owner, 2026-10-01; board #2479). virta backup <dir> copies all of it to
a directory a private git repo can keep, and virta restore-backup <dir>
rebuilds a host from it.
events.jsonl: every event, verbatim, in log order. Each run appends only the events it doesn't hold yet (by id), so the file only grows and a git diff is just the new lines.files/<area>/<path>: every stored file a task or showcase names. Paths are content hashes, so a copied file is checked against its name.backup.json: the host, the counts, the last log position and the event file's SHA-256.
This copy is private: it keeps everything, provenance and addresses
included. (The practices export is the public one.) A restore writes only
the events the host lacks, in their original order, so task numbers come
out the same on an empty host, and then the files. Provenance can't be
restored: the host stamps whoever restores, and each event keeps its own
by.
virta backup ../virta-backup # incremental: run it on a schedule
virta restore-backup ../virta-backup --dry