Skip to content


Repository files navigation


A dumb Matrix bot. May contain traces of nuts.

It can do the following:

  • Respond to !ping requests! \o/
  • Maintain a database of quotes (using !quoteadd/!qa and !quote/!q)


Install crystal using your favourite package manager as guided by the Crystal docs. After that, building butter should be as easy as:

shards build

The resulting binary is then located in ./bin/butter.

macOS Mojave note: You may run into an error saying the compiler could not find OpenSSL. To fix that, install openssl from Homebrew and point PKG_CONFIG_PATH to OpenSSL's pkgconfig directory:

# zsh, bash:
export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig

# tcsh:
setenv PKG_CONFIG_PATH /usr/local/opt/openssl/lib/pkgconfig


Copy the config.example.yml to config.yml and modify it to your needs. Then... initialize the database and just run it! (after you've built it of course, see Installation section above on how to do that)

# Create the initial database
./bin/butter -c config.yml -m up

# Authenticate with your home server for the first time
./bin/butter -c config.yml

# Once you got your access token and exported the MATRIX_ACCESS_TOKEN variable,
# run it again to start the bot:
./bin/butter -c config.yml

Once the bot is running, invite it to a channel and try running some commands, such as !ping.


TODO: Write development instructions here


  1. Fork it (
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request