自建 Vaultwarden 好几年了。官方的 macOS 桌面端基于 Electron,日常开着内存占几百兆,偶尔唤醒也有点迟钝;更关键的是 Safari 里的自动填充只能靠扩展,体验和系统原生有明显差距。
一直想找个轻快、原生的 Mac 客户端,后来索性自己动手写了一个,最近在主力机上用得很顺手,今天开源出来分享给自建密码库的朋友。
项目名叫 MyGo Vaultwarden。
关于底层:为什么用 MyGo?
这个项目是用 egoist 开源的 MyGo (
github.com/egoist/mygo) 框架构建的。很多朋友写桌面端习惯用 Wails 或 Electron,本质上还是把前端网页打包进去。而 MyGo 走的是另一条路线:
● 后端是纯 Go:处理 Vaultwarden 复杂的网络请求、AES-GCM/Argon2 加解密、数据同步以及快照管理,性能和类型安全都让人放心。
● UI 是纯原生 Native UI:直接绑定 macOS 的 Swift / AppKit,主窗口里没有任何 WebView、HTML 或 JavaScript。
● 极致轻量:没有内嵌浏览器的开销,内存占用极小,原汁原味地遵循 macOS 的窗口、原生控件、菜单、快捷键和动画规范。
这也是我在实际写这个项目时觉得最爽的地方:既有 Go 写复杂业务的稳健,又能获得真正的 macOS 原生桌面质感。
核心功能与体验
1. 系统级自动填充:接入了 macOS 系统的「自动填充与密码(Credential Provider)」。在 Safari 或其它应用中无需常驻扩展,点选凭据并通过 Touch ID 认证即可填充。带有 TOTP 的条目,填充后还会自动把两步验证码复制到剪贴板。
2. 完整的个人密码库:支持登录、支付卡、身份、安全笔记、SSH 密钥等 8 种类型;支持收藏、文件夹、归档、回收站与批量管理;
⌘F 即时毫秒级搜索并展示网站图标。3. 日常开箱即用:直连自建 Vaultwarden 服务器,支持两步验证(MFA / 恢复码)、Bitwarden 兼容的 JSON 导入导出、Send 以及设备登录审批,并带应用内更新。
安全性设计
做了哪些具体防护:
● 双沙盒隔离:主应用与 AutoFill 扩展均开启 macOS App Sandbox。AutoFill 扩展在独立的沙盒进程中运行,只读取一份经过权限和策略过滤的 Login 最小投影(仅包含用户名、密码、URI 与 TOTP),不触碰完整的加密库。
● 本地静态加密:完整密码库仅以受 Keychain 和主密码保护的 AES-GCM 本机快照形式落盘。
● 主动防御:在向服务器发起任何网络请求前,本地会先检查并拒绝弱 KDF 参数(如低迭代的 PBKDF2);锁屏、睡眠或空闲 15 分钟后自动锁定。
● 写入安全:网络异常导致的未知写入结果绝不会在后台静默重放,避免冲突覆盖。
● 更新验签:自动更新包强制校验 Ed25519 签名与 SHA-256 摘要。
目前的局限(先排雷)
● 暂不支持组织管理:当前版本只聚焦于个人密码库。组织条目能正常同步和解密,但组织管理(成员、集合、权限分配等管理后台功能)已延期到后续版本。
● 仅支持 macOS:没有跨平台计划。
● 未做第三方安全审计:代码已开源,遵循 GPL-3.0 协议,我自己每天在作为主力使用;但对于极其重要的数据,建议试用前先通过官方端导出备份一次。
项目地址与讨论
● GitHub:
https://github.com/vfasky/mygo-vaultwarden● 官网: https://mygo-vault.vfasky.com