---
title: "Adl Cmi5 Client Library"
description: "This is a small content-side library for cmi5: two scripts, cmi5Controller.js and cmi5Wrapper.js, one worked example of an Assignable Unit, and a sample cmi5.xml course structure. Its job is the awkward part of cmi5 — reading the launch parameters, fetching the LMS launch data and learner preferences, and emitting the cmi5-defined statements with the right verbs, context activities and extensions at the right points in a session."
canonical_url: "https://scorm-tools.com/tools/adl-cmi5-client-library"
last_updated: "2026-10-31T10:21:59.321Z"
---

This is a small content-side library for cmi5: two scripts, `cmi5Controller.js` and `cmi5Wrapper.js`, one worked example of an Assignable Unit, and a sample `cmi5.xml` course structure. Its job is the awkward part of cmi5 — reading the launch parameters, fetching the LMS launch data and learner preferences, and emitting the cmi5-defined statements with the right verbs, context activities and extensions at the right points in a session.

Its value is pedagogical. cmi5 is the standard people most often report as supported without having implemented it correctly, and this code shows what correct looks like in about the smallest possible space: launch mode enforcement, the moveOn category, the mastery score and progress extensions, all annotated with the specification section they satisfy. If you are writing an AU or reviewing someone else's claim of cmi5 support, an hour with these files is well spent.

It is not a dependency. ADL archived the repository, the last commit was August 2021, and it has thirteen stars and three issues frozen open. GitHub also records it as a fork of Art Werkenthin's AU Simulator, which the README credits — so this is a published copy of someone else's demonstration rather than an independent implementation.

Read it, then build on something maintained.
