What is cmi5?

cmi5 is a contemporary elearning specification intended to take advantage of the Experience API as a communications protocol and data model while providing definition for necessary components for system interoperability such as packaging, launch, credential handshake, and consistent information model. It is the culmination of a great deal of work starting from an AICC working group and brought to release by pioneers of the xAPI community under the stewardship of ADL, all of whom have extensive experience in the elearning specification authoring space. It was released for production use in June of 2016, and implementations of both parts of a cmi5 system are now available.


cmi5 introduces a new “manifest” like file named `cmi5.xml` that contains XML metadata that describes a Course Structure which is a series of containers (Blocks) and Assignable Units (AUs). This file is usually stored in a ZIP file, but can simply be an XML file, and is provided to cmi5 compatible launching systems (LMSs) for import. An AU is the launchable content in this type of package, and the content assets may be included inside of the package or hosted remotely.

Launch Mechanism

The cmi5 launch mechanism is very similar to existing models and provides several important pieces of information to AUs during launch. While a browser will be a common launch platform, other launch scenarios are supported such as simulators, mobile apps, etc. The launch process includes capturing statements from both the launching system and the content, providing content with a Experience API context template to leverage in statement creation, making learner preferences available, and generally establishing a learning session.

Credential Handshake

As part of the launch process the AU retrieves credentials from the launching system in a separate request which allows those credentials to only be provided once, making them inherently more secure than previous credentialing processes. Credentials are expected to be tied to a specific session, expirable, and generally include limited permissions when accessing the LRS endpoint.

Consistent Information Model

cmi5 includes precise categories for the statements captured by the AU as well as the launching system, grouping them into two categories as either “cmi5 defined” statements or “cmi5 allowed” statements. The former set are heavily specified in their use and what data they must and must not include, the order in which they can be sent, whether or not they must be unique within the session, and how they should be interpreted. The “cmi5 defined” statement set is specifically designed for capturing session details and core elearning principles such as pass/fail, content completion, duration, and score. They contain a Experience API Activity to make recognizing and grouping them simple. The latter set is left nearly open ended and is what allows cmi5 to maintain the inherent flexibility for which xAPI is so well known, though even those statements need to include the previously mentioned context template to allow them to be correlated with the rest of the cmi5 session mechanics.


Learn more

There is a great deal more to explore in the cmi5 specification and on the quickly expanding website for the project. Find the specification itself at Github. You can also find Best Practices, JSON Samples, and more there.

cmi5 uses the Experience API, so if you already support xAPI, then supporting cmi5 is relatively simple. Rustici Software’s products have full support.

Read more about launching content here.

Questions? Ask us anything.

At Rustici Software, we help hundreds of people each month with their xAPI questions. Many aren’t sales prospects; they just have questions. We’re happy to help. You can ask us anything ‒ really.