View on GitHub

-=[ ictk ]=- Internet Chess Toolkit

A Java chess modeling library that supports generating legal moves, PGN (with variations), FEN, NAG, and limited ICS (Internet Chess Server) support.

Download this project as a .zip file Download this project as a tar.gz file



ictk is distributed under the MIT License


If you're looking for a super fast Java implementation of a chess model to use as a basis for a chess engine you need to look elsewhere. The design goal of this library has never been speed. If it were it would create a LOT fewer objects. Instead, the goal of ictk is to render chess in a natural object oriented way that is both easy to use and well documented.

This library started out in 1997 as a proof of Object Oriented Design concepts. The chess pieces act as agents and generate their own moves after analysis of the board state. A move object is an implementation of a Command Pattern. And so on.

The Internet Chess Server (ICS/FICS) support converts the server's telent text into POJOs, implementing a MVC based EventListener model for client code to easily process. As Java is overly verbose, and the messages are relatively simplistic, the parsing is done in XML and converted to Java POJOs via XSTL. The approach may seem overly complex to you, but saves a lot of time.

Finally, this is not a graphics library, it is a game modeling library. It provides for reading and writing standard game notations as well.


The following commands will retrieve the latest source, generate the source code through XSLT, compile, create the Java-Doc and make the full jar file. Just add the jar file to your CLASSPATH.

$ git clone
$ cd ictk
$ ant build


The javadoc documentation can be generated through Ant, or found online for the latest stable version.


If you find this library useful, drop me an email just to let me know what you're doing with it. Even if you're just messing around. Knowing someone is using this encourages me to dedicate time toward improving ictk -- otherwise I have lots of other things to donate my time to. Thanks.