Connect / IRC clients
IRC clients
Slirc remains IRC underneath, so the conversation does not depend on one client.
Everything Slirc shows in the app is also on the IRC server. This page is for people who want a terminal or desktop client next to the PWA, or instead of it.
Client shortlist
| Client | Platforms | Interface | Source | Good fit for |
|---|---|---|---|---|
| Senpai | Linux, macOS | terminal | open | a focused keyboard-driven client |
| Halloy | Linux, macOS, Windows | desktop | open | a modern cross-platform GUI |
| Textual | macOS, iOS | native | commercial | a polished Apple client |
| Revolution IRC | Android | native | open | lightweight mobile IRC |
| WeeChat | Linux, macOS, BSD | terminal | open | scripting and deep customization |
These clients support registered IRC accounts through SASL. Exact history and media presentation varies by client.
How Slirc features appear
- Channels remain ordinary IRC conversations. PWA direct messages appear as private
#dm-*channels in terminal clients, so offline messages persist without fake presence. - Email invitations are only the delivery: whoever accepts is a normal account with normal channel access, so
/list, auto-join, and history all behave the same as any other room. - Threads appear as linked
#t-*channels. - Images, videos, GIFs, and previews remain readable URLs.
- Topics use the standard IRC topic.
- Edits and reactions use IRCv3 metadata. Halloy renders reactions under their message; clients without reaction support ignore them.
How to connect
The commands and config below update as you type. Values stay in this browser.
Connect with a password
- Open More → IRC client on a phone, or Profile → IRC on desktop.
- Choose Use a password and name the device, for example
Halloy on MacBook. - Save the password when it appears. Slirc shows it once.
- Copy the setup block for your client.
Clients connect to app.slirc.org on port 6697 with TLS and SASL PLAIN. Adding or removing a password device rotates the account password. Older password clients must use the newest password before they can reconnect.
For Halloy, add this to config.toml:
[servers.{{server}}]
server = "app.slirc.org"
port = 6697
use_tls = true
nickname = "{{nick}}"
username = "{{nick}}"
[servers.{{server}}.sasl.plain]
username = "{{nick}}"
password = "the password Slirc showed you"
Quiet server events in Halloy
Halloy shows IRC joins, leaves, mode changes, and kicks in channel history. To keep Slirc conversations focused, add this optional block. It only hides these events for the server name above; ordinary messages remain visible.
[buffer.server_messages.change_mode]
exclude = { servers = ["{{server}}"] }
[buffer.server_messages.join]
exclude = { servers = ["{{server}}"] }
[buffer.server_messages.part]
exclude = { servers = ["{{server}}"] }
[buffer.server_messages.quit]
exclude = { servers = ["{{server}}"] }
[buffer.server_messages.kick]
exclude = { servers = ["{{server}}"] }
Connect with a certificate
A certificate gives each client its own credential. Revoking one certificate does not interrupt other clients.
Generate an ECDSA P-256 key and self-signed certificate:
nick={{nick}}; server={{server}}; openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -days 3650 -subj "/CN=$nick" -keyout "$server-$nick.key" -out "$server-$nick.crt" && cat "$server-$nick.key" "$server-$nick.crt" > "$server-$nick.pem" && chmod 600 "$server-$nick.key" "$server-$nick.pem" && openssl x509 -in "$server-$nick.crt" -noout -fingerprint -sha256
Keep .key and .pem private. Anyone with either file can sign in as you. Open Profile → IRC → Use a certificate, name the device, and paste the SHA-256 fingerprint printed by OpenSSL.
Halloy
Add this to Halloy's config.toml, using absolute paths:
[servers.{{server}}]
server = "app.slirc.org"
port = 6697
use_tls = true
nickname = "{{nick}}"
username = "{{nick}}"
[servers.{{server}}.sasl.external]
cert = "/path/to/{{server}}-{{nick}}.crt"
key = "/path/to/{{server}}-{{nick}}.key"
WeeChat
Copy the combined PEM to WeeChat's private certificate directory, then configure server:
/server add {{server}} app.slirc.org/6697 -tls
/set irc.server.{{server}}.nicks "{{nick}}"
/set irc.server.{{server}}.tls_cert "%h/tls/{{server}}-{{nick}}.pem"
/set irc.server.{{server}}.sasl_mechanism external
/connect {{server}}
Older WeeChat releases call tls_cert ssl_cert and use -ssl instead of -tls.
Textual
Convert certificate to PKCS #12, import it into macOS Keychain, then select identity certificate in Textual's server settings and choose SASL EXTERNAL:
openssl pkcs12 -export -inkey {{server}}-{{nick}}.key -in {{server}}-{{nick}}.crt -out {{server}}-{{nick}}.p12
Textual on iOS must receive identity through iOS certificate/profile management before it appears in server settings. Textual versions without SASL EXTERNAL must use password setup above.
Senpai
Senpai currently supports SASL PLAIN only and has no client-certificate setting. Use Use a password in Slirc for Senpai. Do not add PEM paths to Senpai config; current releases ignore them.
Never enter your magic-link URL into an IRC client. Magic links sign in to web app. IRC clients use password or certificate from device setup.
