jj@portfolio:~/projects$jairik "jj" mccauley — software engineer
jj@portfolio: ~/projects/encrypted-p2p-chatroom — README.md — zsh

jj@portfolio:~/projects/encrypted-p2p-chatroom$ cat README.md

Encrypted P2P Chatroom

April 2025 · ● shipped · 3 screenshots · cryptography / networking

about

Peer-to-peer chat application with end-to-end encryption for secure communication. Uses ChaCha20-Poly1305 for message encryption, Ed25519 message signatures for user validation, and UDP multicast.

The Encrypted P2P Chatroom is a terminal-based Python chat application for machines on the same local network. There is no central server. Each peer joins an IPv4 UDP multicast group, runs a listener for incoming packets, announces itself periodically, and sends messages directly to the group.

I built it to work through applied cryptography and peer discovery in a small, inspectable protocol. JOIN packets advertise a username and public key, CHAT packets carry encrypted signed messages, and LEAVE packets tell the group when a peer exits.

security model

ChaCha20-Poly1305 provides authenticated encryption for message payloads, and Ed25519 signatures let recipients verify the sender. Peers cache the public keys announced during discovery and use them when a chat packet arrives.

This is a learning prototype, not production-secure messaging. Every peer shares one symmetric key, LEAVE messages are plaintext, and Python pickle is used for serialization. Those shortcuts make a LAN demo easy to follow, but they are exactly what I would replace before trusting the protocol with real messages.

screenshots — 3 files

Encrypted P2P Chatroom — end-to-end encrypted peer-to-peer chat app, screenshot 1 of 3Encrypted P2P Chatroom — end-to-end encrypted peer-to-peer chat app, screenshot 2 of 3Encrypted P2P Chatroom — end-to-end encrypted peer-to-peer chat app, screenshot 3 of 3
$ cd ~/projectsexit code 0