The server is written in Perl and POE, the Perl Object Environment. This is a really good way to run parallel state machines.

Inside the POE machine, the server runs a webserver for clients to:

It also runs a AIM buddy for every single group that is running, using the Perl module Net::AIM. Net::AIM isn't buggy like last time I used it (in 2001...) and appears to be working fine. I used to use Net::AOLIM which - to be honest - I prefer (the interface is better), but I was having trouble logging on with it a little too often. I'm sticking with the Perl TOC interface because the OSCAR interface has to be reverse engineered and the interface code doesn't feel as reliable.

The AIM buddy adds all client buddies to its buddylist, and monitors then they go offline.

Session keys and updates of the glance state are sent as IM messages to the clients.