Ralph
What it is
Ralph is a learning analytics toolbox available as an LRS HTTP API server, a command-line interface and a library. It follows xAPI specification version 1.0.3 and does not currently support xAPI 2.0. The LRS works with Elasticsearch, MongoDB and ClickHouse; the library documents additional connections, including Amazon S3, filesystems, other LRS systems and WebSockets. The API server can use HTTP Basic authentication, OpenID Connect on OAuth 2.0, or both. Statement access can be restricted by authority, and user scopes can limit endpoints or functions, though both controls are disabled by default. Ralph can forward received xAPI statements to other LRS servers with configurable retries and timeouts, and Sentry integration is available for monitoring the server and CLI. Its CLI converts some OpenEdX events into xAPI statements, but only a supported set. Ralph is distributed as a Python package and Docker image under the MIT License, and supports self-hosted deployment. The project describes itself as community-driven and invites questions, design feedback, issues and code contributions.
For and against
For
- Available as an API server, CLI and library.
- Supports Elasticsearch, MongoDB and ClickHouse.
- Authentication can use Basic or OpenID Connect.
- Statement forwarding has configurable retries and timeouts.
- Distributed under the MIT License.
Against
- Does not currently support xAPI 2.0.
- Access restrictions are disabled by default.
- OpenEdX conversion covers only a supported event set.
- Some API attachments, filters and response formats are unimplemented.
The verdict
Ralph provides several components for working with xAPI learning activity data, including an LRS, CLI and library. Its documentation also identifies version, conversion and API implementation limits to consider.
Who it suits
Ralph may suit developers and organizations building learning analytics systems around xAPI data, especially those seeking a self-hosted toolbox. Its community also invites participation from people with questions, feedback, issues or code changes.
Plans and prices
Open source
MIT licensed · Python package and Docker image
Read 4 Oct 2026 · openfun.github.io
On the record
- Access controls
- Ralph can restrict statement access by authority and limit endpoints or functionality with user scopes; both controls are disabled by default.openfun.github.io · read 4 Oct 2026
- Authentication
- The API server supports HTTP Basic authentication and OpenID Connect on top of OAuth 2.0, and either or both can be enabled.openfun.github.io · read 4 Oct 2026
- Data backends
- Ralph LRS supports Elasticsearch, MongoDB, and ClickHouse databases.openfun.github.io · read 4 Oct 2026
- Data conversion
- The CLI can convert OpenEdX events to xAPI statements, but conversion is supported only for a set of OpenEdX events.openfun.github.io · read 4 Oct 2026
- Distribution and license
- Ralph is distributed as a Python package and Docker image and is released under the MIT License.openfun.github.io · read 4 Oct 2026
- Intended audience
- The project describes itself as community-driven and invites people to contribute questions, design feedback, issues, and code changes.github.com · read 4 Oct 2026
- Known API gaps
- The API documentation marks statement attachments, several filters, and some response formats as not implemented.openfun.github.io · read 4 Oct 2026
- Monitoring
- Ralph provides Sentry integration to monitor its LRS server and CLI.openfun.github.io · read 4 Oct 2026
- Other integrations
- The library documents backends for OVH Log Data Platform, OpenStack Swift, Amazon S3, filesystems, other LRS systems, and WebSockets.openfun.github.io · read 4 Oct 2026
- Purpose
- Ralph is a learning analytics toolbox available as an LRS HTTP API server, a command-line interface, and a library.openfun.github.io · read 4 Oct 2026
- Statement forwarding
- The LRS can forward received xAPI statements to other LRS servers, with configurable retries and timeouts.openfun.github.io · read 4 Oct 2026
- xAPI support
- Ralph follows xAPI specification version 1.0.3 and does not currently support xAPI 2.0.openfun.github.io · read 4 Oct 2026