Looking for feedback on the cryptographic design of my open source project: Bloom
One obvious note is that if someone (possibly someone posing as a server) overhears the client to server message (that is, the client's input to the crypto.verify.password_hash.argon2id function), then he knows enough to register as the client to a valid server.  He might not know the password; however he wouldn't need to.

If that is a problem, it would sound like you need some sort of authenticated key exchange (perhaps Opaque), which addresses this.  And, no, I don't happen to have an implementation of that handy...