I’m the original author of the Rust keepass crate and wanted to prototype whether it would be possible to build a cross-platform password manager using that crate, Tauri, and Vue.js. It turns out, it is!

I have also come up with a way to compile the keepass crate to WebAssembly, so that I can additionally deploy the app to a web browser without any installation needed. See the architecture page in the docs how that is done.

The app is now working on 4 / 5 platforms that Tauri supports, with only iOS missing since I don’t own an iPhone nor an Apple Developer account.

The feature set is still pretty barebones, but the hard parts of decrypting databases, listing entries, etc. are all working, so I wanted to share the proof-of-concept to gather feedback and gauge interest in building this out further.

If you are an Android user and you would like help me release OmniKee on Google Play, please PM me an E-mail address associated with your Google account and I can add you to the closed test. I will need 12 testers signed up for a test for 14 days to get the permissions to fully release.

  • jeffhykin@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    18 hours ago

    I’d be happy to test on android, I’ll send a DM

    If you make it manage ssh keys on desktop (create new ssh key, give them nicknames, set default key, etc) I would be thrilled. I’ve attempted to make my own, with Tauri specifically, but I just have too many projects.

    I have also come up with a way to compile the keepass crate to WebAssembly

    This is exciting. My only request here is: whenever it works please release a standalone wasm file somewhere (anywhere). So many projects either require building the wasm themselves, or instead of releasing a .wasm, they release a JS wrapper that auto-loads the wasm/wasm-imports. Its a pain to try to extract the wasm out of those projects.

    • semi [he/him]@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      17 hours ago

      This is exciting. My only request here is: whenever it works please release a standalone wasm file somewhere (anywhere). So many projects either require building the wasm themselves, or instead of releasing a .wasm, they release a JS wrapper that auto-loads the wasm/wasm-imports. Its a pain to try to extract the wasm out of those projects.

      What I am doing is to create a omnikee-lib crate within the project that will get compiled to WASM, not just plain keepass, because I need additional adapter methods to interface with the web part of the application. I don’t have the bandwidth to turn keepass into a general WASM package that could be npm installed at the moment. As I am dogfooding the crate, I might get to a point where I know what a good JS interface for it would be, though, and the omnikee-lib crate could become the official WASM interface for keepass.

    • semi [he/him]@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      10 hours ago

      sweet! I sent you the invite.

      Currently, SSH key management is not supported, but it would probably be possible to implement the SSH agent protocol in the Rust part of the application. I see that russh has a SSH agent server implementation. Let me know if you are interested in contributing such a feature - I am currently working on exposing all the custom entry fields in the UI, so the project would almost be ready. edit: would be ready to add that feature now

  • Scipitie@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    2
    ·
    2 days ago

    Sent you the account, sounds like an exciting learning project that could turn out to be useful as a side effect! ❤️