Skip to content
Alex9001Public

About

Native offline desktop viewer for authenticator exports, built with C++20 and Qt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Aeris satin blue A-Shield logo

Aeris

Your authenticator codes, at home on your desktop.
A native, offline viewer for phone authenticator exports.
Your phone remains the source of truth.

C++20 Qt 6 Widgets Offline by design MIT license

Quick start · Supported formats · Interface · Build · Releases · Issues

Aeris in Light theme and Compact layout, with a native titlebar and synthetic user@example.com accounts

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.

Find it. Copy it. Get back to work.

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

Video demo

Watch the 14-second demo: the offline viewer, encrypted local collection, and native code-copying interface.

Video provenance and music license.

Download

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.zst

Pacman 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.

Download the Linux AppImage →

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.

Quick start

  1. Open Aeris. Unlock your system keyring if prompted.
  2. Import your export. Choose Import… or drop export files onto the window. Select all parts of a Google multipart export together.
  3. Review and confirm. Check the account count and any excluded token types. Each import replaces the entire Aeris collection.
  4. 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.

Make it feel like your desktop

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 · CardsOcean · Cards
Aeris Dark theme in Cards layout with native titlebar and synthetic user@example.com accounts Aeris Ocean theme in Cards layout with native titlebar and synthetic user@example.com accounts
Violet · CardsForest · Compact
Aeris Violet theme in Cards layout with native titlebar and synthetic user@example.com accounts Aeris Forest theme in Compact layout with native titlebar and synthetic user@example.com accounts
Paper · CompactRose · List
Aeris Paper theme in Compact layout with native titlebar and synthetic user@example.com accounts Aeris Rose theme in List layout with native titlebar and synthetic user@example.com accounts
Midnight · ListSystem · List
Aeris Midnight theme in List layout with native titlebar and synthetic user@example.com accounts Aeris System theme in List layout with native titlebar and synthetic user@example.com accounts

Explore the interface →

Your codes stay local

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.

Storage design and recovery →

Formats

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.

Build from source

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/aeris

On 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.

Documentation and development

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.

License

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.

CYBER FRACTURE · Source · Releases

About

Native offline desktop viewer for authenticator exports, built with C++20 and Qt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages