无版本号的最新安装包链接要等下一个 release 才生效,当前需从 releases 页面取带版本号的安装包;Windows 和 Linux 安装包尚未代码签名,需自行核对构建来源;从源码构建需先装好 Tauri 2 的前置依赖,详见 docs/development.md
rowel
fwdaiGPL-3.0活跃维护本地优先的密钥与密码管理器,用 Rust 编写,凭据加密后只存在本机,不依赖云端同步,适合在意隐私的桌面用户。
🔑 Local-first Secrets Manager
gh release download --repo fwdai/rowel --pattern 'Rowel_universal.dmg'README 未说明;仅列出支持 macOS、Windows、Linux 和 iOS 平台
本地优先的开源密码与密钥保险库,数据只加密存在自己设备上,无需账号和服务器
本地优先的密钥与密码管理器,用 Rust 编写,凭据加密后只存在本机,不依赖云端同步,适合在意隐私的桌面用户。
核心能力
- 把密码、通行密钥、卡片、SSH 密钥和 .env 文件作为独立条目类型管理
- 磁盘上整体加密,条目内部再单独封装,列表和搜索无需解密
- 按 Personal、Work 等划分 lockbox,各自独立加密文件并可同步到不同云盘
- 同步走自己的 Google Drive、Dropbox 或 iCloud,只存密文,按条目自动合并
- 支持从 1Password、Bitwarden、KeePass 等导出文件导入并生成报告
容易踩的坑
- v1.1.1最新正式版2026-11-05 · 2026-11-05 06:43 UTC
What's Changed
- ci(release): stage the per-arch CLI sidecars for the universal macOS build by @alchaplinsky in https://github.com/fwdai/rowel/pull/675
- feat(extension): locked and not-running popup screens by @alchaplinsky in https://github.com/fwdai/rowel/pull/676
- chore(deps-dev): bump eslint from 10.12.0 to 10.13.0 in /extension in the extension group by @dependabot[bot] in https://github.com/fwdai/rowel/pull/680
- chore(deps): bump zip from 9.0.5 to 9.1.0 in /src-tauri by @dependabot[bot] in https://github.com/fwdai/rowel/pull/678
- Lock with the OS, add an "OS lock" timeout, and focus search on unlock by @alchaplinsky in https://github.com/fwdai/rowel/pull/681
- fix(deps): clear RUSTSEC-2026-0429 by moving tauri-plugin-updater off zip 4 by @alchaplinsky in https://github.com/fwdai/rowel/pull/682
- chore(release): bump version to 1.1.1 by @alchaplinsky in https://github.com/fwdai/rowel/pull/683
Full Changelog: https://github.com/fwdai/rowel/compare/v1.1.0...v1.1.1
- v1.1.02026-10-27 · 2026-10-27 14:14 UTC
查看更新说明
What's Changed
- chore(deps): ignore the RustCrypto 0.14 / passkey-rs 0.6 generation until ssh-key 0.7 by @alchaplinsky in https://github.com/fwdai/rowel/pull/651
- chore(deps): patch ctutils and scope the crypto-bigint 0.5 advisory for cargo-deny by @alchaplinsky in https://github.com/fwdai/rowel/pull/654
- Extract the browser host into a rowel-broker crate; license the library crates MIT OR Apache-2.0 by @alchaplinsky in https://github.com/fwdai/rowel/pull/652
- Agent mode for agentic browsers: grants, consent dialog, audit, extension agent mode (I1) by @alchaplinsky in https://github.com/fwdai/rowel/pull/653
- Agent clients and the MCP server: client kinds, grant signals, session end, rowel-cli (I2) by @alchaplinsky in https://github.com/fwdai/rowel/pull/655
- Mark an extension as driven by an agent in Rowel, not only in the extension by @alchaplinsky in https://github.com/fwdai/rowel/pull/656
- Secrets for commands and APIs: the sidecar, rowel run/redact/hook/proxy, resolve (I3) by @alchaplinsky in https://github.com/fwdai/rowel/pull/657
- Audit you can read: audit sync and retention, Vault Health agent activity, threat model and docs, Tier 1 release (I4) by @alchaplinsky in https://github.com/fwdai/rowel/pull/658
- Stop naming a primary lockbox in the UI by @alchaplinsky in https://github.com/fwdai/rowel/pull/661
- rowel serve: the broker without the GUI, over the grant engine lifted into the crates (I5) by @alchaplinsky in https://github.com/fwdai/rowel/pull/659
- feat(brand): new logo and app icon across app, tray, mobile and extension by @alchaplinsky in https://github.com/fwdai/rowel/pull/660
- Org lockboxes and enrollment in the app (I6) by @alchaplinsky in https://github.com/fwdai/rowel/pull/662
- Rowel Server, single node: rowel serve --server (I7) by @alchaplinsky in https://github.com/fwdai/rowel/pull/665
- fix(agents): no prefix oracle, one expiry path, audit fails closed, proxy forwards only what a grant covers by @alchaplinsky in https://github.com/fwdai/rowel/pull/666
- fix(release): the CLI on the PATH on every OS, standalone CLI and extension downloads, release guide by @alchaplinsky in https://github.com/fwdai/rowel/pull/667
- feat(agents): this run, rowel serve --install-host, complete translations, and the missing tests by @alchaplinsky in https://github.com/fwdai/rowel/pull/668
- chore(server): move the server mode to its own repository by @alchaplinsky in https://github.com/fwdai/rowel/pull/669
- fix(cli): reach a broker in the clear only on this machine by @alchaplinsky in https://github.com/fwdai/rowel/pull/672
- fix(icons): keep the macOS app icon gradient by @alchaplinsky in https://github.com/fwdai/rowel/pull/673
- Batch selection and actions for the entry list by @alchaplinsky in https://github.com/fwdai/rowel/pull/664
- ci(release): build OpenSSL with Strawberry Perl on Windows by @alchaplinsky in https://github.com/fwdai/rowel/pull/674
Full Changelog: https://github.com/fwdai/rowel/compare/v1.0.4...v1.1.0
- v1.0.42026-10-23 · 2026-10-23 06:16 UTC
查看更新说明
What's Changed
- fix(bundle): declare GPL-3.0 license and metadata in Linux packages by @alchaplinsky in https://github.com/fwdai/rowel/pull/635
- chore(deps): batch the pending Dependabot updates across npm, cargo and the extension by @alchaplinsky in https://github.com/fwdai/rowel/pull/636
- feat(ui): one design grammar for every entry's detail view by @alchaplinsky in https://github.com/fwdai/rowel/pull/634
- build(ios): retire the swift-rs fork for the stock 1.0.9 crate by @alchaplinsky in https://github.com/fwdai/rowel/pull/638
- chore(deps): lift the Tauri freeze and bump the Tauri crates and npm packages together by @alchaplinsky in https://github.com/fwdai/rowel/pull/639
- fix: gate import/restore reads behind path grants, require the master password for plaintext export, keep macOS copies off Universal Clipboard by @alchaplinsky in https://github.com/fwdai/rowel/pull/641
- fix: authenticate the sync delete marker and refuse HTTPS logins on HTTP pages by @alchaplinsky in https://github.com/fwdai/rowel/pull/642
- ci: pin actions and SBOM tools, scan main with CodeQL, deny-check the iOS target by @alchaplinsky in https://github.com/fwdai/rowel/pull/643
- feat(sync): master-password change propagates across synced devices by @alchaplinsky in https://github.com/fwdai/rowel/pull/644
- chore(codeql): resolve hash_secret and site-quirk substring alerts by @alchaplinsky in https://github.com/fwdai/rowel/pull/645
- fix(import): take a dropped .swftx or .rowel as a backup, not an export by @alchaplinsky in https://github.com/fwdai/rowel/pull/649
- build(extension): bump dev tooling to ESLint 10 and fix the lint config for it by @alchaplinsky in https://github.com/fwdai/rowel/pull/647
- feat(setup): restore a legacy .swftx vault on the first run by @alchaplinsky in https://github.com/fwdai/rowel/pull/648
- feat(lockbox): one vault password, and every re-keyed lockbox syncs after a change by @alchaplinsky in https://github.com/fwdai/rowel/pull/646
- chore(release): bump version to 1.0.4 by @alchaplinsky in https://github.com/fwdai/rowel/pull/650
Full Changelog: https://github.com/fwdai/rowel/compare/v1.0.3...v1.0.4
- v1.0.32026-10-15 · 2026-10-15 11:26 UTC
查看更新说明
What's Changed
- feat(identity): ask which document in the add picker, not from a switch inside the form by @alchaplinsky in https://github.com/fwdai/rowel/pull/616
- fix(scan): keep a mangled MRZ from being read as a card by @alchaplinsky in https://github.com/fwdai/rowel/pull/617
- docs(banner): Update readme.md and banner by @alchaplinsky in https://github.com/fwdai/rowel/pull/618
- Mask secrets with the brand asterisk instead of dots by @alchaplinsky in https://github.com/fwdai/rowel/pull/620
- Update Readme.md by @alchaplinsky in https://github.com/fwdai/rowel/pull/621
- refactor(sync): provider-neutral sync core with Google Drive as the first adapter by @alchaplinsky in https://github.com/fwdai/rowel/pull/592
- feat(sync): Dropbox as a sync provider by @alchaplinsky in https://github.com/fwdai/rowel/pull/593
- feat(sync): provider picker and provider-neutral naming by @alchaplinsky in https://github.com/fwdai/rowel/pull/594
- fix(sync): review findings: Dropbox compare-and-swap, disconnect under the lock, cancelled sign-ins free their port by @alchaplinsky in https://github.com/fwdai/rowel/pull/595
- feat(sync): iCloud as a third provider, through CloudKit by @alchaplinsky in https://github.com/fwdai/rowel/pull/600
- fix(sync): a first push re-checks the deletion marker after creating the pack by @alchaplinsky in https://github.com/fwdai/rowel/pull/603
- fix(log): stop writing every log line twice by @alchaplinsky in https://github.com/fwdai/rowel/pull/622
- fix(attachments): allow blob: images and frames in the CSP so a built app can preview a file by @alchaplinsky in https://github.com/fwdai/rowel/pull/623
- Stable, version-free "latest" download links by @alchaplinsky in https://github.com/fwdai/rowel/pull/624
- docs(readme): match the claims to what the code does by @alchaplinsky in https://github.com/fwdai/rowel/pull/625
- fix: back the README's SSH, passkey, backup and import claims by @alchaplinsky in https://github.com/fwdai/rowel/pull/626
- chore(release): bump version to 1.0.3 by @alchaplinsky in https://github.com/fwdai/rowel/pull/627
Full Changelog: https://github.com/fwdai/rowel/compare/v1.0.2...v1.0.3
- v1.0.22026-10-13 · 2026-10-13 16:10 UTC
查看更新说明
What's Changed
- fix(compact): edge swipe starts on its own strip, not in the scroller by @alchaplinsky in https://github.com/fwdai/rowel/pull/598
- Polish the settings screens in both shells by @alchaplinsky in https://github.com/fwdai/rowel/pull/599
- fix(tooltip): keep tooltips inside the window with Floating UI by @alchaplinsky in https://github.com/fwdai/rowel/pull/606
- docs: name the lockbox, keep the vault for the whole by @alchaplinsky in https://github.com/fwdai/rowel/pull/605
- fix(import): a CSV is 1Password's only with all five of its column names by @alchaplinsky in https://github.com/fwdai/rowel/pull/604
- feat(compact): square-asterisk for the generator tab and command by @alchaplinsky in https://github.com/fwdai/rowel/pull/609
- feat(copy): call workspaces lockboxes, and the whole store the vault by @alchaplinsky in https://github.com/fwdai/rowel/pull/607
- feat(sync): read Rowel/Lockboxes ahead of the folder cutover by @alchaplinsky in https://github.com/fwdai/rowel/pull/608
- feat(identity): passport covers with the country's colour and emblem by @alchaplinsky in https://github.com/fwdai/rowel/pull/610
- feat(attachments): desktop hover actions, stepping lightbox under the chrome, glass controls by @alchaplinsky in https://github.com/fwdai/rowel/pull/612
- fix(safari): connect through a global port instead of overriding runtime.connectNative by @alchaplinsky in https://github.com/fwdai/rowel/pull/613
- fix(mobile): scan and attach from the camera on any IPC transport, with photos shrunk first by @alchaplinsky in https://github.com/fwdai/rowel/pull/615
- chore(release): bump version to 1.0.2 by @alchaplinsky in https://github.com/fwdai/rowel/pull/614
Full Changelog: https://github.com/fwdai/rowel/compare/v1.0.1...v1.0.2
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Keep every password, passkey, card, ID, SSH key, .env file and more in one encrypted vault on your own devices. No account, no server, no subscription.
rowel.app · Threat model · Browser extension · Agents · Security policy
Install
Download it directly — every link gives you the newest release:
| Platform | Download |
|---|---|
| macOS (Universal) | .dmg |
| Windows (x64) | setup .exe |
| Linux (x86_64) | .deb · .rpm · .AppImage |
| iOS | TestFlight beta |
These names have no version in them, so they always resolve to the newest release — from the next release onwards. Until that one is out, take the versioned installer from the releases page; it stays there alongside the version-free copy either way. iOS has no file to download: it comes from Apple, through TestFlight for as long as it is in beta.
or install with the GitHub CLI, grab the latest installer for your OS:
gh release download --repo fwdai/rowel --pattern 'Rowel_universal.dmg' # macOS; use Rowel_x64-setup.exe (Windows), Rowel_amd64.deb, Rowel_x86_64.rpm or Rowel_amd64.AppImage (Linux)
On desktop, Rowel updates itself after that, and it only installs updates whose signature checks out.
Get started
- Open Rowel and choose Start fresh. If you already use Rowel on another device, pick Continue with a cloud account instead. On desktop you can also choose Restore from a backup file (
.rowel). - Choose a master password and type it a second time. On supported devices you can then turn on Touch ID, Face ID or Windows Hello.
- Bring your items in: go to Settings → Import and drop in an export from your old password manager or browser. Or add your first login, card or SSH key by hand.
- Optional: connect Google Drive or Dropbox in Settings to keep your devices in sync. iCloud is offered too on iPhone, and on Mac builds whose signature carries Apple's iCloud entitlement.
Why I'm building this
I believe basic personal security should be available to everyone, for free. Nobody should have to pay a monthly subscription just to keep their passwords and secrets encrypted and safe.
So Rowel is free and open source for personal and family use, and it will stay that way. No trial, no locked "premium" vault, no account.
Down the road there may be a paid option for professional teams that need extra features. That's how the project can keep going, and it will never take anything away from the free app.
- Alex
Why Rowel
- No account, no backend. Your vault is encrypted files on your own disk, and it works fully offline. There's nothing to sign up for and no server that could be breached.
- Built for developers. SSH keys (with fingerprint randomart, and Ed25519 keys generated in the app), API keys with environment and scopes, and whole
.envfiles are their own item types, not notes you've pasted in. - Switch in a few clicks. Move in from 1Password, LastPass, Bitwarden, KeePass (CSV export), Enpass, Chrome, Safari or any FIDO CXF export. Point Rowel at your export and it brings your items over, with a report for anything it couldn't import.
- Bring your own cloud. Each lockbox syncs to your Google Drive, Dropbox or iCloud as one encrypted file, and Rowel can only reach its own app-scoped storage there. Edits from different devices merge item by item on their own: there are no conflict dialogs, and when two devices change the same item, the newer edit wins.
- Encrypted even while open. The vault is encrypted on disk, and each item is sealed a second time inside it. The list and search work without unsealing anything, and the app's interface gets an item's secrets only when you open that item.
- Lockboxes. One vault, one master password, divided into lockboxes such as Personal, Work or Clients. Each lockbox is kept in its own encrypted file and can sync to its own cloud account.
- Private sharing by link. Share one item through an encrypted link that expires in 24 hours and can be revoked. The key lives only in the link. Sharing works from a lockbox synced to Google Drive, and the recipient opens the link in Rowel.
- Scan to fill. Take a photo of a card or passport and Rowel reads it on your device to fill in the fields. Nothing gets uploaded. Available on macOS, Windows and iOS.
- Releases you can verify. Every installer comes with proof of how it was built, the macOS app is signed and notarized, and updates install only if their signature checks out. Windows and Linux installers aren't code-signed yet, so check those with their build provenance. See Verifying a release.
And all the essentials
- Logins, credit cards, identities and documents, secure notes, and file attachments
- Passkeys and TOTP codes, plus a password and passphrase generator
- Vault Health: strength scoring, reused-password checks, and an optional private breach check that never sends your password
- Browser autofill and passkeys for Chrome, Edge, Brave, Vivaldi and Firefox, plus Safari on macOS (details). Passkeys are on by default from extension 0.1.1; an earlier install turns them on in the extension's options
- iOS AutoFill for passwords and passkeys, unlocked with Face ID (passkeys need iOS 17 or later)
- Agents: Claude Code, Codex, Cursor and agentic browsers use your logins and API keys through grants you approve, with a readable audit log in Vault Health (details). The agent itself never receives the value; a command you approve to run with a key does, so approve only command lines you would run yourself
- Touch ID, Face ID or Windows Hello unlock
- Locks itself when you're inactive and clears copied secrets from the clipboard
- Export to CSV, FIDO CXF, or Bitwarden-compatible JSON, plus encrypted backups
- Move to a new device by signing in to your cloud account, or on desktop by restoring a backup file
- Master-password changes are crash-safe, and an interrupted one rolls back
- Auto-updates on desktop, 10 languages, command palette
How it works & security
Your vault is everything your master password opens. Each lockbox in it is an encrypted SQLite database (SQLCipher) on your own device, and each item is sealed again inside it in an application-level AEAD layer. No backend holds your secrets. All cryptography lives in the Rust core, and the app's UI never sees your master key. Sync uploads each lockbox to your cloud as one encrypted file. The terms the code uses are in docs/development.md.
docs/threat-model.md: what Rowel defends against, and what it doesn'tSECURITY.md: how to report a vulnerabilitydocs/browser-extension.mdanddocs/safari-extension.md: browser autofilldocs/agents.mdanddocs/cli.md: AI agents using logins and API keys through grants, and therowelcommand line tooldocs/server-api.md: the API the app and the command line tool speak to a Rowel Server, the separate product a company runs for its agents' org lockboxes. Your personal vault never touches it
Verifying a release
Every release is built in GitHub Actions and ships with supply-chain evidence:
-
SLSA build provenance — each installer is attested with
actions/attest-build-provenance(keyless OIDC signing). You can prove an installer was built by this repo's workflow, from this source, with the GitHub CLI:gh attestation verify ./Rowel_amd64.AppImage --repo fwdai/rowel(works for the
.dmg,-setup.exe,.deb,.rpmand.AppImageassets — point it at whichever you downloaded, versioned name or not: the version-free copies are the same bytes and are attested as well — and for the standalone command line tool archives and the browser extension zips). -
Checksums —
SHA256SUMSlists the command line tool archives and the extension zips, for checking a download whereghis not at hand (docs/serve.md).Releases up to and including
v1.0.0-alpha.6were built before the project moved fromswiftyapp/swiftytofwdai/rowel, so their provenance names the old repository. Verify those with--repo swiftyapp/swiftyinstead. -
CycloneDX SBOM — every release attaches
rowel-rust.cdx.json(the full Rust dependency graph) and, when available,rowel-js.cdx.json(the frontend). Feed them to any CycloneDX-aware scanner (e.g.grype sbom:./rowel-rust.cdx.json) to audit the exact dependencies a build shipped. -
Update signature — the auto-updater only installs updates signed with the project's minisign key (public key in
src-tauri/tauri.conf.json); the matching private key is never in this repository.
The Rust toolchain (rust-toolchain.toml) and the bun version are both pinned,
so every release is built with the same toolchain.
Building from source
Rowel is a Tauri 2 app with a Rust core and a React + TypeScript frontend. For a quick start:
git clone https://github.com/fwdai/rowel.git && cd rowel
bun install && bun run tauri:dev
Everything else, including prerequisites, tests, the iOS AutoFill build, the Google OAuth setup for your own builds, update signing, and how to extend Rowel, is in docs/development.md.
Contributing
Contributions are welcome. Read CONTRIBUTING.md and the Code of Conduct first, and report security issues privately as described in SECURITY.md.
Support
❤️ it? Then ⭐️ it on GitHub or tell a friend. You can also support development:
Individuals
Organizations (your logo shows up here with a link to your website. Contribute)
License
The apps are free software under the GNU General Public License v3.0:
the desktop and iOS apps (src/, src-tauri/src/), the browser extension
(extension/, a fork of the GPL KeePassXC-Browser) and everything else in this
repository not listed below.
The Rust library crates under src-tauri/crates/ (rowel-core,
rowel-broker, rowel-autofill) are licensed under
either the MIT License or the
Apache License, Version 2.0, at your
option, so that any program can link them. Each crate carries both license
files and names them in its Cargo.toml.
Contributions are accepted under the license of the part they touch, with a Developer Certificate of Origin sign-off (see CONTRIBUTING.md).