Local-first password vault — TUI | AES-128-CBC (Fernet) | PBKDF2-HMAC-SHA256 | OS biometric gate
Your bunkers. Your machine. Your rules.
IronDome encrypts your vault locally with AES-128-CBC (Fernet) and derives keys with PBKDF2-HMAC-SHA256 at 600,000 iterations. Full terminal UI. Unlock with Touch ID, Windows Hello, or fprintd. There is no account, no sync, and no telemetry: the package makes no network calls anywhere, verified by a test that fails the build if any module under
password_manager/so much as imports a networking library. Nothing leaves your device.
Quick Start
pip install IronDome
irondome
Two commands. Full TUI launches — splash screen, biometric auth, dashboard, vault browser, password generator.
First-time setup:
irondome-cli create bunker
irondome
Security
- AES-128-CBC encryption via Fernet
- PBKDF2-HMAC-SHA256 with 600,000 iterations (OWASP 2023)
- No network calls anywhere in the package — verified by a test that fails if any module imports
socket/http/urllib/requests - Master password never stored — only a PBKDF2 digest is written to disk, and there is no server to send it to
- Machine-scoped metadata — the stored master-user record is wrapped with a key derived from
/etc/machine-id; the vault itself is protected by your master password - Biometric gate — an OS authentication gate (PAM / Touch ID / Windows Hello) in front of the keyring-stored vault key. It is an access gate, not key material
- Two-factor mode — biometric gate + master password
- 24-character recovery code (XXXX-XXXX-XXXX-XXXX-XXXX-XXXX format)
- Adaptive lockout — progressive brute-force protection
- 30-minute sessions with auto-lock
Terminal UI
IronDome's primary interface is a full Terminal UI built with Textual:
- 12 screens — splash, login, dashboard, vault, detail, generator, save, settings, backup, status, help, confirm
- Keyboard-driven — arrows, Tab, Enter, Esc, hotkeys for every action
- Command palette — Ctrl+P fuzzy search across all commands
- Themed TUI — dark theme, dome green, amber warnings, red threats
- Security controls — masked input, alternate screen buffer, clipboard auto-clear (30s), signal handlers,
mlockallswap avoidance (TUI only, best-effort)
CLI Mode
For scripts and automation:
irondome-cli create bunker # First-time setup
irondome-cli open airspace # Authenticate (30-min session)
bunker create # Quick-create password entry
bunker open # List all entries
bunker open github # Search by name
bunker fortify # Encrypted backup
irondome-cli close airspace # Lock everything
Cross-Platform
| Platform | Biometric | Status |
|---|---|---|
| macOS | Touch ID | Full support |
| Windows | Windows Hello | Full support |
| Linux | fprintd (fingerprint) | Full support |
| SSH | Password fallback | Works |
IronDome vs Cloud Managers
| IronDome | Cloud Managers | |
|---|---|---|
| Data | Your machine only | Their servers |
| Network | No network calls anywhere in the package, verified by test | Always |
| No server | Master password never written to disk; nothing to send it to | "Trust us" |
| Machine-scoped metadata | Master-user record wrapped with a machine-id key | No |
| Open source | GPL-3.0 | Rarely |
| Cost | Free | $3-5/month |
What IronDome does not do
- AES-128. Fernet splits its 32-byte key into a 16-byte AES key and a 16-byte HMAC key, so the block cipher runs with a 128-bit key, not a 256-bit one.
- The biometric check is not cryptographic. The key sits in the OS keyring under your login credentials, not under your fingerprint.
- No hardware security module. Machine scoping reads
/etc/machine-id(mode0444, world-readable). No TPM, no Secure Enclave. nukecannot defeat an SSD controller. One random-overwrite pass,fsync, then unlink. On SSDs, CoW filesystems, or journaled ext4 the original blocks may survive.- No memory zeroing of the key. It is held as an immutable Python
bytesinside aFernetobject. - No independent third-party audit. The project ships its own
pytestsuite, gated in CI before publish, but no external review. Treat this as beta software.
Links
License
GPL-3.0 — free to use, modify, distribute. Derivatives must remain open source.
Created by King Hippopotamus
No servers. No cloud. No compromise.
Metadata
Release files for IronDome 3.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| irondome-3.2.2.tar.gz | 93.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| irondome-3.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 193.3 kB
Release files / irondome-3.2.2.tar.gz
| Download URL | irondome-3.2.2.tar.gz |
|---|---|
| Size | 93.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6750a061c0616559e82459d0152276022031c64f92a06a0e2b422f35404e78a0
|
|
BLAKE2b-256 checksum How to use checksums |
2fc5953a76523e3a8ea53196fb9928a15f474dd7724645e80a27bac2b9ba4c0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / irondome-3.2.2-py3-none-any.whl
| Download URL | irondome-3.2.2-py3-none-any.whl |
|---|---|
| Size | 100.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f892353e44634f0bbdcac7c8d027ac64beb0e830f48ff8b7a1e6d30f7b5d5422
|
|
BLAKE2b-256 checksum How to use checksums |
440d7414cb7cdd613a92887b034c29c95630d6f1a241adcc68e49af71d1775cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for IronDome 3.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.