LanWhisp is a lightweight, encrypted peer-to-peer group chat application for local networks. It features a rich terminal user interface (TUI) built with Go and Bubble Tea. It enables secure and private communication between devices on the same LAN, ensuring message confidentiality through end-to-end encryption.
- Group Chat: Automatically discover and connect with other users on the same network.
- Rich Terminal UI: A modern, terminal-based interface powered by Bubble Tea.
- End-to-End Encryption: Messages are secured with AES-GCM using a shared passphrase.
- Typing Indicators: See when other users are typing a message.
- Colored Nicknames: Each user gets a unique color for easy identification.
- Decentralized: No central server required.
- Peer Discovery: The application uses UDP multicast to broadcast its presence and discover other users on the local network who are part of the same group (i.e., using the same passphrase).
- Key Derivation: A symmetric encryption key is derived from a shared passphrase using SHA-256. All participants must use the same passphrase to communicate.
- Encrypted Communication: Encrypted chat messages and typing notifications are sent directly between peers over TCP connections. All data is encrypted using AES-GCM.
Pre-built binaries for major platforms are available in the Releases section of the project's GitHub page.
-
Go to the Releases page.
-
Download the binary for your OS.
-
Make it executable (Linux/macOS):
chmod +x lanwhisp
- Go 1.20 or later
# Clone the repository
git clone https://github.com/dhr412/lanwhisp.git
cd lanwhisp
# Install dependencies
go mod tidy
# Build the application
go build -o whisp ./srcThis will generate a single executable file whisp in the current directory.
Start the app on each device. All users must use the same passphrase and be on the same local network.
./whisp -name <your-name> [-port 9600] [-passphrase "shared-secret"]-name: Your display name in the chat (required).-port: The TCP port for connections (default:9600).-passphrase: The passphrase for the private group (default:"sharedpassphrase"). Everyone must use the same one.
Once started, the terminal will switch to the chat interface.
- Simply type your message and press
Enterto send it to the group. - Press
Ctrl+CorEscto exit the application.
This project is licensed under the MIT License. See the LICENSE file for details.