[To Tominaga Lab Top Page][Japanese]

Rubiret is a mobile agent system implemented with Ruby. Ruby is an object-oriented script language. Programs of mobile agents are also written in Ruby. A simple agent program is given below:
class RoundRubiret < Rubiret
def init
# names of the machines connected each other by network
@hosts = [ "clotho", "lachesis", "atropos" ]
@where = 0
end
def run
puts "I'm here"
sleep 1
@where += 1
@where = 0 if @where == 3
moveto(@hosts[@where])
end
end
Starting on the machine named clotho, this agent goes around on the three hosts forever with printing the string "I'm here" on each host. The agent's instance methods init and run are callback methods. init is invoked when an instance of this agent class is created, and run is called just after the agent has moved to a new host.
Since necessary methods for mobile agents (moveto is one of them) are provided in the class Rubiret, which is the basic class for mobile agents, the user can implement a mobile agent class (RoundRubiret in the above example) easily by inheritance.
The current version of Rubiret migrates only program code and data (heap) of an agent; its stack and control point are not transferred to the destination host.
The alpha version of the system has been implemented, but it has not been released to public. The alpha version system provides basic mobile agent facility and some level of security. Currently the next version with graphical user interface facility is under development.
Below is a screen snapshot of the system being developed now.

[larger image (1280x1024, 100KB)]
The window at the top left (titled "Rubiret Main Window") is the console of the runtime system. It shows there are five agents running on the runtime system now. You can manage agents on this window.
Each agent can have its own windows. There are several types of windows. The window showing sine and cosine curves is a graphics window of the agent Graph (agent names are shown on the console window). The two white windows in top-middle show text output the agents (RocketRubiret and UpperRocketRubiret). The window with a calendar is a user interface window, displayed by the agent Schedule. The small simple window at the center, which has a large button, is also a user interface window. The window of the agent FileSender3 shown at bottom-left with three buttons (one of them is labeled "Attach") on it, is made with a built-in window template which provides interface to attach files to the agent. (Agents can carry attached files as email does.)
Not yet; it will be provided after a version which is released to public gets ready.
(newest comes first)
(Last updated: $Date: 2005/02/01 01:46:07 $)