All-in-One Security. Offensive Security at the Core.
The all-in-one security platform combining offensive security, automation, and integrations to uncover what others miss.
Keyorra is a free password manager for your Mac: an encrypted vault that never leaves it, and a browser extension that fills logins, cards and one-time codes.
SecurityRust · TypeScriptGitHub @skensell201OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A free, local-first password manager for macOS — Rust + Tauri, with Chrome, Firefox and Safari extensions
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Keyorra is a free password manager for macOS. Your vault is an encrypted SQLite file on your
Mac; there is no account, no cloud and no telemetry. It imports your 1Password export, fills
logins, cards and addresses in Chrome, Firefox and Safari, generates one-time codes, and
unlocks with Touch ID. The core is written in Rust, the app is built with Tauri.Read the full README ↗Keyorra is a free password manager for macOS. Your vault is an encrypted SQLite file on your Mac; there is no account, no cloud and no telemetry. It imports your 1Password export, fills logins, cards and addresses in Chrome, Firefox and Safari, generates one-time codes, and unlocks with Touch ID. The core is written in Rust, the app is built with Tauri.
Website: keyorra.com
.1pux) and from CSV.Download the latest build from Releases:
| File | What it is |
|---|---|
Keyorra.dmg (or Keyorra.zip) | The app. Drag Keyorra to Applications. Apple Silicon. |
Keyorra-for-Safari.zip | Carries the extension into Safari. Unzip and move to Applications. |
keyorra-chromium-<version>.zip | Extension for Chrome and other Chromium browsers. |
keyorra-firefox-<version>.zip | Extension for Firefox. |
First launch. The builds are signed with a personal Apple Development certificate and are not notarized, so macOS blocks the first launch. Right-click the app → Open → Open, or try to open it once and then go to System Settings → Privacy & Security → Open Anyway. Do the same for "Keyorra for Safari". Touch ID records are tied to this signature: a build signed by someone else (for example your own build from source) cannot read them, and you turn Touch ID on again with your master password.
keyorra-chromium-<version>.zip into a folder you keep, open chrome://extensions, turn on
Developer mode → Load unpacked → pick that folder.about:debugging → This Firefox → Load Temporary Add-on… → pick
manifest.json from the unzipped keyorra-firefox-<version>.zip. Temporary add-ons are
removed when Firefox quits.chrome://extensions/shortcuts.Cards and addresses are offered only on https pages, this Mac or the local network. Payment fields inside separate iframes (e.g. Stripe Elements) are filled one field at a time.
Your master password goes through Argon2id (64 MiB, 3 passes) to a key that unwraps a random account key; the account key unwraps one random key per vault. Changing the master password re-wraps only the account key.
Every item is encrypted with XChaCha20-Poly1305 and a fresh nonce; the vault and item IDs are bound in as associated data, so ciphertexts cannot be swapped between items.
Everything lives in a local SQLite file in ~/Library/Application Support/app.keyorra.mac.
Nothing leaves your Mac except the opt-in Have I Been Pwned hash prefix.
Browsers talk to the app through a native-messaging bridge. Each browser is paired once with a key exchange; both sides show a confirmation code that you compare before the app accepts it.
Touch ID keeps a wrapped account key in the macOS keychain, accessible only to the signed app.
Only audited crates are used for cryptography (argon2, chacha20poly1305, p256); there
are no hand-written primitives.
Sync: each record is sealed twice (account layer hides even its kind; vault layer binds it to its header), packed into padded, hash-chained segments signed with a per-device Ed25519 key kept sealed to this Mac's Secure Enclave. Only the main Mac can approve or remove devices; rollbacks, forks and withheld changes raise alarms. Removing a device stops its changes from counting; until key rotation lands it can still read new changes while it reaches the folder, so also cut its access to the folder (sign it out of iCloud). The protocol is public: docs/sync-protocol.md, with test vectors and the sync design.
Details: design spec (written under the project's earlier working name). To report a vulnerability, see SECURITY.md.
Requirements: macOS 13+, Xcode, Rust (stable), Node 22 and pnpm.
cargo test # core + session
cd app && pnpm install && pnpm test # UI
cd app && pnpm tauri dev # run the app (vault in ~/Library/Application Support/app.keyorra.mac)
app/scripts/sign.sh # signed build (Personal Team), installs /Applications/Keyorra.app
Layout:
crates/keyorra-core: encryption, vault store, item model, TOTP, generator, 1Password
import, Watchtower. No UI.crates/keyorra-session: desktop-app logic (unlock throttling, auto-lock, clipboard clearing,
import flow, browser bridge) over the core, without any UI framework.app/: macOS app, Tauri 2 shell (app/src-tauri) + React UI (app/src).extension/: browser extension for Chromium browsers, Firefox and Safari (TypeScript).safari/: Xcode project for "Keyorra for Safari.app", which carries the extension into Safari.Touch ID needs a signed build (app/scripts/sign.sh): the keychain item that holds the wrapped
account key only opens for the app's stable team signature. Dev builds (pnpm tauri dev) are
signed ad hoc and keep their own item. Turn it on in Settings → Touch ID.
cd extension && pnpm install && pnpm test && pnpm build # dist/chromium, dist/firefox, dist/safari
Load extension/dist/chromium unpacked (extension id kaaofpbpmnghapcafbbhjflonijdijbj) or
extension/dist/firefox/manifest.json as a temporary add-on, then pair as described above.
Safari loads web extensions only from inside a Mac app, so the extension ships in
"Keyorra for Safari.app" (safari/). Its app extension relays each message to the Keyorra
app's socket and starts Keyorra if it isn't running; no host manifest is involved.
safari/build.sh # builds extension/dist/safari and the app, installs it to /Applications
KEYORRA_TEAM=ABCDE12345 safari/build.sh # same, signed with another Apple Developer team
The build is signed with the team in safari/Signing.xcconfig (a free Apple ID's Personal Team
works; sign in once in Xcode → Settings → Accounts). Without any team, sign ad hoc and enable
Develop → Allow Unsigned Extensions in Safari after every restart. Reinstalling "Keyorra for
Safari" gives the extension new storage, so pair again; restarting Safari keeps the pairing.
The app extension is sandboxed. Its one exception
(safari/Keyorra for Safari Extension/Extension.entitlements) allows connecting to the app's
socket and nothing else; safari/check/sandbox-check.sh checks it against the running app.
Bug reports and ideas are welcome in Issues. See CONTRIBUTING.md.
Keyorra is free software under the GNU General Public License v3.0 or later.