| 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.logs 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
✅ - Fully supported
🟨 - Partially supported, see notes
❌ - Not implemented yet
(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 | 🟨 | ❌ | Bans show up on IRC as kicks |
| Channel invites | ✅ | ❌ | |
| Channel topics | ✅ | ❌ | |
| Channel powers | ❌ | ❌ | |
| Encrypted rooms | ❌ | ❌ | |
| Message replies (IRCv3) | ❌ | ❌ | |
| Message reactions (IRCv3) | ❌ | ❌ | |
| Chat history (IRCv3) | ❌ | ❌ | |
| Multiline messages (IRCv3) | ❌ | ❌ | |
| Global display names (IRCv3) | ❌ | ❌ | |
| Per-room display names (IRCv3) | ❌ | ❌ | |
| Message editing/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.