Architecture

Android · Linux · macOS · Windows
View Markdown

The source code of Keyguard is available for inspection and is compilable with a minimal developer setup. The releases are done from publicly visible CI/CD workflows.

Core technologies

PartTechnology
LanguageKotlin, Rust, Swift
UICompose with Material 3 Expressive. SwiftUI in the native Apple apps.
ConcurrencyKotlin coroutines and Flow
DatabaseSQLDelight over an encrypted SQLite database, in the SQLCipher format
NetworkingKtor client

Modules

Most shared UI, business logic, the sync engine and the database live in common. Smaller modules hold state producers without UI dependencies, and optional features such as the Android QR scanner. Each platform app picks the features it needs.

ModuleApp
androidAppThe phone and tablet app
wearAppThe Wear OS app
desktopAppThe Linux, macOS and Windows app, running on the JVM
iosAppThe native iPhone and iPad app
macosAppThe native macOS app

Utility modules under util/*/ provide independent, granular libraries. The exception is util/ffi/, the shared native-bridge leaf.

Integration modules under integration/*/ implement semi-independent projects for testing Keyguard. For example, an Android Credential provider app can test Keyguard’s own implementation.

Server modules under server/*/ implement companion projects for Keyguard, such as a website for documentation or the license server.