Malachi for Android
Malachi is available as an APK file right here – no app store, no account. Please verify the file before installing; it takes a minute.
Current version
- Version
- 1.0.0 (version code 1)
- Released
- 20 October 2026
- Requirement
- Android 7.0 or later
- File
- malachi-1.0.0-arm64-v8a.apk (83.2 MB)
- SHA-256
083635e1e24cb1f452bd13cb155fac2ca27748246e7312a34333e29bfadc5db2
Also works over Tor: open p75bcu4mna6lik35occlsoeoyke46zyikfuq2ugu3wdvu44e5c4wanyd.onion in the Tor Browser.
What's new?
Malachi 1.0 – the first version.
Malachi is a private messenger for Android without a server: messages go straight from device to device, end-to-end and post-quantum encrypted, via Tor when needed. No account, no phone number, no contact list on our side.
Free:
- Chats, groups with pictures and voice messages, calls, and joining group calls
- Pair contacts via QR code or by matching phone numbers over Tor (the numbers are not stored anywhere)
- App PIN and fingerprint, Tor with bridges, disappearing messages, view-once media, Secret Chat and safety code
- Open and decrypt Seal messages from other messengers
- Copy messages safely (removed from the clipboard after 60 seconds)
- Available in 18 languages, including Arabic and Persian
Full version (one-time, no subscription):
- Emergency PIN, wipe after 5 wrong PINs and remote wipe
- Maximum anonymity: everything over Tor only
- Seal mode: send encrypted messages over WhatsApp and others
- Start group calls
- 21 design themes including a matching app icon
- Screen protection can be switched off, for example for your own screenshots (Secret Chat and Seal always stay protected)
Updates come signed directly in the app (over Tor) or from this website.
Which file do I need?
There is a separate, smaller file for each processor type. Almost all phones from about 2017 onwards need "arm64-v8a". If the file won't install ("App not installed"), take "armeabi-v7a" (older 32-bit devices). "x86_64" is only for emulators and some Chromebooks.
| Processor | File | Size | SHA-256 |
|---|---|---|---|
| arm64-v8a | malachi-1.0.0-arm64-v8a.apk | 83.2 MB | 083635e1e24cb1f452bd13cb155fac2ca27748246e7312a34333e29bfadc5db2 |
| armeabi-v7a | malachi-1.0.0-armeabi-v7a.apk | 69.8 MB | 0ab10f842ab5d2dbd565051dee1cea3f9e7594956a27f00e44acc45199467d0c |
| x86_64 | malachi-1.0.0-x86_64.apk | 89.1 MB | 5e498a798143c3db4828693fc57135ecfc3e81a575343ed435b173f662a82a64 |
Verify the file
This is how you make sure the file is complete and really comes from Malachi. To be safest, also compare the values over a second route, for example once via the normal address and once via the onion address.
1. Compare the checksum (SHA-256)
The output must match the value in the table above exactly. Upper and lower case don't matter.
- Linux:
sha256sum malachi-1.0.0-arm64-v8a.apk - macOS:
shasum -a 256 malachi-1.0.0-arm64-v8a.apk - Windows (Command Prompt):
certutil -hashfile malachi-1.0.0-arm64-v8a.apk SHA256 - Windows (PowerShell):
Get-FileHash .\malachi-1.0.0-arm64-v8a.apk -Algorithm SHA256
All checksums are also listed in the file SHA256SUMS. On Linux, sha256sum -c --ignore-missing SHA256SUMS checks all downloaded files at once.
2. Compare the signing certificate
Every Malachi APK is signed with the same key. Its certificate has this SHA-256 fingerprint:
fbd5d54b7e34af9c1b21910ba52049ad267e22d48140f3ac6a6c740846a9aec0
With apksigner from the Android SDK Build-Tools (on Windows apksigner.bat):
apksigner verify --print-certs malachi-1.0.0-arm64-v8a.apk
The line Signer #1 certificate SHA-256 digest: must show exactly the value above. keytool -printcert -jarfile malachi-1.0.0-arm64-v8a.apk shows the same value written with colons:
FB:D5:D5:4B:7E:34:AF:9C:1B:21:91:0B:A5:20:49:AD:26:7E:22:D4:81:40:F3:AC:6A:6C:74:08:46:A9:AE:C0
3. Advanced: signed version list
The file updates/manifest.json lists version, size and SHA-256 of every file. It is signed with an Ed25519 key that is never stored on this server (manifest.json.sig, Base64). The public key is ETAIGUc3F9MDfCh79kCJk4FhnxSLifZqdBwqA6WZ0OM (Base64url, 32 bytes; as a file: update-schluessel.pem). Verify with OpenSSL 3:
base64 -d manifest.json.sig > manifest.sig.bin
openssl pkeyutl -verify -pubin -inkey update-schluessel.pem -rawin -in manifest.json -sigfile manifest.sig.bin
Expected output: Signature Verified Successfully. Then compare the SHA-256 of the APK with the value in manifest.json.
Install
- Download the APK on your phone (in the browser or in Tor Browser for Android).
- Open the file. Android asks whether the app you open it with (browser or file manager) may "install unknown apps". Allow this for that one app only.
- Tap "Install".
- Afterwards, revoke the permission from step 2 in the Android settings.
Updates: You simply install a new version over the old one; your chats are kept. Android only accepts an update if it is signed with the same key as the installed app. A fake APK with a different key therefore cannot replace your installed Malachi – Android stops with an error message. In that case, don't install anything; download the file from here again.