🐇 Kotlin/JVM, tested, IRC v3.2 client state management and observing
Kotlin Shell
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
gradle/wrapper Use Kotlin 1.1.51 and prevent connections getting run twice Oct 11, 2017
build.gradle.kts Use Kotlin 1.1.51 and prevent connections getting run twice Oct 11, 2017
codecov.sh Bump JaCoCo to 0.7.9 and codecov script to 8e92d33 Feb 21, 2017
codecov.yml Disable status setting for Codecov Feb 16, 2017
gradle.properties Use Kotlin 1.1.51 and prevent connections getting run twice Oct 11, 2017
gradlew Bump Gradle wrapper to 3.2.1 Dec 31, 2016
gradlew.bat Bump Gradle wrapper to 3.2.1 Dec 31, 2016



Kotlin (JVM targeted), unit tested, IRC v3.2 state management and observing. Made for personal use, and open sourced. Intended to provide the tools needed to make IRC related software, like bridges and bots.

Kale is the parsing and serialising counterpart.

Thump is the primary upstream project - a bridge that lets people chat between Minecraft and IRC whilst they play.



Warren and Kale have a few interesting features:

  • The responsibilities of parsing and state management are separated
  • Both parsing and state management are verified by hundreds of unit tests
  • Messages, and state handlers, are individually encapsulated

Planned releases (and their features) are tracked in Projects.


If you use this library and you'd like to support my open-source work, please consider tipping through Patreon.

Example usage

The project includes a simple example runner that prints out events as they happen, logs in using SASL and replies to me saying rabbit party in a channel.

If you're interested in more complex usage, come talk to me on IRC: #carrot on ImaginaryNet


Code License

The source code of this project is licensed under the terms of the ISC license, listed in the LICENSE file. A concise summary of the ISC license is available at choosealicense.org.


This project uses Gradle for pretty easy setup and building.

  • Setup: ./gradlew clean
  • Building: ./gradlew clean build - this will also produce a fat Jar with shaded dependencies included


Warren is published on my personal Maven repository. It uses a Let's Encrypt certificate, and you need to use Java 8 >= 8u101 or Java 7 >= 7u111 to connect to it.


  • Add to repositories: maven { url = "https://maven.ci.carrot.codes" }
  • Add to dependencies: compile 'chat.willow.warren:Warren:'