Keep is a FROST threshold signing app and dedicated Nostr event signer for Android. It allows users to hold FROST key shares on their phone and sign Nostr events without any single device ever holding the full private key. Keep implements the NIP-55 Android Signer protocol and NIP-46 remote signing, so any compatible Nostr client can request signatures directly.
Like Amber, Keep serves as a dedicated Nostr event signer that keeps private key material segregated from client apps. Both implement NIP-55 and NIP-46 with per-app permissions, background signing, and multiple account support. Keep goes further by splitting keys into FROST threshold shares (2-of-3, 3-of-5, etc.) so that no single device ever holds the complete private key.
- FROST threshold signing (2-of-3, 3-of-5, etc.)
- NIP-55 Android Signer protocol (intents + content provider)
- NIP-46 remote signing (bunker service)
- Import and export FROST shares via QR code or text
- Import existing nsec keys
- Multiple account support
- Per-app signing permissions and policies
- Signing history and audit log
- Biometric and PIN authentication
- Hardware-backed key storage (Android Keystore)
- Kill switch for emergency key deletion
- SOCKS proxy support (Tor)
- NIP-44 encryption and decryption
- Background signing with configurable rate limits
- Certificate pinning for relay connections
Any Nostr client that supports NIP-55 or NIP-46 can use Keep for signing.
Supported NIP-55 operations: get_public_key, sign_event, nip04_encrypt, nip04_decrypt, nip44_encrypt, nip44_decrypt, decrypt_zap_event.
./gradlew assembleDebugAPK output: app/build/outputs/apk/debug/app-debug.apk
To rebuild the native libraries from source:
# Requirements: Rust 1.85+, Android NDK r29, cargo-ndk
# Clone keep workspace
git clone https://github.com/privkeyio/keep ../keep
# Rebuild native libs and bindings
KEEP_REPO=../keep ./build-rust.shGitHub issues and pull requests are welcome.
By contributing to this repository, you agree to license your work under the AGPL-3.0 license. Any work contributed where you are not the original author must contain its license header with the original author(s) and source.
AGPL-3.0-or-later