Data ownership

Your journal belongs to you. Provably.

Every entry is encrypted on your phone with a key only you hold. You can export everything, import it anywhere, and read it without Maat — with a small open tool we publish. This page explains exactly how.

Encrypted before it leaves your phone

Each entry is encrypted with AES-256-GCM using a key derived from your 12-word recovery phrase. Our servers only ever store ciphertext. We cannot read your journal, and neither can anyone who breaches us.

Export everything, any time

One tap creates a complete backup: all entries as JSON plus your original voice recordings, bundled as a zip. Encrypted with your recovery phrase by default — or unencrypted if you want plain files.

Import and restore, without loss

Move to a new phone or bring old entries back. Import merges: entries you already have are skipped, deleted or unreadable ones are restored, audio files are put back where they belong.

Readable without Maat

If Maat disappeared tomorrow, your backup would still open. We publish a small, readable Python script that decrypts any export with your recovery phrase. No account, no server, no us.

How it works

From your voice to a file you control

  1. Your recovery phrase is the key

    When you set up Maat you receive 12 words (a standard BIP39 phrase). They generate your master key on the device. We never see the phrase — which also means we cannot reset it. Keep it somewhere safe.

  2. Every entry is sealed individually

    Text, mood note and metadata of each entry are encrypted with AES-256-GCM. Only the date and mood rating stay readable so the app can search and show trends quickly.

  3. Sync stores ciphertext only

    Optional cloud sync carries the encrypted entries to your other devices. The server never holds a key. Transcription runs on your recording once and the audio is not retained by the transcription service.

  4. Export, import, or leave

    Backup & Import lives in the app menu. Export to Files, iCloud Drive, a USB folder or any share target. Import from any of them. Deleting your account removes every row we hold.

The decryption tool

Open your export on any computer

A single Python file, about as long as this page, with its source in plain view. Put your recovery phrase in a local .env file, point it at your export, and get a readable JSON or text file.

./install.sh
echo 'RECOVERY_PHRASE="your 12 words here"' > .env
python maat_decrypt.py --input your_export.json --format text

Technical summary

Recovery phrase
12-word BIP39 mnemonic
Key derivation
BIP39 seed → HKDF-SHA256
Encryption
AES-256-GCM per entry
Ciphertext format
Base64(IV + ciphertext + tag)
Backup bundle
backup.json + audio files + manifest (zip)
Export modes
Encrypted (default) or unencrypted

Plain answers

Questions people ask before trusting us

Can Maat staff read my entries?

No. Entries are encrypted on your device and we never receive the key. Support can see that an account exists and how many entries it has — not what is in them.

What if I lose my recovery phrase?

Encrypted entries that are not on a signed-in device become unreadable, and we cannot recover them — that is the price of real encryption. The app reminds you to store the phrase, and unencrypted exports are an option if you prefer convenience over secrecy.

Does the voice recording leave my phone?

For transcription, yes — once, over an encrypted connection, to produce the text. The transcription provider does not keep the audio. The recording itself stays in your app storage and is part of your backup.

How do I delete everything?

Account → Delete account in the app, or the request form linked below. Server rows are removed; your local data is removed when you uninstall. Take an export first if you want to keep a copy.

Privacy policy · Delete your account · Decryption tool

Start today

A private journal you can take with you.