Vicinae Pass
Vicinae Pass lets you browse, decrypt, and copy secrets that are saved in your GNU pass vault directly from Vicinae on Linux. It mirrors the Raycast experience while embracing the Vicinae component and toast system.
Requirements
- pass configured with your GPG key
gpgavailable in your$PATHoathtool(optional) for generating OTP codes fromotpauth://lines
Commands
| Command | Description |
|---|---|
Pass | Lists every .gpg entry inside your password-store directory, promotes the last used entry, and lets you copy or paste individual fields. |
Preferences
- Pass Store Location – Absolute path to your
~/.password-storedirectory (defaults to~/.password-store). - GPG Passphrase – Optional passphrase that unlocks your key via GPG loopback mode.
- Additional PATH Entries – Colon-separated directories appended to
PATHbefore runninggpgoroathtool. - Prioritize OTP After Password – When enabled, OTP entries jump to the top after you copy a password to speed up two-factor flows.
- Last Used TTL (seconds) – How long the last-used entry is pinned to the top of the list (defaults to 120 seconds).- File Schema - Basic, optional JSON to 'describe' your
passfile layout (defaults to empty, example below).
Usage
- Run the
Passcommand in Vicinae. - Entries are sorted alphabetically; the most recent entry (within the TTL) is pinned to the top.
- Select an entry to decrypt it. The first line becomes the
Passwordoption; additionalKey: Valuelines become individual fields. - Use the actions to copy a field to the clipboard or paste it directly into the focused window. Successful actions update the “last used” cache so follow-up operations stay nearby.
- Lines starting with
otpauth://triggeroathtooland render anOTPoption. Ifoathtoolis missing, the extension shows a toast explaining how to fix it and still lists the remaining fields.
File Schema
This is a simple bit of JSON to describe the layout of your pass files. It takes the form of an array of objects. Each object consists of a "key" (string, the displayed name of the list item) and a "type" (the type of item in the list.) Types can be one of "password", "otp", "field", or "note". An example file schema follows:
[
{"key": "Password","type": "password"},
{"key": "UserName","type": "field"},
{"key": "URL","type": "field"},
{"key": "OTP","type": "otp"}
]
Development
git clone <this-repo>
cd <this-repo>
npm install
npm run dev
Use npm run build to assemble a production bundle that Vicinae can import.
Troubleshooting
- Make sure your password store is initialized (
pass init ...) and contains.gpgfiles. - If GPG prompts for a passphrase, add it to the extension preferences or ensure your agent has the key unlocked.
- Install
oathtoolif you want OTP generation:sudo apt install oathtool(Debian/Ubuntu) orsudo pacman -S oathtool(Arch).