SeraphIRC

Classic feel, modern capability

SeraphIRC is a polished IRC client that runs on desktop, iPhone, and iPad. It supports IRCv3 and connects through Soju, ZNC, or directly to an IRC network.

Just shipped

News

What just landed in SeraphIRC Desktop, newest first. Use the arrows to page back through the earlier announcements.

Theme Marketplace seraphirc.chat · Aug 4, 2026 New

Step right up, the Marketplace is open

Custom themes were never meant to stay on one machine. The Theme Marketplace is now live on the site: a community shelf where SeraphIRC users show off their handiwork and everyone else takes it home. Browse the lineup, preview any theme on a little mock client right in the page, and download whatever catches your eye.

Made one worth bragging about? Email it in and it goes up on the shelf with your nick on it. Every submission is checked by a person before it hangs, so the racks stay clean. Come on by, the awning is up.

seraphirc.chat/marketplace

Custom Themes 5.0.28-alpha · Aug 4, 2026

Seraph your way

SeraphIRC ships with 21 themes, and until today that was the whole menu. Now any of them is a starting point. Clone one, give it a name, and recolor it from a floating editor that paints every change onto the running app as you make it. Every color is named for the thing it paints on screen, so you are choosing "Timestamps" or "Selected channel background", not deciphering a stylesheet. Pick from the palette the theme already uses, dial in something new on a full color wheel, or build a gradient. Your client, your colors.

Made something worth showing off? Export it. A theme travels as a small file that carries its name and colors and nothing else, never your networks or credentials, so you can hand it to a friend or drop it in a channel. Imported themes are checked before a single color lands. And the originals are never touched, so there is always a way back.

Settings > Preferences > Appearance

Multiline & Replies 5.0.24-alpha · Aug 2, 2026

Additional IRCv3 Capabilities

Two IRCv3 extensions land together. Multiline lets a long message, or one with line breaks in it, travel as a single message instead of being chopped into a run of separate lines. Replies point a message at the one it answers, so the client draws that parent above it with a jump back to where it sits in the conversation.

Both fail gracefully, because most of IRC has not caught up yet. Multiline is used only where the network offers it and your message actually needs it. A reply that cannot be tagged opens with nick: instead, the way IRC has addressed people for thirty years, so it reads correctly on every client ever written. Where the tag does travel, SeraphIRC hides the now-redundant prefix and draws the preview in its place.

Right-click a message > Reply

Giphy 5.0.23-alpha · Aug 2, 2026

Some things are better said in motion

GIPHY has arrived. A GIF picker now sits in the composer next to the emoji button, or use /giphy to search via command. Find the one that says it better than you were going to, and send it.

Off until you bring your own Giphy API key. SeraphIRC ships no key and runs no proxy, so your searches go to Giphy under your agreement and SeraphIRC never sees them. The key lives in your operating system's keyring, never in a config file.

Settings > Integrations

Modern Mode 5.0.19-alpha · Jul 31, 2026

A fresh take on conversation

If Discord-style layouts are your thing, Modern Mode is familiar ground. SeraphIRC brings that grouped, avatar-led conversational flow to IRC. A refreshing change of pace from the classic transcript.

Avatars ride IRCv3 metadata and are opt-in, because fetching someone's picture tells their server your IP address. Anyone without one gets an identicon drawn on your own machine from their nick or account. Nothing is asked of a third party to build it.

Settings > Preferences > Appearance

Send Guard 5.0.18-alpha · Jul 30, 2026

Check yourself, before you... yeah.

IRC has no undo. Send Guard reads a message on its way to the wire and holds the ones that look like an accident: a password typed into a channel instead of a services window, a private line addressed to someone who isn't in the room, a forty-line paste into a busy channel.

A held message waits in a banner above the composer that names the destination and says which rule stopped it. Enter is deliberately not the confirm key, because the reflex that just sent the secret is a second tap on Enter. Send anyway is Ctrl+Enter, or Cmd+Enter on macOS, or a click. Escape drops the line, and editing it runs the check again.

Settings > Send Guard

Seraph Transfer 5.0.15-alpha · Jul 28, 2026

Innovating file transfers on IRC

Peer-to-peer file transfer that works from behind a home router. A rendezvous server introduces the two clients and the file rides mutually authenticated TLS 1.3 from your machine to theirs. No upload host, no copy left on somebody else's disk. NO CLEARTEXT.

Peers are pinned the first time you transfer with them. If that identity ever changes, the transfer stops and asks instead of quietly carrying on.

/seraphtransfer <nick>

Seraph Chat 5.0.15-alpha · Jul 28, 2026

Direct, encrypted, no logs

An encrypted conversation over that same direct link, in a floating window that never becomes a buffer. Nothing is logged, stored, or restored, and the invitation itself never lands in a query window.

Close the window and the conversation is gone from both machines. There is no history to hand over later, because there was never any history.

/seraphchat <nick>

SeraphIRC on desktop and mobile

The desktop app is a full graphical client with windows and layered tiling, embracing modern aesthetics. Health diagnostics are built into the app for quickly and effectively debugging connectivity, authentication and other issues when needed.

Desktop

Alpha

Collapse or expand the network tree on the left, and customize your window/tile layout on the right. Choose from Modern UI (shown) or Classic Mode, giving you that original IRC feel.

Mobile

Alpha

The same networks and channels on your iPhone or iPad. It connects through your Soju bouncer, so unread state and history stay in sync with the desktop.

Features

Connect your way

If you keep IRC running through a bouncer, SeraphIRC understands that setup natively. If you don't, direct connections behave like any classic client.

Protocol support

Supported · 26

  • account-notify
  • account-tag
  • away-notify
  • batch
  • cap-notify
  • chghost
  • draft/chathistory
  • draft/metadata-2
  • draft/multiline
  • draft/no-implicit-names
  • draft/read-marker
  • +draft/reply
  • echo-message
  • extended-join
  • invite-notify
  • message-tags
  • monitor
  • msgid
  • multi-prefix
  • sasl (plain)
  • server-time
  • soju.im/bouncer-networks
  • soju.im/bouncer-networks-notify
  • soju.im/FILEHOST
  • soju.im/webpush
  • userhost-in-names

Partial · 3

  • labeled-response
  • setname
  • standard-replies

"Partial" means the capability is negotiated but not every code path uses it yet. Where a server advertises the ratified name instead of a draft one, the unprefixed variant (chathistory, read-marker, no-implicit-names) is negotiated too.

+draft/reply is a client-only tag rather than a capability. It rides on message-tags and goes out under both spellings, and SeraphIRC offers Reply as a threaded reply only where CLIENTTAGDENY says the server will pass it along. Everywhere else the same action addresses the nick instead.

Commands

Type /help in the client for the same list, or /help <command> for detail on one. It's reproduced here for convenience.

Connection

/connect or /connect <server> [port] [remote]Connect the active network or request a server link
/cycle [#channel]Part and rejoin a channel
/disconnectImmediately disconnect the active network
/join <#channel>Join a channel
/part [#channel] [reason]Leave a channel
/partallLeave all joined channels on the active network
/quit [reason]Gracefully quit the active network
/reconnectReconnect the active network
/znc <command>Send a command to ZNC

Messaging

/ctcp <target> <command> [args]Send a CTCP request
/dcc send <nick> [path] | /dcc get [nick] | /dcc decline [nick] | /dcc cancel <id|nick> | /dcc listSend and receive files directly with another user
/format, /f <message>Send one message with text formatting applied
/format-me <action>Send an action message with formatting applied
/format-msg <nick|#channel> <message>Send a targeted message with formatting applied
/format-notice <target> <message>Send a NOTICE with formatting applied
/giphy [search terms]Open the GIF picker, optionally with a search already run
/me <action>Send an action message
/msg <nick|#channel> <message>Send a private or target message
/notice <target> <message>Send an IRC NOTICE
/plain <message>Send one message with text formatting disabled
/plain-me <action>Send an action message with formatting disabled
/plain-msg <nick|#channel> <message>Send a targeted message with formatting disabled
/plain-notice <target> <message>Send a NOTICE with formatting disabled
/query <nick>Open a private query buffer
/seraphchat, /schat <nick>Start an encrypted direct chat with another user
/seraphtransfer <nick>Send a file directly with Seraph Transfer

IRC

/accept <+nick|-nick|*>Manage your caller-ID (+g) accept list
/admin [server]Request server administrator information
/away [message]Mark yourself away
/backClear away status
/ban <nick|mask> or /ban <#channel> <nick|mask>Ban a nick or mask from a channel
/deop <nick>Remove channel operator status
/devoice <nick>Remove voice from a nick
/info [server]Request server information
/invite <nick> [#channel]Invite a nick to a channel
/ison <nick> [nick...]Check whether nicknames are online
/kick <nick> [reason] or /kick <#channel> <nick> [reason]Kick a user from a channel
/kickban <nick> [reason] or /kickban <#channel> <nick> [reason]Ban and kick a user from a channel
/knock <#channel> [reason]Request an invite to an invite-only channel
/list [pattern]Open channel list
/lusers [args]Request IRC network user/server statistics
/mode <target> [modes] [args]Send MODE command
/motd [server]Fetch the server Message of the Day
/names [#channel]Request channel user names
/nick <newnick>Change nickname
/op <nick>Give channel operator status
/time [server]Request the server time
/topic [text]Show or set channel topic
/unban <nick|mask> or /unban <#channel> <nick|mask>Remove a ban from a channel
/userhost <nick> [nick...]Request user/host information
/users [args]Request the server USERS listing
/voice <nick>Give voice to a nick
/who <mask>Send WHO command
/whois <nick>Request WHOIS information
/whowas <nickname>Shows information about a user who has quit

IRC Operator

/chghost <nick> <newhost>Change a user's displayed host
/cloak <nick>Manage hostname cloaking, if supported
/die <reason>Shut down the IRC server
/gline <mask> <reason>Set a network-wide ban, if supported
/globops <message>Message all online IRC operators
/kill <nick> <reason>Forcibly disconnect a user
/kline <mask> [duration] <reason>Set a server-level host/IP ban
/linksList linked servers
/locops <message>Message local IRC operators
/mapShow network topology, if supported
/oper <user> <password>Gain IRC operator privileges
/rehash [config]Reload server configuration
/restart <reason>Restart the IRC server
/sethost <nick> <host>Set a user's displayed host
/shun <mask> <reason>Silently block commands from a user
/silence [args...]Manage server-side silence entries
/squit <server> <reason>Disconnect a server
/stats <flag>Query server statistics
/trace <nick|server>Trace a user or server route
/uncloak <nick>Remove hostname cloaking, if supported
/unkline <mask>Remove a K-line
/wallops <message>Broadcast to users with wallops enabled
/zline <ip> <reason>Set an IP-level ban, if supported

Services

/botserv, /bs <command>Message BotServ
/chanserv, /cs <command>Message ChanServ
/helpserv <command>Message HelpServ
/hostserv, /hs <command>Message HostServ
/memoserv, /ms <command>Message MemoServ
/nickserv, /ns <command>Message NickServ
/operserv, /os <command>Message OperServ

Buffers

/buffersList buffers
/clearClear the current visible buffer without deleting logs
/clearall -a | -sClear visible buffers without deleting logs
/closeClose the current buffer
/currentShow the current buffer
/serverOpen the server buffer
/show [count]Show recent current-buffer messages
/stateShow buffer state summary
/switch <buffer>Switch to a buffer

Client

/aboutOpen About SeraphIRC
/alias <name> <command>Create or update a command alias
/exitExit SeraphIRC
/help [command]Show command help
/ignore <nick>Ignore a nick on the current network
/notify [nick] [comment]Manage notify list entries
/unalias <name>Remove a command alias
/unignore <nick>Stop ignoring a nick

Advanced

/raw, /quote <IRC line>Send a raw IRC line

Hotkeys

Ctrl+SOpen or close the Quick Switcher (Cmd+S on macOS, and Ctrl+K works too)
Ctrl+TCollapse or expand the treebar
Ctrl+UCollapse or expand the member list in the current channel window
Ctrl+← / Ctrl+→Switch the treebar between Networks and Bouncers view
Ctrl+FFind in the current window (Cmd+F on macOS)
Ctrl+Shift+RRestore the default appearance if a theme leaves the interface unreadable, with Undo offered (Cmd+Shift+R on macOS)
Shift+EnterInsert a line break, and never sends
Ctrl+EnterConfirm a Send Guard hold and send anyway (Cmd+Enter on macOS)
TabComplete a nickname or command in the composer
/ Step through your input history, or move through an open suggestion list

Formatting

Two input syntaxes compile to standard IRC control codes, so other clients see ordinary formatting. Markdown is inline only, matching IRC formatting rather than CommonMark. Tokens are a superset that adds what markdown cannot express.

Markup

EffectMarkdownToken
Italic_italic_$i … $i
Bold__bold__$b … $b
Bold italic___both___$b$i … $i$b
Underlinen/a$u … $u
Strikethrough~~strike~~$s … $s
Monospace`code`$m … $m
Foreground colorn/a$c<n> … $c
Foreground + backgroundn/a$c<n>,<m> … $c
Spoiler||spoiler||n/a

Tokens are toggles, like the wire bytes they compile to, so overlapping ranges are legal: $ba $ib $bc $i renders bold "a ", bold italic "b", italic "c".

Colors

CodeAliasDark themesLight themes
00white#ffffff#98a2ad
01black#565f6e#000000
02blue#6272e3#00007f
03green#00a300#008000
04red#ff5555#d20000
05brown#b0605c#7f0000
06magenta#c25fc2#9c009c
07orange#fc7f00#d96c00
08yellow#ffff00#b08d00
09lightgreen#00fc00#2f9e44
10cyan#00b3b3#008080
11lightcyan#00ffff#0e8a8a
12lightblue#6a8cff#0000fc
13pink#ff00ff#d6009c
14grey#8a8a8a#6b6b6b
15lightgrey#d2d2d2#9aa0a6

Numbers follow modern.ircdocs.horse: 16–98 use the fixed extended palette, 99 is the default color. Aliases and numbers are interchangeable, so $cred,lightgreen and $c04,09 send the same bytes. Themes may override individual entries for contrast, so the two columns are defaults, not fixed values.

Changelog

What changed in each release of SeraphIRC Desktop. Pick a version to read its notes, or grab the builds from the releases page.

Aug 4, 2026
  • Custom themes: clone any built-in theme and recolor it from a floating editor that previews every change on the running app. Colors are named for what they paint, with the theme's own palette, a full color wheel, and gradients for surfaces. Built-in themes are never edited in place, and Restore UI Defaults leaves your creations alone.
  • Share themes as files: export a theme, import somebody else's. A theme file carries a name and colors and nothing else, never your networks or credentials, and imported values are strictly checked so a shared theme cannot reach the network or smuggle anything past the picker.
  • A way back from an unreadable theme: if a theme leaves the interface illegible, Ctrl+Shift+R (Cmd+Shift+R on macOS) restores the default appearance, with Undo offered in case you reach for it by accident. Security notices now keep their own fixed, high-contrast colors under every theme.

Contact