Download Agilla

Agilla source code is distributed as a tarball. Below is a list of releases that are publicly available. For installation instructions, see Lesson 1 of the Tutorial.

Version 3.1.1


  1. Fixed the capitalization of $AGILLA/nesc/SpaceLocalizer.

Version 3.1.0


  1. Reorganized the directory structure to make Agilla self-contained within a single directory. This will allow maintaining multiple versions of Agilla and switching between versions easier. Updated website to reflect the new directory convention.
  2. Fixed errors due to case sensitivity on Linux platforms. Changed "TOSTime.h" to "TosTime.h" in ExpLogger.h and LocationDirectory.h
  3. Added remote oscilloscope agent examples.
  4. Removed because it conflicts with Mica2/Z motes. If necessary, Telos users can manually add it back.

Version 3.0.3


  1. Added #if statements around cc2420-specific code
  2. Modified the AgentInjector to check whether clustering is enabled before it resets the LocationMgr
  3. Modified some default settings to use relative paths for portability.

Version 3.0.2


  1. Added a file called "Example Makefile.Agilla", which contains the default local settings.
  2. Updated the README to describe the flags in it

Version 3.0.1


  1. A bug fix that rectifies the "QUEUE_ENQUEUE" error that sometimes occurs when there are numerous agents in the network.

Version 3.0

* Release date: 05-14-2006
* Download


1. Added support for TelosB platform
2. Allow the user to disable the grid topology filter and greedy routing
3. The Java Makefile now assumes an $AGILLA environment variable that specifies the root directory of Agilla's NesC code. The default value of this variable is $TOSROOT/contrib/wustl/apps/Agilla/.

Version 2.2

* Release date: 07-14-2005
* Download


1. Reduced memory usage to avoid stack overflow when large agents are injected.

Version 2.1


  1. Fixed a bug that prevented a mote from moving more than once.
  2. Changes the "reset all" function to only reset nodes that are reachable from the base station that broadcasted the reset message.

Version 2.0


  1. The grid size can be changed using the AgentInjector (you no longer have to reprogram all the motes to change the grid size)
  2. When specifying the grid size, you only specify the number of columns (you no longer need to specify the number of rows). The node’s TinyOS address still determines the mote’s location. Mote 0 is at (1,1) located at the lower-left corner of the grid. TinyOS address’s increase in row major order.
  3. A mote’s location can be changed using the AgentInjector (you no longer need to reprogram the mote to change its address/location). The original ID of the mote is always used to specify which mote to modify, e.g., “move mote 1 to location (2,3).”
  4. The AgentInjector enters a modal state for ~3 seconds after a reset to allow the network components to reinitialize themselves. This is especially critical now that I’m sending the base station a message immediately after it resets telling it that it is a base station.
  5. The nodes periodically broadcast a beacon, neighbor discovery is done by each node
  6. The base station can be any node in the network. It no longer has a special address. There can be multiple base stations. Base stations can also move, their location is set like any other node using the AgentInjector.
  7. Since the location of a base station is no longer known by the non-base station nodes, Agilla no longer performs multi-hop routing to (uart_x, uart_y). Only the base station can perform a remote tuple space operation to (uart_x, uart_y). It is now up to the application to route messages to the base station. If an agent knows the location of the base station, Agilla can still perform the greedy multi-hop routing to it.

Version 1.6

* Release date: 03-30-2005
* Download


1. Fixed a bug in OPcompare preventing comparisons between variables of two different types. Now, whenever you try to compare two variables of different types, the condition code will always be set to 0.

Known issues:

1. Linux's timing seems to be different from Windows resulting in agents being corrupted when injected. To solve this, open <agilla>/types/MigrationMsgs.h, uncomment lines 63-66, and comment out lines 77-84.

Version 1.5

* Release date: 03-24-2005
* Download


1. Fixed a bug preventing agents in the WSN from inserting tuples into the laptop's tuple space. Added an Oscilloscope example to demonstrate how a Java application running on the laptop can access the laptop's tuple space.

Version 1.4

* Release date: 03-23-2005
* Download


1. Fixed the tuple space and modified assembler to report line numbers in errors.

Version 1.3


1. Removes instruction shiftl and shiftr and replaces them with mul (multiply) and div (divide). Agents can perform operations on the laptop's tuple space by using location (uart_x, uart_y).

Known Issues:

1. The RMI code for allowing remote access to the laptop's tuple space has not been implemented yet.

Version 1.2

Note: This is the version used to write the IPSN 2005 SPOTS paper.

Known Issues:

  1. The PC can access the tuple space on mote (0,0), but there is no clean interface for this yet. The PC cannot register reactions. The agents on the laptop cannot register reactions on tuple spaces within the WSN.

This page was last updated on July 7, 2008 4:47 PM by Chien-Liang Fok.

This work is supported by the ONR MURI Project CONTESSA and the NSF under grant number CCR-9970939.