Ever thought it would be nice to call objects located anywhere in the world, without bothering with static IPs, DNS, Apache, CGI, NAT, PAT, gateways, authentication, and so on? Jabber-RPC lets you do this. On the callee side you have: require "jabber/rpc" class TestAgent < Jabber::RPC::BasicAgent def exposed_commands ["alive?"] end def alive? true end end agent = TestAgent.new("bot / jabberserver.com/TestAgent", "bot") agent.connect On caller, you have: session = Jabber::Session.bind("user@jabberserver/Ruby", "user") remote_agent = Jabber::RPC::Client.new(session, "bot / jabberserver.com/TestAgent").proxy3 remote_agent.alive? #=> true And with a bit more code, remote users can talk to the object through an IM client, too. Find it at: http://jabber-rpc.rubyforge.org Massimiliano