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.
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 WebAssemblyThis 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.
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 plainkeepass
, because I need additional adapter methods to interface with the web part of the application. I don’t have the bandwidth to turnkeepass
into a general WASM package that could benpm install
ed 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 theomnikee-lib
crate could become the official WASM interface forkeepass
.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
Sent you the account, sounds like an exciting learning project that could turn out to be useful as a side effect! ❤️
thanks for your interest! I have sent you a response with an invite link.