The following documentation presents an overview of the ACME components and commands.

This documentation is presented as an overview for use of the ACME framework, specifically documenting each of the commands installed with particular components. Although the goal was to make ACME as simple to use as possible, due to the fact that Cougaar itself is a complex system ACME does have a significant learning curve. For detailed documentation on the ACME framework see the ACME Developer's Guide For a simple demo/tutorial see the StockTrader demo page.

ACME Configuration

ACME Configuration allows the generation of models of complex distributed Cougaar agent societies using a simple rule engine. A Cougaar agent society is represented by model encoded in either XML or Ruby. When you install the ACME Configuration component you install two commands, transform-society and convert-society. Each of these commands is discussed below:

transform-society

Transforms a society with rules (and converts between xml and ruby).
Usage:
    transform-society -i {input file} -l {layout file} [-h {hosts file}] 
                      -r {rules dir} [-o {output file}] [-c {communities file}] [-?]
    -i --input              The input file (.xml or .rb).
    -l --layout             The layout file (.xml or .rb).
    -h --hosts              The hosts file (.xml or .rb).
    -r --rules              The rule directory (e.g. ./rules).
    -c --communities        The communities file to write to (e.g. communities.xml).
    -a --abort-on-warning   Abort the generation of the society if a rule warning 
                            is encountered.
    -o --output             The output file. (default new-{input})

convert-society

Converts society between xml and ruby.
Usage:
    convert-society -i {input file} [-o {output file}] [-h]
    -i --input      The input file (.xml or .rb).
    -o --output     The output file. (default {input}.rb|.xml)

ACME Control

Controls the execution of distributed Cougaar Agent societies with a powerful, extensible scripting framework. ACME Control does not install any commands, but is used in scripts to run societies configured with ACME Configuration using ACME Services.

acme-doc

  Outputs usage documentation for installed Actions and States.
  Usage:
      acme-doc [Action name or State name]
  

ACME Service

The ACME Service installs as a RubyGem but once it runs, starts a process that needs to be running on each computer that will run a Cougaar node. There is only one command installed with the ACME Service and that is acme-service.

acme-service

Starts the ACME Service.
Usage:
  acme-service -p  [-h]
  -p --plugin-dir The plugin dir to add to the path (in addition to the core plugin dir).

Example:

  $$$$$ USERDIR = /Users/rich/.acme
  PLATFORM IS unix
  Message Router Service started on port: 6667
  Cougaar Event Service started on port: 5300

Other than appending a plugin dir, configuration of the service is done by directly editing the files installed in the acme-service gem. To exit this process just interrupt it with control^c. The ACME Service uses a series of plugins that are used to extend its behavior. Each of these plugins is located in the plugins directory under the acme-service gem directory. To find this directory execute the following [prompt] commands:

[prompt] gem env gemdir
  /usr/local/lib/ruby/gems/1.8
[prompt] cd /usr/local/lib/ruby/gems/1.8/gems/acme-service-1.6.0/plugins
[prompt] ls (or dir)
  acme_cougaar_config
  acme_cougaar_events
  acme_cougaar_node
  acme_cougaar_xmlnode
  acme_host_communications
  acme_host_cpu
  acme_host_kickstart
  acme_host_nic
  acme_host_power
  acme_host_reboot
  acme_host_rexec
  acme_host_rexec_user
  acme_net_dns
  acme_net_mgen
  acme_net_shape
  acme_reporting_core
  acme_reporting_service
  acme_tic_cnccalc
  acme_tic_operator
  acme_tic_scheduler
  acme_tic_update_rpm
  freebase_logger
  raa_webrick

Each of the plugin directories has a plugin.yaml file file which holds its configuration (and potentially additional configuration .yaml files). For more detail and documentation on how to use and develop with the ACME framework see the ACME Developer's Guide.