docs/specs | ||
src | ||
test | ||
.gitignore | ||
.tsconfig.json | ||
config.example.json | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
reflection.js | ||
reflection.key | ||
reflection.pem |
ReflectionIRCd
ReflectionIRCd is an IRCd that interfaces with Matrix, allowing you to use an IRC client to chat on Matrix.
This is very much not production-ready yet. There's console.log
s all over the place, no testing or error checking, lots of bugs, etc.
That said, it is usable for basic chatting.
Highlights
- IRC first: The goal is for modern IRC clients to have feature parity with any other Matrix client
- Standalone: Uses the Client-Server API, so you can use it with any homeserver
- Built-in bouncer: Multiple IRC clients can be authenticated to a Matrix user
- Multi-user: Log in to multiple Matrix users at the same time
Feature support
✅ - Implemented
🟨 - Partially implemented, see notes
❌ - Not implemented yet
⬜ - Not applicable
(IRCv3) denotes IRC features that might not be available in all clients
Name | M->I | I->M | Notes |
---|---|---|---|
text, notice, emote messages | ✅ | ✅ | |
image, file, audio, video messages | 🟨 | ⬜ | Show up as links on IRC |
Channel joins | ✅ | ❌ | |
Channel parts | ✅ | ✅ | |
Channel kicks | ✅ | ✅ | |
Channel bans | 🟨 | ❌ | Single-user bans show up on IRC as kicks, there's no banlist yet |
Channel invites | ✅ | ✅ | |
Channel topics | ✅ | ✅ | |
Channel powers | ❌ | ❌ | |
Channel lists/searching | ⬜ | ❌ | |
Encrypted rooms | ❌ | ⬜ | |
Rich text | ❌ | ❌ | |
Presence | ❌ | ❌ | |
Channel renaming (IRCv3) | 🟨 | ❌ | Only when the canonical alias changes |
Message replies (IRCv3) | ✅ | ✅ | Clients without support will still receive the reply message, but it won't be marked as a reply |
Message reactions (IRCv3) | 🟨 | 🟨 | Can't undo reactions yet |
Extended invites (IRCv3) | ✅ | ✅ | |
Chat history (IRCv3) | ⬜ | ❌ | |
Multiline messages (IRCv3) | ❌ | ❌ | |
Global display names (IRCv3) | ❌ | ❌ | |
Per-room display names (IRCv3) | ❌ | ❌ | |
Message editing (IRCv3) | ❌ | ❌ | |
Message deletion (IRCv3) | ❌ | ❌ |
Running
Copy config.example.json
to config.json
, edit the values if needed, then npm run build
and then node reflection.js
to start it
Authentication
Authentication is done via SASL PLAIN
, the username is your mxid and the password is an access token from another session plus your server domain, separated by a :
(so access_token:matrix.org
if your server is matrix.org). Note this is the domain for m.server
, not necessarily the homeserver domain.