An open source IRC server (ircd) with full IRCv3 support, TLS, cloaking, and anti-flood and anti-spam systems, running on Linux, macOS and Windows.
ergochat/ergo
A modern IRC server written in Go, combining an ircd, a services framework, and a bouncer in one daemon.
- Stars
- 3,357
- Forks
- 249
- Open issues
- 213
- Last commit
- 6 days ago
What is it?
Ergo is an IRC server (ircd) written in Go. It bundles account management through NickServ and ChanServ, stores and replays message history, and lets multiple clients share one nickname, so it works as both a chat server and a bouncer. It implements IRCv3 extensively and is designed to serve as an IRCv3 reference implementation.
Setup is intended to be simple: copy the default YAML config, generate TLS certificates with the built-in command, and run the binary. Configuration is reloadable at runtime (rehashing), including TLS certificates. Passwords are stored with bcrypt, and the server supports SASL, client certificates, IP cloaking, and running as a Tor hidden service.
Builds are available as release binaries, Docker images, and from source with vendored dependencies.
Key features
- 01Built-in NickServ, ChanServ and HostServ for accounts, channel registration and vanity hosts
- 02Stores and replays message history, and allows multiple clients to share one nickname
- 03Native TLS support, including client certificate authentication
- 04Extensive IRCv3 support and SASL authentication
- 05Runtime reloading of YAML config and TLS certificates
- 06Optional LDAP integration and a unified ban system (UBAN)
Use cases
- Running a private or community IRC network with registered accounts and channels
- Hosting an IRC server that keeps history so users can reconnect without losing messages
- Serving as a reference server when testing IRCv3 client features
- Operating an IRC network that is reachable over Tor
Quick start
- 1
Download the latest release from the releases page
- 2
Copy the default config to ircd.yaml
cp default.yaml ircd.yaml - 3
Generate TLS certificates
./ergo mkcerts - 4
Run the server
./ergo run
Things to know
- The quick start relies on a downloaded release, so you must edit the config yourself before running.
- Production use requires extra work such as valid TLS certificates and systemd setup, as the README notes.
In collections
Topics
FAQ
- What is ergo?
- A modern IRC server written in Go, combining an ircd, a services framework, and a bouncer in one daemon. Ergo is an IRC server (ircd) written in Go. It bundles account management through NickServ and ChanServ, stores and replays message history, and lets multiple clients share one nickname, so it works as both a chat server and a bouncer. It implements IRCv3 extensively and is designed to serve as an IRCv3 reference implementation.
- Is ergo free to use? What license does it have?
- ergo is open source under the MIT license. Check the license terms before using it in commercial products.
- Is ergo still maintained?
- Actively maintained. The last commit to ergo was on Nov 1, 2026.
- What can I use ergo for?
- Running a private or community IRC network with registered accounts and channels Hosting an IRC server that keeps history so users can reconnect without losing messages Serving as a reference server when testing IRCv3 client features Operating an IRC network that is reachable over Tor
- How do I install ergo?
- Download the latest release from the releases page Copy the default config to ircd.yaml: cp default.yaml ircd.yaml Generate TLS certificates: ./ergo mkcerts Run the server: ./ergo run
- Where can I get ergo?
- The source code and installation instructions are on GitHub: https://github.com/ergochat/ergo
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A free, portable and lightweight Internet Relay Chat (IRC) server for small or private networks, written in C.
A high-performance IRCv3 chat server for UNIX-like and Windows systems, written in C++.
A modern, responsive, self-hosted web IRC client that stays connected to IRC servers while you are offline.
Self-hostable instant messaging server in Go with native Android, iOS and web clients, plus JSON/websocket and gRPC APIs.
A Java XMPP real-time collaboration server for instant messaging, licensed under Apache 2.0.