爱意满满的作品展示区。
vfasky

做了一个原生的 macOS Vaultwarden 客户端:基于 MyGo ,主窗口零 WebView,支持 Touch ID 与系统级 AutoFill

  •  
  •   vfasky ·
    vfasky · 16h 17m ago · 781 views

    自建 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 协议,我自己每天在作为主力使用;但对于极其重要的数据,建议试用前先通过官方端导出备份一次。

    项目地址与讨论

    8 replies  •  2026-10-13 14:52:55 +08:00
    congjinyebaiya
        1
    congjinyebaiya  
       10h 28m ago via Android
    原生开发好文明,支持一下,回去试试🐱
    sleek7671
        2
    sleek7671  
       8h 44m ago
    那我可要尝一尝了
    dog
        3
    dog  
       8h 13m ago via iPhone
    感谢分享,当初就是因为官方 Electron 客户端的一些问题从 Vaultwarden 换到了 Keepass ,有机会试试。
    BearCookie
        4
    BearCookie  
       6h 54m ago
    唔,我么有自建服务器,之前买的腾讯云的 199 的,带宽网速很慢,才 1m ,链接多了捉襟见肘
    initObject
        5
    initObject  
       6h 32m ago
    服务器响应不符合支持的 vaultwarden 协议
    ffalex
        6
    ffalex  
       5h 47m ago via Android
    @BearCookie 可以用 cf worker 版本试试
    ahci
        7
    ahci  
       5h 31m ago
    @BearCookie 用 nodewarden ,cfworkers 就可以搭一个,缺点是连不上 VPN 就用不了
    bigtan
        8
    bigtan  
       1h 27m ago
    主要 ssh agent 用得多。 还是没法替代
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5693 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:20 · PVG 16:20 · LAX 01:20 · JFK 04:20
    ♥ Do have faith in what you're doing.