Jobs
A job is one configured unit of work. Every job has the same identity, destinations, optional restic tag, run command, status view, snapshot tools, and audit result. Its type determines how source is prepared before restic takes a snapshot.
Commands
| Command | Purpose |
|---|---|
job list |
Show every configured job and its type |
job run [JOB_ID] --repository ID... [--dry-run] |
Prepare and snapshot one job |
job status [JOB_ID] |
Show the latest tagged snapshot at every destination |
job restore [JOB_ID] ... |
Restore one repository from a GitHub job snapshot |
job data-dir [JOB_ID] |
Show a GitHub job’s managed workspace |
Run uv run restic-backups for the job-first arrow-key TUI. Choose Jobs, then select a job to run it, inspect status or snapshots, invoke advanced restic commands, or open its type-specific tools. A sole available destination starts checked; when several are available, they all start unchecked and must be selected with Space.
Jobs with no available destination are grouped under a grey Disabled heading at the bottom of the job picker. List, status, snapshot, data-path, and other read-only displays return to the current TUI menu after showing results.
For scripts, provide every destination explicitly:
uv run restic-backups job run documents \
--repository personal-b2 \
--repository personal-localFiles
jobs:
- job-id: documents
type: files
restic-repository-ids: [personal-b2, personal-local]
source:
paths:
- ~/Documents
- ~/DesktopPaths are passed to restic backup; ~ is expanded. Restic creates a complete snapshot view while uploading only data not already present in that destination repository.
Explicit GitHub repositories
jobs:
- job-id: source-code
type: github-repository
restic-repository-ids: [personal-local]
source:
repository-urls:
- git@github.com:example/source-code.git
- git@github.com:example/another-project.git
components:
git: true
lfs: false
wiki: false
metadata: false
release-assets: false
migration-timeout-seconds: 3600The job updates an independent managed mirror and selected GitHub data for each URL before snapshotting the complete job workspace. With only git enabled, each mirror contains all commits, branches, tags, trees, and file content reachable through remote Git refs. It does not contain Git LFS payloads, GitHub issues, pull-request discussions, submodule repositories, or history already deleted from every remote ref. See GitHub Backups for components and credentials.
GitHub organization or user
jobs:
- job-id: example-organization
type: github-owner
restic-repository-ids: [personal-local]
source:
owner-url: https://github.com/example
clone-protocol: ssh
components:
git: true
lfs: false
wiki: false
metadata: false
release-assets: false
migration-timeout-seconds: 3600This type enumerates every repository visible to the active GitHub credentials for the supplied organization or user, then delegates to the same multi-repository workflow. A single snapshot therefore represents the complete discovered set at run time. Archived repositories and forks are included. Private repositories are included when the active gh credentials can see them and the configured Git credentials can clone them. Local runs may use credentials from gh auth login; unattended runs may configure authentication.api.token from an environment variable or file.
A dry run performs read-only enumeration and reports every planned repository component. It never creates workspaces, invokes Git, or contacts Restic.
Voice Memos
jobs:
- job-id: memos
type: voice-memos
restic-repository-ids: [personal-b2]
source:
authentication:
hugging-face:
token: CHANGE_MEEncrypt the inline token with SOPS. It may instead contain one env or file key; omit authentication when diarization is unused or HF_TOKEN is already in the process environment. The token is resolved only for diarization. Optional recordings-dir and summaries-dir fields override the standard macOS recordings location and managed summaries directory. Transcription and diarization remain type-specific tools on this job; creating its backup snapshot still uses job run.