Your conversations. Nobody else's hardware.
A peer-to-peer, end-to-end encrypted desktop messenger where the server forgets you the moment you've shaken hands.
Most "encrypted" chat apps still funnel every word through someone else's cloud. helucryptic doesn't. A tiny signaling server plays matchmaker for the first few seconds β just long enough for two computers to find each other β and then bows out completely. From that point on, every message, file, voice packet, and pixel of your screen flows straight from your machine to theirs, encrypted end-to-end.
Below is a mockup preview of the Helucryptic client interface:
Below is an animated visualization of the signaling handshake and direct peer-to-peer WebRTC connection process:
No message ever touches a server. No file is ever parked in a bucket. There's nothing to subpoena, leak, or mine β because it was never there.
- π¬ E2EE Text Chat β Send messages over secure WebRTC DataChannels using PASETO v4 tokens. Supports 1-to-1 or group chat (up to 4 members).
- ποΈ Peer-to-Peer Voice Calls β Crystal-clear audio encoding using Opus (48kHz, mono) running fully over dedicated media tracks.
- π₯οΈ Ultra-smooth Screen Share β Low-latency screen sharing (15fps from your primary monitor) with direct audio capture integration.
- π High-speed File Transfers β Stream files directly from your disk with backpressure management (send large 4 GB files without inflating RAM) protected by SHA-256 integrity checks.
- π True Cryptography β Forward-secret X25519 ECDH key exchange deriving fresh session keys, paired with Ed25519 signature verification and local history encryption.
- 𧬠Identity Verification β Fingerprint comparisons badge verified contacts (green β vs yellow β ). If a verified contact's public key changes, they are instantly un-verified and flagged.
- ποΈ Local Encrypted History β SQLite history database (WAL mode enabled) encrypted with a key derived from your private identity.
- π Intelligent Traversal β Traversing firewalls with STUN, TURN relays, and automatic NAT-PMP port forwarding. If just one peer has an open port, the other can tunnel through directly.
| Component | Technology / Primitive | Description |
|---|---|---|
| Key Agreement | Ephemeral X25519 ECDH |
Fresh keypair generated per session, signed by Ed25519 β HKDF-SHA256 |
| Identity Verification | Ed25519 via PASETO v4.public |
Authenticates peer handshake identity tokens |
| Message Encryption | PASETO v4.local |
Symmetric XChaCha20-Poly1305 payload encryption |
| History at Rest | PASETO v4.local |
Database-level sqlite encryption keyed from local identity |
| Identity Protection | OS Keystore / DPAPI |
Identity keypair wrapped securely at rest on your filesystem |
Explore the architecture of the codebase:
| Module / File | Role |
|---|---|
| main.py | App entry point (initializes the Flet interface). |
| client.py | Main Flet UI: handles chat layout, presence tracking, settings, logs capture, and UI state. |
| webrtc_engine.py | Core engine: WebRTC peer connections, voice track mixing, screen capture, and file transfer streams. |
| server.py | Fast API Signaling server: relays SDP/ICE handshake payloads and serves presence queries. |
| natpmp.py | Implements NAT-PMP protocols to request automatic gateway port mapping. |
| crypto.py | Handles identity keys, PASETO token generation, X25519 agreements, and verification. |
| contacts.py / history.py | SQLite local persistence engines for contact registries and encrypted message history. |
| sounds.py | Audio feedback manager (cues connection sounds and incoming call ringing). |
Select your operating system to auto-configure and view the correct setup commands:
π» Windows (PowerShell / Command Prompt)
# 1. Install dependencies (PortAudio is automatically bundled)
pip install -r requirements.txt
# 2. Start the local signaling server
python -m uvicorn server:app --host 127.0.0.1 --port 8000
# 3. Launch the client in another terminal
python main.pyπ macOS (Terminal)
# 1. Install dependencies (requires PortAudio)
brew install portaudio
pip install -r requirements.txt
# 2. Start the local signaling server
python3 -m uvicorn server:app --host 127.0.0.1 --port 8000
# 3. Launch the client in another terminal
python3 main.pyπ§ Linux (Terminal)
# 1. Install dependencies (requires PortAudio)
sudo apt install portaudio19-dev -y
pip install -r requirements.txt
# 2. Start the local signaling server
python3 -m uvicorn server:app --host 127.0.0.1 --port 8000
# 3. Launch the client in another terminal
python3 main.pyTip
Connecting with Friends: Create a room, click the person+ or link icon next to the room header to copy a decentralized invite link (HELU-INV1:). When your friend pastes this invite code, their client will automatically point to the correct signaling server and join the encrypted room instantly.
helucryptic is completely environment-driven. To override defaults, copy .env.example to .env:
cp .env.example .envHELUCRYPTIC_SIGNALING_URLβ WebSocket target of the signaling server (e.g.ws://127.0.0.1:8000).HELUCRYPTIC_SERVER_PASSWORDβ Access password checked by the signaling server before allowing connections.HELUCRYPTIC_LOW_PERF_MODEβ Set totrueto drop capture settings (ideal for low-end hardware).HELUCRYPTIC_TURN_URL/_USERNAME/_PASSWORDβ Traversal credentials to configure optional TURN relays.HELUCRYPTIC_DATA_DIRβ Folder containing your keys, settings, and database (defaults to~/.helucryptic).
Warning
Testing Multiple Clients Locally: If running two clients on the same machine, they must use different data directories to prevent them from reading the same identity keys.
π» Windows (PowerShell)
$env:HELUCRYPTIC_DATA_DIR="C:\hc\alice"; python main.py
$env:HELUCRYPTIC_DATA_DIR="C:\hc\bob"; python main.pyπ» Windows (Command Prompt)
set HELUCRYPTIC_DATA_DIR=C:\hc\alice && python main.py
set HELUCRYPTIC_DATA_DIR=C:\hc\bob && python main.pyπ macOS & π§ Linux (Bash/Zsh)
HELUCRYPTIC_DATA_DIR="~/hc/alice" python3 main.py
HELUCRYPTIC_DATA_DIR="~/hc/bob" python3 main.pyWebRTC will naturally attempt direct connections, but cellular hotspots and corporate routers (Symmetric NATs) require a relay fallback. When required, the still-encrypted media is passed through your configured TURN server.
You can register for a free/metered tier at one of the following providers and input the host details in your .env:
- Metered.ca β High-performance global TURN nodes (includes a generous free tier).
- Twilio Network Traversal β Pay-as-you-go TURN/STUN pricing.
- Xirsys β Developer-oriented WebRTC traversal plans.
To host your own traversal infrastructure on a Linux VPS:
- Install
coturn:sudo apt update && sudo apt install coturn -y - Edit the configuration (
/etc/turnserver.conf):listening-port=3478 fingerprint lt-cred-mech user=my-turn-username:my-turn-password-456 realm=your-turn-server-domain.com
- Allow traffic on ports:
sudo ufw allow 3478/tcp sudo ufw allow 3478/udp sudo ufw allow 49152:65535/udp
- Restart service:
sudo systemctl enable turnserver && sudo systemctl restart turnserver
Compile a standalone, zero-dependency executable for distribution:
python build.pyThis script automates the compilation workspace and saves the portable output to dist/Helucryptic.
helucryptic is optimized to run smoothly on legacy devices:
- Frame Repaints: Screenshare streams update only changed layout controls rather than redrawing the Flet canvas.
- Backpressure Handling: File transfers are segmented and stream chunks directly from/to disk to avoid memory inflation.
- Engine Decoupling: SQLite operations run in WAL mode with active indexing to safeguard against disk bottlenecks.
We value absolute honesty over marketing:
- Signaling Privacy: The server coordinates connection handshakes but is mathematically excluded from knowing private keys, decrypted chat, files, or call audio.
- Fingerprint Verification: Always verify peer identity badges manually out-of-band to prevent active MITM handshakes.
- Group Relays: Rooms route media streams through the elected room host (the Hub). While text and files are fully E2EE with the room key, the media relay is decrypted at the hub host for forwarding (requires trust in the elected hub peer).
- Protected Identity: Key pairs saved locally in
keys.jsonare wrapped with Windows DPAPI on Windows, making copies unusable on another host or account.
π§ For general inquiries or questions, contact crypticmage00@gmail.com.
