About this project

Keep is an Android application for FROST (Flexible Round-Optimized Schnorr Threshold Signatures) threshold signing, built as a dedicated Nostr event signer. It lets users hold FROST key shares on their phone and sign Nostr events without any single device ever holding the full private key. It implements the NIP-55 Android signer protocol (intents and content provider) and NIP-46 remote signing (bunker service), so compatible Nostr clients can request signatures directly. Key capabilities described in the README: - FROST threshold signing with configurable schemes such as 2-of-3 and 3-of-5. - NIP-55 Android signer protocol and NIP-46 remote signing. - Import and export of FROST shares via QR code or text, plus import of existing nsec keys. - Multiple account support with per-app signing permissions and policies. - Signing history and audit log. - Biometric and PIN authentication, with hardware-backed key storage via Android Keystore. - A kill switch for emergency key deletion. - SOCKS proxy support (Tor) and certificate pinning for relay connections. - NIP-44 encryption and decryption, plus NIP-04 operations. - Background signing with configurable rate limits. - Encrypted backup and restore. - Bitcoin wallet descriptor coordination for multisig. Supported NIP-55 operations listed include get_public_key, sign_event, nip04_encrypt, nip04_decrypt, nip44_encrypt, nip44_decrypt and decrypt_zap_event. Distribution is offered through Zapstore, Obtainium, GitHub releases and F-Droid. Building requires pinned toolchain versions: Rust 1.89.0, Android NDK 29.0.14206865, cargo-ndk 4.1.2 and JDK 17; the build fails fast on mismatches. Gradle rebuilds the Rust libraries automatically when sources change. A script allows refreshing Kotlin bindings from a host build without the NDK for typechecking, though such builds fail at runtime with UnsatisfiedLinkError. Another script verifies pinned versions across build scripts and CI workflows. Contributions are accepted via GitHub issues and pull requests. Translations are welcome, with seed locales for Brazilian Portuguese, Spanish, German and Japanese; a managed translation platform is noted as backlog, and CI checks for locale drift. The project is licensed under MIT.