Secure, stateless TUI chat and voice. Drop into a frequency and broadcast.
Project description
freq
Secure, stateless TUI chat and voice. Drop into a frequency and broadcast. Zero logs, zero identity, end-to-end encrypted.
Fullscreen and unmute for better experience
This is between two different devices on different Operating Systems and different terminals
Install
pip install freq-cli
Usage
freq
Inside the app:
| Command | Action | Example |
|---|---|---|
/tune <frequency> |
Join a frequency | /tune 104.5 or /tune flavortown |
/nick <name> |
Set your display name | /nick flavorpheus |
/leave |
Disconnect | /leave |
Ctrl+R |
Toggle audio streaming | Press Ctrl+R to start/stop |
| (Type anything else) | Send an encrypted message | Hello! |
How it works
- You type a frequency. The client uses Argon2id to derive a 32-byte AES key from that string.
- The client connects to the relay server and joins a room identified by the SHA-256 hash of the AES key. The server never sees the frequency or the key.
- All messages and audio are encrypted with AES-256-GCM before leaving your machine.
- Audio uses real-time streaming — each ~100ms chunk is encrypted and sent individually. Multiple voices are mixed with numpy for overlapping audio.
- The server is a stateless blind relay. It broadcasts encrypted blobs to the room and stores nothing.
Security
| Layer | Implementation |
|---|---|
| Key derivation | Argon2id (64 MiB, 3 iterations) |
| Encryption | AES-256-GCM with random 12-byte nonce |
| Room identity | SHA-256 of AES key (server never sees frequency) |
| Transport | WSS (TLS) to relay server |
| Identity | None. No accounts, no keys on disk, no persistent state. |
Requirements
- Python 3.10+
- A microphone (for audio streaming)
- A terminal that supports 256 colors
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file freq_cli-0.1.2.tar.gz.
File metadata
- Download URL: freq_cli-0.1.2.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b270dc2191d2c307b19bceedf0360ec424d0395cac008bbf594469d018700a05
|
|
| MD5 |
5254a7f31c213f41992bf73456a4bb24
|
|
| BLAKE2b-256 |
87369adf5424941d765e431887fbacc93f34bfc0c56cf31eabbeb23b218ff5db
|
File details
Details for the file freq_cli-0.1.2-py3-none-any.whl.
File metadata
- Download URL: freq_cli-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8770230c2c75eb5cc7d8ae603f964c684430e0623ce509fbc41abba4c48a783e
|
|
| MD5 |
674dff673914c4771eaf3ffbb64101a8
|
|
| BLAKE2b-256 |
6a0f6a345c5284a82995b56b685960ab5de0b7f5c7429609d751a23329b9217f
|