Your authenticator codes, at home on your desktop.
A native, offline viewer for phone authenticator exports.
Your phone remains the source of truth.
Quick start · Supported formats · Interface · Build · Releases · Issues
Light theme · Compact layout · Native Linux titlebar. Captured at 2× display scale; click an image for full resolution. All accounts use user@example.com and synthetic test secrets.
Bring an authenticator export to your desktop and keep the code you need within reach. Search by service or account, recognize familiar logos, and copy with a click. Aeris works offline, with an encrypted collection protected by your operating system's keyring.
| At your fingertips | In Aeris |
|---|---|
| Fast code access | Search accounts, click to copy, or use Enter and Ctrl/Cmd+C |
| Familiar services | 2,964 bundled service logos, with colored badges for unknown issuers |
| Your preferred order | Drag and drop accounts; order persists across restarts |
| Room to breathe | List, Compact, and responsive Cards layouts |
| A comfortable desktop | Nine appearance choices, from Midnight and Ocean to Paper |
| Clear feedback | Live countdowns, an inline copied checkmark, and clipboard clearing after 30 seconds |
| Local storage | One encrypted collection secured by the system keyring; source exports remain untouched |
Watch the 14-second demo: the offline viewer, encrypted local collection, and native code-copying interface.
Video provenance and music license.
Aeris v0.1.0 provides locally built Artix x86-64 native pacman and Linux x86-64 AppImage packages. The release includes checksums, SPDX SBOMs, the matching source archive, and local build records.
Artix Linux: download the native package, then install it:
sudo pacman -U ./aeris-0.1.0-2-x86_64.pkg.tar.zstPacman installs any missing runtime libraries from standard Artix repositories. No compilation, build tools, AUR helper, or AppImage is required. Your existing KWallet can store Aeris credentials. This package targets an up-to-date Artix x86-64 installation; keep the system fully updated. It is a release download, not a package in Artix's official repositories.
Make it executable with chmod +x aeris_linux_amd64.AppImage, then open it. If FUSE is unavailable, run APPIMAGE_EXTRACT_AND_RUN=1 ./aeris_linux_amd64.AppImage. The baseline is Ubuntu 24.04 or compatible newer Linux systems; a working system keyring is required. Windows, macOS, and ARM packages await native builds and verification.
- Open Aeris. Unlock your system keyring if prompted.
- Import your export. Choose Import… or drop export files onto the window. Select all parts of a Google multipart export together.
- Review and confirm. Check the account count and any excluded token types. Each import replaces the entire Aeris collection.
- Copy a code. Search by issuer or account, then click a row or press Enter. Drag accounts to arrange them in your preferred order.
Use the layout buttons or Ctrl/Cmd+1–3 to switch views. The Theme menu remembers your appearance choice. Clipboard clearing leaves content copied by another application alone.
Choose System, Light, Dark, Midnight, Ocean, Forest, Violet, Rose, or Paper. All three layouts share the same accounts, service logos, countdowns, and copy feedback.
| Dark · Cards | Ocean · Cards |
|---|---|
![]() |
![]() |
| Violet · Cards | Forest · Compact |
![]() |
![]() |
| Paper · Compact | Rose · List |
![]() |
![]() |
| Midnight · List | System · List |
![]() |
![]() |
Aeris reads exports from your phone authenticator and stores one encrypted snapshot. It does not synchronize changes back to your phone. Service artwork ships with the application and needs no network requests.
A working Secret Service or KWallet is required on Linux; there is no plaintext key fallback. Delete all… removes Aeris's imported snapshot and saved credentials after confirmation. Your original export files are never modified. Closing the window exits the app; an active save finishes before closing.
| Source | Exports |
|---|---|
| Aegis | Plain and password-encrypted JSON |
| Google Authenticator | Migration links in text files; PNG/JPEG migration screenshots; complete multipart batches |
| Raivo OTP | JSON and password-protected ZIP |
| 2FAS | Plain and password-encrypted .2fas, schemas 1–4 |
| Ente Auth | Plain OTP-link text and password-encrypted exports |
| Bitwarden Authenticator | Android/iOS JSON and CSV |
| Proton Authenticator | Plain and password-encrypted JSON v1 |
| andOTP | Plain JSON; current and legacy password-encrypted backups |
| Other authenticators | Text files containing otpauth:// export links |
TOTP supports SHA-1, SHA-256 and SHA-512, 1–10 digits, and source periods of 1–86400 seconds. Steam codes are supported. HOTP and other token types are named in the exclusion review; importing a supported subset requires confirmation. Failed passwords, invalid supported entries, unknown versions, incomplete Google batches and empty imports keep the existing collection.
Select every file in a Google multipart export together. Ordinary enrollment QR images, password-manager vaults, service-connected cloud backups and PGP-encrypted andOTP exports are outside this release. See format details and upstream references for limits and known export quirks.
C++20, CMake 3.24+, Ninja, Qt 6.4+ Widgets, OpenSSL 3, libsodium, libzip, ZXing-C++, protobuf-lite/protoc and QtKeychain for Qt 6 are required.
Ubuntu 24.04:
sudo apt install cmake ninja-build pkg-config g++ qt6-base-dev qtkeychain-qt6-dev qt6-wayland \
libssl-dev libsodium-dev libzip-dev libzxing-dev libprotobuf-dev protobuf-compiler
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure
./build/aerisOn Arch/Artix, the library packages are qt6-base qtkeychain-qt6 qt6-wayland openssl libsodium libzip zxing-cpp protobuf. A working Secret Service or KWallet is required to save or reopen imported accounts; there is no plaintext key fallback. Unlock the keyring and select Retry if unavailable.
Release instructions cover Windows/macOS builds, bundled dependencies, AppImages, per-user NSIS installers, portable ZIPs, universal DMGs and the AUR source recipe. Packages are initially unsigned by a publisher. Linux amd64 has been built and smoke-tested locally; native Windows/macOS acceptance is still pending. See the release page for any published packages.
| Guide | Covers |
|---|---|
| Interface | Layouts, themes, service logos, copying, and account order |
| Import formats | Supported exports, limits, and upstream references |
| Architecture | Models, encrypted storage, keyring ownership, and recovery |
| Verification | Tests, measured results, and platform acceptance |
| Releases and packaging | Dependencies, AppImages, installers, archives, and release checks |
| Application artwork | The A-Shield master and platform icon generation |
Tests use synthetic secrets only. Regenerate fixtures with python scripts/fixtures.py after installing scripts/requirements.txt in a virtual environment. scripts/lint.py enforces Lizard 1.17.31 cyclomatic complexity ≤10 and clang-tidy cognitive complexity ≤15 for maintained C++ functions. The optional CI workflow includes ASan/UBSan and libFuzzer. GitHub Actions are disabled to conserve quota; workflows must only be enabled and run on explicit request.
MIT · © 2026 Aleksandr Oreshkin · CYBER FRACTURE
See LICENSE and third-party notices. Bundled service logos and the demo soundtrack retain their respective licenses and owners' rights.








