Interhack is really just a filter. It reads from stdin and a socket, and when input arrives, Interhack mangles it and sends it where it needs to go. See Interhack 0.0 for a minimalist implementation of Interhack (70 lines).

You can also read some specific information about the different Interhack versions.

Interhack is written in object-oriented Perl, using Moose and as much of the CPAN as we can leverage.

Plugins are implemented by 'wrapping' Interhack methods (such as toscreen and read_keyboard), a concept from CLOS. This means the Interhack core need not know anything about plugins (except how to load them). It also leads to very modular plugins (see Interhack 1.0 for a good example of poorly-designed plugins).

See the Foodless plugin for the implementation of a typical plugin.

Getting involved is easy. Just send us a pull request!