Welcome to Chast! A modern, peer-to-peer chat application built with Rust that lets you create secure, direct connections with friends without needing any central servers.
Make sure you have:
- Rust - The latest stable version (get it here)
- An internet connection - For initial peer discovery (then it's all direct!)
- A friend to chat with - Because chatting alone isn't as fun 😄
git clone https://github.com/temidaradev/p2p-vpn-rust.git
cd p2p-vpn-rustcargo build --releaseGrab a coffee - this might take a few minutes the first time as Rust downloads and compiles all dependencies...
cargo run --bin p2p-chatFor a more traditional chat experience with message tracking and room management, you can run the server component. This provides additional features beyond pure peer-to-peer communication :3
cargo run --bin serverYou can also install pre-built executables for both the chat GUI and server from the releases page.
That's it!
- Run the application
- Click "Create Room"
- Enter your username
- Click "Create"
- Copy the ticket this is your room's "ticket"
- Share this ticket with friends you want to chat with!
- Get a ticket from a friend
- Run the application
- Click "Join Room"
- Enter your username
- Paste the ticket
- Click "Join"
- Start chatting!
If you want to enter the server im hosting on my server, you can join by pasting this room id into related section:
pmrhi33qnfrseos3ge4dmlbrga4symrrgawdcnrvfqzdeobmgm4synjtfqzdalbrg42cymjtguwdmnzmgiydelbrgazcymjrhewdcmrrfq2dklbsgaycynbrfqzdamzmgi2tglbrg4wdcmjyfqzdknjmgu4cymjvhawdonjmgizdelbxgawdmojmgiydglbrhazcymzwluwce3tpmrsxgir2ln5se3tpmrsv62leei5centgmzsdimbtgu3tqztfg5tdqzjumnrtqobzgm4tkmzxgfqtgmdcgm4wemdbge4tsyrshbsgmntbmfswim3bmzsdgnlemuzdanrqgftcelbcojswyylzl52xe3bchirgq5duobztulzpojswyylzfzuxe33ifzwgs3tlfyxselbcmruxezldorpwczdeojsxg43fomrduw25pvox2
Curious about the magic? Here's the simplified version:
- Room Creation: When you create a room, your computer becomes a "host" with a unique network address
- Ticket Generation: The app creates a special "ticket" containing your network address and a secret room ID
- Direct Connection: When someone uses your ticket, their app connects directly to yours
- Peer-to-Peer: From then on, messages flow directly between devices using Iroh
No servers, no data collection, no corporate oversight
But using the server option breaks this...
This is a Rust workspace with several components:
p2p-chat/- The main GUI application (what you actually run)server/- Optional server to break the rules of p2p :3messaging/- Message format and serialization logicticket/- Room "ticket" encoding/decodingtarget/- Compiled binaries (created when you build)
Found a bug? Have an idea? Contributions are welcome! Feel free to:
- Open an issue for bugs or feature requests
- Submit a pull request with improvements
- Share feedback on the user experience
Chat + Rust = Chast
Built with ❤️ in Rust. by temidaradev! 🦀