Gossip, a cross game (text-based) chat platform

One of the cool things that has spun off of ExVenture is Gossip, located at https://gossip.haus/.

Gossip is a cross game chat platform for text games (aka MUDs.) Gossip uses websockets as the underlying protocol for servers to connect to. The protocol is heavily documented so that anyone can connect their game to.

While Gossip is a Phoenix application, it does not use normal channels so as to not force the Phoenix protocol on to other (possibly non-elixir) applications.

There are some pretty cool websocket things (I think) going on in this project and the corresponding Elixir client that I’ve written, located also on GitHub.


P.S. The name gossip comes from MUDs where the main chat channel was called gossip.


When naming this project, did you take into consideration the gossip protocol? It is a very well known protocol. If I were to see this project listed somewhere, I would think it was an Elixir implementation of it.

I did, but as far as I could tell there isn’t a specific implementation of a gossip protocol and was more of a generic term. So I went with it, I think it fits the theme of MUDs pretty well.

Wooh! Very cool!

i love Multi-User Dungeons and I love what you’ve been building here. I’ll take some time to dig into the internals, because this is exactly my cup 'o tea. Thanks for sharing!


I launched a new piece of Gossip over the weekend called Grapevine. This part of Gossip is for players to go on and connect in game characters to their profile. The eventual plan is something akin to Xbox Live or the PlayStation Network, but for text based games.

To make this new site work, I have them plug into the normal websocket for games that then gets upgraded to have more events. The big set of events right now are the sync events. I just did a blog post about them and linked to some spots in each code base for how it works.

You can also find Grapevine on GitHub: https://github.com/oestrich/grapevine


Some new updates, Gossip now scrapes older games using the MSSP protocol to get player counts. This was pretty cool to write, there is a simple telnet client that parses out binary telnet options.

I’m also starting to work on achievements. I have the CRUD set up for them, and they’ll push over to Grapevine for display. It’s always really fun to get new things pushing across the backbone sync between Gossip and Grapevine.

Next I’ll be working on unlocking achievements for characters over on Grapevine, the fun part.


In the last month Gossip has been merged with and renamed to Grapevine. The split was fairly confusing so while it’s still early I went with combining the two sites.

Other news, I’m working on a general purpose telnet web client for older games. This uses an internal gen_tcp gen_server that processes the possible binary telnet options in the stream and then forwards the text to the web browser. I was also able to keep the session alive between browser reloads with a DynamicSupervisor.

I also did this on my weekly live coding stream as well if you want to watch the supervisor part in action.

Something I still need to figure out is how to deploy a new release without taking down existing connections. I think this means I need to spin up separate nodes, having all of the telnet connections living on a separate note that rarely needs to be redeployed.


Since last week I’ve been able to add a set of generic gauges to the client, for games that support the GMCP protocol. The GMCP protocol is an out of band stream inside of a telnet connection. I’m hoping to do a blog post about the binary pattern matching that enables this parsing sometime in the next few weeks.