Skip to content
Fast, neat discord TUI written in Crystal
Branch: master
Clone or download
Latest commit 43d1409 Mar 22, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.env.sample.bash No longer need channel id to be set in the env Mar 13, 2019
.travis.yml Refactored the parser away from being static Mar 21, 2019
Dockerfile Added Dockerfile that I can use to build the app Mar 13, 2019
LICENSE Initial crystal init output Mar 8, 2019 Fixed build script Mar 16, 2019
shard.lock Updated my fork of hydra to get all 256 colours Mar 21, 2019

crcophony /kəˈkɒf(ə)ni/

read: cacophony

release badge

A simple Discord terminal ui written in Crystal.


Self-bots are not allowed by Discord's Terms of Service. Using crcophony could technically count as using a self-bot. Use this project at your own risk, it isn't my fault if it gets you banned.

That being said, I'm trying my best to ensure the application is as safe as possible. You cannot do anything in crcophony that you can't do in the normal Discord client (in fact, there are things you can do in the Discord client that you can't do in crcophony) so it should be okay.

Bottom line: Use at your own risk



  • Ctrl+C: Quit Application
  • Enter: Send Message
  • Ctrl+W: Scroll Up
  • Ctrl+S: Scroll Down

Channel Switching

  • Ctrl+K: Open / Close Channel Selection Menu
  • Enter: Select Channel
  • Ctrl+W: Scroll Selection Up
  • Ctrl+S: Scroll Selection Down
  • ESC: Alternative Close Button

If you can think of stuff I am missing, open an issue c:


Using pre-built binary

Since the 0.1.0 release I have been including a static binary attached to releases. Here are instructions for running the application using these binaries;

  1. Go to the latest release and download the binary.
  2. Follow the steps in Gathering Data to set up your environment.
  3. Run ./crcophony from the directory you downloaded the binary to and it should run.

If the pre-built binary doesn't work, open an issue with as much information as possible (from log files and application error trace and such) and then maybe also try installing from source!

From source

If the pre-built binary didn't work for you, or you want to install from source by choice, here are the instructions;

  1. Install Crystal
  2. Install termbox following the instructions in their README.
  3. Clone this repo.
  4. Run shards install to install requirements.
  5. Follow the steps in Gathering Data to set up your environment.
  6. Run shards build to build the system, or use shards build --release to build with optimisations (slower build but potential speedups over non release mode).
  7. Run bin/crcophony to open the application.

Gathering Data

To use the system, you must gather the following information and export the data as environment variables. These variables are as follows;

  • CRCOPHONY_TOKEN: Your user token used to authenticate yourself with the client
  • CRCOPHONY_USER_ID: Your user id (might not be necessary, requires investigation and could be removed at a later point)

Here are the instructions for you to get these bits of data;

  1. Turn on Developer Mode
  2. To get the user_id, right click on your own name in the Users sidebar of any channel and click "Copy ID". This is the value you should put in as the user_id
  3. Follow this guide to get your token.

If you use the fish or bash shells, a sample .env file has been included in this project ( and env.sample.bash respectively). Simply rename the appropriate file to .env, populate the strings inside with your gathered data and run source .env in the directory to get the correct environment variables created.


  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


  • freyamade - creator, maintainer
You can’t perform that action at this time.