I looked at spread, but I was getting too many errors from the Perl API. So for now I'm going to use Jabber clients for the messaging infrastructure.
I wrote two simple clients using the Net::Jabber perl modules. The first was for X10, that reports events and will take commands, and then a second for caller id, that will report calls/rings and will accept commands to send to the modem. These thumbnails link to genuine screenshots - edited only to remove my mobile number.