Visit: https://temp-chat-lemon.vercel.app
Ephemeral, End-to-End Encrypted, Peer-to-Peer Communication.
TempChat is a privacy-first, open-source communication platform designed for the exchange of highly sensitive information. It serves as a secure, temporary bridge for sharing data that should never be permanently archived or monitored by third parties.
- End-to-End Encryption (E2EE): Messages are encrypted locally using AES-GCM (256-bit) before ever leaving your device.
- Perfect Forward Secrecy: Uses ECDH (P-256) for a unique key exchange per session.
- True Peer-to-Peer: Powered by WebRTC DataChannels. Messages flow directly between peers, bypassing the server entirely once the connection is established.
- Zero-Storage Philosophy: The signaling server acts only as a coordinator. No chat data, IP addresses (beyond signaling), or metadata are stored on any server.
- Ephemeral Rooms: Rooms and their temporary local history are automatically purged after 24 hours of inactivity.
- No Identity Requirements: Create and join rooms without accounts, emails, or phone numbers.
- Rich Aesthetics: Responsive design with support for multiple themes (Slate, AMOLED, Light) and custom accent colors.
- Framework: React 18 (Vite)
- Styling: Tailwind CSS 4.0
- Animations: Framer Motion
- State Management: Zustand
- P2P Networking: WebRTC (RTCPeerConnection)
- Encryption: Web Crypto API (SubtleCrypto)
- Icons: Lucide React
- Runtime: Node.js
- Framework: Express
- Real-time: Socket.io
- Security: Argon2 for memory-hard room password hashing
TempChat operates as a trustless system.
- Key Exchange: When two peers connect, they generate temporary ECDH key pairs. They exchange public keys via the signaling server and derive a shared 256-bit AES key locally.
- Encryption: Every message, image chunk, and file is encrypted using the derived shared key with a unique IV (Initialization Vector) for each packet.
- Transport: Encrypted payloads are sent through a WebRTC DataChannel. The signaling server is only aware that two users are connected; it cannot decrypt or even see the traffic.
- Hashing: If a room is password-protected, the server only stores a salted Argon2 hash of the password to verify access during the signaling phase.
Warning
P2P Connectivity: TempChat does not use TURN servers to maintain total peer-to-peer integrity. There is a small chance (est. 10%) that restrictive ISP NATs or firewalls may block connections. In such cases, using a VPN can often resolve the issue.
git clone https://github.com/PS-NaMaN/TempChat.git
cd TempChatcd server
npm install
npm startBy default, the server runs on http://localhost:3001.
cd ../client
npm install
npm run devOpen http://localhost:5173 in two different browser windows to start testing.
TempChat is an open-source project. Contributions, bug reports, and feature requests are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Built with 💜 by Naman Sinha