{"id":13478726,"url":"https://github.com/timvisee/prs","last_synced_at":"2025-04-13T00:47:05.686Z","repository":{"id":40240501,"uuid":"308097248","full_name":"timvisee/prs","owner":"timvisee","description":"🔐 A secure, fast \u0026 convenient password manager CLI using GPG and git to sync.","archived":false,"fork":false,"pushed_at":"2025-04-10T15:07:05.000Z","size":2310,"stargazers_count":227,"open_issues_count":11,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-13T00:46:55.324Z","etag":null,"topics":["cli","git","gpg","hacktoberfest","pass","rust"],"latest_commit_sha":null,"homepage":"https://gitlab.com/timvisee/prs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timvisee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["timvisee"],"custom":["https://timvisee.com/donate"],"patreon":"timvisee","ko_fi":"timvisee"}},"created_at":"2020-10-28T17:49:34.000Z","updated_at":"2025-04-10T15:07:01.000Z","dependencies_parsed_at":"2024-11-09T18:21:29.407Z","dependency_job_id":"bf3aa325-f2d7-4ae8-b7b1-8d2962e41529","html_url":"https://github.com/timvisee/prs","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timvisee%2Fprs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timvisee%2Fprs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timvisee%2Fprs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timvisee%2Fprs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timvisee","download_url":"https://codeload.github.com/timvisee/prs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650433,"owners_count":21139672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","git","gpg","hacktoberfest","pass","rust"],"created_at":"2024-07-31T16:02:01.652Z","updated_at":"2025-04-13T00:47:05.654Z","avatar_url":"https://github.com/timvisee.png","language":"Rust","funding_links":["https://github.com/sponsors/timvisee","https://timvisee.com/donate","https://patreon.com/timvisee","https://ko-fi.com/timvisee"],"categories":["Rust","Interfaces"],"sub_categories":["All other extensions"],"readme":"[![Build status on GitLab CI][gitlab-ci-master-badge]][gitlab-ci-link]\n[![Newest release on crates.io][crate-version-badge]][crate-link]\n[![Project license][crate-license-badge]](LICENSE)\n\n[crate-license-badge]: https://img.shields.io/crates/l/prs-lib.svg\n[crate-link]: https://crates.io/crates/prs-cli\n[crate-version-badge]: https://img.shields.io/crates/v/prs-lib.svg\n[gitlab-ci-link]: https://gitlab.com/timvisee/prs/pipelines\n[gitlab-ci-master-badge]: https://gitlab.com/timvisee/prs/badges/master/pipeline.svg\n\n# prs\n\n\u003e A secure, fast \u0026 convenient password manager CLI using GPG and git to sync.\n\n`prs` is a secure, fast and convenient password manager for the terminal.\nIt features [GPG][gpg] to securely store your secrets and integrates\n[`git`][git] for automatic synchronization between multiple machines. It also\nfeatures a built-in password generator, recipient management, history tracking,\nrollbacks, housekeeping utilities, Tomb support and more.\n\n[![prs usage demo][usage-demo-svg]][usage-demo-asciinema]  \n_No demo visible here? View it on [asciinema][usage-demo-asciinema]._\n\n`prs` is heavily inspired by [`pass`][pass] and uses the same file structure\nwith some additions. `prs` therefore works alongside with `pass` and all other\ncompatible clients, extensions and migration scripts.\n\n- [Features](#features)\n- [Usage](#usage)\n- [Requirements](#requirements)\n- [Install](#install)\n- [Build](#build)\n- [Security](#security)\n- [FAQ](#faq)\n- [Help](#help)\n- [License](#license)\n\n## Features\n- Fully featured fast \u0026 friendly command line tool\n- Temporary copy secrets to clipboard\n- Uses the battle-tested [GPG][gpg] to secure your secrets\n- Automatic synchronization with [`git`][git] including history tracking\n- Supports multiple machines with easy recipient management\n- Easily edit secrets using your default editor\n- Supports smart aliases, property selection\n- Compatible with [`pass`][pass][*](#is-prs-compatible-with-pass)\n- Supports Linux, macOS, Windows, FreeBSD and others, supports X11 and Wayland\n- Supports multiple cryptography backends (more backends \u0026 crypto in the future)\n- Seamless [Tomb][tomb] support to prevent metadata leakage[*](#what-is-tomb)\n- Support for TOTP tokens for two-factor authentication\n- Scriptable with `-y`, `-f`, `-I` flags\n- Accurate \u0026 useful error reporting\n\n`prs` includes some awesome tweaks and optimizations:\n\n- Greatly improved synchronisation speed through `git` with connection reuse[*](./docs/connection-reuse.md)\n- Super fast interactive secret/recipient selection through [`skim`][skim]\n- Prevents messing with your clipboard, no unexpected overwrites or clipboard loss\n- When using Tomb, it is automatically opened, closed and resized for you\n- Commands have short and conventional aliases for faster and more convenient usage\n- Uses security best practices (secrets: zeroed, `mlock`, `madvice`, no format, [etc](#security))\n\n## Usage\n```bash\n# Show useful commands (based on current password store state)\nprs\n\n# Easily add, modify and remove secrets with your default editor:\nprs add site/gitlab.com\nprs edit site/gitlab.com\nprs duplicate my/secret extra/secret\nprs alias my/secret extra/alias\nprs move my/secret extra/secret\nprs remove site/gitlab.com\n\n# Or generate a new secure password\nprs generate site/gitlab.com\n\n# Temporary show or copy secrets to clipboard:\nprs show\nprs show site/gitlab.com\nprs copy\nprs copy site/gitlab.com\n\n# Manually synchronize password store with remote repository or do some housekeeping\nprs sync\nprs housekeeping\nprs housekeeping run\nprs housekeeping recrypt\n\n# Manage recipients when using multiple machines\nprs recipients add\nprs recipients list\nprs recipients remove\nprs recipients generate\nprs recipients export\n\n# Commands support shorter/conventional commands and aliases\nprs a secret  # add\nprs c         # copy\nprs s         # show\nprs rm        # remove\nprs yeet      # remove\n\n# List all commands and help\nprs help\n```\n\n## Requirements\n- Linux, macOS, FreeBSD, Windows (other BSDs might work)\n- A terminal :sunglasses:\n- _And:_\n\n#### Recommended\n- Run: _`git`, `gnupg`, `gpgme`_\n  - Ubuntu, Debian and derivatives: `apt install git gpg libgpgme11 tomb`\n  - CentOS/Red Hat/openSUSE/Fedora: `yum install git gnupg gpgme`\n  - Arch: `pacman -S git gnupg gpgme tomb`\n  - Alpine: `apk add git gnupg gpgme`\n  - macOS: `brew install gnupg gpgme`\n  - Windows: `scoop install git gpg fzf`\n- Build: _`git`, `gnupg`, `gpgme` dev packages and dev utilities_\n  - Ubuntu, Debian and derivatives: `apt install git gpg build-essential pkg-config python3 xorg-dev libx11-xcb-dev libdbus-1-dev libgpgme-dev tomb`\n  - CentOS/Red Hat/openSUSE/Fedora: `yum install git gnupg gpgme-devel pkgconfig python3 xorg-x11-devel libxcb-devel`\n  - Arch: `pacman -S git gnupg gpgme pkgconf python3 xorg-server libxcb tomb`\n  - Alpine: `apk add git gnupg gpgme-dev pkgconfig`\n  - macOS: `brew install gnupg gpgme`\n  - Windows: `scoop install git gpg fzf`\n\n#### Specific\nSpecific features or crates require specific dependencies as shown below.\n\nThe listed dependencies might be incorrect or incomplete. If you believe there\nto be an error, please feel free to contribute.\n\n\u003cdetails\u003e\n  \u003csummary\u003e[Required] Minimal requirements\u003c/summary\u003e\n\n  - Run \u0026 build: _`gpg` and `git`_\n    - Ubuntu, Debian and derivatives: `apt install git gpg`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install git gnupg`\n    - Arch: `pacman -S git gnupg`\n    - Alpine: `apk add git gnupg`\n    - macOS: `brew install gpg`\n    - Windows: `scoop install git gpg fzf`\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e[Recommended] Feature: GPGME backend\u003c/summary\u003e\n\n  _`--feature=backend-gpgme`_\n\n  - Run: _`gpgme` \u0026 build tools_\n    - Ubuntu, Debian and derivatives: `apt install libgpgme11`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install gpgme`\n    - Arch: `pacman -S gpgme`\n    - Alpine: `apk add gpgme`\n    - macOS: `brew install gpgme`\n    - Windows: _not supported_\n  - Build: _`gpgme` dev package\n    - Ubuntu, Debian and derivatives: `apt install build-essential pkg-config libgpgme-dev`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install pkgconfig gpgme-devel`\n    - Arch: `pacman -S pkgconf gpgme`\n    - Alpine: `apk add pkgconfig gpgme-dev`\n    - macOS: `brew install gpgme`\n    - Windows: _not supported_\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e[Recommended] Feature: Clipboard\u003c/summary\u003e\n\n  _`--feature=clipboard`_\n\n  - Run:\n    - Ubuntu, Debian and derivatives: `apt install xorg libx11-xcb-dev wl-clipboard`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install pkgconfig xorg libxcb wl-clipboard`\n    - Arch: `pacman -S pkgconf xorg-server python3 libxcb wl-clipboard`\n    - Alpine: _?_\n    - macOS: _none_\n    - Windows: _none_\n  - Build:\n    - Ubuntu, Debian and derivatives: `apt install build-essential pkg-config python3 xorg-dev libx11-xcb-dev`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install pkgconfig python3 xorg-x11-devel libxcb-devel`\n    - Arch: `pacman -S pkgconf xorg-server python3 libxcb`\n    - Alpine: _?_\n    - macOS: _none_\n    - Windows: _none_\n\n  Note: `xorg`, `libx11-xcb` are only required at runtime when using X11.\n  `wl-clipboard` are only required at runtime when using Wayland.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e[Recommended] Feature: Notifications\u003c/summary\u003e\n\n  _`--feature=notify`_\n\n  - Run:\n    - Ubuntu, Debian and derivatives: _[something][linux-notifications] supporting notifications with libnotify_\n    - CentOS/Red Hat/openSUSE/Fedora: _[something][linux-notifications] supporting notifications with libnotify_\n    - Arch: _[something][linux-notifications] supporting notifications with libnotify_\n    - Alpine: _[something][linux-notifications] supporting notifications with libnotify_\n    - macOS: _none_\n    - Windows: _none_\n  - Build: _`gpgme` dev package_\n    - Ubuntu, Debian and derivatives: `apt install libdbus-1-dev`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install dbus-libs`\n    - Arch: `pacman -S dbus`\n    - Alpine: `apk add dbus`\n    - macOS: _none_\n    - Windows: _none_\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eFeature: Tomb\u003c/summary\u003e\n\n  _`--feature=tomb`_\n\n  - Run: `tomb`\n    - Ubuntu, Debian and derivatives: `apt install tomb`\n    - CentOS/Red Hat/openSUSE/Fedora: [installation][tomb-install]\n    - Arch: `pacman -S tomb`\n    - Alpine: [installation][tomb-install]\n    - macOS: _not supported_\n    - Windows: _not supported_\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eClient: GTK3 client\u003c/summary\u003e\n\n  _crate: `prs-gtk3` @ [`./gtk3`](./gtk3)_\n\n  - Run: _`gtk3`_\n    - Ubuntu, Debian and derivatives: `apt install libgtk-3-0 libgl1-mesa0`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install gtk3`\n    - Arch: `pacman -S gtk3`\n    - Alpine: `apk add gtk+3.0 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main`\n    - macOS: `brew install gtk+3`\n    - Windows: _not supported_\n  - Build: _`gtk3` dev packages_\n    - Ubuntu, Debian and derivatives: `apt install libgtk-3-dev libgl1-mesa-dev`\n    - CentOS/Red Hat/openSUSE/Fedora: `yum install gtk3-devel`\n    - Arch: `pacman -S gtk3`\n    - Alpine: `apk add gtk+3.0-dev --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main`\n    - macOS: `brew install gtk+3`\n    - Windows: _not supported_\n\u003c/details\u003e\n\n## Install\nBecause `prs` is still in early stages, only limited installation options are\navailable right now. Feel free to contribute.\n\nMake sure you meet and install the 'Run' [requirements](#requirements).\n\nSee the operating system/distribution specific instructions below:\n- [Linux](#linux-all-distributions)\n- [macOS](#macos)\n- [Windows](#windows)\n- [Other](#other)\n\n### Linux (all distributions)\nLimited installation options are currently available. See the list below.\nAlternatively you may install it manually using the\n[prebuilt binaries](#linux-prebuilt-binaries).\n\nOnly 64-bit (`x86_64`) packages and binaries are provided.\nFor other architectures and configurations you may [compile from source](#build).\n\nMore packages options will be coming soon.\n\n#### Linux: Arch AUR packages\n\n[» `prs`](https://aur.archlinux.org/packages/prs/) (compiles from source, latest release)  \n[» `prs-git`](https://aur.archlinux.org/packages/prs-git/) (compiles from source, latest `master` commit)\n\n```bash\nyay -S prs\n# or\naurto add prs\nsudo pacman -S prs\n# or using any other AUR helper\n\nprs --help\n```\n\n#### Linux: Prebuilt binaries\nCheck out the [latest release][github-latest-release] assets for Linux binaries.  \nUse the `prs-v*-linux-x64-static` binary, to minimize the chance for issues.\nIf it isn't available yet, you may use an artifact from a\n[previous version][github-releases] instead, until it is available.\n\nMake sure you meet and install the [requirements](#requirements) before you\ncontinue.\n\nYou must make the binary executable, and may want to move it into\n`/usr/local/bin` to make it easily executable:\n\n```bash\n# Rename binary to prs\nmv ./prs-* ./prs\n\n# Mark binary as executable\nchmod a+x ./prs\n\n# Move binary into path, to make it easily usable\nsudo mv ./prs /usr/local/bin/\n\nprs\n```\n\n### macOS\n`prs` can be installed using [homebrew].  \nAlternatively you may [compile from source](#build).\n\nMake sure you've [`homebrew`][homebrew-install] installed, then run:\n\n```bash\nbrew install prs\nprs\n```\n\n_Note: this package isn't automatically updated on release, feel free to\ncontribute\n[here](https://github.com/Homebrew/homebrew-core/blob/master/Formula/prs.rb)._\n\n### Windows\nUsing the [`scoop` package](#windows-scoop-package) is recommended.  \nAlternatively you may install it manually using the\n[prebuilt binaries](#windows-prebuilt-binaries).\n\nIf you're using the [Windows Subsystem for Linux][wsl], it's highly recommended\nto install the [prebuilt Linux binary](#prebuilt-binaries-for-linux) instead.\n\nOnly 64-bit (`x86_64`) binaries are provided.\nFor other architectures and configurations you may [compile from source](#build).\n\n#### Windows: scoop package\nMake sure you've [`scoop`][scoop-install] installed, then run:\n\n```bash\nscoop install prs\nprs\n```\n\n#### Windows: Prebuilt binaries\nCheck out the [latest release][github-latest-release] assets for Windows binaries.\nUse the `prs-v*-windows` binary.\nIf it isn't available yet, you may use an artifact from a\n[previous version][github-releases] instead, until it is available.\n\nYou can use `prs` from the command line in the same directory:\n```cmd\n.\\prs.exe\n```\n\nTo make it globally invocable as `prs`, you must make the binary available in\nyour systems `PATH`.\n\n#### Other\n\nFind the latest binaries on the latest release page:\n\n- [GitHub][github-release-latest]\n- [GitLab][gitlab-releases]\n- [GitLab package registry][gitlab-packages] for `prs`\n\n_Note: for Linux the GNU (not musl) binary is recommended if it works, because it\nhas better clipboard/notification support._\n\n```bash\n# download binary from any source above\n\n# make executable\nchmod a+x ./prs\n\n# optional: make globally executable\nmv ./prs /usr/local/bin/prs\n\n./prs --help\n```\n\n## Build\n\nTo build and install `prs` yourself, you need the following:\n\n- Rust 1.85 or newer (MSRV)\n- The 'Build' [requirements](#requirements).\n\n_Not all features are supported on macOS or Windows. The default configuration\nshould work. When changing compile time features, make sure to check for\ncompatibility. See [compiler features](#compile-features--use-flags)._\n\n### Compile and install\nTo compile and install `prs` with the default features follow these steps:\n\n- Compile and install it directly from cargo:\n\n  ```bash\n  # Compile and install from cargo\n  cargo install prs-cli -f\n\n  # Start using prs\n  prs --help\n  ```\n\n- Or clone the repository and install it with `cargo`:\n\n  ```bash\n  # Clone the project\n  git clone https://github.com/timvisee/prs.git\n  cd prs\n\n  # Compile and install\n  cargo install --path cli -f\n\n  # Start using prs\n  prs --help\n\n  # or run it directly from cargo\n  cargo run --release --package prs-cli -- --help\n\n  # or invoke release binary directly\n  ./target/release/prs --help\n  ```\n\n### Compile features / use flags\n\nDifferent use flags are available for `prs` to toggle whether to include various\nfeatures and cryptography backends. The following features are available, some\nof which are enabled by default:\n\n| Feature             | In                    | Enabled | Description                                                |\n| :-----------------: | :-------------------: | :-----: | :--------------------------------------------------------- |\n| `alias`             | `prc-cli`             | Default | Support for secret aliases (partially supported on Windows)|\n| `clipboard`         | `prs-cli`             | Default | Clipboard support: copy secret to clipboard                |\n| `notify`            | `prs-cli`, `prs-gtk3` | Default | Notification support: notify on clipboard clear            |\n| `tomb`              | _all_                 | Default | Tomb support for password store (only supported on Linux)  |\n| `totp`              |`prs-cli`              | Default | TOTP token support for 2FA                                 |\n| `backend-gpgme`     | _all_                 |         | GPG crypto backend using GPGME (not supported on Windows)  |\n| `backend-gnupg-bin` | _all_                 | Default | GPG crypto backend using GnuPG binary                      |\n| `select-skim`       | `prc-cli`             | Default | Interactive selection with skim (ignored on Windows)       |\n| `select-skim-bin`   | `prs-cli`             |         | Interactive selection through external `skim` binary       |\n| `select-fzf-bin`    | `prs-cli`             | Default | Interactive selection through external `fzf` binary        |\n\nTo enable features during building or installation, specify them with\n`--features \u003cfeatures...\u003e` when using `cargo`.\nYou may want to disable default features first using\n`--no-default-features`.\nHere are some examples:\n\n```bash\n# Default set of features with backend-gnupg-bin, install or build, one of\ncargo install --path cli --features backend-gnupg-bin\ncargo build --path cli --release --features backend-gnupg-bin\n\n# No default features, except required, one of\ncargo install --path cli --no-default-features --features backend-gpgme\ncargo install --path cli --no-default-features --features backend-gnupg-bin\n\n# With alias, clipboard and notification support, one of\ncargo install --path cli --no-default-features --features backend-gpgme,alias,clipboard,notify\ncargo install --path cli --no-default-features --features backend-gnupg-bin,alias,clipboard,notify\n```\n\n## Security\nSecurity is backed by [`gpg`][gpg] which is used all over the world and\nhas been battle-tested for more than 20 years.\n\nIn summary, `prs` is secure to keep your deepest secrets when assuming the following:\n\n- You keep the password store directory (`~/.password-store`) safe\n- When using sync with `git`: you keep your remote repository safe\n- You use secure GPG keys\n- Your machines are secure\n\nThe content of secrets is encrypted and secured. Secrets are stored as encrypted\nGPG files. Some metadata is visible without decryption however.\nThe name of a secret (file name), modification time (file modification time) and\nencrypted size (file size) are visible when you have access to the password\nstore directory. To protect against this metadata leakage you may use a\n[Tomb][tomb-faq].\n\nSecurity best practices are used in `prs` to prevent accidentally leaking\nany secret data. Sensitive data such as plaintext, ciphertext and others are\nreferred to as 'secret' here.\n\nSecrets are/use:\n\n- Zeroed on drop\n- Locked to physical memory, cannot leak to swap/disk ([`mlock`][security-mlock])\n- Locked into memory, cannot be dumped/not included in core ([`madvice`][security-madvice])\n- Not written to disk to edit (if possible)\n- String formatting is blocked\n- Constant time comparison to prevent time based attacks\n- Minimally cloned\n\n[security-mlock]: https://man7.org/linux/man-pages/man2/mlock.2.html\n[security-madvice]: https://man7.org/linux/man-pages/man2/madvise.2.html\n\nThe protection against leaking secrets has its boundaries, notably:\n\n- `prs show` prints secret data to stdout\n- `prs edit` may store secrets in a secure temporary file on disk if secure\n  locations such as (`/dev/shm`) are not available, it then opens it in your\n  default editor, and removes it afterwards\n- `prs copy` copies secret data to your clipboard, and clears it after 20\n  seconds\n\n[![Security](./res/xkcd_538.png)][xkcd538]  \n_Reference: [XKCD 538][xkcd538]_\n\nNote: `prs` does not provide any warranty in any way, shape or form for damage\ndue to leaked secrets or other issues.\n\n## FAQ\n#### Is `prs` secure? How secure is `prs`?\nPlease read the [Security](#security) section.\n\n#### How do I use sync with git?\nIf you already have a remote password store repository that is\n[compatible](#is-prs-compatible-with-pass) with `prs`, clone it using:\n\n```bash\n# Clone existing remote password store, automatically enables sync\nprs clone MY_GIT_URL\n\n# List secrets\nprs list\n```\n\nIf you do not have a remote password store repository yet, create one (an empty\nprivate repository on GitHub or GitLab for example), and run the following:\n\n```bash\n# Initialize new password store (if you haven't done so yet)\nprs init\n\n# Initialize sync functionality (if you haven't done so yet)\nprs sync init\n\n# Set your remote repository URL and sync to push your password store\nprs sync remote MY_GIT_URL\nprs sync\n```\n\nWhen sync is enabled on your password store, all commands that modify your\nsecrets will automatically keep your remote store in sync.\n\nTo manually trigger a sync because you edited a secret on a different machine,\nrun:\n\n```bash\nprs sync\n```\n\n#### How do I use `prs` on multiple machines and sync between them?\n_Note: adding and using your existing password store on a new/additional machine\nrequires you to have access to a machine that already uses the store during setup._\n\nFirst, you must have a password store on one machine. Create one (with `prs init`)\nif you don't have any yet.\nYou must set up sync with a remote git repository for this passwords store, see\nthe [How do I use sync with git](#how-do-i-enable-sync-with-git) section.\n\nTo use your existing password store on a new machine, install `prs` and clone\nyour remote password store:\n\n```bash\n# On new machine: clone existing password store from git remote\nprs clone MY_GIT_URL\n```\n\nThen add a recipient to the password store for your new machine. I highly\nrecommend to use a new recipient (GPG key pair) for each machine (so you won't\nhave to share secret GPG keys). Add an existing secret GPG key as recipient, or\ngenerate a new GPG key pair, using:\n\n```bash\n# On new machine: add existing recipient or generate new one\nprs recipients add --secret\n# or\nprs recipients generate\n```\n\nYour new machine can't read any password store secrets yet, because they are not\nencrypted for its recipient yet. Go back to an existing machine you already use\nthe store on, and re-encrypt all secrets to also encrypt them for the new\nrecipient:\n\n```bash\n# On existing machine: re-encrypt all secrets\nprs housekeeping recrypt --all\n```\n\nThis may take a while. Once done, sync on your new machine to pull in the\nupdated secrets:\n\n```bash\n# On new machine: pull in all re-encrypted secrets\nprs sync\n\n# You're done!\nprs list\n```\n\n#### How do I use `prs` on mobile?\n`prs` itself does not support mobile, but there are compatible clients you can\nuse to use your password store on mobile.\n\nSee [Compatible Clients][pass-compatible-clients] on `pass`s website.\n\n#### Can I recover my secrets if I lost my key?\nNo, if you lose all keys, there is no way to recover your secrets.\n\nYou might lose your key (recipient, GPG secret key) if your machine crashes or\nif you reinstall its operating system.\n\nIf you are using the same password store on multiple machines with git sync, you\ncan still read the secrets on your other machines. To re-add the machine you\nlost your key on, remove the password store from it and see\n[this](#how-do-i-use-prs-on-multiple-machines-and-sync-between-them) section.\n\n#### What is Tomb?\n[Tomb][tomb] is a file encryption system. It can be used with `prs` to protect\nagainst metadata leakage of your password store.\n\nWhen using Tomb with `prs`, your password store is stored inside an encrypted\nfile. `prs` automatically opens and closes your password store Tomb for you as\nneeded. This makes it significantly harder for malicious programs to list your\npassword store contents.\n\nThis feature is inspired by\n[`pass-tomb`](https://github.com/roddhjav/pass-tomb), which is a `pass`\nextension for Tomb support. In `prs` this functionality is built-in.\n\n_Note: Tomb is only supported on Linux._\n\n#### How to use Tomb?\n`prs` has built-in support for [Tomb][tomb] on Linux systems. Please make sure\n`prs` is compiled with the `tomb` [feature](#compile-features--use-flags), and\nthat Tomb is installed.\n\nTo initialize a Tomb for your current password store, simply invoke:\n\n```bash\n# Initialize tomb, this may take some time\nprs tomb init\n\n# Read tomb status\nprs tomb status\n```\n\nTo initialize a new password store in a Tomb, first initialize the password\nstore then initialize the Tomb:\n\n```bash\n# Initialize new password store\nprs init\n\n# ...\n\n# Initialize tomb, this may take some time\nprs tomb init\n```\n\nIf you already have a Tomb created with `pass-tomb`, no action is required.\n`prs` has seamless support for it, and it should automatically manage it for\nyou. Invoke `prs tomb status` to confirm it is detected.\n\n#### How to use Tomb on multiple machines?\nA Tomb is local on your machine and is not synced. To use a Tomb on\nmultiple machines you must initialize it on each of them.\n\nSimply run `prs tomb init` on machines you don't use a Tomb on yet, and after\ncloning your password store on a new machine.\n\n#### Is `prs` compatible with `pass`?\nYes\n\nWith the exception of some outstanding incompatibilities:\n\n- \u003chttps://gitlab.com/timvisee/prs/-/issues/57\u003e - `.gpg-id` files in subfolders are not yet supported\n\n`prs` uses the same file structure as [`pass`][pass]. Other `pass` clients\nshould be able to view and edit your secrets.\n\n`prs` does add additional files and settings, some `prs` features may not work\nwith other `pass` clients.\n\nWhile the backing file structure is compatible, the command-line interface is\nnot and differs from `pass`. This is to remove ambiguity and to improve overall\nusability.\n\nSee a list of compatible `pass` clients [here][pass-compatible-clients].\n\n## Help\n```\n$ prs help\n\nprs 0.5.2\nTim Visee \u003c3a4fb3964f@sinenomine.email\u003e\nSecure, fast \u0026 convenient password manager CLI with GPG \u0026 git sync\n\nUsage: prs [OPTIONS] [COMMAND]\n\nCommands:\n  show          Display a secret\n  copy          Copy secret to clipboard\n  generate      Generate a secure secret\n  add           Add a secret\n  edit          Edit a secret\n  duplicate     Duplicate a secret\n  alias         Alias/symlink a secret\n  move          Move a secret\n  remove        Remove a secret\n  list          List all secrets\n  grep          Grep all secrets\n  init          Initialize new password store\n  clone         Clone existing password store\n  sync          Sync password store\n  slam          Aggressively lock password store \u0026 keys preventing access (emergency)\n  totp          Manage TOTP tokens\n  recipients    Manage store recipients\n  git           Invoke git command in password store\n  tomb          Manage password store Tomb\n  housekeeping  Housekeeping utilities\n  help          Print this message or the help of the given subcommand(s)\n\nOptions:\n  -f, --force         Force the action, ignore warnings\n  -I, --no-interact   Not interactive, do not prompt\n  -y, --yes           Assume yes for prompts\n  -q, --quiet         Produce output suitable for logging and automation\n  -v, --verbose...    Enable verbose information and logging\n  -s, --store \u003cPATH\u003e  Password store to use [env: PASSWORD_STORE_DIR=]\n      --gpg-tty       Instruct GPG to ask passphrase in TTY rather than pinentry\n  -h, --help          Print help\n  -V, --version       Print version\n```\n\n## License\nThis project is released under the GNU GPL-3.0 license.\nCheck out the [LICENSE](LICENSE) file for more information.\n\nThe library portion of this project is licensed under the GNU LGPL-3.0 license.\nCheck out the [lib/LICENSE](lib/LICENSE) file for more information.\n\n[git]: https://git-scm.com/\n[github-latest-release]: https://github.com/timvisee/prs/releases/latest\n[github-release-latest]: https://github.com/timvisee/prs/releases/latest\n[github-releases]: https://github.com/timvisee/prs/releases\n[gitlab-packages]: https://gitlab.com/timvisee/prs/-/packages\n[gitlab-releases]: https://gitlab.com/timvisee/prs/-/releases\n[gpg]: https://gnupg.org/\n[homebrew]: https://brew.sh/\n[homebrew-install]: https://brew.sh/#install\n[linux-notifications]: https://wiki.archlinux.org/index.php/Desktop_notifications\n[pass-compatible-clients]: https://www.passwordstore.org#other\n[pass]: https://www.passwordstore.org/\n[scoop-install]: https://scoop.sh/#installs-in-seconds\n[skim]: https://github.com/lotabout/skim\n[tomb-faq]: #what-is-tomb\n[tomb-install]: https://github.com/dyne/Tomb/blob/master/INSTALL.md\n[tomb]: https://www.dyne.org/software/tomb/\n[usage-demo-asciinema]: https://asciinema.org/a/368611\n[usage-demo-svg]: ./res/demo.svg\n[wsl]: https://docs.microsoft.com/en-us/windows/wsl/install-win10\n[xkcd538]: https://xkcd.com/538/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimvisee%2Fprs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimvisee%2Fprs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimvisee%2Fprs/lists"}