IRC technology news from the first half of 2025
Categories: IRC
The pace of IRC hacking remained intense during the past development season, with desktop clients standing out in particular. One noteworthy new project is eIRC by Jesse Greathouse. It is proposed as an alternative to resource-hungry enterprise messaging systems.
Protocol specifications
A work-in-progress spec was added for extended-isupport
, which allows servers to send information to the client before connection registration.
Documentation
Modern IRC Client Protocol docs received updates and clarifications related to RPL_CREATIONTIME
and RPL_LINKS
.
Mobile clients
goguma - for mobile Linux, iOS and Android
Support was added for message reactions and deleting messages, a date indicator was added to help keep track of things while scrolling, notification handling was made more robust and initial support was added for ISUPPORT
command and the work-in-progress metadata spec, making use of it to synchronise muted and pinned buffers when using the soju bouncer.
IRCCloud - connect to any IRC server out there, and even Slack workspaces
The Android and iOS apps received improvements to the parsing of CLIENTTAGDENY
from ISUPPORT
to enable Reply / Edit on more servers, a button was added for requesting a password reset from the login screen and support was added for displaying deleted messages. The Android version additionally got improvements in word wrapping and whitespace rendering.
Weechat-Android - WeeChat relay client for Android
An option was added to not move hot buffers to the top of the buffer list.
WeechatRN - WeeChat relay client for mobile using WebSockets
Keyboard handling was improved.

Reacting to a message in Goguma
Web clients

ObsidianIRC screenshot
gamja – a bare-bones web client
Support was added for deleted (redacted) messages and accessibility was improved.
KiwiIRC – uses static files and supports theming and plugins (JavaScript)
Cloudflare Turnstile is now supported as an alternative to CAPTCHAs, the startup screen was made more customisable, plugins can now add buttons to the message info component and the UI was made more mobile-friendly.
ObsidianIRC – next generation client (TypeScript)
This client is very new and is built using React, TypeScript and TailwindCSS. Despite the newness, it already supports features like SASL
authentication, typing notifications and replies.
Web-IRC – a feature-rich WebSocket client (JavaScript)
The initial release of this WebSocket-reliant client was in 2022 and now after a pause of a couple of years, development resumed again with additions such as SASL
authentication support.
Desktop clients

MERK screenshot
comlink - an experimental client
Many fundamental features were added to this new client. IRCv3 implementations include typing notifications.
ERC - an Emacs IRC client
The spelling module now makes better use of Flyspell’s API and library access for ban lists was made reliable.
GrumpyChat - modern, yet oldschool client with distributed core, written in C++
After a 3-year hiatus, work started on adding Qt6 support.
Halloy – cross-platform client written in Rust
URL links now get image and card previews, autocomplete can be customised, a full screen mode was added, notification behaviour can be tweaked, support was added for setname
and Standard Replies, case mapping is now supported via ISUPPORT
, Tor can be used as a proxy, using emojis was made more convenient, highlighting can be configured based on regular expressions and words, discovering and sharing themes was made easier, a modal prompt can optionally be displayed before opening a URL, easy ways to mark a buffer or an entire server as read were added and a /hop
command for parting the current channel and joining a new one was added alongside lots of configuration options to control the look and feel.
Irken – a small, modular client written in Tcl/Tk
Handling of character encodings was made more robust and an issue with sending multi-line messages was fixed.
KVIrc – client built with Qt
SASL EXTERNAL
now supports sending an authorisation ID to help with ZNC bouncer connections and the KDE tray icon works once more for window activation.
MERK – cross-platform, multiple-document interface client
This is a new client from the creator of Ərk. Work started already in 2021, but only resumed during H1 2025. The client uses multiple-document interface style and has over 180 different settings to tweak. The project is currently looking for help in graphic design and figuring out an easy Linux packaging process.
mIRC – 95 ‘til infinity (Windows-only)
Dark mode is now supported on Windows, WebP images can be loaded and an option was added to shade alternate lines.
Pidgin - a multi-network/protocol chat application
Two experimental releases of Pidgin 3.0 were made (2.91.0, 2.91.1) with fundamental work going into features like message notifications and preference dialogs. On the protocol side, additions include IRC formatting and support for away-notify
.
Polari - GNOME’s client
Work went into UI modernisation.
RudeChat - Python client designed to be fast, portable, and fun
The UI was ported from Tkinter to PyQt for better performance and macOS builds are now available.
Terminal clients
Irssi - your text mode chatting application since 1999
SASL
authentication negotiation was made more robust.
senpai - TUI client made for bouncers
Support was added for RGB colors in Windows Terminal and pinning and muting user buffers per the METADATA
spec.
SMDT - Sega Megadrive/Genesis terminal emulator, telnet and IRC client
Fixes were made to word wrapping and multi-line messages now look nicer.
Swirc - lightweight ICB and IRC client
Tab completion was expanded to more commands and the interplay with ZNC was improved.
tiny – client written in Rust
Some key handling improvements were made and support was added for mouse wheel events, mapping to message scrolling by default.
WeeChat - the extensible chat client
A /pipe
command was added for redirecting command output alongside many other additions and fixes.
Bouncers
They stay online, so you don’t have to!

Screenshot of eIRC’s web client
eIRC – an enterprise chat system based on IRC
As the tagline says, this new thing is really a system of applications, so could be included in most of the categories here. While it includes a JavaScript frontend, it works with any application supporting WebSockets. It ships an IRC protocol proxy written in modern C++ and a WebSocket server built inside Nginx workers. InspIRCd is used for the IRC server itself. A Laravel (PHP) application and a database handle persistent user management, chatroom metadata and authentication with OAuth2. An optional Redis-backed history bridge can be used.
soju – multi-user bouncer
Support was added for draft/message-redaction
, improvements were made to the documentation (guides, man pages and command line help) and messages are now stored in a database by default.
ZNC - an advanced bouncer
Support for SASL
v3.1 and v3.2, message-tags
and invite-notify
was implemented, unix sockets can now be used for listeners, connections and modules and performance was improved.
Daemons
Ergo - combining the features of an ircd, a services framework, and a bouncer
Support was added for draft/webpush
spec, allowing to make use of web push notifications, the draft/metadata-2
spec was implemented, an HTTP API was added, the configuration now allows to publish arbitrary ISUPPORT
tokens, aliases for server commands can be defined and HTTP DoS attack mitigation was added.
eris - modern IRC Server / Daemon written in Go that has a heavy focus on security and privacy
The codebase received a cleanup after a 3-year hiatus and support was added for full Let’s Encrypt (ACME) TLS certificates via DNS-01 challenge supporting Cloudflare and GCore.
InspIRCd - stable, high-performance and modular
Support was added for help channels that grant privileges to helpers upon joining, the performance of message formatting was improved, an OpenRC init script was added and flag support was added to rline (regular expressions to block user connections).
Ircd-hybrid - a lightweight, high-performance daemon
channel::max_kick_length
and general::max_away_length
configuration directives were added to allow to specify the maximum length of KICK
and AWAY
messages that the server will accept from a client, DNS lookups can now be disabled with the general::disable_dns
directive and general::ident_timeout
now controls the wait time for Ident replies.
ProvisionIRCd - a modern daemon written in Python
The codebase received heavy restructuring and refactoring and support was added for draft/no-implicit-names
.
Sable – an experimental chat server
Work continued on chat history.
Solanum - an IRCd for unified networks
Applying oper privileges was made more robust and the documentation was improved.
UnrealIRCd - the most widely deployed IRCd
The spamfilter was made more flexible, the antimixedutf8 spam fighting module was made more robust and a SPAMINFO
command was added to give diagnostic information about a line of spam text.
Bots
This and the next section has been curated with programming language diversity in mind.
Botto (Node.js)
Quote and stats commands were added, a Bluesky link parser was added and admin commands were added for suppressing commands and observers per channel and for checking which channels the bot is banned from.
Cardinal – bot built with Twisted library with a focus on ease of development (Python)
Youtube shorts link parsing was added.
Eggdrop - the oldest bot still in active development (C/Tcl)
SCRAM
authentication method for SASL was added, a notice is now displayed about expired TLS certificates at startup and owner login, a CHANSET
bind was added to allow users to trigger Tcl procs when a channel setting is modified, a Python script tutorial was added and Python support was polished.
irccd - allows both C and JavaScript plugins (C)
An asynchronous Irccd.Http
API was added and the auto-reconnect feature is now automatically enabled.
kameloso - IRC and Twitch bot (D)
The persistence service was improved and made configurable and Counter messages can now be sent as emotes.
Limnoria - robust, full-featured, and user/programmer-friendly bot (Python)
The URL whitelist plugin is now channel-specific and many plugins received cleanups related to Python version checks.
PircBotX – library with IRCv3 CAP negotiation support (Java)
DNS resolution now works through proxies as well.
Scala-IRC-bot - PircBotX based bot (Scala)
An option was added to only join channels after NickServ confirms a successful login.
Skybot - multithreaded and multinetwork bot (Python)
A Mastodon link parser was added.
Sopel - lightweight, easy-to-use utility bot (Python)
The safety plugin that alerts about malicious URLs was made more robust and the tld and unicode plugins were extracted into separate packages.
Libraries, frameworks and utilities
Convoyeur - IRCv3 FILEHOST extension adapter to external file upload services (Rust)
The initial 0.1.0 release of this new utility was made in June. Convoyeur sits behind the bouncer or server that implements FILEHOST and proxies upload requests to other places.
Dialect - IRC parsing library (D)
A simple example bot client was added and RPL_WHOISACTUALLY
parsing now works with IPv6 addresses.
go-ircevo - an enhanced framework for interacting with servers (Go)
New methods were added for nickname management.
Ibis - a GObject based library (C)
Support was added for handling modes and batches, IRC Formatting is now parsed into a format that UIs can use and client side pings were implemented.
IRCKit - an asynchronous pure Swift library using the Apple NIO framework
It is now possible to send non-standard commands.
NeedleTailIRC - a Swift SDK for implementing IRC protocol functionality with modern concurrency features
Launched in 2024, this Swift package is now production-ready and can be used to build clients, servers and bots.
zircon - a simple library written in Zig
The initial release was made in March and by now the library supports basic commands, but not IRCv3 features. It is aimed for creating clients or bots.
Bridges
Dis4IRC - a modern Discord <-> IRC bridge
Discord Message Forwards now work.
discord-ircv3 – bridge with support for IRCv3 features
Reacts are now transmitted from IRC to Discord.
Heisenbridge - a bouncer-style Matrix IRC bridge
Support was added for media captions.
localslackirc - gateway for Slack, running on localhost for one user
Nicknames are now marked as offline, if they are away on Slack.
Matrix2051 - IRC server backed by Matrix
Parsing of IRC message tags was made more robust, compatibility with Irssi regarding capability messages was improved and a matrix.org login issue was fixed.
Reliable Discord-client IRC Daemon (rdircd) - personal discord-client to irc-server translation daemon
Compatibility with irssi and ZNC was improved, history can now be automatically fetched and replayed from Discord servers and a recv-replacements
configuration was added for blocking or modify received messages.
Services
Taking care of user accounts and channels among other things.
Anope – highly modular set of services
Many additions were made, including, but not limited to a redesigned RPC interface, support for JSON-RPC, example JavaScript and Ruby libraries for accessing the RPC interface, support for multiple targets in chanserv/modes, OPERONLY
, UNUSED
and VANITY
filters for botserv/botlist, expanded Atheme import capabilities, support for “services cloak” system in InspIRCd, support for hashed operator passwords and support for code authentication via IRC.
Atheme - for large networks with high scalability requirements
The InspIRCd protocol module was improved.