Skip to content

Repository files navigation

Arcanum logo

Arcanum

VeraCrypt-compatible encrypted vault manager for Android

F-Droid version License Platform Min SDK Kotlin

Website · Docs · Privacy Policy


Screenshots

Vault screen Hidden volumes Calculator disguise Panic mode

Encrypted gallery Audio player File manager AMOLED theme


Features

Cryptography

  • 🔐 Full VeraCrypt container compatibility — open containers created on desktop (Windows, macOS, Linux)
  • 🔒 15 cipher configurations: AES, Serpent, Twofish, Camellia, Kuznyechik and all cascade combinations
  • #️⃣ 5 PRF algorithms: SHA-512, SHA-256, Whirlpool, Streebog, BLAKE2s-256
  • 🗝️ Keyfile support with pool-based derivation matching VeraCrypt's implementation, plus an in-app keyfile generator
  • 🔢 PIM (Personal Iterations Multiplier) support
  • 💽 FAT32, exFAT or ext4 inside the container — the ext4 driver is clean-room, no third-party filesystem code ships

Volume management

  • 💾 Back up and restore the volume header
  • 🔑 Change the password, PIM and keyfiles of an existing volume
  • 👓 Read-only mount
  • 🛡️ Hidden-volume protection while writing to the outer volume
  • 📦 Move a vault between app storage and external storage
  • 📊 Storage usage breakdown per vault
  • 🔌 Vaults on USB flash drives over OTG — ships in the next release

Privacy

  • 🫥 Hidden volumes for plausible deniability
  • 🧮 Calculator disguise — an optional second launcher entry, under its own name and icon, that opens a working calculator
  • 🚨 Panic PIN — instantly triggers a configurable wipe: each vault deleted, forgotten or kept, plus settings, history and biometric registrations
  • 📵 Screenshots and screen recording blocked at the OS level; switching that off asks for the PIN
  • 🔏 Auto-lock with configurable delay, unmounting every vault when it fires
  • ⏳ PIN lockout timed against a monotonic clock, so moving the system clock does not shorten it
  • 🌐 No network permission — INTERNET is never declared and ACCESS_NETWORK_STATE is stripped from the merged manifest

Vault access

  • 👆 Biometric unlock per vault (hardware-backed, CryptoObject-bound)
  • 🔓 Biometric unlock for the app itself, bound the same way
  • ⏱️ Per-vault auto-unmount on screen lock or background

In-vault browsing

  • 🖼️ Encrypted gallery with image and video viewer, fullscreen playback included
  • ✂️ Photo editor — crop, filters, adjustments and markup, written straight back into the vault
  • 🎵 Audio player with waveform and dominant-color theming, background playback with album art
  • 📂 Full file manager — create, rename, delete, copy, move, import files and whole folders, export back out
  • 🚪 Open a vault file in another app without decrypting it to storage
  • 📥 Send files into a vault straight from the Android share sheet
  • 🗂️ Vaults you opt in appear read-only in other apps' file pickers while mounted

UI

  • 🎨 AMOLED Glass theme — frosted-glass system bars and dialogs on pure black
  • 🌙 Dynamic Color (Material You) support
  • 🌍 14 languages, switchable inside the app
  • 🧭 Pick the tab a vault opens on
  • 📱 Edge-to-edge, Android 10+

Why Arcanum

Arcanum is built directly on VeraCrypt's cryptographic C sources — the same AES, XTS, PBKDF2, and cascade cipher implementations used in the desktop application. Containers created in Arcanum open in VeraCrypt on desktop and vice versa, with no conversion or export needed.

The PIN is protected with Argon2id (t=2, m=64 MB, p=1) rather than a simple hash. A panic PIN and a disguise mode are included as first-class features, not afterthoughts.


Installation

Get it on F-Droid Get it on GitHub

Build from source

git clone https://github.com/Esdex/Arcanum.git
cd Arcanum
./gradlew assembleFdroidRelease

Requirements:

  • No JDK setup — gradle/gradle-daemon-jvm.properties is tracked and pins the Gradle daemon to toolchain 21, so Gradle provisions Eclipse Adoptium 21 itself whatever the machine has. Do not set org.gradle.java.home: the project file is tracked, and a machine-specific path there breaks every clone and the F-Droid reproducible build.
  • Android NDK 28.2.13676358 — pinned by ndkVersion in app/build.gradle.kts; the SDK manager fetches it if it is missing. r28 is what aligns the native libraries to 16 KB pages.
  • CMake 3.22.1+
  • Min SDK 29 / Target SDK 36

The fdroid flavor builds with all features unlocked and no billing dependency. The playstore flavor includes Google Play Billing for the freemium tier.


Architecture

Layer Technology
UI Kotlin + Jetpack Compose (Material 3)
Navigation Navigation Compose, single-Activity
Crypto core C++/NDK — VeraCrypt's cipher sources via JNI bridge
File system FatFs (FAT32/exFAT) + a clean-room ext4 driver, inside containers
Local storage Room over SQLCipher (vault metadata), EncryptedSharedPreferences (Argon2id PIN hashes)
DI Hilt
Media ExoPlayer / Media3
Network None — INTERNET is not declared, and ACCESS_NETWORK_STATE is stripped from the merged manifest

With the disguise on, the launcher entry is a working calculator. Entering the correct PIN navigates to the authenticated vault home. A panic PIN triggers PanicManager, which executes a background wipe before navigation completes, equalizing the response time between both paths.

For a deeper dive, see the architecture section in the docs.


Security

The codebase has been reviewed using AI-assisted security analysis across multiple passes. Reports are published in /audits.

Reporting a vulnerability: Please use GitHub Security Advisories to report security issues privately. Do not open a public issue for vulnerabilities.


Contributing

Contributions are welcome for bug fixes and non-cryptographic improvements (UI, translations, documentation, gallery/file manager features). For changes touching the crypto layer, JNI bridge, PIN/panic logic, or any other security-critical path, please open an issue first to discuss the approach.

  • Run ./gradlew test and ./gradlew lint before submitting
  • Changes to the ext4 driver must pass tools/ext4/checkall.sh, which runs every native test stand and its mutation suite
  • Changes to the JNI error contract must keep ErrorCodeSyncTest green — it is what stops the Kotlin and C error codes drifting apart
  • Native code changes must build cleanly for both arm64-v8a and armeabi-v7a
  • The fdroid flavor must remain free of any Google Play Services dependency

Support

If Arcanum is useful to you, you can support its development:

GitHub Sponsors   Ko-fi

Crypto

Bitcoin

Bitcoin QR

bc1qk3pjpxfzafpc56924m8hnyewcgmutchwrg4v2p

Bitcoin Lightning

Lightning QR

esdex@cake.cash

Ethereum

Ethereum QR

0xDc4B00d937e4a9633d37d70dDF56E8370f44E0f8

Monero

Monero QR

83xHcG9NNzLhsYQ9QoMcX2EFCwEPT1rSSa4EPgDMG3PqQEXVZ1vgaTtAq9x4zETjkRRK7CiH6giHshTLUJHTD4mCRBbt42s

Solana / USDT / USDC

Solana QR

GJgu5VqmEfxfQQbRpp9CDcYUxjsjUPJpHsCfyjRQGGSX

License

Copyright 2026 Esdex

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

The cryptographic core (app/src/main/cpp/veracrypt/) incorporates source code from VeraCrypt, which is licensed under Apache 2.0. Nine of those files (Common/Xts.c, Xts.h, Pkcs5.c, Pkcs5.h, Crc.c, Crc.h, Tcdefs.h, Password.h, Endian.h) derive from TrueCrypt 7.1a and carry VeraCrypt's dual header: the derived portions are governed by the TrueCrypt License 3.0, the modifications and additions by Apache 2.0.


Acknowledgments

  • VeraCrypt — AES, Serpent, Twofish, Camellia, Kuznyechik, SHA-2, Whirlpool, Streebog, BLAKE2s, XTS mode implementation
  • FatFs — FAT32/exFAT file system layer for in-container access
  • ExoPlayer / Media3 — media playback inside encrypted containers
  • Haze — frosted-glass UI effects
  • BouncyCastle — Argon2id PIN key derivation
  • SQLCipher — encryption of the app's own database
  • Aire — image processing behind the photo editor
  • Coil — thumbnail and image loading
  • metadata-extractor — EXIF and media metadata
  • Lottie — animations
  • AboutLibraries — open-source license screen

About

VeraCrypt-compatible encrypted vault manager for Android

Resources

Security policy

Stars

137 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages