A GNOME application to index, search, stream, download and export files in Restic repositories.
- Ubuntu Desktop 20.04 (with GNOME) is the only environment currently supported
- It may crash often
- It may behave unreliably
- The on-disk data and index format may change before the final release, and data migration isn't guaranteed, forcing you to re-index your repositories eventually
- It may have obvious and important issues that could compromise the safety and security of your data
- Large chunks of the code are still in a PoC state and may lack readability, proper error handling or reporting
- Some functionality is still missing
There's a more comprehensive overview of what's missing for those technically inclined or willing to contribute in the release plan document.
Swamp doesn't write to your Restic repository. It works just fine with read-only repositories.
The GNOME keyring is the place where the repository credentials are stored. Other features like MPRIS (to play media files) and UPower (to prevent the indexing process when on battery) are planed.
Dark/Light themes are also supported.
Swamp is powered by Restic, meaning that it can index and search S3, Rest Server, local, rclone backends, etc. (Limited to S3, local and rest in the current alpha version)
Swamp uses and extends the Bleve query language to make locating/searching for backed up files easy.
With the query language you can do things like:
- Search for files bigger or smaller than a given size
- Find duplicated files
- Find documents, videos, audio files, etc easily
- Find recently backed up files
- Find recently modified files
And much more. See the for some additional examples.
Capable of indexing 1000+ files per second in a regular laptop. Polls for new Restic snapshots regularly to index them automatically.
Tag you backed up files to quickly locate them later.
Supports indexing and searching multiple Restic repositories. The author uses Restic repositories as "append-only, deduplicated and encrypted storage servers" (where files are never pruned/deleted) and shares some of those repositories with family members and friends, so Swamp tries to make it easier to search across them (the main motivation behind creating Swamp).
Swamp can stream your video or audio files or download/export any file and version to the desired location.
Swamp provides quick access to the most important features via keyboard shortcuts.
See keyboard shortcuts documentation.
Swamp includes a command line interface (swp
) to query the repositories after being indexed.
The quick start guide will get you started with swamp. Don't worry, if you already know Restic, this will be a walk in the park.
Needs Go 1.16, currently in beta.
Install the required dependencies and run make
:
sudo apt install build-essential libgtk-3-dev libcairo2-dev libglib2.0-dev libglib2.0-dev-bin upx
make
See architecture.md
- Awesome logos from @blackirin
- Animated gifs from loading.io
- Application icons (Qogir, Tela, We10x, Infinity Lavender, McMuse)
- Restic code is used by swamp via RAPI
- Bluge powers repository indexing and search (via rindex)
- Gotk3 is the graphical toolkit doing the pixel pushing
- Keyring provides access to the GNOME keyring
- A few libraries from the amazing @muesli
- Zerolog for superb structured logging
- Go LevelDB to store out-of-the-index bits used by Swamp
- CLI, my favorite command line parser
- Humanize makes some numbers easily parseable by humans