#password-manager #cryptography #gui

app forgot-my-password

A simple and secure password manager written in rust

25 stable releases

Uses new Rust 2024

1.5.3 May 23, 2026
1.5.2 Mar 28, 2026
1.5.1 Oct 23, 2025
1.5.0 Sep 14, 2025
1.2.22 Jan 28, 2025

#75 in #password-manager

GPL-3.0 license

305KB
6.5K SLoC

FMP (Forgot My Password)

Latest Version GPLv3 License

A password manager written in memory-safe Rust.

Note on usage of AI:

AI was not used for any sensitive backend components. It was somewhat used for GUI stuff but no issues are found. Some documentation was written by AI, but was rewording my writing - I have dyslexia and my writing is sometimes odd. All AI items have been check and edited to the same extent as my own. All AI code is being reworked in the GUI now I have a better understanding of the GTK library.

Table of Contents

Requirements

  • Rust toolchain and Cargo
  • GPGME and libgpg-error
  • GTK4 and libadwaita (for the GUI)

See distribution-specific instructions for OS-specific setup instructions.

Quickstart

  1. Clone the repository

    git clone https://codeberg.org/lwilko/fmp.git
    cd fmp
    
  2. Build and install

    Makefile:

       make install-user
    
       #OR
    
       sudo make install-system
    

    Manual:

    cargo build --release
    cargo install --path .
    export PATH=$PATH:~/.cargo/bin/
    

Usage

  • Launch the app with fmp (or cargo run --release during development).
  • Create a new vault or open an existing one.
  • Add and manage accounts, generate passwords, and make backups via the GUI.

Testing

Run all tests:

cargo test

Run specific tests:

# Filter by module or test name (unit tests live under src/)
cargo test vault_operations_tests
cargo test crypto_tests

# Run a single test with full path
cargo test tests::crypto_tests::test_secure_overwrite_data

Note:

  • Update src/tests/recipient.txt to match a valid recipient in your GPG keyring.

Troubleshooting

  • fmp command not found after installation
    • Ensure ~/.cargo/bin is in your PATH:
      export PATH=$PATH:~/.cargo/bin/
      
  • GPG key not found in your keyring
    • Ensure the recipient email matches a key in your keyring:
      gpg --list-keys
      

Contributing

Contributions are welcome! Please:

  1. Fork this repository.
  2. Create a new branch for your feature or bug fix.
  3. Submit a pull request with a clear description of your changes.

License

This project is licensed under the GPLv3 License. See the LICENSE file for details.

Dependencies

~18–60MB
~1M SLoC