A single 1,694-line page holds the whole vault
Aegis puts its interface, encryption, generator, backups, and duress features in a 1,694-line index.html. A Python launcher opens it in Edge, Chrome, Brave, or Chromium, with the system browser as fallback. The documented design has no application server, account, cloud database, or telemetry endpoint.
Credentials live in localStorage as AES-256-GCM ciphertext. Argon2id uses 64 MiB and 3 iterations; without WebAssembly, new vaults fall back to PBKDF2-SHA256 at 600,000 iterations. Losing the master password means losing access. Readable source cannot replace cryptographic review, adversarial tests, or field use.
Sentinel lets browser-storage access recover the master password
The optional Sentinel feature uses a 6-digit TOTP code for convenient unlocks. Its implementation stores the TOTP secret, a salt, and an encrypted master password together in localStorage. The wrapper key is derived from that stored TOTP secret, while the entered code only passes a software check. Anyone who can read the Sentinel record can derive the wrapper key, decrypt the master password, and open the main vault without supplying the code.
This is not our inference from a vague report. Open issue 1 was written by repository owner voyb on August 16, 2026, and describes that exact path. The README and interface call Sentinel a convenience lock rather than a second security wall. Clear disclosure is better than hiding the tradeoff, though the feature still weakens the normal promise that the master password is never stored. Users should leave Sentinel disabled, especially on a machine with browser extensions or other local code.
What happened when we ran it
Our sandbox installed Aegis Vault in 19 seconds, adding 35 packages and occupying 37 MB. The build completed in 9 seconds. Pip-audit reported 0 known vulnerabilities in the installed Python packages. We used commit 9367b24 inside a fresh Debian container with 3 CPUs, 8 GB of RAM, no secrets, and no privileged access. The repository itself measured 16 files, about 177 detected source lines, and 1.5 MB checked out.
There was no test script or test target, so our harness skipped tests. The repository also had no tests directory and only 1 CI workflow file. A successful PyInstaller build shows that packaging completed; it does not exercise vault creation, incorrect passwords, backup imports, corruption, WebAssembly fallback, duress separation, clipboard clearing, or Sentinel attacks. For a password manager, those are core behaviors rather than optional polish.
Zero automated tests leaves encryption workflows unverified
The code uses established browser primitives instead of inventing a cipher. AES-GCM provides authenticated encryption, crypto.getRandomValues supplies random bytes, and Argon2id is vendored through hash-wasm. Those choices avoid obvious design mistakes. The README also states that no third party has formally audited the cryptography. Standard primitives can still be assembled incorrectly, and application bugs around state, backup, fallback, or unlock flows can expose secrets without breaking AES itself.
Our run supplied 0 test results because there was no target. Tests should cover altered ciphertext, damaged metadata, derivation changes, wrong imports, lock cleanup, and decoy separation. Sentinel needs redesign. The pip-audit result only says the 35 installed Python packages had no known advisory in that scan.
Manual backups are the only recovery path
Aegis has no automatic sync. Moving a vault means exporting .vlt or copying its folder. The README offers no forgotten-password recovery, and the newest manual backup is all that survives a lost device. One hardware failure can therefore become permanent credential loss.
The app includes a duress password that opens a separately encrypted decoy vault. That feature does not alter the main ciphertext, according to the code and README. It also creates more state to test and preserve. With no tests and a repository created on August 15, 2026, users would be betting on a very new implementation for backup compatibility and separation. A mature KeePass database has a far larger ecosystem around the same offline requirement.
One-line installers trade inspection for speed
The macOS and Linux command pipes install.sh from GitHub into a shell. That script downloads the latest platform archive into a temporary directory, extracts it under ~/Aegis, and launches it. The Windows script follows the same broad pattern. Neither script verifies a published checksum or signature before execution. GitHub Actions builds release binaries from tags, which gives a public build log but does not authenticate the downloaded asset on the user's machine.
Building locally is short: install PyInstaller and Pillow, then run the supplied spec. Our version needed 35 packages and 37 MB. Source builders can also run aegis_launcher.py directly. For a vault, local building is worth the extra step, followed by inspection of index.html and the vendored JavaScript. Anyone unwilling to do that should choose a manager with signed packages, security documentation backed by outside audits, and established distribution channels.
A one-day history is too short for primary secrets
The repository was created on August 15, 2026, published v0.4.1 that day, and recorded its last push on August 16. GitHub showed 88 stars and 1 open issue, the owner-authored Sentinel disclosure. Rapid early interest does not establish how the vault handles years of browser changes, damaged storage, migrations, or hostile review. The MIT license and compact source invite that work, but it has barely started.
Aegis documents its local storage and threat limits clearly. Evidence remains thin: our build passed in 9 seconds, while 0 automated tests and 0 formal audits stood behind the security paths. Evaluate it with disposable credentials. Keep important passwords in a manager with deeper review history.

