mirror of
https://github.com/logos-messaging/nim-chat-poc.git
synced 2026-01-02 14:13:10 +00:00
Nim Chat POC
This is a technical proof of consuming the chat_proto in nim.
Message Flow
To establish a secure conversation, Saro and Raya need to:
- Exchange key material
- Agree on a secret key, and location to communicate
For this technical proof, recipient identity keys are exchanged out of bound via an invite link. More complex identity systems will be explored in the future.
Key derivation and message framing is defined by Inbox spec
sequenceDiagram
actor S as Saro
participant SI as Saro Inbox
participant C as Convo
participant RI as Raya Inbox
actor R as Raya
Note over SI,RI: All clients subscribe to their default Inbox
SI ->> S: Subscribe
RI ->> R: Subscribe
Note over R: Key Information is exchanged OOB
Note over S: Conversation is created
C ->> S : Subscribe
S ->> RI : Send Invite `I1`
S ->> C : Send Message `M1`
RI --) R : Recv `I1`
Note over R: Conversation is joined
C ->> R : Subscribe
C --) R: Recv `M1`
R ->> C: Send M2
C -->> S: Recv M2
Running
# Run the default binary
nimble run
Limitations
.protofiles are included in this repo due to complications in importing nested packages using?subdir=. Once resolved there will be a single definition of protocol types.- Currently messages are not sent over the wire. They are simulated using a
TransportMessage.
License
Description
Languages
Nim
94.5%
Makefile
4.2%
Shell
1.3%