this post was submitted on 29 Apr 2025
38 points (100.0% liked)

Programming

19927 readers
176 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

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.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 2 days ago (2 children)

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.

[–] [email protected] 2 points 2 days ago* (last edited 2 days 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.

[–] [email protected] 2 points 2 days ago* (last edited 2 days 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