A private, offline-first password manager for Android.
No account, no ads, no cloud vault, and no tracking SDKs.
Google Play · Privacy · Security · Latest release
Keysoft keeps passwords and secure notes encrypted on the device and works without a backend service. Network access is limited to platform services such as Expo/EAS update delivery; vault contents, PINs, master passwords, and encryption keys are never used for sync or remote storage.
- Private by default: no registration, cloud vault, advertising, or analytics SDK.
- Useful offline: create, search, organize, and copy credentials without connectivity.
- Encrypted locally: authenticated vault encryption with tamper detection.
- Fast unlock: optional biometric access backed by device-authenticated SecureStore.
- User-owned backups: password-protected import/export without a remote backup account.
- Practical security tools: secure notes, password generation, vault-health checks, clipboard auto-clear, local reminders, and optional screenshot protection.
- Accessible and responsive: Italian and English UI, light/dark themes, reduced-motion support, and phone/tablet layouts.
The screenshots below are taken from the production Android listing on Google Play.
![]() |
![]() |
![]() |
![]() |
| Quick entry | Password generator | Secure notes | Encrypted backups |
Keysoft uses the versioned KS1 envelope for vault data:
- AES-256-CBC encryption with HMAC-SHA256 integrity verification.
- Argon2id key derivation in native builds; Expo Go uses the documented PBKDF2 development fallback.
- CSPRNG-backed salts, IVs, identifiers, and password generation.
- A 64-character derived vault key held in memory by default.
- Optional biometric unlock stores only the derived vault key in SecureStore with device authentication required.
- Encrypted backups use the versioned
KS1-PW1format and a user-provided passphrase.
Keysoft cannot recover a forgotten master PIN because it has no server-side recovery material. Read the security architecture for the full model, accepted trade-offs, and migration rules. Vulnerabilities should be reported privately through the security policy, never through a public issue.
Keysoft 3.3.1 is the current source release and Android production-build target. Google Play currently distributes Keysoft 3.3.0 (build 129) until the separately reviewed 3.3.1 app bundle is submitted. Android is the production platform. iPhone and iPad remain cloud-simulator compatibility targets and are not currently distributed through the App Store.
The source of truth for shipped changes is the changelog and the latest GitHub release. Exact verification results are recorded in dated release and audit documents instead of being duplicated here.
I forgot my master PIN. Can it be recovered?
No — not by anyone. Keysoft has no account, server, or recovery back door, so there is no server-side material that could reset or reveal the PIN, not even through support. The only way back into a locked vault is a previously exported encrypted backup plus the passphrase chosen at export; without the PIN or that backup pair, the vault is unrecoverable by design. See the security architecture, and keep backup files and their passphrase somewhere safe — you own both.
Biometric unlock stopped working. What now?
Unlock with your master PIN, then re-enable biometrics in Settings (“Biometric authentication”). Biometric unlock stores only the derived vault key in SecureStore behind device authentication, so adding or removing a fingerprint/face, changing the PIN, or a SecureStore failure disables it and falls back to PIN login — the vault itself is unaffected. Details live under “Biometric Authentication” and in the architecture notes.
How do I back up and restore my vault?
In Settings, “Export data” writes a versioned KS1-PW1 encrypted backup file
protected by a passphrase you choose, and “Import data” restores it: pick the
backup file, enter the export passphrase, and records merge by ID. Imports up
to 10 MiB are accepted and validated before anything is written. Keep both the
file and its passphrase — losing either is the same as losing the vault. The
format and validation rules are documented under
“Backup Encryption”.
Why does Expo Go behave differently from the installed app?
Expo Go builds use a documented PBKDF2 fallback because the native Argon2id module is unavailable there; production builds always derive keys with Argon2id. If a vault requires Argon2id and the native module is missing, login fails with a native-KDF diagnostic instead of silently accepting a weaker check. See the security architecture and the development guide.
Requirements:
- Bun 1.3.14.
- Node.js 22.13 or newer.
- Expo Go on an Android device for day-to-day development.
Install and start:
bun install
bun run startUseful commands:
bun run android
bun run start:tunnel
bun run web
bun run verify
bun run deps:auditUse bun install --frozen-lockfile for clean validation. Keysoft requires no local
environment variables or backend service. Never place credentials in EXPO_PUBLIC_*
variables: Expo embeds them in the client bundle.
Release artifacts are produced through EAS. EAS build, submission, tag, and release operations must only be started through the documented, explicitly approved release workflow. See the development guide and release guide.
src/
components/ Shared UI and interaction primitives
contexts/ Authentication, language, theme, and alert state
hooks/ Complex screen and settings workflows
locales/ Italian and English dictionaries
models/ TypeScript domain models
navigation/ Typed application navigation
screens/ User-facing application screens
services/ Auth, crypto, storage, import/export, and utilities
utils/ Shared platform and security helpers
- Architecture
- Security Architecture
- Security and Code Audit (2026-08-08)
- Development Guide
- Release Guide
- iOS Testing Without Apple Hardware
- Public Repository Checklist
- Keysoft 3.3.1 Release Notes
- Changelog
Contributions are welcome through focused pull requests. Read
CONTRIBUTING.md, keep security-sensitive changes small and testable,
and run bun run verify before requesting review.
Users own their local vault data and are responsible for retaining backup files and the master passphrase. Product assistance is available at keysoft@mikesoft.it; never include real vault contents, PINs, encryption keys, or backup payloads in support requests.
Keysoft development can be supported through GitHub Sponsors.
Keysoft is licensed under the Apache License 2.0. See COPYRIGHT.md, THIRD_PARTY_NOTICES.md, and TRADEMARKS.md for first-party scope, dependency notices, and trademark terms.



