Quickstart
One command takes you from a fresh Rivet install to a reviewable snapshot of your workstation. This page assumes you have already installed Rivet.
1. Run the setup wizard
Section titled “1. Run the setup wizard”rivet initOn an interactive terminal this walks you through the whole of steps 2 and 3 below: it shows what Rivet found on this machine, asks what to keep, and offers to take the first snapshot. If that is all you wanted, you are done — skip to step 4.
The repository is created at ~/rivet by default, and its location is
recorded, so no later command needs --repo. To put it elsewhere, or to let
Rivet create and attach a private GitHub repository via gh:
rivet init --repo ~/rivet-snapshots --github you/rivet-snapshotsUse --no-interactive to create the repository without the wizard. It is also
skipped automatically when stdin is not a terminal, so scripts and packaging
are unaffected.
By default snapshots go to Git only. To add a NAS, cloud remote, or restic repository as an additional destination, see Storage backends.
2. Choose what gets captured
Section titled “2. Choose what gets captured”The wizard already did this. To change your mind later:
rivet checklist --selectchecklist shows only supported configuration groups that actually exist on
this machine — there is no broad home-directory scan. --select walks you
through those groups and then through package sources (Pacman repositories,
AUR, AppImages, Snap, Flatpak). Answer y to include, n to exclude, or press
Enter to keep the current state.
Your choices are saved to the snapshot repository’s rivet.toml, and later
snapshots collect only what you approved.
To choose without being prompted — in a script, a CI job, or a packaging postinstall — name the categories instead:
rivet checklist --only shell-git,kde-plasma,packages--only takes the group ids that rivet checklist --json reports, plus
packages for package sources. Anything you do not name is deselected, so the
same command always produces the same rivet.toml no matter what was selected
before. An unrecognised name is rejected, listing the ones that would work.
Together with rivet init --no-interactive, this is the whole path from a
fresh machine to a first snapshot without a terminal:
rivet init --no-interactiverivet checklist --only shell-git,packagesrivet snapshot3. Snapshot
Section titled “3. Snapshot”rivet snapshot --pushA commit is created only when content actually changed. Before pushing the first time, inspect what was captured:
cd ~/rivetgit show --statSee Snapshot workflow for drift checking, deleting the latest snapshot, and pushing safely.
4. Restore, on this machine or the next one
Section titled “4. Restore, on this machine or the next one”rivet restore # plan only, writes nothingrivet restore --apply --yes # overwrites tracked files, after rollback copiesWithout --apply you get a plan and nothing else. The plan also lists the
categories in your snapshot, which you can restore a subset of:
rivet restore --only vim-neovim,packages # just those categoriesrivet restore --select # choose item by itemAnything not named in --only is excluded — including packages, unless you
name packages. See Restore for diffs, earlier revisions,
and cross-distro behaviour.
Where to go next
Section titled “Where to go next”- What Rivet excludes — the safety boundary, in full
- Secrets vault — carrying an SSH config or
.netrcsafely - CLI reference — every command and flag