Skip to content

Monica for iOS

Monica 的本地优先 iOS 密码库客户端
iOS 17+ · SwiftUI · MDBX Vault · AutoFill · TOTP · WebDAV

Release

Downloads

Last Commit

License

摘要

Monica for iOS 是 Monica 密码库生态中的原生 iOS 客户端,采用 本地优先 的设计理念,专注于在 iPhone 上提供安全、可控、可恢复的密码管理体验。 ✨

主要特性:MDBX VaultAutoFillTOTPWebDAV

Monica for iOS 是 Monica 密码库生态中的原生 iOS 客户端,采用 本地优先 的设计理念,专注于在 iPhone 上提供安全、可控、可恢复的密码管理体验。

项目当前以 MDBX 优先、iOS 17+、iPhone 优先、Rust/Swift UniFFI 桥接 为核心路线,重点围绕本地加密保险库、原生 AutoFill、TOTP、WebDAV 备份恢复以及与 Android / MDBX 数据模型兼容的多类型条目管理展开。

首个公开版本将优先完成:

  • 本地 Vault 基础能力
  • 核心条目管理
  • WebDAV 备份与恢复
  • 较完整的 AutoFill 支持

后续会继续完善:

  • Passkey
  • Bitwarden 兼容
  • 附件支持
  • 更多云端同步能力

适合谁使用

Monica for iOS 适合以下用户:

  • 希望使用本地优先方案管理密码,不愿将核心凭据托管给第三方服务。
  • 已经在 Monica Android 或 MDBX 生态中管理密码、TOTP、私密笔记等数据。
  • 需要使用 iOS 原生的 AutoFill、Face ID / Touch ID、本地备份恢复 等能力。
  • 希望在 iPhone 上统一管理登录项、安全笔记、TOTP、银行卡、证件元数据等多类型条目。

当前功能

本地 MDBX Vault

  • 支持创建、打开、锁定本地加密保险库
  • 采用本地优先策略,降低对外部服务的依赖

多类型条目管理

  • 支持登录项、安全笔记、TOTP、银行卡、证件元数据等基础 CRUD
  • 兼容 Monica / MDBX 的数据模型思路

收藏与搜索

  • 支持收藏优先
  • 支持仅看收藏
  • 支持会话内搜索
  • 支持软删除恢复

TOTP

  • 支持 otpauth:// URI 导入
  • 支持二维码导入
  • 支持验证码生成与剩余秒数刷新

iOS AutoFill

  • 通过 Credential Provider Extension 读取加密索引
  • 向系统返回可填充的凭据
  • 为密码自动填充场景提供原生支持

安全解锁

  • 结合 Keychain、LocalAuthentication 和 MDBX security_key
  • 不保存主密码明文
  • 尽量将敏感信息限制在本地安全边界内

WebDAV

  • 支持上传、下载、SHA-256 完整性校验
  • 支持恢复预览
  • 支持恢复前打开验证

OneDrive

  • 已接入 MSAL 和 Microsoft Graph app-folder provider
  • 真实账号与网络验收仍在持续推进

KeePass / KDBX

  • 已完成现代 KDBX3 / KDBX4 主链路读写兼容
  • 后续将继续扩展更多真实场景验收

当前状态

  • 项目仍处于 iOS 客户端开发和真机验收阶段。
  • 在未签名模拟器测试中,使用 CODE_SIGNING_ALLOWED=NO 时,App Group container 不可用属于预期现象。
  • AutoFill QuickType 展示、Credential Provider、App Group、Keychain access group、TOTP 相机扫描等能力,仍需要在签名真机环境中继续验证。

开发信息

目录结构 🗂️

项目布局概览

.
├── Monica.xcodeproj/
├── App/
│   └── MonicaApp/
├── Extensions/
│   ├── MonicaAutoFillExtension/
│   ├── MonicaShareExtension/
│   └── MonicaWidgetExtension/
├── Tests/
│   └── MonicaTests/
├── Scripts/
│   ├── build-mdbx-xcframework.sh
│   └── generate-mdbx-swift-bindings.sh
├── Artifacts/
│   ├── MDBX/
│   └── MSAL/
├── Generated/
│   └── MDBXUniFFI/
└── SwiftPackages/
  ├── MSAL/
  ├── MonicaCore/
  ├── MonicaMDBX/
  ├── MonicaSecurity/
  ├── MonicaStorage/
  ├── MonicaSync/
  └── MonicaUI/

技术栈 ⚙️

  • App 层SwiftUI、Observation、AuthenticationServices、LocalAuthentication、Keychain、WidgetKit
  • 本地 Vault:MDBX (Rust) + UniFFI → MonicaMDBX (Swift)
  • 核心逻辑MonicaCore(TOTP、otpauth:// 解析、安全密码生成)
  • 存储层MonicaStorage(Vault repository、KDBX 兼容、AutoFill 索引)
  • 安全层MonicaSecurity(Keychain / LocalAuthentication 边界)
  • 同步层MonicaSync(WebDAV、OneDrive、Bitwarden 适配)

MDBX UniFFI 🔧

Rust 侧桥接 crate:

text
mdbx/crates/mdbx-ios-ffi

生成 Swift binding:

bash
Scripts/generate-mdbx-swift-bindings.sh

生成 iOS XCFramework:

bash
Scripts/build-mdbx-xcframework.sh

如果缺少 UniFFI CLI:

bash
cargo install uniffi --version 0.31.1 --locked --features cli

注意:不要并行运行 Scripts/build-mdbx-xcframework.sh 与 Xcode build。脚本会替换 MonicaMDBXGenerated.xcframework,并可能导致 Xcode 读取失败。


验证命令

如何快速运行测试与构建

Swift Package 测试

在 macOS 终端中运行以下命令逐个测试各 Swift 包:

bash
cd SwiftPackages/MonicaCore && swift test
cd ../MonicaMDBX && swift test
cd ../MonicaStorage && swift test
cd ../MonicaSecurity && swift test
cd ../MonicaSync && swift test
cd ../MonicaUI && swift test

iOS Simulator 构建(无签名)

先列出可用模拟器:

bash
xcrun simctl list devices available

然后替换 <iPhone simulator UUID> 运行:

bash
xcodebuild \
  -project Monica.xcodeproj \
  -scheme Monica \
  -configuration Debug \
  -sdk iphonesimulator \
  -destination "id=<iPhone simulator UUID>" \
  CODE_SIGNING_ALLOWED=NO \
  build

iOS Simulator XCTest

bash
xcodebuild test \
  -project Monica.xcodeproj \
  -scheme Monica \
  -configuration Debug \
  -sdk iphonesimulator \
  -destination "id=<iPhone simulator UUID>" \
  CODE_SIGNING_ALLOWED=NO

路线图

首发重点

  • MDBX 本地 Vault
  • 核心条目管理
  • TOTP
  • WebDAV
  • iOS AutoFill

持续推进

  • 签名真机验收
  • Keychain / LocalAuthentication
  • App Group
  • QuickType
  • 相机扫描

后续能力

  • Passkey
  • Bitwarden 双向同步
  • 附件体验
  • 更多云服务
  • Widget / Live Activity 等 iOS 原生入口

致谢

Monica 的设计、兼容性适配与部分功能方向,受到了以下优秀开源项目和软件的启发与帮助:

  • Bitwarden - 开源密码管理生态、Vault 模型与同步能力的重要参考
  • KeePass - 本地密码库理念与 .kdbx 生态兼容的重要基础
  • Keyguard - Android 端密码管理器的交互设计与体验参考
  • Stratum Auth - 身份验证器体验、图标资源与相关兼容支持参考

路线图(简要) 🚦

  • 首发重点(必达): MDBX 本地 Vault、核心条目管理、TOTP、WebDAV、iOS AutoFill
  • 近期验收(进行中): 签名真机验收、Keychain / LocalAuthentication、App Group、QuickType、相机扫描
  • 未来计划(探索/排期): Passkey、Bitwarden 双向同步、附件体验、更多云服务、Widget / Live Activity

可将上述条目直接转为 issue 或 milestone,便于跟踪与分配。

致谢 🙏

Monica 的设计、兼容性适配与部分功能方向,受到了以下优秀开源项目和软件的启发与帮助:



Star History

Star History Chart


许可证

Copyright (c) 2025 JoyinJoester

Monica for iOS 基于 GNU General Public License v3.0 开源发布。

第三方图标标注

最近更新