An elegant, terminal-based messaging tool powered by SSH cryptographic handshakes and libp2p NAT traversal. Connect securely with friends across firewalls—no setup required.
Or download for other platforms:
OpenChat stands on three core technical pillars designed to provide modern communication without corporate logging servers.
Uses golang.org/x/crypto/ssh for credential verification. Complete with visual host-key fingerprint checks (emoji and randomart) to prevent Man-in-the-Middle (MITM) attacks.
Leverages go-libp2p transport. AutoNAT and DCUtR protocols attempt direct hole punching behind home routers, falling back to secure Circuit Relays if direct access fails.
A reactive, modern split-screen terminal interface built with charmbracelet/bubbletea and styled dynamically with lipgloss, offering standard cursor controls and layout scaling.
Choose how your data is handled every time you launch the application.
Persists chat messages inside an encrypted SQLite database using AES-GCM (passphrase-derived key). Perfect for retaining history securely across machine reboots.
For high-privacy environments. Holds all messages strictly in volatile memory (RAM). When you exit, the memory is thoroughly scrubbed, leaving no trace on disk.
Get started in seconds. One person hosts the room, and the other connects directly.
Binds to all interfaces and starts listening for client handshakes:
go run .\cmd\chatssh --mode server --addr :2222 --user alice
Dial the server using the host's IP address (e.g. 172.29.160.1):
go run .\cmd\chatssh --connect "172.29.160.1:2222" --user bob
OpenChat is completely open source under active development. Read the full CLI configurations in our documentation, build binaries for custom CPU architectures, or submit pull requests on GitHub.