Fix abstract renderer signatures and add small stubs so type checkers can
see expected attributes (e.g. username, _decrypt). This removes several
mypy false-positives that were caused by mixin/ABC mismatches.
Preserve message text containing ':' by using split(':', 1) in both
DefaultClientRenderer and RichClientRenderer.
Normalize renderer APIs: print_chat(...) now takes the response mapping
and returns None (matches runtime behavior).
Make RSA symmetric-key request more robust: read r.content instead of a
fixed-size r.raw.read(999), avoiding truncated key material.
Improve _connect_ws exception handling in client to ensure a valid
Exception is re-raised if connection attempts fail.
Correct server/service typing: memory_msgs is now typed as
list[Message] and we null-check incoming payload text before creating a
new Message.
Replace manual package list in setup.py with setuptools.find_packages()
so packaging uses valid Python package names.
Installed types-requests in the project venv so mypy no longer flags the
requests import.
Verification: ran python -m compileall and mypy cmd_chat — no issues
remain.
Notes:
Wire format still uses Python literal evaluation in some places (existing
behavior); switching to JSON for client/server payloads is recommended as a
follow-up for robustness and security.
|
||
|---|---|---|
| .history | ||
| cmd_chat | ||
| .gitignore | ||
| cmd_chat.py | ||
| example.gif | ||
| LICENSE | ||
| README.MD | ||
| requirements.txt | ||
| ROADMAP.md | ||
| setup.py | ||
CMD CHAT
CMD CHAT is a new milestone in console communication.
A fully anonymous chat between two clients, impossible to intercept or hand over.
All data exists only in RAM and is wiped after the session ends.
No logs, no traces, no compromise.
🔒 Key Features
- Full anonymity
- End-to-End encryption (RSA + symmetric key)
- Data stored only in memory (RAM), deleted on exit
- No logging, no persistence on disk
- Easy to run via Python or CLI
⚙️ How It Works
- The client generates an RSA key pair.
- The server creates a symmetric key.
- The client sends its public key to the server.
- The server encrypts the symmetric key and sends it back.
- The client decrypts and confirms the key.
- From that point, all communication is done via symmetric encryption.
Everything happens in memory only. Nothing is written to disk.
🚀 Installation & Run
Python
-
Clone the repository:
git clone https://github.com/emilycodestar/cmd-chat.gitcd cmd-chat -
Create a virtual environment and install dependencies:
Linux / macOS:
python -m venv venv && source venv/bin/activate && pip install -r requirements.txtWindows (PowerShell):
python -m venv venv ; .\venv\Scripts\activate ; pip install -r requirements.txt -
Start the server (set a password for client connections):
python cmd_chat.py serve 0.0.0.0 1000 --password YOUR_PASSWORD -
Connect a client:
python cmd_chat.py connect SERVER_IP 1000 USERNAME YOUR_PASSWORDExample (local run):
python cmd_chat.py connect localhost 1000 tyler YOUR_PASSWORD
🎥 Example
Here’s how it looks in action:
