title: IRC clients
crumb: Connect / IRC clients
description: IRC clients that can connect to Slirc and how PWA features appear outside the web app.
lead: Slirc remains IRC underneath, so the conversation does not depend on one client.

## Client shortlist

| Client | Platforms | Interface | Source | Good fit for |
| --- | --- | --- | --- | --- |
| [Senpai](https://sr.ht/~taiite/senpai/) | Linux, macOS | terminal | open | a focused keyboard-driven client |
| [Halloy](https://halloy.chat/) | Linux, macOS, Windows | desktop | open | a modern cross-platform GUI |
| [Textual](https://www.codeux.com/textual/) | macOS, iOS | native | commercial | a polished Apple client |
| [Revolution IRC](https://github.com/MCMrARM/revolution-irc) | Android | native | open | lightweight mobile IRC |
| [WeeChat](https://weechat.org/) | 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.
- Threads appear as linked `#t-*` channels.
- Images, videos, GIFs, and previews remain readable URLs.
- Topics use the standard IRC topic.
- Edits and reactions depend on IRCv3 metadata, so older clients may show their text fallback.

## 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.

## 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. Replace `yournick` with your Slirc account name:

```sh
nick=yournick; openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -days 3650 -subj "/CN=$nick" -keyout "slirc-$nick.key" -out "slirc-$nick.crt" && cat "slirc-$nick.key" "slirc-$nick.crt" > "slirc-$nick.pem" && chmod 600 "slirc-$nick.key" "slirc-$nick.pem" && openssl x509 -in "slirc-$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:

```toml
[servers.slirc]
server = "app.slirc.org"
port = 6697
use_tls = true
nickname = "yournick"
username = "yournick"

[servers.slirc.sasl.external]
cert = "/path/to/slirc-yournick.crt"
key = "/path/to/slirc-yournick.key"
```

### WeeChat

Copy the combined PEM to WeeChat's private certificate directory, then configure server:

```text
/server add slirc app.slirc.org/6697 -tls
/set irc.server.slirc.nicks "yournick"
/set irc.server.slirc.tls_cert "%h/tls/slirc-yournick.pem"
/set irc.server.slirc.sasl_mechanism external
/connect slirc
```

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:

```sh
openssl pkcs12 -export -inkey slirc-yournick.key -in slirc-yournick.crt -out slirc-yournick.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.
