A Kamanja container’s principal purpose is to hold application content for a model running on the Kamanja cluster. It is represented in Kamanja as a class, generated by the message compiler from a JSON container specification submitted through the metadata API interface. The class contains instance methods for ingesting messages from a variety of formats, including JSON, CSV, and native format used to store it in a persistent store. Serialization/de-serialization methods are available to aid these operations. All of these behaviors are generated by the Kamanja message compiler.
Containers are essentially the same as messages but they are used in a slightly different way. Conceptually, containers hold information that the user wants to keep versus the input message that describes the message presented to the model. Containers are more like descriptions of information that the model may want to maintain in order to interpret future messages. Containers have state information that the model needs.