A serverless, peer-to-peer messenger focused on maximum privacy and encryption
Built to resist surveillance and protect conversations from mass scanning or government backdoors.
Features • Installation • Usage • Development • Contributing
- 🔐 End-to-End Encryption - Only intended recipients can read messages
- 🌐 Peer-to-Peer Messaging - Secure messaging without central servers
- 🛡️ Privacy-First Design - Metadata minimization and traffic analysis protection
- 💻 Cross-Platform Support - Works on Windows, macOS, and Linux
- 🔑 Secure Key Exchange - Easy contact management with public key verification
- ✅ MVP with encrypted one-to-one messaging
- ✅ Direct P2P connections (LAN/Wi-Fi/Internet)
- ✅ GUI application with dark mode interface
- ✅ Tunnel support for internet connections
- ⚙️ Active Development - New features being added regularly
- 👥 Group chats with encrypted multi-party messaging
- 📦 Offline delivery using trusted peers or self-hosted relays
- 🕵️♂️ Tor hidden service integration for IP privacy
- 🎤📹 Voice & video calls with full encryption
- 📱 Mobile client applications
- Backend: Python 3.8+ with PyNaCl/libsodium encryption
- Frontend: React 18+ with Material-UI components
- Desktop: Electron 27+ for cross-platform GUI
- Networking: WebSocket and TCP for P2P connections
- Security: Argon2id key derivation, NaCl SecretBox encryption
Make sure you have the following installed:
# Clone the repository
git clone https://github.com/CuzImSlymi/whisperlink.git
cd whisperlink
# Create Python virtual environment
python -m venv .venv
.venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
# Install Node.js dependencies
npm install# Clone the repository
git clone https://github.com/CuzImSlymi/whisperlink.git
cd whisperlink
# Create Python virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install Python dependencies
pip install -r requirements.txt
# Install Node.js dependencies
npm install# Test Python backend
python main.py --help
# Test Node.js frontend
npm run buildStart the complete GUI application:
# Windows
.venv\Scripts\activate
npm run dev
# macOS / Linux
source .venv/bin/activate
npm run devThis will:
- Start the React development server (port 3000)
- Launch the Electron desktop application
- Initialize the Python backend automatically
For advanced users or testing:
# Activate virtual environment first
python main.py
# Follow the prompts to:
# - Create a new account with username/password
# - Or login to existing accountDirect Connection (LAN):
# In the main menu, choose option 1
# Your local IP and port will be displayed
# Share this information with contactsTunnel Connection (Internet):
# In the main menu, choose option 2
# A public tunnel URL will be created
# Share this URL with remote contactsAdd Contact:
# In the main menu, choose option 3
# Enter contact's connection details:
# - Username
# - Public key
# - Connection address (IP:port or tunnel URL)Send Messages:
# Choose a contact from your list
# Type messages in real-time
# All messages are end-to-end encrypted# Optional: Set custom ports
export WHISPERLINK_WS_PORT=9002
export WHISPERLINK_TCP_PORT=9001
# Optional: Set data directory
export WHISPERLINK_DATA_DIR="./custom-data"# Install ngrok (optional)
npm install -g ngrok
# Or use other tunnel services:
# - loca.lt
# - serveo.net
# - localhost.runwhisperlink/
├── src/ # React frontend components
│ ├── components/ # UI components
│ ├── context/ # React context providers
│ └── App.js # Main React application
├── electron/ # Electron main process
├── whisperlink/ # Python package
├── main.py # Python CLI entry point
├── requirements.txt # Python dependencies
├── package.json # Node.js dependencies
└── README.md # This file
# Start development server only
npm start
# Start Electron in development mode
npm run electron-dev
# Run both React and Electron together
npm run dev
# Build for production
npm run build
npm run electron-pack
# Stop all development servers
npm run stopnpm run buildpython setup.py sdist bdist_wheelnpm run electron-packThe built application will be in the dist/ directory.
- 🔐 PyNaCl Encryption - Industry-standard NaCl cryptography
- 🔑 Argon2id Key Derivation - Resistant to GPU cracking attacks
- 🛡️ Perfect Forward Secrecy - Past messages stay secure
- 🚫 Zero Server Storage - No messages stored on servers
- 🔒 Local Key Storage - Private keys never leave your device
- ⚡ Real-time Encryption - All messages encrypted before transmission
Python Import Errors:
# Ensure virtual environment is activated
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows
# Reinstall dependencies
pip install -r requirements.txtNode.js Build Errors:
# Clear npm cache
npm cache clean --force
# Reinstall dependencies
rm -rf node_modules package-lock.json
npm installConnection Issues:
- Check firewall settings allow the application
- Verify network connectivity between peers
- Try different tunnel services if ngrok fails
# Enable debug logging
export WHISPERLINK_DEBUG=1
npm run devWe welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Submit a pull request with a clear description
# Clone your fork
git clone https://github.com/CuzImSlymi/whisperlink.git
cd whisperlink
# Add upstream remote
git remote add upstream https://github.com/CuzImSlymi/whisperlink.git
# Install development dependencies
pip install -r requirements.txt
npm installThis project is licensed under the GNU General Public License v3.0 (GPL-3.0).
See LICENSE for the full license text.
- Slymi - Lead Developer
- CLPD - Core Contributor
Built with privacy in mind. Your conversations, your control.
⭐ Star this project if you find it useful!