Relay Features¶
Relay is a self-hosted web IRC client that keeps IRC connections running while you are away and makes the same account available across browsers, phones, and desktop clients. This page is the detailed reference for Relay-specific capabilities. Basic IRC commands inherited from The Lounge are available in the client's built-in Help window; protocol support is listed on the IRCv3 page.
Feature availability can depend on the connected IRC server, the configured message-storage backend, whether the instance is private or public, and the administrator's settings. Conditions are called out below where they matter.
Core experience and platforms¶
- Always connected. Relay keeps IRC network connections alive while your browser is closed or your device is offline.
- Synchronized sessions. Resume your open networks, channels, settings, mentions, and message history from another signed-in client when settings synchronization is enabled.
- Responsive client. The interface works across desktop, tablet, and phone layouts, including touch gestures for moving between the channel list, chat, and user list.
- Progressive Web App. Install the web client to a phone or desktop home screen from a supported browser. See Client apps.
- Standalone desktop client. The native desktop shell uses the same Relay web client and adds native packaging and desktop-specific upload and notification behavior. See Client apps.
- Self-hosted Go server. Relay runs as a single Go binary or Docker container. Node/npm is needed to build the client, not to run the built server.
Messaging and conversations¶
- IRC reply threads. Open a thread from a reply count or a channel's All threads view, browse nested replies, reply within a thread, and load older persisted threads in pages. Thread history can survive refreshes when message storage is enabled, and thread views work on desktop and mobile.
- Replies and reactions. Add emoji reactions to messages and reply to messages from the context menu or thread interface. Structured message storage persists reactions across reloads.
- Message IDs with local fallback. Relay preserves opaque server-supplied
msgidvalues for replies, reactions, history, and search. If a server or bouncer echoes one of your messages without an ID, Relay creates a local-only fallback ID so replies and reactions still work inside Relay. That fallback is not understood by other IRC clients. - Multiline messages. Send line-broken or unusually long text as one
coherent message when the network supports IRCv3
draft/multiline; Relay falls back to conventional IRC line splitting when it does not. - Shareable message links. On private instances, use the message link action to create an expiring read-only page containing the message author, timestamp, text, and reactions. Shares follow the server-wide upload expiration policy; message sharing is unavailable in public mode.
- Message search. Search logged messages with autocomplete, optional date filters, highlighted matches, paginated older results, and exact navigation back into the live channel.
- Server-backed history. On networks advertising IRCv3
draft/chathistory, Relay can request older channel messages from the server while loading more history, with local and bouncer history remaining available as fallbacks. - Unread activity. Unread markers, mention counts, recent mentions, and
keyboard navigation make it easy to return to conversations that changed
while you were away. When
draft/read-markeris available, Relay also synchronizes read positions with the server or bouncer. - Link previews. Expand website and media previews when the administrator enables link prefetching. Copy the original URL directly from a preview's message context menu.
- Click-to-play video embeds. When enabled by the administrator, supported video links can show responsive inline players. Playback starts only after a click, and users can disable video embeds independently of other previews.
- IRC text styling. Use the composer toolbar to preview and send bold, italic, underline, strikethrough, monospace, reset, and IRC color formatting. Wrap message, notice, or action content in fenced code blocks for readable, horizontally scrollable monospace formatting, with an optional language label. Enable syntax highlighting in Settings > Appearance to highlight supported languages with a selectable Prism theme.
- Full channel topics. Open long, multiline, or link-heavy topics in a dedicated dialog on desktop and mobile while retaining quick inline editing.
- Typing indicators. See who is typing in a channel or private message and
optionally send your own state through IRCv3
+typing. The single control is in Settings > General and governs both sending and receiving. - Expanded emoji support. Relay includes a broad, generated emoji set for rendering and composer autocomplete.
- Standard replies. On networks advertising
standard-replies, Relay displaysFAIL,WARN, andNOTEreplies with their command, code, and description. Other networks continue using their existing numerics and notices.
Notifications, activity, and presence¶
- Push and browser notifications. Receive alerts for mentions, highlights, private messages, replies, and reactions when the relevant notification category is enabled.
- In-window notifications. Show lightweight alerts inside the active Relay window. Alerts can dismiss themselves or open the relevant channel.
- Configurable sounds. Select and preview an expanded set of bundled sounds, or upload a custom MP3, WAV, or Ogg/Opus sound up to 2 MB and 10 seconds on a private instance with uploads enabled.
- Per-channel notification overrides. Enable notifications for every message in an individual channel or private conversation without changing global notification categories.
- Invite notifications. On networks advertising IRCv3
invite-notify, see invitations in Relay and optionally receive a notification before joining. - Query presence. Private-message tabs can show online, away, and offline
state using IRC
MONITOR, with visibility controlled in Settings > Appearance. - Away toggle. Set or clear IRC away status from the composer. The expanded control shows Online, Away, or Offline, and Relay waits for server confirmation before changing the displayed state.
Networks, setup, and navigation¶
- Guided network setup. Add a network through Basics, Authentication, and
Advanced steps; test reachability before saving; or start from an
irc://orircs://URL. - TLS and authentication. Configure TLS certificate verification, server passwords, SASL PLAIN, or SASL EXTERNAL. Relay generates and manages the client certificate used by SASL EXTERNAL.
- SOCKS5 proxy connections. Route an individual IRC network through an authenticated SOCKS5 proxy.
- Network diagnostics. Open diagnostics from a network's context menu to inspect connection state, latency, server time, TLS/SASL/WebIRC status, bouncer detection, and negotiated capabilities, then refresh or copy the report.
- IRCv3 STS. Relay remembers strict transport-security policies and automatically upgrades a matching insecure connection when the policy provides a secure port.
- WebIRC gateway forwarding. When configured by an administrator, Relay forwards the authenticated browser's client address to a trusted IRC gateway before capability negotiation. See WebIRC configuration.
- Network groups. Organize networks into collapsible groups, reorder them, and drag networks between groups when the administrator permits network groups.
- Auto-join controls. Choose whether a network joins saved channels on connect and enable or disable auto-join for individual saved channels.
- Favorite channels. Keep selected channels above other channels in the network list, with an Appearance option to control their visibility when a network is collapsed.
- Custom network icons. Upload an icon for a network on eligible private instances, or use the IRC-provided icon or a generated fallback.
- Command palette. Press Ctrl+P or ⌘+P to search channels, settings, actions, and available commands.
- Searchable Settings. Search all settings available to the current user and jump directly to the matching control.
- Mobile gestures. Swipe to hide or reveal the channel and user lists, and use two-finger horizontal swipes to move between windows.
- Channel-list refresh. Refresh
/listresults without leaving the channel list view.
Identity and customization¶
- IRC account tracking. Show authenticated account badges and account names when the network provides IRCv3 account-tracking data.
- IRC user metadata. Set a display name, homepage, identity color, and
custom status in Settings > Account. Relay synchronizes these values over
IRC when
draft/metadata-2is available and keeps them local otherwise. - Persistent avatars. Upload, change, or remove a global profile avatar when the administrator enables avatars. A network can override the global avatar, while networks without an override inherit it; the partyline uses the global value.
- Command aliases. Define personal
/alias <name> <command>shortcuts with positional arguments such as$1,$2,$*, and$channel. - Searchable themes. Browse built-in Relay, The Lounge, dark, light, IRSSI, and WeeChat themes by name or category, preview them, and apply them from Settings > Themes.
- Theme import/export. Export the active CSS theme, import custom CSS themes, and delete imported themes on private instances.
- Custom CSS and branding. Add user CSS overrides and let administrators configure primary and inverted brand logos for the sidebar and authentication screens.
- Image metadata removal. Users can render images through a canvas before uploading to remove metadata when supported by the browser.
Storage, uploads, links, and privacy¶
- SQLite message storage. SQLite is the default structured history backend. Plain-text logs can also be enabled independently.
- PostgreSQL message storage. Use PostgreSQL as the primary history backend,
with indexed full-text search and connection-pool controls. Existing SQLite
history can be copied with
relay storage import-sqlite [username]; the original SQLite files are retained. - Message retention controls. Administrators can configure maximum channel history and storage cleanup behavior where supported by the deployment.
- Passphrase-based IRC encryption. Protect channel and private messages from
IRC network observers with shared symmetric keys managed through the
encryption dialog or
/encryptcommands. Relay decrypts before rendering, storing, searching, previewing, or notifying, so this is not end-to-end encryption against the Relay server. See IRC Encryption. - File uploads. Upload files by attachment, drag-and-drop, or paste on private instances where an administrator enables uploads. Review, sort, and delete your files from Settings > Uploads.
- Admin-controlled upload expiry. The administrator sets the server-wide upload expiration policy, and Relay removes expired files automatically.
- Experimental DCC receiving. On private instances with explicit resource limits, approve incoming DCC offers, receive files into Relay storage, review them in Settings > DCC files, and delete them.
- Desktop Catbox uploads. The standalone desktop client can use Catbox for public shareable links or Relay storage. Browser and mobile PWA clients use Relay storage; Catbox files are managed through their chat links.
- Embedded link shortener. Automatically shorten long HTTP(S) links before sending, with administrator controls for threshold, code length, path, expiry, and base URL. Users manage their own links in Settings > Short Links.
- Public mode hardening. Public mode is a fixed-target, unauthenticated IRC service. It hides transport credentials, disables persistence-bound features, blocks arbitrary network and proxy changes, disables link prefetching, and enforces configurable session, connection, event, frame, input, and channel limits.
Administration and integrations¶
- Admin panel. Administrators can configure server behavior, storage, uploads, previews, themes, branding, authentication, integrations, and users from Settings > Admin, with Apply/Cancel controls for settings that need a reload and a web restart action where appropriate.
- Account registration. Private instances can optionally expose a
/registerpage. SMTP verification adds a one-time email code; without SMTP, accounts are created immediately. Registration is disabled by default. - WebAuthn/FIDO2. Register hardware keys, passkeys, Touch ID, Windows Hello, or other platform authenticators in Settings > Security Keys for passwordless sign-in on private HTTPS instances (or on localhost during development).
- OIDC single sign-on. Add an optional standards-compliant OIDC sign-in button. Users must already have a matching Relay account, and local username/password sign-in remains available as a fallback.
- Session management. Users can change their password, inspect active sessions, and revoke other signed-in devices from Settings > Account.
- Usage statistics. The Stats tab shows personal totals, recent message
graphs, storage usage, and administrator-visible server totals. The local
/relaystatscommand can be enabled and customized; its output stays inside Relay and is never sent to IRC. - First-run setup. A fresh installation with no accounts prints a one-time
setup token and exposes
/setupfor creating the initial admin account. The token and page are permanently disabled after the first account is created;relay add --adminremains available. - Jitsi voice/video calls. Administrators can configure an embedded Jitsi server. Users can start or join a channel call in a resizable, fullscreen- capable panel.
- KLIPY GIF picker. Search and send GIFs from the composer when KLIPY is enabled. The API key stays server-side and requests are proxied by Relay.
- Partyline. Administrators can enable an internal cross-user
#partylinechannel for local Relay accounts. It uses Relay's message pipeline, including replies, reactions, Jitsi presence, and GIF support.
See Settings for control-by-control details, Installation for deployment, and Known Limitations for bouncer compatibility notes.