TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸
on the bench

CMD Chat – Ephemerer, verschlüsselter Konsolen-Chat

Eine sichere, ausschließlich im Arbeitsspeicher laufende Konsolen-Chatlösung mit tokenbasierter Authentifizierung, sessionbasierter Verschlüsselung und optionaler TLS-Unterstützung. Ideal für vertrauliche, kurzlebige Kommunikation.

Aland Baban · October 2025 · 5 min read
View repo
[ click to zoom ]
01 / 03

CMD Chat ist eine minimalistische und sicherheitsorientierte Chat-Anwendung für die Konsole. Alle Nachrichten existieren ausschließlich im Arbeitsspeicher (RAM) und werden standardmäßig nicht persistent gespeichert. Die Anwendung richtet sich an Nutzer, die eine Lösung für kurzfristige und vertrauliche Kommunikation benötigen, beispielsweise für interne Abstimmungen, Debugging-Sitzungen oder temporäre Dateiübertragungen.


Sicherheitskonzept

Jeder Client erzeugt beim Verbindungsaufbau ein RSA-2048-Schlüsselpaar. Über diesen Handshake wird für jede Sitzung ein symmetrischer AES-GCM-Session-Key ausgehandelt. Nachrichten werden ausschließlich im Arbeitsspeicher des Servers verarbeitet und weder gespeichert noch protokolliert.

Hinweis: Es handelt sich hierbei nicht um eine klassische Peer-to-Peer-Ende-zu-Ende-Verschlüsselung (E2EE), da der Server die Nachrichten im Arbeitsspeicher entschlüsseln kann.


Technologiestack

  • Python: Implementierung von Server und Client.
  • RSA-2048 & AES-GCM: Verfahren für den Schlüsselaustausch und die Nachrichtenverschlüsselung.
  • Docker / docker-compose: Ermöglicht die containerisierte Bereitstellung der Anwendung.
  • systemd: Dient dem optionalen Betrieb als Linux-Dienst.

Features

  • Multi-Room-Funktionalität: Unterstützung mehrerer, isolierter Chat-Räume über den /join-Befehl.
  • Authentifizierung: Token-basierte Zugangskontrolle über die Umgebungsvariable CMDCHAT_TOKENS.
  • Transportverschlüsselung: Optionale Aktivierung von TLS für eine gesicherte Verbindung (WSS/HTTPS).
  • Dateiübertragung: Segmentierte Übertragung von Dateien bis zu einer Größe von 10 MB.
  • Flexible Ausgabe: Verschiedene Renderer für die Darstellung der Nachrichten (rich, minimal, json).
  • Lokale Protokollierung: Optionale, clientseitig verschlüsselte Speicherung der Chat-Historie.
  • Stabilität: Integriertes Rate Limiting, Heartbeats zur Verbindungserhaltung und automatische Wiederverbindungsversuche.

Screenshots und Funktionsweise

Übersicht der verbundenen Clients

Alle Clients

Einzelansicht der Clients

Client "Aland"

Client "Tolas"

Funktionsweise: Alle abgebildeten Clients sind gleichzeitig mit demselben CMD-Chat-Server verbunden. Nach einer erfolgreichen Authentifizierung mittels Token durchläuft jeder Client folgende Schritte:

  1. Der Client tauscht seinen öffentlichen RSA-Schlüssel mit dem Server aus.
  2. Der Server generiert einen individuellen AES-Session-Key und übermittelt ihn verschlüsselt an den Client.
  3. Alle nachfolgenden Nachrichten werden mit diesem Sitzungsschlüssel ver- und entschlüsselt.
  4. Ein Client empfängt nur Nachrichten aus dem Raum, dem er beigetreten ist.

Auf diese Weise wird eine logische Kommunikation zwischen den Konsolen-Instanzen realisiert, obwohl diese in getrennten Prozessen und Terminals ausgeführt werden.


Betrieb der Anwendung

Schnellstart

code
git clone https://github.com/amariwan/cmd-chat.git
cd cmd-chat
python -m venv .venv
source .venv/bin/activate
pip install -e .

# Server starten
cmdchat-server

# Client verbinden
cmdchat-client --name alice

Docker

code
docker build -t cmdchat .
docker run -d \
  --name cmdchat-server \
  -p 5050:5050 \
  -e CMDCHAT_TOKENS="your-secret-token" \
  cmdchat

systemd

Eine vorkonfigurierte systemd-Unit (cmdchat-server.service) ist im Repository enthalten und ermöglicht eine unkomplizierte Installation für den Produktivbetrieb unter Linux.


Sicherheitshinweise

  • Aktivieren Sie TLS in allen Produktionsumgebungen.
  • Verwenden Sie Tokens mit hoher Entropie. Ein sicheres Token kann wie folgt generiert werden:
    code
    openssl rand -hex 32
    
  • Die maximale Dateigröße für Übertragungen ist bewusst auf 10 MB beschränkt, um die Serverlast zu begrenzen.

Projektstruktur

code
cmd-chat/
├── cmdchat/
│   ├── server.py
│   ├── client.py
│   ├── crypto.py
│   └── protocol.py
├── Dockerfile
├── docker-compose.yml
├── SYSTEMD_INSTALL.md
└── README.md

Anwendungsfälle

  • Ephemere Kommunikation in vertrauenswürdigen Netzwerkumgebungen.
  • Schnelle und sichere Abstimmungen ohne persistente Chat-Historie.
  • Temporäres Debugging und Austausch von Konfigurationsdateien oder Log-Ausschnitten.

Repository: https://github.com/amariwan/cmd-chat