Skip to content
@RetInc

RetInc

retchat

a lightweight encrypted chat server. clients connect over TCP, perform a Diffie-Hellman key exchange, and communicate through HMAC-authenticated encrypted frames. there are no accounts, no logs, and no persistent state beyond an optional ban list.


features

  • E2E encryption via DH key exchange (RFC 3526 2048-bit group) + HMAC-SHA256
  • multiple rooms, created on demand
  • direct messages across rooms
  • nicknames with server-side validation
  • persistent ban list (by nickname or IP) (stored in a plain text file)
  • interactive server console

running the server

./retchat [port] [bans_file]

defaults: port 6677, bans file bans.txt. the bans file is created automatically on first ban and loaded on startup if it exists.


server console

the server accepts commands on stdin while running:

command desc
kick <fd|nick> kick a client by socket fd or nickname
ban <nick> ban a nickname (persisted)
ipban <ip> ban an IP address (persisted)
unban <nick> remove a nickname ban
unbanip <ip> remove an IP ban
list clients show all connected clients
list rooms show all active rooms
list bans show all active bans
query client <fd> detail a specific client
query room <name> detail a specific room
stop shut down the server
help show this list

clients

Android

a native Android client is available at retchat-android. features a collapsible connect panel, side panel for room and DM navigation, per-conversation message history (non-persistent), and a persistent background connection via a foreground service.

Linux (CLI)

a terminal client for Linux is available at retchat-linux, for those looking for a barebones client that just works (most of the time).

./retchat-client [-h host] [-p port] [-n nickname] [-r room]

default host: retucio.me, port 6677, room lobby.

client commands:

/nick <nick>          change your nickname
/join <room>          join a room (created if it doesn't exist)
/dm <nick> <message>  send a direct message
/quit                 disconnect and exit

protocol

full protocol spec here.


bans file format

Plain text, one entry per line:

nick:johndoe
ip:1.2.3.4

the file is read on startup and written after every ban or unban. it can be edited manually while the server is stopped.


license

MIT, i guess

Pinned Loading

  1. retchat retchat Public

    an encrypted TCP/IP chat protocol basic as fuck.

    C++

  2. retchat-docs retchat-docs Public

    ai generated docs on the retchat protocol

  3. retchat-linux retchat-linux Public

    linux cli client for the retchat protocol

    C++

  4. retchat-android retchat-android Public

    retchat client for Android

    Java

Repositories

Showing 5 of 5 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…