End‑to‑end encrypted messaging (client‑side)

Private messages. No accounts.

Phantom is a tiny messenger that encrypts messages on your device before they leave. The relay stores only ciphertext and routing metadata — it never sees your message content. We try to maximize anonymity, but network anonymity is shared responsibility: use Tor or a trusted VPN.

Get started

Important: run through Tor or a trusted VPN to hide your IP from the relay/network.

Phantom main menu via Tor
Phantommain menu
Phantom chat view via Tor
PhantomChatchat + files + burn
How it works
Features

Small, practical privacy

Client‑side E2EE

Messages are encrypted locally before sending and decrypted only on the recipient’s device.

No accounts

Your address is a derived UID from your public key. Share the UID to connect.

Burn messages

Delete room ciphertext from the relay. Burn requests are rate-limited and can be signature-authenticated.

Tor‑friendly

If Tor is running locally, Phantom routes traffic through it automatically. Without Tor/VPN, your IP may be visible to the relay provider.

Live updates

Uses WebSockets when available; falls back to polling when on Tor.

File attachments in chat

Send files with /file <path> (up to 50 MB) with a live upload progress bar and encrypted file metadata.

Limited retention

Relay-side cleanup runs automatically: 7-day message retention, 24-hour key-exchange retention, and 24-hour file retention.

How it works

What Phantom protects (and what you still must do)

1
Identity lives on your device A locally stored X25519 keypair is encrypted with your password.
2
UID is derived from your public key You share the UID (not a username, email, or phone number) to connect.
3
Session key via X25519 + HKDF Both sides derive a shared secret; messages are encrypted with ChaCha20‑Poly1305.
4
Relay stores ciphertext only The server handles routing and delivery; it can’t read message contents.
5
Anonymity needs network hygiene Use Tor or a trusted VPN, verify keys out-of-band, and avoid sharing personal identifiers in chats.
Setup

Universal quick start

Download + runall OS
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/cqlnx/phantom/refs/heads/main/phantom.py -o phantom.py
python3 phantom.py

# Windows PowerShell
Invoke-WebRequest https://raw.githubusercontent.com/cqlnx/phantom/refs/heads/main/phantom.py -OutFile phantom.py
py -3 phantom.py
Dependenciesautomatic
# Phantom auto-installs missing packages on first run.
# If you prefer manual:
python -m pip install -r requirements.txt
Create identityfirst run
python phantom.py
# follow the wizard to create an identity and get your uid
In-chat commandsattachments
/file /path/to/document.zip
/burn
/quit

Optional Tor (Linux): sudo systemctl enable --now tor then restart Phantom.

FAQ

Common questions

Is this a web messenger?

Right now this is a lightweight Python client. This page is a simple landing site + docs for it.

What happens if I forget my password?

Your identity file is encrypted with that password. If it’s lost, the identity can’t be recovered — back up ~/.phantom/identity.json.

What does “burn” do?

It asks the relay to delete stored ciphertext for a room. It doesn’t affect local copies or backups, and the relay enforces burn rate limits.

What metadata does the relay learn?

It sees routing metadata like room IDs, sender UIDs, and rounded timestamps; when not using Tor it also sees client IP. Message contents remain ciphertext.

Is Phantom full anonymity by itself?

No. Phantom protects message contents with E2EE, but anonymity also depends on your network setup and behavior. Use Tor or a trusted VPN, and avoid identity leaks in what you share.

How long is data kept on the relay?

By default, encrypted messages are retained for 7 days, pending key-exchange entries for 24 hours (and deleted immediately when popped), and uploaded files for 24 hours.

How do file attachments work?

Use /file <path> in chat. The file is uploaded to relay storage, a short-lived relay URL is generated, and the metadata + link are sent as an encrypted chat message.

Don’t trust us?

Good. The client code runs on your machine, is not obfuscated, and is readable so you can inspect exactly what it does.

Can I customize Phantom?

Yes. You can modify the client to fit your workflow, including adding your own hardening choices like custom proxy routes. Keep code readable and avoid obfuscation so behavior stays auditable.