LOCAL-FIRST SECURITY
Your journal lives on your iPhone. Encrypted.
Kept was engineered from the ground up without an account database or cloud sync server. All writing is encrypted with SQLCipher on your device, with keys held in the iOS Keychain.
How it works
Most digital journals store entries on remote servers, exposing private thoughts to server breaches and employee access. Kept keeps your database local. The encryption key is generated on your hardware and never leaves your phone.
Technical implementation
SQLCipher Database Engine
Every entry, timestamp, observation, and full-text search index is stored inside an AES-256 encrypted SQLite database using the SQLCipher extension.
iOS Keychain Hardware Key
The 256-bit cryptographic key is stored in the iOS Keychain under AFTER_FIRST_UNLOCK protection. It is never included in backup files and cannot be derived from the application bundle.
Sandboxed Photo Storage
Photos you attach are stored as ordinary files inside the app's sandboxed container, protected by your iOS device passcode.
FTS5 Full-Text Search Index
High-speed full-text keyword search runs locally through SQLite FTS5 external-content tables with automatic database triggers.
Technical specifications
| Attribute | Specification |
|---|---|
| Database Engine | SQLCipher (SQLite) |
| Encryption Standard | AES-256 |
| Key Storage | iOS Keychain (AFTER_FIRST_UNLOCK) |
| Search Index | FTS5 External Content Tables |
| Biometric Protection | Face ID / Touch ID |
| Cloud Sync Database | None (Zero accounts) |
Frequently asked questions
What happens if I lose my phone?
The encrypted database is included in your encrypted iOS backup (iCloud or Finder). Restoring your device backup restores your journal.
Can the developers read my journal entries?
No. There is no remote account database, and the decryption key exists only in your device's Keychain.
Explore other architecture deep dives
Ready to start with Kept?