Skip to content

Latest commit

 

History

52 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Keysoft — secure, private, offline password manager

Keysoft

A private, offline-first password manager for Android.
No account, no ads, no cloud vault, and no tracking SDKs.

CI status Latest release Apache 2.0 license

Get it on Google Play

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.

Why Keysoft

  • 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.

Product Tour

The screenshots below are taken from the production Android listing on Google Play.

Add a password in Keysoft Generate a strong password in Keysoft Store secure notes in Keysoft Export an encrypted Keysoft backup
Quick entry Password generator Secure notes Encrypted backups

Security Model

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-PW1 format 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.

Current Release

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.

FAQ

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.

Developer Quick Start

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 start

Useful commands:

bun run android
bun run start:tunnel
bun run web
bun run verify
bun run deps:audit

Use 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.

Project Structure

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

Documentation

Contributing

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.

Data Ownership and Support

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.

License and Attribution

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.

About

Private, offline-first password manager for Android. No accounts, ads, tracking, or cloud vault.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages