Cobalt is comprised of a set of component processes that communicate over XML-RPC.

A component can have multiple implementations. An implementation defines what component it is, and how it is implemented, by defining "name" and "implementation" class-level attributes. (e.g., class Simulator has name = "system", implementation = "simulator")