💬 🌐 Chat, encrypted, over DNS, because...
  • TypeScript 58.9%
  • Go 34.9%
  • HTML 5.9%
  • Makefile 0.2%
  • Perl 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-04-30 12:22:43 +08:00
ansistrip Rename to "chat53", refactorings 2026-04-21 13:05:19 +10:00
client Fix debug 2026-04-30 12:22:43 +08:00
doc It's crockford base32 2026-04-24 13:19:48 +10:00
example Move Read into client, add example fully using client APIs 2026-04-24 16:59:18 +10:00
irc JOIN/PART for IRC proxy 2026-04-30 10:39:18 +08:00
web Add non-JSON DoH support 2026-04-30 10:42:14 +08:00
.gitignore Rename to "chat53", refactorings 2026-04-21 13:05:19 +10:00
chat.go Fix debug 2026-04-30 12:22:43 +08:00
chat_openbsd.go Use dns v2 2026-04-22 22:26:41 +10:00
chat_other.go Use dns v2 2026-04-22 22:26:41 +10:00
chat_windows.go Use dns v2 2026-04-22 22:26:41 +10:00
go.mod Use dns v2 2026-04-22 22:26:41 +10:00
go.sum Use dns v2 2026-04-22 22:26:41 +10:00
LICENSE Rename to "chat53", refactorings 2026-04-21 13:05:19 +10:00
README.md Fix debug 2026-04-30 12:22:43 +08:00
TODO It's crockford base32 2026-04-24 13:19:48 +10:00

chat53

These are the clients for chat53, chat over DNS.

Security

This uses encryption, X25519 and AES-GCM. (Unfortunately post quantum algorithms are hard to fit in DNS). The use of X25519 is in some ways similar to DNSCurve, however this uses AES-GCM because browsers have support via the WebCrypto API for that.

The encryption has not been reviewed and also deliberately makes trade offs that leak metadata, so that the chat history can be cached in DNS. It is also not end-to-end encryption, the server sees decrypted messages when they are sent. See the spec for details.

(If you find any security issues, email dgl at dgl dot cx).

Go CLI version

The Go version was initially generated from the spec by Claude, but much refactoring by hand.

Installing

$ go install gi.tl/dgl/chat53@latest
$ chat53
[If that doesn't work:]
$ PATH="$PATH:$(go env GOPATH)/bin"

Screenshot

Web version

The web version is partly converted from the Go version with Claude, although contains manual changes to keep the property that it can be served from a file:// URL and still work.

It can also use either Google's JSON DoH backend, or any DoH server which sends an Access-Control-Allow-Origin header which allows it (i.e. usually *). Change this by setting google = false and changing the hardcoded server.

Server

The server can be found at https://codeberg.org/dgl/chat53-server.