Today I tagged version 0.1.0 of
mclient, a Matrix.org client for Emacs and I opened a pull request
to have it added to MELPA. I've been incredibly interested in Matrix as an RPC layer for my
projects; a decentralized event stream that can be used for text Chat, signaling for WebRTC VoIP
calls, and as a data layer for various projects surrounding my Core Computing Environment and Body
Computing System. I've written a few toys with it, including a system to control my living room
lights over Matrix, but this is a full blown API library and chat client written in pure Emacs Lisp
using the wonderful Request.el library.
Figure 1: Matrix HQ's main chat room in Emacs
It comes in two parts
matrix.el which is the actual API implementation, and
matrix-client, an interactive function to launch an interactive chat.
The API library allows me to build, for example, an Org-mode "personal assistant" bot that can use prompt-based capture templates to interact with a remote Emacs instance from my Android.
The chat client is, well, a full chat client. It's really rough right now, and it's completely
homebrew, but it works and is full of 🙏 Emoji 🙏, so make sure you have
Symbola installed and
configured to be used 😄. It doesn't support registration (yet!), so if you don't have a Matrix.org
account head over to the Matrix site and get set up with an account or deploy your own homeserver by
The Matrix spec itself is a dream to work with, frankly, given how young it is. At its core is an
HTTP polling Event Stream protocol which you can just request to and wait for a chunk of events to
show up. Those events are individually quite rich with metadata, so the core of
mclient itself is
essentially a router to a set of event handlers, each of which is able to work with a given Matrix
event type. The upshot of this is that the chat porcelain could be genericized enough to act as a chat
client for anything that works similar to a
comint stream, and as such could be used to build a UI
on top of
telegram-cli, for example.
Oh, and lastly, I am
@rrix:whatthefuck.computer on Matrix. If you end up trying out
experience any issues, come find me in