Monica for iOS
iOS-клиент local-first хранилища паролей Monica
iOS 17+ · SwiftUI · MDBX Vault · AutoFill · TOTP · WebDAV
Кратко
Monica for iOS — нативный iOS-клиент в экосистеме хранилища паролей Monica. Он следует принципу local-first и фокусируется на безопасном, контролируемом и восстанавливаемом управлении паролями на iPhone.
Ключевые возможности: MDBX Vault, AutoFill, TOTP, WebDAV.
Monica for iOS — нативный iOS-клиент в экосистеме хранилища паролей Monica. Он следует local-first подходу и фокусируется на безопасном, контролируемом и восстанавливаемом управлении паролями на iPhone.
Текущее направление проекта строится вокруг MDBX first, iOS 17+, iPhone first и моста Rust/Swift UniFFI. Основной фокус — локальный зашифрованный vault, нативный AutoFill, TOTP, WebDAV backup/restore и управление разными типами записей, совместимое с моделями данных Android / MDBX.
Первый публичный релиз в первую очередь закроет:
- Базовые возможности Local Vault
- Управление основными записями
- WebDAV backup/restore
- Более полную поддержку AutoFill
Дальше планируется:
- Passkey
- Совместимость Bitwarden
- Поддержка вложений
- Больше возможностей облачной синхронизации
Для кого это
Monica for iOS подходит пользователям, которые:
- Хотят local-first менеджер паролей и не хотят доверять ключевые учетные данные сторонним сервисам.
- Уже управляют паролями, TOTP, приватными заметками и связанными данными в Monica Android или экосистеме MDBX.
- Нуждаются в нативных возможностях iOS: AutoFill, Face ID / Touch ID и локальное резервное копирование/восстановление.
- Хотят управлять на iPhone разными типами записей: логинами, защищенными заметками, TOTP, банковскими картами и метаданными документов.
Текущие функции
Local MDBX Vault
- Создание, открытие и блокировка локального зашифрованного vault
- Local-first стратегия для снижения зависимости от внешних сервисов
Управление разными типами записей
- Базовый CRUD для логинов, защищенных заметок, TOTP, банковских карт, метаданных документов и других типов
- Совместимость с моделью данных Monica / MDBX
Избранное и поиск
- Приоритет избранного
- Режим просмотра только избранного
- Поиск внутри сессии
- Восстановление после мягкого удаления
TOTP
- Импорт через URI
otpauth:// - Импорт QR-кода
- Генерация кодов и обновление оставшихся секунд
iOS AutoFill
- Чтение зашифрованного индекса через Credential Provider Extension
- Возврат системе учетных данных для заполнения
- Нативная поддержка сценариев password AutoFill
Безопасная разблокировка
- Сочетание 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 layer: SwiftUI, Observation, AuthenticationServices, LocalAuthentication, Keychain, WidgetKit
- Local Vault: MDBX (Rust) + UniFFI →
MonicaMDBX(Swift) - Core logic:
MonicaCore(TOTP, разборotpauth://, генерация безопасных паролей) - Storage layer:
MonicaStorage(vault repository, совместимость KDBX, индекс AutoFill) - Security layer:
MonicaSecurity(граница Keychain / LocalAuthentication) - Sync layer:
MonicaSync(WebDAV, OneDrive, адаптеры Bitwarden)
MDBX UniFFI 🔧
Bridge crate со стороны Rust:
mdbx/crates/mdbx-ios-ffiГенерация Swift bindings:
Scripts/generate-mdbx-swift-bindings.shСборка iOS XCFramework:
Scripts/build-mdbx-xcframework.shЕсли отсутствует UniFFI CLI:
cargo install uniffi --version 0.31.1 --locked --features cliВажно: не запускайте Scripts/build-mdbx-xcframework.sh параллельно с Xcode build. Скрипт заменяет MonicaMDBXGenerated.xcframework и может привести к ошибке чтения в Xcode.
Команды проверки
Быстрый запуск тестов и сборки
Swift Package tests
Выполните команды по очереди в терминале macOS:
cd SwiftPackages/MonicaCore && swift test
cd ../MonicaMDBX && swift test
cd ../MonicaStorage && swift test
cd ../MonicaSecurity && swift test
cd ../MonicaSync && swift test
cd ../MonicaUI && swift testiOS Simulator build без подписи
Сначала выведите доступные симуляторы:
xcrun simctl list devices availableЗатем замените <iPhone simulator UUID> и выполните:
xcodebuild \
-project Monica.xcodeproj \
-scheme Monica \
-configuration Debug \
-sdk iphonesimulator \
-destination "id=<iPhone simulator UUID>" \
CODE_SIGNING_ALLOWED=NO \
buildiOS Simulator XCTest
xcodebuild test \
-project Monica.xcodeproj \
-scheme Monica \
-configuration Debug \
-sdk iphonesimulator \
-destination "id=<iPhone simulator UUID>" \
CODE_SIGNING_ALLOWED=NOДорожная карта
Приоритеты первого релиза
- MDBX Local Vault
- Управление основными записями
- TOTP
- WebDAV
- iOS AutoFill
В процессе
- Проверка на подписанном реальном устройстве
- Keychain / LocalAuthentication
- App Group
- QuickType
- Сканирование камерой
Будущие возможности
- Passkey
- Двусторонняя синхронизация Bitwarden
- Работа с вложениями
- Больше облачных сервисов
- Нативные точки входа iOS, например Widget / Live Activity
Благодарности
Дизайн, совместимость и часть функционального направления Monica вдохновлены и поддержаны следующими проектами:
- Bitwarden - важный ориентир по экосистеме open-source менеджеров паролей, модели vault и синхронизации
- KeePass - основа локального vault-подхода и совместимости с
.kdbx - Keyguard - ориентир для UX Android-менеджера паролей
- Stratum Auth - ориентир по UX аутентификатора, иконкам и совместимости
Краткая дорожная карта 🚦
- Обязательно для первого релиза: MDBX Local Vault, управление основными записями, TOTP, WebDAV, iOS AutoFill
- Ближайшая проверка: подписанное реальное устройство, Keychain / LocalAuthentication, App Group, QuickType, камера
- Будущие планы: Passkey, двусторонняя синхронизация Bitwarden, вложения, больше облачных сервисов, Widget / Live Activity
Эти пункты можно напрямую превратить в issue или milestone для отслеживания и распределения.
Star History
Лицензия
Copyright (c) 2025 JoyinJoester
Monica for iOS распространяется как open source по GNU General Public License v3.0.
Атрибуция сторонних иконок
- Проект использует сторонние иконки из Stratum Auth app (версия v1.4.0, каталоги icons / extraicons, GPL-3.0)
- Права на названия брендов и логотипы принадлежат их владельцам
