This section gives a top-level overview of the IRIS architecture. It is intended to be a brief introduction, and the components listed here are documented further in the developer guide. The following diagram gives a rough outline of the core IRIS components, plugins and external applications:

As indicated in the diagram, IRIS consists of a set of core services. The Plugin SDK, a toolkit discussed elsewhere in this document, is used to build plugins that add functionality on top of the core services. In addition, external applications have hooks into IRIS. IRIS has many plugins, some of which are covered in this document. What is important to note is that IRIS implements a plugin architecture to extend the base system. This is important for the CALO project because many CALO components are not open-source but still build on top of the core IRIS system. For example, the following is a component diagram for CALO/Desktop components:

Using the plugin framework and extensible IRIS services, the CALO Desktop system adds new functionality and plugs learning algorithms into the core IRIS framework.
Note: the CALO/Desktop system is not documented here. This diagram is provided for reference only.
The IRIS architecture uses the following patterns:
Dependency Injection using Spring. Note that Spring is used heavily for all configuration and the plugin framework is based on Spring.
AOP for facade POJOs and remoting
Interface-based design
The remainder of this document starts by describing how IRIS is configured and the Plugin Framework, then proceeds to document each of the core components and plugins. Not all plugins and external applications are documented.