Open-source project
emuell/restic-browser avatar
emuell/restic-browser

restic-browser: a Tauri GUI for browsing restic repositories

A GUI to browse and restore restic backup repositories.

1,322 stars42 forksTypeScriptMIT

At a glance

What is it?
restic-browser is a cross-platform desktop application for looking inside restic backup repositories, restoring files and opening them, built with Tauri and a Lit and Vaadin frontend. It is deliberately not a backup manager, and it works by driving the restic binary rather than reimplementing the format.
Who is it for?
Adopt restic-browser if you back up with restic and the command line is the only thing standing between you and the file you lost, and you want a graphical way to browse snapshots, restore a folder or open a file without remembering the flags. Do not adopt it as a backup management console, because the project states it only browses existing repositories and does not create, schedule or prune backups.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 45 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A browser for repositories, not a backup manager

restic-browser is a simple, cross-platform GUI for browsing and restoring restic backup repositories, and the project is careful about what that means. The README states plainly that this is not a full blown restic backup GUI and that it only allows you to browse existing repositories.

The four capabilities that do exist are worth naming, because they are exactly the ones you need when something has gone wrong.

It displays the contents of local and remote restic repositories, which means snapshots and the files inside them. It dumps a selected file or folder as a zip archive to a location you choose, which is the way to get one thing out without restoring the whole tree. It restores a selected file or folder to a location you choose. And it opens a selected file by moving it to a temporary location and then handing it to your operating system's default programs, which is the small feature that turns a restore tool into something you can use for a quick look at a document or an image.

That last one is worth pausing on, because it changes the shape of the task. Restoring to a location and then opening it yourself is two steps. Doing it in one is the difference between a tool you use under pressure and one you do not.

The application is built with Tauri, and it is based on the Restoric proof of concept by leaanthony. Older versions of the restic browser were built with Wails2, and the latest Wails based release is v0.2.6, so the Tauri rewrite is a relatively recent change of foundation. Prebuilt binaries for Windows, macOS and Linux are published on the GitHub releases page, and on Windows the application can also be installed and updated through winget, which is the shortest path on Windows:

bash
winget install restic-browser

It drives the restic binary rather than reimplementing it

The mechanism behind the application is the part that decides how much you can trust it.

restic-browser is a GUI in front of the restic command line tool. The system requirements say to install restic and make sure it is included in your PATH, and the application arguments include an option to point at an absolute path to the restic executable if you prefer not to rely on PATH, with the default described as finding it in PATH. There is also an option for an absolute path to the rclone executable, used for rclone locations, defaulting to rclone on the path.

This design has a clear consequence. The tool is not parsing the restic repository format itself, and it does not have its own implementation of the encryption, the chunking or the deduplication. It calls the same binary you would call by hand, which means the repository compatibility and the security properties are restic's, and any behaviour you do not like is a restic behaviour.

The other consequence is that restic must be installed on every machine where you use the GUI, including a colleague's laptop that you hand a restore to. There is no bundled copy.

The macOS note is the one that shows the friction. The documentation says that on macOS, where setting the PATH for desktop applications is a really hard thing to do, the restic executable will also be found if it is in one of /usr/local/bin, /opt/local/bin, /opt/homebrew/bin or ~/bin. That is a list of fallback directories added because a double-clicked application does not inherit your shell environment.

The same reasoning explains the --insecure-tls option, which skips TLS certificate verification when connecting to the repository. The flag exists because some self-hosted storage setups have certificate problems, and the help text labels it insecure, which is the right warning to attach to it.

Credentials come from files, commands or the environment

The argument list is a good model of how a backup tool should handle secrets, and it is worth reading as a security decision rather than as a list of flags.

The repository location can be given with -r or --repo, with the default taken from the RESTIC_REPOSITORY environment variable, or with --repository-file, which reads the location from a file and defaults to RESTIC_REPOSITORY_FILE. The password has three options and the help text orders them by preference. --password-file reads the password from a file and defaults to RESTIC_PASSWORD_FILE. --password-command runs a shell command to obtain the password and defaults to RESTIC_PASSWORD_COMMAND. --password passes the password directly and is labelled NOT RECOMMENDED, with a note to use the password file or command instead, and it defaults to RESTIC_PASSWORD.

The reasoning is standard and correct. A password on the command line is visible in the process list to every user on the machine and often ends up in shell history. A password file can have restrictive permissions, and a password command can fetch it from a secret manager at run time. The environment variable defaults are a convenience that inherits the same properties.

For a GUI that people will use to open a repository, that ordering matters, because the option people reach for first is the one that leaks.

The other options are the standard ones. -h and --help print the usage information, -V and --version print the version, and the usage line is Restic-Browser [OPTIONS]. The application is invoked with no repository argument as well, since the interface has a Control or CMD + O shortcut to open a new repository, so the repository can be chosen inside the window.

A keyboard-first interface

The interface is navigatable by keyboard, and the shortcut list is short enough to learn in a minute, which is the right design for a tool you use when you are already stressed.

Focus moves between areas with Tab and Shift-Tab. The only global shortcut is Control or CMD + O to open a new repository.

In the snapshot list, the arrow keys along with Page Up, Page Down, Home and End change the selected snapshot. The file list has the same set of keys for changing the selected file, and then three action keys. The o key, Enter or Space opens the selected file or folder. The d key dumps the selected file or folder as a zip file. The r key restores the selected file or folder.

The mnemonic is obvious once you see it, open, dump, restore, and the single letter choices mean an experienced user can drive a restore without touching the mouse. The reason this matters more here than in most applications is that the workflow is a two-pane one: pick a snapshot on the left, then pick a file on the right, then act. Tab between panes, arrows to move, r to restore.

A screenshot at the root of the repository shows the layout, and the feature list and keyboard section are the only user documentation in the project.

A Lit and Vaadin frontend on a Tauri backend

The stack is a modern one and the package manifest is the clearest description of it.

The application shell is Tauri, with @tauri-apps/api at version 2.8, plus the dialog and filesystem plugins at 2.4. The Rust side lives in src-tauri/ and the frontend in src/, with index.html at the root and a Vite build driven by vite.config.ts. The build script runs tsc and then vite build, so type errors fail the frontend build, and the dev script is vite on its own with the Tauri commands layered on top by the tauri script.

The UI is web components rather than a framework. The dependencies include lit at 2.8, mobx at 6.10 and @adobe/lit-mobx at 2.2, which is the adapter that connects MobX state to Lit's reactive rendering, and a set of @vaadin components at 23.3 for the interface: button, dialog, grid, horizontal-layout, icons, notification, password-field, select, split-layout, text-field and vertical-layout. The grid and split-layout components are the ones doing the heavy lifting for a two-pane snapshot and file browser, and pretty-bytes is there to render file sizes.

The vaadin block in the manifest disables usage statistics, which is a small touch worth noting for a tool that handles backup metadata.

The repository also holds biome.jsonc for formatting and linting, tsconfig.json and tsconfig.node.json, a .vscode/ directory, and an index.html alongside package.json.md5, which suggests the application checks the manifest hash at start-up to detect a changed frontend.

Platform requirements, the Tauri rewrite, and what to build

The system requirements are where the Tauri decision shows up, because Tauri uses the operating system's own web view rather than bundling a browser.

On Windows you need Windows 10 or later with the WebView2 Runtime. On macOS you need macOS 10.13 or later. On Linux you need a system with GLIBC_2.35 or later, for example Ubuntu 22.04 or later, plus WebKit2, which on Ubuntu is installed with apt install libwebkit2gtk-4.1. The documentation also suggests trying the Linux appimage from the prebuilt releases in case that library is not available, which is a sensible fallback for a distribution with an older stack.

The documentation is honest that the older Wails2 line stopped at v0.2.6.

For development, the dependencies are a C and C++ toolchain and Rust 1.78 or later following the Tauri prerequisites, plus npm with Node 18 LTS or later, and restic on the PATH. The note that installing the Tauri CLI via cargo is not necessary is useful, because the npm script is enough.

The three workflow commands cover everything. npm run tauri dev starts live development with automatic hot reloading, npm run tauri build produces a redistributable production package, and for debugging the Rust code the repository includes VS Code startup tasks, so pressing F5 in VS Code builds the application in debug mode and starts it.

The licence is MIT. The repository is not archived, the last push was on 2026-09-08, and the release history shows v0.3.1 in May 2024, v0.3.2 at the end of 2024 and v0.3.3 on 2025-10-14.

Editorial conclusion

Adopt restic-browser if you back up with restic and the command line is the only thing standing between you and the file you lost, and you want a graphical way to browse snapshots, restore a folder or open a file without remembering the flags. Do not adopt it as a backup management console, because the project states it only browses existing repositories and does not create, schedule or prune backups. Before you start, make sure the restic executable is on your PATH, because the application shells out to it, keep the repository password in a file or a command rather than on the command line, and read the platform notes, since Linux needs WebKit2 and a GLIBC_2.35 system and Windows needs the WebView2 Runtime.

Frequently asked questions

What can restic-browser actually do?

It displays snapshots and files from local and remote restic repositories, dumps a selected file or folder as a zip archive, restores a selected file or folder to a chosen location, and opens a selected file by moving it to a temporary location and handing it to your default program. The project states it is not a full blown restic backup GUI and only browses existing repositories.

Does restic-browser need restic installed?

Yes. The system requirements say to install restic and make sure it is in your PATH, because the application drives the restic executable rather than implementing the repository format. You can point it at an absolute path with the --restic option, and rclone locations use the --rclone option.

How should I pass the repository password to restic-browser?

Prefer --password-file or --password-command, which default to RESTIC_PASSWORD_FILE and RESTIC_PASSWORD_COMMAND. The --password option exists but the help text marks it NOT RECOMMENDED, because a password on the command line is visible in the process list.

What are the system requirements for restic-browser on Linux?

A system with GLIBC_2.35 or later, for example Ubuntu 22.04 or later, and WebKit2, installed on Ubuntu with apt install libwebkit2gtk-4.1. The documentation suggests trying the Linux appimage from the prebuilt releases if that library is missing.

How do I develop restic-browser locally?

You need a C and C++ toolchain, Rust 1.78 or later, Node 18 LTS or later and restic on the PATH. Run npm run tauri dev for live development with hot reloading, npm run tauri build for a production package, and press F5 in VS Code to debug the Rust backend using the included startup tasks.

Official sources

  1. emuell/restic-browser on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/emuell-restic-browser.svg)](https://hysenlabs.com/projects/emuell-restic-browser)

Was this useful?