{"repo":"michal-pielka/punchline","free":true,"listed":false,"github":"https://github.com/michal-pielka/punchline","clone":"git clone https://github.com/michal-pielka/punchline.git","description":"Peer-to-peer encrypted messenger in Rust with Noise IK and UDP NAT hole punching","language":"Rust","stars":19,"topics":["chacha20","chat","end","messenger","noise-protocol","p2p","peer-to-peer","rust","serverless-chat","tui"],"license":"MIT","category":"cli-tools","readme_excerpt":"punchline End-to-end encrypted peer-to-peer chat over UDP. No accounts, no central server relaying/storing messages, no middleman. Just two peers, a direct connection, and Noise protocol encryption. https://github.com/user-attachments/assets/939e96d3-45e3-4484-9a27-28c3a0457b05 Table of Contents - What It Does - Quick Start - How It Works - CLI Reference - Usage - Configuration - Managing Peers - Status Check - Server Options - Theming - Shell Completions - Cryptography - IK Handshake - Initiator Determination - Key Storage - Wire Protocol - Hole Punch Protocol - Transport Protocol - Signal Protocol - STUN Protocol - Project Structure - Installation - From crates.io - Building from Source - Running Tests - Tech Stack - License --- What It Does Two people run punchline connect on their machines. Punchline punches through their NATs, performs an encrypted handshake, and drops them into a private chat - all in a few milliseconds. The included STUN and signal servers handle discovery, then get out of the way. --- Quick Start Start the servers (on a machine both peers can reach), or use my public ones hosted at 64.225.107.28 (STUN: port 3478 , signaling: port 8743 ): On each peer's machine: The TUI launches with a live connection progress view: 1. STUN discovery - resolving your external address via punchline-stund 2. Signal server - connecting to punchline-signald 3. Waiting for peer - signal server matches both peers 4. Hole punch - establishing the direct UDP path 5. Noise hand","default_branch":null,"files":null,"tree":[],"storefront":"/r/michal-pielka","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/michal-pielka/punchline/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}