taverner/README.md -rw-r--r-- 2.0 KiB
a86534a4Phil Hagelberg When notifying of nick changes, send user as well. a month ago


An IRC server.

This server was created specifically to use as a base for a text adventure game. As such it lacks features you might expect. It has not been widely tested.

Usage: PORT=6667 SERVER_NAME=myserver ./fennel bin/taverner

You can also set PASSWORD to require a connection-level password to connect.

Interested in how it works? Read the blog post about how channels are modeled.

#Clients (lightly) tested:

#Compatibility notes

  • Many commands should take multiple targets but only take one.
  • You can only set one mode at a time.
  • The only modes are b (ban), o (ops), v (voice), k (key), m (moderated), s (secret), and t (topic lock).
  • See the list of unimplemented commands below.
  • The REHASH command has been overridden to reload the server code.


The plugin system lets you extend the core server capabilities. The bot/ directory contains an example plugin which lets you run a system of bots inside the server itself, but you can build any kind of plugin; it just needs to be a module which exports an init function that takes the server state as its argument.


  • Embeddability
  • Keepalives

#Not going to bother with these commands, probably

  • OPER
  • MOTD
  • CAP
  • SASL
  • TIME
  • HELP
  • INFO
  • AWAY


Copyright © 2022 Phil Hagelberg

Released under the MIT license.

Dependencies: Fennel, Lume, and luasocket, all released under the same terms. The former two are included in the repository; use your package manager to install luasocket.