Skip to content

xAPI learning record stores and cmi5 tooling

The standards after SCORM — and the tools that actually implement them.

Compiled and checked by the scorm-tools.com editor. Last updated .

SCORM records what happened inside a course, in a course's own terms, to the LMS that launched it. xAPI breaks all three assumptions: any activity, anywhere, reported to any record store. cmi5 then puts the discipline back — it is an xAPI profile that restores the parts of SCORM an administrator actually needs, a defined launch, a session, and rules for what counts as completion.

This category holds the infrastructure. Learning record stores receive, validate and serve statements; they are ordinary databases with a specific API and specific conformance expectations, and several good open-source ones exist. Client libraries send statements from courses and applications. cmi5 tooling covers players, assignable-unit runtimes and the conformance test suite that decides whether an implementation is real.

A caution worth stating plainly, because it is the fact this directory most often has to correct: an xAPI endpoint is not cmi5 support. Receiving statements is the easy half. Honouring the AU lifecycle, the session identifier and the moveOn rules is what makes a completion mean something — and it is what we check before recording cmi5 as supported.

18 tools · 18 open source · 6 support cmi5

Order is editorial and never for sale: standards coverage first, then maintenance state, then popularity, then alphabetical. How we list .

Tools in this category

Filter these tools

Showing 18 of 18

@xapi/cmi5
A typed JavaScript client that handles the cmi5 handshake for you inside a course

Standards supported: xAPI · cmi5

Licence: MITPricing: Open source
ADL LRS
ADL's own open-source learning record store, now tracking xAPI 2.0

Standards supported: xAPI

Licence: Apache-2.0Pricing: Open source
ADL xAPIWrapper
ADL's own JavaScript wrapper for talking to an LRS, built against xAPI 1.0.1

Standards supported: xAPI

Licence: Apache-2.0Pricing: Open sourceMaintenance: Stale
Apereo OpenLRW
Java learning record warehouse for xAPI, Caliper and OneRoster data, dormant since 2020

Standards supported: xAPI

Licence: ECL-2.0Pricing: Open sourceMaintenance: Stale
CATAPULT
ADL's cmi5 player, content test suite and LMS test suite in one repository

Standards supported: xAPI · cmi5

Licence: Apache-2.0Pricing: Open source
Learning Locker (Community)
The best-known open-source LRS, with no commit on master since November 2021

Standards supported: xAPI

Licence: GPL-3.0Pricing: Open sourceMaintenance: Stale
Ralph
A Python xAPI LRS, CLI and data-pipeline toolbox from France Universite Numerique

Standards supported: xAPI

Licence: MITPricing: Open source
RapidCMI5
Desktop authoring tool that outputs cmi5 packages, aimed at TLA programmes

Standards supported: xAPI · cmi5

Licence: AGPL-3.0Pricing: Open source
SQL LRS
An xAPI learning record store that runs on SQLite or your existing SQL database

Standards supported: xAPI

Licence: Apache-2.0Pricing: Open source
TRAX LRS
A deliberately minimal self-hosted xAPI Learning Record Store built on Laravel

Standards supported: xAPI

Licence: GPL-3.0Pricing: Open source
TinCanJS
Rustici's original JavaScript xAPI library — still the most-linked, unchanged since 2016

Standards supported: xAPI

Licence: Apache-2.0Pricing: Open sourceMaintenance: Stale
cmi5 Client Library (ADL)
ADL's archived JavaScript wrapper and example AU for the content side of cmi5

Standards supported: xAPI · cmi5

Licence: Apache-2.0Pricing: Open sourceMaintenance: Archived
cmi5.js
Rustici's JavaScript runtime for the assignable-unit side of a cmi5 course

Standards supported: xAPI · cmi5

Licence: Apache-2.0Pricing: Open sourceMaintenance: Stale
cmi5launch for Moodle
ADL's Moodle activity module that launches cmi5 content via the CATAPULT player

Standards supported: xAPI · cmi5

Licence: Apache-2.0Pricing: Open source
lxHive
Small PHP and MongoDB Learning Record Store for xAPI 1.0.x

Standards supported: xAPI

Licence: GPL-2.0Pricing: Open source
moodle-logstore_xapi
Turns Moodle log events into xAPI statements and posts them to an LRS

Standards supported: xAPI

Licence: GPL-3.0Pricing: Open source
xAPI Java
Immutable xAPI model and Spring-based LRS client for Java, actively released

Standards supported: xAPI

Licence: Apache-2.0Pricing: Open source
xAPI.js
Strongly typed TypeScript client for the xAPI 1.0 Statement and State APIs

Standards supported: xAPI

Licence: MITPricing: Open source

Questions people ask about xapi & cmi5

What is the difference between xAPI and cmi5?

xAPI is a statement format and a store API — deliberately unopinionated. cmi5 is a profile of xAPI that specifies how a course is launched, how a session is identified, and how completion is determined. If you need SCORM-like accountability with xAPI's reach, you need cmi5, not xAPI alone.

Do I need an LRS?

Only if you are using xAPI or cmi5. SCORM reports to the LMS and needs nothing extra. Once statements leave the LMS, something has to store them, and that something is an LRS.

Is xAPI replacing SCORM?

Not in practice, and not soon. SCORM remains what procurement asks for and what every LMS imports. xAPI is additive — it captures what SCORM cannot — and most real deployments run both.

How do I know an LRS is conformant?

ADL publishes a conformance test suite and maintains a list of adopters. We link that registry rather than certifying anything ourselves; listings backed by it carry the Verified chip.

Authoring tools & course frameworks
Where the course gets made — and where its SCORM output is decided.
Converters & migration
Turning what you already have — decks, video, H5P, old packages — into something an LMS accepts.
Players, runtimes & debuggers
Run a SCORM package outside an LMS — and watch what it actually does.
Testing, validation & conformance
Prove a package is correct before a client's LMS proves it isn't.
Packagers, SDKs & libraries
The pieces you build with when the course is an application, not a slide deck.
LMS & LMS plugins
Where the package finally has to run — and how well each platform actually implements the spec.
Distribution, licensing & hosting
Getting a course into someone else's LMS without giving away the course.
Analytics & tracking
Turning completion records into something worth reading.