Ontum Kul offline learning box
Whitepaper

Whitepaper · Education Access Programmes, Africa Region

Learning infrastructure that needs no infrastructure.

How a single Android phone, a local WiFi hotspot, and no internet connection can deliver a full learning management system to a classroom.

Product
Kul offline-first learning box
Prepared by
Nissim, Ontum Kul product team
Date
August 2026
01

Executive summary

Kul turns a single Android phone into a self-contained classroom server. It broadcasts its own WiFi hotspot, runs a full learning platform locally, and requires no mobile data, no ISP, and no external server - connectivity is something Kul catches up on later, not something it depends on to run.

For communities where the nearest reliable internet connection is a bus ride away, most EdTech is unusable by design: it assumes a live connection to a cloud service. Kul inverts that assumption. Course content, quizzes, learning records, and user accounts all live on the device itself, in an embedded database. When the box does get connectivity - at a district office, over a staff member's phone hotspot, during a supply run - it syncs new content down and learning data up, then goes fully offline again.

This paper documents what Kul currently does, drawn directly from its production codebase, and proposes it as a candidate for a pilot in low-connectivity school settings across Africa.

1phone runs the entire school platform
0internet connections required in the classroom
4role types: admin, content creator, tutor, learner
16courses already live on a running deployment, Grades 4–9
02

The access gap

Across much of rural and peri-urban Africa, the binding constraint on digital learning is not devices or willingness - it is the network. Grid power is intermittent, fibre and 4G coverage thin out sharply outside major towns, and the recurring data cost of a cloud-hosted platform is often the line item that kills a program after the pilot year ends. Most learning platforms treat connectivity as a given and offline mode as an afterthought - a cached page, a "sync when you're back online" banner. That model breaks down completely in a setting where "back online" might mean once a week.

The practical requirement is different: software that is fully functional with zero connectivity, that treats an internet connection as an occasional, opportunistic event rather than a dependency - and that fits on hardware already common in these regions, an Android phone, rather than requiring a server room, a satellite link, or a subscription.

03

How Kul works

One phone is the classroom's entire server. Everything a learner's device needs is served over a WiFi network the phone itself creates.

CLASSROOM - NO INTERNET Kul box Android + Termux DB · auth · content learner device learner device tutor device local WiFi hotspot tutor pushes lesson & quiz via WebRTC content & analytics service (when online) periodic sync - course content down, learning records up OCCASIONAL, NOT REQUIRED
Fig. 1 - Inside the classroom, the box serves everything over its own hotspot; no line leaves the boundary. Sync with a content and analytics service happens opportunistically, whenever connectivity is available, and is never on the critical path for a lesson.

The box runs a standard web server and database on the phone itself: an embedded Postgres instance (no external database to install or maintain), a session-based login system that verifies credentials against that local database rather than calling out to an identity provider, and a content library stored on disk. Learner devices connect to the phone's hotspot exactly as they would to a home WiFi router, open a browser, and are on the platform - no app installation, no SIM, no data plan.

When the box is provisioned with connectivity - for initial setup, or a periodic refresh - it pulls new or updated course content from a central content system and pushes accumulated usage and learning-record data back up. The rest of the time, that link simply doesn't exist, and nothing in the classroom experience depends on it.

The interface itself keeps this state visible rather than implicit: a persistent indicator shows whether the box currently has an internet path or not, so a tutor never has to guess why a sync hasn't happened - offline is a normal, expected state, not an error condition the UI tries to hide.

Screenshot of the Kul course catalog, showing course cards with subject tags, grade level, and progress bars.
Fig. 2 - The course catalog on a live Kul deployment, served entirely from the box's own storage - the "Online" indicator top-right is the only sign connectivity is even part of the picture.
04

Core capabilities

Ten capabilities, each already implemented and running in the product today.

Screenshot of a course module accordion, showing individual lesson items with their content type tags and per-item completion status.
Fig. 3 - Inside a course: each module breaks down into individually tracked items - a spreadsheet exercise already at 100%, a lesson plan not yet started - tagged by type and sequenced by number.
Delivery

Self-hosted hotspot classroom

The box provisions its own WiFi access point, DNS, and HTTPS-terminating web server on-device. Any phone, tablet, or laptop in range can reach the platform with no internet path required.

Content

Courses, lessons & quizzes

Structured courses with lesson content and quiz/activity flows are served from local storage, with progress tracked down to the individual item - not just per course - so a lesson plan, a slide deck, and a spreadsheet exercise inside the same module each carry their own completion state. Content can be a platform's own material or an established third-party curriculum - a running deployment today serves a Computer Science course adapted from the Raspberry Pi Foundation's Teach Computing scheme, mapped to local grade and term structures.

Content

Native document & spreadsheet viewer

Worksheets, slide decks, and spreadsheet exercises open and page directly inside the browser - real editable-format spreadsheets render as an interactive grid, PDFs as a paginated viewer - with no Excel, Word, or PDF reader installed on the learner's device.

Content

Video, audio & interactive HTML5

Video and audio lessons play through the browser's own player - no codec pack, no external app - and richer material ships as a self-contained HTML5 package (multi-page lessons, embedded quizzes, its own navigation) rendered the same way as every other content item. Every format carries its own completion and progress tracking, captured locally from the first watch or listen.

Facilitation

Teacher-led classroom control

A tutor pairs their device with the classroom over a QR code and can drive navigation, lesson progression, and quiz start/stop across every connected learner screen in real time - one teacher, one synchronized lesson, no shared screen or projector required.

Analytics

Standards-based learning records

Learner activity is captured as xAPI statements against a local Learning Record Store running on the box itself, so learning analytics are gathered offline from day one and are portable to any xAPI-compatible reporting system once synced.

Access

Role-based permissions

Four built-in roles - admin, content creator, tutor, learner - govern who can manage courses, view reports, or administer the box, enforced identically on the server and in the interface.

Content pipeline

Central authoring, local delivery

Curriculum is authored once in a central content system and packaged down to every box during a sync window - one authoring workflow, any number of offline classrooms.

Reporting

On-box dashboards

Administrators and tutors get usage and progress charts rendered directly on the box, so a program officer can read outcomes on a visit without waiting for data to reach a central server.

Deployment

White-label ready

Branding - name, logo, tagline, colour - is a configuration file, not a code change, so the same platform can be relabeled per country office, programme, or implementing partner. Confirmed on a live deployment, which runs under a partner programme's own logo alongside the platform's own mark, with no visible trace of a shared underlying codebase.

Screenshot of an embedded video lesson playing inside the browser, with a lesson sidebar and a progress indicator showing 33% complete.
Fig. 4 - A different deployment (a teacher-training course, "Aprender"), same iframe-hosted pattern: an interactive HTML5 lesson package with its own navigation, playing an embedded video and tracking progress lesson-by-lesson, entirely offline-capable.
05

How Kul compares

"Offline support" means different things across the EdTech landscape. Most products offer one piece of what Kul does as a single, integrated system.

Offline-capable learning tools generally fall into one of three patterns:

  • Single-device offline apps (branded mobile-app offerings from several large LMS vendors) cache content and progress locally on one learner's phone, then reconcile with a cloud Learning Record Store the moment that phone reconnects. The offline period is a gap the cloud fills in afterward - there is no local server, and no classroom-wide view until connectivity returns.
  • Open-source offline content platforms built for low-resource settings (Learning Equality's Kolibri is the best known) run a local server well suited to distributing curated content packages to a lab or classroom of devices. Their xAPI support is documented as content-package interoperability - importing lessons authored elsewhere - rather than an on-device Learning Record Store generating and storing new xAPI activity data from local usage.
  • Hardware classroom-in-a-box kits (BRCK's Kio Kit is the reference point in Kenya) bundle a rugged router with a tablet fleet preloaded with third-party apps - Khan Academy, eKitabu, and similar. Content hosting is local, but the apps are separate products with separate progress data, and the fleet's usage dashboard syncs through a cloud service rather than an on-device store.

None of these combine a phone-hosted classroom hotspot, a local LRS that both generates and stores xAPI statements from day one, and native rendering of working documents - with a single teacher device able to drive every connected screen through a synchronized lesson. That combination is what Kul is built around, and it's the basis for the comparison below.

Capability Kul Single-device offline LMS apps Kolibri Kio Kit
Own WiFi hotspot, zero external setup Yes - Partial (needs a server device configured) Yes
Local LRS generates & stores xAPI from usage Yes Cloud LRS, post-sync Content-package import only -
Native in-browser spreadsheet / PDF viewer Yes - - Depends on bundled app
One teacher device drives every learner screen Yes - - -
Fleet analytics without a cloud round-trip Yes - Partial -

Comparison compiled from public product documentation as of August 2026; vendors' offline and analytics capabilities evolve, and this should be treated as directional rather than exhaustive.

The office-document gap most platforms don't close: a worksheet handed to a learner as a spreadsheet or slide deck is normally either downloaded for a native app the device doesn't have, or routed through a browser plug-in that assumes connectivity. On Kul's live curriculum content - Computer Science lessons adapted from the Raspberry Pi Foundation's Teach Computing materials for a Grades 4–9 syllabus - spreadsheet exercises render as a real, paginated, searchable grid and lesson PDFs page natively in the browser, verified directly against a running deployment. No office suite, no PDF reader, no internet path required on the learner's device.
Screenshot of a spreadsheet exercise rendered as an interactive grid inside the browser, with row and column headers, search, and pagination.
Fig. 5 - An actual spreadsheet file, rendered as a searchable grid - no Excel needed.
Screenshot of a lesson-plan PDF paginated and rendered inside the browser.
Fig. 6 - A lesson-plan PDF, paginated in-browser - no reader app needed.
06

On the roadmap

Three capabilities now in active development, extending the same on-box architecture described above.

In development

Specialised dashboards

Purpose-built views per role - a fleet-level rollup for administrators, a live classroom view for tutors, a content-performance view for authors - built on the same on-device learning-record data already being captured today.

In development

Expanded admin controls

A dedicated console for box configuration, user and content management, and device health, building on the existing admin role rather than replacing it.

In development

Remote auto-update

A companion phone with an internet connection pairs with the box over the local network and pushes software and content updates to it automatically - removing the manual cable-and-laptop step currently needed to refresh a box in the field.

Status: these are near-term roadmap items, not yet shipped in the current codebase. They are listed here because they directly extend the deployment model in Section 08 and are relevant to how a pilot would be operated and maintained over time.
07

Data, privacy & learning standards

Working with children's data in a low-resource setting raises the bar on data handling, not lowers it - and Kul's offline-first architecture happens to align with that bar rather than fight it.

Data stays on the device by default

Accounts, sessions, course content, and learning records live in an embedded database on the phone. Nothing is sent to a third-party cloud unless and until the box is deliberately synced - there is no background telemetry call a field team needs to trust or audit, because for most of a box's operating life there is no network path for one to travel on.

Sessions are verified locally

Login uses signed, locally-verified sessions rather than a call out to a remote auth provider, so authentication keeps working indefinitely without connectivity - a school does not lose the ability to log learners in because the nearest tower is down.

xAPI as the analytics language

Rather than a bespoke event schema, learning activity is recorded as xAPI statements against a local Learning Record Store. xAPI is a widely adopted interoperability standard for learning data - records captured on a Kul box in one region are structurally compatible with any downstream xAPI-consuming reporting or research system, which matters for a programme that needs to aggregate outcomes across many independently offline sites.

Encrypted transport, hardened by default

The on-box web server terminates TLS locally and applies a restrictive content-security policy out of the box, rather than relying on network-level protections that don't exist on an offline LAN.

08

Roles & governance

Four roles map directly onto how a school programme is actually staffed - from a single national administrator down to the learner in front of the device.

Role Can manage box & users Can author content Can view reports Typical person
Admin Yes Yes Yes Programme / box administrator
Content creator - Yes - Curriculum author
Tutor - - Yes Classroom facilitator
Learner - - - Student (default role on sign-up)
Why it matters for a pilot: the same permission model that lets one national office restrict box administration to trained staff also lets a facilitator with no technical background safely run a classroom - the roles that can break something are separated from the role that just teaches.
09

Deployment model

A Kul box is one Android phone. Setup provisions the hotspot, local DNS, web server, and database directly on the device, with a scripted backup-and-restore path for cloning a working box's configuration and content onto replacement hardware - a practical necessity when the nearest repair shop is a day's travel away.

What a site needs

  • One Android phone per classroom or cluster (the server), rated for the deployment's power situation - mains, solar, or battery bank.
  • Any WiFi-capable learner devices - no data plan, no SIM.
  • An occasional, non-critical internet window for content refresh and data sync - at setup, and periodically thereafter.

What a site does not need

  • A server room, rack, or dedicated PC.
  • A fixed internet connection or ISP contract.
  • Cloud infrastructure spend that scales with the number of classrooms.
10

Fit with programme priorities

Kul's architecture was not built to satisfy a checklist - but the constraints that shaped it are the same ones that shape connectivity-limited education programming.

Equity of access

Because the platform's baseline requirement is a phone and a room, not a network subscription, it is deployable in exactly the settings - rural, off-grid, low-connectivity - where commercial EdTech is least viable, without a separate "offline edition" or feature downgrade.

Foundational learning & measurement

Standards-based xAPI capture means learning activity is measurable from the first offline session, not only once a site comes online - closing the data gap that usually makes the hardest-to-reach classrooms also the hardest to evaluate.

Responsible data practices for children

Local-first storage and locally-verified authentication minimise the data that ever needs to leave a device, and give an implementing partner a concrete, auditable answer to where a child's data lives at any point in time.

Cost-efficient, scalable delivery

Marginal cost per classroom is one phone, not a server or a recurring cloud bill - a cost profile that scales with programme size in a way infrastructure-heavy platforms do not.

Local capacity & ownership

Role-based administration and white-label branding mean a country office or implementing partner can run and present the platform as its own, with a permission structure that supports training local staff into the admin and content-creator roles rather than depending on outside operators.

11

Proposed pilot

A focused, low-risk way to evaluate Kul against real classroom conditions before any wider commitment.

1

Select a small, representative cluster

3–5 schools spanning the connectivity and power conditions the wider programme actually faces - including at least one fully off-grid site.

2

Provision boxes with a starter curriculum

Load an initial course set relevant to the programme's subject focus and grade band; train a local admin and a small number of tutors on the four-role model.

3

Run a full term under normal conditions

No special handling - the pilot succeeds or fails on the same power, staffing, and connectivity conditions as a real deployment.

4

Evaluate on captured learning-record data

Use the xAPI records already gathered on-device - completion, quiz performance, time-on-task - as the evaluation basis, synced up at the end of the term rather than requiring live connectivity throughout.

5

Decide on scale, informed by real usage

Use pilot data and facilitator feedback to size a wider rollout, and to prioritise which of the roadmap items in the appendix matter most for the next phase.

12

Technical appendix

Stack summary

Layer Technology Notes
Host device Android phone, via Termux No dedicated server hardware
Networking On-device hotspot + local DNS hostapd / dnsmasq, self-provisioned
Web / TLS nginx reverse proxy Local certificate, HTTPS on the LAN
Application server Express (Node.js) Plain JavaScript, no build step
Database Embedded Postgres (PGlite) + Drizzle ORM No external DB server to install
Auth & RBAC Better Auth, 4-role access control Locally-verified sessions
Client SvelteKit 5 SPA, installable PWA Client-rendered, works fully offline
Classroom control WebRTC (PeerJS), QR pairing Teacher device drives learner devices over LAN
Learning records xAPI statements → local LRS Standards-based, sync-ready
Content sync Directus CMS integration Runs only when connectivity is available

Content format support

Format Engine Notes
PDF PDF.js, self-hosted Paginated in-browser viewer, no external reader
Spreadsheet SheetJS, self-hosted Renders real .xlsx as a searchable, sortable grid
Video Native HTML5 <video> .mp4, own xAPI progress handler
Audio Native HTML5 <audio> .mp3, own xAPI progress handler
Interactive / HTML5 Self-contained package in a same-origin iframe Multi-page lessons, embedded quizzes, own navigation and progress
Images - No dedicated gallery/lightbox component today
Word / PowerPoint - Not rendered natively - converted to PDF at authoring time
SCORM / H5P - No package player currently wired up

Every viewer above is vendored and served same-origin - no CDN, no external asset - consistent with running with zero connectivity. Formats marked " - " are gaps today, not claims.

Glossary

xAPI (Experience API): an open standard for recording learning activity as portable, structured statements, independent of the platform that generated them.

LRS (Learning Record Store): the database that stores xAPI statements - here, running locally on the box rather than in the cloud.

RBAC (Role-Based Access Control): restricting what a user can do based on an assigned role rather than per-user configuration.

White-label: the ability to rebrand a platform's name, logo, and visual identity per deployment without changing its code.