Slircdocs Open app

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

ClientPlatformsInterfaceSourceGood fit for
SenpaiLinux, macOSterminalopena focused keyboard-driven client
HalloyLinux, macOS, Windowsdesktopopena modern cross-platform GUI
TextualmacOS, iOSnativecommerciala polished Apple client
Revolution IRCAndroidnativeopenlightweight mobile IRC
WeeChatLinux, macOS, BSDterminalopenscripting and deep customization

These clients support registered IRC accounts through SASL. Exact history and media presentation varies by client.

How Slirc features appear

How to connect

Server name is the local label in your IRC client. The connection still goes to app.slirc.org.

The commands and config below update as you type. Values stay in this browser.

Connect with a password

  1. Open More → IRC client on a phone, or Profile → IRC on desktop.
  2. Choose Use a password and name the device, for example Halloy on MacBook.
  3. Save the password when it appears. Slirc shows it once.
  4. 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.