ServerlessIRCd is an IRC server where the protocol logic lives in a platform-agnostic TypeScript core. Two adapters run that core on Cloudflare Workers (Durable Objects) and AWS (API Gateway WebSockets + Lambda + DynamoDB).
- Reducer-based protocol core: each command is a pure function
- WebSocket and
irc+tls(port 6697) transports - IRCv3 extensions: message-tags, chathistory, SASL, labeled-response
- Per-datum authoritative state held in a single location
Connect
ServerlessIRCd speaks IRC over secure WebSocket
(wss://, port 443) as its primary
transport, and optionally raw irc+tls on port
6697. Replace irc.example.com with your
deployed Worker hostname in the snippets below. This page is
static and identical across staging and prod.
wss on port 443, same origin as this
page. No client install or bridge required.
Connect over wss (port 443) using the
snippet below, or directly over irc+tls on port
6697 when the TCP+TLS surface is deployed.
/server add ircd irc.example.com/443
/set irc.server.ircd.ssl on
/connect ircd
/join #test
For the irc+tls :6697 path, swap the port above for
6697. The TCP surface is a separate deployment
(Cloudflare Spectrum + Container); see the
Cloudflare TCP Deployment Guide.
These TCP-only IRC clients do not support WebSocket natively.
Use tools/tcp-ws-forwarder to bridge them: it
listens on a local TCP port and forwards each IRC line over
wss to the Worker, negotiating the
binary.ircv3.net subprotocol upstream.
pnpm --filter tcp-ws-forwarder start \
--target wss://irc.example.com/ --listen-port 16667
Then point HexChat / irssi at 127.0.0.1:16667
(TLS off — the bridge is local). Bridging instructions
are in the
Web Client Guide.
Both support WebSocket natively. Add a network pointing at
wss://irc.example.com/ (port 443, TLS
on); no bridge required.