Git Sync (experimental)
Push and pull your collections against a remote git repository you own — a private GitHub repo, a self-hosted Gitea instance, anything with an HTTPS git remote.
Your data/ folder is never itself a git repo; instead Volley maintains a separate local clone (volley-sync/) as a bridge. Enable it first in ⚙ Settings → Experimental → Git sync, then click the Git button that appears in the topbar.
Setup
- Remote URL — the HTTPS URL of your collections repo (e.g.
https://github.com/you/my-collections). - Personal Access Token — required for private repos and for push. For GitHub fine-grained PATs: grant Contents (read & write) and Metadata (read). Leave blank for a public read-only repo.
- Branch — defaults to
main. - Click Save, then Connect to clone the remote into
volley-sync/and populatedata/from it.
Push / Pull
- Push — copies
data/intovolley-sync/, commits, and pushes to the remote. Run this after making changes you want to share. - Pull — fetches the remote and compares it against
volley-sync/'s last-known state. Changes that don't conflict with local edits are applied automatically; conflicting files go to a conflict resolution modal where you choose to keep local or take remote for each file, then click Apply.
The files _volley/history.json, _volley/tabs.json, _volley/cookies.json, and _volley/monitor-runs.json are excluded from sync — they're ephemeral local state that doesn't belong in a shared repo. _volley/monitors.json (the monitor definitions) syncs normally, same as your collections.
Re-clone
If your local data/ gets into a bad state, Re-clone (the same Connect button when already connected) wipes data/ and repopulates it from the remote. Push any unsaved work first.
If the remote repo contains a single Volley export file ({ "cols": [...] }), Re-clone detects this and expands it into the normal directory structure automatically — so pointing Volley at an existing export repo works out of the box.
Auto-sync
Enable Auto-sync in the Git modal and set an interval (default 5 minutes). Volley will push then pull on that schedule. If the pull reveals conflicts with remote changes, a notification appears prompting you to open the Git modal to resolve them. Cross-tab coordination via localStorage ensures only one open browser tab syncs per interval.